From d76fca47441a39f263f0732cd877f334b1b56761 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 6 Aug 2025 06:24:44 +0000 Subject: [PATCH 01/23] Initial plan From a0310537569e9e22673297e075e63e0b82d2ada3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 6 Aug 2025 06:36:59 +0000 Subject: [PATCH 02/23] Complete directory structure rename and core import updates MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename extralit/src/argilla → extralit/src/extralit - Rename argilla-server/src/argilla_server → argilla-server/src/extralit_server - Update all Python import statements in source, tests, and examples - Fix variable references and string references - Both packages now import successfully Co-authored-by: dawn-tran <104935595+dawn-tran@users.noreply.github.com> --- .../api/policies/v1/__init__.py | 50 ------------------- .../__init__.py | 2 +- .../__main__.py | 2 +- .../_app.py | 28 +++++------ .../_version.py | 0 .../alembic.ini | 0 .../alembic/env.py | 6 +-- .../alembic/script.py.mako | 0 ...9ee58fbb4_create_workspaces_users_table.py | 0 ...913727_fix_suggestions_type_enum_values.py | 0 ...4d74_add_status_column_to_records_table.py | 0 .../3a8e2f9b5dea_create_questions_table.py | 0 .../3fc3c0839959_create_suggestions_table.py | 0 ...37_add_metadata_column_to_records_table.py | 0 ...d_distribution_column_to_datasets_table.py | 0 .../580a6553186f_add_datasets_users_table.py | 0 ...0_add_metadata_column_to_datasets_table.py | 0 .../6ed1b8bf8e08_create_webhooks_table.py | 0 .../74694870197c_create_users_table.py | 0 ...dded_document_model_and_updated_record_.py | 0 ...0ab5b42d9_create_vectors_settings_table.py | 0 ...f8b57a_create_metadata_properties_table.py | 0 ...d6b33203390_create_import_history_table.py | 0 .../82a5a88a3fa5_create_workspaces_table.py | 0 ..._add_last_activity_at_to_datasets_table.py | 0 .../8be56284dac0_create_records_table.py | 0 .../8c574ada5e5f_update_enum_columns.py | 0 .../ae5522b4c674_create_fields_table.py | 0 ...extra_metadata_column_to_datasets_table.py | 0 .../b9099dc08489_create_datasets_table.py | 0 .../bda6fe24314e_create_vectors_table.py | 0 ...change_suggestions_score_column_to_json.py | 0 ...67_update_responses_user_id_foreign_key.py | 0 .../e402e9d9245e_create_responses_table.py | 0 .../api/__init__.py | 0 .../api/errors/__init__.py | 0 .../api/errors/v1/__init__.py | 0 .../api/errors/v1/exception_handlers.py | 2 +- .../api/handlers/__init__.py | 0 .../api/handlers/v1/__init__.py | 0 .../api/handlers/v1/authentication.py | 8 +-- .../api/handlers/v1/datasets/__init__.py | 8 +-- .../api/handlers/v1/datasets/datasets.py | 30 +++++------ .../api/handlers/v1/datasets/questions.py | 14 +++--- .../api/handlers/v1/datasets/records.py | 36 ++++++------- .../api/handlers/v1/datasets/records_bulk.py | 14 +++--- .../api/handlers/v1/documents.py | 18 +++---- .../api/handlers/v1/fields.py | 14 +++--- .../api/handlers/v1/files.py | 10 ++-- .../api/handlers/v1/imports.py | 12 ++--- .../api/handlers/v1/info.py | 6 +-- .../api/handlers/v1/jobs.py | 12 ++--- .../api/handlers/v1/metadata_properties.py | 16 +++--- .../api/handlers/v1/models.py | 8 +-- .../api/handlers/v1/oauth2.py | 16 +++--- .../api/handlers/v1/questions.py | 14 +++--- .../api/handlers/v1/records.py | 26 +++++----- .../api/handlers/v1/responses.py | 18 +++---- .../api/handlers/v1/settings.py | 4 +- .../api/handlers/v1/suggestions.py | 14 +++--- .../api/handlers/v1/users.py | 16 +++--- .../api/handlers/v1/vectors_settings.py | 14 +++--- .../api/handlers/v1/webhooks.py | 16 +++--- .../api/handlers/v1/workspaces.py | 22 ++++---- .../api/policies/__init__.py | 0 .../api/policies/v1/__init__.py | 50 +++++++++++++++++++ .../api/policies/v1/commons.py | 4 +- .../api/policies/v1/dataset_policy.py | 4 +- .../api/policies/v1/document_policy.py | 4 +- .../api/policies/v1/field_policy.py | 4 +- .../api/policies/v1/file_policy.py | 4 +- .../api/policies/v1/job_policy.py | 2 +- .../policies/v1/metadata_property_policy.py | 4 +- .../api/policies/v1/question_policy.py | 4 +- .../api/policies/v1/record_policy.py | 6 +-- .../api/policies/v1/response_policy.py | 4 +- .../api/policies/v1/suggestion_policy.py | 4 +- .../api/policies/v1/user_policy.py | 2 +- .../api/policies/v1/vector_settings_policy.py | 4 +- .../api/policies/v1/webhook_policy.py | 4 +- .../api/policies/v1/workspace_policy.py | 4 +- .../api/policies/v1/workspace_user_policy.py | 4 +- .../api/routes.py | 48 +++++++++--------- .../api/schemas/__init__.py | 0 .../api/schemas/base.py | 2 +- .../api/schemas/v1/__init__.py | 0 .../api/schemas/v1/chat.py | 0 .../api/schemas/v1/commons.py | 0 .../api/schemas/v1/datasets.py | 4 +- .../api/schemas/v1/documents.py | 0 .../api/schemas/v1/fields.py | 4 +- .../api/schemas/v1/files.py | 0 .../api/schemas/v1/imports.py | 2 +- .../api/schemas/v1/info.py | 0 .../api/schemas/v1/jobs.py | 0 .../api/schemas/v1/metadata_properties.py | 4 +- .../api/schemas/v1/oauth2.py | 0 .../api/schemas/v1/questions.py | 8 +-- .../api/schemas/v1/records.py | 14 +++--- .../api/schemas/v1/records_bulk.py | 2 +- .../api/schemas/v1/responses.py | 4 +- .../api/schemas/v1/settings.py | 0 .../api/schemas/v1/suggestions.py | 6 +-- .../api/schemas/v1/users.py | 4 +- .../api/schemas/v1/vector_settings.py | 4 +- .../api/schemas/v1/vectors.py | 0 .../api/schemas/v1/webhooks.py | 4 +- .../api/schemas/v1/workspaces.py | 0 .../bulk/__init__.py | 0 .../bulk/records_bulk.py | 32 ++++++------ .../cli/__init__.py | 0 .../cli/__main__.py | 0 .../cli/database/__init__.py | 0 .../cli/database/__main__.py | 0 .../cli/database/migrate.py | 2 +- .../cli/database/revisions.py | 2 +- .../cli/database/users/__init__.py | 0 .../cli/database/users/__main__.py | 0 .../cli/database/users/create.py | 10 ++-- .../cli/database/users/create_default.py | 8 +-- .../cli/database/users/migrate.py | 4 +- .../cli/database/users/update.py | 6 +-- .../cli/database/users/utils.py | 2 +- .../cli/database/utils.py | 0 .../cli/rich.py | 0 .../cli/search_engine/__init__.py | 0 .../cli/search_engine/__main__.py | 0 .../cli/search_engine/reindex.py | 8 +-- .../cli/start.py | 0 .../cli/worker.py | 4 +- .../constants.py | 0 .../contexts/__init__.py | 0 .../contexts/accounts.py | 14 +++--- .../contexts/datasets.py | 46 ++++++++--------- .../contexts/distribution.py | 12 ++--- .../contexts/files.py | 4 +- .../contexts/hub.py | 26 +++++----- .../contexts/hub_templates/README.md.jinja2 | 0 .../contexts/imports.py | 12 ++--- .../contexts/info.py | 2 +- .../contexts/questions.py | 8 +-- .../contexts/records.py | 14 +++--- .../contexts/search.py | 8 +-- .../contexts/settings.py | 6 +-- .../contexts/webhooks.py | 4 +- .../database.py | 6 +-- .../enums.py | 2 +- .../errors/__init__.py | 0 .../errors/base_errors.py | 0 .../errors/error_handler.py | 4 +- .../errors/future/__init__.py | 0 .../errors/future/base_errors.py | 0 .../helpers.py | 2 +- .../integrations/__init__.py | 0 .../integrations/huggingface/__init__.py | 0 .../integrations/huggingface/spaces.py | 0 .../jobs/__init__.py | 2 +- .../jobs/dataset_jobs.py | 12 ++--- .../jobs/document_jobs.py | 10 ++-- .../jobs/hub_jobs.py | 14 +++--- .../jobs/import_jobs.py | 20 ++++---- .../jobs/queues.py | 2 +- .../jobs/webhook_jobs.py | 10 ++-- .../logging.py | 0 .../models/__init__.py | 4 +- .../models/base.py | 2 +- .../models/database.py | 10 ++-- .../models/metadata_properties.py | 4 +- .../models/mixins.py | 2 +- .../models/suggestions.py | 2 +- .../search_engine/__init__.py | 0 .../search_engine/base.py | 4 +- .../search_engine/commons.py | 6 +-- .../search_engine/elasticsearch.py | 10 ++-- .../search_engine/opensearch.py | 10 ++-- .../security/__init__.py | 2 +- .../security/authentication/__init__.py | 0 .../security/authentication/db/__init__.py | 0 .../authentication/db/api_key_backend.py | 6 +-- .../authentication/db/bearer_token_backend.py | 6 +-- .../security/authentication/jwt.py | 6 +-- .../authentication/oauth2/__init__.py | 4 +- .../authentication/oauth2/_backends.py | 8 +-- .../authentication/oauth2/auth_backend.py | 6 +-- .../authentication/oauth2/provider.py | 6 +-- .../authentication/oauth2/settings.py | 4 +- .../security/authentication/provider.py | 12 ++--- .../security/authentication/userinfo.py | 2 +- .../security/settings.py | 4 +- .../settings.py | 2 +- .../static_rewrite.py | 0 .../telemetry/__init__.py | 0 .../telemetry/_client.py | 12 ++--- .../telemetry/_helpers.py | 4 +- .../use_cases/__init__.py | 0 .../use_cases/responses/__init__.py | 0 .../responses/upsert_responses_in_bulk.py | 14 +++--- .../utils.py | 0 .../utils/__init__.py | 0 .../utils/_fastapi.py | 0 .../utils/params.py | 0 .../utils/str_enum.py | 0 .../validators/__init__.py | 0 .../validators/datasets.py | 4 +- .../validators/questions.py | 8 +-- .../validators/records.py | 24 ++++----- .../validators/response_values.py | 10 ++-- .../validators/responses.py | 10 ++-- .../validators/suggestions.py | 10 ++-- .../validators/users.py | 6 +-- .../validators/vectors.py | 2 +- .../validators/webhooks.py | 4 +- .../webhooks/__init__.py | 0 .../webhooks/v1/__init__.py | 0 .../webhooks/v1/commons.py | 2 +- .../webhooks/v1/datasets.py | 8 +-- .../webhooks/v1/enums.py | 2 +- .../webhooks/v1/event.py | 2 +- .../webhooks/v1/ping.py | 8 +-- .../webhooks/v1/records.py | 8 +-- .../webhooks/v1/responses.py | 8 +-- .../webhooks/v1/schemas.py | 0 argilla-server/tests/conftest.py | 8 +-- argilla-server/tests/factories.py | 12 ++--- .../fields/test_create_dataset_field.py | 4 +- .../fields/test_list_dataset_fields.py | 2 +- .../questions/test_create_dataset_question.py | 4 +- .../questions/test_list_dataset_questions.py | 2 +- .../test_create_dataset_records_bulk.py | 12 ++--- .../records_bulk/test_dataset_records_bulk.py | 6 +-- ...est_dataset_records_bulk_with_responses.py | 4 +- ...t_dataset_records_bulk_with_suggestions.py | 4 +- .../test_dataset_records_bulk_with_vectors.py | 4 +- .../test_update_dataset_records_in_bulk.py | 4 +- .../test_upsert_dataset_records_bulk.py | 12 ++--- .../records/test_delete_dataset_records.py | 6 +-- .../v1/datasets/test_create_dataset.py | 10 ++-- .../v1/datasets/test_create_dataset_field.py | 8 +-- ...test_create_dataset_metadata_properties.py | 10 ++-- .../datasets/test_create_dataset_question.py | 4 +- .../test_create_dataset_vector_settings.py | 2 +- .../v1/datasets/test_delete_dataset.py | 6 +-- .../v1/datasets/test_export_dataset_to_hub.py | 4 +- .../v1/datasets/test_get_dataset_progress.py | 6 +-- .../test_get_dataset_users_progress.py | 4 +- .../test_list_current_user_datasets.py | 4 +- ...aset_records_search_suggestions_options.py | 2 +- .../v1/datasets/test_publish_dataset.py | 6 +-- .../handlers/v1/datasets/test_questions.py | 10 ++-- ...est_search_current_user_dataset_records.py | 6 +-- .../datasets/test_search_dataset_records.py | 8 +-- .../v1/datasets/test_update_dataset.py | 8 +-- .../handlers/v1/fields/test_update_field.py | 2 +- .../api/handlers/v1/info/test_get_status.py | 4 +- .../api/handlers/v1/info/test_get_version.py | 2 +- .../v1/questions/test_update_question.py | 2 +- .../v1/records/test_create_record_response.py | 12 ++--- .../handlers/v1/records/test_delete_record.py | 6 +-- .../handlers/v1/records/test_update_record.py | 6 +-- .../v1/records/test_upsert_suggestion.py | 4 +- ...test_create_current_user_responses_bulk.py | 22 ++++---- .../v1/responses/test_delete_response.py | 12 ++--- .../v1/responses/test_update_response.py | 12 ++--- .../handlers/v1/settings/test_get_settings.py | 8 +-- .../api/handlers/v1/test_bulk_documents.py | 4 +- .../unit/api/handlers/v1/test_datasets.py | 18 +++---- .../unit/api/handlers/v1/test_documents.py | 4 +- .../tests/unit/api/handlers/v1/test_fields.py | 6 +-- .../tests/unit/api/handlers/v1/test_files.py | 4 +- .../unit/api/handlers/v1/test_imports.py | 6 +-- .../handlers/v1/test_list_dataset_records.py | 6 +-- .../handlers/v1/test_metadata_properties.py | 12 ++--- .../tests/unit/api/handlers/v1/test_models.py | 6 +-- .../tests/unit/api/handlers/v1/test_oauth2.py | 10 ++-- .../unit/api/handlers/v1/test_questions.py | 8 +-- .../unit/api/handlers/v1/test_records.py | 10 ++-- .../unit/api/handlers/v1/test_responses.py | 8 +-- .../unit/api/handlers/v1/test_suggestions.py | 6 +-- .../tests/unit/api/handlers/v1/test_users.py | 4 +- .../api/handlers/v1/test_vectors_settings.py | 6 +-- .../unit/api/handlers/v1/test_workspaces.py | 4 +- .../api/handlers/v1/users/test_create_user.py | 6 +-- .../api/handlers/v1/users/test_delete_user.py | 6 +-- .../v1/users/test_get_current_user.py | 2 +- .../api/handlers/v1/users/test_get_user.py | 4 +- .../api/handlers/v1/users/test_list_users.py | 6 +-- .../api/handlers/v1/users/test_update_user.py | 8 +-- .../v1/webhooks/test_create_webhook.py | 6 +-- .../v1/webhooks/test_delete_webhook.py | 6 +-- .../v1/webhooks/test_list_webhooks.py | 4 +- .../handlers/v1/webhooks/test_ping_webhook.py | 4 +- .../v1/webhooks/test_update_webhook.py | 4 +- .../v1/workspaces/test_create_workspace.py | 6 +-- .../workspaces/test_create_workspace_user.py | 6 +-- .../workspaces/test_delete_workspace_user.py | 6 +-- .../workspaces/test_list_workspace_users.py | 4 +- .../schemas/v1/records/test_record_create.py | 4 +- .../schemas/v1/records/test_record_upsert.py | 2 +- .../responses/test_response_value_create.py | 2 +- .../tests/unit/api/schemas/v1/test_commons.py | 2 +- argilla-server/tests/unit/cli/conftest.py | 2 +- .../unit/cli/database/users/test_create.py | 4 +- .../cli/database/users/test_create_default.py | 6 +-- .../unit/cli/database/users/test_migrate.py | 2 +- .../unit/cli/database/users/test_update.py | 2 +- .../tests/unit/commons/test_settings.py | 2 +- .../tests/unit/commons/test_telemetry.py | 10 ++-- argilla-server/tests/unit/conftest.py | 18 +++---- .../unit/contexts/hub/test_hub_dataset.py | 10 ++-- .../contexts/hub/test_hub_dataset_exporter.py | 6 +-- .../test_search_records_query_validator.py | 8 +-- .../tests/unit/contexts/test_imports.py | 6 +-- .../models/test_dataset_user_model.py | 2 +- .../unit/database/models/test_field_model.py | 4 +- .../tests/unit/errors/test_errors.py | 2 +- .../tests/unit/jobs/test_document_jobs.py | 2 +- .../test_enqueue_notify_events.py | 8 +-- .../tests/unit/models/test_import_history.py | 2 +- .../tests/unit/search_engine/conftest.py | 4 +- .../tests/unit/search_engine/test_commons.py | 10 ++-- .../unit/search_engine/test_elastisearch.py | 6 +-- .../unit/search_engine/test_opensearch.py | 6 +-- .../oauth2/backends/test_keycloack_backend.py | 2 +- .../authentication/oauth2/test_settings.py | 4 +- .../security/authentication/test_userinfo.py | 4 +- .../tests/unit/security/test_model.py | 2 +- .../tests/unit/security/test_settings.py | 4 +- .../unit/telemetry/test_telemetry_helpers.py | 4 +- .../tests/unit/test_api_telemetry.py | 6 +-- argilla-server/tests/unit/test_app.py | 12 ++--- argilla-server/tests/unit/test_logging.py | 2 +- argilla-server/tests/unit/test_utils.py | 2 +- .../tests/unit/utils/test_fastapi_utils.py | 2 +- .../unit/validators/test_records_bulk.py | 10 ++-- .../webhooks/v1/test_notify_ping_event.py | 6 +-- examples/webhooks/basic-webhooks/main.py | 2 +- extralit/src/argilla/client/__init__.py | 3 -- extralit/src/argilla/settings/__init__.py | 20 -------- .../src/{argilla => extralit}/__init__.py | 24 ++++----- .../{argilla => extralit}/_api/__init__.py | 18 +++---- .../src/{argilla => extralit}/_api/_base.py | 2 +- .../src/{argilla => extralit}/_api/_client.py | 34 ++++++------- .../{argilla => extralit}/_api/_datasets.py | 8 +-- .../{argilla => extralit}/_api/_documents.py | 14 +++--- .../src/{argilla => extralit}/_api/_fields.py | 6 +-- .../_api/_http/__init__.py | 4 +- .../_api/_http/_client.py | 0 .../_api/_http/_helpers.py | 0 .../{argilla => extralit}/_api/_metadata.py | 6 +-- .../{argilla => extralit}/_api/_questions.py | 6 +-- .../{argilla => extralit}/_api/_records.py | 6 +-- .../src/{argilla => extralit}/_api/_token.py | 0 .../src/{argilla => extralit}/_api/_users.py | 6 +-- .../{argilla => extralit}/_api/_vectors.py | 6 +-- .../{argilla => extralit}/_api/_webhooks.py | 6 +-- .../{argilla => extralit}/_api/_workspaces.py | 20 ++++---- .../src/{argilla => extralit}/_constants.py | 0 .../_exceptions/__init__.py | 14 +++--- .../{argilla => extralit}/_exceptions/_api.py | 2 +- .../_exceptions/_base.py | 0 .../_exceptions/_client.py | 2 +- .../{argilla => extralit}/_exceptions/_hub.py | 2 +- .../_exceptions/_metadata.py | 2 +- .../_exceptions/_records.py | 2 +- .../_exceptions/_responses.py | 2 +- .../_exceptions/_serialization.py | 2 +- .../_exceptions/_settings.py | 2 +- .../_exceptions/_suggestions.py | 2 +- .../_helpers/__init__.py | 0 .../_helpers/_dataclasses.py | 0 .../{argilla => extralit}/_helpers/_deploy.py | 6 +-- .../_helpers/_iterator.py | 0 .../{argilla => extralit}/_helpers/_log.py | 0 .../{argilla => extralit}/_helpers/_media.py | 0 .../_helpers/_resource_repr.py | 0 .../{argilla => extralit}/_helpers/_uuid.py | 0 .../{argilla => extralit}/_models/__init__.py | 34 ++++++------- .../{argilla => extralit}/_models/_base.py | 0 .../{argilla => extralit}/_models/_dataset.py | 4 +- .../_models/_dataset_progress.py | 0 .../_models/_documents.py | 2 +- .../{argilla => extralit}/_models/_files.py | 0 .../_models/_record/__init__.py | 0 .../_models/_record/_metadata.py | 0 .../_models/_record/_record.py | 10 ++-- .../_models/_record/_response.py | 0 .../_models/_record/_suggestion.py | 0 .../_models/_record/_vector.py | 2 +- .../_models/_resource.py | 0 .../{argilla => extralit}/_models/_schema.py | 2 +- .../{argilla => extralit}/_models/_search.py | 0 .../_models/_settings/__init__.py | 0 .../_models/_settings/_fields.py | 4 +- .../_models/_settings/_metadata.py | 4 +- .../_models/_settings/_questions.py | 2 +- .../_models/_settings/_task_distribution.py | 0 .../_models/_settings/_vectors.py | 4 +- .../{argilla => extralit}/_models/_user.py | 2 +- .../{argilla => extralit}/_models/_webhook.py | 2 +- .../_models/_workspace.py | 2 +- .../src/{argilla => extralit}/_resource.py | 10 ++-- .../src/{argilla => extralit}/_version.py | 0 .../src/{argilla => extralit}/cli/__init__.py | 0 extralit/src/{argilla => extralit}/cli/app.py | 6 +-- .../src/{argilla => extralit}/cli/callback.py | 8 +-- .../cli/datasets/__init__.py | 0 .../cli/datasets/__main__.py | 10 ++-- .../cli/documents/__init__.py | 2 +- .../cli/documents/__main__.py | 12 ++--- .../cli/documents/add.py | 6 +-- .../cli/documents/delete.py | 4 +- .../cli/documents/import_bib.py | 6 +-- .../cli/documents/import_history.py | 4 +- .../cli/documents/list.py | 4 +- .../cli/extraction/__init__.py | 0 .../cli/extraction/__main__.py | 4 +- .../cli/extraction/export.py | 2 +- .../cli/extraction/status.py | 0 .../cli/files/__init__.py | 2 +- .../cli/files/__main__.py | 10 ++-- .../{argilla => extralit}/cli/files/delete.py | 4 +- .../cli/files/download.py | 4 +- .../{argilla => extralit}/cli/files/list.py | 4 +- .../{argilla => extralit}/cli/files/upload.py | 4 +- .../cli/info/__init__.py | 0 .../cli/info/__main__.py | 6 +-- .../cli/login/__init__.py | 0 .../cli/login/__main__.py | 4 +- .../cli/logout/__init__.py | 0 .../cli/logout/__main__.py | 8 +-- .../src/{argilla => extralit}/cli/rich.py | 6 +-- .../cli/schemas/__init__.py | 0 .../cli/schemas/__main__.py | 10 ++-- .../cli/schemas/download.py | 2 +- .../cli/schemas/upload.py | 2 +- .../cli/training/__init__.py | 0 .../cli/training/__main__.py | 4 +- .../{argilla => extralit}/cli/typer_ext.py | 0 .../cli/users/__init__.py | 0 .../cli/users/__main__.py | 14 +++--- .../cli/whoami/__init__.py | 0 .../cli/whoami/__main__.py | 4 +- .../cli/workspaces/__init__.py | 0 .../cli/workspaces/__main__.py | 10 ++-- extralit/src/extralit/client/__init__.py | 3 ++ .../src/{argilla => extralit}/client/core.py | 24 ++++----- .../src/{argilla => extralit}/client/login.py | 2 +- .../{argilla => extralit}/client/resources.py | 26 +++++----- .../datasets/__init__.py | 2 +- .../datasets/_io/__init__.py | 4 +- .../datasets/_io/_disk.py | 12 ++--- .../datasets/_io/_hub.py | 28 +++++------ .../datasets/_io/card/__init__.py | 4 +- .../datasets/_io/card/_dataset_card.py | 0 .../datasets/_io/card/_parser.py | 0 .../datasets/_io/card/argilla_template.md | 0 .../datasets/_resource.py | 20 ++++---- .../documents/__init__.py | 2 +- .../documents/_resource.py | 8 +-- .../markdown/__init__.py | 4 +- .../{argilla => extralit}/markdown/chat.py | 2 +- .../{argilla => extralit}/markdown/media.py | 8 +-- .../{argilla => extralit}/records/__init__.py | 6 +-- .../records/_dataset_records.py | 20 ++++---- .../records/_io/__init__.py | 8 +-- .../records/_io/_datasets.py | 10 ++-- .../records/_io/_generic.py | 2 +- .../records/_io/_json.py | 4 +- .../records/_mapping/__init__.py | 2 +- .../records/_mapping/_mapper.py | 18 +++---- .../records/_mapping/_routes.py | 0 .../records/_resource.py | 22 ++++---- .../{argilla => extralit}/records/_search.py | 8 +-- .../src/{argilla => extralit}/responses.py | 12 ++--- extralit/src/extralit/settings/__init__.py | 20 ++++++++ .../{argilla => extralit}/settings/_common.py | 4 +- .../{argilla => extralit}/settings/_field.py | 12 ++--- .../settings/_io/__init__.py | 2 +- .../settings/_io/_hub.py | 14 +++--- .../settings/_metadata.py | 12 ++--- .../settings/_question.py | 10 ++-- .../settings/_resource.py | 22 ++++---- .../settings/_task_distribution.py | 2 +- .../settings/_templates.py | 12 ++--- .../{argilla => extralit}/settings/_vector.py | 10 ++-- .../src/{argilla => extralit}/suggestions.py | 10 ++-- .../{argilla => extralit}/users/__init__.py | 2 +- .../{argilla => extralit}/users/_resource.py | 12 ++--- .../src/{argilla => extralit}/v1/__init__.py | 0 extralit/src/{argilla => extralit}/vectors.py | 4 +- .../webhooks/__init__.py | 8 +-- .../{argilla => extralit}/webhooks/_event.py | 8 +-- .../webhooks/_handler.py | 4 +- .../webhooks/_helpers.py | 8 +-- .../webhooks/_resource.py | 8 +-- .../workspaces/__init__.py | 2 +- .../workspaces/_resource.py | 32 ++++++------ extralit/tests/integration/conftest.py | 4 +- .../tests/integration/test_add_records.py | 8 +-- .../tests/integration/test_cli_commands.py | 2 +- extralit/tests/integration/test_client.py | 4 +- .../tests/integration/test_create_datasets.py | 4 +- .../integration/test_dataset_workspace.py | 4 +- .../tests/integration/test_delete_records.py | 2 +- .../tests/integration/test_empty_settings.py | 4 +- .../tests/integration/test_export_dataset.py | 4 +- .../tests/integration/test_export_records.py | 4 +- .../tests/integration/test_import_features.py | 2 +- .../tests/integration/test_list_records.py | 2 +- .../integration/test_listing_datasets.py | 2 +- .../tests/integration/test_manage_metadata.py | 4 +- .../tests/integration/test_manage_users.py | 4 +- .../integration/test_manage_workspaces.py | 2 +- .../integration/test_publish_datasets.py | 2 +- .../tests/integration/test_query_records.py | 4 +- .../integration/test_ranking_questions.py | 2 +- .../tests/integration/test_search_records.py | 2 +- .../test_update_dataset_settings.py | 2 +- .../tests/integration/test_update_records.py | 6 +-- extralit/tests/integration/test_vectors.py | 2 +- .../integration/test_workspace_documents.py | 2 +- .../tests/integration/test_workspace_files.py | 2 +- .../integration/test_workspace_schemas.py | 4 +- .../tests/unit/api/http/test_http_client.py | 2 +- .../unit/api/test_workspace_documents_api.py | 8 +-- .../unit/api/test_workspace_files_api.py | 6 +-- .../unit/api/test_workspace_schemas_api.py | 6 +-- extralit/tests/unit/cli/test_cli_app.py | 2 +- extralit/tests/unit/cli/test_cli_datasets.py | 2 +- extralit/tests/unit/cli/test_cli_documents.py | 4 +- .../tests/unit/cli/test_cli_extraction.py | 2 +- extralit/tests/unit/cli/test_cli_schemas.py | 2 +- extralit/tests/unit/cli/test_cli_training.py | 4 +- extralit/tests/unit/cli/test_cli_users.py | 2 +- .../tests/unit/cli/test_cli_workspaces.py | 2 +- extralit/tests/unit/conftest.py | 2 +- ...est_record_export_import_compatibillity.py | 4 +- ...t_settings_export_import_compatibillity.py | 2 +- .../tests/unit/helpers/test_resource_repr.py | 6 +-- .../unit/helpers/test_spaces_deployment.py | 2 +- .../unit/models/test_workspace_models.py | 2 +- extralit/tests/unit/test_interface.py | 2 +- extralit/tests/unit/test_io/test_generic.py | 6 +-- .../tests/unit/test_io/test_hf_datasets.py | 6 +-- extralit/tests/unit/test_markdown.py | 4 +- extralit/tests/unit/test_media.py | 2 +- extralit/tests/unit/test_record_fields.py | 2 +- extralit/tests/unit/test_record_ingestion.py | 6 +-- extralit/tests/unit/test_record_responses.py | 4 +- .../tests/unit/test_record_suggestions.py | 4 +- .../unit/test_resources/test_datasets.py | 4 +- .../tests/unit/test_resources/test_fields.py | 8 +-- .../unit/test_resources/test_questions.py | 4 +- .../tests/unit/test_resources/test_records.py | 8 +-- .../unit/test_resources/test_responses.py | 4 +- .../tests/unit/test_resources/test_users.py | 6 +-- .../unit/test_resources/test_workspaces.py | 4 +- .../tests/unit/test_search/test_filters.py | 2 +- .../tests/unit/test_settings/test_metadata.py | 4 +- .../test_multi_label_question.py | 2 +- .../tests/unit/test_settings/test_settings.py | 10 ++-- .../test_settings/test_settings_fields.py | 2 +- .../test_settings_from_features.py | 6 +-- .../test_settings_mapping_record_ingestion.py | 2 +- .../test_settings/test_settings_questions.py | 2 +- .../test_settings/test_settings_templates.py | 2 +- .../unit/test_settings/test_span_question.py | 2 +- 567 files changed, 1570 insertions(+), 1570 deletions(-) delete mode 100644 argilla-server/src/argilla_server/api/policies/v1/__init__.py rename argilla-server/src/{argilla_server => extralit_server}/__init__.py (93%) rename argilla-server/src/{argilla_server => extralit_server}/__main__.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/_app.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/_version.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic.ini (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/env.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/script.py.mako (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/237f7c674d74_add_status_column_to_records_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/3a8e2f9b5dea_create_questions_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/3fc3c0839959_create_suggestions_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/45a12f74448b_add_distribution_column_to_datasets_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/580a6553186f_add_datasets_users_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/660d6c6b3360_add_metadata_column_to_datasets_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/6ed1b8bf8e08_create_webhooks_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/74694870197c_create_users_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/7552df94427a_added_document_model_and_updated_record_.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/7d6b33203390_create_import_history_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/82a5a88a3fa5_create_workspaces_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/8be56284dac0_create_records_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/8c574ada5e5f_update_enum_columns.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/ae5522b4c674_create_fields_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/b9099dc08489_create_datasets_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/bda6fe24314e_create_vectors_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/d00f819ccc67_update_responses_user_id_foreign_key.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/alembic/versions/e402e9d9245e_create_responses_table.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/errors/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/errors/v1/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/errors/v1/exception_handlers.py (99%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/authentication.py (85%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/datasets/__init__.py (69%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/datasets/datasets.py (93%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/datasets/questions.py (83%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/datasets/records.py (93%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/datasets/records_bulk.py (84%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/documents.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/fields.py (81%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/files.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/imports.py (97%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/info.py (85%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/jobs.py (82%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/metadata_properties.py (85%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/models.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/oauth2.py (89%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/questions.py (81%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/records.py (89%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/responses.py (83%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/settings.py (88%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/suggestions.py (77%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/users.py (88%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/vectors_settings.py (82%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/webhooks.py (87%) rename argilla-server/src/{argilla_server => extralit_server}/api/handlers/v1/workspaces.py (89%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/__init__.py (100%) create mode 100644 argilla-server/src/extralit_server/api/policies/v1/__init__.py rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/commons.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/dataset_policy.py (98%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/document_policy.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/field_policy.py (91%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/file_policy.py (91%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/job_policy.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/metadata_property_policy.py (92%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/question_policy.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/record_policy.py (93%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/response_policy.py (92%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/suggestion_policy.py (88%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/user_policy.py (96%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/vector_settings_policy.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/webhook_policy.py (91%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/workspace_policy.py (91%) rename argilla-server/src/{argilla_server => extralit_server}/api/policies/v1/workspace_user_policy.py (91%) rename argilla-server/src/{argilla_server => extralit_server}/api/routes.py (65%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/base.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/chat.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/commons.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/datasets.py (97%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/documents.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/fields.py (97%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/files.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/imports.py (98%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/info.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/jobs.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/metadata_properties.py (97%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/oauth2.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/questions.py (98%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/records.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/records_bulk.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/responses.py (98%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/settings.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/suggestions.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/users.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/vector_settings.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/vectors.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/webhooks.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/api/schemas/v1/workspaces.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/bulk/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/bulk/records_bulk.py (89%) rename argilla-server/src/{argilla_server => extralit_server}/cli/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/cli/__main__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/__main__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/migrate.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/revisions.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/users/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/users/__main__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/users/create.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/users/create_default.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/users/migrate.py (97%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/users/update.py (92%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/users/utils.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/cli/database/utils.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/cli/rich.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/cli/search_engine/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/cli/search_engine/__main__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/cli/search_engine/reindex.py (96%) rename argilla-server/src/{argilla_server => extralit_server}/cli/start.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/cli/worker.py (89%) rename argilla-server/src/{argilla_server => extralit_server}/constants.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/accounts.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/datasets.py (93%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/distribution.py (87%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/files.py (99%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/hub.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/hub_templates/README.md.jinja2 (100%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/imports.py (98%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/info.py (96%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/questions.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/records.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/search.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/settings.py (85%) rename argilla-server/src/{argilla_server => extralit_server}/contexts/webhooks.py (93%) rename argilla-server/src/{argilla_server => extralit_server}/database.py (96%) rename argilla-server/src/{argilla_server => extralit_server}/enums.py (97%) rename argilla-server/src/{argilla_server => extralit_server}/errors/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/errors/base_errors.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/errors/error_handler.py (96%) rename argilla-server/src/{argilla_server => extralit_server}/errors/future/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/errors/future/base_errors.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/helpers.py (96%) rename argilla-server/src/{argilla_server => extralit_server}/integrations/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/integrations/huggingface/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/integrations/huggingface/spaces.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/jobs/__init__.py (88%) rename argilla-server/src/{argilla_server => extralit_server}/jobs/dataset_jobs.py (83%) rename argilla-server/src/{argilla_server => extralit_server}/jobs/document_jobs.py (96%) rename argilla-server/src/{argilla_server => extralit_server}/jobs/hub_jobs.py (84%) rename argilla-server/src/{argilla_server => extralit_server}/jobs/import_jobs.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/jobs/queues.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/jobs/webhook_jobs.py (87%) rename argilla-server/src/{argilla_server => extralit_server}/logging.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/models/__init__.py (91%) rename argilla-server/src/{argilla_server => extralit_server}/models/base.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/models/database.py (98%) rename argilla-server/src/{argilla_server => extralit_server}/models/metadata_properties.py (96%) rename argilla-server/src/{argilla_server => extralit_server}/models/mixins.py (99%) rename argilla-server/src/{argilla_server => extralit_server}/models/suggestions.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/search_engine/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/search_engine/base.py (98%) rename argilla-server/src/{argilla_server => extralit_server}/search_engine/commons.py (99%) rename argilla-server/src/{argilla_server => extralit_server}/search_engine/elasticsearch.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/search_engine/opensearch.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/security/__init__.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/db/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/db/api_key_backend.py (89%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/db/bearer_token_backend.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/jwt.py (88%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/oauth2/__init__.py (77%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/oauth2/_backends.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/oauth2/auth_backend.py (86%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/oauth2/provider.py (97%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/oauth2/settings.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/provider.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/security/authentication/userinfo.py (97%) rename argilla-server/src/{argilla_server => extralit_server}/security/settings.py (92%) rename argilla-server/src/{argilla_server => extralit_server}/settings.py (99%) rename argilla-server/src/{argilla_server => extralit_server}/static_rewrite.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/telemetry/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/telemetry/_client.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/telemetry/_helpers.py (96%) rename argilla-server/src/{argilla_server => extralit_server}/use_cases/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/use_cases/responses/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/use_cases/responses/upsert_responses_in_bulk.py (83%) rename argilla-server/src/{argilla_server => extralit_server}/utils.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/utils/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/utils/_fastapi.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/utils/params.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/utils/str_enum.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/validators/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/validators/datasets.py (96%) rename argilla-server/src/{argilla_server => extralit_server}/validators/questions.py (96%) rename argilla-server/src/{argilla_server => extralit_server}/validators/records.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/validators/response_values.py (98%) rename argilla-server/src/{argilla_server => extralit_server}/validators/responses.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/validators/suggestions.py (87%) rename argilla-server/src/{argilla_server => extralit_server}/validators/users.py (90%) rename argilla-server/src/{argilla_server => extralit_server}/validators/vectors.py (95%) rename argilla-server/src/{argilla_server => extralit_server}/validators/webhooks.py (92%) rename argilla-server/src/{argilla_server => extralit_server}/webhooks/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/webhooks/v1/__init__.py (100%) rename argilla-server/src/{argilla_server => extralit_server}/webhooks/v1/commons.py (97%) rename argilla-server/src/{argilla_server => extralit_server}/webhooks/v1/datasets.py (89%) rename argilla-server/src/{argilla_server => extralit_server}/webhooks/v1/enums.py (97%) rename argilla-server/src/{argilla_server => extralit_server}/webhooks/v1/event.py (94%) rename argilla-server/src/{argilla_server => extralit_server}/webhooks/v1/ping.py (82%) rename argilla-server/src/{argilla_server => extralit_server}/webhooks/v1/records.py (88%) rename argilla-server/src/{argilla_server => extralit_server}/webhooks/v1/responses.py (89%) rename argilla-server/src/{argilla_server => extralit_server}/webhooks/v1/schemas.py (100%) delete mode 100644 extralit/src/argilla/client/__init__.py delete mode 100644 extralit/src/argilla/settings/__init__.py rename extralit/src/{argilla => extralit}/__init__.py (54%) rename extralit/src/{argilla => extralit}/_api/__init__.py (57%) rename extralit/src/{argilla => extralit}/_api/_base.py (97%) rename extralit/src/{argilla => extralit}/_api/_client.py (86%) rename extralit/src/{argilla => extralit}/_api/_datasets.py (95%) rename extralit/src/{argilla => extralit}/_api/_documents.py (93%) rename extralit/src/{argilla => extralit}/_api/_fields.py (95%) rename extralit/src/{argilla => extralit}/_api/_http/__init__.py (82%) rename extralit/src/{argilla => extralit}/_api/_http/_client.py (100%) rename extralit/src/{argilla => extralit}/_api/_http/_helpers.py (100%) rename extralit/src/{argilla => extralit}/_api/_metadata.py (95%) rename extralit/src/{argilla => extralit}/_api/_questions.py (95%) rename extralit/src/{argilla => extralit}/_api/_records.py (98%) rename extralit/src/{argilla => extralit}/_api/_token.py (100%) rename extralit/src/{argilla => extralit}/_api/_users.py (97%) rename extralit/src/{argilla => extralit}/_api/_vectors.py (95%) rename extralit/src/{argilla => extralit}/_api/_webhooks.py (96%) rename extralit/src/{argilla => extralit}/_api/_workspaces.py (97%) rename extralit/src/{argilla => extralit}/_constants.py (100%) rename extralit/src/{argilla => extralit}/_exceptions/__init__.py (59%) rename extralit/src/{argilla => extralit}/_exceptions/_api.py (98%) rename extralit/src/{argilla => extralit}/_exceptions/_base.py (100%) rename extralit/src/{argilla => extralit}/_exceptions/_client.py (93%) rename extralit/src/{argilla => extralit}/_exceptions/_hub.py (95%) rename extralit/src/{argilla => extralit}/_exceptions/_metadata.py (92%) rename extralit/src/{argilla => extralit}/_exceptions/_records.py (92%) rename extralit/src/{argilla => extralit}/_exceptions/_responses.py (92%) rename extralit/src/{argilla => extralit}/_exceptions/_serialization.py (92%) rename extralit/src/{argilla => extralit}/_exceptions/_settings.py (92%) rename extralit/src/{argilla => extralit}/_exceptions/_suggestions.py (92%) rename extralit/src/{argilla => extralit}/_helpers/__init__.py (100%) rename extralit/src/{argilla => extralit}/_helpers/_dataclasses.py (100%) rename extralit/src/{argilla => extralit}/_helpers/_deploy.py (98%) rename extralit/src/{argilla => extralit}/_helpers/_iterator.py (100%) rename extralit/src/{argilla => extralit}/_helpers/_log.py (100%) rename extralit/src/{argilla => extralit}/_helpers/_media.py (100%) rename extralit/src/{argilla => extralit}/_helpers/_resource_repr.py (100%) rename extralit/src/{argilla => extralit}/_helpers/_uuid.py (100%) rename extralit/src/{argilla => extralit}/_models/__init__.py (62%) rename extralit/src/{argilla => extralit}/_models/_base.py (100%) rename extralit/src/{argilla => extralit}/_models/_dataset.py (92%) rename extralit/src/{argilla => extralit}/_models/_dataset_progress.py (100%) rename extralit/src/{argilla => extralit}/_models/_documents.py (98%) rename extralit/src/{argilla => extralit}/_models/_files.py (100%) rename extralit/src/{argilla => extralit}/_models/_record/__init__.py (100%) rename extralit/src/{argilla => extralit}/_models/_record/_metadata.py (100%) rename extralit/src/{argilla => extralit}/_models/_record/_record.py (95%) rename extralit/src/{argilla => extralit}/_models/_record/_response.py (100%) rename extralit/src/{argilla => extralit}/_models/_record/_suggestion.py (100%) rename extralit/src/{argilla => extralit}/_models/_record/_vector.py (96%) rename extralit/src/{argilla => extralit}/_models/_resource.py (100%) rename extralit/src/{argilla => extralit}/_models/_schema.py (96%) rename extralit/src/{argilla => extralit}/_models/_search.py (100%) rename extralit/src/{argilla => extralit}/_models/_settings/__init__.py (100%) rename extralit/src/{argilla => extralit}/_models/_settings/_fields.py (96%) rename extralit/src/{argilla => extralit}/_models/_settings/_metadata.py (97%) rename extralit/src/{argilla => extralit}/_models/_settings/_questions.py (99%) rename extralit/src/{argilla => extralit}/_models/_settings/_task_distribution.py (100%) rename extralit/src/{argilla => extralit}/_models/_settings/_vectors.py (94%) rename extralit/src/{argilla => extralit}/_models/_user.py (97%) rename extralit/src/{argilla => extralit}/_models/_webhook.py (97%) rename extralit/src/{argilla => extralit}/_models/_workspace.py (96%) rename extralit/src/{argilla => extralit}/_resource.py (94%) rename extralit/src/{argilla => extralit}/_version.py (100%) rename extralit/src/{argilla => extralit}/cli/__init__.py (100%) rename extralit/src/{argilla => extralit}/cli/app.py (93%) rename extralit/src/{argilla => extralit}/cli/callback.py (92%) rename extralit/src/{argilla => extralit}/cli/datasets/__init__.py (100%) rename extralit/src/{argilla => extralit}/cli/datasets/__main__.py (97%) rename extralit/src/{argilla => extralit}/cli/documents/__init__.py (50%) rename extralit/src/{argilla => extralit}/cli/documents/__main__.py (74%) rename extralit/src/{argilla => extralit}/cli/documents/add.py (97%) rename extralit/src/{argilla => extralit}/cli/documents/delete.py (98%) rename extralit/src/{argilla => extralit}/cli/documents/import_bib.py (99%) rename extralit/src/{argilla => extralit}/cli/documents/import_history.py (99%) rename extralit/src/{argilla => extralit}/cli/documents/list.py (95%) rename extralit/src/{argilla => extralit}/cli/extraction/__init__.py (100%) rename extralit/src/{argilla => extralit}/cli/extraction/__main__.py (98%) rename extralit/src/{argilla => extralit}/cli/extraction/export.py (96%) rename extralit/src/{argilla => extralit}/cli/extraction/status.py (100%) rename extralit/src/{argilla => extralit}/cli/files/__init__.py (93%) rename extralit/src/{argilla => extralit}/cli/files/__main__.py (78%) rename extralit/src/{argilla => extralit}/cli/files/delete.py (96%) rename extralit/src/{argilla => extralit}/cli/files/download.py (97%) rename extralit/src/{argilla => extralit}/cli/files/list.py (95%) rename extralit/src/{argilla => extralit}/cli/files/upload.py (97%) rename extralit/src/{argilla => extralit}/cli/info/__init__.py (100%) rename extralit/src/{argilla => extralit}/cli/info/__main__.py (88%) rename extralit/src/{argilla => extralit}/cli/login/__init__.py (100%) rename extralit/src/{argilla => extralit}/cli/login/__main__.py (96%) rename extralit/src/{argilla => extralit}/cli/logout/__init__.py (100%) rename extralit/src/{argilla => extralit}/cli/logout/__main__.py (89%) rename extralit/src/{argilla => extralit}/cli/rich.py (98%) rename extralit/src/{argilla => extralit}/cli/schemas/__init__.py (100%) rename extralit/src/{argilla => extralit}/cli/schemas/__main__.py (96%) rename extralit/src/{argilla => extralit}/cli/schemas/download.py (98%) rename extralit/src/{argilla => extralit}/cli/schemas/upload.py (98%) rename extralit/src/{argilla => extralit}/cli/training/__init__.py (100%) rename extralit/src/{argilla => extralit}/cli/training/__main__.py (98%) rename extralit/src/{argilla => extralit}/cli/typer_ext.py (100%) rename extralit/src/{argilla => extralit}/cli/users/__init__.py (100%) rename extralit/src/{argilla => extralit}/cli/users/__main__.py (94%) rename extralit/src/{argilla => extralit}/cli/whoami/__init__.py (100%) rename extralit/src/{argilla => extralit}/cli/whoami/__main__.py (94%) rename extralit/src/{argilla => extralit}/cli/workspaces/__init__.py (100%) rename extralit/src/{argilla => extralit}/cli/workspaces/__main__.py (96%) create mode 100644 extralit/src/extralit/client/__init__.py rename extralit/src/{argilla => extralit}/client/core.py (89%) rename extralit/src/{argilla => extralit}/client/login.py (99%) rename extralit/src/{argilla => extralit}/client/resources.py (94%) rename extralit/src/{argilla => extralit}/datasets/__init__.py (91%) rename extralit/src/{argilla => extralit}/datasets/_io/__init__.py (80%) rename extralit/src/{argilla => extralit}/datasets/_io/_disk.py (96%) rename extralit/src/{argilla => extralit}/datasets/_io/_hub.py (95%) rename extralit/src/{argilla => extralit}/datasets/_io/card/__init__.py (82%) rename extralit/src/{argilla => extralit}/datasets/_io/card/_dataset_card.py (100%) rename extralit/src/{argilla => extralit}/datasets/_io/card/_parser.py (100%) rename extralit/src/{argilla => extralit}/datasets/_io/card/argilla_template.md (100%) rename extralit/src/{argilla => extralit}/datasets/_resource.py (94%) rename extralit/src/{argilla => extralit}/documents/__init__.py (92%) rename extralit/src/{argilla => extralit}/documents/_resource.py (98%) rename extralit/src/{argilla => extralit}/markdown/__init__.py (78%) rename extralit/src/{argilla => extralit}/markdown/chat.py (98%) rename extralit/src/{argilla => extralit}/markdown/media.py (98%) rename extralit/src/{argilla => extralit}/records/__init__.py (79%) rename extralit/src/{argilla => extralit}/records/_dataset_records.py (97%) rename extralit/src/{argilla => extralit}/records/_io/__init__.py (69%) rename extralit/src/{argilla => extralit}/records/_io/_datasets.py (97%) rename extralit/src/{argilla => extralit}/records/_io/_generic.py (99%) rename extralit/src/{argilla => extralit}/records/_io/_json.py (95%) rename extralit/src/{argilla => extralit}/records/_mapping/__init__.py (87%) rename extralit/src/{argilla => extralit}/records/_mapping/_mapper.py (96%) rename extralit/src/{argilla => extralit}/records/_mapping/_routes.py (100%) rename extralit/src/{argilla => extralit}/records/_resource.py (97%) rename extralit/src/{argilla => extralit}/records/_search.py (97%) rename extralit/src/{argilla => extralit}/responses.py (97%) create mode 100644 extralit/src/extralit/settings/__init__.py rename extralit/src/{argilla => extralit}/settings/_common.py (95%) rename extralit/src/{argilla => extralit}/settings/_field.py (97%) rename extralit/src/{argilla => extralit}/settings/_io/__init__.py (92%) rename extralit/src/{argilla => extralit}/settings/_io/_hub.py (97%) rename extralit/src/{argilla => extralit}/settings/_metadata.py (97%) rename extralit/src/{argilla => extralit}/settings/_question.py (98%) rename extralit/src/{argilla => extralit}/settings/_resource.py (96%) rename extralit/src/{argilla => extralit}/settings/_task_distribution.py (96%) rename extralit/src/{argilla => extralit}/settings/_templates.py (93%) rename extralit/src/{argilla => extralit}/settings/_vector.py (93%) rename extralit/src/{argilla => extralit}/suggestions.py (95%) rename extralit/src/{argilla => extralit}/users/__init__.py (93%) rename extralit/src/{argilla => extralit}/users/_resource.py (95%) rename extralit/src/{argilla => extralit}/v1/__init__.py (100%) rename extralit/src/{argilla => extralit}/vectors.py (96%) rename extralit/src/{argilla => extralit}/webhooks/__init__.py (81%) rename extralit/src/{argilla => extralit}/webhooks/_event.py (95%) rename extralit/src/{argilla => extralit}/webhooks/_handler.py (95%) rename extralit/src/{argilla => extralit}/webhooks/_helpers.py (97%) rename extralit/src/{argilla => extralit}/webhooks/_resource.py (94%) rename extralit/src/{argilla => extralit}/workspaces/__init__.py (92%) rename extralit/src/{argilla => extralit}/workspaces/_resource.py (93%) diff --git a/argilla-server/src/argilla_server/api/policies/v1/__init__.py b/argilla-server/src/argilla_server/api/policies/v1/__init__.py deleted file mode 100644 index 793beada8..000000000 --- a/argilla-server/src/argilla_server/api/policies/v1/__init__.py +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright 2021-present, the Recognai S.L. team. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from argilla_server.api.policies.v1.commons import authorize, is_authorized -from argilla_server.api.policies.v1.dataset_policy import DatasetPolicy -from argilla_server.api.policies.v1.field_policy import FieldPolicy -from argilla_server.api.policies.v1.metadata_property_policy import MetadataPropertyPolicy -from argilla_server.api.policies.v1.question_policy import QuestionPolicy -from argilla_server.api.policies.v1.record_policy import RecordPolicy -from argilla_server.api.policies.v1.response_policy import ResponsePolicy -from argilla_server.api.policies.v1.suggestion_policy import SuggestionPolicy -from argilla_server.api.policies.v1.user_policy import UserPolicy -from argilla_server.api.policies.v1.vector_settings_policy import VectorSettingsPolicy -from argilla_server.api.policies.v1.workspace_policy import WorkspacePolicy -from argilla_server.api.policies.v1.workspace_user_policy import WorkspaceUserPolicy -from argilla_server.api.policies.v1.webhook_policy import WebhookPolicy -from argilla_server.api.policies.v1.job_policy import JobPolicy -from argilla_server.api.policies.v1.file_policy import FilePolicy -from argilla_server.api.policies.v1.document_policy import DocumentPolicy - -__all__ = [ - "DatasetPolicy", - "FieldPolicy", - "MetadataPropertyPolicy", - "QuestionPolicy", - "RecordPolicy", - "ResponsePolicy", - "SuggestionPolicy", - "UserPolicy", - "VectorSettingsPolicy", - "WorkspacePolicy", - "WorkspaceUserPolicy", - "WebhookPolicy", - "JobPolicy", - "FilePolicy", - "DocumentPolicy", - "authorize", - "is_authorized", -] diff --git a/argilla-server/src/argilla_server/__init__.py b/argilla-server/src/extralit_server/__init__.py similarity index 93% rename from argilla-server/src/argilla_server/__init__.py rename to argilla-server/src/extralit_server/__init__.py index 2d943a2cd..a87647f3e 100644 --- a/argilla-server/src/argilla_server/__init__.py +++ b/argilla-server/src/extralit_server/__init__.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server._app import app # noqa +from extralit_server._app import app # noqa diff --git a/argilla-server/src/argilla_server/__main__.py b/argilla-server/src/extralit_server/__main__.py similarity index 94% rename from argilla-server/src/argilla_server/__main__.py rename to argilla-server/src/extralit_server/__main__.py index 3ce5e1356..85af7d751 100644 --- a/argilla-server/src/argilla_server/__main__.py +++ b/argilla-server/src/extralit_server/__main__.py @@ -12,7 +12,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.cli import app +from extralit_server.cli import app if __name__ == "__main__": app() diff --git a/argilla-server/src/argilla_server/_app.py b/argilla-server/src/extralit_server/_app.py similarity index 94% rename from argilla-server/src/argilla_server/_app.py rename to argilla-server/src/extralit_server/_app.py index 7e23d5953..2f5b3d0d8 100644 --- a/argilla-server/src/argilla_server/_app.py +++ b/argilla-server/src/extralit_server/_app.py @@ -35,19 +35,19 @@ from starlette.middleware.cors import CORSMiddleware from starlette.responses import RedirectResponse, HTMLResponse -from argilla_server import helpers -from argilla_server._version import __version__ as argilla_version -from argilla_server.api.routes import api_v1 -from argilla_server.constants import DEFAULT_API_KEY, DEFAULT_PASSWORD, DEFAULT_USERNAME -from argilla_server.contexts import accounts -from argilla_server.database import get_async_db -from argilla_server.logging import configure_logging -from argilla_server.models import User, Workspace -from argilla_server.search_engine import get_search_engine -from argilla_server.settings import settings -from argilla_server.static_rewrite import RewriteStaticFiles -from argilla_server.jobs.queues import REDIS_CONNECTION -from argilla_server.telemetry import get_telemetry_client +from extralit_server import helpers +from extralit_server._version import __version__ as argilla_version +from extralit_server.api.routes import api_v1 +from extralit_server.constants import DEFAULT_API_KEY, DEFAULT_PASSWORD, DEFAULT_USERNAME +from extralit_server.contexts import accounts +from extralit_server.database import get_async_db +from extralit_server.logging import configure_logging +from extralit_server.models import User, Workspace +from extralit_server.search_engine import get_search_engine +from extralit_server.settings import settings +from extralit_server.static_rewrite import RewriteStaticFiles +from extralit_server.jobs.queues import REDIS_CONNECTION +from extralit_server.telemetry import get_telemetry_client _LOGGER = logging.getLogger("argilla") @@ -304,7 +304,7 @@ def _show_telemetry_warning(): async def _create_oauth_allowed_workspaces(db: AsyncSession): - from argilla_server.security.settings import settings as security_settings + from extralit_server.security.settings import settings as security_settings for allowed_workspace in security_settings.oauth.allowed_workspaces: if await Workspace.get_by(db, name=allowed_workspace.name) is None: diff --git a/argilla-server/src/argilla_server/_version.py b/argilla-server/src/extralit_server/_version.py similarity index 100% rename from argilla-server/src/argilla_server/_version.py rename to argilla-server/src/extralit_server/_version.py diff --git a/argilla-server/src/argilla_server/alembic.ini b/argilla-server/src/extralit_server/alembic.ini similarity index 100% rename from argilla-server/src/argilla_server/alembic.ini rename to argilla-server/src/extralit_server/alembic.ini diff --git a/argilla-server/src/argilla_server/alembic/env.py b/argilla-server/src/extralit_server/alembic/env.py similarity index 94% rename from argilla-server/src/argilla_server/alembic/env.py rename to argilla-server/src/extralit_server/alembic/env.py index 232942917..2d8acfada 100644 --- a/argilla-server/src/argilla_server/alembic/env.py +++ b/argilla-server/src/extralit_server/alembic/env.py @@ -15,9 +15,9 @@ from logging.config import fileConfig from alembic import context -from argilla_server.database import database_url_sync -from argilla_server.models.base import DatabaseModel -from argilla_server.models.database import * # noqa +from extralit_server.database import database_url_sync +from extralit_server.models.base import DatabaseModel +from extralit_server.models.database import * # noqa from sqlalchemy import engine_from_config, pool # this is the Alembic Config object, which provides diff --git a/argilla-server/src/argilla_server/alembic/script.py.mako b/argilla-server/src/extralit_server/alembic/script.py.mako similarity index 100% rename from argilla-server/src/argilla_server/alembic/script.py.mako rename to argilla-server/src/extralit_server/alembic/script.py.mako diff --git a/argilla-server/src/argilla_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py b/argilla-server/src/extralit_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py rename to argilla-server/src/extralit_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py b/argilla-server/src/extralit_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py rename to argilla-server/src/extralit_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py diff --git a/argilla-server/src/argilla_server/alembic/versions/237f7c674d74_add_status_column_to_records_table.py b/argilla-server/src/extralit_server/alembic/versions/237f7c674d74_add_status_column_to_records_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/237f7c674d74_add_status_column_to_records_table.py rename to argilla-server/src/extralit_server/alembic/versions/237f7c674d74_add_status_column_to_records_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py b/argilla-server/src/extralit_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py rename to argilla-server/src/extralit_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/3fc3c0839959_create_suggestions_table.py b/argilla-server/src/extralit_server/alembic/versions/3fc3c0839959_create_suggestions_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/3fc3c0839959_create_suggestions_table.py rename to argilla-server/src/extralit_server/alembic/versions/3fc3c0839959_create_suggestions_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py b/argilla-server/src/extralit_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py rename to argilla-server/src/extralit_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/45a12f74448b_add_distribution_column_to_datasets_table.py b/argilla-server/src/extralit_server/alembic/versions/45a12f74448b_add_distribution_column_to_datasets_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/45a12f74448b_add_distribution_column_to_datasets_table.py rename to argilla-server/src/extralit_server/alembic/versions/45a12f74448b_add_distribution_column_to_datasets_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/580a6553186f_add_datasets_users_table.py b/argilla-server/src/extralit_server/alembic/versions/580a6553186f_add_datasets_users_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/580a6553186f_add_datasets_users_table.py rename to argilla-server/src/extralit_server/alembic/versions/580a6553186f_add_datasets_users_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/660d6c6b3360_add_metadata_column_to_datasets_table.py b/argilla-server/src/extralit_server/alembic/versions/660d6c6b3360_add_metadata_column_to_datasets_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/660d6c6b3360_add_metadata_column_to_datasets_table.py rename to argilla-server/src/extralit_server/alembic/versions/660d6c6b3360_add_metadata_column_to_datasets_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/6ed1b8bf8e08_create_webhooks_table.py b/argilla-server/src/extralit_server/alembic/versions/6ed1b8bf8e08_create_webhooks_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/6ed1b8bf8e08_create_webhooks_table.py rename to argilla-server/src/extralit_server/alembic/versions/6ed1b8bf8e08_create_webhooks_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/74694870197c_create_users_table.py b/argilla-server/src/extralit_server/alembic/versions/74694870197c_create_users_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/74694870197c_create_users_table.py rename to argilla-server/src/extralit_server/alembic/versions/74694870197c_create_users_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/7552df94427a_added_document_model_and_updated_record_.py b/argilla-server/src/extralit_server/alembic/versions/7552df94427a_added_document_model_and_updated_record_.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/7552df94427a_added_document_model_and_updated_record_.py rename to argilla-server/src/extralit_server/alembic/versions/7552df94427a_added_document_model_and_updated_record_.py diff --git a/argilla-server/src/argilla_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py b/argilla-server/src/extralit_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py rename to argilla-server/src/extralit_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py b/argilla-server/src/extralit_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py rename to argilla-server/src/extralit_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/7d6b33203390_create_import_history_table.py b/argilla-server/src/extralit_server/alembic/versions/7d6b33203390_create_import_history_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/7d6b33203390_create_import_history_table.py rename to argilla-server/src/extralit_server/alembic/versions/7d6b33203390_create_import_history_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py b/argilla-server/src/extralit_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py rename to argilla-server/src/extralit_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py b/argilla-server/src/extralit_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py rename to argilla-server/src/extralit_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/8be56284dac0_create_records_table.py b/argilla-server/src/extralit_server/alembic/versions/8be56284dac0_create_records_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/8be56284dac0_create_records_table.py rename to argilla-server/src/extralit_server/alembic/versions/8be56284dac0_create_records_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/8c574ada5e5f_update_enum_columns.py b/argilla-server/src/extralit_server/alembic/versions/8c574ada5e5f_update_enum_columns.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/8c574ada5e5f_update_enum_columns.py rename to argilla-server/src/extralit_server/alembic/versions/8c574ada5e5f_update_enum_columns.py diff --git a/argilla-server/src/argilla_server/alembic/versions/ae5522b4c674_create_fields_table.py b/argilla-server/src/extralit_server/alembic/versions/ae5522b4c674_create_fields_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/ae5522b4c674_create_fields_table.py rename to argilla-server/src/extralit_server/alembic/versions/ae5522b4c674_create_fields_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py b/argilla-server/src/extralit_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py rename to argilla-server/src/extralit_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/b9099dc08489_create_datasets_table.py b/argilla-server/src/extralit_server/alembic/versions/b9099dc08489_create_datasets_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/b9099dc08489_create_datasets_table.py rename to argilla-server/src/extralit_server/alembic/versions/b9099dc08489_create_datasets_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/bda6fe24314e_create_vectors_table.py b/argilla-server/src/extralit_server/alembic/versions/bda6fe24314e_create_vectors_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/bda6fe24314e_create_vectors_table.py rename to argilla-server/src/extralit_server/alembic/versions/bda6fe24314e_create_vectors_table.py diff --git a/argilla-server/src/argilla_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py b/argilla-server/src/extralit_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py rename to argilla-server/src/extralit_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py diff --git a/argilla-server/src/argilla_server/alembic/versions/d00f819ccc67_update_responses_user_id_foreign_key.py b/argilla-server/src/extralit_server/alembic/versions/d00f819ccc67_update_responses_user_id_foreign_key.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/d00f819ccc67_update_responses_user_id_foreign_key.py rename to argilla-server/src/extralit_server/alembic/versions/d00f819ccc67_update_responses_user_id_foreign_key.py diff --git a/argilla-server/src/argilla_server/alembic/versions/e402e9d9245e_create_responses_table.py b/argilla-server/src/extralit_server/alembic/versions/e402e9d9245e_create_responses_table.py similarity index 100% rename from argilla-server/src/argilla_server/alembic/versions/e402e9d9245e_create_responses_table.py rename to argilla-server/src/extralit_server/alembic/versions/e402e9d9245e_create_responses_table.py diff --git a/argilla-server/src/argilla_server/api/__init__.py b/argilla-server/src/extralit_server/api/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/api/__init__.py rename to argilla-server/src/extralit_server/api/__init__.py diff --git a/argilla-server/src/argilla_server/api/errors/__init__.py b/argilla-server/src/extralit_server/api/errors/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/api/errors/__init__.py rename to argilla-server/src/extralit_server/api/errors/__init__.py diff --git a/argilla-server/src/argilla_server/api/errors/v1/__init__.py b/argilla-server/src/extralit_server/api/errors/v1/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/api/errors/v1/__init__.py rename to argilla-server/src/extralit_server/api/errors/v1/__init__.py diff --git a/argilla-server/src/argilla_server/api/errors/v1/exception_handlers.py b/argilla-server/src/extralit_server/api/errors/v1/exception_handlers.py similarity index 99% rename from argilla-server/src/argilla_server/api/errors/v1/exception_handlers.py rename to argilla-server/src/extralit_server/api/errors/v1/exception_handlers.py index eee244af0..3a5a283d7 100644 --- a/argilla-server/src/argilla_server/api/errors/v1/exception_handlers.py +++ b/argilla-server/src/extralit_server/api/errors/v1/exception_handlers.py @@ -17,7 +17,7 @@ from fastapi.responses import JSONResponse from fastapi import Request -import argilla_server.errors.future as errors +import extralit_server.errors.future as errors def set_request_error(request: Request, error: Exception) -> None: diff --git a/argilla-server/src/argilla_server/api/handlers/__init__.py b/argilla-server/src/extralit_server/api/handlers/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/api/handlers/__init__.py rename to argilla-server/src/extralit_server/api/handlers/__init__.py diff --git a/argilla-server/src/argilla_server/api/handlers/v1/__init__.py b/argilla-server/src/extralit_server/api/handlers/v1/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/api/handlers/v1/__init__.py rename to argilla-server/src/extralit_server/api/handlers/v1/__init__.py diff --git a/argilla-server/src/argilla_server/api/handlers/v1/authentication.py b/argilla-server/src/extralit_server/api/handlers/v1/authentication.py similarity index 85% rename from argilla-server/src/argilla_server/api/handlers/v1/authentication.py rename to argilla-server/src/extralit_server/api/handlers/v1/authentication.py index 14a80ee4e..370daa590 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/authentication.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/authentication.py @@ -17,10 +17,10 @@ from fastapi import APIRouter, Depends, Form, status from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.api.schemas.v1.oauth2 import Token -from argilla_server.contexts import accounts -from argilla_server.database import get_async_db -from argilla_server.errors import UnauthorizedError +from extralit_server.api.schemas.v1.oauth2 import Token +from extralit_server.contexts import accounts +from extralit_server.database import get_async_db +from extralit_server.errors import UnauthorizedError router = APIRouter(tags=["Authentication"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/datasets/__init__.py b/argilla-server/src/extralit_server/api/handlers/v1/datasets/__init__.py similarity index 69% rename from argilla-server/src/argilla_server/api/handlers/v1/datasets/__init__.py rename to argilla-server/src/extralit_server/api/handlers/v1/datasets/__init__.py index e374c304c..cd6bd7371 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/datasets/__init__.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/datasets/__init__.py @@ -14,10 +14,10 @@ from fastapi import APIRouter -from argilla_server.api.handlers.v1.datasets.datasets import router as datasets_router -from argilla_server.api.handlers.v1.datasets.questions import router as questions_router -from argilla_server.api.handlers.v1.datasets.records import router as records_router -from argilla_server.api.handlers.v1.datasets.records_bulk import router as records_bulk_router +from extralit_server.api.handlers.v1.datasets.datasets import router as datasets_router +from extralit_server.api.handlers.v1.datasets.questions import router as questions_router +from extralit_server.api.handlers.v1.datasets.records import router as records_router +from extralit_server.api.handlers.v1.datasets.records_bulk import router as records_bulk_router router = APIRouter(tags=["datasets"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/datasets/datasets.py b/argilla-server/src/extralit_server/api/handlers/v1/datasets/datasets.py similarity index 93% rename from argilla-server/src/argilla_server/api/handlers/v1/datasets/datasets.py rename to argilla-server/src/extralit_server/api/handlers/v1/datasets/datasets.py index e7163779c..eefdfd310 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/datasets/datasets.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/datasets/datasets.py @@ -19,11 +19,11 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.api.policies.v1 import DatasetPolicy, MetadataPropertyPolicy, authorize, is_authorized -from argilla_server.api.schemas.v1.datasets import ( +from extralit_server.api.policies.v1 import DatasetPolicy, MetadataPropertyPolicy, authorize, is_authorized +from extralit_server.api.schemas.v1.datasets import ( Dataset as DatasetSchema, ) -from argilla_server.api.schemas.v1.datasets import ( +from extralit_server.api.schemas.v1.datasets import ( DatasetCreate, DatasetMetrics, DatasetProgress, @@ -34,25 +34,25 @@ ImportHistoryDataset, UsersProgress, ) -from argilla_server.api.schemas.v1.fields import Field, FieldCreate, Fields -from argilla_server.api.schemas.v1.metadata_properties import ( +from extralit_server.api.schemas.v1.fields import Field, FieldCreate, Fields +from extralit_server.api.schemas.v1.metadata_properties import ( MetadataProperties, MetadataProperty, MetadataPropertyCreate, ) -from argilla_server.errors.future import UnprocessableEntityError -from argilla_server.api.schemas.v1.vector_settings import VectorSettings, VectorSettingsCreate, VectorsSettings -from argilla_server.api.schemas.v1.jobs import Job as JobSchema -from argilla_server.contexts import datasets -from argilla_server.database import get_async_db -from argilla_server.enums import DatasetStatus -from argilla_server.jobs import hub_jobs, import_jobs -from argilla_server.models import Dataset, User -from argilla_server.search_engine import ( +from extralit_server.errors.future import UnprocessableEntityError +from extralit_server.api.schemas.v1.vector_settings import VectorSettings, VectorSettingsCreate, VectorsSettings +from extralit_server.api.schemas.v1.jobs import Job as JobSchema +from extralit_server.contexts import datasets +from extralit_server.database import get_async_db +from extralit_server.enums import DatasetStatus +from extralit_server.jobs import hub_jobs, import_jobs +from extralit_server.models import Dataset, User +from extralit_server.search_engine import ( SearchEngine, get_search_engine, ) -from argilla_server.security import auth +from extralit_server.security import auth router = APIRouter() diff --git a/argilla-server/src/argilla_server/api/handlers/v1/datasets/questions.py b/argilla-server/src/extralit_server/api/handlers/v1/datasets/questions.py similarity index 83% rename from argilla-server/src/argilla_server/api/handlers/v1/datasets/questions.py rename to argilla-server/src/extralit_server/api/handlers/v1/datasets/questions.py index b0b08b22e..3ffebf7d2 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/datasets/questions.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/datasets/questions.py @@ -19,13 +19,13 @@ from sqlalchemy.orm import selectinload from starlette import status -from argilla_server.api.policies.v1 import DatasetPolicy, authorize -from argilla_server.api.schemas.v1.questions import Question, QuestionCreate, Questions -from argilla_server.contexts import questions -from argilla_server.database import get_async_db -from argilla_server.models import Dataset, User -from argilla_server.security import auth -from argilla_server.telemetry import TelemetryClient, get_telemetry_client +from extralit_server.api.policies.v1 import DatasetPolicy, authorize +from extralit_server.api.schemas.v1.questions import Question, QuestionCreate, Questions +from extralit_server.contexts import questions +from extralit_server.database import get_async_db +from extralit_server.models import Dataset, User +from extralit_server.security import auth +from extralit_server.telemetry import TelemetryClient, get_telemetry_client router = APIRouter() diff --git a/argilla-server/src/argilla_server/api/handlers/v1/datasets/records.py b/argilla-server/src/extralit_server/api/handlers/v1/datasets/records.py similarity index 93% rename from argilla-server/src/argilla_server/api/handlers/v1/datasets/records.py rename to argilla-server/src/extralit_server/api/handlers/v1/datasets/records.py index 7765ad6eb..80fbed064 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/datasets/records.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/datasets/records.py @@ -20,9 +20,9 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -import argilla_server.search_engine as search_engine -from argilla_server.api.policies.v1 import DatasetPolicy, RecordPolicy, authorize, is_authorized -from argilla_server.api.schemas.v1.records import ( +import extralit_server.search_engine as search_engine +from extralit_server.api.policies.v1 import DatasetPolicy, RecordPolicy, authorize, is_authorized +from extralit_server.api.schemas.v1.records import ( Filters, FilterScope, MetadataFilterScope, @@ -37,22 +37,22 @@ TermsFilter, SEARCH_MAX_SIMILARITY_SEARCH_RESULT, ) -from argilla_server.api.schemas.v1.users import Users as UsersSchema -from argilla_server.api.schemas.v1.records import Record as RecordSchema -from argilla_server.api.schemas.v1.responses import ResponseFilterScope -from argilla_server.api.schemas.v1.suggestions import ( +from extralit_server.api.schemas.v1.users import Users as UsersSchema +from extralit_server.api.schemas.v1.records import Record as RecordSchema +from extralit_server.api.schemas.v1.responses import ResponseFilterScope +from extralit_server.api.schemas.v1.suggestions import ( SearchSuggestionOptions, SearchSuggestionOptionsQuestion, SearchSuggestionsOptions, SuggestionFilterScope, ) -from argilla_server.api.handlers.v1.workspaces import list_workspace_users -from argilla_server.contexts import datasets, search, records -from argilla_server.database import get_async_db -from argilla_server.enums import RecordSortField, SuggestionType -from argilla_server.errors.future import MissingVectorError, NotFoundError, UnprocessableEntityError -from argilla_server.errors.future.base_errors import MISSING_VECTOR_ERROR_CODE -from argilla_server.models import ( +from extralit_server.api.handlers.v1.workspaces import list_workspace_users +from extralit_server.contexts import datasets, search, records +from extralit_server.database import get_async_db +from extralit_server.enums import RecordSortField, SuggestionType +from extralit_server.errors.future import MissingVectorError, NotFoundError, UnprocessableEntityError +from extralit_server.errors.future.base_errors import MISSING_VECTOR_ERROR_CODE +from extralit_server.models import ( Dataset, Field, Record, @@ -63,15 +63,15 @@ Suggestion, ResponseStatus, ) -from argilla_server.search_engine import ( +from extralit_server.search_engine import ( AndFilter, SearchEngine, SearchResponses, get_search_engine, ) -from argilla_server.security import auth -from argilla_server.telemetry import TelemetryClient, get_telemetry_client -from argilla_server.utils import parse_query_param, parse_uuids +from extralit_server.security import auth +from extralit_server.telemetry import TelemetryClient, get_telemetry_client +from extralit_server.utils import parse_query_param, parse_uuids LIST_DATASET_RECORDS_LIMIT_DEFAULT = 50 LIST_DATASET_RECORDS_LIMIT_LE = 1000 diff --git a/argilla-server/src/argilla_server/api/handlers/v1/datasets/records_bulk.py b/argilla-server/src/extralit_server/api/handlers/v1/datasets/records_bulk.py similarity index 84% rename from argilla-server/src/argilla_server/api/handlers/v1/datasets/records_bulk.py rename to argilla-server/src/extralit_server/api/handlers/v1/datasets/records_bulk.py index 46818826e..5500f7d41 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/datasets/records_bulk.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/datasets/records_bulk.py @@ -19,13 +19,13 @@ from sqlalchemy.orm import selectinload from starlette import status -from argilla_server.api.policies.v1 import DatasetPolicy, authorize -from argilla_server.api.schemas.v1.records_bulk import RecordsBulk, RecordsBulkCreate, RecordsBulkUpsert -from argilla_server.bulk.records_bulk import CreateRecordsBulk, UpsertRecordsBulk -from argilla_server.database import get_async_db -from argilla_server.models import Dataset, User -from argilla_server.search_engine import SearchEngine, get_search_engine -from argilla_server.security import auth +from extralit_server.api.policies.v1 import DatasetPolicy, authorize +from extralit_server.api.schemas.v1.records_bulk import RecordsBulk, RecordsBulkCreate, RecordsBulkUpsert +from extralit_server.bulk.records_bulk import CreateRecordsBulk, UpsertRecordsBulk +from extralit_server.database import get_async_db +from extralit_server.models import Dataset, User +from extralit_server.search_engine import SearchEngine, get_search_engine +from extralit_server.security import auth router = APIRouter() diff --git a/argilla-server/src/argilla_server/api/handlers/v1/documents.py b/argilla-server/src/extralit_server/api/handlers/v1/documents.py similarity index 94% rename from argilla-server/src/argilla_server/api/handlers/v1/documents.py rename to argilla-server/src/extralit_server/api/handlers/v1/documents.py index 0cbe63bb1..5dd5e825b 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/documents.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/documents.py @@ -22,17 +22,17 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select -from argilla_server.database import get_async_db -from argilla_server.models.database import Document -from argilla_server.security import auth -from argilla_server.models import User, Workspace -from argilla_server.contexts import files, imports -from argilla_server.api.policies.v1 import DocumentPolicy, authorize -from argilla_server.api.schemas.v1.documents import DocumentCreate, DocumentDelete, DocumentListItem, DocumentUpdate -from argilla_server.api.schemas.v1.imports import DocumentsBulkResponse, DocumentsBulkCreate +from extralit_server.database import get_async_db +from extralit_server.models.database import Document +from extralit_server.security import auth +from extralit_server.models import User, Workspace +from extralit_server.contexts import files, imports +from extralit_server.api.policies.v1 import DocumentPolicy, authorize +from extralit_server.api.schemas.v1.documents import DocumentCreate, DocumentDelete, DocumentListItem, DocumentUpdate +from extralit_server.api.schemas.v1.imports import DocumentsBulkResponse, DocumentsBulkCreate if TYPE_CHECKING: - from argilla_server.models import Document + from extralit_server.models import Document _LOGGER = logging.getLogger(__name__) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/fields.py b/argilla-server/src/extralit_server/api/handlers/v1/fields.py similarity index 81% rename from argilla-server/src/argilla_server/api/handlers/v1/fields.py rename to argilla-server/src/extralit_server/api/handlers/v1/fields.py index a62c7dbcd..20eaac451 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/fields.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/fields.py @@ -18,13 +18,13 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.api.policies.v1 import FieldPolicy, authorize -from argilla_server.api.schemas.v1.fields import Field as FieldSchema -from argilla_server.api.schemas.v1.fields import FieldUpdate -from argilla_server.contexts import datasets -from argilla_server.database import get_async_db -from argilla_server.models import Field, User -from argilla_server.security import auth +from extralit_server.api.policies.v1 import FieldPolicy, authorize +from extralit_server.api.schemas.v1.fields import Field as FieldSchema +from extralit_server.api.schemas.v1.fields import FieldUpdate +from extralit_server.contexts import datasets +from extralit_server.database import get_async_db +from extralit_server.models import Field, User +from extralit_server.security import auth router = APIRouter(tags=["fields"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/files.py b/argilla-server/src/extralit_server/api/handlers/v1/files.py similarity index 94% rename from argilla-server/src/argilla_server/api/handlers/v1/files.py rename to argilla-server/src/extralit_server/api/handlers/v1/files.py index 7887de9de..af5116076 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/files.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/files.py @@ -19,11 +19,11 @@ from fastapi.responses import StreamingResponse from minio import Minio, S3Error -from argilla_server.contexts import files -from argilla_server.models import User -from argilla_server.api.policies.v1 import FilePolicy, authorize -from argilla_server.api.schemas.v1.files import ListObjectsResponse, ObjectMetadata -from argilla_server.security import auth +from extralit_server.contexts import files +from extralit_server.models import User +from extralit_server.api.policies.v1 import FilePolicy, authorize +from extralit_server.api.schemas.v1.files import ListObjectsResponse, ObjectMetadata +from extralit_server.security import auth _LOGGER = logging.getLogger(__name__) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/imports.py b/argilla-server/src/extralit_server/api/handlers/v1/imports.py similarity index 97% rename from argilla-server/src/argilla_server/api/handlers/v1/imports.py rename to argilla-server/src/extralit_server/api/handlers/v1/imports.py index 0a2f52370..930ec802e 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/imports.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/imports.py @@ -22,12 +22,12 @@ from sqlalchemy.orm import selectinload from pydantic import ValidationError -from argilla_server.database import get_async_db -from argilla_server.security import auth -from argilla_server.models import User, Workspace, ImportHistory -from argilla_server.api.policies.v1 import DocumentPolicy, authorize -from argilla_server.contexts.imports import analyze_import_status, create_import_history -from argilla_server.api.schemas.v1.imports import ( +from extralit_server.database import get_async_db +from extralit_server.security import auth +from extralit_server.models import User, Workspace, ImportHistory +from extralit_server.api.policies.v1 import DocumentPolicy, authorize +from extralit_server.contexts.imports import analyze_import_status, create_import_history +from extralit_server.api.schemas.v1.imports import ( ImportAnalysisRequest, ImportAnalysisResponse, ImportHistoryCreate, diff --git a/argilla-server/src/argilla_server/api/handlers/v1/info.py b/argilla-server/src/extralit_server/api/handlers/v1/info.py similarity index 85% rename from argilla-server/src/argilla_server/api/handlers/v1/info.py rename to argilla-server/src/extralit_server/api/handlers/v1/info.py index 66ec8d0e6..504f0e0c9 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/info.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/info.py @@ -14,9 +14,9 @@ from fastapi import APIRouter, Depends -from argilla_server.api.schemas.v1.info import Status, Version -from argilla_server.contexts import info -from argilla_server.search_engine import SearchEngine, get_search_engine +from extralit_server.api.schemas.v1.info import Status, Version +from extralit_server.contexts import info +from extralit_server.search_engine import SearchEngine, get_search_engine router = APIRouter(tags=["info"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/jobs.py b/argilla-server/src/extralit_server/api/handlers/v1/jobs.py similarity index 82% rename from argilla-server/src/argilla_server/api/handlers/v1/jobs.py rename to argilla-server/src/extralit_server/api/handlers/v1/jobs.py index dbded9497..d4ebda33a 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/jobs.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/jobs.py @@ -18,12 +18,12 @@ from rq.job import Job from rq.exceptions import NoSuchJobError -from argilla_server.database import get_async_db -from argilla_server.jobs.queues import REDIS_CONNECTION -from argilla_server.models import User -from argilla_server.api.policies.v1 import JobPolicy, authorize -from argilla_server.api.schemas.v1.jobs import Job as JobSchema -from argilla_server.security import auth +from extralit_server.database import get_async_db +from extralit_server.jobs.queues import REDIS_CONNECTION +from extralit_server.models import User +from extralit_server.api.policies.v1 import JobPolicy, authorize +from extralit_server.api.schemas.v1.jobs import Job as JobSchema +from extralit_server.security import auth router = APIRouter(tags=["jobs"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/metadata_properties.py b/argilla-server/src/extralit_server/api/handlers/v1/metadata_properties.py similarity index 85% rename from argilla-server/src/argilla_server/api/handlers/v1/metadata_properties.py rename to argilla-server/src/extralit_server/api/handlers/v1/metadata_properties.py index ae0392bfb..866a775ba 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/metadata_properties.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/metadata_properties.py @@ -18,19 +18,19 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.api.policies.v1 import MetadataPropertyPolicy, authorize -from argilla_server.api.schemas.v1.metadata_properties import ( +from extralit_server.api.policies.v1 import MetadataPropertyPolicy, authorize +from extralit_server.api.schemas.v1.metadata_properties import ( MetadataMetrics, MetadataPropertyUpdate, ) -from argilla_server.api.schemas.v1.metadata_properties import ( +from extralit_server.api.schemas.v1.metadata_properties import ( MetadataProperty as MetadataPropertySchema, ) -from argilla_server.contexts import datasets -from argilla_server.database import get_async_db -from argilla_server.models import MetadataProperty, User -from argilla_server.search_engine import SearchEngine, get_search_engine -from argilla_server.security import auth +from extralit_server.contexts import datasets +from extralit_server.database import get_async_db +from extralit_server.models import MetadataProperty, User +from extralit_server.search_engine import SearchEngine, get_search_engine +from extralit_server.security import auth router = APIRouter(tags=["metadata properties"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/models.py b/argilla-server/src/extralit_server/api/handlers/v1/models.py similarity index 94% rename from argilla-server/src/argilla_server/api/handlers/v1/models.py rename to argilla-server/src/extralit_server/api/handlers/v1/models.py index 539ac212c..6efbfff7f 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/models.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/models.py @@ -20,10 +20,10 @@ from starlette.requests import Request from starlette.responses import StreamingResponse -from argilla_server.models import User -from argilla_server.security import auth -from argilla_server.settings import settings -from argilla_server.errors import UnauthorizedError, BadRequestError +from extralit_server.models import User +from extralit_server.security import auth +from extralit_server.settings import settings +from extralit_server.errors import UnauthorizedError, BadRequestError _LOGGER = logging.getLogger(__name__) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/oauth2.py b/argilla-server/src/extralit_server/api/handlers/v1/oauth2.py similarity index 89% rename from argilla-server/src/argilla_server/api/handlers/v1/oauth2.py rename to argilla-server/src/extralit_server/api/handlers/v1/oauth2.py index 425f75c5e..fa30e1dd9 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/oauth2.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/oauth2.py @@ -16,14 +16,14 @@ from fastapi.responses import RedirectResponse from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.api.schemas.v1.oauth2 import Provider, Providers, Token -from argilla_server.contexts import accounts -from argilla_server.database import get_async_db -from argilla_server.errors.future import NotFoundError -from argilla_server.models import Workspace, WorkspaceUser -from argilla_server.security.authentication.oauth2 import OAuth2ClientProvider -from argilla_server.security.authentication.userinfo import UserInfo -from argilla_server.security.settings import settings +from extralit_server.api.schemas.v1.oauth2 import Provider, Providers, Token +from extralit_server.contexts import accounts +from extralit_server.database import get_async_db +from extralit_server.errors.future import NotFoundError +from extralit_server.models import Workspace, WorkspaceUser +from extralit_server.security.authentication.oauth2 import OAuth2ClientProvider +from extralit_server.security.authentication.userinfo import UserInfo +from extralit_server.security.settings import settings router = APIRouter(prefix="/oauth2", tags=["Authentication"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/questions.py b/argilla-server/src/extralit_server/api/handlers/v1/questions.py similarity index 81% rename from argilla-server/src/argilla_server/api/handlers/v1/questions.py rename to argilla-server/src/extralit_server/api/handlers/v1/questions.py index 27d8cedf8..c16188cf9 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/questions.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/questions.py @@ -18,13 +18,13 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.api.policies.v1 import QuestionPolicy, authorize -from argilla_server.api.schemas.v1.questions import Question as QuestionSchema -from argilla_server.api.schemas.v1.questions import QuestionUpdate -from argilla_server.contexts import questions -from argilla_server.database import get_async_db -from argilla_server.models import Question, User -from argilla_server.security import auth +from extralit_server.api.policies.v1 import QuestionPolicy, authorize +from extralit_server.api.schemas.v1.questions import Question as QuestionSchema +from extralit_server.api.schemas.v1.questions import QuestionUpdate +from extralit_server.contexts import questions +from extralit_server.database import get_async_db +from extralit_server.models import Question, User +from extralit_server.security import auth router = APIRouter(tags=["questions"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/records.py b/argilla-server/src/extralit_server/api/handlers/v1/records.py similarity index 89% rename from argilla-server/src/argilla_server/api/handlers/v1/records.py rename to argilla-server/src/extralit_server/api/handlers/v1/records.py index 5da18f80f..793312359 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/records.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/records.py @@ -19,19 +19,19 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.api.policies.v1 import RecordPolicy, authorize -from argilla_server.api.schemas.v1.records import Record as RecordSchema -from argilla_server.api.schemas.v1.records import RecordUpdate -from argilla_server.api.schemas.v1.responses import Response, ResponseCreate -from argilla_server.api.schemas.v1.suggestions import Suggestion as SuggestionSchema -from argilla_server.api.schemas.v1.suggestions import SuggestionCreate, Suggestions -from argilla_server.contexts import datasets, records -from argilla_server.database import get_async_db -from argilla_server.errors.future.base_errors import NotFoundError, UnprocessableEntityError -from argilla_server.models import Dataset, Question, Record, Suggestion, User -from argilla_server.search_engine import SearchEngine, get_search_engine -from argilla_server.security import auth -from argilla_server.utils import parse_uuids +from extralit_server.api.policies.v1 import RecordPolicy, authorize +from extralit_server.api.schemas.v1.records import Record as RecordSchema +from extralit_server.api.schemas.v1.records import RecordUpdate +from extralit_server.api.schemas.v1.responses import Response, ResponseCreate +from extralit_server.api.schemas.v1.suggestions import Suggestion as SuggestionSchema +from extralit_server.api.schemas.v1.suggestions import SuggestionCreate, Suggestions +from extralit_server.contexts import datasets, records +from extralit_server.database import get_async_db +from extralit_server.errors.future.base_errors import NotFoundError, UnprocessableEntityError +from extralit_server.models import Dataset, Question, Record, Suggestion, User +from extralit_server.search_engine import SearchEngine, get_search_engine +from extralit_server.security import auth +from extralit_server.utils import parse_uuids DELETE_RECORD_SUGGESTIONS_LIMIT = 100 diff --git a/argilla-server/src/argilla_server/api/handlers/v1/responses.py b/argilla-server/src/extralit_server/api/handlers/v1/responses.py similarity index 83% rename from argilla-server/src/argilla_server/api/handlers/v1/responses.py rename to argilla-server/src/extralit_server/api/handlers/v1/responses.py index ddc389563..37cc47862 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/responses.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/responses.py @@ -18,21 +18,21 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.api.policies.v1 import ResponsePolicy, authorize -from argilla_server.api.schemas.v1.responses import ( +from extralit_server.api.policies.v1 import ResponsePolicy, authorize +from extralit_server.api.schemas.v1.responses import ( Response as ResponseSchema, ) -from argilla_server.api.schemas.v1.responses import ( +from extralit_server.api.schemas.v1.responses import ( ResponsesBulk, ResponsesBulkCreate, ResponseUpdate, ) -from argilla_server.contexts import datasets -from argilla_server.database import get_async_db -from argilla_server.models import Dataset, Record, Response, User -from argilla_server.search_engine import SearchEngine, get_search_engine -from argilla_server.security import auth -from argilla_server.use_cases.responses.upsert_responses_in_bulk import ( +from extralit_server.contexts import datasets +from extralit_server.database import get_async_db +from extralit_server.models import Dataset, Record, Response, User +from extralit_server.search_engine import SearchEngine, get_search_engine +from extralit_server.security import auth +from extralit_server.use_cases.responses.upsert_responses_in_bulk import ( UpsertResponsesInBulkUseCase, UpsertResponsesInBulkUseCaseFactory, ) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/settings.py b/argilla-server/src/extralit_server/api/handlers/v1/settings.py similarity index 88% rename from argilla-server/src/argilla_server/api/handlers/v1/settings.py rename to argilla-server/src/extralit_server/api/handlers/v1/settings.py index 98a77d887..148368925 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/settings.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/settings.py @@ -14,8 +14,8 @@ from fastapi import APIRouter -from argilla_server.api.schemas.v1.settings import Settings -from argilla_server.contexts import settings +from extralit_server.api.schemas.v1.settings import Settings +from extralit_server.contexts import settings router = APIRouter(tags=["settings"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/suggestions.py b/argilla-server/src/extralit_server/api/handlers/v1/suggestions.py similarity index 77% rename from argilla-server/src/argilla_server/api/handlers/v1/suggestions.py rename to argilla-server/src/extralit_server/api/handlers/v1/suggestions.py index 125754574..93766dd4d 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/suggestions.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/suggestions.py @@ -18,13 +18,13 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.api.policies.v1 import SuggestionPolicy, authorize -from argilla_server.api.schemas.v1.suggestions import Suggestion as SuggestionSchema -from argilla_server.contexts import datasets -from argilla_server.database import get_async_db -from argilla_server.models import Record, Suggestion, User -from argilla_server.search_engine import SearchEngine, get_search_engine -from argilla_server.security import auth +from extralit_server.api.policies.v1 import SuggestionPolicy, authorize +from extralit_server.api.schemas.v1.suggestions import Suggestion as SuggestionSchema +from extralit_server.contexts import datasets +from extralit_server.database import get_async_db +from extralit_server.models import Record, Suggestion, User +from extralit_server.search_engine import SearchEngine, get_search_engine +from extralit_server.security import auth router = APIRouter(tags=["suggestions"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/users.py b/argilla-server/src/extralit_server/api/handlers/v1/users.py similarity index 88% rename from argilla-server/src/argilla_server/api/handlers/v1/users.py rename to argilla-server/src/extralit_server/api/handlers/v1/users.py index 728d497eb..a0285dec0 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/users.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/users.py @@ -17,14 +17,14 @@ from fastapi import APIRouter, Depends, Request, Security, status from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.api.policies.v1 import UserPolicy, authorize -from argilla_server.api.schemas.v1.users import User as UserSchema -from argilla_server.api.schemas.v1.users import UserCreate, Users, UserUpdate -from argilla_server.api.schemas.v1.workspaces import Workspaces -from argilla_server.contexts import accounts -from argilla_server.database import get_async_db -from argilla_server.models import User -from argilla_server.security import auth +from extralit_server.api.policies.v1 import UserPolicy, authorize +from extralit_server.api.schemas.v1.users import User as UserSchema +from extralit_server.api.schemas.v1.users import UserCreate, Users, UserUpdate +from extralit_server.api.schemas.v1.workspaces import Workspaces +from extralit_server.contexts import accounts +from extralit_server.database import get_async_db +from extralit_server.models import User +from extralit_server.security import auth router = APIRouter(tags=["users"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/vectors_settings.py b/argilla-server/src/extralit_server/api/handlers/v1/vectors_settings.py similarity index 82% rename from argilla-server/src/argilla_server/api/handlers/v1/vectors_settings.py rename to argilla-server/src/extralit_server/api/handlers/v1/vectors_settings.py index 511e9a5b9..6620bd3b4 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/vectors_settings.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/vectors_settings.py @@ -18,13 +18,13 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.api.policies.v1 import VectorSettingsPolicy, authorize -from argilla_server.api.schemas.v1.vector_settings import VectorSettings as VectorSettingsSchema -from argilla_server.api.schemas.v1.vector_settings import VectorSettingsUpdate -from argilla_server.contexts import datasets -from argilla_server.database import get_async_db -from argilla_server.models import User, VectorSettings -from argilla_server.security import auth +from extralit_server.api.policies.v1 import VectorSettingsPolicy, authorize +from extralit_server.api.schemas.v1.vector_settings import VectorSettings as VectorSettingsSchema +from extralit_server.api.schemas.v1.vector_settings import VectorSettingsUpdate +from extralit_server.contexts import datasets +from extralit_server.database import get_async_db +from extralit_server.models import User, VectorSettings +from extralit_server.security import auth router = APIRouter(tags=["vectors-settings"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/webhooks.py b/argilla-server/src/extralit_server/api/handlers/v1/webhooks.py similarity index 87% rename from argilla-server/src/argilla_server/api/handlers/v1/webhooks.py rename to argilla-server/src/extralit_server/api/handlers/v1/webhooks.py index 11ca71554..f1c55b334 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/webhooks.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/webhooks.py @@ -16,19 +16,19 @@ from sqlalchemy.ext.asyncio import AsyncSession from fastapi import APIRouter, Depends, Security, status -from argilla_server.database import get_async_db -from argilla_server.api.policies.v1 import WebhookPolicy, authorize -from argilla_server.webhooks.v1.ping import notify_ping_event -from argilla_server.security import auth -from argilla_server.models import User -from argilla_server.api.schemas.v1.webhooks import ( +from extralit_server.database import get_async_db +from extralit_server.api.policies.v1 import WebhookPolicy, authorize +from extralit_server.webhooks.v1.ping import notify_ping_event +from extralit_server.security import auth +from extralit_server.models import User +from extralit_server.api.schemas.v1.webhooks import ( WebhookUpdate as WebhookUpdateSchema, WebhookCreate as WebhookCreateSchema, Webhooks as WebhooksSchema, Webhook as WebhookSchema, ) -from argilla_server.contexts import webhooks -from argilla_server.models import Webhook +from extralit_server.contexts import webhooks +from extralit_server.models import Webhook router = APIRouter(tags=["webhooks"]) diff --git a/argilla-server/src/argilla_server/api/handlers/v1/workspaces.py b/argilla-server/src/extralit_server/api/handlers/v1/workspaces.py similarity index 89% rename from argilla-server/src/argilla_server/api/handlers/v1/workspaces.py rename to argilla-server/src/extralit_server/api/handlers/v1/workspaces.py index a796391d2..0dedfd9c1 100644 --- a/argilla-server/src/argilla_server/api/handlers/v1/workspaces.py +++ b/argilla-server/src/extralit_server/api/handlers/v1/workspaces.py @@ -19,23 +19,23 @@ from sqlalchemy.ext.asyncio import AsyncSession from minio import Minio -from argilla_server.api.policies.v1 import WorkspacePolicy, WorkspaceUserPolicy, authorize -from argilla_server.api.schemas.v1.users import User as UserSchema -from argilla_server.api.schemas.v1.users import Users -from argilla_server.api.schemas.v1.workspaces import ( +from extralit_server.api.policies.v1 import WorkspacePolicy, WorkspaceUserPolicy, authorize +from extralit_server.api.schemas.v1.users import User as UserSchema +from extralit_server.api.schemas.v1.users import Users +from extralit_server.api.schemas.v1.workspaces import ( Workspace as WorkspaceSchema, ) -from argilla_server.api.schemas.v1.workspaces import ( +from extralit_server.api.schemas.v1.workspaces import ( WorkspaceCreate, Workspaces, WorkspaceUserCreate, ) -from argilla_server.contexts import accounts, files -from argilla_server.database import get_async_db -from argilla_server.errors import GenericServerError -from argilla_server.errors.future import NotFoundError, UnprocessableEntityError, NotUniqueError -from argilla_server.models import User, Workspace, WorkspaceUser -from argilla_server.security import auth +from extralit_server.contexts import accounts, files +from extralit_server.database import get_async_db +from extralit_server.errors import GenericServerError +from extralit_server.errors.future import NotFoundError, UnprocessableEntityError, NotUniqueError +from extralit_server.models import User, Workspace, WorkspaceUser +from extralit_server.security import auth router = APIRouter(tags=["workspaces"]) diff --git a/argilla-server/src/argilla_server/api/policies/__init__.py b/argilla-server/src/extralit_server/api/policies/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/api/policies/__init__.py rename to argilla-server/src/extralit_server/api/policies/__init__.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/__init__.py b/argilla-server/src/extralit_server/api/policies/v1/__init__.py new file mode 100644 index 000000000..0b1f2f15b --- /dev/null +++ b/argilla-server/src/extralit_server/api/policies/v1/__init__.py @@ -0,0 +1,50 @@ +# Copyright 2021-present, the Recognai S.L. team. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from extralit_server.api.policies.v1.commons import authorize, is_authorized +from extralit_server.api.policies.v1.dataset_policy import DatasetPolicy +from extralit_server.api.policies.v1.field_policy import FieldPolicy +from extralit_server.api.policies.v1.metadata_property_policy import MetadataPropertyPolicy +from extralit_server.api.policies.v1.question_policy import QuestionPolicy +from extralit_server.api.policies.v1.record_policy import RecordPolicy +from extralit_server.api.policies.v1.response_policy import ResponsePolicy +from extralit_server.api.policies.v1.suggestion_policy import SuggestionPolicy +from extralit_server.api.policies.v1.user_policy import UserPolicy +from extralit_server.api.policies.v1.vector_settings_policy import VectorSettingsPolicy +from extralit_server.api.policies.v1.workspace_policy import WorkspacePolicy +from extralit_server.api.policies.v1.workspace_user_policy import WorkspaceUserPolicy +from extralit_server.api.policies.v1.webhook_policy import WebhookPolicy +from extralit_server.api.policies.v1.job_policy import JobPolicy +from extralit_server.api.policies.v1.file_policy import FilePolicy +from extralit_server.api.policies.v1.document_policy import DocumentPolicy + +__all__ = [ + "DatasetPolicy", + "FieldPolicy", + "MetadataPropertyPolicy", + "QuestionPolicy", + "RecordPolicy", + "ResponsePolicy", + "SuggestionPolicy", + "UserPolicy", + "VectorSettingsPolicy", + "WorkspacePolicy", + "WorkspaceUserPolicy", + "WebhookPolicy", + "JobPolicy", + "FilePolicy", + "DocumentPolicy", + "authorize", + "is_authorized", +] diff --git a/argilla-server/src/argilla_server/api/policies/v1/commons.py b/argilla-server/src/extralit_server/api/policies/v1/commons.py similarity index 90% rename from argilla-server/src/argilla_server/api/policies/v1/commons.py rename to argilla-server/src/extralit_server/api/policies/v1/commons.py index d9326c7fc..ac1a75f7c 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/commons.py +++ b/argilla-server/src/extralit_server/api/policies/v1/commons.py @@ -14,8 +14,8 @@ from typing import Awaitable, Callable -from argilla_server.errors import ForbiddenOperationError -from argilla_server.models import User +from extralit_server.errors import ForbiddenOperationError +from extralit_server.models import User PolicyAction = Callable[[User], Awaitable[bool]] diff --git a/argilla-server/src/argilla_server/api/policies/v1/dataset_policy.py b/argilla-server/src/extralit_server/api/policies/v1/dataset_policy.py similarity index 98% rename from argilla-server/src/argilla_server/api/policies/v1/dataset_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/dataset_policy.py index e23f70130..13b0e310b 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/dataset_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/dataset_policy.py @@ -15,8 +15,8 @@ from typing import Optional from uuid import UUID -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import Dataset, User +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import Dataset, User class DatasetPolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/document_policy.py b/argilla-server/src/extralit_server/api/policies/v1/document_policy.py similarity index 94% rename from argilla-server/src/argilla_server/api/policies/v1/document_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/document_policy.py index 8e11d964b..6d78122dc 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/document_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/document_policy.py @@ -14,8 +14,8 @@ from uuid import UUID -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import User +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import User class DocumentPolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/field_policy.py b/argilla-server/src/extralit_server/api/policies/v1/field_policy.py similarity index 91% rename from argilla-server/src/argilla_server/api/policies/v1/field_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/field_policy.py index 0d92da92f..9132bb8e4 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/field_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/field_policy.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import Field, User +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import Field, User class FieldPolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/file_policy.py b/argilla-server/src/extralit_server/api/policies/v1/file_policy.py similarity index 91% rename from argilla-server/src/argilla_server/api/policies/v1/file_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/file_policy.py index 206316e9e..e931528a2 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/file_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/file_policy.py @@ -1,8 +1,8 @@ from uuid import UUID -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import User +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import User class FilePolicy: @classmethod diff --git a/argilla-server/src/argilla_server/api/policies/v1/job_policy.py b/argilla-server/src/extralit_server/api/policies/v1/job_policy.py similarity index 94% rename from argilla-server/src/argilla_server/api/policies/v1/job_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/job_policy.py index 7cab38022..670940401 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/job_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/job_policy.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.models import User +from extralit_server.models import User class JobPolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/metadata_property_policy.py b/argilla-server/src/extralit_server/api/policies/v1/metadata_property_policy.py similarity index 92% rename from argilla-server/src/argilla_server/api/policies/v1/metadata_property_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/metadata_property_policy.py index 4d8066e8a..3a0f079e3 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/metadata_property_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/metadata_property_policy.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import MetadataProperty, User +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import MetadataProperty, User class MetadataPropertyPolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/question_policy.py b/argilla-server/src/extralit_server/api/policies/v1/question_policy.py similarity index 90% rename from argilla-server/src/argilla_server/api/policies/v1/question_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/question_policy.py index 9c20fc1e8..740b7d59a 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/question_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/question_policy.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import Question, User +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import Question, User class QuestionPolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/record_policy.py b/argilla-server/src/extralit_server/api/policies/v1/record_policy.py similarity index 93% rename from argilla-server/src/argilla_server/api/policies/v1/record_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/record_policy.py index 19b48b6b9..6ace7b5b4 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/record_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/record_policy.py @@ -12,9 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.api.policies.v1.commons import PolicyAction, is_authorized -from argilla_server.api.policies.v1.metadata_property_policy import MetadataPropertyPolicy -from argilla_server.models import Record, User +from extralit_server.api.policies.v1.commons import PolicyAction, is_authorized +from extralit_server.api.policies.v1.metadata_property_policy import MetadataPropertyPolicy +from extralit_server.models import Record, User class RecordPolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/response_policy.py b/argilla-server/src/extralit_server/api/policies/v1/response_policy.py similarity index 92% rename from argilla-server/src/argilla_server/api/policies/v1/response_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/response_policy.py index d3f00d425..3b61ad2ea 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/response_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/response_policy.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import Response, User +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import Response, User class ResponsePolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/suggestion_policy.py b/argilla-server/src/extralit_server/api/policies/v1/suggestion_policy.py similarity index 88% rename from argilla-server/src/argilla_server/api/policies/v1/suggestion_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/suggestion_policy.py index f3b0dcb9d..c56e4fc86 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/suggestion_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/suggestion_policy.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import Suggestion, User +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import Suggestion, User class SuggestionPolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/user_policy.py b/argilla-server/src/extralit_server/api/policies/v1/user_policy.py similarity index 96% rename from argilla-server/src/argilla_server/api/policies/v1/user_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/user_policy.py index 3564ae5e0..8ce015e89 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/user_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/user_policy.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.models import User +from extralit_server.models import User class UserPolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/vector_settings_policy.py b/argilla-server/src/extralit_server/api/policies/v1/vector_settings_policy.py similarity index 90% rename from argilla-server/src/argilla_server/api/policies/v1/vector_settings_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/vector_settings_policy.py index a7f61cbab..7e2b54d75 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/vector_settings_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/vector_settings_policy.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import User, VectorSettings +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import User, VectorSettings class VectorSettingsPolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/webhook_policy.py b/argilla-server/src/extralit_server/api/policies/v1/webhook_policy.py similarity index 91% rename from argilla-server/src/argilla_server/api/policies/v1/webhook_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/webhook_policy.py index ed7587a3e..9eac3221d 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/webhook_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/webhook_policy.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import User +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import User class WebhookPolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/workspace_policy.py b/argilla-server/src/extralit_server/api/policies/v1/workspace_policy.py similarity index 91% rename from argilla-server/src/argilla_server/api/policies/v1/workspace_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/workspace_policy.py index 5d78e9c6b..a23c37ed9 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/workspace_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/workspace_policy.py @@ -14,8 +14,8 @@ from uuid import UUID -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import User +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import User class WorkspacePolicy: diff --git a/argilla-server/src/argilla_server/api/policies/v1/workspace_user_policy.py b/argilla-server/src/extralit_server/api/policies/v1/workspace_user_policy.py similarity index 91% rename from argilla-server/src/argilla_server/api/policies/v1/workspace_user_policy.py rename to argilla-server/src/extralit_server/api/policies/v1/workspace_user_policy.py index 59c290543..d34ecb68c 100644 --- a/argilla-server/src/argilla_server/api/policies/v1/workspace_user_policy.py +++ b/argilla-server/src/extralit_server/api/policies/v1/workspace_user_policy.py @@ -14,8 +14,8 @@ from uuid import UUID -from argilla_server.api.policies.v1.commons import PolicyAction -from argilla_server.models import User, WorkspaceUser +from extralit_server.api.policies.v1.commons import PolicyAction +from extralit_server.models import User, WorkspaceUser class WorkspaceUserPolicy: diff --git a/argilla-server/src/argilla_server/api/routes.py b/argilla-server/src/extralit_server/api/routes.py similarity index 65% rename from argilla-server/src/argilla_server/api/routes.py rename to argilla-server/src/extralit_server/api/routes.py index 6aa107a89..471cc7c63 100644 --- a/argilla-server/src/argilla_server/api/routes.py +++ b/argilla-server/src/extralit_server/api/routes.py @@ -19,64 +19,64 @@ from fastapi import FastAPI -from argilla_server._version import __version__ as argilla_version -from argilla_server.api.errors.v1.exception_handlers import add_exception_handlers as add_exception_handlers_v1 -from argilla_server.api.handlers.v1 import authentication as authentication_v1 -from argilla_server.api.handlers.v1 import ( +from extralit_server._version import __version__ as argilla_version +from extralit_server.api.errors.v1.exception_handlers import add_exception_handlers as add_exception_handlers_v1 +from extralit_server.api.handlers.v1 import authentication as authentication_v1 +from extralit_server.api.handlers.v1 import ( datasets as datasets_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( fields as fields_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( info as info_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( metadata_properties as metadata_properties_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( oauth2 as oauth2_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( questions as questions_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( records as records_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( responses as responses_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( settings as settings_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( suggestions as suggestions_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( users as users_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( vectors_settings as vectors_settings_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( workspaces as workspaces_v1, ) -from argilla_server.api.handlers.v1 import webhooks as webhooks_v1 -from argilla_server.api.handlers.v1 import jobs as jobs_v1 -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import webhooks as webhooks_v1 +from extralit_server.api.handlers.v1 import jobs as jobs_v1 +from extralit_server.api.handlers.v1 import ( documents as documents_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( files as files_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( models as models_v1, ) -from argilla_server.api.handlers.v1 import ( +from extralit_server.api.handlers.v1 import ( imports as imports_v1, ) -from argilla_server.errors.base_errors import __ALL__ -from argilla_server.errors.error_handler import APIErrorHandler +from extralit_server.errors.base_errors import __ALL__ +from extralit_server.errors.error_handler import APIErrorHandler def create_api_v1(): diff --git a/argilla-server/src/argilla_server/api/schemas/__init__.py b/argilla-server/src/extralit_server/api/schemas/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/__init__.py rename to argilla-server/src/extralit_server/api/schemas/__init__.py diff --git a/argilla-server/src/argilla_server/api/schemas/base.py b/argilla-server/src/extralit_server/api/schemas/base.py similarity index 95% rename from argilla-server/src/argilla_server/api/schemas/base.py rename to argilla-server/src/extralit_server/api/schemas/base.py index b8c6aa7f9..8e616e62d 100644 --- a/argilla-server/src/argilla_server/api/schemas/base.py +++ b/argilla-server/src/extralit_server/api/schemas/base.py @@ -14,7 +14,7 @@ from typing import Any, Dict, Set, Union -from argilla_server.pydantic_v1 import BaseModel, root_validator +from extralit_server.pydantic_v1 import BaseModel, root_validator class UpdateSchema(BaseModel): diff --git a/argilla-server/src/argilla_server/api/schemas/v1/__init__.py b/argilla-server/src/extralit_server/api/schemas/v1/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/v1/__init__.py rename to argilla-server/src/extralit_server/api/schemas/v1/__init__.py diff --git a/argilla-server/src/argilla_server/api/schemas/v1/chat.py b/argilla-server/src/extralit_server/api/schemas/v1/chat.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/v1/chat.py rename to argilla-server/src/extralit_server/api/schemas/v1/chat.py diff --git a/argilla-server/src/argilla_server/api/schemas/v1/commons.py b/argilla-server/src/extralit_server/api/schemas/v1/commons.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/v1/commons.py rename to argilla-server/src/extralit_server/api/schemas/v1/commons.py diff --git a/argilla-server/src/argilla_server/api/schemas/v1/datasets.py b/argilla-server/src/extralit_server/api/schemas/v1/datasets.py similarity index 97% rename from argilla-server/src/argilla_server/api/schemas/v1/datasets.py rename to argilla-server/src/extralit_server/api/schemas/v1/datasets.py index 077d3a2f8..d98acb5e0 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/datasets.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/datasets.py @@ -18,8 +18,8 @@ from pydantic.v1.utils import GetterDict -from argilla_server.api.schemas.v1.commons import UpdateSchema -from argilla_server.enums import DatasetDistributionStrategy, DatasetStatus +from extralit_server.api.schemas.v1.commons import UpdateSchema +from extralit_server.enums import DatasetDistributionStrategy, DatasetStatus from pydantic import BaseModel, Field, constr, ConfigDict, model_validator try: diff --git a/argilla-server/src/argilla_server/api/schemas/v1/documents.py b/argilla-server/src/extralit_server/api/schemas/v1/documents.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/v1/documents.py rename to argilla-server/src/extralit_server/api/schemas/v1/documents.py diff --git a/argilla-server/src/argilla_server/api/schemas/v1/fields.py b/argilla-server/src/extralit_server/api/schemas/v1/fields.py similarity index 97% rename from argilla-server/src/argilla_server/api/schemas/v1/fields.py rename to argilla-server/src/extralit_server/api/schemas/v1/fields.py index 7460798a8..8ecb15bfe 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/fields.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/fields.py @@ -16,8 +16,8 @@ from typing import Annotated, List, Literal, Optional, Union from uuid import UUID -from argilla_server.api.schemas.v1.commons import UpdateSchema -from argilla_server.enums import FieldType +from extralit_server.api.schemas.v1.commons import UpdateSchema +from extralit_server.enums import FieldType from pydantic import BaseModel, constr, Field as PydanticField, ConfigDict FIELD_CREATE_NAME_MIN_LENGTH = 1 diff --git a/argilla-server/src/argilla_server/api/schemas/v1/files.py b/argilla-server/src/extralit_server/api/schemas/v1/files.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/v1/files.py rename to argilla-server/src/extralit_server/api/schemas/v1/files.py diff --git a/argilla-server/src/argilla_server/api/schemas/v1/imports.py b/argilla-server/src/extralit_server/api/schemas/v1/imports.py similarity index 98% rename from argilla-server/src/argilla_server/api/schemas/v1/imports.py rename to argilla-server/src/extralit_server/api/schemas/v1/imports.py index 817621a7f..654fff606 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/imports.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/imports.py @@ -18,7 +18,7 @@ from pydantic import BaseModel, Field from enum import Enum -from argilla_server.api.schemas.v1.documents import DocumentCreate +from extralit_server.api.schemas.v1.documents import DocumentCreate class ImportStatus(str, Enum): diff --git a/argilla-server/src/argilla_server/api/schemas/v1/info.py b/argilla-server/src/extralit_server/api/schemas/v1/info.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/v1/info.py rename to argilla-server/src/extralit_server/api/schemas/v1/info.py diff --git a/argilla-server/src/argilla_server/api/schemas/v1/jobs.py b/argilla-server/src/extralit_server/api/schemas/v1/jobs.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/v1/jobs.py rename to argilla-server/src/extralit_server/api/schemas/v1/jobs.py diff --git a/argilla-server/src/argilla_server/api/schemas/v1/metadata_properties.py b/argilla-server/src/extralit_server/api/schemas/v1/metadata_properties.py similarity index 97% rename from argilla-server/src/argilla_server/api/schemas/v1/metadata_properties.py rename to argilla-server/src/extralit_server/api/schemas/v1/metadata_properties.py index bbb26bf1f..c5a0cb4b9 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/metadata_properties.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/metadata_properties.py @@ -16,8 +16,8 @@ from typing import Any, Dict, Generic, List, Literal, Optional, TypeVar, Union from uuid import UUID -from argilla_server.api.schemas.v1.commons import UpdateSchema -from argilla_server.enums import MetadataPropertyType +from extralit_server.api.schemas.v1.commons import UpdateSchema +from extralit_server.enums import MetadataPropertyType from pydantic import BaseModel, Field, constr, ConfigDict, field_validator, model_validator FLOAT_METADATA_METRICS_PRECISION = 5 diff --git a/argilla-server/src/argilla_server/api/schemas/v1/oauth2.py b/argilla-server/src/extralit_server/api/schemas/v1/oauth2.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/v1/oauth2.py rename to argilla-server/src/extralit_server/api/schemas/v1/oauth2.py diff --git a/argilla-server/src/argilla_server/api/schemas/v1/questions.py b/argilla-server/src/extralit_server/api/schemas/v1/questions.py similarity index 98% rename from argilla-server/src/argilla_server/api/schemas/v1/questions.py rename to argilla-server/src/extralit_server/api/schemas/v1/questions.py index e6240de7a..d31c0acf7 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/questions.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/questions.py @@ -16,11 +16,11 @@ from typing import List, Literal, Optional, Union from uuid import UUID -from argilla_server.api.schemas.v1.commons import UpdateSchema -from argilla_server.api.schemas.v1.fields import FieldName -from argilla_server.enums import OptionsOrder, QuestionType +from extralit_server.api.schemas.v1.commons import UpdateSchema +from extralit_server.api.schemas.v1.fields import FieldName +from extralit_server.enums import OptionsOrder, QuestionType from pydantic import BaseModel, Field, conlist, constr, ConfigDict, model_validator -from argilla_server.settings import settings +from extralit_server.settings import settings try: from typing import Annotated diff --git a/argilla-server/src/argilla_server/api/schemas/v1/records.py b/argilla-server/src/extralit_server/api/schemas/v1/records.py similarity index 95% rename from argilla-server/src/argilla_server/api/schemas/v1/records.py rename to argilla-server/src/extralit_server/api/schemas/v1/records.py index ca5195951..89945a137 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/records.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/records.py @@ -16,12 +16,12 @@ from typing import Annotated, Any, Dict, List, Literal, Optional, Union from uuid import UUID -from argilla_server.api.schemas.v1.chat import ChatFieldValue -from argilla_server.api.schemas.v1.commons import UpdateSchema -from argilla_server.api.schemas.v1.metadata_properties import MetadataPropertyName -from argilla_server.api.schemas.v1.responses import Response, ResponseFilterScope, UserResponseCreate -from argilla_server.api.schemas.v1.suggestions import Suggestion, SuggestionCreate, SuggestionFilterScope -from argilla_server.enums import RecordInclude, RecordSortField, SimilarityOrder, SortOrder, RecordStatus +from extralit_server.api.schemas.v1.chat import ChatFieldValue +from extralit_server.api.schemas.v1.commons import UpdateSchema +from extralit_server.api.schemas.v1.metadata_properties import MetadataPropertyName +from extralit_server.api.schemas.v1.responses import Response, ResponseFilterScope, UserResponseCreate +from extralit_server.api.schemas.v1.suggestions import Suggestion, SuggestionCreate, SuggestionFilterScope +from extralit_server.enums import RecordInclude, RecordSortField, SimilarityOrder, SortOrder, RecordStatus from pydantic import ( BaseModel, Field, @@ -32,7 +32,7 @@ field_validator, ) from pydantic.v1.utils import GetterDict -from argilla_server.search_engine import TextQuery +from extralit_server.search_engine import TextQuery RECORDS_CREATE_MIN_ITEMS = 1 RECORDS_CREATE_MAX_ITEMS = 1000 diff --git a/argilla-server/src/argilla_server/api/schemas/v1/records_bulk.py b/argilla-server/src/extralit_server/api/schemas/v1/records_bulk.py similarity index 95% rename from argilla-server/src/argilla_server/api/schemas/v1/records_bulk.py rename to argilla-server/src/extralit_server/api/schemas/v1/records_bulk.py index b225dca07..51b4d7313 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/records_bulk.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/records_bulk.py @@ -17,7 +17,7 @@ from pydantic import BaseModel, Field, field_validator -from argilla_server.api.schemas.v1.records import Record, RecordCreate, RecordUpsert +from extralit_server.api.schemas.v1.records import Record, RecordCreate, RecordUpsert RECORDS_BULK_CREATE_MIN_ITEMS = 1 RECORDS_BULK_CREATE_MAX_ITEMS = 500 diff --git a/argilla-server/src/argilla_server/api/schemas/v1/responses.py b/argilla-server/src/extralit_server/api/schemas/v1/responses.py similarity index 98% rename from argilla-server/src/argilla_server/api/schemas/v1/responses.py rename to argilla-server/src/extralit_server/api/schemas/v1/responses.py index 3b2326b50..f7f8d5960 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/responses.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/responses.py @@ -18,8 +18,8 @@ from fastapi import Body -from argilla_server.api.schemas.v1.questions import QuestionName -from argilla_server.enums import ResponseStatus +from extralit_server.api.schemas.v1.questions import QuestionName +from extralit_server.enums import ResponseStatus from pydantic import BaseModel, Field, StrictInt, StrictStr, root_validator, ConfigDict, model_validator RESPONSES_BULK_CREATE_MIN_ITEMS = 1 diff --git a/argilla-server/src/argilla_server/api/schemas/v1/settings.py b/argilla-server/src/extralit_server/api/schemas/v1/settings.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/v1/settings.py rename to argilla-server/src/extralit_server/api/schemas/v1/settings.py diff --git a/argilla-server/src/argilla_server/api/schemas/v1/suggestions.py b/argilla-server/src/extralit_server/api/schemas/v1/suggestions.py similarity index 95% rename from argilla-server/src/argilla_server/api/schemas/v1/suggestions.py rename to argilla-server/src/extralit_server/api/schemas/v1/suggestions.py index c5a6bf2d8..2ec7ab8b0 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/suggestions.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/suggestions.py @@ -18,8 +18,8 @@ from pydantic import BaseModel, Field, ConfigDict, field_validator -from argilla_server.api.schemas.v1.questions import QuestionName -from argilla_server.api.schemas.v1.responses import ( +from extralit_server.api.schemas.v1.questions import QuestionName +from extralit_server.api.schemas.v1.responses import ( MultiLabelSelectionQuestionResponseValue, RankingQuestionResponseValue, RatingQuestionResponseValue, @@ -27,7 +27,7 @@ TextAndLabelSelectionQuestionResponseValue, TableQuestionResponseValue, ) -from argilla_server.enums import SuggestionType +from extralit_server.enums import SuggestionType AGENT_REGEX = r"^[a-zA-Z0-9-_:\.\/\s]*[a-zA-Z0-9][a-zA-Z0-9-_:\.\/\s]*$" AGENT_MIN_LENGTH = 1 diff --git a/argilla-server/src/argilla_server/api/schemas/v1/users.py b/argilla-server/src/extralit_server/api/schemas/v1/users.py similarity index 95% rename from argilla-server/src/argilla_server/api/schemas/v1/users.py rename to argilla-server/src/extralit_server/api/schemas/v1/users.py index 5bb7d3470..4e0f33d2a 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/users.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/users.py @@ -18,8 +18,8 @@ from pydantic import BaseModel, Field, constr, ConfigDict -from argilla_server.api.schemas.v1.commons import UpdateSchema -from argilla_server.enums import UserRole +from extralit_server.api.schemas.v1.commons import UpdateSchema +from extralit_server.enums import UserRole USER_PASSWORD_MIN_LENGTH = 8 USER_PASSWORD_MAX_LENGTH = 100 diff --git a/argilla-server/src/argilla_server/api/schemas/v1/vector_settings.py b/argilla-server/src/extralit_server/api/schemas/v1/vector_settings.py similarity index 94% rename from argilla-server/src/argilla_server/api/schemas/v1/vector_settings.py rename to argilla-server/src/extralit_server/api/schemas/v1/vector_settings.py index d7fab06f5..3bcaf6185 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/vector_settings.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/vector_settings.py @@ -16,8 +16,8 @@ from typing import Annotated, List, Optional from uuid import UUID -from argilla_server.api.schemas.v1.commons import UpdateSchema -from argilla_server.errors.future import UnprocessableEntityError +from extralit_server.api.schemas.v1.commons import UpdateSchema +from extralit_server.errors.future import UnprocessableEntityError from pydantic import BaseModel, Field, PositiveInt, constr, ConfigDict VECTOR_SETTINGS_CREATE_NAME_MIN_LENGTH = 1 diff --git a/argilla-server/src/argilla_server/api/schemas/v1/vectors.py b/argilla-server/src/extralit_server/api/schemas/v1/vectors.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/v1/vectors.py rename to argilla-server/src/extralit_server/api/schemas/v1/vectors.py diff --git a/argilla-server/src/argilla_server/api/schemas/v1/webhooks.py b/argilla-server/src/extralit_server/api/schemas/v1/webhooks.py similarity index 95% rename from argilla-server/src/argilla_server/api/schemas/v1/webhooks.py rename to argilla-server/src/extralit_server/api/schemas/v1/webhooks.py index cc9171ef7..954c56993 100644 --- a/argilla-server/src/argilla_server/api/schemas/v1/webhooks.py +++ b/argilla-server/src/extralit_server/api/schemas/v1/webhooks.py @@ -18,8 +18,8 @@ from pydantic import BaseModel, Field, HttpUrl, ConfigDict, field_validator, field_serializer -from argilla_server.webhooks.v1.enums import WebhookEvent -from argilla_server.api.schemas.v1.commons import UpdateSchema +from extralit_server.webhooks.v1.enums import WebhookEvent +from extralit_server.api.schemas.v1.commons import UpdateSchema WEBHOOK_EVENTS_MIN_ITEMS = 1 diff --git a/argilla-server/src/argilla_server/api/schemas/v1/workspaces.py b/argilla-server/src/extralit_server/api/schemas/v1/workspaces.py similarity index 100% rename from argilla-server/src/argilla_server/api/schemas/v1/workspaces.py rename to argilla-server/src/extralit_server/api/schemas/v1/workspaces.py diff --git a/argilla-server/src/argilla_server/bulk/__init__.py b/argilla-server/src/extralit_server/bulk/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/bulk/__init__.py rename to argilla-server/src/extralit_server/bulk/__init__.py diff --git a/argilla-server/src/argilla_server/bulk/records_bulk.py b/argilla-server/src/extralit_server/bulk/records_bulk.py similarity index 89% rename from argilla-server/src/argilla_server/bulk/records_bulk.py rename to argilla-server/src/extralit_server/bulk/records_bulk.py index d7d1fdf8d..6fade2c27 100644 --- a/argilla-server/src/argilla_server/bulk/records_bulk.py +++ b/argilla-server/src/extralit_server/bulk/records_bulk.py @@ -21,30 +21,30 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.api.schemas.v1.records import RecordCreate, RecordUpsert -from argilla_server.api.schemas.v1.records_bulk import ( +from extralit_server.api.schemas.v1.records import RecordCreate, RecordUpsert +from extralit_server.api.schemas.v1.records_bulk import ( RecordsBulk, RecordsBulkCreate, RecordsBulkUpsert, RecordsBulkWithUpdatedItemIds, ) -from argilla_server.api.schemas.v1.responses import UserResponseCreate -from argilla_server.api.schemas.v1.suggestions import SuggestionCreate -from argilla_server.models.database import DatasetUser -from argilla_server.webhooks.v1.enums import RecordEvent -from argilla_server.webhooks.v1.records import notify_record_event as notify_record_event_v1 -from argilla_server.contexts import distribution -from argilla_server.contexts.records import ( +from extralit_server.api.schemas.v1.responses import UserResponseCreate +from extralit_server.api.schemas.v1.suggestions import SuggestionCreate +from extralit_server.models.database import DatasetUser +from extralit_server.webhooks.v1.enums import RecordEvent +from extralit_server.webhooks.v1.records import notify_record_event as notify_record_event_v1 +from extralit_server.contexts import distribution +from extralit_server.contexts.records import ( fetch_records_by_external_ids_as_dict, fetch_records_by_ids_as_dict, ) -from argilla_server.errors.future import UnprocessableEntityError -from argilla_server.models import Dataset, Record, Response, Suggestion, Vector -from argilla_server.models.database import DatasetUser -from argilla_server.search_engine import SearchEngine -from argilla_server.validators.records import RecordsBulkCreateValidator, RecordUpsertValidator -from argilla_server.webhooks.v1.enums import RecordEvent -from argilla_server.webhooks.v1.records import notify_record_event as notify_record_event_v1 +from extralit_server.errors.future import UnprocessableEntityError +from extralit_server.models import Dataset, Record, Response, Suggestion, Vector +from extralit_server.models.database import DatasetUser +from extralit_server.search_engine import SearchEngine +from extralit_server.validators.records import RecordsBulkCreateValidator, RecordUpsertValidator +from extralit_server.webhooks.v1.enums import RecordEvent +from extralit_server.webhooks.v1.records import notify_record_event as notify_record_event_v1 class CreateRecordsBulk: diff --git a/argilla-server/src/argilla_server/cli/__init__.py b/argilla-server/src/extralit_server/cli/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/cli/__init__.py rename to argilla-server/src/extralit_server/cli/__init__.py diff --git a/argilla-server/src/argilla_server/cli/__main__.py b/argilla-server/src/extralit_server/cli/__main__.py similarity index 100% rename from argilla-server/src/argilla_server/cli/__main__.py rename to argilla-server/src/extralit_server/cli/__main__.py diff --git a/argilla-server/src/argilla_server/cli/database/__init__.py b/argilla-server/src/extralit_server/cli/database/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/cli/database/__init__.py rename to argilla-server/src/extralit_server/cli/database/__init__.py diff --git a/argilla-server/src/argilla_server/cli/database/__main__.py b/argilla-server/src/extralit_server/cli/database/__main__.py similarity index 100% rename from argilla-server/src/argilla_server/cli/database/__main__.py rename to argilla-server/src/extralit_server/cli/database/__main__.py diff --git a/argilla-server/src/argilla_server/cli/database/migrate.py b/argilla-server/src/extralit_server/cli/database/migrate.py similarity index 95% rename from argilla-server/src/argilla_server/cli/database/migrate.py rename to argilla-server/src/extralit_server/cli/database/migrate.py index 40d8f97fc..4e849b296 100644 --- a/argilla-server/src/argilla_server/cli/database/migrate.py +++ b/argilla-server/src/extralit_server/cli/database/migrate.py @@ -20,7 +20,7 @@ from alembic.script import ScriptDirectory from alembic.util import CommandError -from argilla_server.database import ALEMBIC_CONFIG_FILE, TAGGED_REVISIONS +from extralit_server.database import ALEMBIC_CONFIG_FILE, TAGGED_REVISIONS from . import utils diff --git a/argilla-server/src/argilla_server/cli/database/revisions.py b/argilla-server/src/extralit_server/cli/database/revisions.py similarity index 94% rename from argilla-server/src/argilla_server/cli/database/revisions.py rename to argilla-server/src/extralit_server/cli/database/revisions.py index 05598f256..6a43bb72e 100644 --- a/argilla-server/src/argilla_server/cli/database/revisions.py +++ b/argilla-server/src/extralit_server/cli/database/revisions.py @@ -15,7 +15,7 @@ import alembic.config import typer -from argilla_server.database import ALEMBIC_CONFIG_FILE, TAGGED_REVISIONS +from extralit_server.database import ALEMBIC_CONFIG_FILE, TAGGED_REVISIONS from . import utils diff --git a/argilla-server/src/argilla_server/cli/database/users/__init__.py b/argilla-server/src/extralit_server/cli/database/users/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/cli/database/users/__init__.py rename to argilla-server/src/extralit_server/cli/database/users/__init__.py diff --git a/argilla-server/src/argilla_server/cli/database/users/__main__.py b/argilla-server/src/extralit_server/cli/database/users/__main__.py similarity index 100% rename from argilla-server/src/argilla_server/cli/database/users/__main__.py rename to argilla-server/src/extralit_server/cli/database/users/__main__.py diff --git a/argilla-server/src/argilla_server/cli/database/users/create.py b/argilla-server/src/extralit_server/cli/database/users/create.py similarity index 94% rename from argilla-server/src/argilla_server/cli/database/users/create.py rename to argilla-server/src/extralit_server/cli/database/users/create.py index 275741614..90348dd13 100644 --- a/argilla-server/src/argilla_server/cli/database/users/create.py +++ b/argilla-server/src/extralit_server/cli/database/users/create.py @@ -16,11 +16,11 @@ import typer -from argilla_server.api.schemas.v1.users import USER_PASSWORD_MIN_LENGTH, UserCreate -from argilla_server.api.schemas.v1.workspaces import WorkspaceCreate -from argilla_server.contexts import accounts -from argilla_server.database import AsyncSessionLocal -from argilla_server.models import User, UserRole +from extralit_server.api.schemas.v1.users import USER_PASSWORD_MIN_LENGTH, UserCreate +from extralit_server.api.schemas.v1.workspaces import WorkspaceCreate +from extralit_server.contexts import accounts +from extralit_server.database import AsyncSessionLocal +from extralit_server.models import User, UserRole from pydantic import constr from .utils import get_or_new_workspace diff --git a/argilla-server/src/argilla_server/cli/database/users/create_default.py b/argilla-server/src/extralit_server/cli/database/users/create_default.py similarity index 90% rename from argilla-server/src/argilla_server/cli/database/users/create_default.py rename to argilla-server/src/extralit_server/cli/database/users/create_default.py index 27786a042..478787fc1 100644 --- a/argilla-server/src/argilla_server/cli/database/users/create_default.py +++ b/argilla-server/src/extralit_server/cli/database/users/create_default.py @@ -15,10 +15,10 @@ import typer -from argilla_server.constants import DEFAULT_API_KEY, DEFAULT_PASSWORD, DEFAULT_USERNAME -from argilla_server.contexts import accounts -from argilla_server.database import AsyncSessionLocal -from argilla_server.models import User, UserRole +from extralit_server.constants import DEFAULT_API_KEY, DEFAULT_PASSWORD, DEFAULT_USERNAME +from extralit_server.contexts import accounts +from extralit_server.database import AsyncSessionLocal +from extralit_server.models import User, UserRole from .utils import get_or_new_workspace diff --git a/argilla-server/src/argilla_server/cli/database/users/migrate.py b/argilla-server/src/extralit_server/cli/database/users/migrate.py similarity index 97% rename from argilla-server/src/argilla_server/cli/database/users/migrate.py rename to argilla-server/src/extralit_server/cli/database/users/migrate.py index 3702d8ebb..7e62d2d93 100644 --- a/argilla-server/src/argilla_server/cli/database/users/migrate.py +++ b/argilla-server/src/extralit_server/cli/database/users/migrate.py @@ -18,8 +18,8 @@ import typer import yaml -from argilla_server.database import AsyncSessionLocal -from argilla_server.models import User, UserRole +from extralit_server.database import AsyncSessionLocal +from extralit_server.models import User, UserRole from pydantic import BaseModel, Field, constr from .utils import get_or_new_workspace diff --git a/argilla-server/src/argilla_server/cli/database/users/update.py b/argilla-server/src/extralit_server/cli/database/users/update.py similarity index 92% rename from argilla-server/src/argilla_server/cli/database/users/update.py rename to argilla-server/src/extralit_server/cli/database/users/update.py index 081cbbe2c..20dfcf481 100644 --- a/argilla-server/src/argilla_server/cli/database/users/update.py +++ b/argilla-server/src/extralit_server/cli/database/users/update.py @@ -15,9 +15,9 @@ import typer -from argilla_server.contexts import accounts -from argilla_server.database import AsyncSessionLocal -from argilla_server.models import UserRole +from extralit_server.contexts import accounts +from extralit_server.database import AsyncSessionLocal +from extralit_server.models import UserRole async def _update(username: str, role: UserRole): diff --git a/argilla-server/src/argilla_server/cli/database/users/utils.py b/argilla-server/src/extralit_server/cli/database/users/utils.py similarity index 95% rename from argilla-server/src/argilla_server/cli/database/users/utils.py rename to argilla-server/src/extralit_server/cli/database/users/utils.py index f36466a69..6ea7e757b 100644 --- a/argilla-server/src/argilla_server/cli/database/users/utils.py +++ b/argilla-server/src/extralit_server/cli/database/users/utils.py @@ -16,7 +16,7 @@ from sqlalchemy import select -from argilla_server.models import Workspace +from extralit_server.models import Workspace if TYPE_CHECKING: from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/src/argilla_server/cli/database/utils.py b/argilla-server/src/extralit_server/cli/database/utils.py similarity index 100% rename from argilla-server/src/argilla_server/cli/database/utils.py rename to argilla-server/src/extralit_server/cli/database/utils.py diff --git a/argilla-server/src/argilla_server/cli/rich.py b/argilla-server/src/extralit_server/cli/rich.py similarity index 100% rename from argilla-server/src/argilla_server/cli/rich.py rename to argilla-server/src/extralit_server/cli/rich.py diff --git a/argilla-server/src/argilla_server/cli/search_engine/__init__.py b/argilla-server/src/extralit_server/cli/search_engine/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/cli/search_engine/__init__.py rename to argilla-server/src/extralit_server/cli/search_engine/__init__.py diff --git a/argilla-server/src/argilla_server/cli/search_engine/__main__.py b/argilla-server/src/extralit_server/cli/search_engine/__main__.py similarity index 100% rename from argilla-server/src/argilla_server/cli/search_engine/__main__.py rename to argilla-server/src/extralit_server/cli/search_engine/__main__.py diff --git a/argilla-server/src/argilla_server/cli/search_engine/reindex.py b/argilla-server/src/extralit_server/cli/search_engine/reindex.py similarity index 96% rename from argilla-server/src/argilla_server/cli/search_engine/reindex.py rename to argilla-server/src/extralit_server/cli/search_engine/reindex.py index 686374f8a..2c5e481b5 100644 --- a/argilla-server/src/argilla_server/cli/search_engine/reindex.py +++ b/argilla-server/src/extralit_server/cli/search_engine/reindex.py @@ -22,10 +22,10 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.cli.rich import echo_in_panel -from argilla_server.database import AsyncSessionLocal -from argilla_server.models import Dataset, Record, Response, Suggestion -from argilla_server.search_engine import SearchEngine, get_search_engine +from extralit_server.cli.rich import echo_in_panel +from extralit_server.database import AsyncSessionLocal +from extralit_server.models import Dataset, Record, Response, Suggestion +from extralit_server.search_engine import SearchEngine, get_search_engine class Reindexer: diff --git a/argilla-server/src/argilla_server/cli/start.py b/argilla-server/src/extralit_server/cli/start.py similarity index 100% rename from argilla-server/src/argilla_server/cli/start.py rename to argilla-server/src/extralit_server/cli/start.py diff --git a/argilla-server/src/argilla_server/cli/worker.py b/argilla-server/src/extralit_server/cli/worker.py similarity index 89% rename from argilla-server/src/argilla_server/cli/worker.py rename to argilla-server/src/extralit_server/cli/worker.py index cce9330ed..098ea8095 100644 --- a/argilla-server/src/argilla_server/cli/worker.py +++ b/argilla-server/src/extralit_server/cli/worker.py @@ -16,7 +16,7 @@ from typing import List -from argilla_server.jobs.queues import DEFAULT_QUEUE, HIGH_QUEUE +from extralit_server.jobs.queues import DEFAULT_QUEUE, HIGH_QUEUE DEFAULT_NUM_WORKERS = 2 @@ -26,7 +26,7 @@ def worker( num_workers: int = typer.Option(DEFAULT_NUM_WORKERS, help="Number of workers to start"), ) -> None: from rq.worker_pool import WorkerPool - from argilla_server.jobs.queues import REDIS_CONNECTION + from extralit_server.jobs.queues import REDIS_CONNECTION worker_pool = WorkerPool( connection=REDIS_CONNECTION, diff --git a/argilla-server/src/argilla_server/constants.py b/argilla-server/src/extralit_server/constants.py similarity index 100% rename from argilla-server/src/argilla_server/constants.py rename to argilla-server/src/extralit_server/constants.py diff --git a/argilla-server/src/argilla_server/contexts/__init__.py b/argilla-server/src/extralit_server/contexts/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/contexts/__init__.py rename to argilla-server/src/extralit_server/contexts/__init__.py diff --git a/argilla-server/src/argilla_server/contexts/accounts.py b/argilla-server/src/extralit_server/contexts/accounts.py similarity index 94% rename from argilla-server/src/argilla_server/contexts/accounts.py rename to argilla-server/src/extralit_server/contexts/accounts.py index 2e9321dad..fe063d1db 100644 --- a/argilla-server/src/argilla_server/contexts/accounts.py +++ b/argilla-server/src/extralit_server/contexts/accounts.py @@ -20,13 +20,13 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.contexts import datasets -from argilla_server.enums import UserRole -from argilla_server.errors.future import NotUniqueError, UnprocessableEntityError -from argilla_server.models import User, Workspace, WorkspaceUser -from argilla_server.security.authentication.jwt import JWT -from argilla_server.security.authentication.userinfo import UserInfo -from argilla_server.validators.users import UserCreateValidator +from extralit_server.contexts import datasets +from extralit_server.enums import UserRole +from extralit_server.errors.future import NotUniqueError, UnprocessableEntityError +from extralit_server.models import User, Workspace, WorkspaceUser +from extralit_server.security.authentication.jwt import JWT +from extralit_server.security.authentication.userinfo import UserInfo +from extralit_server.validators.users import UserCreateValidator async def create_workspace_user(db: AsyncSession, workspace_user_attrs: dict) -> WorkspaceUser: diff --git a/argilla-server/src/argilla_server/contexts/datasets.py b/argilla-server/src/extralit_server/contexts/datasets.py similarity index 93% rename from argilla-server/src/argilla_server/contexts/datasets.py rename to argilla-server/src/extralit_server/contexts/datasets.py index 3fd485cd4..2a36ccc2e 100644 --- a/argilla-server/src/argilla_server/contexts/datasets.py +++ b/argilla-server/src/extralit_server/contexts/datasets.py @@ -30,36 +30,36 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import contains_eager, joinedload, selectinload -from argilla_server.api.schemas.v1.fields import FieldCreate -from argilla_server.api.schemas.v1.metadata_properties import MetadataPropertyCreate, MetadataPropertyUpdate -from argilla_server.api.schemas.v1.records import ( +from extralit_server.api.schemas.v1.fields import FieldCreate +from extralit_server.api.schemas.v1.metadata_properties import MetadataPropertyCreate, MetadataPropertyUpdate +from extralit_server.api.schemas.v1.records import ( RecordIncludeParam, ) -from argilla_server.api.schemas.v1.responses import ( +from extralit_server.api.schemas.v1.responses import ( ResponseCreate, ResponseUpdate, ResponseUpsert, ResponseValueUpdate, ) -from argilla_server.api.schemas.v1.vector_settings import ( +from extralit_server.api.schemas.v1.vector_settings import ( VectorSettingsCreate, ) -from argilla_server.models.database import DatasetUser -from argilla_server.webhooks.v1.enums import DatasetEvent, ResponseEvent -from argilla_server.webhooks.v1.responses import ( +from extralit_server.models.database import DatasetUser +from extralit_server.webhooks.v1.enums import DatasetEvent, ResponseEvent +from extralit_server.webhooks.v1.responses import ( build_response_event as build_response_event_v1, notify_response_event as notify_response_event_v1, ) -from argilla_server.webhooks.v1.datasets import ( +from extralit_server.webhooks.v1.datasets import ( build_dataset_event as build_dataset_event_v1, notify_dataset_event as notify_dataset_event_v1, ) -from argilla_server.contexts import distribution -from argilla_server.database import get_async_db # noqa: F401 -from argilla_server.enums import DatasetStatus, UserRole -from argilla_server.errors.future import NotUniqueError, UnprocessableEntityError -from argilla_server.jobs import dataset_jobs -from argilla_server.models import ( +from extralit_server.contexts import distribution +from extralit_server.database import get_async_db # noqa: F401 +from extralit_server.enums import DatasetStatus, UserRole +from extralit_server.errors.future import NotUniqueError, UnprocessableEntityError +from extralit_server.jobs import dataset_jobs +from extralit_server.models import ( Dataset, Field, MetadataProperty, @@ -73,20 +73,20 @@ WorkspaceUser, ResponseStatus, ) -from argilla_server.models.suggestions import SuggestionCreateWithRecordId -from argilla_server.search_engine import SearchEngine -from argilla_server.validators.datasets import DatasetCreateValidator, DatasetPublishValidator, DatasetUpdateValidator -from argilla_server.validators.responses import ( +from extralit_server.models.suggestions import SuggestionCreateWithRecordId +from extralit_server.search_engine import SearchEngine +from extralit_server.validators.datasets import DatasetCreateValidator, DatasetPublishValidator, DatasetUpdateValidator +from extralit_server.validators.responses import ( ResponseCreateValidator, ResponseUpdateValidator, ResponseUpsertValidator, ) -from argilla_server.validators.suggestions import SuggestionCreateValidator +from extralit_server.validators.suggestions import SuggestionCreateValidator if TYPE_CHECKING: - from argilla_server.api.schemas.v1.fields import FieldUpdate - from argilla_server.api.schemas.v1.suggestions import SuggestionCreate - from argilla_server.api.schemas.v1.vector_settings import VectorSettingsUpdate + from extralit_server.api.schemas.v1.fields import FieldUpdate + from extralit_server.api.schemas.v1.suggestions import SuggestionCreate + from extralit_server.api.schemas.v1.vector_settings import VectorSettingsUpdate VISIBLE_FOR_ANNOTATORS_ALLOWED_ROLES = [UserRole.admin, UserRole.annotator] NOT_VISIBLE_FOR_ANNOTATORS_ALLOWED_ROLES = [UserRole.admin] diff --git a/argilla-server/src/argilla_server/contexts/distribution.py b/argilla-server/src/extralit_server/contexts/distribution.py similarity index 87% rename from argilla-server/src/argilla_server/contexts/distribution.py rename to argilla-server/src/extralit_server/contexts/distribution.py index 21298d0d5..2de582418 100644 --- a/argilla-server/src/argilla_server/contexts/distribution.py +++ b/argilla-server/src/extralit_server/contexts/distribution.py @@ -22,12 +22,12 @@ from sqlalchemy.orm import selectinload from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.webhooks.v1.enums import RecordEvent -from argilla_server.webhooks.v1.records import notify_record_event as notify_record_event_v1 -from argilla_server.enums import DatasetDistributionStrategy, RecordStatus -from argilla_server.models import Record -from argilla_server.search_engine.base import SearchEngine -from argilla_server.database import _get_async_db +from extralit_server.webhooks.v1.enums import RecordEvent +from extralit_server.webhooks.v1.records import notify_record_event as notify_record_event_v1 +from extralit_server.enums import DatasetDistributionStrategy, RecordStatus +from extralit_server.models import Record +from extralit_server.search_engine.base import SearchEngine +from extralit_server.database import _get_async_db MAX_TIME_RETRY_SQLALCHEMY_ERROR = 15 diff --git a/argilla-server/src/argilla_server/contexts/files.py b/argilla-server/src/extralit_server/contexts/files.py similarity index 99% rename from argilla-server/src/argilla_server/contexts/files.py rename to argilla-server/src/extralit_server/contexts/files.py index d6c56f724..f16c6af33 100644 --- a/argilla-server/src/argilla_server/contexts/files.py +++ b/argilla-server/src/extralit_server/contexts/files.py @@ -32,8 +32,8 @@ from minio.helpers import ObjectWriteResult from minio.commonconfig import ENABLED -from argilla_server.api.schemas.v1.files import ListObjectsResponse, ObjectMetadata, FileObjectResponse -from argilla_server.settings import settings +from extralit_server.api.schemas.v1.files import ListObjectsResponse, ObjectMetadata, FileObjectResponse +from extralit_server.settings import settings EXCLUDED_VERSIONING_PREFIXES = ["pdf"] diff --git a/argilla-server/src/argilla_server/contexts/hub.py b/argilla-server/src/extralit_server/contexts/hub.py similarity index 94% rename from argilla-server/src/argilla_server/contexts/hub.py rename to argilla-server/src/extralit_server/contexts/hub.py index 219234738..95d7f4848 100644 --- a/argilla-server/src/argilla_server/contexts/hub.py +++ b/argilla-server/src/extralit_server/contexts/hub.py @@ -30,23 +30,23 @@ from huggingface_hub import HfApi, DatasetCard, DatasetCardData from datasets import Dataset as HFDataset, NamedSplit, load_dataset, features -from argilla_server.contexts import info -from argilla_server.database import get_sync_db -from argilla_server.models.database import Dataset, Record, Field, Question, MetadataProperty, VectorSettings -from argilla_server.search_engine import SearchEngine -from argilla_server.bulk.records_bulk import UpsertRecordsBulk -from argilla_server.api.schemas.v1.datasets import ( +from extralit_server.contexts import info +from extralit_server.database import get_sync_db +from extralit_server.models.database import Dataset, Record, Field, Question, MetadataProperty, VectorSettings +from extralit_server.search_engine import SearchEngine +from extralit_server.bulk.records_bulk import UpsertRecordsBulk +from extralit_server.api.schemas.v1.datasets import ( HubDatasetMapping, Dataset as DatasetSchema, DatasetDistribution as DatasetDistributionSchema, ) -from argilla_server.api.schemas.v1.fields import Field as FieldSchema -from argilla_server.api.schemas.v1.questions import Question as QuestionSchema -from argilla_server.api.schemas.v1.records import RecordUpsert as RecordUpsertSchema -from argilla_server.api.schemas.v1.records_bulk import RecordsBulkUpsert as RecordsBulkUpsertSchema -from argilla_server.api.schemas.v1.metadata_properties import MetadataProperty as MetadataPropertySchema -from argilla_server.api.schemas.v1.vector_settings import VectorSettings as VectorSettingsSchema -from argilla_server.api.schemas.v1.suggestions import SuggestionCreate +from extralit_server.api.schemas.v1.fields import Field as FieldSchema +from extralit_server.api.schemas.v1.questions import Question as QuestionSchema +from extralit_server.api.schemas.v1.records import RecordUpsert as RecordUpsertSchema +from extralit_server.api.schemas.v1.records_bulk import RecordsBulkUpsert as RecordsBulkUpsertSchema +from extralit_server.api.schemas.v1.metadata_properties import MetadataProperty as MetadataPropertySchema +from extralit_server.api.schemas.v1.vector_settings import VectorSettings as VectorSettingsSchema +from extralit_server.api.schemas.v1.suggestions import SuggestionCreate BATCH_SIZE = 100 RESET_ROW_IDX = -1 diff --git a/argilla-server/src/argilla_server/contexts/hub_templates/README.md.jinja2 b/argilla-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 similarity index 100% rename from argilla-server/src/argilla_server/contexts/hub_templates/README.md.jinja2 rename to argilla-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 diff --git a/argilla-server/src/argilla_server/contexts/imports.py b/argilla-server/src/extralit_server/contexts/imports.py similarity index 98% rename from argilla-server/src/argilla_server/contexts/imports.py rename to argilla-server/src/extralit_server/contexts/imports.py index fbdeb1689..6520d8acc 100644 --- a/argilla-server/src/argilla_server/contexts/imports.py +++ b/argilla-server/src/extralit_server/contexts/imports.py @@ -21,10 +21,10 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import and_, or_, select -from argilla_server.models.database import Document, ImportHistory -from argilla_server.models import Document -from argilla_server.api.schemas.v1.documents import DocumentCreate, DocumentListItem -from argilla_server.api.schemas.v1.imports import ( +from extralit_server.models.database import Document, ImportHistory +from extralit_server.models import Document +from extralit_server.api.schemas.v1.documents import DocumentCreate, DocumentListItem +from extralit_server.api.schemas.v1.imports import ( FileInfo, DocumentMetadata, ImportAnalysisRequest, @@ -37,7 +37,7 @@ ImportHistoryCreate, ImportHistoryCreateResponse, ) -from argilla_server.jobs.document_jobs import upload_reference_documents_job +from extralit_server.jobs.document_jobs import upload_reference_documents_job _LOGGER = logging.getLogger(__name__) @@ -339,7 +339,7 @@ async def process_bulk_upload( Returns: DocumentsBulkResponse with job IDs indexed by reference and validation results """ - from argilla_server.jobs import DEFAULT_QUEUE + from extralit_server.jobs import DEFAULT_QUEUE # Create a mapping of filenames to file objects for quick lookup file_mapping = {file.filename: file for file in files} if files else {} diff --git a/argilla-server/src/argilla_server/contexts/info.py b/argilla-server/src/extralit_server/contexts/info.py similarity index 96% rename from argilla-server/src/argilla_server/contexts/info.py rename to argilla-server/src/extralit_server/contexts/info.py index 704cc9294..2b50b5842 100644 --- a/argilla-server/src/argilla_server/contexts/info.py +++ b/argilla-server/src/extralit_server/contexts/info.py @@ -16,7 +16,7 @@ import psutil -from argilla_server._version import __version__ +from extralit_server._version import __version__ def argilla_version() -> str: diff --git a/argilla-server/src/argilla_server/contexts/questions.py b/argilla-server/src/extralit_server/contexts/questions.py similarity index 90% rename from argilla-server/src/argilla_server/contexts/questions.py rename to argilla-server/src/extralit_server/contexts/questions.py index db627c739..637b607de 100644 --- a/argilla-server/src/argilla_server/contexts/questions.py +++ b/argilla-server/src/extralit_server/contexts/questions.py @@ -15,13 +15,13 @@ from sqlalchemy.ext.asyncio import AsyncSession -import argilla_server.errors.future as errors -from argilla_server.api.schemas.v1.questions import ( +import extralit_server.errors.future as errors +from extralit_server.api.schemas.v1.questions import ( QuestionCreate, QuestionUpdate, ) -from argilla_server.models import Dataset, Question -from argilla_server.validators.questions import ( +from extralit_server.models import Dataset, Question +from extralit_server.validators.questions import ( QuestionCreateValidator, QuestionDeleteValidator, QuestionUpdateValidator, diff --git a/argilla-server/src/argilla_server/contexts/records.py b/argilla-server/src/extralit_server/contexts/records.py similarity index 94% rename from argilla-server/src/argilla_server/contexts/records.py rename to argilla-server/src/extralit_server/contexts/records.py index 758d3733a..c0fbe9402 100644 --- a/argilla-server/src/argilla_server/contexts/records.py +++ b/argilla-server/src/extralit_server/contexts/records.py @@ -21,13 +21,13 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload, contains_eager -from argilla_server.api.schemas.v1.records import RecordUpdate -from argilla_server.api.schemas.v1.vectors import Vector as VectorSchema -from argilla_server.models import Dataset, Record, VectorSettings, Vector, Response, ResponseStatus, Suggestion -from argilla_server.search_engine import SearchEngine -from argilla_server.validators.records import RecordUpdateValidator -from argilla_server.webhooks.v1.enums import RecordEvent -from argilla_server.webhooks.v1.records import ( +from extralit_server.api.schemas.v1.records import RecordUpdate +from extralit_server.api.schemas.v1.vectors import Vector as VectorSchema +from extralit_server.models import Dataset, Record, VectorSettings, Vector, Response, ResponseStatus, Suggestion +from extralit_server.search_engine import SearchEngine +from extralit_server.validators.records import RecordUpdateValidator +from extralit_server.webhooks.v1.enums import RecordEvent +from extralit_server.webhooks.v1.records import ( build_record_event as build_record_event_v1, notify_record_event as notify_record_event_v1, ) diff --git a/argilla-server/src/argilla_server/contexts/search.py b/argilla-server/src/extralit_server/contexts/search.py similarity index 94% rename from argilla-server/src/argilla_server/contexts/search.py rename to argilla-server/src/extralit_server/contexts/search.py index 5263401bd..d3d53991f 100644 --- a/argilla-server/src/argilla_server/contexts/search.py +++ b/argilla-server/src/extralit_server/contexts/search.py @@ -18,15 +18,15 @@ from sqlalchemy.dialects import postgresql from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.api.schemas.v1.records import ( +from extralit_server.api.schemas.v1.records import ( FilterScope, MetadataFilterScope, RecordFilterScope, SearchRecordsQuery, ) -from argilla_server.api.schemas.v1.responses import ResponseFilterScope -from argilla_server.api.schemas.v1.suggestions import SuggestionFilterScope -from argilla_server.models import MetadataProperty, Question, Suggestion, Dataset +from extralit_server.api.schemas.v1.responses import ResponseFilterScope +from extralit_server.api.schemas.v1.suggestions import SuggestionFilterScope +from extralit_server.models import MetadataProperty, Question, Suggestion, Dataset class SearchRecordsQueryValidator: diff --git a/argilla-server/src/argilla_server/contexts/settings.py b/argilla-server/src/extralit_server/contexts/settings.py similarity index 85% rename from argilla-server/src/argilla_server/contexts/settings.py rename to argilla-server/src/extralit_server/contexts/settings.py index a922adbd6..4a3575384 100644 --- a/argilla-server/src/argilla_server/contexts/settings.py +++ b/argilla-server/src/extralit_server/contexts/settings.py @@ -14,9 +14,9 @@ from typing import Union -from argilla_server.api.schemas.v1.settings import ArgillaSettings, Settings, HuggingfaceSettings -from argilla_server.integrations.huggingface.spaces import HUGGINGFACE_SETTINGS -from argilla_server.settings import settings +from extralit_server.api.schemas.v1.settings import ArgillaSettings, Settings, HuggingfaceSettings +from extralit_server.integrations.huggingface.spaces import HUGGINGFACE_SETTINGS +from extralit_server.settings import settings def get_settings() -> Settings: diff --git a/argilla-server/src/argilla_server/contexts/webhooks.py b/argilla-server/src/extralit_server/contexts/webhooks.py similarity index 93% rename from argilla-server/src/argilla_server/contexts/webhooks.py rename to argilla-server/src/extralit_server/contexts/webhooks.py index 08b29e310..12b8f38b4 100644 --- a/argilla-server/src/argilla_server/contexts/webhooks.py +++ b/argilla-server/src/extralit_server/contexts/webhooks.py @@ -17,8 +17,8 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.models import Webhook -from argilla_server.validators.webhooks import WebhookCreateValidator +from extralit_server.models import Webhook +from extralit_server.validators.webhooks import WebhookCreateValidator async def list_webhooks(db: AsyncSession) -> Sequence[Webhook]: diff --git a/argilla-server/src/argilla_server/database.py b/argilla-server/src/extralit_server/database.py similarity index 96% rename from argilla-server/src/argilla_server/database.py rename to argilla-server/src/extralit_server/database.py index 49c120550..981864b1a 100644 --- a/argilla-server/src/argilla_server/database.py +++ b/argilla-server/src/extralit_server/database.py @@ -23,12 +23,12 @@ from sqlalchemy.ext.asyncio import async_sessionmaker, create_async_engine, AsyncSession from sqlalchemy.orm import sessionmaker, scoped_session, Session -from argilla_server.settings import settings +from extralit_server.settings import settings -import argilla_server +import extralit_server -ALEMBIC_CONFIG_FILE = os.path.normpath(os.path.join(os.path.dirname(argilla_server.__file__), "alembic.ini")) +ALEMBIC_CONFIG_FILE = os.path.normpath(os.path.join(os.path.dirname(extralit_server.__file__), "alembic.ini")) TAGGED_REVISIONS = OrderedDict( { "1.7": "1769ee58fbb4", diff --git a/argilla-server/src/argilla_server/enums.py b/argilla-server/src/extralit_server/enums.py similarity index 97% rename from argilla-server/src/argilla_server/enums.py rename to argilla-server/src/extralit_server/enums.py index a47bf961e..83e613c92 100644 --- a/argilla-server/src/argilla_server/enums.py +++ b/argilla-server/src/extralit_server/enums.py @@ -16,7 +16,7 @@ try: from enum import StrEnum except ImportError: - from argilla_server.utils.str_enum import StrEnum + from extralit_server.utils.str_enum import StrEnum class FieldType(StrEnum): diff --git a/argilla-server/src/argilla_server/errors/__init__.py b/argilla-server/src/extralit_server/errors/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/errors/__init__.py rename to argilla-server/src/extralit_server/errors/__init__.py diff --git a/argilla-server/src/argilla_server/errors/base_errors.py b/argilla-server/src/extralit_server/errors/base_errors.py similarity index 100% rename from argilla-server/src/argilla_server/errors/base_errors.py rename to argilla-server/src/extralit_server/errors/base_errors.py diff --git a/argilla-server/src/argilla_server/errors/error_handler.py b/argilla-server/src/extralit_server/errors/error_handler.py similarity index 96% rename from argilla-server/src/argilla_server/errors/error_handler.py rename to argilla-server/src/extralit_server/errors/error_handler.py index 6541b7493..dae3f6e7d 100644 --- a/argilla-server/src/argilla_server/errors/error_handler.py +++ b/argilla-server/src/extralit_server/errors/error_handler.py @@ -19,8 +19,8 @@ from fastapi.exceptions import RequestValidationError from pydantic import BaseModel, field_serializer -from argilla_server.api.errors.v1.exception_handlers import set_request_error -from argilla_server.errors.base_errors import ( +from extralit_server.api.errors.v1.exception_handlers import set_request_error +from extralit_server.errors.base_errors import ( BadRequestError, ClosedDatasetError, EntityAlreadyExistsError, diff --git a/argilla-server/src/argilla_server/errors/future/__init__.py b/argilla-server/src/extralit_server/errors/future/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/errors/future/__init__.py rename to argilla-server/src/extralit_server/errors/future/__init__.py diff --git a/argilla-server/src/argilla_server/errors/future/base_errors.py b/argilla-server/src/extralit_server/errors/future/base_errors.py similarity index 100% rename from argilla-server/src/argilla_server/errors/future/base_errors.py rename to argilla-server/src/extralit_server/errors/future/base_errors.py diff --git a/argilla-server/src/argilla_server/helpers.py b/argilla-server/src/extralit_server/helpers.py similarity index 96% rename from argilla-server/src/argilla_server/helpers.py rename to argilla-server/src/extralit_server/helpers.py index f38a4e0ec..a6f381b9b 100644 --- a/argilla-server/src/argilla_server/helpers.py +++ b/argilla-server/src/extralit_server/helpers.py @@ -19,7 +19,7 @@ import logging -_LOGGER = logging.getLogger("argilla_server") +_LOGGER = logging.getLogger("extralit_server") def remove_suffix(text: str, suffix: str): diff --git a/argilla-server/src/argilla_server/integrations/__init__.py b/argilla-server/src/extralit_server/integrations/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/integrations/__init__.py rename to argilla-server/src/extralit_server/integrations/__init__.py diff --git a/argilla-server/src/argilla_server/integrations/huggingface/__init__.py b/argilla-server/src/extralit_server/integrations/huggingface/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/integrations/huggingface/__init__.py rename to argilla-server/src/extralit_server/integrations/huggingface/__init__.py diff --git a/argilla-server/src/argilla_server/integrations/huggingface/spaces.py b/argilla-server/src/extralit_server/integrations/huggingface/spaces.py similarity index 100% rename from argilla-server/src/argilla_server/integrations/huggingface/spaces.py rename to argilla-server/src/extralit_server/integrations/huggingface/spaces.py diff --git a/argilla-server/src/argilla_server/jobs/__init__.py b/argilla-server/src/extralit_server/jobs/__init__.py similarity index 88% rename from argilla-server/src/argilla_server/jobs/__init__.py rename to argilla-server/src/extralit_server/jobs/__init__.py index 5c7fec407..244dd0e97 100644 --- a/argilla-server/src/argilla_server/jobs/__init__.py +++ b/argilla-server/src/extralit_server/jobs/__init__.py @@ -13,6 +13,6 @@ # limitations under the License. from rq.decorators import job -from argilla_server.jobs.queues import DEFAULT_QUEUE, HIGH_QUEUE, JOB_TIMEOUT_DISABLED +from extralit_server.jobs.queues import DEFAULT_QUEUE, HIGH_QUEUE, JOB_TIMEOUT_DISABLED __all__ = ["job", "DEFAULT_QUEUE", "HIGH_QUEUE", "JOB_TIMEOUT_DISABLED"] diff --git a/argilla-server/src/argilla_server/jobs/dataset_jobs.py b/argilla-server/src/extralit_server/jobs/dataset_jobs.py similarity index 83% rename from argilla-server/src/argilla_server/jobs/dataset_jobs.py rename to argilla-server/src/extralit_server/jobs/dataset_jobs.py index bbf6b622d..4b46afc28 100644 --- a/argilla-server/src/argilla_server/jobs/dataset_jobs.py +++ b/argilla-server/src/extralit_server/jobs/dataset_jobs.py @@ -19,12 +19,12 @@ from sqlalchemy import select -from argilla_server.models import Record, Response -from argilla_server.database import AsyncSessionLocal -from argilla_server.jobs.queues import DEFAULT_QUEUE, JOB_TIMEOUT_DISABLED -from argilla_server.search_engine.base import SearchEngine -from argilla_server.settings import settings -from argilla_server.contexts import distribution +from extralit_server.models import Record, Response +from extralit_server.database import AsyncSessionLocal +from extralit_server.jobs.queues import DEFAULT_QUEUE, JOB_TIMEOUT_DISABLED +from extralit_server.search_engine.base import SearchEngine +from extralit_server.settings import settings +from extralit_server.contexts import distribution JOB_RECORDS_YIELD_PER = 100 diff --git a/argilla-server/src/argilla_server/jobs/document_jobs.py b/argilla-server/src/extralit_server/jobs/document_jobs.py similarity index 96% rename from argilla-server/src/argilla_server/jobs/document_jobs.py rename to argilla-server/src/extralit_server/jobs/document_jobs.py index 3e2fbfa0d..2389e1be4 100644 --- a/argilla-server/src/argilla_server/jobs/document_jobs.py +++ b/argilla-server/src/extralit_server/jobs/document_jobs.py @@ -22,10 +22,10 @@ from rq import Retry from rq.decorators import job -from argilla_server.database import AsyncSessionLocal -from argilla_server.jobs import DEFAULT_QUEUE, JOB_TIMEOUT_DISABLED -from argilla_server.api.schemas.v1.documents import DocumentCreate -from argilla_server.contexts import files, imports +from extralit_server.database import AsyncSessionLocal +from extralit_server.jobs import DEFAULT_QUEUE, JOB_TIMEOUT_DISABLED +from extralit_server.api.schemas.v1.documents import DocumentCreate +from extralit_server.contexts import files, imports _LOGGER = logging.getLogger(__name__) @@ -69,7 +69,7 @@ async def upload_reference_documents_job( document_create = DocumentCreate.model_validate(reference_data) async with AsyncSessionLocal() as db: - from argilla_server.models import Workspace + from extralit_server.models import Workspace workspace = await Workspace.get(db, document_create.workspace_id) if not workspace: diff --git a/argilla-server/src/argilla_server/jobs/hub_jobs.py b/argilla-server/src/extralit_server/jobs/hub_jobs.py similarity index 84% rename from argilla-server/src/argilla_server/jobs/hub_jobs.py rename to argilla-server/src/extralit_server/jobs/hub_jobs.py index d115d2406..a48513faf 100644 --- a/argilla-server/src/argilla_server/jobs/hub_jobs.py +++ b/argilla-server/src/extralit_server/jobs/hub_jobs.py @@ -18,13 +18,13 @@ from rq.decorators import job from sqlalchemy.orm import selectinload -from argilla_server.models import Dataset -from argilla_server.settings import settings -from argilla_server.contexts.hub import HubDataset, HubDatasetExporter -from argilla_server.database import AsyncSessionLocal -from argilla_server.search_engine.base import SearchEngine -from argilla_server.api.schemas.v1.datasets import HubDatasetMapping -from argilla_server.jobs.queues import DEFAULT_QUEUE, JOB_TIMEOUT_DISABLED +from extralit_server.models import Dataset +from extralit_server.settings import settings +from extralit_server.contexts.hub import HubDataset, HubDatasetExporter +from extralit_server.database import AsyncSessionLocal +from extralit_server.search_engine.base import SearchEngine +from extralit_server.api.schemas.v1.datasets import HubDatasetMapping +from extralit_server.jobs.queues import DEFAULT_QUEUE, JOB_TIMEOUT_DISABLED HUB_DATASET_TAKE_ROWS = 10_000 diff --git a/argilla-server/src/argilla_server/jobs/import_jobs.py b/argilla-server/src/extralit_server/jobs/import_jobs.py similarity index 90% rename from argilla-server/src/argilla_server/jobs/import_jobs.py rename to argilla-server/src/extralit_server/jobs/import_jobs.py index 35f8ef961..4da037d3e 100644 --- a/argilla-server/src/argilla_server/jobs/import_jobs.py +++ b/argilla-server/src/extralit_server/jobs/import_jobs.py @@ -37,16 +37,16 @@ from sqlalchemy.orm import selectinload from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.models import Dataset, ImportHistory -from argilla_server.settings import settings -from argilla_server.database import AsyncSessionLocal -from argilla_server.search_engine.base import SearchEngine -from argilla_server.api.schemas.v1.datasets import HubDatasetMapping -from argilla_server.api.schemas.v1.records import RecordUpsert as RecordUpsertSchema -from argilla_server.api.schemas.v1.records_bulk import RecordsBulkUpsert as RecordsBulkUpsertSchema -from argilla_server.api.schemas.v1.suggestions import SuggestionCreate -from argilla_server.bulk.records_bulk import UpsertRecordsBulk -from argilla_server.jobs.queues import DEFAULT_QUEUE, JOB_TIMEOUT_DISABLED +from extralit_server.models import Dataset, ImportHistory +from extralit_server.settings import settings +from extralit_server.database import AsyncSessionLocal +from extralit_server.search_engine.base import SearchEngine +from extralit_server.api.schemas.v1.datasets import HubDatasetMapping +from extralit_server.api.schemas.v1.records import RecordUpsert as RecordUpsertSchema +from extralit_server.api.schemas.v1.records_bulk import RecordsBulkUpsert as RecordsBulkUpsertSchema +from extralit_server.api.schemas.v1.suggestions import SuggestionCreate +from extralit_server.bulk.records_bulk import UpsertRecordsBulk +from extralit_server.jobs.queues import DEFAULT_QUEUE, JOB_TIMEOUT_DISABLED BATCH_SIZE = 100 diff --git a/argilla-server/src/argilla_server/jobs/queues.py b/argilla-server/src/extralit_server/jobs/queues.py similarity index 95% rename from argilla-server/src/argilla_server/jobs/queues.py rename to argilla-server/src/extralit_server/jobs/queues.py index 87db9dad3..6da4c772c 100644 --- a/argilla-server/src/argilla_server/jobs/queues.py +++ b/argilla-server/src/extralit_server/jobs/queues.py @@ -17,7 +17,7 @@ from rq import Queue -from argilla_server.settings import settings +from extralit_server.settings import settings if settings.redis_use_cluster: REDIS_CONNECTION = RedisCluster.from_url(settings.redis_url) diff --git a/argilla-server/src/argilla_server/jobs/webhook_jobs.py b/argilla-server/src/extralit_server/jobs/webhook_jobs.py similarity index 87% rename from argilla-server/src/argilla_server/jobs/webhook_jobs.py rename to argilla-server/src/extralit_server/jobs/webhook_jobs.py index 6bc24a417..4c89c2185 100644 --- a/argilla-server/src/argilla_server/jobs/webhook_jobs.py +++ b/argilla-server/src/extralit_server/jobs/webhook_jobs.py @@ -24,11 +24,11 @@ from sqlalchemy.ext.asyncio import AsyncSession from fastapi.encoders import jsonable_encoder -from argilla_server.webhooks.v1.commons import notify_event -from argilla_server.database import AsyncSessionLocal -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.contexts import webhooks -from argilla_server.models import Webhook +from extralit_server.webhooks.v1.commons import notify_event +from extralit_server.database import AsyncSessionLocal +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.contexts import webhooks +from extralit_server.models import Webhook async def enqueue_notify_events(db: AsyncSession, event: str, timestamp: datetime, data: dict) -> List[Job]: diff --git a/argilla-server/src/argilla_server/logging.py b/argilla-server/src/extralit_server/logging.py similarity index 100% rename from argilla-server/src/argilla_server/logging.py rename to argilla-server/src/extralit_server/logging.py diff --git a/argilla-server/src/argilla_server/models/__init__.py b/argilla-server/src/extralit_server/models/__init__.py similarity index 91% rename from argilla-server/src/argilla_server/models/__init__.py rename to argilla-server/src/extralit_server/models/__init__.py index 1fe3f724c..831e82761 100644 --- a/argilla-server/src/argilla_server/models/__init__.py +++ b/argilla-server/src/extralit_server/models/__init__.py @@ -12,9 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -# This line is included here since some enums are already imported from `argilla_server.models`. +# This line is included here since some enums are already imported from `extralit_server.models`. # We need to review and avoid this. This is only a workaround to not change everything right now -from argilla_server.enums import * # noqa +from extralit_server.enums import * # noqa from .database import * # noqa from .metadata_properties import * # noqa diff --git a/argilla-server/src/argilla_server/models/base.py b/argilla-server/src/extralit_server/models/base.py similarity index 95% rename from argilla-server/src/argilla_server/models/base.py rename to argilla-server/src/extralit_server/models/base.py index d604a95d2..49f09939e 100644 --- a/argilla-server/src/argilla_server/models/base.py +++ b/argilla-server/src/extralit_server/models/base.py @@ -17,7 +17,7 @@ from sqlalchemy.ext.asyncio import AsyncAttrs, async_object_session, AsyncSession from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column -from argilla_server.models.mixins import CRUDMixin, TimestampMixin +from extralit_server.models.mixins import CRUDMixin, TimestampMixin class DatabaseModel(DeclarativeBase, AsyncAttrs, CRUDMixin, TimestampMixin): diff --git a/argilla-server/src/argilla_server/models/database.py b/argilla-server/src/extralit_server/models/database.py similarity index 98% rename from argilla-server/src/argilla_server/models/database.py rename to argilla-server/src/extralit_server/models/database.py index 49af7fbf6..7a5e1b230 100644 --- a/argilla-server/src/argilla_server/models/database.py +++ b/argilla-server/src/extralit_server/models/database.py @@ -31,8 +31,8 @@ from sqlalchemy.ext.mutable import MutableDict, MutableList from sqlalchemy.orm import Mapped, mapped_column, relationship -from argilla_server.api.schemas.v1.questions import QuestionSettings -from argilla_server.enums import ( +from extralit_server.api.schemas.v1.questions import QuestionSettings +from extralit_server.enums import ( DatasetStatus, FieldType, MetadataPropertyType, @@ -43,9 +43,9 @@ DatasetDistributionStrategy, RecordStatus, ) -from argilla_server.models.base import DatabaseModel -from argilla_server.models.metadata_properties import MetadataPropertySettings -from argilla_server.models.mixins import inserted_at_current_value +from extralit_server.models.base import DatabaseModel +from extralit_server.models.metadata_properties import MetadataPropertySettings +from extralit_server.models.mixins import inserted_at_current_value from pydantic import TypeAdapter # Include here the data model ref to be accessible for automatic alembic migration scripts diff --git a/argilla-server/src/argilla_server/models/metadata_properties.py b/argilla-server/src/extralit_server/models/metadata_properties.py similarity index 96% rename from argilla-server/src/argilla_server/models/metadata_properties.py rename to argilla-server/src/extralit_server/models/metadata_properties.py index 5d6fed62f..d3cb3ba33 100644 --- a/argilla-server/src/argilla_server/models/metadata_properties.py +++ b/argilla-server/src/extralit_server/models/metadata_properties.py @@ -15,8 +15,8 @@ from abc import ABC, abstractmethod from typing import Any, Generic, List, Literal, Optional, TypeVar, Union -from argilla_server.enums import MetadataPropertyType -from argilla_server.errors.future import UnprocessableEntityError +from extralit_server.enums import MetadataPropertyType +from extralit_server.errors.future import UnprocessableEntityError from pydantic import BaseModel, Field __all__ = [ diff --git a/argilla-server/src/argilla_server/models/mixins.py b/argilla-server/src/extralit_server/models/mixins.py similarity index 99% rename from argilla-server/src/argilla_server/models/mixins.py rename to argilla-server/src/extralit_server/models/mixins.py index 3f0bde27f..073e73cd2 100644 --- a/argilla-server/src/argilla_server/models/mixins.py +++ b/argilla-server/src/extralit_server/models/mixins.py @@ -26,7 +26,7 @@ from sqlalchemy.sql.base import ExecutableOption from typing_extensions import Self -from argilla_server.errors.future import NotFoundError +from extralit_server.errors.future import NotFoundError from pydantic import BaseModel if TYPE_CHECKING: diff --git a/argilla-server/src/argilla_server/models/suggestions.py b/argilla-server/src/extralit_server/models/suggestions.py similarity index 90% rename from argilla-server/src/argilla_server/models/suggestions.py rename to argilla-server/src/extralit_server/models/suggestions.py index 0c7acbabd..c71e1d3db 100644 --- a/argilla-server/src/argilla_server/models/suggestions.py +++ b/argilla-server/src/extralit_server/models/suggestions.py @@ -14,7 +14,7 @@ from uuid import UUID -from argilla_server.api.schemas.v1.suggestions import SuggestionCreate +from extralit_server.api.schemas.v1.suggestions import SuggestionCreate class SuggestionCreateWithRecordId(SuggestionCreate): diff --git a/argilla-server/src/argilla_server/search_engine/__init__.py b/argilla-server/src/extralit_server/search_engine/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/search_engine/__init__.py rename to argilla-server/src/extralit_server/search_engine/__init__.py diff --git a/argilla-server/src/argilla_server/search_engine/base.py b/argilla-server/src/extralit_server/search_engine/base.py similarity index 98% rename from argilla-server/src/argilla_server/search_engine/base.py rename to argilla-server/src/extralit_server/search_engine/base.py index 0a164a013..fa3256295 100644 --- a/argilla-server/src/argilla_server/search_engine/base.py +++ b/argilla-server/src/extralit_server/search_engine/base.py @@ -26,7 +26,7 @@ ) from uuid import UUID -from argilla_server.enums import ( +from extralit_server.enums import ( MetadataPropertyType, RecordSortField, ResponseStatus, @@ -34,7 +34,7 @@ SimilarityOrder, SortOrder, ) -from argilla_server.models import Dataset, MetadataProperty, Record, Response, Suggestion, User, VectorSettings +from extralit_server.models import Dataset, MetadataProperty, Record, Response, Suggestion, User, VectorSettings from pydantic import BaseModel, Field, ConfigDict __all__ = [ diff --git a/argilla-server/src/argilla_server/search_engine/commons.py b/argilla-server/src/extralit_server/search_engine/commons.py similarity index 99% rename from argilla-server/src/argilla_server/search_engine/commons.py rename to argilla-server/src/extralit_server/search_engine/commons.py index 5e94fd3ff..d901fca13 100644 --- a/argilla-server/src/argilla_server/search_engine/commons.py +++ b/argilla-server/src/extralit_server/search_engine/commons.py @@ -21,8 +21,8 @@ from elasticsearch8 import AsyncElasticsearch from opensearchpy import AsyncOpenSearch -from argilla_server.enums import MetadataPropertyType, RecordSortField, ResponseStatusFilter, SimilarityOrder -from argilla_server.models import ( +from extralit_server.enums import MetadataPropertyType, RecordSortField, ResponseStatusFilter, SimilarityOrder +from extralit_server.models import ( Dataset, Field, MetadataProperty, @@ -35,7 +35,7 @@ VectorSettings, User, ) -from argilla_server.search_engine.base import ( +from extralit_server.search_engine.base import ( AndFilter, Filter, FilterScope, diff --git a/argilla-server/src/argilla_server/search_engine/elasticsearch.py b/argilla-server/src/extralit_server/search_engine/elasticsearch.py similarity index 95% rename from argilla-server/src/argilla_server/search_engine/elasticsearch.py rename to argilla-server/src/extralit_server/search_engine/elasticsearch.py index 7dc8e10cf..0bec2b4d6 100644 --- a/argilla-server/src/argilla_server/search_engine/elasticsearch.py +++ b/argilla-server/src/extralit_server/search_engine/elasticsearch.py @@ -18,16 +18,16 @@ from elasticsearch8 import AsyncElasticsearch, helpers -from argilla_server.constants import SEARCH_ENGINE_ELASTICSEARCH -from argilla_server.models import VectorSettings -from argilla_server.search_engine import SearchEngine -from argilla_server.search_engine.commons import ( +from extralit_server.constants import SEARCH_ENGINE_ELASTICSEARCH +from extralit_server.models import VectorSettings +from extralit_server.search_engine import SearchEngine +from extralit_server.search_engine.commons import ( BaseElasticAndOpenSearchEngine, es_bool_query, es_field_for_vector_settings, es_ids_query, ) -from argilla_server.settings import settings +from extralit_server.settings import settings def _compute_num_candidates_from_k(k: int) -> int: diff --git a/argilla-server/src/argilla_server/search_engine/opensearch.py b/argilla-server/src/extralit_server/search_engine/opensearch.py similarity index 95% rename from argilla-server/src/argilla_server/search_engine/opensearch.py rename to argilla-server/src/extralit_server/search_engine/opensearch.py index a1fb00bfe..28fa1eb84 100644 --- a/argilla-server/src/argilla_server/search_engine/opensearch.py +++ b/argilla-server/src/extralit_server/search_engine/opensearch.py @@ -18,16 +18,16 @@ from opensearchpy import AsyncOpenSearch, helpers -from argilla_server.constants import SEARCH_ENGINE_OPENSEARCH -from argilla_server.models import VectorSettings -from argilla_server.search_engine.base import SearchEngine -from argilla_server.search_engine.commons import ( +from extralit_server.constants import SEARCH_ENGINE_OPENSEARCH +from extralit_server.models import VectorSettings +from extralit_server.search_engine.base import SearchEngine +from extralit_server.search_engine.commons import ( BaseElasticAndOpenSearchEngine, es_bool_query, es_field_for_vector_settings, es_ids_query, ) -from argilla_server.settings import settings +from extralit_server.settings import settings @SearchEngine.register(engine_name=SEARCH_ENGINE_OPENSEARCH) diff --git a/argilla-server/src/argilla_server/security/__init__.py b/argilla-server/src/extralit_server/security/__init__.py similarity index 90% rename from argilla-server/src/argilla_server/security/__init__.py rename to argilla-server/src/extralit_server/security/__init__.py index 86afd80f2..e6a26d4dd 100644 --- a/argilla-server/src/argilla_server/security/__init__.py +++ b/argilla-server/src/extralit_server/security/__init__.py @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.security.authentication import auth # noqa +from extralit_server.security.authentication import auth # noqa diff --git a/argilla-server/src/argilla_server/security/authentication/__init__.py b/argilla-server/src/extralit_server/security/authentication/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/security/authentication/__init__.py rename to argilla-server/src/extralit_server/security/authentication/__init__.py diff --git a/argilla-server/src/argilla_server/security/authentication/db/__init__.py b/argilla-server/src/extralit_server/security/authentication/db/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/security/authentication/db/__init__.py rename to argilla-server/src/extralit_server/security/authentication/db/__init__.py diff --git a/argilla-server/src/argilla_server/security/authentication/db/api_key_backend.py b/argilla-server/src/extralit_server/security/authentication/db/api_key_backend.py similarity index 89% rename from argilla-server/src/argilla_server/security/authentication/db/api_key_backend.py rename to argilla-server/src/extralit_server/security/authentication/db/api_key_backend.py index 1b2390231..b82f6883d 100644 --- a/argilla-server/src/argilla_server/security/authentication/db/api_key_backend.py +++ b/argilla-server/src/extralit_server/security/authentication/db/api_key_backend.py @@ -18,9 +18,9 @@ from fastapi.security import APIKeyHeader from starlette.authentication import AuthCredentials, AuthenticationBackend, BaseUser -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.contexts import accounts -from argilla_server.security.authentication.userinfo import UserInfo +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.contexts import accounts +from extralit_server.security.authentication.userinfo import UserInfo class APIKeyAuthenticationBackend(AuthenticationBackend): diff --git a/argilla-server/src/argilla_server/security/authentication/db/bearer_token_backend.py b/argilla-server/src/extralit_server/security/authentication/db/bearer_token_backend.py similarity index 90% rename from argilla-server/src/argilla_server/security/authentication/db/bearer_token_backend.py rename to argilla-server/src/extralit_server/security/authentication/db/bearer_token_backend.py index 8e84debc5..96942cedb 100644 --- a/argilla-server/src/argilla_server/security/authentication/db/bearer_token_backend.py +++ b/argilla-server/src/extralit_server/security/authentication/db/bearer_token_backend.py @@ -18,9 +18,9 @@ from fastapi.security import HTTPBearer from starlette.authentication import AuthCredentials, AuthenticationBackend, BaseUser -from argilla_server.contexts import accounts -from argilla_server.security.authentication.jwt import JWT -from argilla_server.security.authentication.userinfo import UserInfo +from extralit_server.contexts import accounts +from extralit_server.security.authentication.jwt import JWT +from extralit_server.security.authentication.userinfo import UserInfo class BearerTokenAuthenticationBackend(AuthenticationBackend): diff --git a/argilla-server/src/argilla_server/security/authentication/jwt.py b/argilla-server/src/extralit_server/security/authentication/jwt.py similarity index 88% rename from argilla-server/src/argilla_server/security/authentication/jwt.py rename to argilla-server/src/extralit_server/security/authentication/jwt.py index 1e6d4644b..4d1a6d01d 100644 --- a/argilla-server/src/argilla_server/security/authentication/jwt.py +++ b/argilla-server/src/extralit_server/security/authentication/jwt.py @@ -16,9 +16,9 @@ from jose import JWTError, jwt -from argilla_server.errors import UnauthorizedError -from argilla_server.security.authentication.userinfo import UserInfo -from argilla_server.security.settings import settings +from extralit_server.errors import UnauthorizedError +from extralit_server.security.authentication.userinfo import UserInfo +from extralit_server.security.settings import settings class JWT: diff --git a/argilla-server/src/argilla_server/security/authentication/oauth2/__init__.py b/argilla-server/src/extralit_server/security/authentication/oauth2/__init__.py similarity index 77% rename from argilla-server/src/argilla_server/security/authentication/oauth2/__init__.py rename to argilla-server/src/extralit_server/security/authentication/oauth2/__init__.py index f5605ab59..76b836a66 100644 --- a/argilla-server/src/argilla_server/security/authentication/oauth2/__init__.py +++ b/argilla-server/src/extralit_server/security/authentication/oauth2/__init__.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.security.authentication.oauth2.provider import OAuth2ClientProvider # noqa -from argilla_server.security.authentication.oauth2.settings import OAuth2Settings # noqa +from extralit_server.security.authentication.oauth2.provider import OAuth2ClientProvider # noqa +from extralit_server.security.authentication.oauth2.settings import OAuth2Settings # noqa __all__ = ["OAuth2Settings", "OAuth2ClientProvider"] diff --git a/argilla-server/src/argilla_server/security/authentication/oauth2/_backends.py b/argilla-server/src/extralit_server/security/authentication/oauth2/_backends.py similarity index 94% rename from argilla-server/src/argilla_server/security/authentication/oauth2/_backends.py rename to argilla-server/src/extralit_server/security/authentication/oauth2/_backends.py index 93b6f72f1..750e676c8 100644 --- a/argilla-server/src/argilla_server/security/authentication/oauth2/_backends.py +++ b/argilla-server/src/extralit_server/security/authentication/oauth2/_backends.py @@ -20,8 +20,8 @@ from social_core.backends.utils import load_backends from social_core.strategy import BaseStrategy -from argilla_server.errors.future import NotFoundError -from argilla_server.models import UserRole +from extralit_server.errors.future import NotFoundError +from extralit_server.models import UserRole class Strategy(BaseStrategy): @@ -111,8 +111,8 @@ def load_supported_backends(extra_backends: list = None) -> Dict[str, Type[BaseO global _SUPPORTED_BACKENDS backends = [ - "argilla_server.security.authentication.oauth2._backends.HuggingfaceOpenId", - "argilla_server.security.authentication.oauth2._backends.KeycloakOpenId", + "extralit_server.security.authentication.oauth2._backends.HuggingfaceOpenId", + "extralit_server.security.authentication.oauth2._backends.KeycloakOpenId", "social_core.backends.github.GithubOAuth2", "social_core.backends.google.GoogleOAuth2", ] diff --git a/argilla-server/src/argilla_server/security/authentication/oauth2/auth_backend.py b/argilla-server/src/extralit_server/security/authentication/oauth2/auth_backend.py similarity index 86% rename from argilla-server/src/argilla_server/security/authentication/oauth2/auth_backend.py rename to argilla-server/src/extralit_server/security/authentication/oauth2/auth_backend.py index 41f84d0b3..40bccc1e3 100644 --- a/argilla-server/src/argilla_server/security/authentication/oauth2/auth_backend.py +++ b/argilla-server/src/extralit_server/security/authentication/oauth2/auth_backend.py @@ -18,9 +18,9 @@ from fastapi.security import HTTPBearer from starlette.authentication import AuthCredentials, AuthenticationBackend, BaseUser -from argilla_server.security.authentication.jwt import JWT -from argilla_server.security.authentication.oauth2.provider import OAuth2ClientProvider -from argilla_server.security.authentication.userinfo import UserInfo +from extralit_server.security.authentication.jwt import JWT +from extralit_server.security.authentication.oauth2.provider import OAuth2ClientProvider +from extralit_server.security.authentication.userinfo import UserInfo class OAuth2AuthenticationBackend(AuthenticationBackend): diff --git a/argilla-server/src/argilla_server/security/authentication/oauth2/provider.py b/argilla-server/src/extralit_server/security/authentication/oauth2/provider.py similarity index 97% rename from argilla-server/src/argilla_server/security/authentication/oauth2/provider.py rename to argilla-server/src/extralit_server/security/authentication/oauth2/provider.py index 78a3df195..196437408 100644 --- a/argilla-server/src/argilla_server/security/authentication/oauth2/provider.py +++ b/argilla-server/src/extralit_server/security/authentication/oauth2/provider.py @@ -28,9 +28,9 @@ from starlette.requests import Request from starlette.responses import RedirectResponse, Response -from argilla_server.errors import future -from argilla_server.security.authentication.oauth2._backends import Strategy -from argilla_server.security.settings import settings +from extralit_server.errors import future +from extralit_server.security.authentication.oauth2._backends import Strategy +from extralit_server.security.settings import settings class OAuth2ClientProvider: diff --git a/argilla-server/src/argilla_server/security/authentication/oauth2/settings.py b/argilla-server/src/extralit_server/security/authentication/oauth2/settings.py similarity index 94% rename from argilla-server/src/argilla_server/security/authentication/oauth2/settings.py rename to argilla-server/src/extralit_server/security/authentication/oauth2/settings.py index 61c702ec6..ae5be7445 100644 --- a/argilla-server/src/argilla_server/security/authentication/oauth2/settings.py +++ b/argilla-server/src/extralit_server/security/authentication/oauth2/settings.py @@ -16,11 +16,11 @@ import yaml -from argilla_server.security.authentication.oauth2._backends import ( +from extralit_server.security.authentication.oauth2._backends import ( get_supported_backend_by_name, load_supported_backends, ) -from argilla_server.security.authentication.oauth2.provider import OAuth2ClientProvider +from extralit_server.security.authentication.oauth2.provider import OAuth2ClientProvider __all__ = ["OAuth2Settings"] diff --git a/argilla-server/src/argilla_server/security/authentication/provider.py b/argilla-server/src/extralit_server/security/authentication/provider.py similarity index 90% rename from argilla-server/src/argilla_server/security/authentication/provider.py rename to argilla-server/src/extralit_server/security/authentication/provider.py index 3360cf231..e99f4f6ea 100644 --- a/argilla-server/src/argilla_server/security/authentication/provider.py +++ b/argilla-server/src/extralit_server/security/authentication/provider.py @@ -20,12 +20,12 @@ from starlette.authentication import AuthenticationBackend from starlette.requests import Request -from argilla_server.contexts import accounts -from argilla_server.database import get_async_db -from argilla_server.errors import UnauthorizedError -from argilla_server.models import User -from argilla_server.security.authentication.db import APIKeyAuthenticationBackend, BearerTokenAuthenticationBackend -from argilla_server.security.authentication.userinfo import UserInfo +from extralit_server.contexts import accounts +from extralit_server.database import get_async_db +from extralit_server.errors import UnauthorizedError +from extralit_server.models import User +from extralit_server.security.authentication.db import APIKeyAuthenticationBackend, BearerTokenAuthenticationBackend +from extralit_server.security.authentication.userinfo import UserInfo def set_request_user(request: Request, user: User): diff --git a/argilla-server/src/argilla_server/security/authentication/userinfo.py b/argilla-server/src/extralit_server/security/authentication/userinfo.py similarity index 97% rename from argilla-server/src/argilla_server/security/authentication/userinfo.py rename to argilla-server/src/extralit_server/security/authentication/userinfo.py index 53e0d9dc2..52acfae57 100644 --- a/argilla-server/src/argilla_server/security/authentication/userinfo.py +++ b/argilla-server/src/extralit_server/security/authentication/userinfo.py @@ -16,7 +16,7 @@ from starlette.authentication import BaseUser -from argilla_server.enums import UserRole +from extralit_server.enums import UserRole _DEFAULT_USER_ROLE = UserRole.annotator diff --git a/argilla-server/src/argilla_server/security/settings.py b/argilla-server/src/extralit_server/security/settings.py similarity index 92% rename from argilla-server/src/argilla_server/security/settings.py rename to argilla-server/src/extralit_server/security/settings.py index 6835bc618..19583ea63 100644 --- a/argilla-server/src/argilla_server/security/settings.py +++ b/argilla-server/src/extralit_server/security/settings.py @@ -20,7 +20,7 @@ from pydantic_settings import BaseSettings if TYPE_CHECKING: - from argilla_server.security.authentication.oauth2 import OAuth2Settings + from extralit_server.security.authentication.oauth2 import OAuth2Settings class Settings(BaseSettings): @@ -56,7 +56,7 @@ def __init__(self, **kwargs): @property def oauth(self) -> "OAuth2Settings": """Return the oauth settings""" - from argilla_server.security.authentication.oauth2.settings import OAuth2Settings + from extralit_server.security.authentication.oauth2.settings import OAuth2Settings if self._oauth_settings: return self._oauth_settings diff --git a/argilla-server/src/argilla_server/settings.py b/argilla-server/src/extralit_server/settings.py similarity index 99% rename from argilla-server/src/argilla_server/settings.py rename to argilla-server/src/extralit_server/settings.py index ed61e3605..3c90a1dca 100644 --- a/argilla-server/src/argilla_server/settings.py +++ b/argilla-server/src/extralit_server/settings.py @@ -28,7 +28,7 @@ from pydantic_settings import BaseSettings from urllib.parse import urlparse, urlunparse -from argilla_server.constants import ( +from extralit_server.constants import ( DATABASE_POSTGRESQL, DATABASE_SQLITE, DEFAULT_DATABASE_POSTGRESQL_MAX_OVERFLOW, diff --git a/argilla-server/src/argilla_server/static_rewrite.py b/argilla-server/src/extralit_server/static_rewrite.py similarity index 100% rename from argilla-server/src/argilla_server/static_rewrite.py rename to argilla-server/src/extralit_server/static_rewrite.py diff --git a/argilla-server/src/argilla_server/telemetry/__init__.py b/argilla-server/src/extralit_server/telemetry/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/telemetry/__init__.py rename to argilla-server/src/extralit_server/telemetry/__init__.py diff --git a/argilla-server/src/argilla_server/telemetry/_client.py b/argilla-server/src/extralit_server/telemetry/_client.py similarity index 90% rename from argilla-server/src/argilla_server/telemetry/_client.py rename to argilla-server/src/extralit_server/telemetry/_client.py index a9c677bc8..717b56395 100644 --- a/argilla-server/src/argilla_server/telemetry/_client.py +++ b/argilla-server/src/extralit_server/telemetry/_client.py @@ -22,12 +22,12 @@ from fastapi import Request, Response from huggingface_hub.utils import send_telemetry -from argilla_server._version import __version__ -from argilla_server.api.errors.v1.exception_handlers import get_request_error -from argilla_server.integrations.huggingface.spaces import HUGGINGFACE_SETTINGS -from argilla_server.security.authentication.provider import get_request_user -from argilla_server.utils._fastapi import resolve_endpoint_path_for_request -from argilla_server.telemetry._helpers import ( +from extralit_server._version import __version__ +from extralit_server.api.errors.v1.exception_handlers import get_request_error +from extralit_server.integrations.huggingface.spaces import HUGGINGFACE_SETTINGS +from extralit_server.security.authentication.provider import get_request_user +from extralit_server.utils._fastapi import resolve_endpoint_path_for_request +from extralit_server.telemetry._helpers import ( is_running_on_docker_container, server_deployment_type, get_server_id, diff --git a/argilla-server/src/argilla_server/telemetry/_helpers.py b/argilla-server/src/extralit_server/telemetry/_helpers.py similarity index 96% rename from argilla-server/src/argilla_server/telemetry/_helpers.py rename to argilla-server/src/extralit_server/telemetry/_helpers.py index 95a4986bf..f1aebe597 100644 --- a/argilla-server/src/argilla_server/telemetry/_helpers.py +++ b/argilla-server/src/extralit_server/telemetry/_helpers.py @@ -16,8 +16,8 @@ import uuid from uuid import UUID -from argilla_server.integrations.huggingface.spaces import HUGGINGFACE_SETTINGS -from argilla_server.settings import settings +from extralit_server.integrations.huggingface.spaces import HUGGINGFACE_SETTINGS +from extralit_server.settings import settings _LOGGER = logging.getLogger(__name__) diff --git a/argilla-server/src/argilla_server/use_cases/__init__.py b/argilla-server/src/extralit_server/use_cases/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/use_cases/__init__.py rename to argilla-server/src/extralit_server/use_cases/__init__.py diff --git a/argilla-server/src/argilla_server/use_cases/responses/__init__.py b/argilla-server/src/extralit_server/use_cases/responses/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/use_cases/responses/__init__.py rename to argilla-server/src/extralit_server/use_cases/responses/__init__.py diff --git a/argilla-server/src/argilla_server/use_cases/responses/upsert_responses_in_bulk.py b/argilla-server/src/extralit_server/use_cases/responses/upsert_responses_in_bulk.py similarity index 83% rename from argilla-server/src/argilla_server/use_cases/responses/upsert_responses_in_bulk.py rename to argilla-server/src/extralit_server/use_cases/responses/upsert_responses_in_bulk.py index 5cf25afac..cee74de2e 100644 --- a/argilla-server/src/argilla_server/use_cases/responses/upsert_responses_in_bulk.py +++ b/argilla-server/src/extralit_server/use_cases/responses/upsert_responses_in_bulk.py @@ -17,13 +17,13 @@ from fastapi import Depends from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.api.policies.v1 import RecordPolicy, authorize -from argilla_server.api.schemas.v1.responses import Response, ResponseBulk, ResponseBulkError, ResponseUpsert -from argilla_server.contexts import datasets -from argilla_server.database import get_async_db -from argilla_server.errors import future as errors -from argilla_server.models import User -from argilla_server.search_engine import SearchEngine, get_search_engine +from extralit_server.api.policies.v1 import RecordPolicy, authorize +from extralit_server.api.schemas.v1.responses import Response, ResponseBulk, ResponseBulkError, ResponseUpsert +from extralit_server.contexts import datasets +from extralit_server.database import get_async_db +from extralit_server.errors import future as errors +from extralit_server.models import User +from extralit_server.search_engine import SearchEngine, get_search_engine class UpsertResponsesInBulkUseCase: diff --git a/argilla-server/src/argilla_server/utils.py b/argilla-server/src/extralit_server/utils.py similarity index 100% rename from argilla-server/src/argilla_server/utils.py rename to argilla-server/src/extralit_server/utils.py diff --git a/argilla-server/src/argilla_server/utils/__init__.py b/argilla-server/src/extralit_server/utils/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/utils/__init__.py rename to argilla-server/src/extralit_server/utils/__init__.py diff --git a/argilla-server/src/argilla_server/utils/_fastapi.py b/argilla-server/src/extralit_server/utils/_fastapi.py similarity index 100% rename from argilla-server/src/argilla_server/utils/_fastapi.py rename to argilla-server/src/extralit_server/utils/_fastapi.py diff --git a/argilla-server/src/argilla_server/utils/params.py b/argilla-server/src/extralit_server/utils/params.py similarity index 100% rename from argilla-server/src/argilla_server/utils/params.py rename to argilla-server/src/extralit_server/utils/params.py diff --git a/argilla-server/src/argilla_server/utils/str_enum.py b/argilla-server/src/extralit_server/utils/str_enum.py similarity index 100% rename from argilla-server/src/argilla_server/utils/str_enum.py rename to argilla-server/src/extralit_server/utils/str_enum.py diff --git a/argilla-server/src/argilla_server/validators/__init__.py b/argilla-server/src/extralit_server/validators/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/validators/__init__.py rename to argilla-server/src/extralit_server/validators/__init__.py diff --git a/argilla-server/src/argilla_server/validators/datasets.py b/argilla-server/src/extralit_server/validators/datasets.py similarity index 96% rename from argilla-server/src/argilla_server/validators/datasets.py rename to argilla-server/src/extralit_server/validators/datasets.py index 04af1f827..e5e7c70ed 100644 --- a/argilla-server/src/argilla_server/validators/datasets.py +++ b/argilla-server/src/extralit_server/validators/datasets.py @@ -16,8 +16,8 @@ from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.models import Dataset, Field, Question, Workspace -from argilla_server.errors.future import ( +from extralit_server.models import Dataset, Field, Question, Workspace +from extralit_server.errors.future import ( NotUniqueError, UnprocessableEntityError, ) diff --git a/argilla-server/src/argilla_server/validators/questions.py b/argilla-server/src/extralit_server/validators/questions.py similarity index 96% rename from argilla-server/src/argilla_server/validators/questions.py rename to argilla-server/src/extralit_server/validators/questions.py index f3c0ca1e9..f961f8bf8 100644 --- a/argilla-server/src/argilla_server/validators/questions.py +++ b/argilla-server/src/extralit_server/validators/questions.py @@ -14,16 +14,16 @@ from typing import List -from argilla_server.api.schemas.v1.questions import ( +from extralit_server.api.schemas.v1.questions import ( QuestionCreate, QuestionSettings, QuestionSettingsUpdate, QuestionUpdate, SpanQuestionSettings, ) -from argilla_server.enums import QuestionType -from argilla_server.errors.future import UnprocessableEntityError -from argilla_server.models.database import Dataset, Question +from extralit_server.enums import QuestionType +from extralit_server.errors.future import UnprocessableEntityError +from extralit_server.models.database import Dataset, Question class QuestionCreateValidator: diff --git a/argilla-server/src/argilla_server/validators/records.py b/argilla-server/src/extralit_server/validators/records.py similarity index 94% rename from argilla-server/src/argilla_server/validators/records.py rename to argilla-server/src/extralit_server/validators/records.py index 161260e39..32ba3bc20 100644 --- a/argilla-server/src/argilla_server/validators/records.py +++ b/argilla-server/src/extralit_server/validators/records.py @@ -21,17 +21,17 @@ from pydantic import ValidationError from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.api.schemas.v1.chat import ChatFieldValue -from argilla_server.api.schemas.v1.records import RecordCreate, RecordUpsert, RecordUpdate -from argilla_server.api.schemas.v1.records_bulk import RecordsBulkCreate -from argilla_server.api.schemas.v1.responses import UserResponseCreate -from argilla_server.api.schemas.v1.suggestions import SuggestionCreate -from argilla_server.contexts import records -from argilla_server.errors.future.base_errors import UnprocessableEntityError -from argilla_server.models import Dataset, Record -from argilla_server.validators.responses import ResponseCreateValidator -from argilla_server.validators.suggestions import SuggestionCreateValidator -from argilla_server.validators.vectors import VectorValidator +from extralit_server.api.schemas.v1.chat import ChatFieldValue +from extralit_server.api.schemas.v1.records import RecordCreate, RecordUpsert, RecordUpdate +from extralit_server.api.schemas.v1.records_bulk import RecordsBulkCreate +from extralit_server.api.schemas.v1.responses import UserResponseCreate +from extralit_server.api.schemas.v1.suggestions import SuggestionCreate +from extralit_server.contexts import records +from extralit_server.errors.future.base_errors import UnprocessableEntityError +from extralit_server.models import Dataset, Record +from extralit_server.validators.responses import ResponseCreateValidator +from extralit_server.validators.suggestions import SuggestionCreateValidator +from extralit_server.validators.vectors import VectorValidator IMAGE_FIELD_WEB_URL_MAX_LENGTH = 2038 IMAGE_FIELD_DATA_URL_MAX_LENGTH = 5_000_000 @@ -236,7 +236,7 @@ def _validate_vectors(cls, vectors: Optional[dict], dataset: Dataset): @classmethod async def _validate_responses(cls, responses: List[UserResponseCreate], dataset: Dataset, record: Record): - from argilla_server.contexts.accounts import list_users_by_ids + from extralit_server.contexts.accounts import list_users_by_ids if not responses: return diff --git a/argilla-server/src/argilla_server/validators/response_values.py b/argilla-server/src/extralit_server/validators/response_values.py similarity index 98% rename from argilla-server/src/argilla_server/validators/response_values.py rename to argilla-server/src/extralit_server/validators/response_values.py index 3d285a7ba..e27904219 100644 --- a/argilla-server/src/argilla_server/validators/response_values.py +++ b/argilla-server/src/extralit_server/validators/response_values.py @@ -14,7 +14,7 @@ from typing import Optional -from argilla_server.api.schemas.v1.questions import ( +from extralit_server.api.schemas.v1.questions import ( LabelSelectionQuestionSettings, MultiLabelSelectionQuestionSettings, QuestionSettings, @@ -23,7 +23,7 @@ SpanQuestionSettings, TableQuestionSettings, ) -from argilla_server.api.schemas.v1.responses import ( +from extralit_server.api.schemas.v1.responses import ( MultiLabelSelectionQuestionResponseValue, RankingQuestionResponseValue, RatingQuestionResponseValue, @@ -32,9 +32,9 @@ TableQuestionResponseValue, TextAndLabelSelectionQuestionResponseValue, ) -from argilla_server.enums import QuestionType, ResponseStatus -from argilla_server.errors.future import UnprocessableEntityError -from argilla_server.models import Record +from extralit_server.enums import QuestionType, ResponseStatus +from extralit_server.errors.future import UnprocessableEntityError +from extralit_server.models import Record class ResponseValueValidator: diff --git a/argilla-server/src/argilla_server/validators/responses.py b/argilla-server/src/extralit_server/validators/responses.py similarity index 90% rename from argilla-server/src/argilla_server/validators/responses.py rename to argilla-server/src/extralit_server/validators/responses.py index 64ef19be9..6a81f3e05 100644 --- a/argilla-server/src/argilla_server/validators/responses.py +++ b/argilla-server/src/extralit_server/validators/responses.py @@ -14,11 +14,11 @@ from typing import Union -from argilla_server.api.schemas.v1.responses import ResponseCreate, ResponseUpdate, ResponseUpsert -from argilla_server.enums import ResponseStatus -from argilla_server.errors.future import UnprocessableEntityError -from argilla_server.models import Record -from argilla_server.validators.response_values import ResponseValueValidator +from extralit_server.api.schemas.v1.responses import ResponseCreate, ResponseUpdate, ResponseUpsert +from extralit_server.enums import ResponseStatus +from extralit_server.errors.future import UnprocessableEntityError +from extralit_server.models import Record +from extralit_server.validators.response_values import ResponseValueValidator def _is_submitted_response(response: Union[ResponseCreate, ResponseUpdate, ResponseUpsert]) -> bool: diff --git a/argilla-server/src/argilla_server/validators/suggestions.py b/argilla-server/src/extralit_server/validators/suggestions.py similarity index 87% rename from argilla-server/src/argilla_server/validators/suggestions.py rename to argilla-server/src/extralit_server/validators/suggestions.py index bf7c9fbc0..610dd69ff 100644 --- a/argilla-server/src/argilla_server/validators/suggestions.py +++ b/argilla-server/src/extralit_server/validators/suggestions.py @@ -12,11 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.api.schemas.v1.questions import QuestionSettings -from argilla_server.api.schemas.v1.suggestions import SuggestionCreate -from argilla_server.errors.future import UnprocessableEntityError -from argilla_server.models.database import Record -from argilla_server.validators.response_values import ResponseValueValidator +from extralit_server.api.schemas.v1.questions import QuestionSettings +from extralit_server.api.schemas.v1.suggestions import SuggestionCreate +from extralit_server.errors.future import UnprocessableEntityError +from extralit_server.models.database import Record +from extralit_server.validators.response_values import ResponseValueValidator class SuggestionCreateValidator: diff --git a/argilla-server/src/argilla_server/validators/users.py b/argilla-server/src/extralit_server/validators/users.py similarity index 90% rename from argilla-server/src/argilla_server/validators/users.py rename to argilla-server/src/extralit_server/validators/users.py index 47215f53d..d1262e847 100644 --- a/argilla-server/src/argilla_server/validators/users.py +++ b/argilla-server/src/extralit_server/validators/users.py @@ -14,8 +14,8 @@ from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.errors.future import NotUniqueError, UnprocessableEntityError -from argilla_server.models import User +from extralit_server.errors.future import NotUniqueError, UnprocessableEntityError +from extralit_server.models import User class UserCreateValidator: @@ -31,7 +31,7 @@ async def _validate_username(cls, db, user: User): @classmethod async def _validate_unique_username(cls, db, user): - from argilla_server.contexts import accounts + from extralit_server.contexts import accounts if await accounts.get_user_by_username(db, user.username) is not None: raise NotUniqueError(f"User username `{user.username}` is not unique") diff --git a/argilla-server/src/argilla_server/validators/vectors.py b/argilla-server/src/extralit_server/validators/vectors.py similarity index 95% rename from argilla-server/src/argilla_server/validators/vectors.py rename to argilla-server/src/extralit_server/validators/vectors.py index 7d89cd077..bdbfd168a 100644 --- a/argilla-server/src/argilla_server/validators/vectors.py +++ b/argilla-server/src/extralit_server/validators/vectors.py @@ -14,7 +14,7 @@ from typing import List -from argilla_server.models import VectorSettings +from extralit_server.models import VectorSettings class VectorValidator: diff --git a/argilla-server/src/argilla_server/validators/webhooks.py b/argilla-server/src/extralit_server/validators/webhooks.py similarity index 92% rename from argilla-server/src/argilla_server/validators/webhooks.py rename to argilla-server/src/extralit_server/validators/webhooks.py index 064427fbb..80317477a 100644 --- a/argilla-server/src/argilla_server/validators/webhooks.py +++ b/argilla-server/src/extralit_server/validators/webhooks.py @@ -15,8 +15,8 @@ from sqlalchemy import select, func from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.models import Webhook -from argilla_server.errors.future import UnprocessableEntityError +from extralit_server.models import Webhook +from extralit_server.errors.future import UnprocessableEntityError MAXIMUM_NUMBER_OF_WEBHOOKS = 10 diff --git a/argilla-server/src/argilla_server/webhooks/__init__.py b/argilla-server/src/extralit_server/webhooks/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/webhooks/__init__.py rename to argilla-server/src/extralit_server/webhooks/__init__.py diff --git a/argilla-server/src/argilla_server/webhooks/v1/__init__.py b/argilla-server/src/extralit_server/webhooks/v1/__init__.py similarity index 100% rename from argilla-server/src/argilla_server/webhooks/v1/__init__.py rename to argilla-server/src/extralit_server/webhooks/v1/__init__.py diff --git a/argilla-server/src/argilla_server/webhooks/v1/commons.py b/argilla-server/src/extralit_server/webhooks/v1/commons.py similarity index 97% rename from argilla-server/src/argilla_server/webhooks/v1/commons.py rename to argilla-server/src/extralit_server/webhooks/v1/commons.py index bf1a94af7..4bf38ce4d 100644 --- a/argilla-server/src/argilla_server/webhooks/v1/commons.py +++ b/argilla-server/src/extralit_server/webhooks/v1/commons.py @@ -21,7 +21,7 @@ from datetime import datetime, timezone from standardwebhooks.webhooks import Webhook -from argilla_server.models import Webhook as WebhookModel +from extralit_server.models import Webhook as WebhookModel MSG_ID_BYTES_LENGTH = 16 diff --git a/argilla-server/src/argilla_server/webhooks/v1/datasets.py b/argilla-server/src/extralit_server/webhooks/v1/datasets.py similarity index 89% rename from argilla-server/src/argilla_server/webhooks/v1/datasets.py rename to argilla-server/src/extralit_server/webhooks/v1/datasets.py index 620b9cefa..2ab42f8dc 100644 --- a/argilla-server/src/argilla_server/webhooks/v1/datasets.py +++ b/argilla-server/src/extralit_server/webhooks/v1/datasets.py @@ -20,10 +20,10 @@ from sqlalchemy.orm import selectinload from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.models import Dataset -from argilla_server.webhooks.v1.event import Event -from argilla_server.webhooks.v1.schemas import DatasetEventSchema -from argilla_server.webhooks.v1.enums import DatasetEvent +from extralit_server.models import Dataset +from extralit_server.webhooks.v1.event import Event +from extralit_server.webhooks.v1.schemas import DatasetEventSchema +from extralit_server.webhooks.v1.enums import DatasetEvent async def notify_dataset_event(db: AsyncSession, dataset_event: DatasetEvent, dataset: Dataset) -> List[Job]: diff --git a/argilla-server/src/argilla_server/webhooks/v1/enums.py b/argilla-server/src/extralit_server/webhooks/v1/enums.py similarity index 97% rename from argilla-server/src/argilla_server/webhooks/v1/enums.py rename to argilla-server/src/extralit_server/webhooks/v1/enums.py index 25d05688c..c055f38f3 100644 --- a/argilla-server/src/argilla_server/webhooks/v1/enums.py +++ b/argilla-server/src/extralit_server/webhooks/v1/enums.py @@ -15,7 +15,7 @@ try: from enum import StrEnum except ImportError: - from argilla_server.utils.str_enum import StrEnum + from extralit_server.utils.str_enum import StrEnum class WebhookEvent(StrEnum): diff --git a/argilla-server/src/argilla_server/webhooks/v1/event.py b/argilla-server/src/extralit_server/webhooks/v1/event.py similarity index 94% rename from argilla-server/src/argilla_server/webhooks/v1/event.py rename to argilla-server/src/extralit_server/webhooks/v1/event.py index f5f3d9670..adae8010f 100644 --- a/argilla-server/src/argilla_server/webhooks/v1/event.py +++ b/argilla-server/src/extralit_server/webhooks/v1/event.py @@ -18,7 +18,7 @@ from rq.job import Job from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.jobs.webhook_jobs import enqueue_notify_events +from extralit_server.jobs.webhook_jobs import enqueue_notify_events class Event: diff --git a/argilla-server/src/argilla_server/webhooks/v1/ping.py b/argilla-server/src/extralit_server/webhooks/v1/ping.py similarity index 82% rename from argilla-server/src/argilla_server/webhooks/v1/ping.py rename to argilla-server/src/extralit_server/webhooks/v1/ping.py index fcf592e6b..920082609 100644 --- a/argilla-server/src/argilla_server/webhooks/v1/ping.py +++ b/argilla-server/src/extralit_server/webhooks/v1/ping.py @@ -16,10 +16,10 @@ from datetime import datetime -from argilla_server.contexts import info -from argilla_server.models import Webhook -from argilla_server.webhooks.v1.commons import notify_event -from argilla_server.webhooks.v1.enums import WebhookEvent +from extralit_server.contexts import info +from extralit_server.models import Webhook +from extralit_server.webhooks.v1.commons import notify_event +from extralit_server.webhooks.v1.enums import WebhookEvent def notify_ping_event(webhook: Webhook) -> httpx.Response: diff --git a/argilla-server/src/argilla_server/webhooks/v1/records.py b/argilla-server/src/extralit_server/webhooks/v1/records.py similarity index 88% rename from argilla-server/src/argilla_server/webhooks/v1/records.py rename to argilla-server/src/extralit_server/webhooks/v1/records.py index 3352892e3..385550489 100644 --- a/argilla-server/src/argilla_server/webhooks/v1/records.py +++ b/argilla-server/src/extralit_server/webhooks/v1/records.py @@ -20,10 +20,10 @@ from sqlalchemy.orm import selectinload from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.models import Record, Dataset -from argilla_server.webhooks.v1.event import Event -from argilla_server.webhooks.v1.enums import RecordEvent -from argilla_server.webhooks.v1.schemas import RecordEventSchema +from extralit_server.models import Record, Dataset +from extralit_server.webhooks.v1.event import Event +from extralit_server.webhooks.v1.enums import RecordEvent +from extralit_server.webhooks.v1.schemas import RecordEventSchema async def notify_record_event(db: AsyncSession, record_event: RecordEvent, record: Record) -> List[Job]: diff --git a/argilla-server/src/argilla_server/webhooks/v1/responses.py b/argilla-server/src/extralit_server/webhooks/v1/responses.py similarity index 89% rename from argilla-server/src/argilla_server/webhooks/v1/responses.py rename to argilla-server/src/extralit_server/webhooks/v1/responses.py index 79539977a..47dc2708d 100644 --- a/argilla-server/src/argilla_server/webhooks/v1/responses.py +++ b/argilla-server/src/extralit_server/webhooks/v1/responses.py @@ -20,10 +20,10 @@ from sqlalchemy.orm import selectinload from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.models import Response, Record, Dataset -from argilla_server.webhooks.v1.event import Event -from argilla_server.webhooks.v1.enums import ResponseEvent -from argilla_server.webhooks.v1.schemas import ResponseEventSchema +from extralit_server.models import Response, Record, Dataset +from extralit_server.webhooks.v1.event import Event +from extralit_server.webhooks.v1.enums import ResponseEvent +from extralit_server.webhooks.v1.schemas import ResponseEventSchema async def notify_response_event(db: AsyncSession, response_event: ResponseEvent, response: Response) -> List[Job]: diff --git a/argilla-server/src/argilla_server/webhooks/v1/schemas.py b/argilla-server/src/extralit_server/webhooks/v1/schemas.py similarity index 100% rename from argilla-server/src/argilla_server/webhooks/v1/schemas.py rename to argilla-server/src/extralit_server/webhooks/v1/schemas.py diff --git a/argilla-server/tests/conftest.py b/argilla-server/tests/conftest.py index 55b4a53af..71649e39d 100644 --- a/argilla-server/tests/conftest.py +++ b/argilla-server/tests/conftest.py @@ -22,10 +22,10 @@ from sqlalchemy import NullPool, create_engine from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine -from argilla_server.cli.database.migrate import migrate_db -from argilla_server.database import database_url_sync -from argilla_server.jobs.queues import REDIS_CONNECTION -from argilla_server.settings import settings +from extralit_server.cli.database.migrate import migrate_db +from extralit_server.database import database_url_sync +from extralit_server.jobs.queues import REDIS_CONNECTION +from extralit_server.settings import settings from tests.database import SyncTestSession, TestSession, set_task diff --git a/argilla-server/tests/factories.py b/argilla-server/tests/factories.py index 6f3b5c0d9..5196354f4 100644 --- a/argilla-server/tests/factories.py +++ b/argilla-server/tests/factories.py @@ -22,10 +22,10 @@ from factory.builder import BuildStep, StepBuilder, parse_declarations from sqlalchemy.ext.asyncio import async_object_session -from argilla_server.contexts.files import ObjectMetadata, get_minio_client -from argilla_server.enums import DatasetDistributionStrategy, FieldType, MetadataPropertyType, OptionsOrder -from argilla_server.webhooks.v1.enums import WebhookEvent -from argilla_server.models import ( +from extralit_server.contexts.files import ObjectMetadata, get_minio_client +from extralit_server.enums import DatasetDistributionStrategy, FieldType, MetadataPropertyType, OptionsOrder +from extralit_server.webhooks.v1.enums import WebhookEvent +from extralit_server.models import ( Dataset, Document, Field, @@ -45,7 +45,7 @@ Webhook, DatasetUser, ) -from argilla_server.models.base import DatabaseModel +from extralit_server.models.base import DatabaseModel from tests.database import SyncTestSession, TestSession @@ -627,7 +627,7 @@ def build(cls, **kwargs): @classmethod def create(cls, **kwargs): """Create a MinioFile and mock the put_object and get_object methods to return it.""" - from argilla_server.contexts.files import get_minio_client + from extralit_server.contexts.files import get_minio_client file = cls.build(**kwargs) diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_create_dataset_field.py b/argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_create_dataset_field.py index a583a9626..4e5f00ab7 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_create_dataset_field.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_create_dataset_field.py @@ -21,8 +21,8 @@ from httpx import AsyncClient from sqlalchemy import func, select -from argilla_server.enums import FieldType -from argilla_server.models import Field +from extralit_server.enums import FieldType +from extralit_server.models import Field from tests.factories import DatasetFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_list_dataset_fields.py b/argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_list_dataset_fields.py index 0f69abf9c..3d0494117 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_list_dataset_fields.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_list_dataset_fields.py @@ -17,7 +17,7 @@ from uuid import UUID from httpx import AsyncClient -from argilla_server.enums import FieldType +from extralit_server.enums import FieldType from tests.factories import DatasetFactory, ImageFieldFactory, ChatFieldFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_create_dataset_question.py b/argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_create_dataset_question.py index 3c23f6ffc..b55680931 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_create_dataset_question.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_create_dataset_question.py @@ -15,8 +15,8 @@ from uuid import UUID import pytest -from argilla_server.enums import OptionsOrder, QuestionType -from argilla_server.models import Question +from extralit_server.enums import OptionsOrder, QuestionType +from extralit_server.models import Question from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_list_dataset_questions.py b/argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_list_dataset_questions.py index 75f26385a..760049f0b 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_list_dataset_questions.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_list_dataset_questions.py @@ -15,7 +15,7 @@ from uuid import UUID import pytest -from argilla_server.enums import OptionsOrder, QuestionType +from extralit_server.enums import OptionsOrder, QuestionType from httpx import AsyncClient from tests.factories import QuestionFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py index c26e12ed9..53d9c04bf 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py @@ -20,7 +20,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from fastapi.encoders import jsonable_encoder -from argilla_server.enums import ( +from extralit_server.enums import ( DatasetStatus, QuestionType, ResponseStatus, @@ -28,11 +28,11 @@ RecordStatus, DatasetDistributionStrategy, ) -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.models.database import Record, Response, Suggestion, User -from argilla_server.webhooks.v1.enums import RecordEvent -from argilla_server.webhooks.v1.records import build_record_event -from argilla_server.models.database import Record, Response, Suggestion, User +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.models.database import Record, Response, Suggestion, User +from extralit_server.webhooks.v1.enums import RecordEvent +from extralit_server.webhooks.v1.records import build_record_event +from extralit_server.models.database import Record, Response, Suggestion, User from tests.factories import ( DatasetFactory, diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py index 508f94ce4..21e2117dc 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py @@ -16,9 +16,9 @@ import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import DatasetStatus, RecordStatus -from argilla_server.models import Dataset, Record +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import DatasetStatus, RecordStatus +from extralit_server.models import Dataset, Record from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py index f3bda925e..9a507ee87 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py @@ -15,8 +15,8 @@ from uuid import UUID import pytest -from argilla_server.enums import DatasetStatus, QuestionType -from argilla_server.models import Dataset, Response +from extralit_server.enums import DatasetStatus, QuestionType +from extralit_server.models import Dataset, Response from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py index b8146b5be..1867fcf33 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py @@ -14,8 +14,8 @@ from uuid import UUID import pytest -from argilla_server.enums import DatasetStatus, QuestionType -from argilla_server.models import Dataset, Suggestion +from extralit_server.enums import DatasetStatus, QuestionType +from extralit_server.models import Dataset, Suggestion from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py index a6f28f40f..01c2bf18e 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py @@ -14,8 +14,8 @@ from uuid import UUID import pytest -from argilla_server.enums import DatasetStatus -from argilla_server.models import Dataset, Vector +from extralit_server.enums import DatasetStatus +from extralit_server.models import Dataset, Vector from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_update_dataset_records_in_bulk.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_update_dataset_records_in_bulk.py index ffb7a24dc..5bea6de78 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_update_dataset_records_in_bulk.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_update_dataset_records_in_bulk.py @@ -15,8 +15,8 @@ from uuid import UUID import pytest -from argilla_server.enums import DatasetStatus, QuestionType, SuggestionType -from argilla_server.models.database import Record, Suggestion, User +from extralit_server.enums import DatasetStatus, QuestionType, SuggestionType +from extralit_server.models.database import Record, Suggestion, User from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_upsert_dataset_records_bulk.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_upsert_dataset_records_bulk.py index ace0227fc..bf9e41dea 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_upsert_dataset_records_bulk.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_upsert_dataset_records_bulk.py @@ -20,12 +20,12 @@ from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.models import User, Record -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.models import User, Record -from argilla_server.enums import DatasetDistributionStrategy, ResponseStatus, DatasetStatus, RecordStatus -from argilla_server.webhooks.v1.enums import RecordEvent -from argilla_server.webhooks.v1.records import build_record_event +from extralit_server.models import User, Record +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.models import User, Record +from extralit_server.enums import DatasetDistributionStrategy, ResponseStatus, DatasetStatus, RecordStatus +from extralit_server.webhooks.v1.enums import RecordEvent +from extralit_server.webhooks.v1.records import build_record_event from tests.factories import ( DatasetFactory, diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/test_delete_dataset_records.py b/argilla-server/tests/unit/api/handlers/v1/datasets/records/test_delete_dataset_records.py index 19773b351..5f738f180 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/records/test_delete_dataset_records.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/records/test_delete_dataset_records.py @@ -19,9 +19,9 @@ from fastapi.encoders import jsonable_encoder from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.webhooks.v1.enums import RecordEvent -from argilla_server.webhooks.v1.records import build_record_event +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.webhooks.v1.enums import RecordEvent +from extralit_server.webhooks.v1.records import build_record_event from tests.factories import DatasetFactory, RecordFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset.py index b6f1871f9..0181b5d7a 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset.py @@ -20,11 +20,11 @@ from sqlalchemy.ext.asyncio import AsyncSession from fastapi.encoders import jsonable_encoder -from argilla_server.models import Dataset -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.enums import DatasetDistributionStrategy, DatasetStatus -from argilla_server.webhooks.v1.enums import DatasetEvent -from argilla_server.webhooks.v1.datasets import build_dataset_event +from extralit_server.models import Dataset +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.enums import DatasetDistributionStrategy, DatasetStatus +from extralit_server.webhooks.v1.enums import DatasetEvent +from extralit_server.webhooks.v1.datasets import build_dataset_event from tests.factories import WebhookFactory, WorkspaceFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_field.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_field.py index c51197c60..52c99c61f 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_field.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_field.py @@ -19,12 +19,12 @@ import pytest from sqlalchemy import func, select -from argilla_server.api.schemas.v1.fields import FIELD_CREATE_NAME_MAX_LENGTH, FIELD_CREATE_TITLE_MAX_LENGTH -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import ( +from extralit_server.api.schemas.v1.fields import FIELD_CREATE_NAME_MAX_LENGTH, FIELD_CREATE_TITLE_MAX_LENGTH +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import ( DatasetStatus, ) -from argilla_server.models import ( +from extralit_server.models import ( Field, ) from tests.factories import ( diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_metadata_properties.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_metadata_properties.py index 73e713c0c..4b4c52b42 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_metadata_properties.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_metadata_properties.py @@ -20,22 +20,22 @@ import pytest from sqlalchemy import func, select -from argilla_server.api.schemas.v1.metadata_properties import ( +from extralit_server.api.schemas.v1.metadata_properties import ( METADATA_PROPERTY_CREATE_NAME_MAX_LENGTH, METADATA_PROPERTY_CREATE_TITLE_MAX_LENGTH, TERMS_METADATA_PROPERTY_VALUES_MAX_ITEMS, ) -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import ( +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import ( DatasetStatus, ) -from argilla_server.models import ( +from extralit_server.models import ( Field, MetadataProperty, Question, UserRole, ) -from argilla_server.search_engine import ( +from extralit_server.search_engine import ( SearchEngine, ) from tests.factories import ( diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_question.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_question.py index 67a9e4cc4..f117a6ea8 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_question.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_question.py @@ -17,8 +17,8 @@ from uuid import UUID import pytest -from argilla_server.enums import QuestionType -from argilla_server.models import Question +from extralit_server.enums import QuestionType +from extralit_server.models import Question from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_vector_settings.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_vector_settings.py index d5d179fd5..cc599b022 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_vector_settings.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_vector_settings.py @@ -15,7 +15,7 @@ from uuid import UUID import pytest -from argilla_server.contexts.datasets import CREATE_DATASET_VECTOR_SETTINGS_MAX_COUNT +from extralit_server.contexts.datasets import CREATE_DATASET_VECTOR_SETTINGS_MAX_COUNT from httpx import AsyncClient from tests.factories import DatasetFactory, VectorSettingsFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_delete_dataset.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_delete_dataset.py index d01feabcb..46ec31f34 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_delete_dataset.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_delete_dataset.py @@ -19,9 +19,9 @@ from fastapi.encoders import jsonable_encoder from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.webhooks.v1.enums import DatasetEvent -from argilla_server.webhooks.v1.datasets import build_dataset_event +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.webhooks.v1.enums import DatasetEvent +from extralit_server.webhooks.v1.datasets import build_dataset_event from tests.factories import DatasetFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py index 52b6c704d..49d62d40b 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py @@ -18,8 +18,8 @@ from rq.job import JobStatus from httpx import AsyncClient -from argilla_server.jobs.queues import DEFAULT_QUEUE -from argilla_server.constants import API_KEY_HEADER_NAME +from extralit_server.jobs.queues import DEFAULT_QUEUE +from extralit_server.constants import API_KEY_HEADER_NAME from tests.factories import AdminFactory, DatasetFactory, AnnotatorFactory, RecordFactory from huggingface_hub.errors import HfHubHTTPError diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py index 6bbb3cf79..fb56b839f 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py @@ -17,9 +17,9 @@ from uuid import UUID, uuid4 from httpx import AsyncClient -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import UserRole, RecordStatus -from argilla_server.search_engine import SearchEngine +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import UserRole, RecordStatus +from extralit_server.search_engine import SearchEngine from tests.factories import DatasetFactory, RecordFactory, UserFactory, DatasetUserFactory from tests.unit.conftest import annotator diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py index e6e49f508..f7b817b37 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py @@ -17,8 +17,8 @@ import pytest from httpx import AsyncClient -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import RecordStatus, UserRole, ResponseStatus +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import RecordStatus, UserRole, ResponseStatus from tests.factories import DatasetFactory, RecordFactory, AnnotatorFactory, ResponseFactory, UserFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_list_current_user_datasets.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_list_current_user_datasets.py index 10f828ce0..6cc94c2f7 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_list_current_user_datasets.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_list_current_user_datasets.py @@ -16,8 +16,8 @@ from httpx import AsyncClient from datetime import timedelta -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import DatasetStatus, UserRole +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import DatasetStatus, UserRole from tests.factories import DatasetFactory, WorkspaceUserFactory, WorkspaceFactory, UserFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_list_dataset_records_search_suggestions_options.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_list_dataset_records_search_suggestions_options.py index 2e6ab80df..04b54a60f 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_list_dataset_records_search_suggestions_options.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_list_dataset_records_search_suggestions_options.py @@ -15,7 +15,7 @@ from uuid import UUID, uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME +from extralit_server.constants import API_KEY_HEADER_NAME from httpx import AsyncClient from tests.factories import ( diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_publish_dataset.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_publish_dataset.py index 9fb3a1148..208a86e0b 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_publish_dataset.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_publish_dataset.py @@ -19,9 +19,9 @@ from fastapi.encoders import jsonable_encoder from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.webhooks.v1.enums import DatasetEvent -from argilla_server.webhooks.v1.datasets import build_dataset_event +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.webhooks.v1.enums import DatasetEvent +from extralit_server.webhooks.v1.datasets import build_dataset_event from tests.factories import DatasetFactory, TextFieldFactory, RatingQuestionFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_questions.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_questions.py index c2bcf2be9..5b05ea9c8 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_questions.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_questions.py @@ -16,7 +16,7 @@ from uuid import UUID, uuid4 import pytest -from argilla_server.api.schemas.v1.questions import ( +from extralit_server.api.schemas.v1.questions import ( QUESTION_CREATE_DESCRIPTION_MAX_LENGTH, QUESTION_CREATE_NAME_MAX_LENGTH, QUESTION_CREATE_TITLE_MAX_LENGTH, @@ -27,10 +27,10 @@ VALUE_TEXT_OPTION_TEXT_MAX_LENGTH, VALUE_TEXT_OPTION_VALUE_MAX_LENGTH, ) -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import DatasetStatus -from argilla_server.models import Question -from argilla_server.settings import settings +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import DatasetStatus +from extralit_server.models import Question +from extralit_server.settings import settings from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_search_current_user_dataset_records.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_search_current_user_dataset_records.py index 8d4981e82..b0e59018c 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_search_current_user_dataset_records.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_search_current_user_dataset_records.py @@ -15,9 +15,9 @@ from uuid import UUID import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import UserRole, RecordStatus -from argilla_server.search_engine import SearchEngine, SearchResponseItem, SearchResponses +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import UserRole, RecordStatus +from extralit_server.search_engine import SearchEngine, SearchResponseItem, SearchResponses from httpx import AsyncClient from tests.factories import ( diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_search_dataset_records.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_search_dataset_records.py index 5e3c6653d..4e91c7578 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_search_dataset_records.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_search_dataset_records.py @@ -15,10 +15,10 @@ from uuid import UUID, uuid4 import pytest -from argilla_server.api.handlers.v1.datasets.records import LIST_DATASET_RECORDS_LIMIT_LE -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import RecordInclude, SortOrder, RecordStatus -from argilla_server.search_engine import ( +from extralit_server.api.handlers.v1.datasets.records import LIST_DATASET_RECORDS_LIMIT_LE +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import RecordInclude, SortOrder, RecordStatus +from extralit_server.search_engine import ( AndFilter, Order, RangeFilter, diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_update_dataset.py b/argilla-server/tests/unit/api/handlers/v1/datasets/test_update_dataset.py index 6c69d8abe..5259623ab 100644 --- a/argilla-server/tests/unit/api/handlers/v1/datasets/test_update_dataset.py +++ b/argilla-server/tests/unit/api/handlers/v1/datasets/test_update_dataset.py @@ -20,10 +20,10 @@ from sqlalchemy.ext.asyncio import AsyncSession from fastapi.encoders import jsonable_encoder -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.enums import DatasetDistributionStrategy, DatasetStatus -from argilla_server.webhooks.v1.datasets import build_dataset_event -from argilla_server.webhooks.v1.enums import DatasetEvent +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.enums import DatasetDistributionStrategy, DatasetStatus +from extralit_server.webhooks.v1.datasets import build_dataset_event +from extralit_server.webhooks.v1.enums import DatasetEvent from tests.factories import DatasetFactory, RecordFactory, ResponseFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/fields/test_update_field.py b/argilla-server/tests/unit/api/handlers/v1/fields/test_update_field.py index 7a6542b75..7918f42b7 100644 --- a/argilla-server/tests/unit/api/handlers/v1/fields/test_update_field.py +++ b/argilla-server/tests/unit/api/handlers/v1/fields/test_update_field.py @@ -20,7 +20,7 @@ from typing_extensions import Any from uuid import UUID -from argilla_server.enums import FieldType +from extralit_server.enums import FieldType from tests.factories import ImageFieldFactory, ChatFieldFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/info/test_get_status.py b/argilla-server/tests/unit/api/handlers/v1/info/test_get_status.py index e337bf20c..0f1f97b2e 100644 --- a/argilla-server/tests/unit/api/handlers/v1/info/test_get_status.py +++ b/argilla-server/tests/unit/api/handlers/v1/info/test_get_status.py @@ -13,8 +13,8 @@ # limitations under the License. import pytest -from argilla_server._version import __version__ -from argilla_server.search_engine import SearchEngine +from extralit_server._version import __version__ +from extralit_server.search_engine import SearchEngine from httpx import AsyncClient diff --git a/argilla-server/tests/unit/api/handlers/v1/info/test_get_version.py b/argilla-server/tests/unit/api/handlers/v1/info/test_get_version.py index c00f576ff..498cb2fc8 100644 --- a/argilla-server/tests/unit/api/handlers/v1/info/test_get_version.py +++ b/argilla-server/tests/unit/api/handlers/v1/info/test_get_version.py @@ -13,7 +13,7 @@ # limitations under the License. import pytest -from argilla_server._version import __version__ +from extralit_server._version import __version__ from httpx import AsyncClient diff --git a/argilla-server/tests/unit/api/handlers/v1/questions/test_update_question.py b/argilla-server/tests/unit/api/handlers/v1/questions/test_update_question.py index ba6688696..857c5bbfc 100644 --- a/argilla-server/tests/unit/api/handlers/v1/questions/test_update_question.py +++ b/argilla-server/tests/unit/api/handlers/v1/questions/test_update_question.py @@ -15,7 +15,7 @@ from uuid import UUID import pytest -from argilla_server.enums import OptionsOrder, QuestionType +from extralit_server.enums import OptionsOrder, QuestionType from httpx import AsyncClient from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/records/test_create_record_response.py b/argilla-server/tests/unit/api/handlers/v1/records/test_create_record_response.py index 68fbd9368..2b7d38178 100644 --- a/argilla-server/tests/unit/api/handlers/v1/records/test_create_record_response.py +++ b/argilla-server/tests/unit/api/handlers/v1/records/test_create_record_response.py @@ -21,12 +21,12 @@ from sqlalchemy.ext.asyncio import AsyncSession from fastapi.encoders import jsonable_encoder -from argilla_server.models import Response, User -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.webhooks.v1.enums import RecordEvent, ResponseEvent -from argilla_server.webhooks.v1.responses import build_response_event -from argilla_server.webhooks.v1.records import build_record_event -from argilla_server.enums import ResponseStatus, RecordStatus, DatasetDistributionStrategy +from extralit_server.models import Response, User +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.webhooks.v1.enums import RecordEvent, ResponseEvent +from extralit_server.webhooks.v1.responses import build_response_event +from extralit_server.webhooks.v1.records import build_record_event +from extralit_server.enums import ResponseStatus, RecordStatus, DatasetDistributionStrategy from tests.factories import DatasetFactory, RecordFactory, SpanQuestionFactory, TextQuestionFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/records/test_delete_record.py b/argilla-server/tests/unit/api/handlers/v1/records/test_delete_record.py index ab017e50f..24dc4190b 100644 --- a/argilla-server/tests/unit/api/handlers/v1/records/test_delete_record.py +++ b/argilla-server/tests/unit/api/handlers/v1/records/test_delete_record.py @@ -19,9 +19,9 @@ from fastapi.encoders import jsonable_encoder from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.webhooks.v1.enums import RecordEvent -from argilla_server.webhooks.v1.records import build_record_event +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.webhooks.v1.enums import RecordEvent +from extralit_server.webhooks.v1.records import build_record_event from tests.factories import RecordFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/records/test_update_record.py b/argilla-server/tests/unit/api/handlers/v1/records/test_update_record.py index 48044b018..53f0d1a6b 100644 --- a/argilla-server/tests/unit/api/handlers/v1/records/test_update_record.py +++ b/argilla-server/tests/unit/api/handlers/v1/records/test_update_record.py @@ -19,9 +19,9 @@ from fastapi.encoders import jsonable_encoder from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.webhooks.v1.enums import RecordEvent -from argilla_server.webhooks.v1.records import build_record_event +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.webhooks.v1.enums import RecordEvent +from extralit_server.webhooks.v1.records import build_record_event from tests.factories import RecordFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py b/argilla-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py index 1e9586322..156113bb5 100644 --- a/argilla-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py +++ b/argilla-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py @@ -17,8 +17,8 @@ from uuid import UUID, uuid4 import pytest -from argilla_server.enums import QuestionType, SuggestionType -from argilla_server.models import Suggestion +from extralit_server.enums import QuestionType, SuggestionType +from extralit_server.models import Suggestion from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py b/argilla-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py index 5eb0cdda7..bda017c32 100644 --- a/argilla-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py +++ b/argilla-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py @@ -23,15 +23,15 @@ from sqlalchemy.ext.asyncio import AsyncSession from fastapi.encoders import jsonable_encoder -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import DatasetDistributionStrategy, ResponseStatus, RecordStatus -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.models import Response, User -from argilla_server.search_engine import SearchEngine -from argilla_server.use_cases.responses.upsert_responses_in_bulk import UpsertResponsesInBulkUseCase -from argilla_server.webhooks.v1.enums import RecordEvent, ResponseEvent -from argilla_server.webhooks.v1.responses import build_response_event -from argilla_server.webhooks.v1.records import build_record_event +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import DatasetDistributionStrategy, ResponseStatus, RecordStatus +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.models import Response, User +from extralit_server.search_engine import SearchEngine +from extralit_server.use_cases.responses.upsert_responses_in_bulk import UpsertResponsesInBulkUseCase +from extralit_server.webhooks.v1.enums import RecordEvent, ResponseEvent +from extralit_server.webhooks.v1.responses import build_response_event +from extralit_server.webhooks.v1.records import build_record_event from tests.factories import ( AnnotatorFactory, DatasetFactory, @@ -410,8 +410,8 @@ async def test_too_many_responses(self, async_client: AsyncClient, owner_auth_he @pytest.mark.skipif(reason="Profiling is not active", condition=not bool(os.getenv("TEST_PROFILING", None))) async def test_create_responses_in_bulk_profiling(self, db: "AsyncSession", elasticsearch_config: dict): - from argilla_server.api.schemas.v1.responses import DraftResponseUpsert - from argilla_server.search_engine import ElasticSearchEngine + from extralit_server.api.schemas.v1.responses import DraftResponseUpsert + from extralit_server.search_engine import ElasticSearchEngine from pyinstrument import Profiler from tests.factories import OwnerFactory, TextFieldFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/responses/test_delete_response.py b/argilla-server/tests/unit/api/handlers/v1/responses/test_delete_response.py index af66f6d2e..4965cfa61 100644 --- a/argilla-server/tests/unit/api/handlers/v1/responses/test_delete_response.py +++ b/argilla-server/tests/unit/api/handlers/v1/responses/test_delete_response.py @@ -19,12 +19,12 @@ from fastapi.encoders import jsonable_encoder from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.models import User -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.webhooks.v1.enums import RecordEvent, ResponseEvent -from argilla_server.webhooks.v1.responses import build_response_event -from argilla_server.webhooks.v1.records import build_record_event -from argilla_server.enums import DatasetDistributionStrategy, RecordStatus, ResponseStatus +from extralit_server.models import User +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.webhooks.v1.enums import RecordEvent, ResponseEvent +from extralit_server.webhooks.v1.responses import build_response_event +from extralit_server.webhooks.v1.records import build_record_event +from extralit_server.enums import DatasetDistributionStrategy, RecordStatus, ResponseStatus from tests.factories import DatasetFactory, RecordFactory, ResponseFactory, TextQuestionFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/responses/test_update_response.py b/argilla-server/tests/unit/api/handlers/v1/responses/test_update_response.py index 4d5f8a479..9fbc4e8ad 100644 --- a/argilla-server/tests/unit/api/handlers/v1/responses/test_update_response.py +++ b/argilla-server/tests/unit/api/handlers/v1/responses/test_update_response.py @@ -21,12 +21,12 @@ from sqlalchemy.ext.asyncio.session import AsyncSession from fastapi.encoders import jsonable_encoder -from argilla_server.models import Response, User -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.webhooks.v1.enums import RecordEvent, ResponseEvent -from argilla_server.webhooks.v1.responses import build_response_event -from argilla_server.webhooks.v1.records import build_record_event -from argilla_server.enums import ResponseStatus, DatasetDistributionStrategy, RecordStatus +from extralit_server.models import Response, User +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.webhooks.v1.enums import RecordEvent, ResponseEvent +from extralit_server.webhooks.v1.responses import build_response_event +from extralit_server.webhooks.v1.records import build_record_event +from extralit_server.enums import ResponseStatus, DatasetDistributionStrategy, RecordStatus from tests.factories import ( DatasetFactory, diff --git a/argilla-server/tests/unit/api/handlers/v1/settings/test_get_settings.py b/argilla-server/tests/unit/api/handlers/v1/settings/test_get_settings.py index f9df63245..c76149172 100644 --- a/argilla-server/tests/unit/api/handlers/v1/settings/test_get_settings.py +++ b/argilla-server/tests/unit/api/handlers/v1/settings/test_get_settings.py @@ -16,10 +16,10 @@ from unittest import mock import pytest -from argilla_server.contexts import settings as settings_context -from argilla_server.contexts.settings import HUGGINGFACE_SETTINGS -from argilla_server.integrations.huggingface.spaces import HuggingfaceSettings -from argilla_server.settings import settings as argilla_server_settings, settings +from extralit_server.contexts import settings as settings_context +from extralit_server.contexts.settings import HUGGINGFACE_SETTINGS +from extralit_server.integrations.huggingface.spaces import HuggingfaceSettings +from extralit_server.settings import settings as argilla_server_settings, settings from httpx import AsyncClient diff --git a/argilla-server/tests/unit/api/handlers/v1/test_bulk_documents.py b/argilla-server/tests/unit/api/handlers/v1/test_bulk_documents.py index 7c2288dc2..6810e399a 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_bulk_documents.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_bulk_documents.py @@ -20,8 +20,8 @@ from fastapi import status from httpx import AsyncClient -from argilla_server.models import UserRole -from argilla_server.api.schemas.v1.imports import DocumentsBulkResponse +from extralit_server.models import UserRole +from extralit_server.api.schemas.v1.imports import DocumentsBulkResponse from tests.factories import WorkspaceFactory, UserFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/test_datasets.py b/argilla-server/tests/unit/api/handlers/v1/test_datasets.py index f22cb103c..b9ba307dd 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_datasets.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_datasets.py @@ -22,16 +22,16 @@ import pytest from sqlalchemy import func, inspect, select -from argilla_server.api.handlers.v1.datasets.records import LIST_DATASET_RECORDS_LIMIT_DEFAULT -from argilla_server.api.schemas.v1.datasets import DATASET_GUIDELINES_MAX_LENGTH, DATASET_NAME_MAX_LENGTH -from argilla_server.api.schemas.v1.fields import FIELD_CREATE_NAME_MAX_LENGTH, FIELD_CREATE_TITLE_MAX_LENGTH -from argilla_server.api.schemas.v1.records import RECORDS_CREATE_MAX_ITEMS, RECORDS_CREATE_MIN_ITEMS -from argilla_server.api.schemas.v1.vector_settings import ( +from extralit_server.api.handlers.v1.datasets.records import LIST_DATASET_RECORDS_LIMIT_DEFAULT +from extralit_server.api.schemas.v1.datasets import DATASET_GUIDELINES_MAX_LENGTH, DATASET_NAME_MAX_LENGTH +from extralit_server.api.schemas.v1.fields import FIELD_CREATE_NAME_MAX_LENGTH, FIELD_CREATE_TITLE_MAX_LENGTH +from extralit_server.api.schemas.v1.records import RECORDS_CREATE_MAX_ITEMS, RECORDS_CREATE_MIN_ITEMS +from extralit_server.api.schemas.v1.vector_settings import ( VECTOR_SETTINGS_CREATE_NAME_MAX_LENGTH, VECTOR_SETTINGS_CREATE_TITLE_MAX_LENGTH, ) -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import ( +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import ( DatasetDistributionStrategy, DatasetStatus, OptionsOrder, @@ -41,7 +41,7 @@ SimilarityOrder, SortOrder, ) -from argilla_server.models import ( +from extralit_server.models import ( Dataset, Field, Question, @@ -54,7 +54,7 @@ Vector, VectorSettings, ) -from argilla_server.search_engine import ( +from extralit_server.search_engine import ( AndFilter, MetadataFilterScope, Order, diff --git a/argilla-server/tests/unit/api/handlers/v1/test_documents.py b/argilla-server/tests/unit/api/handlers/v1/test_documents.py index 3571bb6cf..812d0725a 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_documents.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_documents.py @@ -20,8 +20,8 @@ from sqlalchemy.ext.asyncio import AsyncSession from tests.factories import DocumentFactory, WorkspaceFactory, UserFactory, WorkspaceUserFactory -from argilla_server.contexts.files import get_pdf_s3_object_path, get_s3_object_url -from argilla_server.models.database import Document +from extralit_server.contexts.files import get_pdf_s3_object_path, get_s3_object_url +from extralit_server.models.database import Document from pydantic import BaseModel diff --git a/argilla-server/tests/unit/api/handlers/v1/test_fields.py b/argilla-server/tests/unit/api/handlers/v1/test_fields.py index 9fe8d8abd..643f6cfe4 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_fields.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_fields.py @@ -17,9 +17,9 @@ from uuid import uuid4 import pytest -from argilla_server.api.schemas.v1.fields import FIELD_CREATE_TITLE_MAX_LENGTH -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.models import DatasetStatus, Field, UserRole +from extralit_server.api.schemas.v1.fields import FIELD_CREATE_TITLE_MAX_LENGTH +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.models import DatasetStatus, Field, UserRole from sqlalchemy import func, select from tests.factories import ( diff --git a/argilla-server/tests/unit/api/handlers/v1/test_files.py b/argilla-server/tests/unit/api/handlers/v1/test_files.py index 0166f0285..c22071e91 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_files.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_files.py @@ -18,8 +18,8 @@ import os import pytest -from argilla_server.contexts.files import ListObjectsResponse, ObjectMetadata -from argilla_server.constants import API_KEY_HEADER_NAME +from extralit_server.contexts.files import ListObjectsResponse, ObjectMetadata +from extralit_server.constants import API_KEY_HEADER_NAME from tests.factories import ( MinioFileFactory, diff --git a/argilla-server/tests/unit/api/handlers/v1/test_imports.py b/argilla-server/tests/unit/api/handlers/v1/test_imports.py index eaa55332a..cf1e2f48a 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_imports.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_imports.py @@ -17,8 +17,8 @@ from fastapi import status from httpx import AsyncClient -from argilla_server.api.schemas.v1.documents import DocumentCreate -from argilla_server.api.schemas.v1.imports import ( +from extralit_server.api.schemas.v1.documents import DocumentCreate +from extralit_server.api.schemas.v1.imports import ( FileInfo, DocumentMetadata, ImportAnalysisRequest, @@ -26,7 +26,7 @@ ImportHistoryCreate, ) -from argilla_server.models import UserRole +from extralit_server.models import UserRole from tests.factories import DocumentFactory, WorkspaceFactory, UserFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/test_list_dataset_records.py b/argilla-server/tests/unit/api/handlers/v1/test_list_dataset_records.py index 3dc3546d2..5019f0276 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_list_dataset_records.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_list_dataset_records.py @@ -17,9 +17,9 @@ import pytest from httpx import AsyncClient -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import RecordInclude, ResponseStatus -from argilla_server.models import Dataset, Question, Record, Response, Suggestion, User, Workspace +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import RecordInclude, ResponseStatus +from extralit_server.models import Dataset, Question, Record, Response, Suggestion, User, Workspace from tests.factories import ( AdminFactory, AnnotatorFactory, diff --git a/argilla-server/tests/unit/api/handlers/v1/test_metadata_properties.py b/argilla-server/tests/unit/api/handlers/v1/test_metadata_properties.py index 4a2bacdd1..f79812b0f 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_metadata_properties.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_metadata_properties.py @@ -18,11 +18,11 @@ import pytest from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.api.schemas.v1.metadata_properties import METADATA_PROPERTY_CREATE_TITLE_MAX_LENGTH -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import MetadataPropertyType, UserRole -from argilla_server.models import MetadataProperty, UserRole -from argilla_server.search_engine import FloatMetadataMetrics, IntegerMetadataMetrics, TermsMetrics +from extralit_server.api.schemas.v1.metadata_properties import METADATA_PROPERTY_CREATE_TITLE_MAX_LENGTH +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import MetadataPropertyType, UserRole +from extralit_server.models import MetadataProperty, UserRole +from extralit_server.search_engine import FloatMetadataMetrics, IntegerMetadataMetrics, TermsMetrics from sqlalchemy import func, select from tests.factories import ( @@ -37,7 +37,7 @@ ) if TYPE_CHECKING: - from argilla_server.search_engine import MetadataMetrics, SearchEngine + from extralit_server.search_engine import MetadataMetrics, SearchEngine from httpx import AsyncClient diff --git a/argilla-server/tests/unit/api/handlers/v1/test_models.py b/argilla-server/tests/unit/api/handlers/v1/test_models.py index 4ed4980e0..665e1dc67 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_models.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_models.py @@ -16,9 +16,9 @@ import pytest from unittest.mock import patch, MagicMock -from argilla_server.api.handlers.v1.models import proxy -from argilla_server.models import User -from argilla_server.errors import BadRequestError +from extralit_server.api.handlers.v1.models import proxy +from extralit_server.models import User +from extralit_server.errors import BadRequestError from starlette.requests import Request from starlette.responses import StreamingResponse diff --git a/argilla-server/tests/unit/api/handlers/v1/test_oauth2.py b/argilla-server/tests/unit/api/handlers/v1/test_oauth2.py index be29523c4..080c07794 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_oauth2.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_oauth2.py @@ -21,11 +21,11 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import selectinload -from argilla_server.enums import UserRole -from argilla_server.errors.future import AuthenticationError -from argilla_server.models import User -from argilla_server.security.authentication import JWT -from argilla_server.security.authentication.oauth2 import OAuth2Settings +from extralit_server.enums import UserRole +from extralit_server.errors.future import AuthenticationError +from extralit_server.models import User +from extralit_server.security.authentication import JWT +from extralit_server.security.authentication.oauth2 import OAuth2Settings from tests.factories import AdminFactory, AnnotatorFactory, WorkspaceFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/test_questions.py b/argilla-server/tests/unit/api/handlers/v1/test_questions.py index 325187fdc..fd19fd725 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_questions.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_questions.py @@ -16,13 +16,13 @@ from uuid import uuid4 import pytest -from argilla_server.api.schemas.v1.questions import ( +from extralit_server.api.schemas.v1.questions import ( QUESTION_CREATE_DESCRIPTION_MAX_LENGTH, QUESTION_CREATE_TITLE_MAX_LENGTH, ) -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import OptionsOrder -from argilla_server.models import DatasetStatus, Question, UserRole +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import OptionsOrder +from extralit_server.models import DatasetStatus, Question, UserRole from sqlalchemy import func, select from tests.factories import ( diff --git a/argilla-server/tests/unit/api/handlers/v1/test_records.py b/argilla-server/tests/unit/api/handlers/v1/test_records.py index 8675b5217..c3d1ddff4 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_records.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_records.py @@ -19,10 +19,10 @@ import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import RecordStatus, ResponseStatus -from argilla_server.models import Dataset, Record, Response, Suggestion, User, UserRole -from argilla_server.search_engine import SearchEngine +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import RecordStatus, ResponseStatus +from extralit_server.models import Dataset, Record, Response, Suggestion, User, UserRole +from extralit_server.search_engine import SearchEngine from sqlalchemy import func, select from sqlalchemy.orm import Session @@ -49,7 +49,7 @@ ) if TYPE_CHECKING: - from argilla_server.models import Dataset + from extralit_server.models import Dataset from httpx import AsyncClient from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/test_responses.py b/argilla-server/tests/unit/api/handlers/v1/test_responses.py index 547e6faef..7d94b5b95 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_responses.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_responses.py @@ -17,9 +17,9 @@ from uuid import uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.models import DatasetStatus, Response, ResponseStatus, UserRole -from argilla_server.search_engine import SearchEngine +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.models import DatasetStatus, Response, ResponseStatus, UserRole +from extralit_server.search_engine import SearchEngine from sqlalchemy import func, select from tests.factories import ( @@ -38,7 +38,7 @@ ) if TYPE_CHECKING: - from argilla_server.models import User + from extralit_server.models import User from httpx import AsyncClient from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/test_suggestions.py b/argilla-server/tests/unit/api/handlers/v1/test_suggestions.py index 5f83800df..16ae679ff 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_suggestions.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_suggestions.py @@ -17,9 +17,9 @@ from uuid import uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.models import Suggestion, UserRole -from argilla_server.search_engine import SearchEngine +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.models import Suggestion, UserRole +from extralit_server.search_engine import SearchEngine from sqlalchemy import func, select from tests.factories import SuggestionFactory, UserFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/test_users.py b/argilla-server/tests/unit/api/handlers/v1/test_users.py index 03851897d..1a884b16d 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_users.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_users.py @@ -16,8 +16,8 @@ from uuid import uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.models import UserRole +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.models import UserRole from tests.factories import UserFactory, WorkspaceFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/test_vectors_settings.py b/argilla-server/tests/unit/api/handlers/v1/test_vectors_settings.py index fb58a34e6..0e0fb21dc 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_vectors_settings.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_vectors_settings.py @@ -16,9 +16,9 @@ from uuid import uuid4 import pytest -from argilla_server.api.schemas.v1.vector_settings import VECTOR_SETTINGS_CREATE_TITLE_MAX_LENGTH -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import UserRole +from extralit_server.api.schemas.v1.vector_settings import VECTOR_SETTINGS_CREATE_TITLE_MAX_LENGTH +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import UserRole from tests.factories import AdminFactory, AnnotatorFactory, UserFactory, VectorSettingsFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/test_workspaces.py b/argilla-server/tests/unit/api/handlers/v1/test_workspaces.py index dd2edcbfc..ab16c1346 100644 --- a/argilla-server/tests/unit/api/handlers/v1/test_workspaces.py +++ b/argilla-server/tests/unit/api/handlers/v1/test_workspaces.py @@ -15,8 +15,8 @@ from uuid import uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.models import UserRole +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.models import UserRole from httpx import AsyncClient from tests.factories import AnnotatorFactory, DatasetFactory, UserFactory, WorkspaceFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_create_user.py b/argilla-server/tests/unit/api/handlers/v1/users/test_create_user.py index 4c9bf2f2e..577b8dd90 100644 --- a/argilla-server/tests/unit/api/handlers/v1/users/test_create_user.py +++ b/argilla-server/tests/unit/api/handlers/v1/users/test_create_user.py @@ -14,9 +14,9 @@ from uuid import uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import UserRole -from argilla_server.models import User +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import UserRole +from extralit_server.models import User from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_delete_user.py b/argilla-server/tests/unit/api/handlers/v1/users/test_delete_user.py index 9d3341a25..0c514856c 100644 --- a/argilla-server/tests/unit/api/handlers/v1/users/test_delete_user.py +++ b/argilla-server/tests/unit/api/handlers/v1/users/test_delete_user.py @@ -15,9 +15,9 @@ from uuid import UUID, uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import UserRole -from argilla_server.models import User +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import UserRole +from extralit_server.models import User from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_get_current_user.py b/argilla-server/tests/unit/api/handlers/v1/users/test_get_current_user.py index e0d29f93e..4373ce4ad 100644 --- a/argilla-server/tests/unit/api/handlers/v1/users/test_get_current_user.py +++ b/argilla-server/tests/unit/api/handlers/v1/users/test_get_current_user.py @@ -13,7 +13,7 @@ # limitations under the License. import pytest -from argilla_server.models import User +from extralit_server.models import User from httpx import AsyncClient diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_get_user.py b/argilla-server/tests/unit/api/handlers/v1/users/test_get_user.py index da509891d..bceca9229 100644 --- a/argilla-server/tests/unit/api/handlers/v1/users/test_get_user.py +++ b/argilla-server/tests/unit/api/handlers/v1/users/test_get_user.py @@ -15,8 +15,8 @@ from uuid import UUID, uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import UserRole +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import UserRole from httpx import AsyncClient from tests.factories import UserFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_list_users.py b/argilla-server/tests/unit/api/handlers/v1/users/test_list_users.py index 358d710d3..561fb97c5 100644 --- a/argilla-server/tests/unit/api/handlers/v1/users/test_list_users.py +++ b/argilla-server/tests/unit/api/handlers/v1/users/test_list_users.py @@ -13,9 +13,9 @@ # limitations under the License. import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import UserRole -from argilla_server.models import User +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import UserRole +from extralit_server.models import User from httpx import AsyncClient from tests.factories import UserFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_update_user.py b/argilla-server/tests/unit/api/handlers/v1/users/test_update_user.py index 08615cca4..15078aa58 100644 --- a/argilla-server/tests/unit/api/handlers/v1/users/test_update_user.py +++ b/argilla-server/tests/unit/api/handlers/v1/users/test_update_user.py @@ -14,10 +14,10 @@ import pytest from uuid import UUID, uuid4 -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.contexts import accounts -from argilla_server.enums import UserRole -from argilla_server.models import User +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.contexts import accounts +from extralit_server.enums import UserRole +from extralit_server.models import User from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_create_webhook.py b/argilla-server/tests/unit/api/handlers/v1/webhooks/test_create_webhook.py index 301b284d3..c313191e8 100644 --- a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_create_webhook.py +++ b/argilla-server/tests/unit/api/handlers/v1/webhooks/test_create_webhook.py @@ -19,9 +19,9 @@ from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.webhooks.v1.enums import WebhookEvent -from argilla_server.models import Webhook -from argilla_server.constants import API_KEY_HEADER_NAME +from extralit_server.webhooks.v1.enums import WebhookEvent +from extralit_server.models import Webhook +from extralit_server.constants import API_KEY_HEADER_NAME from tests.factories import AdminFactory, AnnotatorFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_delete_webhook.py b/argilla-server/tests/unit/api/handlers/v1/webhooks/test_delete_webhook.py index f48b12dcb..13d4a70fe 100644 --- a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_delete_webhook.py +++ b/argilla-server/tests/unit/api/handlers/v1/webhooks/test_delete_webhook.py @@ -19,9 +19,9 @@ from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.webhooks.v1.enums import WebhookEvent -from argilla_server.models import Webhook -from argilla_server.constants import API_KEY_HEADER_NAME +from extralit_server.webhooks.v1.enums import WebhookEvent +from extralit_server.models import Webhook +from extralit_server.constants import API_KEY_HEADER_NAME from tests.factories import AdminFactory, AnnotatorFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_list_webhooks.py b/argilla-server/tests/unit/api/handlers/v1/webhooks/test_list_webhooks.py index 5738e23f5..62c2ba4e0 100644 --- a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_list_webhooks.py +++ b/argilla-server/tests/unit/api/handlers/v1/webhooks/test_list_webhooks.py @@ -16,8 +16,8 @@ from httpx import AsyncClient -from argilla_server.webhooks.v1.enums import WebhookEvent -from argilla_server.constants import API_KEY_HEADER_NAME +from extralit_server.webhooks.v1.enums import WebhookEvent +from extralit_server.constants import API_KEY_HEADER_NAME from tests.factories import AdminFactory, AnnotatorFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py b/argilla-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py index 949c91e5e..11755e5fb 100644 --- a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py +++ b/argilla-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py @@ -20,8 +20,8 @@ from httpx import AsyncClient, Response from standardwebhooks.webhooks import Webhook -from argilla_server.contexts import info -from argilla_server.constants import API_KEY_HEADER_NAME +from extralit_server.contexts import info +from extralit_server.constants import API_KEY_HEADER_NAME from tests.factories import AdminFactory, AnnotatorFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_update_webhook.py b/argilla-server/tests/unit/api/handlers/v1/webhooks/test_update_webhook.py index 236c83a98..866532fa8 100644 --- a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_update_webhook.py +++ b/argilla-server/tests/unit/api/handlers/v1/webhooks/test_update_webhook.py @@ -18,8 +18,8 @@ from httpx import AsyncClient from typing import Any -from argilla_server.webhooks.v1.enums import WebhookEvent -from argilla_server.constants import API_KEY_HEADER_NAME +from extralit_server.webhooks.v1.enums import WebhookEvent +from extralit_server.constants import API_KEY_HEADER_NAME from tests.factories import AdminFactory, AnnotatorFactory, WebhookFactory diff --git a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace.py b/argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace.py index 196c9c845..55faf9124 100644 --- a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace.py +++ b/argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace.py @@ -14,9 +14,9 @@ from uuid import uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import UserRole -from argilla_server.models import Workspace +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import UserRole +from extralit_server.models import Workspace from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace_user.py b/argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace_user.py index 07bd2b6b9..766185f4f 100644 --- a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace_user.py +++ b/argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace_user.py @@ -15,9 +15,9 @@ from uuid import UUID, uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import UserRole -from argilla_server.models import WorkspaceUser +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import UserRole +from extralit_server.models import WorkspaceUser from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_delete_workspace_user.py b/argilla-server/tests/unit/api/handlers/v1/workspaces/test_delete_workspace_user.py index d5925be42..490716645 100644 --- a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_delete_workspace_user.py +++ b/argilla-server/tests/unit/api/handlers/v1/workspaces/test_delete_workspace_user.py @@ -15,9 +15,9 @@ from uuid import UUID, uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import UserRole -from argilla_server.models import WorkspaceUser +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import UserRole +from extralit_server.models import WorkspaceUser from httpx import AsyncClient from sqlalchemy import func, select from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_list_workspace_users.py b/argilla-server/tests/unit/api/handlers/v1/workspaces/test_list_workspace_users.py index 95de444e3..7fbf85c95 100644 --- a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_list_workspace_users.py +++ b/argilla-server/tests/unit/api/handlers/v1/workspaces/test_list_workspace_users.py @@ -15,8 +15,8 @@ from uuid import UUID, uuid4 import pytest -from argilla_server.constants import API_KEY_HEADER_NAME -from argilla_server.enums import UserRole +from extralit_server.constants import API_KEY_HEADER_NAME +from extralit_server.enums import UserRole from httpx import AsyncClient from tests.factories import AdminFactory, AnnotatorFactory, UserFactory, WorkspaceFactory, WorkspaceUserFactory diff --git a/argilla-server/tests/unit/api/schemas/v1/records/test_record_create.py b/argilla-server/tests/unit/api/schemas/v1/records/test_record_create.py index 22866c02a..176226243 100644 --- a/argilla-server/tests/unit/api/schemas/v1/records/test_record_create.py +++ b/argilla-server/tests/unit/api/schemas/v1/records/test_record_create.py @@ -17,8 +17,8 @@ import pytest -from argilla_server.api.schemas.v1.chat import ChatFieldValue -from argilla_server.api.schemas.v1.records import RecordCreate +from extralit_server.api.schemas.v1.chat import ChatFieldValue +from extralit_server.api.schemas.v1.records import RecordCreate class TestRecordCreate: diff --git a/argilla-server/tests/unit/api/schemas/v1/records/test_record_upsert.py b/argilla-server/tests/unit/api/schemas/v1/records/test_record_upsert.py index 192043798..4207d2510 100644 --- a/argilla-server/tests/unit/api/schemas/v1/records/test_record_upsert.py +++ b/argilla-server/tests/unit/api/schemas/v1/records/test_record_upsert.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.api.schemas.v1.records import RecordUpsert +from extralit_server.api.schemas.v1.records import RecordUpsert class TestRecordUpsert: diff --git a/argilla-server/tests/unit/api/schemas/v1/responses/test_response_value_create.py b/argilla-server/tests/unit/api/schemas/v1/responses/test_response_value_create.py index 26a4de207..64a70b05a 100644 --- a/argilla-server/tests/unit/api/schemas/v1/responses/test_response_value_create.py +++ b/argilla-server/tests/unit/api/schemas/v1/responses/test_response_value_create.py @@ -15,7 +15,7 @@ from typing import Any import pytest -from argilla_server.api.schemas.v1.responses import ( +from extralit_server.api.schemas.v1.responses import ( RankingQuestionResponseValueItem, ResponseValueCreate, SpanQuestionResponseValueItem, diff --git a/argilla-server/tests/unit/api/schemas/v1/test_commons.py b/argilla-server/tests/unit/api/schemas/v1/test_commons.py index 5c76dec47..ea6c5190a 100644 --- a/argilla-server/tests/unit/api/schemas/v1/test_commons.py +++ b/argilla-server/tests/unit/api/schemas/v1/test_commons.py @@ -15,7 +15,7 @@ from typing import Optional import pytest -from argilla_server.api.schemas.v1.commons import UpdateSchema +from extralit_server.api.schemas.v1.commons import UpdateSchema def test_update_schema(): diff --git a/argilla-server/tests/unit/cli/conftest.py b/argilla-server/tests/unit/cli/conftest.py index f11a1a021..8928199d3 100644 --- a/argilla-server/tests/unit/cli/conftest.py +++ b/argilla-server/tests/unit/cli/conftest.py @@ -13,7 +13,7 @@ # limitations under the License. import pytest -from argilla_server.cli import app +from extralit_server.cli import app from typer import Typer from typer.testing import CliRunner diff --git a/argilla-server/tests/unit/cli/database/users/test_create.py b/argilla-server/tests/unit/cli/database/users/test_create.py index 7869592b0..d2197dc61 100644 --- a/argilla-server/tests/unit/cli/database/users/test_create.py +++ b/argilla-server/tests/unit/cli/database/users/test_create.py @@ -18,8 +18,8 @@ from click.testing import CliRunner from typer import Typer -from argilla_server.contexts import accounts -from argilla_server.models import User, UserRole, Workspace +from extralit_server.contexts import accounts +from extralit_server.models import User, UserRole, Workspace from tests.factories import UserSyncFactory, WorkspaceSyncFactory if TYPE_CHECKING: diff --git a/argilla-server/tests/unit/cli/database/users/test_create_default.py b/argilla-server/tests/unit/cli/database/users/test_create_default.py index 86df21c53..15d5af3fd 100644 --- a/argilla-server/tests/unit/cli/database/users/test_create_default.py +++ b/argilla-server/tests/unit/cli/database/users/test_create_default.py @@ -13,9 +13,9 @@ # limitations under the License. from typing import TYPE_CHECKING -from argilla_server.constants import DEFAULT_API_KEY, DEFAULT_PASSWORD, DEFAULT_USERNAME -from argilla_server.contexts import accounts -from argilla_server.models import User, UserRole, Workspace +from extralit_server.constants import DEFAULT_API_KEY, DEFAULT_PASSWORD, DEFAULT_USERNAME +from extralit_server.contexts import accounts +from extralit_server.models import User, UserRole, Workspace from tests.factories import WorkspaceSyncFactory if TYPE_CHECKING: diff --git a/argilla-server/tests/unit/cli/database/users/test_migrate.py b/argilla-server/tests/unit/cli/database/users/test_migrate.py index 45e807154..e12cb98e7 100644 --- a/argilla-server/tests/unit/cli/database/users/test_migrate.py +++ b/argilla-server/tests/unit/cli/database/users/test_migrate.py @@ -16,7 +16,7 @@ from typing import TYPE_CHECKING from unittest import mock -from argilla_server.models import User, UserRole, Workspace, WorkspaceUser +from extralit_server.models import User, UserRole, Workspace, WorkspaceUser from click.testing import CliRunner from typer import Typer diff --git a/argilla-server/tests/unit/cli/database/users/test_update.py b/argilla-server/tests/unit/cli/database/users/test_update.py index 1a1e5b6fa..e4f340b76 100644 --- a/argilla-server/tests/unit/cli/database/users/test_update.py +++ b/argilla-server/tests/unit/cli/database/users/test_update.py @@ -15,7 +15,7 @@ from typing import TYPE_CHECKING import pytest -from argilla_server.models import User, UserRole +from extralit_server.models import User, UserRole from click.testing import CliRunner from typer import Typer diff --git a/argilla-server/tests/unit/commons/test_settings.py b/argilla-server/tests/unit/commons/test_settings.py index b98d52825..814f19d4c 100644 --- a/argilla-server/tests/unit/commons/test_settings.py +++ b/argilla-server/tests/unit/commons/test_settings.py @@ -14,7 +14,7 @@ import pytest -from argilla_server.settings import Settings +from extralit_server.settings import Settings def test_settings_index_replicas_with_shards_defined(monkeypatch): diff --git a/argilla-server/tests/unit/commons/test_telemetry.py b/argilla-server/tests/unit/commons/test_telemetry.py index c78ed16c2..6cc7a8141 100644 --- a/argilla-server/tests/unit/commons/test_telemetry.py +++ b/argilla-server/tests/unit/commons/test_telemetry.py @@ -19,10 +19,10 @@ from pytest_mock import MockerFixture from starlette.responses import JSONResponse -from argilla_server.api.errors.v1.exception_handlers import set_request_error -from argilla_server.errors import ServerError -from argilla_server.integrations.huggingface.spaces import HUGGINGFACE_SETTINGS -from argilla_server.telemetry import TelemetryClient +from extralit_server.api.errors.v1.exception_handlers import set_request_error +from extralit_server.errors import ServerError +from extralit_server.integrations.huggingface.spaces import HUGGINGFACE_SETTINGS +from extralit_server.telemetry import TelemetryClient mock_request = Request(scope={"type": "http", "headers": {}}) @@ -55,7 +55,7 @@ def test_create_client_with_persistent_storage_disabled(self): assert test_telemetry._system_info["persistent_storage_enabled"] is False def test_track_data(self, mocker: MockerFixture): - from argilla_server._version import __version__ as version + from extralit_server._version import __version__ as version mock = mocker.patch("argilla_server.telemetry._client.send_telemetry") diff --git a/argilla-server/tests/unit/conftest.py b/argilla-server/tests/unit/conftest.py index ce35d1c27..8a9138870 100644 --- a/argilla-server/tests/unit/conftest.py +++ b/argilla-server/tests/unit/conftest.py @@ -22,14 +22,14 @@ from opensearchpy import OpenSearch from sqlalchemy.engine.interfaces import IsolationLevel -from argilla_server.contexts import distribution, datasets, records -from argilla_server.api.routes import api_v1 -from argilla_server.constants import API_KEY_HEADER_NAME, DEFAULT_API_KEY -from argilla_server.database import get_async_db -from argilla_server.models import User, UserRole, Workspace -from argilla_server.search_engine import SearchEngine, get_search_engine -from argilla_server.settings import settings -from argilla_server.telemetry import TelemetryClient +from extralit_server.contexts import distribution, datasets, records +from extralit_server.api.routes import api_v1 +from extralit_server.constants import API_KEY_HEADER_NAME, DEFAULT_API_KEY +from extralit_server.database import get_async_db +from extralit_server.models import User, UserRole, Workspace +from extralit_server.search_engine import SearchEngine, get_search_engine +from extralit_server.settings import settings +from extralit_server.telemetry import TelemetryClient from tests.database import TestSession from tests.factories import AnnotatorFactory, OwnerFactory, UserFactory @@ -81,7 +81,7 @@ def annotator_auth_header(annotator: User) -> Dict[str, str]: async def async_client( request, mock_search_engine: SearchEngine, mocker: "MockerFixture" ) -> Generator["AsyncClient", None, None]: - from argilla_server import app + from extralit_server import app async def override_get_async_db(isolation_level: Optional[IsolationLevel] = None): session = TestSession() diff --git a/argilla-server/tests/unit/contexts/hub/test_hub_dataset.py b/argilla-server/tests/unit/contexts/hub/test_hub_dataset.py index 5a9694cea..b214d1d25 100644 --- a/argilla-server/tests/unit/contexts/hub/test_hub_dataset.py +++ b/argilla-server/tests/unit/contexts/hub/test_hub_dataset.py @@ -17,11 +17,11 @@ from sqlalchemy import select, func from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.api.schemas.v1.datasets import HubDatasetMapping, HubDatasetMappingItem -from argilla_server.enums import DatasetStatus, QuestionType -from argilla_server.models import Record -from argilla_server.contexts.hub import HubDataset -from argilla_server.search_engine import SearchEngine +from extralit_server.api.schemas.v1.datasets import HubDatasetMapping, HubDatasetMappingItem +from extralit_server.enums import DatasetStatus, QuestionType +from extralit_server.models import Record +from extralit_server.contexts.hub import HubDataset +from extralit_server.search_engine import SearchEngine # Import Hugging Face and network-related exceptions from huggingface_hub.errors import HfHubHTTPError diff --git a/argilla-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py b/argilla-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py index a68ab9f86..a53dfbe58 100644 --- a/argilla-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py +++ b/argilla-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py @@ -23,9 +23,9 @@ from huggingface_hub.errors import HfHubHTTPError from datasets import load_dataset, get_dataset_config_names, get_dataset_split_names -from argilla_server.contexts import hub -from argilla_server.contexts.hub import HubDatasetExporter -from argilla_server.enums import DatasetStatus, FieldType, QuestionType, ResponseStatus, MetadataPropertyType +from extralit_server.contexts import hub +from extralit_server.contexts.hub import HubDatasetExporter +from extralit_server.enums import DatasetStatus, FieldType, QuestionType, ResponseStatus, MetadataPropertyType from tests.database import SyncTestSession from tests.factories import ( diff --git a/argilla-server/tests/unit/contexts/search/test_search_records_query_validator.py b/argilla-server/tests/unit/contexts/search/test_search_records_query_validator.py index beac4590a..50cfa7de7 100644 --- a/argilla-server/tests/unit/contexts/search/test_search_records_query_validator.py +++ b/argilla-server/tests/unit/contexts/search/test_search_records_query_validator.py @@ -14,13 +14,13 @@ from uuid import uuid4 -import argilla_server.errors.future as errors +import extralit_server.errors.future as errors import pytest -from argilla_server.api.schemas.v1.records import SearchRecordsQuery -from argilla_server.contexts.search import SearchRecordsQueryValidator +from extralit_server.api.schemas.v1.records import SearchRecordsQuery +from extralit_server.contexts.search import SearchRecordsQueryValidator from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.models import Dataset +from extralit_server.models import Dataset from tests.factories import ( DatasetFactory, FloatMetadataPropertyFactory, diff --git a/argilla-server/tests/unit/contexts/test_imports.py b/argilla-server/tests/unit/contexts/test_imports.py index 75546d153..0a0a73109 100644 --- a/argilla-server/tests/unit/contexts/test_imports.py +++ b/argilla-server/tests/unit/contexts/test_imports.py @@ -17,14 +17,14 @@ from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.api.schemas.v1.documents import DocumentCreate -from argilla_server.api.schemas.v1.imports import ( +from extralit_server.api.schemas.v1.documents import DocumentCreate +from extralit_server.api.schemas.v1.imports import ( FileInfo, DocumentMetadata, ImportAnalysisRequest, ImportStatus, ) -from argilla_server.contexts.imports import ( +from extralit_server.contexts.imports import ( analyze_import_status, validate_document_metadata, ) diff --git a/argilla-server/tests/unit/database/models/test_dataset_user_model.py b/argilla-server/tests/unit/database/models/test_dataset_user_model.py index 6b5c51209..cd21055c3 100644 --- a/argilla-server/tests/unit/database/models/test_dataset_user_model.py +++ b/argilla-server/tests/unit/database/models/test_dataset_user_model.py @@ -16,7 +16,7 @@ from sqlalchemy.exc import IntegrityError from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.models import DatasetUser +from extralit_server.models import DatasetUser from tests.factories import UserFactory, DatasetFactory diff --git a/argilla-server/tests/unit/database/models/test_field_model.py b/argilla-server/tests/unit/database/models/test_field_model.py index 29f47b521..d2b1be2b4 100644 --- a/argilla-server/tests/unit/database/models/test_field_model.py +++ b/argilla-server/tests/unit/database/models/test_field_model.py @@ -14,8 +14,8 @@ import pytest -from argilla_server.models import Field -from argilla_server.enums import FieldType +from extralit_server.models import Field +from extralit_server.enums import FieldType @pytest.mark.asyncio diff --git a/argilla-server/tests/unit/errors/test_errors.py b/argilla-server/tests/unit/errors/test_errors.py index 7f724f740..5ffb2effb 100644 --- a/argilla-server/tests/unit/errors/test_errors.py +++ b/argilla-server/tests/unit/errors/test_errors.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.errors import GenericServerError +from extralit_server.errors import GenericServerError def test_generic_error(): diff --git a/argilla-server/tests/unit/jobs/test_document_jobs.py b/argilla-server/tests/unit/jobs/test_document_jobs.py index f8fbd4684..dd386dd46 100644 --- a/argilla-server/tests/unit/jobs/test_document_jobs.py +++ b/argilla-server/tests/unit/jobs/test_document_jobs.py @@ -16,7 +16,7 @@ from unittest.mock import patch, MagicMock from uuid import uuid4 -from argilla_server.jobs.document_jobs import upload_reference_documents_job +from extralit_server.jobs.document_jobs import upload_reference_documents_job from tests.factories import WorkspaceFactory, UserFactory diff --git a/argilla-server/tests/unit/jobs/webhook_jobs/test_enqueue_notify_events.py b/argilla-server/tests/unit/jobs/webhook_jobs/test_enqueue_notify_events.py index 4f50f00ca..7e5d4381f 100644 --- a/argilla-server/tests/unit/jobs/webhook_jobs/test_enqueue_notify_events.py +++ b/argilla-server/tests/unit/jobs/webhook_jobs/test_enqueue_notify_events.py @@ -18,10 +18,10 @@ from fastapi.encoders import jsonable_encoder from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server.jobs.queues import HIGH_QUEUE -from argilla_server.jobs.webhook_jobs import enqueue_notify_events -from argilla_server.webhooks.v1.enums import ResponseEvent -from argilla_server.webhooks.v1.responses import build_response_event +from extralit_server.jobs.queues import HIGH_QUEUE +from extralit_server.jobs.webhook_jobs import enqueue_notify_events +from extralit_server.webhooks.v1.enums import ResponseEvent +from extralit_server.webhooks.v1.responses import build_response_event from tests.factories import ResponseFactory, WebhookFactory diff --git a/argilla-server/tests/unit/models/test_import_history.py b/argilla-server/tests/unit/models/test_import_history.py index 102d817fa..fba9e3708 100644 --- a/argilla-server/tests/unit/models/test_import_history.py +++ b/argilla-server/tests/unit/models/test_import_history.py @@ -16,7 +16,7 @@ from uuid import uuid4 import factory -from argilla_server.models.database import ImportHistory +from extralit_server.models.database import ImportHistory from tests.factories import UserFactory, WorkspaceFactory, BaseFactory diff --git a/argilla-server/tests/unit/search_engine/conftest.py b/argilla-server/tests/unit/search_engine/conftest.py index 522c40e5c..067980ed2 100644 --- a/argilla-server/tests/unit/search_engine/conftest.py +++ b/argilla-server/tests/unit/search_engine/conftest.py @@ -16,8 +16,8 @@ import pytest import pytest_asyncio -from argilla_server.search_engine import ElasticSearchEngine, OpenSearchEngine -from argilla_server.settings import settings +from extralit_server.search_engine import ElasticSearchEngine, OpenSearchEngine +from extralit_server.settings import settings @pytest.fixture diff --git a/argilla-server/tests/unit/search_engine/test_commons.py b/argilla-server/tests/unit/search_engine/test_commons.py index d20a16680..279ff19c7 100644 --- a/argilla-server/tests/unit/search_engine/test_commons.py +++ b/argilla-server/tests/unit/search_engine/test_commons.py @@ -22,7 +22,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.orm import Session -from argilla_server.enums import ( +from extralit_server.enums import ( MetadataPropertyType, QuestionType, ResponseStatusFilter, @@ -31,8 +31,8 @@ SortOrder, DatasetStatus, ) -from argilla_server.models import Dataset, Question, Record, User, VectorSettings, Vector -from argilla_server.search_engine import ( +from extralit_server.models import Dataset, Question, Record, User, VectorSettings, Vector +from extralit_server.search_engine import ( ResponseFilterScope, SuggestionFilterScope, TermsFilter, @@ -44,12 +44,12 @@ RecordFilterScope, AndFilter, ) -from argilla_server.search_engine.commons import ( +from extralit_server.search_engine.commons import ( BaseElasticAndOpenSearchEngine, es_index_name_for_dataset, es_field_for_vector_settings, ) -from argilla_server.settings import settings as server_settings +from extralit_server.settings import settings as server_settings from tests.factories import ( DatasetFactory, FloatMetadataPropertyFactory, diff --git a/argilla-server/tests/unit/search_engine/test_elastisearch.py b/argilla-server/tests/unit/search_engine/test_elastisearch.py index d616da634..223a578a5 100644 --- a/argilla-server/tests/unit/search_engine/test_elastisearch.py +++ b/argilla-server/tests/unit/search_engine/test_elastisearch.py @@ -13,9 +13,9 @@ # limitations under the License. import pytest -from argilla_server.search_engine import ElasticSearchEngine -from argilla_server.search_engine.commons import es_index_name_for_dataset -from argilla_server.settings import settings +from extralit_server.search_engine import ElasticSearchEngine +from extralit_server.search_engine.commons import es_index_name_for_dataset +from extralit_server.settings import settings from opensearchpy import OpenSearch from tests.factories import DatasetFactory, VectorSettingsFactory diff --git a/argilla-server/tests/unit/search_engine/test_opensearch.py b/argilla-server/tests/unit/search_engine/test_opensearch.py index 7d090e5d3..cc532af73 100644 --- a/argilla-server/tests/unit/search_engine/test_opensearch.py +++ b/argilla-server/tests/unit/search_engine/test_opensearch.py @@ -13,9 +13,9 @@ # limitations under the License. import pytest -from argilla_server.search_engine import OpenSearchEngine -from argilla_server.search_engine.commons import es_index_name_for_dataset -from argilla_server.settings import settings +from extralit_server.search_engine import OpenSearchEngine +from extralit_server.search_engine.commons import es_index_name_for_dataset +from extralit_server.settings import settings from opensearchpy import OpenSearch, RequestError from sqlalchemy.ext.asyncio import AsyncSession diff --git a/argilla-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py b/argilla-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py index c542abf77..a9e649394 100644 --- a/argilla-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py +++ b/argilla-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla_server.security.authentication.oauth2._backends import KeycloakOpenId, Strategy +from extralit_server.security.authentication.oauth2._backends import KeycloakOpenId, Strategy class TestKeyCloackOpenIdBackend: diff --git a/argilla-server/tests/unit/security/authentication/oauth2/test_settings.py b/argilla-server/tests/unit/security/authentication/oauth2/test_settings.py index d39643470..63755b2ec 100644 --- a/argilla-server/tests/unit/security/authentication/oauth2/test_settings.py +++ b/argilla-server/tests/unit/security/authentication/oauth2/test_settings.py @@ -14,8 +14,8 @@ import pytest -from argilla_server.errors.future import NotFoundError -from argilla_server.security.authentication.oauth2 import OAuth2Settings +from extralit_server.errors.future import NotFoundError +from extralit_server.security.authentication.oauth2 import OAuth2Settings class TestOAuth2Settings: diff --git a/argilla-server/tests/unit/security/authentication/test_userinfo.py b/argilla-server/tests/unit/security/authentication/test_userinfo.py index 200fb940c..cdaeed6d7 100644 --- a/argilla-server/tests/unit/security/authentication/test_userinfo.py +++ b/argilla-server/tests/unit/security/authentication/test_userinfo.py @@ -16,8 +16,8 @@ import pytest from pytest_mock import MockerFixture -from argilla_server.enums import UserRole -from argilla_server.security.authentication import UserInfo +from extralit_server.enums import UserRole +from extralit_server.security.authentication import UserInfo class TestUserInfo: diff --git a/argilla-server/tests/unit/security/test_model.py b/argilla-server/tests/unit/security/test_model.py index 3105e6599..cd8ae77d6 100644 --- a/argilla-server/tests/unit/security/test_model.py +++ b/argilla-server/tests/unit/security/test_model.py @@ -15,7 +15,7 @@ import pytest -from argilla_server.api.schemas.v1.users import User, UserCreate +from extralit_server.api.schemas.v1.users import User, UserCreate from tests.factories import UserFactory diff --git a/argilla-server/tests/unit/security/test_settings.py b/argilla-server/tests/unit/security/test_settings.py index c78fc6dc7..577c1cb0d 100644 --- a/argilla-server/tests/unit/security/test_settings.py +++ b/argilla-server/tests/unit/security/test_settings.py @@ -16,8 +16,8 @@ import tempfile from unittest import mock -from argilla_server.security.authentication.oauth2 import OAuth2Settings -from argilla_server.security.settings import Settings +from extralit_server.security.authentication.oauth2 import OAuth2Settings +from extralit_server.security.settings import Settings def test_default_security_settings(): diff --git a/argilla-server/tests/unit/telemetry/test_telemetry_helpers.py b/argilla-server/tests/unit/telemetry/test_telemetry_helpers.py index a6753a06b..8f76e0a2d 100644 --- a/argilla-server/tests/unit/telemetry/test_telemetry_helpers.py +++ b/argilla-server/tests/unit/telemetry/test_telemetry_helpers.py @@ -19,8 +19,8 @@ import pytest from pytest_mock import MockerFixture -from argilla_server.settings import settings -from argilla_server.telemetry import get_server_id +from extralit_server.settings import settings +from extralit_server.telemetry import get_server_id class TestTelemetryHelpers: diff --git a/argilla-server/tests/unit/test_api_telemetry.py b/argilla-server/tests/unit/test_api_telemetry.py index 7f0984cfc..43a3e392b 100644 --- a/argilla-server/tests/unit/test_api_telemetry.py +++ b/argilla-server/tests/unit/test_api_telemetry.py @@ -20,9 +20,9 @@ from pytest_mock import MockerFixture from starlette.testclient import TestClient -from argilla_server._app import create_server_app -from argilla_server.settings import settings -from argilla_server.telemetry import TelemetryClient +from extralit_server._app import create_server_app +from extralit_server.settings import settings +from extralit_server.telemetry import TelemetryClient class TestAPITelemetry: diff --git a/argilla-server/tests/unit/test_app.py b/argilla-server/tests/unit/test_app.py index 93de167ed..de50f2d50 100644 --- a/argilla-server/tests/unit/test_app.py +++ b/argilla-server/tests/unit/test_app.py @@ -20,20 +20,20 @@ from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession -from argilla_server._app import ( +from extralit_server._app import ( create_server_app, configure_database, _create_oauth_allowed_workspaces, track_server_startup, ) -from argilla_server.models import Workspace -from argilla_server.security.authentication.oauth2 import OAuth2Settings -from argilla_server.security.authentication.oauth2.settings import AllowedWorkspace -from argilla_server.settings import Settings, settings +from extralit_server.models import Workspace +from extralit_server.security.authentication.oauth2 import OAuth2Settings +from extralit_server.security.authentication.oauth2.settings import AllowedWorkspace +from extralit_server.settings import Settings, settings from starlette.routing import Mount from starlette.testclient import TestClient -from argilla_server.telemetry import TelemetryClient +from extralit_server.telemetry import TelemetryClient from tests.factories import WorkspaceFactory diff --git a/argilla-server/tests/unit/test_logging.py b/argilla-server/tests/unit/test_logging.py index c316ed073..6c7d9b50a 100644 --- a/argilla-server/tests/unit/test_logging.py +++ b/argilla-server/tests/unit/test_logging.py @@ -15,7 +15,7 @@ import logging import pytest -from argilla_server.logging import ArgillaHandler, LoggingMixin +from extralit_server.logging import ArgillaHandler, LoggingMixin class LoggingForTest(LoggingMixin): diff --git a/argilla-server/tests/unit/test_utils.py b/argilla-server/tests/unit/test_utils.py index 82ee85014..30fdc5671 100644 --- a/argilla-server/tests/unit/test_utils.py +++ b/argilla-server/tests/unit/test_utils.py @@ -15,7 +15,7 @@ from typing import Any, Dict, List, Set import pytest -from argilla_server.utils import parse_query_param +from extralit_server.utils import parse_query_param from fastapi import HTTPException from pydantic import BaseModel, Field diff --git a/argilla-server/tests/unit/utils/test_fastapi_utils.py b/argilla-server/tests/unit/utils/test_fastapi_utils.py index 22912a02b..a24a0fdbf 100644 --- a/argilla-server/tests/unit/utils/test_fastapi_utils.py +++ b/argilla-server/tests/unit/utils/test_fastapi_utils.py @@ -16,7 +16,7 @@ from fastapi.routing import APIRoute from starlette.routing import Mount -from argilla_server.utils._fastapi import resolve_endpoint_path_for_request +from extralit_server.utils._fastapi import resolve_endpoint_path_for_request def mock_endpoint(*args, **kwargs): diff --git a/argilla-server/tests/unit/validators/test_records_bulk.py b/argilla-server/tests/unit/validators/test_records_bulk.py index aec1e8dbd..1790e8b68 100644 --- a/argilla-server/tests/unit/validators/test_records_bulk.py +++ b/argilla-server/tests/unit/validators/test_records_bulk.py @@ -13,11 +13,11 @@ # limitations under the License. import pytest -from argilla_server.api.schemas.v1.records import RecordCreate, RecordUpsert -from argilla_server.api.schemas.v1.records_bulk import RecordsBulkCreate, RecordsBulkUpsert -from argilla_server.errors.future import UnprocessableEntityError -from argilla_server.models import Dataset -from argilla_server.validators.records import RecordsBulkCreateValidator +from extralit_server.api.schemas.v1.records import RecordCreate, RecordUpsert +from extralit_server.api.schemas.v1.records_bulk import RecordsBulkCreate, RecordsBulkUpsert +from extralit_server.errors.future import UnprocessableEntityError +from extralit_server.models import Dataset +from extralit_server.validators.records import RecordsBulkCreateValidator from sqlalchemy.ext.asyncio import AsyncSession from tests.factories import DatasetFactory, RecordFactory, TextFieldFactory diff --git a/argilla-server/tests/unit/webhooks/v1/test_notify_ping_event.py b/argilla-server/tests/unit/webhooks/v1/test_notify_ping_event.py index 1fc7f4ae2..fb0f48c7e 100644 --- a/argilla-server/tests/unit/webhooks/v1/test_notify_ping_event.py +++ b/argilla-server/tests/unit/webhooks/v1/test_notify_ping_event.py @@ -20,9 +20,9 @@ from httpx import Response from standardwebhooks.webhooks import Webhook -from argilla_server.webhooks.v1.enums import WebhookEvent -from argilla_server.webhooks.v1.ping import notify_ping_event -from argilla_server.contexts import info +from extralit_server.webhooks.v1.enums import WebhookEvent +from extralit_server.webhooks.v1.ping import notify_ping_event +from extralit_server.contexts import info from tests.factories import WebhookFactory diff --git a/examples/webhooks/basic-webhooks/main.py b/examples/webhooks/basic-webhooks/main.py index 630fff8b3..fd95bae1e 100644 --- a/examples/webhooks/basic-webhooks/main.py +++ b/examples/webhooks/basic-webhooks/main.py @@ -1,7 +1,7 @@ import os from datetime import datetime -import argilla as rg +import extralit as rg # Environment variables with defaults API_KEY = os.environ.get("ARGILLA_API_KEY", "argilla.apikey") diff --git a/extralit/src/argilla/client/__init__.py b/extralit/src/argilla/client/__init__.py deleted file mode 100644 index 792522905..000000000 --- a/extralit/src/argilla/client/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from argilla.client.core import Argilla - -__all__ = ["Argilla"] diff --git a/extralit/src/argilla/settings/__init__.py b/extralit/src/argilla/settings/__init__.py deleted file mode 100644 index 398908801..000000000 --- a/extralit/src/argilla/settings/__init__.py +++ /dev/null @@ -1,20 +0,0 @@ -# Copyright 2024-present, Argilla, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -from argilla.settings._field import * # noqa: F403 -from argilla.settings._metadata import * # noqa: F403 -from argilla.settings._vector import * # noqa: F403 -from argilla.settings._question import * # noqa: F403 -from argilla.settings._resource import * # noqa: F403 -from argilla.settings._task_distribution import * # noqa: F403 diff --git a/extralit/src/argilla/__init__.py b/extralit/src/extralit/__init__.py similarity index 54% rename from extralit/src/argilla/__init__.py rename to extralit/src/extralit/__init__.py index 703886b02..940a70fe1 100644 --- a/extralit/src/argilla/__init__.py +++ b/extralit/src/extralit/__init__.py @@ -12,15 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._version import __version__ # noqa -from argilla.client import * # noqa -from argilla.datasets import * # noqa -from argilla.documents import * # noqa -from argilla.workspaces import * # noqa -from argilla.users import * # noqa -from argilla.settings import * # noqa -from argilla.suggestions import * # noqa -from argilla.responses import * # noqa -from argilla.records import * # noqa -from argilla.vectors import * # noqa -from argilla.webhooks import * # noqa +from extralit._version import __version__ # noqa +from extralit.client import * # noqa +from extralit.datasets import * # noqa +from extralit.documents import * # noqa +from extralit.workspaces import * # noqa +from extralit.users import * # noqa +from extralit.settings import * # noqa +from extralit.suggestions import * # noqa +from extralit.responses import * # noqa +from extralit.records import * # noqa +from extralit.vectors import * # noqa +from extralit.webhooks import * # noqa diff --git a/extralit/src/argilla/_api/__init__.py b/extralit/src/extralit/_api/__init__.py similarity index 57% rename from extralit/src/argilla/_api/__init__.py rename to extralit/src/extralit/_api/__init__.py index 592477b19..5f517ed2a 100644 --- a/extralit/src/argilla/_api/__init__.py +++ b/extralit/src/extralit/_api/__init__.py @@ -12,12 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._api._datasets import * # noqa 403 -from argilla._api._documents import * # noqa 403 -from argilla._api._http import * # noqa 403 -from argilla._api._workspaces import * # noqa 403 -from argilla._api._users import * # noqa 403 -from argilla._api._client import * # noqa 403 -from argilla._api._fields import * # noqa 403 -from argilla._api._records import * # noqa 403 -from argilla._api._questions import * # noqa 403 +from extralit._api._datasets import * # noqa 403 +from extralit._api._documents import * # noqa 403 +from extralit._api._http import * # noqa 403 +from extralit._api._workspaces import * # noqa 403 +from extralit._api._users import * # noqa 403 +from extralit._api._client import * # noqa 403 +from extralit._api._fields import * # noqa 403 +from extralit._api._records import * # noqa 403 +from extralit._api._questions import * # noqa 403 diff --git a/extralit/src/argilla/_api/_base.py b/extralit/src/extralit/_api/_base.py similarity index 97% rename from extralit/src/argilla/_api/_base.py rename to extralit/src/extralit/_api/_base.py index 8c8cc8cf4..4994eeb4e 100644 --- a/extralit/src/argilla/_api/_base.py +++ b/extralit/src/extralit/_api/_base.py @@ -15,7 +15,7 @@ from typing import Generic, TYPE_CHECKING, TypeVar from uuid import UUID -from argilla._helpers import LoggingMixin +from extralit._helpers import LoggingMixin if TYPE_CHECKING: from httpx import Client diff --git a/extralit/src/argilla/_api/_client.py b/extralit/src/extralit/_api/_client.py similarity index 86% rename from extralit/src/argilla/_api/_client.py rename to extralit/src/extralit/_api/_client.py index de6665537..6b07ffdd7 100644 --- a/extralit/src/argilla/_api/_client.py +++ b/extralit/src/extralit/_api/_client.py @@ -17,23 +17,23 @@ import httpx -from argilla._api._webhooks import WebhooksAPI -from argilla._exceptions._api import UnauthorizedError -from argilla._exceptions._client import ArgillaCredentialsError - -from argilla._api import HTTPClientConfig, create_http_client -from argilla._api._datasets import DatasetsAPI -from argilla._api._documents import DocumentsAPI -from argilla._api._fields import FieldsAPI -from argilla._api._metadata import MetadataAPI -from argilla._api._questions import QuestionsAPI -from argilla._api._records import RecordsAPI -from argilla._api._users import UsersAPI -from argilla._api._vectors import VectorsAPI -from argilla._api._workspaces import WorkspacesAPI -from argilla._exceptions import ArgillaError -from argilla._constants import _DEFAULT_API_URL -from argilla._api._token import get_secret +from extralit._api._webhooks import WebhooksAPI +from extralit._exceptions._api import UnauthorizedError +from extralit._exceptions._client import ArgillaCredentialsError + +from extralit._api import HTTPClientConfig, create_http_client +from extralit._api._datasets import DatasetsAPI +from extralit._api._documents import DocumentsAPI +from extralit._api._fields import FieldsAPI +from extralit._api._metadata import MetadataAPI +from extralit._api._questions import QuestionsAPI +from extralit._api._records import RecordsAPI +from extralit._api._users import UsersAPI +from extralit._api._vectors import VectorsAPI +from extralit._api._workspaces import WorkspacesAPI +from extralit._exceptions import ArgillaError +from extralit._constants import _DEFAULT_API_URL +from extralit._api._token import get_secret __all__ = ["APIClient"] diff --git a/extralit/src/argilla/_api/_datasets.py b/extralit/src/extralit/_api/_datasets.py similarity index 95% rename from extralit/src/argilla/_api/_datasets.py rename to extralit/src/extralit/_api/_datasets.py index b6ccdca26..0cc33d887 100644 --- a/extralit/src/argilla/_api/_datasets.py +++ b/extralit/src/extralit/_api/_datasets.py @@ -16,13 +16,13 @@ from uuid import UUID import httpx -from argilla._api._base import ResourceAPI -from argilla._exceptions._api import api_error_handler -from argilla._models import DatasetModel +from extralit._api._base import ResourceAPI +from extralit._exceptions._api import api_error_handler +from extralit._models import DatasetModel __all__ = ["DatasetsAPI"] -from argilla._models._dataset_progress import UserProgressModel, DatasetProgressModel +from extralit._models._dataset_progress import UserProgressModel, DatasetProgressModel class DatasetsAPI(ResourceAPI[DatasetModel]): diff --git a/extralit/src/argilla/_api/_documents.py b/extralit/src/extralit/_api/_documents.py similarity index 93% rename from extralit/src/argilla/_api/_documents.py rename to extralit/src/extralit/_api/_documents.py index 09df89fdc..b4a140234 100644 --- a/extralit/src/argilla/_api/_documents.py +++ b/extralit/src/extralit/_api/_documents.py @@ -16,11 +16,11 @@ from typing import TYPE_CHECKING, List from uuid import UUID -from argilla._api._base import ResourceAPI -from argilla._exceptions._api import api_error_handler +from extralit._api._base import ResourceAPI +from extralit._exceptions._api import api_error_handler if TYPE_CHECKING: - from argilla._models._documents import DocumentModel + from extralit._models._documents import DocumentModel class DocumentsAPI(ResourceAPI): @@ -66,7 +66,7 @@ def get(self, id: UUID) -> "DocumentModel": Returns: The document model. """ - from argilla._models._documents import DocumentModel + from extralit._models._documents import DocumentModel url = f"/api/v1/documents/by-id/{id}" response = self.http_client.get(url=url) @@ -95,7 +95,7 @@ def get_by_pmid(self, pmid: str) -> "DocumentModel": Returns: The document model. """ - from argilla._models._documents import DocumentModel + from extralit._models._documents import DocumentModel url = f"/api/v1/documents/by-pmid/{pmid}" response = self.http_client.get(url=url) @@ -124,7 +124,7 @@ def list(self, workspace_id: UUID) -> List["DocumentModel"]: Returns: A list of document models. """ - from argilla._models._documents import DocumentModel + from extralit._models._documents import DocumentModel url = f"/api/v1/documents/workspace/{workspace_id}" response = self.http_client.get(url=url) @@ -170,7 +170,7 @@ def update(self, model: "DocumentModel") -> "DocumentModel": Returns: The updated document model. """ - from argilla._models._documents import DocumentModel + from extralit._models._documents import DocumentModel if not model.id: raise ValueError("Document ID is required for updates") diff --git a/extralit/src/argilla/_api/_fields.py b/extralit/src/extralit/_api/_fields.py similarity index 95% rename from extralit/src/argilla/_api/_fields.py rename to extralit/src/extralit/_api/_fields.py index dcf6a0394..236e22354 100644 --- a/extralit/src/argilla/_api/_fields.py +++ b/extralit/src/extralit/_api/_fields.py @@ -17,9 +17,9 @@ import httpx -from argilla._api._base import ResourceAPI -from argilla._exceptions import api_error_handler -from argilla._models import FieldModel +from extralit._api._base import ResourceAPI +from extralit._exceptions import api_error_handler +from extralit._models import FieldModel __all__ = ["FieldsAPI"] diff --git a/extralit/src/argilla/_api/_http/__init__.py b/extralit/src/extralit/_api/_http/__init__.py similarity index 82% rename from extralit/src/argilla/_api/_http/__init__.py rename to extralit/src/extralit/_api/_http/__init__.py index 2d882c43b..5ab75a8f0 100644 --- a/extralit/src/argilla/_api/_http/__init__.py +++ b/extralit/src/extralit/_api/_http/__init__.py @@ -12,5 +12,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._api._http._client import * # noqa F401, F403 -from argilla._api._http._helpers import * # noqa F401, F403 +from extralit._api._http._client import * # noqa F401, F403 +from extralit._api._http._helpers import * # noqa F401, F403 diff --git a/extralit/src/argilla/_api/_http/_client.py b/extralit/src/extralit/_api/_http/_client.py similarity index 100% rename from extralit/src/argilla/_api/_http/_client.py rename to extralit/src/extralit/_api/_http/_client.py diff --git a/extralit/src/argilla/_api/_http/_helpers.py b/extralit/src/extralit/_api/_http/_helpers.py similarity index 100% rename from extralit/src/argilla/_api/_http/_helpers.py rename to extralit/src/extralit/_api/_http/_helpers.py diff --git a/extralit/src/argilla/_api/_metadata.py b/extralit/src/extralit/_api/_metadata.py similarity index 95% rename from extralit/src/argilla/_api/_metadata.py rename to extralit/src/extralit/_api/_metadata.py index 4316f7e0c..80d35470c 100644 --- a/extralit/src/argilla/_api/_metadata.py +++ b/extralit/src/extralit/_api/_metadata.py @@ -17,9 +17,9 @@ import httpx -from argilla._api._base import ResourceAPI -from argilla._exceptions import api_error_handler -from argilla._models import MetadataFieldModel +from extralit._api._base import ResourceAPI +from extralit._exceptions import api_error_handler +from extralit._models import MetadataFieldModel __all__ = ["MetadataAPI"] diff --git a/extralit/src/argilla/_api/_questions.py b/extralit/src/extralit/_api/_questions.py similarity index 95% rename from extralit/src/argilla/_api/_questions.py rename to extralit/src/extralit/_api/_questions.py index 96bd67f0b..99d0691ab 100644 --- a/extralit/src/argilla/_api/_questions.py +++ b/extralit/src/extralit/_api/_questions.py @@ -16,9 +16,9 @@ from uuid import UUID import httpx -from argilla._api._base import ResourceAPI -from argilla._exceptions import api_error_handler -from argilla._models import QuestionModel +from extralit._api._base import ResourceAPI +from extralit._exceptions import api_error_handler +from extralit._models import QuestionModel __all__ = ["QuestionsAPI"] diff --git a/extralit/src/argilla/_api/_records.py b/extralit/src/extralit/_api/_records.py similarity index 98% rename from extralit/src/argilla/_api/_records.py rename to extralit/src/extralit/_api/_records.py index 6f29576d7..2aa26f2fd 100644 --- a/extralit/src/argilla/_api/_records.py +++ b/extralit/src/extralit/_api/_records.py @@ -18,9 +18,9 @@ import httpx from typing_extensions import deprecated -from argilla._api._base import ResourceAPI -from argilla._exceptions import api_error_handler -from argilla._models import RecordModel, UserResponseModel, SearchQueryModel +from extralit._api._base import ResourceAPI +from extralit._exceptions import api_error_handler +from extralit._models import RecordModel, UserResponseModel, SearchQueryModel __all__ = ["RecordsAPI"] diff --git a/extralit/src/argilla/_api/_token.py b/extralit/src/extralit/_api/_token.py similarity index 100% rename from extralit/src/argilla/_api/_token.py rename to extralit/src/extralit/_api/_token.py diff --git a/extralit/src/argilla/_api/_users.py b/extralit/src/extralit/_api/_users.py similarity index 97% rename from extralit/src/argilla/_api/_users.py rename to extralit/src/extralit/_api/_users.py index d5d8c3a36..f203a19b4 100644 --- a/extralit/src/argilla/_api/_users.py +++ b/extralit/src/extralit/_api/_users.py @@ -17,9 +17,9 @@ import httpx -from argilla._api._base import ResourceAPI -from argilla._exceptions import api_error_handler -from argilla._models._user import UserModel +from extralit._api._base import ResourceAPI +from extralit._exceptions import api_error_handler +from extralit._models._user import UserModel __all__ = ["UsersAPI"] diff --git a/extralit/src/argilla/_api/_vectors.py b/extralit/src/extralit/_api/_vectors.py similarity index 95% rename from extralit/src/argilla/_api/_vectors.py rename to extralit/src/extralit/_api/_vectors.py index d6e5d1478..dddbacd80 100644 --- a/extralit/src/argilla/_api/_vectors.py +++ b/extralit/src/extralit/_api/_vectors.py @@ -17,9 +17,9 @@ import httpx -from argilla._api._base import ResourceAPI -from argilla._exceptions import api_error_handler -from argilla._models import VectorFieldModel +from extralit._api._base import ResourceAPI +from extralit._exceptions import api_error_handler +from extralit._models import VectorFieldModel __all__ = ["VectorsAPI"] diff --git a/extralit/src/argilla/_api/_webhooks.py b/extralit/src/extralit/_api/_webhooks.py similarity index 96% rename from extralit/src/argilla/_api/_webhooks.py rename to extralit/src/extralit/_api/_webhooks.py index 868abeb1c..7ecd676ac 100644 --- a/extralit/src/argilla/_api/_webhooks.py +++ b/extralit/src/extralit/_api/_webhooks.py @@ -18,9 +18,9 @@ import httpx -from argilla._api._base import ResourceAPI -from argilla._exceptions import api_error_handler -from argilla._models._webhook import WebhookModel +from extralit._api._base import ResourceAPI +from extralit._exceptions import api_error_handler +from extralit._models._webhook import WebhookModel class WebhooksAPI(ResourceAPI[WebhookModel]): diff --git a/extralit/src/argilla/_api/_workspaces.py b/extralit/src/extralit/_api/_workspaces.py similarity index 97% rename from extralit/src/argilla/_api/_workspaces.py rename to extralit/src/extralit/_api/_workspaces.py index 31b493740..3c0df46a5 100644 --- a/extralit/src/argilla/_api/_workspaces.py +++ b/extralit/src/extralit/_api/_workspaces.py @@ -20,16 +20,16 @@ import httpx -from argilla._constants import _DEFAULT_SCHEMA_S3_PATH -from argilla._api._base import ResourceAPI -from argilla._exceptions._api import api_error_handler, ArgillaAPIError -from argilla._models._workspace import WorkspaceModel -from argilla._models._files import ListObjectsResponse, ObjectMetadata, FileObjectResponse +from extralit._constants import _DEFAULT_SCHEMA_S3_PATH +from extralit._api._base import ResourceAPI +from extralit._exceptions._api import api_error_handler, ArgillaAPIError +from extralit._models._workspace import WorkspaceModel +from extralit._models._files import ListObjectsResponse, ObjectMetadata, FileObjectResponse if TYPE_CHECKING: - from argilla._models._schema import SchemaStructure - from argilla._models._documents import Document + from extralit._models._schema import SchemaStructure + from extralit._models._documents import Document logger = logging.getLogger(__name__) @@ -391,7 +391,7 @@ def add_document(self, document: "Document") -> "UUID": Returns: The ID of the added document. """ - from argilla._api._documents import DocumentsAPI + from extralit._api._documents import DocumentsAPI # Create a DocumentsAPI instance to handle the operation documents_api = DocumentsAPI(http_client=self.http_client) @@ -408,7 +408,7 @@ def get_documents(self, workspace_id: "UUID") -> List["Document"]: Returns: A list of documents. """ - from argilla._api._documents import DocumentsAPI + from extralit._api._documents import DocumentsAPI # Create a DocumentsAPI instance to handle the operation documents_api = DocumentsAPI(http_client=self.http_client) @@ -442,7 +442,7 @@ def list_schemas( """ try: import pandera as pa - from argilla._models._schema import SchemaStructure + from extralit._models._schema import SchemaStructure except ImportError: logger.error("Required packages missing for schema operations") raise ImportError( diff --git a/extralit/src/argilla/_constants.py b/extralit/src/extralit/_constants.py similarity index 100% rename from extralit/src/argilla/_constants.py rename to extralit/src/extralit/_constants.py diff --git a/extralit/src/argilla/_exceptions/__init__.py b/extralit/src/extralit/_exceptions/__init__.py similarity index 59% rename from extralit/src/argilla/_exceptions/__init__.py rename to extralit/src/extralit/_exceptions/__init__.py index 8bb17898f..c4aadd6e3 100644 --- a/extralit/src/argilla/_exceptions/__init__.py +++ b/extralit/src/extralit/_exceptions/__init__.py @@ -12,10 +12,10 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._exceptions._api import * # noqa: F403 -from argilla._exceptions._client import * # noqa: F403 -from argilla._exceptions._metadata import * # noqa: F403 -from argilla._exceptions._serialization import * # noqa: F403 -from argilla._exceptions._settings import * # noqa: F403 -from argilla._exceptions._records import * # noqa: F403 -from argilla._exceptions._hub import * # noqa: F403 +from extralit._exceptions._api import * # noqa: F403 +from extralit._exceptions._client import * # noqa: F403 +from extralit._exceptions._metadata import * # noqa: F403 +from extralit._exceptions._serialization import * # noqa: F403 +from extralit._exceptions._settings import * # noqa: F403 +from extralit._exceptions._records import * # noqa: F403 +from extralit._exceptions._hub import * # noqa: F403 diff --git a/extralit/src/argilla/_exceptions/_api.py b/extralit/src/extralit/_exceptions/_api.py similarity index 98% rename from extralit/src/argilla/_exceptions/_api.py rename to extralit/src/extralit/_exceptions/_api.py index 38c1b0117..be50c40ee 100644 --- a/extralit/src/argilla/_exceptions/_api.py +++ b/extralit/src/extralit/_exceptions/_api.py @@ -15,7 +15,7 @@ from httpx import HTTPStatusError -from argilla._exceptions._base import ArgillaError +from extralit._exceptions._base import ArgillaError class ArgillaAPIError(ArgillaError): diff --git a/extralit/src/argilla/_exceptions/_base.py b/extralit/src/extralit/_exceptions/_base.py similarity index 100% rename from extralit/src/argilla/_exceptions/_base.py rename to extralit/src/extralit/_exceptions/_base.py diff --git a/extralit/src/argilla/_exceptions/_client.py b/extralit/src/extralit/_exceptions/_client.py similarity index 93% rename from extralit/src/argilla/_exceptions/_client.py rename to extralit/src/extralit/_exceptions/_client.py index aafa61f8d..e8f4c5a4d 100644 --- a/extralit/src/argilla/_exceptions/_client.py +++ b/extralit/src/extralit/_exceptions/_client.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._exceptions._base import ArgillaError +from extralit._exceptions._base import ArgillaError class ArgillaCredentialsError(ArgillaError): diff --git a/extralit/src/argilla/_exceptions/_hub.py b/extralit/src/extralit/_exceptions/_hub.py similarity index 95% rename from extralit/src/argilla/_exceptions/_hub.py rename to extralit/src/extralit/_exceptions/_hub.py index 476c94876..0baf3bd0a 100644 --- a/extralit/src/argilla/_exceptions/_hub.py +++ b/extralit/src/extralit/_exceptions/_hub.py @@ -11,7 +11,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -from argilla._exceptions import ArgillaError +from extralit._exceptions import ArgillaError __all__ = [ "ImportDatasetError", diff --git a/extralit/src/argilla/_exceptions/_metadata.py b/extralit/src/extralit/_exceptions/_metadata.py similarity index 92% rename from extralit/src/argilla/_exceptions/_metadata.py rename to extralit/src/extralit/_exceptions/_metadata.py index 0b55afd43..84be16a38 100644 --- a/extralit/src/argilla/_exceptions/_metadata.py +++ b/extralit/src/extralit/_exceptions/_metadata.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._exceptions._base import ArgillaError +from extralit._exceptions._base import ArgillaError class MetadataError(ArgillaError): diff --git a/extralit/src/argilla/_exceptions/_records.py b/extralit/src/extralit/_exceptions/_records.py similarity index 92% rename from extralit/src/argilla/_exceptions/_records.py rename to extralit/src/extralit/_exceptions/_records.py index 21f1501ed..117f4d59b 100644 --- a/extralit/src/argilla/_exceptions/_records.py +++ b/extralit/src/extralit/_exceptions/_records.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._exceptions._base import ArgillaError +from extralit._exceptions._base import ArgillaError class RecordsIngestionError(ArgillaError): diff --git a/extralit/src/argilla/_exceptions/_responses.py b/extralit/src/extralit/_exceptions/_responses.py similarity index 92% rename from extralit/src/argilla/_exceptions/_responses.py rename to extralit/src/extralit/_exceptions/_responses.py index 4775471da..bc9e01db3 100644 --- a/extralit/src/argilla/_exceptions/_responses.py +++ b/extralit/src/extralit/_exceptions/_responses.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._exceptions._base import ArgillaError +from extralit._exceptions._base import ArgillaError class RecordResponsesError(ArgillaError): diff --git a/extralit/src/argilla/_exceptions/_serialization.py b/extralit/src/extralit/_exceptions/_serialization.py similarity index 92% rename from extralit/src/argilla/_exceptions/_serialization.py rename to extralit/src/extralit/_exceptions/_serialization.py index 75fa95803..7ee355800 100644 --- a/extralit/src/argilla/_exceptions/_serialization.py +++ b/extralit/src/extralit/_exceptions/_serialization.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._exceptions._base import ArgillaError +from extralit._exceptions._base import ArgillaError class ArgillaSerializeError(ArgillaError): diff --git a/extralit/src/argilla/_exceptions/_settings.py b/extralit/src/extralit/_exceptions/_settings.py similarity index 92% rename from extralit/src/argilla/_exceptions/_settings.py rename to extralit/src/extralit/_exceptions/_settings.py index 8e8164fed..10b03278c 100644 --- a/extralit/src/argilla/_exceptions/_settings.py +++ b/extralit/src/extralit/_exceptions/_settings.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._exceptions._base import ArgillaError +from extralit._exceptions._base import ArgillaError class SettingsError(ArgillaError): diff --git a/extralit/src/argilla/_exceptions/_suggestions.py b/extralit/src/extralit/_exceptions/_suggestions.py similarity index 92% rename from extralit/src/argilla/_exceptions/_suggestions.py rename to extralit/src/extralit/_exceptions/_suggestions.py index 8e3a50dba..6044efd4d 100644 --- a/extralit/src/argilla/_exceptions/_suggestions.py +++ b/extralit/src/extralit/_exceptions/_suggestions.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._exceptions._base import ArgillaError +from extralit._exceptions._base import ArgillaError class RecordSuggestionsError(ArgillaError): diff --git a/extralit/src/argilla/_helpers/__init__.py b/extralit/src/extralit/_helpers/__init__.py similarity index 100% rename from extralit/src/argilla/_helpers/__init__.py rename to extralit/src/extralit/_helpers/__init__.py diff --git a/extralit/src/argilla/_helpers/_dataclasses.py b/extralit/src/extralit/_helpers/_dataclasses.py similarity index 100% rename from extralit/src/argilla/_helpers/_dataclasses.py rename to extralit/src/extralit/_helpers/_dataclasses.py diff --git a/extralit/src/argilla/_helpers/_deploy.py b/extralit/src/extralit/_helpers/_deploy.py similarity index 98% rename from extralit/src/argilla/_helpers/_deploy.py rename to extralit/src/extralit/_helpers/_deploy.py index c007c40a7..60c4ef960 100644 --- a/extralit/src/argilla/_helpers/_deploy.py +++ b/extralit/src/extralit/_helpers/_deploy.py @@ -20,12 +20,12 @@ from huggingface_hub import HfApi, SpaceStage, get_token, login, notebook_login from huggingface_hub.hf_api import RepoUrl -from argilla._helpers._log import LoggingMixin +from extralit._helpers._log import LoggingMixin if TYPE_CHECKING: from huggingface_hub.hf_api import RepoUrl, SpaceHardware, SpaceStorage # noqa - from argilla.client import Argilla + from extralit.client import Argilla _SLEEP_TIME = 10 _ARGILLA_SPACE_TEMPLATE_REPO = "argilla/argilla-template-space" @@ -60,7 +60,7 @@ def deploy_on_spaces( Example: ```Python - import argilla as rg + import extralit as rg client = rg.Argilla.deploy_on_spaces(api_key="12345678") ``` """ diff --git a/extralit/src/argilla/_helpers/_iterator.py b/extralit/src/extralit/_helpers/_iterator.py similarity index 100% rename from extralit/src/argilla/_helpers/_iterator.py rename to extralit/src/extralit/_helpers/_iterator.py diff --git a/extralit/src/argilla/_helpers/_log.py b/extralit/src/extralit/_helpers/_log.py similarity index 100% rename from extralit/src/argilla/_helpers/_log.py rename to extralit/src/extralit/_helpers/_log.py diff --git a/extralit/src/argilla/_helpers/_media.py b/extralit/src/extralit/_helpers/_media.py similarity index 100% rename from extralit/src/argilla/_helpers/_media.py rename to extralit/src/extralit/_helpers/_media.py diff --git a/extralit/src/argilla/_helpers/_resource_repr.py b/extralit/src/extralit/_helpers/_resource_repr.py similarity index 100% rename from extralit/src/argilla/_helpers/_resource_repr.py rename to extralit/src/extralit/_helpers/_resource_repr.py diff --git a/extralit/src/argilla/_helpers/_uuid.py b/extralit/src/extralit/_helpers/_uuid.py similarity index 100% rename from extralit/src/argilla/_helpers/_uuid.py rename to extralit/src/extralit/_helpers/_uuid.py diff --git a/extralit/src/argilla/_models/__init__.py b/extralit/src/extralit/_models/__init__.py similarity index 62% rename from extralit/src/argilla/_models/__init__.py rename to extralit/src/extralit/_models/__init__.py index 31af36f79..e5d63ba7b 100644 --- a/extralit/src/argilla/_models/__init__.py +++ b/extralit/src/extralit/_models/__init__.py @@ -14,15 +14,15 @@ # We skip the flake8 check because we are importing all the models and the import order is important # flake8: noqa -from argilla._models._resource import ResourceModel -from argilla._models._workspace import WorkspaceModel -from argilla._models._user import UserModel, Role -from argilla._models._dataset import DatasetModel -from argilla._models._record._record import RecordModel, FieldValue -from argilla._models._record._suggestion import SuggestionModel -from argilla._models._record._response import UserResponseModel, ResponseStatus -from argilla._models._record._vector import VectorModel, VectorValue -from argilla._models._search import ( +from extralit._models._resource import ResourceModel +from extralit._models._workspace import WorkspaceModel +from extralit._models._user import UserModel, Role +from extralit._models._dataset import DatasetModel +from extralit._models._record._record import RecordModel, FieldValue +from extralit._models._record._suggestion import SuggestionModel +from extralit._models._record._response import UserResponseModel, ResponseStatus +from extralit._models._record._vector import VectorModel, VectorValue +from extralit._models._search import ( SearchQueryModel, AndFilterModel, FilterModel, @@ -30,7 +30,7 @@ TermsFilterModel, ScopeModel, ) -from argilla._models._settings._fields import ( +from extralit._models._settings._fields import ( FieldModel, TextFieldSettings, ImageFieldSettings, @@ -39,7 +39,7 @@ FieldSettings, TableFieldSettings, ) -from argilla._models._settings._questions import ( +from extralit._models._settings._questions import ( QuestionModel, QuestionSettings, SpanQuestionSettings, @@ -49,7 +49,7 @@ MultiLabelQuestionSettings, RankingQuestionSettings, ) -from argilla._models._settings._metadata import ( +from extralit._models._settings._metadata import ( MetadataFieldModel, BaseMetadataPropertySettings, TermsMetadataPropertySettings, @@ -57,7 +57,7 @@ FloatMetadataPropertySettings, IntegerMetadataPropertySettings, ) -from argilla._models._settings._questions import ( +from extralit._models._settings._questions import ( QuestionModel, QuestionSettings, LabelQuestionSettings, @@ -67,8 +67,8 @@ RankingQuestionSettings, SpanQuestionSettings, ) -from argilla._models._settings._vectors import VectorFieldModel +from extralit._models._settings._vectors import VectorFieldModel -from argilla._models._user import UserModel, Role -from argilla._models._workspace import WorkspaceModel -from argilla._models._webhook import WebhookModel, EventType +from extralit._models._user import UserModel, Role +from extralit._models._workspace import WorkspaceModel +from extralit._models._webhook import WebhookModel, EventType diff --git a/extralit/src/argilla/_models/_base.py b/extralit/src/extralit/_models/_base.py similarity index 100% rename from extralit/src/argilla/_models/_base.py rename to extralit/src/extralit/_models/_base.py diff --git a/extralit/src/argilla/_models/_dataset.py b/extralit/src/extralit/_models/_dataset.py similarity index 92% rename from extralit/src/argilla/_models/_dataset.py rename to extralit/src/extralit/_models/_dataset.py index 32e2a5d2f..200dbd6d4 100644 --- a/extralit/src/argilla/_models/_dataset.py +++ b/extralit/src/extralit/_models/_dataset.py @@ -19,11 +19,11 @@ from pydantic import field_serializer, ConfigDict -from argilla._models import ResourceModel +from extralit._models import ResourceModel __all__ = ["DatasetModel"] -from argilla._models._settings._task_distribution import TaskDistributionModel +from extralit._models._settings._task_distribution import TaskDistributionModel class DatasetModel(ResourceModel): diff --git a/extralit/src/argilla/_models/_dataset_progress.py b/extralit/src/extralit/_models/_dataset_progress.py similarity index 100% rename from extralit/src/argilla/_models/_dataset_progress.py rename to extralit/src/extralit/_models/_dataset_progress.py diff --git a/extralit/src/argilla/_models/_documents.py b/extralit/src/extralit/_models/_documents.py similarity index 98% rename from extralit/src/argilla/_models/_documents.py rename to extralit/src/extralit/_models/_documents.py index ccc17d268..39c1f9d50 100644 --- a/extralit/src/argilla/_models/_documents.py +++ b/extralit/src/extralit/_models/_documents.py @@ -19,7 +19,7 @@ from pydantic import Field -from argilla._models._base import ResourceModel +from extralit._models._base import ResourceModel class DocumentModel(ResourceModel): diff --git a/extralit/src/argilla/_models/_files.py b/extralit/src/extralit/_models/_files.py similarity index 100% rename from extralit/src/argilla/_models/_files.py rename to extralit/src/extralit/_models/_files.py diff --git a/extralit/src/argilla/_models/_record/__init__.py b/extralit/src/extralit/_models/_record/__init__.py similarity index 100% rename from extralit/src/argilla/_models/_record/__init__.py rename to extralit/src/extralit/_models/_record/__init__.py diff --git a/extralit/src/argilla/_models/_record/_metadata.py b/extralit/src/extralit/_models/_record/_metadata.py similarity index 100% rename from extralit/src/argilla/_models/_record/_metadata.py rename to extralit/src/extralit/_models/_record/_metadata.py diff --git a/extralit/src/argilla/_models/_record/_record.py b/extralit/src/extralit/_models/_record/_record.py similarity index 95% rename from extralit/src/argilla/_models/_record/_record.py rename to extralit/src/extralit/_models/_record/_record.py index e171b9ddd..63e5a623e 100644 --- a/extralit/src/argilla/_models/_record/_record.py +++ b/extralit/src/extralit/_models/_record/_record.py @@ -18,11 +18,11 @@ from pydantic import BaseModel, Field, field_serializer, field_validator -from argilla._models._record._metadata import MetadataModel -from argilla._models._record._response import UserResponseModel -from argilla._models._record._suggestion import SuggestionModel -from argilla._models._record._vector import VectorModel -from argilla._models._resource import ResourceModel +from extralit._models._record._metadata import MetadataModel +from extralit._models._record._response import UserResponseModel +from extralit._models._record._suggestion import SuggestionModel +from extralit._models._record._vector import VectorModel +from extralit._models._resource import ResourceModel __all__ = ["RecordModel", "FieldValue"] diff --git a/extralit/src/argilla/_models/_record/_response.py b/extralit/src/extralit/_models/_record/_response.py similarity index 100% rename from extralit/src/argilla/_models/_record/_response.py rename to extralit/src/extralit/_models/_record/_response.py diff --git a/extralit/src/argilla/_models/_record/_suggestion.py b/extralit/src/extralit/_models/_record/_suggestion.py similarity index 100% rename from extralit/src/argilla/_models/_record/_suggestion.py rename to extralit/src/extralit/_models/_record/_suggestion.py diff --git a/extralit/src/argilla/_models/_record/_vector.py b/extralit/src/extralit/_models/_record/_vector.py similarity index 96% rename from extralit/src/argilla/_models/_record/_vector.py rename to extralit/src/extralit/_models/_record/_vector.py index d1c6f2e25..4ee5e888f 100644 --- a/extralit/src/argilla/_models/_record/_vector.py +++ b/extralit/src/extralit/_models/_record/_vector.py @@ -16,7 +16,7 @@ from pydantic import field_validator -from argilla._models import ResourceModel +from extralit._models import ResourceModel __all__ = ["VectorModel", "VectorValue"] diff --git a/extralit/src/argilla/_models/_resource.py b/extralit/src/extralit/_models/_resource.py similarity index 100% rename from extralit/src/argilla/_models/_resource.py rename to extralit/src/extralit/_models/_resource.py diff --git a/extralit/src/argilla/_models/_schema.py b/extralit/src/extralit/_models/_schema.py similarity index 96% rename from extralit/src/argilla/_models/_schema.py rename to extralit/src/extralit/_models/_schema.py index 6f4ad5d0e..96d2acfb2 100644 --- a/extralit/src/argilla/_models/_schema.py +++ b/extralit/src/extralit/_models/_schema.py @@ -24,7 +24,7 @@ class SchemaStructure(BaseModel): Usage: ```python from pandera import DataFrameSchema - from argilla._models._schema import SchemaStructure + from extralit._models._schema import SchemaStructure schema_structure = SchemaStructure( schemas=[ diff --git a/extralit/src/argilla/_models/_search.py b/extralit/src/extralit/_models/_search.py similarity index 100% rename from extralit/src/argilla/_models/_search.py rename to extralit/src/extralit/_models/_search.py diff --git a/extralit/src/argilla/_models/_settings/__init__.py b/extralit/src/extralit/_models/_settings/__init__.py similarity index 100% rename from extralit/src/argilla/_models/_settings/__init__.py rename to extralit/src/extralit/_models/_settings/__init__.py diff --git a/extralit/src/argilla/_models/_settings/_fields.py b/extralit/src/extralit/_models/_settings/_fields.py similarity index 96% rename from extralit/src/argilla/_models/_settings/_fields.py rename to extralit/src/extralit/_models/_settings/_fields.py index 7d6d690bd..57b16d575 100644 --- a/extralit/src/argilla/_models/_settings/_fields.py +++ b/extralit/src/extralit/_models/_settings/_fields.py @@ -18,8 +18,8 @@ from pydantic import BaseModel, field_serializer, field_validator, Field from pydantic_core.core_schema import ValidationInfo -from argilla._helpers import log_message -from argilla._models import ResourceModel +from extralit._helpers import log_message +from extralit._models import ResourceModel class TextFieldSettings(BaseModel): diff --git a/extralit/src/argilla/_models/_settings/_metadata.py b/extralit/src/extralit/_models/_settings/_metadata.py similarity index 97% rename from extralit/src/argilla/_models/_settings/_metadata.py rename to extralit/src/extralit/_models/_settings/_metadata.py index 19b43fca7..f4598a9f4 100644 --- a/extralit/src/argilla/_models/_settings/_metadata.py +++ b/extralit/src/extralit/_models/_settings/_metadata.py @@ -17,8 +17,8 @@ from pydantic import BaseModel, Field, field_serializer, field_validator, model_validator -from argilla._exceptions import MetadataError -from argilla._models import ResourceModel +from extralit._exceptions import MetadataError +from extralit._models import ResourceModel class BaseMetadataPropertySettings(BaseModel): diff --git a/extralit/src/argilla/_models/_settings/_questions.py b/extralit/src/extralit/_models/_settings/_questions.py similarity index 99% rename from extralit/src/argilla/_models/_settings/_questions.py rename to extralit/src/extralit/_models/_settings/_questions.py index bdc00ec65..57288a2ed 100644 --- a/extralit/src/argilla/_models/_settings/_questions.py +++ b/extralit/src/extralit/_models/_settings/_questions.py @@ -18,7 +18,7 @@ from pydantic import ConfigDict, field_validator, Field, BaseModel, model_validator, field_serializer from pydantic_core.core_schema import ValidationInfo -from argilla._models import ResourceModel +from extralit._models import ResourceModel try: from typing import Self diff --git a/extralit/src/argilla/_models/_settings/_task_distribution.py b/extralit/src/extralit/_models/_settings/_task_distribution.py similarity index 100% rename from extralit/src/argilla/_models/_settings/_task_distribution.py rename to extralit/src/extralit/_models/_settings/_task_distribution.py diff --git a/extralit/src/argilla/_models/_settings/_vectors.py b/extralit/src/extralit/_models/_settings/_vectors.py similarity index 94% rename from extralit/src/argilla/_models/_settings/_vectors.py rename to extralit/src/extralit/_models/_settings/_vectors.py index 6a54e064d..f519102fb 100644 --- a/extralit/src/argilla/_models/_settings/_vectors.py +++ b/extralit/src/extralit/_models/_settings/_vectors.py @@ -18,8 +18,8 @@ from pydantic import field_validator, field_serializer from pydantic_core.core_schema import ValidationInfo -from argilla._models import ResourceModel -from argilla._helpers import log_message +from extralit._models import ResourceModel +from extralit._helpers import log_message class VectorFieldModel(ResourceModel): diff --git a/extralit/src/argilla/_models/_user.py b/extralit/src/extralit/_models/_user.py similarity index 97% rename from extralit/src/argilla/_models/_user.py rename to extralit/src/extralit/_models/_user.py index 1762f66bc..2e1192d84 100644 --- a/extralit/src/argilla/_models/_user.py +++ b/extralit/src/extralit/_models/_user.py @@ -18,7 +18,7 @@ from pydantic import field_validator, ConfigDict from pydantic_core.core_schema import ValidationInfo -from argilla._models import ResourceModel +from extralit._models import ResourceModel __all__ = ["UserModel", "Role"] diff --git a/extralit/src/argilla/_models/_webhook.py b/extralit/src/extralit/_models/_webhook.py similarity index 97% rename from extralit/src/argilla/_models/_webhook.py rename to extralit/src/extralit/_models/_webhook.py index 747162aec..e95b3261a 100644 --- a/extralit/src/argilla/_models/_webhook.py +++ b/extralit/src/extralit/_models/_webhook.py @@ -17,7 +17,7 @@ from pydantic import Field, ConfigDict -from argilla._models._base import ResourceModel +from extralit._models._base import ResourceModel class EventType(str, Enum): diff --git a/extralit/src/argilla/_models/_workspace.py b/extralit/src/extralit/_models/_workspace.py similarity index 96% rename from extralit/src/argilla/_models/_workspace.py rename to extralit/src/extralit/_models/_workspace.py index c823d79b0..1efffb93f 100644 --- a/extralit/src/argilla/_models/_workspace.py +++ b/extralit/src/extralit/_models/_workspace.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla._models import ResourceModel +from extralit._models import ResourceModel import re from pydantic import field_validator, ConfigDict diff --git a/extralit/src/argilla/_resource.py b/extralit/src/extralit/_resource.py similarity index 94% rename from extralit/src/argilla/_resource.py rename to extralit/src/extralit/_resource.py index c31d023a7..7600ef085 100644 --- a/extralit/src/argilla/_resource.py +++ b/extralit/src/extralit/_resource.py @@ -21,13 +21,13 @@ except ImportError: from typing_extensions import Self -from argilla._exceptions import ArgillaSerializeError -from argilla._helpers import LoggingMixin +from extralit._exceptions import ArgillaSerializeError +from extralit._helpers import LoggingMixin if TYPE_CHECKING: - from argilla._api._base import ResourceAPI - from argilla._models import ResourceModel - from argilla.client import Argilla + from extralit._api._base import ResourceAPI + from extralit._models import ResourceModel + from extralit.client import Argilla class Resource(LoggingMixin): diff --git a/extralit/src/argilla/_version.py b/extralit/src/extralit/_version.py similarity index 100% rename from extralit/src/argilla/_version.py rename to extralit/src/extralit/_version.py diff --git a/extralit/src/argilla/cli/__init__.py b/extralit/src/extralit/cli/__init__.py similarity index 100% rename from extralit/src/argilla/cli/__init__.py rename to extralit/src/extralit/cli/__init__.py diff --git a/extralit/src/argilla/cli/app.py b/extralit/src/extralit/cli/app.py similarity index 93% rename from extralit/src/argilla/cli/app.py rename to extralit/src/extralit/cli/app.py index fa10dfb9e..bad1aee11 100644 --- a/extralit/src/argilla/cli/app.py +++ b/extralit/src/extralit/cli/app.py @@ -14,10 +14,10 @@ import warnings -from argilla.cli.typer_ext import ArgillaTyper +from extralit.cli.typer_ext import ArgillaTyper # Import all CLI modules that will be registered with the app -from argilla.cli import ( +from extralit.cli import ( datasets, documents, extraction, @@ -40,7 +40,7 @@ @app.error_handler(PermissionError) def handler_permission_error(e: PermissionError) -> None: import sys - from argilla.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console panel = get_argilla_themed_panel( diff --git a/extralit/src/argilla/cli/callback.py b/extralit/src/extralit/cli/callback.py similarity index 92% rename from extralit/src/argilla/cli/callback.py rename to extralit/src/extralit/cli/callback.py index ba0226974..cb44b174b 100644 --- a/extralit/src/argilla/cli/callback.py +++ b/extralit/src/extralit/cli/callback.py @@ -16,12 +16,12 @@ import typer if TYPE_CHECKING: - from argilla.client.core import Argilla + from extralit.client.core import Argilla def echo_in_panel(text, title=None, title_align="center", success=True): """Echoes a message in a rich panel with Argilla theme.""" - from argilla.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console panel = get_argilla_themed_panel( @@ -35,7 +35,7 @@ def echo_in_panel(text, title=None, title_align="center", success=True): def init_callback() -> "Argilla": """Initialize Argilla client if user is logged in, otherwise exit.""" - from argilla.client.login import ArgillaCredentials + from extralit.client.login import ArgillaCredentials if not ArgillaCredentials.exists(): echo_in_panel( @@ -47,7 +47,7 @@ def init_callback() -> "Argilla": raise typer.Exit(code=1) try: - from argilla.client import Argilla + from extralit.client import Argilla client = Argilla.from_credentials() return client diff --git a/extralit/src/argilla/cli/datasets/__init__.py b/extralit/src/extralit/cli/datasets/__init__.py similarity index 100% rename from extralit/src/argilla/cli/datasets/__init__.py rename to extralit/src/extralit/cli/datasets/__init__.py diff --git a/extralit/src/argilla/cli/datasets/__main__.py b/extralit/src/extralit/cli/datasets/__main__.py similarity index 97% rename from extralit/src/argilla/cli/datasets/__main__.py rename to extralit/src/extralit/cli/datasets/__main__.py index 57be20f64..64def1367 100644 --- a/extralit/src/argilla/cli/datasets/__main__.py +++ b/extralit/src/extralit/cli/datasets/__main__.py @@ -16,9 +16,9 @@ import typer -from argilla.cli.callback import init_callback -from argilla.cli.rich import get_argilla_themed_panel -from argilla.cli.rich import print_rich_table +from extralit.cli.callback import init_callback +from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import print_rich_table from rich.console import Console if TYPE_CHECKING: @@ -195,8 +195,8 @@ def create_dataset( try: client = init_callback() - from argilla.settings import Settings, TextField, TextQuestion - from argilla.datasets._resource import Dataset + from extralit.settings import Settings, TextField, TextQuestion + from extralit.datasets._resource import Dataset fields = [TextField(name="text", title="Text")] questions = [TextQuestion(name="comment", title="Comment", description="Add your comments here")] diff --git a/extralit/src/argilla/cli/documents/__init__.py b/extralit/src/extralit/cli/documents/__init__.py similarity index 50% rename from extralit/src/argilla/cli/documents/__init__.py rename to extralit/src/extralit/cli/documents/__init__.py index 0c3e66d24..f3329031c 100644 --- a/extralit/src/argilla/cli/documents/__init__.py +++ b/extralit/src/extralit/cli/documents/__init__.py @@ -1,5 +1,5 @@ """Documents CLI module.""" -from argilla.cli.documents.__main__ import app +from extralit.cli.documents.__main__ import app __all__ = ["app"] diff --git a/extralit/src/argilla/cli/documents/__main__.py b/extralit/src/extralit/cli/documents/__main__.py similarity index 74% rename from extralit/src/argilla/cli/documents/__main__.py rename to extralit/src/extralit/cli/documents/__main__.py index bd8099338..bdd1b5d5b 100644 --- a/extralit/src/argilla/cli/documents/__main__.py +++ b/extralit/src/extralit/cli/documents/__main__.py @@ -14,13 +14,13 @@ """Documents CLI commands.""" -from argilla.cli.typer_ext import ArgillaTyper +from extralit.cli.typer_ext import ArgillaTyper -from argilla.cli.documents.list import list_documents -from argilla.cli.documents.add import add_document -from argilla.cli.documents.import_bib import import_bib -from argilla.cli.documents.delete import delete_document -from argilla.cli.documents.import_history import list_import_histories +from extralit.cli.documents.list import list_documents +from extralit.cli.documents.add import add_document +from extralit.cli.documents.import_bib import import_bib +from extralit.cli.documents.delete import delete_document +from extralit.cli.documents.import_history import list_import_histories app = ArgillaTyper(help="Manage documents in workspaces", no_args_is_help=True) diff --git a/extralit/src/argilla/cli/documents/add.py b/extralit/src/extralit/cli/documents/add.py similarity index 97% rename from extralit/src/argilla/cli/documents/add.py rename to extralit/src/extralit/cli/documents/add.py index 5fb0a88cd..61d157496 100644 --- a/extralit/src/argilla/cli/documents/add.py +++ b/extralit/src/extralit/cli/documents/add.py @@ -38,9 +38,9 @@ from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn -from argilla.client import Argilla -from argilla.cli.rich import get_argilla_themed_panel -from argilla.documents import Document +from extralit.client import Argilla +from extralit.cli.rich import get_argilla_themed_panel +from extralit.documents import Document def add_document( diff --git a/extralit/src/argilla/cli/documents/delete.py b/extralit/src/extralit/cli/documents/delete.py similarity index 98% rename from extralit/src/argilla/cli/documents/delete.py rename to extralit/src/extralit/cli/documents/delete.py index e4f44951c..5a93b757b 100644 --- a/extralit/src/argilla/cli/documents/delete.py +++ b/extralit/src/extralit/cli/documents/delete.py @@ -20,8 +20,8 @@ import typer from rich.console import Console -from argilla.client import Argilla -from argilla.cli.rich import get_argilla_themed_panel +from extralit.client import Argilla +from extralit.cli.rich import get_argilla_themed_panel def delete_document( diff --git a/extralit/src/argilla/cli/documents/import_bib.py b/extralit/src/extralit/cli/documents/import_bib.py similarity index 99% rename from extralit/src/argilla/cli/documents/import_bib.py rename to extralit/src/extralit/cli/documents/import_bib.py index ab3b0eacd..3bbf01d92 100644 --- a/extralit/src/argilla/cli/documents/import_bib.py +++ b/extralit/src/extralit/cli/documents/import_bib.py @@ -43,9 +43,9 @@ from rich.progress import Progress, SpinnerColumn, TextColumn from rich.table import Table -from argilla.workspaces._resource import Workspace -from argilla.client import Argilla -from argilla.cli.rich import get_argilla_themed_panel +from extralit.workspaces._resource import Workspace +from extralit.client import Argilla +from extralit.cli.rich import get_argilla_themed_panel def _clean_bibtex_field(value: str) -> str: diff --git a/extralit/src/argilla/cli/documents/import_history.py b/extralit/src/extralit/cli/documents/import_history.py similarity index 99% rename from extralit/src/argilla/cli/documents/import_history.py rename to extralit/src/extralit/cli/documents/import_history.py index e875d1681..5c7af46bc 100644 --- a/extralit/src/argilla/cli/documents/import_history.py +++ b/extralit/src/extralit/cli/documents/import_history.py @@ -35,8 +35,8 @@ from rich.progress import Progress, SpinnerColumn, TextColumn from rich.table import Table -from argilla.client import Argilla -from argilla.cli.rich import get_argilla_themed_panel +from extralit.client import Argilla +from extralit.cli.rich import get_argilla_themed_panel def list_import_histories( diff --git a/extralit/src/argilla/cli/documents/list.py b/extralit/src/extralit/cli/documents/list.py similarity index 95% rename from extralit/src/argilla/cli/documents/list.py rename to extralit/src/extralit/cli/documents/list.py index 26c74869d..2bfc7b5a5 100644 --- a/extralit/src/argilla/cli/documents/list.py +++ b/extralit/src/extralit/cli/documents/list.py @@ -17,8 +17,8 @@ import typer from rich.console import Console -from argilla.client import Argilla -from argilla.cli.rich import get_argilla_themed_panel, print_rich_table +from extralit.client import Argilla +from extralit.cli.rich import get_argilla_themed_panel, print_rich_table def list_documents( diff --git a/extralit/src/argilla/cli/extraction/__init__.py b/extralit/src/extralit/cli/extraction/__init__.py similarity index 100% rename from extralit/src/argilla/cli/extraction/__init__.py rename to extralit/src/extralit/cli/extraction/__init__.py diff --git a/extralit/src/argilla/cli/extraction/__main__.py b/extralit/src/extralit/cli/extraction/__main__.py similarity index 98% rename from extralit/src/argilla/cli/extraction/__main__.py rename to extralit/src/extralit/cli/extraction/__main__.py index ad2fa926b..9d5f40921 100644 --- a/extralit/src/argilla/cli/extraction/__main__.py +++ b/extralit/src/extralit/cli/extraction/__main__.py @@ -17,8 +17,8 @@ import typer -from argilla.cli.callback import init_callback -from argilla.cli.rich import get_argilla_themed_panel +from extralit.cli.callback import init_callback +from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console from rich.spinner import Spinner from rich.live import Live diff --git a/extralit/src/argilla/cli/extraction/export.py b/extralit/src/extralit/cli/extraction/export.py similarity index 96% rename from extralit/src/argilla/cli/extraction/export.py rename to extralit/src/extralit/cli/extraction/export.py index cc893d141..15882d40e 100644 --- a/extralit/src/argilla/cli/extraction/export.py +++ b/extralit/src/extralit/cli/extraction/export.py @@ -30,7 +30,7 @@ def export_data( This is a stub implementation that will be replaced in Phase 3. """ - from argilla.cli.rich import echo_in_panel + from extralit.cli.rich import echo_in_panel echo_in_panel( "This command is not fully implemented yet. It will be available in a future release.", title="Coming Soon", diff --git a/extralit/src/argilla/cli/extraction/status.py b/extralit/src/extralit/cli/extraction/status.py similarity index 100% rename from extralit/src/argilla/cli/extraction/status.py rename to extralit/src/extralit/cli/extraction/status.py diff --git a/extralit/src/argilla/cli/files/__init__.py b/extralit/src/extralit/cli/files/__init__.py similarity index 93% rename from extralit/src/argilla/cli/files/__init__.py rename to extralit/src/extralit/cli/files/__init__.py index 8cdba1a11..04be8a866 100644 --- a/extralit/src/argilla/cli/files/__init__.py +++ b/extralit/src/extralit/cli/files/__init__.py @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.cli.files.__main__ import app +from extralit.cli.files.__main__ import app __all__ = ["app"] diff --git a/extralit/src/argilla/cli/files/__main__.py b/extralit/src/extralit/cli/files/__main__.py similarity index 78% rename from extralit/src/argilla/cli/files/__main__.py rename to extralit/src/extralit/cli/files/__main__.py index f6aa62c62..01bc84d54 100644 --- a/extralit/src/argilla/cli/files/__main__.py +++ b/extralit/src/extralit/cli/files/__main__.py @@ -12,12 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.cli.typer_ext import ArgillaTyper +from extralit.cli.typer_ext import ArgillaTyper -from argilla.cli.files.list import list_files -from argilla.cli.files.upload import upload_file -from argilla.cli.files.download import download_file -from argilla.cli.files.delete import delete_file +from extralit.cli.files.list import list_files +from extralit.cli.files.upload import upload_file +from extralit.cli.files.download import download_file +from extralit.cli.files.delete import delete_file app = ArgillaTyper(help="Manage files in workspaces", no_args_is_help=True) diff --git a/extralit/src/argilla/cli/files/delete.py b/extralit/src/extralit/cli/files/delete.py similarity index 96% rename from extralit/src/argilla/cli/files/delete.py rename to extralit/src/extralit/cli/files/delete.py index 52f1ffb1f..c80bb6a78 100644 --- a/extralit/src/argilla/cli/files/delete.py +++ b/extralit/src/extralit/cli/files/delete.py @@ -17,8 +17,8 @@ import typer from rich.console import Console -from argilla.client import Argilla -from argilla.cli.rich import get_argilla_themed_panel +from extralit.client import Argilla +from extralit.cli.rich import get_argilla_themed_panel def delete_file( diff --git a/extralit/src/argilla/cli/files/download.py b/extralit/src/extralit/cli/files/download.py similarity index 97% rename from extralit/src/argilla/cli/files/download.py rename to extralit/src/extralit/cli/files/download.py index dda57a65c..b14cd3eb9 100644 --- a/extralit/src/argilla/cli/files/download.py +++ b/extralit/src/extralit/cli/files/download.py @@ -20,8 +20,8 @@ from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn -from argilla.client import Argilla -from argilla.cli.rich import get_argilla_themed_panel +from extralit.client import Argilla +from extralit.cli.rich import get_argilla_themed_panel def download_file( diff --git a/extralit/src/argilla/cli/files/list.py b/extralit/src/extralit/cli/files/list.py similarity index 95% rename from extralit/src/argilla/cli/files/list.py rename to extralit/src/extralit/cli/files/list.py index be27a3442..c8dc0bcb8 100644 --- a/extralit/src/argilla/cli/files/list.py +++ b/extralit/src/extralit/cli/files/list.py @@ -14,8 +14,8 @@ import typer -from argilla.client import Argilla -from argilla.cli.rich import get_argilla_themed_panel, print_rich_table +from extralit.client import Argilla +from extralit.cli.rich import get_argilla_themed_panel, print_rich_table def list_files( diff --git a/extralit/src/argilla/cli/files/upload.py b/extralit/src/extralit/cli/files/upload.py similarity index 97% rename from extralit/src/argilla/cli/files/upload.py rename to extralit/src/extralit/cli/files/upload.py index 47c4f85f3..83f9e0528 100644 --- a/extralit/src/argilla/cli/files/upload.py +++ b/extralit/src/extralit/cli/files/upload.py @@ -19,8 +19,8 @@ from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn -from argilla.client import Argilla -from argilla.cli.rich import get_argilla_themed_panel +from extralit.client import Argilla +from extralit.cli.rich import get_argilla_themed_panel def upload_file( diff --git a/extralit/src/argilla/cli/info/__init__.py b/extralit/src/extralit/cli/info/__init__.py similarity index 100% rename from extralit/src/argilla/cli/info/__init__.py rename to extralit/src/extralit/cli/info/__init__.py diff --git a/extralit/src/argilla/cli/info/__main__.py b/extralit/src/extralit/cli/info/__main__.py similarity index 88% rename from extralit/src/argilla/cli/info/__main__.py rename to extralit/src/extralit/cli/info/__main__.py index b5330ebec..e7cd5fb9e 100644 --- a/extralit/src/argilla/cli/info/__main__.py +++ b/extralit/src/extralit/cli/info/__main__.py @@ -14,8 +14,8 @@ import typer -from argilla.cli.callback import init_callback -from argilla.cli.rich import get_argilla_themed_panel +from extralit.cli.callback import init_callback +from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console from rich.markdown import Markdown @@ -26,7 +26,7 @@ def info() -> None: """Display information about the Extralit client and server.""" try: - from argilla import __version__ as version + from extralit import __version__ as version except ImportError: version = "2.0.0" diff --git a/extralit/src/argilla/cli/login/__init__.py b/extralit/src/extralit/cli/login/__init__.py similarity index 100% rename from extralit/src/argilla/cli/login/__init__.py rename to extralit/src/extralit/cli/login/__init__.py diff --git a/extralit/src/argilla/cli/login/__main__.py b/extralit/src/extralit/cli/login/__main__.py similarity index 96% rename from extralit/src/argilla/cli/login/__main__.py rename to extralit/src/extralit/cli/login/__main__.py index 2542457a9..72cde9c9f 100644 --- a/extralit/src/argilla/cli/login/__main__.py +++ b/extralit/src/extralit/cli/login/__main__.py @@ -25,7 +25,7 @@ def login_impl(api_url: str, api_key: str, workspace: Optional[str] = None, extr Uses the client login function to validate and store credentials. """ - from argilla.client.login import login + from extralit.client.login import login login(api_url=api_url, api_key=api_key, workspace=workspace, extra_headers=extra_headers) @@ -48,7 +48,7 @@ def login( """Login to an Extralit Server by providing API URL and API key credentials.""" import json - from argilla.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console try: diff --git a/extralit/src/argilla/cli/logout/__init__.py b/extralit/src/extralit/cli/logout/__init__.py similarity index 100% rename from extralit/src/argilla/cli/logout/__init__.py rename to extralit/src/extralit/cli/logout/__init__.py diff --git a/extralit/src/argilla/cli/logout/__main__.py b/extralit/src/extralit/cli/logout/__main__.py similarity index 89% rename from extralit/src/argilla/cli/logout/__main__.py rename to extralit/src/extralit/cli/logout/__main__.py index 6c646b319..0ce75cf13 100644 --- a/extralit/src/argilla/cli/logout/__main__.py +++ b/extralit/src/extralit/cli/logout/__main__.py @@ -19,7 +19,7 @@ def remove_credentials(): """Remove stored credentials.""" - from argilla.client.login import ArgillaCredentials + from extralit.client.login import ArgillaCredentials try: ArgillaCredentials.remove() @@ -33,10 +33,10 @@ def remove_credentials(): @app.callback(help="Logout from an Extralit Server") def logout(force: bool = typer.Option(False, help="Force the logout even if the server cannot be reached")) -> None: """Logout from an Extralit Server by removing stored credentials.""" - from argilla.cli.callback import init_callback - from argilla.cli.rich import get_argilla_themed_panel + from extralit.cli.callback import init_callback + from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console - from argilla.client.login import ArgillaCredentials + from extralit.client.login import ArgillaCredentials if not force: try: diff --git a/extralit/src/argilla/cli/rich.py b/extralit/src/extralit/cli/rich.py similarity index 98% rename from extralit/src/argilla/cli/rich.py rename to extralit/src/extralit/cli/rich.py index 52f2d3f25..8b64fb135 100644 --- a/extralit/src/argilla/cli/rich.py +++ b/extralit/src/extralit/cli/rich.py @@ -22,9 +22,9 @@ from rich.text import Text if TYPE_CHECKING: - from argilla._resource import Resource - from argilla._models._documents import Document - from argilla._models._files import ObjectMetadata + from extralit._resource import Resource + from extralit._models._documents import Document + from extralit._models._files import ObjectMetadata try: import pandas as pd diff --git a/extralit/src/argilla/cli/schemas/__init__.py b/extralit/src/extralit/cli/schemas/__init__.py similarity index 100% rename from extralit/src/argilla/cli/schemas/__init__.py rename to extralit/src/extralit/cli/schemas/__init__.py diff --git a/extralit/src/argilla/cli/schemas/__main__.py b/extralit/src/extralit/cli/schemas/__main__.py similarity index 96% rename from extralit/src/argilla/cli/schemas/__main__.py rename to extralit/src/extralit/cli/schemas/__main__.py index e87421459..6409af7e3 100644 --- a/extralit/src/argilla/cli/schemas/__main__.py +++ b/extralit/src/extralit/cli/schemas/__main__.py @@ -17,8 +17,8 @@ import typer -from argilla.cli.callback import init_callback -from argilla.cli.rich import get_argilla_themed_panel +from extralit.cli.callback import init_callback +from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console if TYPE_CHECKING: @@ -81,7 +81,7 @@ def upload_schemas_command( ), ) -> None: """Upload or update schemas from files in a specified directory.""" - from argilla.cli.schemas.upload import upload_schemas + from extralit.cli.schemas.upload import upload_schemas client, workspace_data = get_workspace_client(workspace) ctx.obj = { @@ -111,7 +111,7 @@ def list_schemas( ), ) -> None: """List available schemas with optional filtering.""" - from argilla.cli.rich import get_argilla_themed_panel, print_rich_table, console_table_to_pandas_df + from extralit.cli.rich import get_argilla_themed_panel, print_rich_table, console_table_to_pandas_df from rich.console import Console client, workspace_data = get_workspace_client(workspace) @@ -265,7 +265,7 @@ def download_schemas_command( ), ) -> None: """Download schemas from a workspace.""" - from argilla.cli.schemas.download import download_schemas + from extralit.cli.schemas.download import download_schemas client, workspace_data = get_workspace_client(workspace) ctx.obj = { diff --git a/extralit/src/argilla/cli/schemas/download.py b/extralit/src/extralit/cli/schemas/download.py similarity index 98% rename from extralit/src/argilla/cli/schemas/download.py rename to extralit/src/extralit/cli/schemas/download.py index dc526f4e1..6365ee5e0 100644 --- a/extralit/src/argilla/cli/schemas/download.py +++ b/extralit/src/extralit/cli/schemas/download.py @@ -21,7 +21,7 @@ from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn -from argilla.cli.rich import get_argilla_themed_panel, print_rich_table +from extralit.cli.rich import get_argilla_themed_panel, print_rich_table def download_schemas( diff --git a/extralit/src/argilla/cli/schemas/upload.py b/extralit/src/extralit/cli/schemas/upload.py similarity index 98% rename from extralit/src/argilla/cli/schemas/upload.py rename to extralit/src/extralit/cli/schemas/upload.py index 0810986c6..5993aeadd 100644 --- a/extralit/src/argilla/cli/schemas/upload.py +++ b/extralit/src/extralit/cli/schemas/upload.py @@ -38,7 +38,7 @@ def upload_schemas( help="List of schema names to exclude from the update.", ), ) -> None: - from argilla.cli.rich import get_argilla_themed_panel, print_rich_table + from extralit.cli.rich import get_argilla_themed_panel, print_rich_table from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn diff --git a/extralit/src/argilla/cli/training/__init__.py b/extralit/src/extralit/cli/training/__init__.py similarity index 100% rename from extralit/src/argilla/cli/training/__init__.py rename to extralit/src/extralit/cli/training/__init__.py diff --git a/extralit/src/argilla/cli/training/__main__.py b/extralit/src/extralit/cli/training/__main__.py similarity index 98% rename from extralit/src/argilla/cli/training/__main__.py rename to extralit/src/extralit/cli/training/__main__.py index ebb68df5e..f4068e8ce 100644 --- a/extralit/src/argilla/cli/training/__main__.py +++ b/extralit/src/extralit/cli/training/__main__.py @@ -16,8 +16,8 @@ import json import typer -from argilla.cli.callback import init_callback -from argilla.cli.rich import get_argilla_themed_panel +from extralit.cli.callback import init_callback +from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console diff --git a/extralit/src/argilla/cli/typer_ext.py b/extralit/src/extralit/cli/typer_ext.py similarity index 100% rename from extralit/src/argilla/cli/typer_ext.py rename to extralit/src/extralit/cli/typer_ext.py diff --git a/extralit/src/argilla/cli/users/__init__.py b/extralit/src/extralit/cli/users/__init__.py similarity index 100% rename from extralit/src/argilla/cli/users/__init__.py rename to extralit/src/extralit/cli/users/__init__.py diff --git a/extralit/src/argilla/cli/users/__main__.py b/extralit/src/extralit/cli/users/__main__.py similarity index 94% rename from extralit/src/argilla/cli/users/__main__.py rename to extralit/src/extralit/cli/users/__main__.py index cb7b9de9f..bdfc1e73d 100644 --- a/extralit/src/argilla/cli/users/__main__.py +++ b/extralit/src/extralit/cli/users/__main__.py @@ -16,9 +16,9 @@ import typer -from argilla.cli.callback import init_callback -from argilla.cli.rich import print_rich_table -from argilla._models._user import Role +from extralit.cli.callback import init_callback +from extralit.cli.rich import print_rich_table +from extralit._models._user import Role def callback() -> None: @@ -45,8 +45,8 @@ def create_user( ), ) -> None: """Creates a new user in the system.""" - from argilla.cli.rich import get_argilla_themed_panel - from argilla.users._resource import User + from extralit.cli.rich import get_argilla_themed_panel + from extralit.users._resource import User from rich.console import Console try: @@ -104,7 +104,7 @@ def list_users( """List all users in the system with optional filtering.""" from rich.console import Console - from argilla.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_argilla_themed_panel try: client = init_callback() @@ -154,7 +154,7 @@ def delete_user( username: str = typer.Option(..., help="Username of the user to be deleted"), ) -> None: """Delete a user from the system.""" - from argilla.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console try: diff --git a/extralit/src/argilla/cli/whoami/__init__.py b/extralit/src/extralit/cli/whoami/__init__.py similarity index 100% rename from extralit/src/argilla/cli/whoami/__init__.py rename to extralit/src/extralit/cli/whoami/__init__.py diff --git a/extralit/src/argilla/cli/whoami/__main__.py b/extralit/src/extralit/cli/whoami/__main__.py similarity index 94% rename from extralit/src/argilla/cli/whoami/__main__.py rename to extralit/src/extralit/cli/whoami/__main__.py index 2dd6b740c..313829747 100644 --- a/extralit/src/argilla/cli/whoami/__main__.py +++ b/extralit/src/extralit/cli/whoami/__main__.py @@ -27,7 +27,7 @@ def get_current_user(): Raises: ValueError: If not logged in. """ - from argilla.cli.callback import init_callback + from extralit.cli.callback import init_callback # Initialize client and get current user client = init_callback() @@ -39,7 +39,7 @@ def get_current_user(): @app.callback(help="Show information about the current user") def whoami() -> None: """Display information about the current user.""" - from argilla.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console try: diff --git a/extralit/src/argilla/cli/workspaces/__init__.py b/extralit/src/extralit/cli/workspaces/__init__.py similarity index 100% rename from extralit/src/argilla/cli/workspaces/__init__.py rename to extralit/src/extralit/cli/workspaces/__init__.py diff --git a/extralit/src/argilla/cli/workspaces/__main__.py b/extralit/src/extralit/cli/workspaces/__main__.py similarity index 96% rename from extralit/src/argilla/cli/workspaces/__main__.py rename to extralit/src/extralit/cli/workspaces/__main__.py index 49216a77e..ea6c99af2 100644 --- a/extralit/src/argilla/cli/workspaces/__main__.py +++ b/extralit/src/extralit/cli/workspaces/__main__.py @@ -17,9 +17,9 @@ import typer -from argilla.cli.callback import init_callback -from argilla.cli.rich import get_argilla_themed_panel, print_rich_table -from argilla._models._user import Role +from extralit.cli.callback import init_callback +from extralit.cli.rich import get_argilla_themed_panel, print_rich_table +from extralit._models._user import Role from rich.console import Console @@ -83,7 +83,7 @@ def create_workspace( client = init_callback() # Create a workspace object with the provided name - from argilla.workspaces import Workspace + from extralit.workspaces import Workspace workspace = Workspace(name=name) @@ -167,7 +167,7 @@ def add_user( if not user_obj: raise ValueError(f"User with username={username} not found.") - from argilla._api._workspaces import WorkspaceUserRole + from extralit._api._workspaces import WorkspaceUserRole workspace_obj.add_user(user=user_obj, role=WorkspaceUserRole(role)) diff --git a/extralit/src/extralit/client/__init__.py b/extralit/src/extralit/client/__init__.py new file mode 100644 index 000000000..a6abdc59e --- /dev/null +++ b/extralit/src/extralit/client/__init__.py @@ -0,0 +1,3 @@ +from extralit.client.core import Argilla + +__all__ = ["Argilla"] diff --git a/extralit/src/argilla/client/core.py b/extralit/src/extralit/client/core.py similarity index 89% rename from extralit/src/argilla/client/core.py rename to extralit/src/extralit/client/core.py index f8fb8ebcb..79dfc3d1c 100644 --- a/extralit/src/argilla/client/core.py +++ b/extralit/src/extralit/client/core.py @@ -16,14 +16,14 @@ from functools import cached_property from typing import TYPE_CHECKING, Optional -from argilla import _api -from argilla._api._client import DEFAULT_HTTP_CONFIG -from argilla._helpers._deploy import SpacesDeploymentMixin -from argilla._helpers._resource_repr import NotebookHTMLReprMixin +from extralit import _api +from extralit._api._client import DEFAULT_HTTP_CONFIG +from extralit._helpers._deploy import SpacesDeploymentMixin +from extralit._helpers._resource_repr import NotebookHTMLReprMixin if TYPE_CHECKING: - from argilla.client.resources import Datasets, Users, Webhooks, Workspaces - from argilla.users import User + from extralit.client.resources import Datasets, Users, Webhooks, Workspaces + from extralit.users import User __all__ = ["Argilla"] @@ -91,7 +91,7 @@ def from_credentials( Returns: Argilla: An initialized Argilla client. """ - from argilla.client.login import ArgillaCredentials + from extralit.client.login import ArgillaCredentials api_url = api_url or os.environ.get("ARGILLA_API_URL") api_key = api_key or os.environ.get("ARGILLA_API_KEY") @@ -115,34 +115,34 @@ def from_credentials( @property def workspaces(self) -> "Workspaces": """A collection of workspaces on the server.""" - from argilla.client.resources import Workspaces + from extralit.client.resources import Workspaces return Workspaces(client=self) @property def datasets(self) -> "Datasets": """A collection of datasets on the server.""" - from argilla.client.resources import Datasets + from extralit.client.resources import Datasets return Datasets(client=self) @property def users(self) -> "Users": """A collection of users on the server.""" - from argilla.client.resources import Users + from extralit.client.resources import Users return Users(client=self) @property def webhooks(self) -> "Webhooks": """A collection of webhooks on the server.""" - from argilla.client.resources import Webhooks + from extralit.client.resources import Webhooks return Webhooks(client=self) @cached_property def me(self) -> "User": - from argilla.users import User + from extralit.users import User return User(client=self, _model=self.api.users.get_me()) diff --git a/extralit/src/argilla/client/login.py b/extralit/src/extralit/client/login.py similarity index 99% rename from extralit/src/argilla/client/login.py rename to extralit/src/extralit/client/login.py index 578287990..976666b89 100644 --- a/extralit/src/argilla/client/login.py +++ b/extralit/src/extralit/client/login.py @@ -125,7 +125,7 @@ def login( ValueError: If the login fails. """ # Validate credentials by creating a client and making a test API call - from argilla.client import Argilla + from extralit.client import Argilla try: # Create client with the provided credentials diff --git a/extralit/src/argilla/client/resources.py b/extralit/src/extralit/client/resources.py similarity index 94% rename from extralit/src/argilla/client/resources.py rename to extralit/src/extralit/client/resources.py index 7e9fb55b0..76ba8bf9a 100644 --- a/extralit/src/argilla/client/resources.py +++ b/extralit/src/extralit/client/resources.py @@ -18,17 +18,17 @@ from typing import TYPE_CHECKING, List, Optional, Union, overload from uuid import UUID -from argilla._api._base import ResourceAPI -from argilla._api._client import DEFAULT_HTTP_CONFIG # noqa: F401 -from argilla._api._webhooks import WebhookModel -from argilla._exceptions import ArgillaError, NotFoundError -from argilla._helpers import GenericIterator -from argilla._helpers._resource_repr import ResourceHTMLReprMixin -from argilla._models import DatasetModel, ResourceModel, UserModel, WorkspaceModel +from extralit._api._base import ResourceAPI +from extralit._api._client import DEFAULT_HTTP_CONFIG # noqa: F401 +from extralit._api._webhooks import WebhookModel +from extralit._exceptions import ArgillaError, NotFoundError +from extralit._helpers import GenericIterator +from extralit._helpers._resource_repr import ResourceHTMLReprMixin +from extralit._models import DatasetModel, ResourceModel, UserModel, WorkspaceModel if TYPE_CHECKING: - from argilla import Dataset, User, Workspace, Webhook - from argilla.client.core import Argilla + from extralit import Dataset, User, Workspace, Webhook + from extralit.client.core import Argilla __all__ = ["Users", "Workspaces", "Datasets", "Webhooks"] @@ -124,7 +124,7 @@ def _repr_html_(self) -> str: return self._represent_as_html(resources=self.list()) def _from_model(self, model: UserModel) -> "User": - from argilla.users import User + from extralit.users import User return User(client=self._client, _model=model) @@ -219,7 +219,7 @@ def _repr_html_(self) -> str: return self._represent_as_html(resources=self.list()) def _from_model(self, model: WorkspaceModel) -> "Workspace": - from argilla.workspaces import Workspace + from extralit.workspaces import Workspace return Workspace.from_model(client=self._client, model=model) @@ -339,7 +339,7 @@ def _repr_html_(self) -> str: return self._represent_as_html(resources=self.list()) def _from_model(self, model: DatasetModel) -> "Dataset": - from argilla.datasets import Dataset + from extralit.datasets import Dataset return Dataset.from_model(model=model, client=self._client) @@ -402,7 +402,7 @@ def _repr_html_(self) -> str: return self._represent_as_html(resources=self.list()) def _from_model(self, model: WebhookModel) -> "Webhook": - from argilla.webhooks import Webhook + from extralit.webhooks import Webhook return Webhook.from_model(client=self._client, model=model) diff --git a/extralit/src/argilla/datasets/__init__.py b/extralit/src/extralit/datasets/__init__.py similarity index 91% rename from extralit/src/argilla/datasets/__init__.py rename to extralit/src/extralit/datasets/__init__.py index 5a9f7aa0c..dfa6ad9f8 100644 --- a/extralit/src/argilla/datasets/__init__.py +++ b/extralit/src/extralit/datasets/__init__.py @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.datasets._resource import Dataset # noqa +from extralit.datasets._resource import Dataset # noqa __all__ = ["Dataset"] diff --git a/extralit/src/argilla/datasets/_io/__init__.py b/extralit/src/extralit/datasets/_io/__init__.py similarity index 80% rename from extralit/src/argilla/datasets/_io/__init__.py rename to extralit/src/extralit/datasets/_io/__init__.py index 044c15cd7..9171cef3b 100644 --- a/extralit/src/argilla/datasets/_io/__init__.py +++ b/extralit/src/extralit/datasets/_io/__init__.py @@ -12,5 +12,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.datasets._io._disk import DiskImportExportMixin # noqa -from argilla.datasets._io._hub import HubImportExportMixin # noqa +from extralit.datasets._io._disk import DiskImportExportMixin # noqa +from extralit.datasets._io._hub import HubImportExportMixin # noqa diff --git a/extralit/src/argilla/datasets/_io/_disk.py b/extralit/src/extralit/datasets/_io/_disk.py similarity index 96% rename from extralit/src/argilla/datasets/_io/_disk.py rename to extralit/src/extralit/datasets/_io/_disk.py index 99c1f2ed4..ec16cc348 100644 --- a/extralit/src/argilla/datasets/_io/_disk.py +++ b/extralit/src/extralit/datasets/_io/_disk.py @@ -21,14 +21,14 @@ from pathlib import Path from typing import TYPE_CHECKING, Optional, Tuple, Type, Union -from argilla._exceptions import RecordsIngestionError, ArgillaError, ImportDatasetError -from argilla._models import DatasetModel -from argilla.client import Argilla -from argilla.settings import Settings -from argilla.workspaces._resource import Workspace +from extralit._exceptions import RecordsIngestionError, ArgillaError, ImportDatasetError +from extralit._models import DatasetModel +from extralit.client import Argilla +from extralit.settings import Settings +from extralit.workspaces._resource import Workspace if TYPE_CHECKING: - from argilla import Dataset + from extralit import Dataset class DiskImportExportMixin(ABC): diff --git a/extralit/src/argilla/datasets/_io/_hub.py b/extralit/src/extralit/datasets/_io/_hub.py similarity index 95% rename from extralit/src/argilla/datasets/_io/_hub.py rename to extralit/src/extralit/datasets/_io/_hub.py index d45ac44a8..a039c52fb 100644 --- a/extralit/src/argilla/datasets/_io/_hub.py +++ b/extralit/src/extralit/datasets/_io/_hub.py @@ -24,20 +24,20 @@ from datasets.data_files import EmptyDatasetError from PIL import Image -from argilla._exceptions import ImportDatasetError -from argilla._exceptions._api import UnprocessableEntityError -from argilla._exceptions._records import RecordsIngestionError -from argilla._exceptions._settings import SettingsError -from argilla._helpers._media import pil_to_data_uri -from argilla.datasets._io._disk import DiskImportExportMixin -from argilla.records._io._datasets import HFDatasetsIO -from argilla.records._mapping import IngestedRecordMapper -from argilla.responses import Response +from extralit._exceptions import ImportDatasetError +from extralit._exceptions._api import UnprocessableEntityError +from extralit._exceptions._records import RecordsIngestionError +from extralit._exceptions._settings import SettingsError +from extralit._helpers._media import pil_to_data_uri +from extralit.datasets._io._disk import DiskImportExportMixin +from extralit.records._io._datasets import HFDatasetsIO +from extralit.records._mapping import IngestedRecordMapper +from extralit.responses import Response if TYPE_CHECKING: from datasets import Dataset as HFDataset - from argilla import Argilla, Dataset, Settings, Workspace + from extralit import Argilla, Dataset, Settings, Workspace class HubImportExportMixin(DiskImportExportMixin): @@ -65,7 +65,7 @@ def to_hub( from huggingface_hub import DatasetCardData, HfApi - from argilla.datasets._io.card import ( + from extralit.datasets._io.card import ( ArgillaDatasetCard, size_categories_parser, ) @@ -142,7 +142,7 @@ def from_hub( Returns: A `Dataset` loaded from the Hugging Face Hub. """ - from argilla.settings import Settings + from extralit.settings import Settings from datasets import load_dataset from huggingface_hub import snapshot_download @@ -176,7 +176,7 @@ def from_hub( path=folder_path, workspace=workspace, name=name, client=client, with_records=with_records ) except ImportDatasetError: - from argilla import Settings + from extralit import Settings settings = Settings.from_hub(repo_id=repo_id, subset=subset) dataset = cls.from_hub( @@ -335,7 +335,7 @@ def _get_sample_hf_record(hf_dataset: "HFDataset") -> Dict: @classmethod def _run_settings_ui(cls, repo_id: str, subset: str, split: str, client: Optional["Argilla"] = None) -> str: from urllib.parse import quote_plus, urlencode - from argilla.client import Argilla + from extralit.client import Argilla import webbrowser diff --git a/extralit/src/argilla/datasets/_io/card/__init__.py b/extralit/src/extralit/datasets/_io/card/__init__.py similarity index 82% rename from extralit/src/argilla/datasets/_io/card/__init__.py rename to extralit/src/extralit/datasets/_io/card/__init__.py index 170bb76fb..c208821f5 100644 --- a/extralit/src/argilla/datasets/_io/card/__init__.py +++ b/extralit/src/extralit/datasets/_io/card/__init__.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.datasets._io.card._dataset_card import ArgillaDatasetCard -from argilla.datasets._io.card._parser import size_categories_parser +from extralit.datasets._io.card._dataset_card import ArgillaDatasetCard +from extralit.datasets._io.card._parser import size_categories_parser __all__ = ["ArgillaDatasetCard", "size_categories_parser"] diff --git a/extralit/src/argilla/datasets/_io/card/_dataset_card.py b/extralit/src/extralit/datasets/_io/card/_dataset_card.py similarity index 100% rename from extralit/src/argilla/datasets/_io/card/_dataset_card.py rename to extralit/src/extralit/datasets/_io/card/_dataset_card.py diff --git a/extralit/src/argilla/datasets/_io/card/_parser.py b/extralit/src/extralit/datasets/_io/card/_parser.py similarity index 100% rename from extralit/src/argilla/datasets/_io/card/_parser.py rename to extralit/src/extralit/datasets/_io/card/_parser.py diff --git a/extralit/src/argilla/datasets/_io/card/argilla_template.md b/extralit/src/extralit/datasets/_io/card/argilla_template.md similarity index 100% rename from extralit/src/argilla/datasets/_io/card/argilla_template.md rename to extralit/src/extralit/datasets/_io/card/argilla_template.md diff --git a/extralit/src/argilla/datasets/_resource.py b/extralit/src/extralit/datasets/_resource.py similarity index 94% rename from extralit/src/argilla/datasets/_resource.py rename to extralit/src/extralit/datasets/_resource.py index 8e7f678ba..9d3cbef93 100644 --- a/extralit/src/argilla/datasets/_resource.py +++ b/extralit/src/extralit/datasets/_resource.py @@ -20,16 +20,16 @@ except ImportError: from typing_extensions import Self -from argilla._api import DatasetsAPI -from argilla._exceptions import NotFoundError, SettingsError, ForbiddenError -from argilla._models import DatasetModel -from argilla._resource import Resource -from argilla.client import Argilla -from argilla.datasets._io import DiskImportExportMixin, HubImportExportMixin -from argilla.records import DatasetRecords -from argilla.settings import Settings -from argilla.settings._task_distribution import TaskDistribution -from argilla.workspaces._resource import Workspace +from extralit._api import DatasetsAPI +from extralit._exceptions import NotFoundError, SettingsError, ForbiddenError +from extralit._models import DatasetModel +from extralit._resource import Resource +from extralit.client import Argilla +from extralit.datasets._io import DiskImportExportMixin, HubImportExportMixin +from extralit.records import DatasetRecords +from extralit.settings import Settings +from extralit.settings._task_distribution import TaskDistribution +from extralit.workspaces._resource import Workspace __all__ = ["Dataset"] diff --git a/extralit/src/argilla/documents/__init__.py b/extralit/src/extralit/documents/__init__.py similarity index 92% rename from extralit/src/argilla/documents/__init__.py rename to extralit/src/extralit/documents/__init__.py index 8ed3a47c5..0cdbff16a 100644 --- a/extralit/src/argilla/documents/__init__.py +++ b/extralit/src/extralit/documents/__init__.py @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.documents._resource import Document +from extralit.documents._resource import Document __all__ = ["Document"] \ No newline at end of file diff --git a/extralit/src/argilla/documents/_resource.py b/extralit/src/extralit/documents/_resource.py similarity index 98% rename from extralit/src/argilla/documents/_resource.py rename to extralit/src/extralit/documents/_resource.py index d277c4286..4fd0b8c6b 100644 --- a/extralit/src/argilla/documents/_resource.py +++ b/extralit/src/extralit/documents/_resource.py @@ -23,10 +23,10 @@ except ImportError: from typing_extensions import Self -from argilla._api._documents import DocumentsAPI -from argilla._models._documents import DocumentModel -from argilla._resource import Resource -from argilla.client import Argilla +from extralit._api._documents import DocumentsAPI +from extralit._models._documents import DocumentModel +from extralit._resource import Resource +from extralit.client import Argilla if TYPE_CHECKING: pass diff --git a/extralit/src/argilla/markdown/__init__.py b/extralit/src/extralit/markdown/__init__.py similarity index 78% rename from extralit/src/argilla/markdown/__init__.py rename to extralit/src/extralit/markdown/__init__.py index 41df5360f..941af42d2 100644 --- a/extralit/src/argilla/markdown/__init__.py +++ b/extralit/src/extralit/markdown/__init__.py @@ -12,5 +12,5 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.markdown.media import pdf_to_html, audio_to_html, image_to_html, video_to_html # noqa -from argilla.markdown.chat import chat_to_html # noqa +from extralit.markdown.media import pdf_to_html, audio_to_html, image_to_html, video_to_html # noqa +from extralit.markdown.chat import chat_to_html # noqa diff --git a/extralit/src/argilla/markdown/chat.py b/extralit/src/extralit/markdown/chat.py similarity index 98% rename from extralit/src/argilla/markdown/chat.py rename to extralit/src/extralit/markdown/chat.py index 6693827b2..e4fb7595b 100644 --- a/extralit/src/argilla/markdown/chat.py +++ b/extralit/src/extralit/markdown/chat.py @@ -63,7 +63,7 @@ def chat_to_html(messages: List[Dict[str, str]]) -> str: Examples: ```python - from argilla.markdown import chat_to_html + from extralit.markdown import chat_to_html html = chat_to_html([ {"role": "user", "content": "hello"}, {"role": "assistant", "content": "goodbye"} diff --git a/extralit/src/argilla/markdown/media.py b/extralit/src/extralit/markdown/media.py similarity index 98% rename from extralit/src/argilla/markdown/media.py rename to extralit/src/extralit/markdown/media.py index f43bf10ca..c12bc2b08 100644 --- a/extralit/src/argilla/markdown/media.py +++ b/extralit/src/extralit/markdown/media.py @@ -176,7 +176,7 @@ def video_to_html( Examples: ```python - from argilla.markdown import video_to_html + from extralit.markdown import video_to_html html = video_to_html("my_video.mp4", width="300px", height="300px", autoplay=True, loop=True) ``` """ @@ -207,7 +207,7 @@ def audio_to_html( Examples: ```python - from argilla.markdown import audio_to_html + from extralit.markdown import audio_to_html html = audio_to_html("my_audio.mp3", width="300px", height="300px", autoplay=True, loop=True) ``` """ @@ -234,7 +234,7 @@ def image_to_html( Examples: ```python - from argilla.markdown import image_to_html + from extralit.markdown import image_to_html html = image_to_html("my_image.png", width="300px", height="300px") ``` """ @@ -260,7 +260,7 @@ def pdf_to_html( Examples: ```python - from argilla.markdown import pdf_to_html + from extralit.markdown import pdf_to_html html = pdf_to_html("my_pdf.pdf", width="300px", height="300px") ``` """ diff --git a/extralit/src/argilla/records/__init__.py b/extralit/src/extralit/records/__init__.py similarity index 79% rename from extralit/src/argilla/records/__init__.py rename to extralit/src/extralit/records/__init__.py index 6d046958e..4830f7e21 100644 --- a/extralit/src/argilla/records/__init__.py +++ b/extralit/src/extralit/records/__init__.py @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.records._dataset_records import DatasetRecords -from argilla.records._resource import Record -from argilla.records._search import Query, Filter, Condition, Similar +from extralit.records._dataset_records import DatasetRecords +from extralit.records._resource import Record +from extralit.records._search import Query, Filter, Condition, Similar __all__ = ["Record", "DatasetRecords", "Query", "Filter", "Condition", "Similar"] diff --git a/extralit/src/argilla/records/_dataset_records.py b/extralit/src/extralit/records/_dataset_records.py similarity index 97% rename from extralit/src/argilla/records/_dataset_records.py rename to extralit/src/extralit/records/_dataset_records.py index 73a4acc7c..c010af44d 100644 --- a/extralit/src/argilla/records/_dataset_records.py +++ b/extralit/src/extralit/records/_dataset_records.py @@ -19,18 +19,18 @@ from tqdm import tqdm -from argilla._api import RecordsAPI -from argilla._helpers import LoggingMixin -from argilla._models import RecordModel -from argilla._exceptions import RecordsIngestionError -from argilla.client import Argilla -from argilla.records._io import GenericIO, HFDataset, HFDatasetsIO, JsonIO -from argilla.records._mapping import IngestedRecordMapper -from argilla.records._resource import Record -from argilla.records._search import Query +from extralit._api import RecordsAPI +from extralit._helpers import LoggingMixin +from extralit._models import RecordModel +from extralit._exceptions import RecordsIngestionError +from extralit.client import Argilla +from extralit.records._io import GenericIO, HFDataset, HFDatasetsIO, JsonIO +from extralit.records._mapping import IngestedRecordMapper +from extralit.records._resource import Record +from extralit.records._search import Query if TYPE_CHECKING: - from argilla.datasets import Dataset + from extralit.datasets import Dataset class RecordErrorHandling(Enum): diff --git a/extralit/src/argilla/records/_io/__init__.py b/extralit/src/extralit/records/_io/__init__.py similarity index 69% rename from extralit/src/argilla/records/_io/__init__.py rename to extralit/src/extralit/records/_io/__init__.py index 439cbc7c2..444d7ba9d 100644 --- a/extralit/src/argilla/records/_io/__init__.py +++ b/extralit/src/extralit/records/_io/__init__.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.records._io._datasets import HFDatasetsIO # noqa: F401 -from argilla.records._io._generic import GenericIO # noqa: F401 -from argilla.records._io._json import JsonIO # noqa: F401 -from argilla.records._io._datasets import HFDataset # noqa: F401 +from extralit.records._io._datasets import HFDatasetsIO # noqa: F401 +from extralit.records._io._generic import GenericIO # noqa: F401 +from extralit.records._io._json import JsonIO # noqa: F401 +from extralit.records._io._datasets import HFDataset # noqa: F401 diff --git a/extralit/src/argilla/records/_io/_datasets.py b/extralit/src/extralit/records/_io/_datasets.py similarity index 97% rename from extralit/src/argilla/records/_io/_datasets.py rename to extralit/src/extralit/records/_io/_datasets.py index 50466c066..348b2fda9 100644 --- a/extralit/src/argilla/records/_io/_datasets.py +++ b/extralit/src/extralit/records/_io/_datasets.py @@ -18,13 +18,13 @@ from datasets import Dataset as HFDataset, Sequence from datasets import Image, ClassLabel, Value -from argilla._helpers._media import pil_to_data_uri, uncast_image -from argilla.records._io._generic import GenericIO +from extralit._helpers._media import pil_to_data_uri, uncast_image +from extralit.records._io._generic import GenericIO if TYPE_CHECKING: - from argilla.records import Record - from argilla.datasets import Dataset - from argilla.records._mapping import IngestedRecordMapper + from extralit.records import Record + from extralit.datasets import Dataset + from extralit.records._mapping import IngestedRecordMapper def _cast_images_as_urls(hf_dataset: "HFDataset", columns: List[str]) -> "HFDataset": diff --git a/extralit/src/argilla/records/_io/_generic.py b/extralit/src/extralit/records/_io/_generic.py similarity index 99% rename from extralit/src/argilla/records/_io/_generic.py rename to extralit/src/extralit/records/_io/_generic.py index 5e0796db4..e7600ce5e 100644 --- a/extralit/src/argilla/records/_io/_generic.py +++ b/extralit/src/extralit/records/_io/_generic.py @@ -16,7 +16,7 @@ from typing import Any, Dict, List, Tuple, TYPE_CHECKING, Union if TYPE_CHECKING: - from argilla import Record + from extralit import Record class GenericIO: diff --git a/extralit/src/argilla/records/_io/_json.py b/extralit/src/extralit/records/_io/_json.py similarity index 95% rename from extralit/src/argilla/records/_io/_json.py rename to extralit/src/extralit/records/_io/_json.py index 2f346f5bb..3bcf959bf 100644 --- a/extralit/src/argilla/records/_io/_json.py +++ b/extralit/src/extralit/records/_io/_json.py @@ -15,8 +15,8 @@ from pathlib import Path from typing import List, Tuple, Union -from argilla.records._resource import Record -from argilla.records._io import GenericIO +from extralit.records._resource import Record +from extralit.records._io import GenericIO class JsonIO: diff --git a/extralit/src/argilla/records/_mapping/__init__.py b/extralit/src/extralit/records/_mapping/__init__.py similarity index 87% rename from extralit/src/argilla/records/_mapping/__init__.py rename to extralit/src/extralit/records/_mapping/__init__.py index 9165f5c2e..56c7eec8f 100644 --- a/extralit/src/argilla/records/_mapping/__init__.py +++ b/extralit/src/extralit/records/_mapping/__init__.py @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.records._mapping._mapper import IngestedRecordMapper # noqa: F401 +from extralit.records._mapping._mapper import IngestedRecordMapper # noqa: F401 diff --git a/extralit/src/argilla/records/_mapping/_mapper.py b/extralit/src/extralit/records/_mapping/_mapper.py similarity index 96% rename from extralit/src/argilla/records/_mapping/_mapper.py rename to extralit/src/extralit/records/_mapping/_mapper.py index be65717ab..b3ab91c05 100644 --- a/extralit/src/argilla/records/_mapping/_mapper.py +++ b/extralit/src/extralit/records/_mapping/_mapper.py @@ -17,14 +17,14 @@ from uuid import UUID import warnings -from argilla._exceptions import RecordsIngestionError -from argilla.records._resource import Record -from argilla.responses import Response -from argilla.settings import FieldBase, VectorField -from argilla.settings._metadata import MetadataPropertyBase -from argilla.settings._question import QuestionBase -from argilla.suggestions import Suggestion -from argilla.records._mapping._routes import ( +from extralit._exceptions import RecordsIngestionError +from extralit.records._resource import Record +from extralit.responses import Response +from extralit.settings import FieldBase, VectorField +from extralit.settings._metadata import MetadataPropertyBase +from extralit.settings._question import QuestionBase +from extralit.suggestions import Suggestion +from extralit.records._mapping._routes import ( AttributeRoute, RecordAttributesMap, AttributeType, @@ -33,7 +33,7 @@ ) if TYPE_CHECKING: - from argilla.datasets import Dataset + from extralit.datasets import Dataset class IngestedRecordMapper: diff --git a/extralit/src/argilla/records/_mapping/_routes.py b/extralit/src/extralit/records/_mapping/_routes.py similarity index 100% rename from extralit/src/argilla/records/_mapping/_routes.py rename to extralit/src/extralit/records/_mapping/_routes.py diff --git a/extralit/src/argilla/records/_resource.py b/extralit/src/extralit/records/_resource.py similarity index 97% rename from extralit/src/argilla/records/_resource.py rename to extralit/src/extralit/records/_resource.py index c1791ecc9..2b83b5153 100644 --- a/extralit/src/argilla/records/_resource.py +++ b/extralit/src/extralit/records/_resource.py @@ -16,9 +16,9 @@ from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Union from uuid import UUID -from argilla._exceptions import ArgillaError -from argilla._helpers._media import cast_image, uncast_image -from argilla._models import ( +from extralit._exceptions import ArgillaError +from extralit._helpers._media import cast_image, uncast_image +from extralit._models import ( FieldValue, RecordModel, SuggestionModel, @@ -26,16 +26,16 @@ VectorModel, VectorValue, ) -from argilla._models._record._metadata import MetadataModel -from argilla._resource import Resource -from argilla.responses import Response, UserResponse -from argilla.suggestions import Suggestion -from argilla.vectors import Vector +from extralit._models._record._metadata import MetadataModel +from extralit._resource import Resource +from extralit.responses import Response, UserResponse +from extralit.suggestions import Suggestion +from extralit.vectors import Vector if TYPE_CHECKING: - from argilla.datasets import Dataset - from argilla import Argilla - from argilla._api import RecordsAPI + from extralit.datasets import Dataset + from extralit import Argilla + from extralit._api import RecordsAPI class Record(Resource): diff --git a/extralit/src/argilla/records/_search.py b/extralit/src/extralit/records/_search.py similarity index 97% rename from extralit/src/argilla/records/_search.py rename to extralit/src/extralit/records/_search.py index 1d82f459e..befe82b4b 100644 --- a/extralit/src/argilla/records/_search.py +++ b/extralit/src/extralit/records/_search.py @@ -13,8 +13,8 @@ # limitations under the License. from typing import List, Any, Union, Tuple, Iterable, TYPE_CHECKING -from argilla._models import SearchQueryModel -from argilla._models._search import ( +from extralit._models import SearchQueryModel +from extralit._models._search import ( TextQueryModel, ResponseFilterScopeModel, SuggestionFilterScopeModel, @@ -30,7 +30,7 @@ ) if TYPE_CHECKING: - from argilla.records import Record + from extralit.records import Record __all__ = ["Query", "Filter", "Condition", "Similar", "Conditions"] @@ -115,7 +115,7 @@ def __init__(self, name: str, value: Union[Iterable[float], "Record"], most_simi self.most_similar = most_similar if most_similar is not None else True def api_model(self) -> VectorQueryModel: - from argilla.records import Record + from extralit.records import Record order = "most_similar" if self.most_similar else "least_similar" diff --git a/extralit/src/argilla/responses.py b/extralit/src/extralit/responses.py similarity index 97% rename from extralit/src/argilla/responses.py rename to extralit/src/extralit/responses.py index 2d8192cf5..b27c69d0b 100644 --- a/extralit/src/argilla/responses.py +++ b/extralit/src/extralit/responses.py @@ -16,14 +16,14 @@ from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Union from uuid import UUID -from argilla._exceptions._responses import RecordResponsesError -from argilla._models import ResponseStatus as ResponseStatusModel -from argilla._models import UserResponseModel -from argilla._resource import Resource -from argilla.settings import RankingQuestion +from extralit._exceptions._responses import RecordResponsesError +from extralit._models import ResponseStatus as ResponseStatusModel +from extralit._models import UserResponseModel +from extralit._resource import Resource +from extralit.settings import RankingQuestion if TYPE_CHECKING: - from argilla import Argilla, Record + from extralit import Argilla, Record __all__ = ["Response", "UserResponse", "ResponseStatus"] diff --git a/extralit/src/extralit/settings/__init__.py b/extralit/src/extralit/settings/__init__.py new file mode 100644 index 000000000..35f9bc7f9 --- /dev/null +++ b/extralit/src/extralit/settings/__init__.py @@ -0,0 +1,20 @@ +# Copyright 2024-present, Argilla, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from extralit.settings._field import * # noqa: F403 +from extralit.settings._metadata import * # noqa: F403 +from extralit.settings._vector import * # noqa: F403 +from extralit.settings._question import * # noqa: F403 +from extralit.settings._resource import * # noqa: F403 +from extralit.settings._task_distribution import * # noqa: F403 diff --git a/extralit/src/argilla/settings/_common.py b/extralit/src/extralit/settings/_common.py similarity index 95% rename from extralit/src/argilla/settings/_common.py rename to extralit/src/extralit/settings/_common.py index be3f943c0..8f0ae007c 100644 --- a/extralit/src/argilla/settings/_common.py +++ b/extralit/src/extralit/settings/_common.py @@ -14,8 +14,8 @@ from typing import Any, Optional, Union -from argilla._models import FieldModel, QuestionModel -from argilla._resource import Resource +from extralit._models import FieldModel, QuestionModel +from extralit._resource import Resource __all__ = ["SettingsPropertyBase"] diff --git a/extralit/src/argilla/settings/_field.py b/extralit/src/extralit/settings/_field.py similarity index 97% rename from extralit/src/argilla/settings/_field.py rename to extralit/src/extralit/settings/_field.py index 3e354b4bd..53810a13e 100644 --- a/extralit/src/argilla/settings/_field.py +++ b/extralit/src/extralit/settings/_field.py @@ -18,10 +18,10 @@ import requests -from argilla import Argilla -from argilla._api import FieldsAPI -from argilla._exceptions import ArgillaError, SettingsError -from argilla._models import ( +from extralit import Argilla +from extralit._api import FieldsAPI +from extralit._exceptions import ArgillaError, SettingsError +from extralit._models import ( FieldModel, TextFieldSettings, ChatFieldSettings, @@ -30,7 +30,7 @@ TableFieldSettings, FieldSettings, ) -from argilla.settings._common import SettingsPropertyBase +from extralit.settings._common import SettingsPropertyBase try: @@ -39,7 +39,7 @@ from typing_extensions import Self if TYPE_CHECKING: - from argilla.datasets import Dataset + from extralit.datasets import Dataset __all__ = ["Field", "FieldBase", "TextField", "ImageField", "ChatField", "CustomField", "TableField"] diff --git a/extralit/src/argilla/settings/_io/__init__.py b/extralit/src/extralit/settings/_io/__init__.py similarity index 92% rename from extralit/src/argilla/settings/_io/__init__.py rename to extralit/src/extralit/settings/_io/__init__.py index 641e6f10e..3f4e9f056 100644 --- a/extralit/src/argilla/settings/_io/__init__.py +++ b/extralit/src/extralit/settings/_io/__init__.py @@ -12,4 +12,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.settings._io._hub import * # noqa +from extralit.settings._io._hub import * # noqa diff --git a/extralit/src/argilla/settings/_io/_hub.py b/extralit/src/extralit/settings/_io/_hub.py similarity index 97% rename from extralit/src/argilla/settings/_io/_hub.py rename to extralit/src/extralit/settings/_io/_hub.py index 81a643c7e..e2c78f23b 100644 --- a/extralit/src/argilla/settings/_io/_hub.py +++ b/extralit/src/extralit/settings/_io/_hub.py @@ -17,26 +17,26 @@ from enum import Enum from typing import Any, Dict, TYPE_CHECKING, Union, List, Optional -from argilla._exceptions._hub import DatasetsServerException -from argilla._exceptions._settings import SettingsError -from argilla.settings._field import ( +from extralit._exceptions._hub import DatasetsServerException +from extralit._exceptions._settings import SettingsError +from extralit.settings._field import ( ImageField, TextField, ChatField, ) -from argilla.settings._question import ( +from extralit.settings._question import ( LabelQuestion, TextQuestion, RatingQuestion, ) -from argilla.settings._metadata import ( +from extralit.settings._metadata import ( TermsMetadataProperty, IntegerMetadataProperty, FloatMetadataProperty, ) if TYPE_CHECKING: - from argilla import Settings + from extralit import Settings DATASETS_SERVER_BASE_URL = "https://datasets-server.huggingface.co" DATASETS_SERVER_HEADERS = {"Accept": "application/json"} @@ -212,7 +212,7 @@ def _define_settings_from_features( rg.Settings: The settings defined from the features. """ - from argilla import Settings + from extralit import Settings fields = [] questions = [] diff --git a/extralit/src/argilla/settings/_metadata.py b/extralit/src/extralit/settings/_metadata.py similarity index 97% rename from extralit/src/argilla/settings/_metadata.py rename to extralit/src/extralit/settings/_metadata.py index ccc5a90b5..7412acfad 100644 --- a/extralit/src/argilla/settings/_metadata.py +++ b/extralit/src/extralit/settings/_metadata.py @@ -14,16 +14,16 @@ from typing import Optional, Union, List, TYPE_CHECKING, Any -from argilla._api._metadata import MetadataAPI -from argilla._exceptions import MetadataError -from argilla._models import ( +from extralit._api._metadata import MetadataAPI +from extralit._exceptions import MetadataError +from extralit._models import ( TermsMetadataPropertySettings, FloatMetadataPropertySettings, IntegerMetadataPropertySettings, MetadataFieldModel, ) -from argilla._resource import Resource -from argilla.client import Argilla +from extralit._resource import Resource +from extralit.client import Argilla try: from typing import Self @@ -31,7 +31,7 @@ from typing_extensions import Self if TYPE_CHECKING: - from argilla import Dataset + from extralit import Dataset __all__ = [ "TermsMetadataProperty", diff --git a/extralit/src/argilla/settings/_question.py b/extralit/src/extralit/settings/_question.py similarity index 98% rename from extralit/src/argilla/settings/_question.py rename to extralit/src/extralit/settings/_question.py index 17729e1cd..95e6e5933 100644 --- a/extralit/src/argilla/settings/_question.py +++ b/extralit/src/extralit/settings/_question.py @@ -14,9 +14,9 @@ from typing import Dict, List, Literal, Optional, Union, TYPE_CHECKING -from argilla import Argilla -from argilla._api import QuestionsAPI -from argilla._models._settings._questions import ( +from extralit import Argilla +from extralit._api import QuestionsAPI +from extralit._models._settings._questions import ( QuestionModel, QuestionSettings, LabelQuestionSettings, @@ -27,10 +27,10 @@ SpanQuestionSettings, TableQuestionSettings, ) -from argilla.settings._common import SettingsPropertyBase +from extralit.settings._common import SettingsPropertyBase if TYPE_CHECKING: - from argilla.datasets import Dataset + from extralit.datasets import Dataset try: from typing import Self diff --git a/extralit/src/argilla/settings/_resource.py b/extralit/src/extralit/settings/_resource.py similarity index 96% rename from extralit/src/argilla/settings/_resource.py rename to extralit/src/extralit/settings/_resource.py index e750a66de..7bfc6b1dc 100644 --- a/extralit/src/argilla/settings/_resource.py +++ b/extralit/src/extralit/settings/_resource.py @@ -20,19 +20,19 @@ from typing import List, Optional, TYPE_CHECKING, Dict, Union, Iterator, Sequence, Literal from uuid import UUID -from argilla._exceptions import SettingsError, ArgillaAPIError, ArgillaSerializeError -from argilla._models._dataset import DatasetModel -from argilla._resource import Resource -from argilla.settings._field import Field, _field_from_dict, _field_from_model, FieldBase -from argilla.settings._io import build_settings_from_repo_id -from argilla.settings._metadata import MetadataType, MetadataField, MetadataPropertyBase -from argilla.settings._question import QuestionType, question_from_model, _question_from_dict, QuestionBase -from argilla.settings._task_distribution import TaskDistribution -from argilla.settings._templates import DefaultSettingsMixin -from argilla.settings._vector import VectorField +from extralit._exceptions import SettingsError, ArgillaAPIError, ArgillaSerializeError +from extralit._models._dataset import DatasetModel +from extralit._resource import Resource +from extralit.settings._field import Field, _field_from_dict, _field_from_model, FieldBase +from extralit.settings._io import build_settings_from_repo_id +from extralit.settings._metadata import MetadataType, MetadataField, MetadataPropertyBase +from extralit.settings._question import QuestionType, question_from_model, _question_from_dict, QuestionBase +from extralit.settings._task_distribution import TaskDistribution +from extralit.settings._templates import DefaultSettingsMixin +from extralit.settings._vector import VectorField if TYPE_CHECKING: - from argilla.datasets import Dataset + from extralit.datasets import Dataset __all__ = ["Settings"] diff --git a/extralit/src/argilla/settings/_task_distribution.py b/extralit/src/extralit/settings/_task_distribution.py similarity index 96% rename from extralit/src/argilla/settings/_task_distribution.py rename to extralit/src/extralit/settings/_task_distribution.py index 4c9313f1c..c579f6ee6 100644 --- a/extralit/src/argilla/settings/_task_distribution.py +++ b/extralit/src/extralit/settings/_task_distribution.py @@ -15,7 +15,7 @@ # from typing import Literal, Any, Dict from typing import Dict, Any, Literal -from argilla._models._settings._task_distribution import OverlapTaskDistributionModel +from extralit._models._settings._task_distribution import OverlapTaskDistributionModel class OverlapTaskDistribution: diff --git a/extralit/src/argilla/settings/_templates.py b/extralit/src/extralit/settings/_templates.py similarity index 93% rename from extralit/src/argilla/settings/_templates.py rename to extralit/src/extralit/settings/_templates.py index 6335fa3e3..aed6b8ff2 100644 --- a/extralit/src/argilla/settings/_templates.py +++ b/extralit/src/extralit/settings/_templates.py @@ -15,13 +15,13 @@ from typing import List, Optional, Literal, TYPE_CHECKING if TYPE_CHECKING: - from argilla.settings._resource import Settings - from argilla.settings._field import TextField + from extralit.settings._resource import Settings + from extralit.settings._field import TextField def _get_field_by_type(field_type: str) -> "TextField": """Get the field type from the field type string.""" - from argilla import TextField, ImageField + from extralit import TextField, ImageField FIELD_MAPPING = { "text": TextField, @@ -48,7 +48,7 @@ def for_classification( questions (List[QuestionType]): List of questions. use_chat (bool): If True, the field will be replaced with a chat field. """ - from argilla import Settings, LabelQuestion + from extralit import Settings, LabelQuestion settings = Settings( guidelines="Select a label for the document.", @@ -73,7 +73,7 @@ def for_ranking( use_chat (bool): If True, the field will be replaced with a chat field. """ - from argilla import Settings, RankingQuestion + from extralit import Settings, RankingQuestion fields = [ _get_field_by_type(field_type)(name="instruction"), @@ -109,7 +109,7 @@ def for_rating( use_chat (bool): If True, the field will be replaced with a chat field. """ - from argilla import Settings, RatingQuestion + from extralit import Settings, RatingQuestion fields = [ _get_field_by_type(field_type)(name="instruction"), diff --git a/extralit/src/argilla/settings/_vector.py b/extralit/src/extralit/settings/_vector.py similarity index 93% rename from extralit/src/argilla/settings/_vector.py rename to extralit/src/extralit/settings/_vector.py index 5f072c81b..31bea379c 100644 --- a/extralit/src/argilla/settings/_vector.py +++ b/extralit/src/extralit/settings/_vector.py @@ -14,13 +14,13 @@ from typing import Optional, TYPE_CHECKING -from argilla._api._vectors import VectorsAPI -from argilla._models import VectorFieldModel -from argilla._resource import Resource -from argilla.client import Argilla +from extralit._api._vectors import VectorsAPI +from extralit._models import VectorFieldModel +from extralit._resource import Resource +from extralit.client import Argilla if TYPE_CHECKING: - from argilla import Dataset + from extralit import Dataset __all__ = ["VectorField"] diff --git a/extralit/src/argilla/suggestions.py b/extralit/src/extralit/suggestions.py similarity index 95% rename from extralit/src/argilla/suggestions.py rename to extralit/src/extralit/suggestions.py index 0f15950b1..fbba5d7f9 100644 --- a/extralit/src/argilla/suggestions.py +++ b/extralit/src/extralit/suggestions.py @@ -13,13 +13,13 @@ # limitations under the License. from typing import TYPE_CHECKING, Any, Dict, List, Literal, Optional, Union -from argilla._exceptions._suggestions import RecordSuggestionsError -from argilla._models import SuggestionModel -from argilla._resource import Resource -from argilla.settings import RankingQuestion +from extralit._exceptions._suggestions import RecordSuggestionsError +from extralit._models import SuggestionModel +from extralit._resource import Resource +from extralit.settings import RankingQuestion if TYPE_CHECKING: - from argilla import QuestionType, Record + from extralit import QuestionType, Record __all__ = ["Suggestion"] diff --git a/extralit/src/argilla/users/__init__.py b/extralit/src/extralit/users/__init__.py similarity index 93% rename from extralit/src/argilla/users/__init__.py rename to extralit/src/extralit/users/__init__.py index 3a33cdc9a..065f4d6f3 100644 --- a/extralit/src/argilla/users/__init__.py +++ b/extralit/src/extralit/users/__init__.py @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.users._resource import User +from extralit.users._resource import User __all__ = ["User"] diff --git a/extralit/src/argilla/users/_resource.py b/extralit/src/extralit/users/_resource.py similarity index 95% rename from extralit/src/argilla/users/_resource.py rename to extralit/src/extralit/users/_resource.py index 3dc07f771..93ef41825 100644 --- a/extralit/src/argilla/users/_resource.py +++ b/extralit/src/extralit/users/_resource.py @@ -15,13 +15,13 @@ from typing import Optional, TYPE_CHECKING from uuid import UUID -from argilla._api import UsersAPI -from argilla._models import UserModel, Role -from argilla._resource import Resource +from extralit._api import UsersAPI +from extralit._models import UserModel, Role +from extralit._resource import Resource if TYPE_CHECKING: - from argilla.client.core import Argilla - from argilla.workspaces._resource import Workspace + from extralit.client.core import Argilla + from extralit.workspaces._resource import Workspace class User(Resource): @@ -65,7 +65,7 @@ def __init__( Returns: User: The initialized user object """ - from argilla.client.core import Argilla + from extralit.client.core import Argilla client = client or Argilla._get_default() super().__init__(client=client, api=client.api.users) diff --git a/extralit/src/argilla/v1/__init__.py b/extralit/src/extralit/v1/__init__.py similarity index 100% rename from extralit/src/argilla/v1/__init__.py rename to extralit/src/extralit/v1/__init__.py diff --git a/extralit/src/argilla/vectors.py b/extralit/src/extralit/vectors.py similarity index 96% rename from extralit/src/argilla/vectors.py rename to extralit/src/extralit/vectors.py index 8e0e9003b..fbb1ca1ed 100644 --- a/extralit/src/argilla/vectors.py +++ b/extralit/src/extralit/vectors.py @@ -14,8 +14,8 @@ from typing import Any -from argilla._models import VectorModel -from argilla._resource import Resource +from extralit._models import VectorModel +from extralit._resource import Resource __all__ = ["Vector"] diff --git a/extralit/src/argilla/webhooks/__init__.py b/extralit/src/extralit/webhooks/__init__.py similarity index 81% rename from extralit/src/argilla/webhooks/__init__.py rename to extralit/src/extralit/webhooks/__init__.py index 4055cfb96..3d0fa24c5 100644 --- a/extralit/src/argilla/webhooks/__init__.py +++ b/extralit/src/extralit/webhooks/__init__.py @@ -14,16 +14,16 @@ from typing import TYPE_CHECKING -from argilla.webhooks._event import RecordEvent, DatasetEvent, UserResponseEvent, WebhookEvent -from argilla.webhooks._handler import WebhookHandler -from argilla.webhooks._helpers import ( +from extralit.webhooks._event import RecordEvent, DatasetEvent, UserResponseEvent, WebhookEvent +from extralit.webhooks._handler import WebhookHandler +from extralit.webhooks._helpers import ( webhook_listener, get_webhook_server, set_webhook_server, start_webhook_server, stop_webhook_server, ) -from argilla.webhooks._resource import Webhook +from extralit.webhooks._resource import Webhook if TYPE_CHECKING: pass diff --git a/extralit/src/argilla/webhooks/_event.py b/extralit/src/extralit/webhooks/_event.py similarity index 95% rename from extralit/src/argilla/webhooks/_event.py rename to extralit/src/extralit/webhooks/_event.py index 8c329e22e..5f02e4c96 100644 --- a/extralit/src/argilla/webhooks/_event.py +++ b/extralit/src/extralit/webhooks/_event.py @@ -18,12 +18,12 @@ from pydantic import BaseModel, ConfigDict -from argilla import Dataset, Record, UserResponse, Workspace -from argilla._exceptions import ArgillaAPIError -from argilla._models import RecordModel, UserResponseModel, WorkspaceModel, EventType +from extralit import Dataset, Record, UserResponse, Workspace +from extralit._exceptions import ArgillaAPIError +from extralit._models import RecordModel, UserResponseModel, WorkspaceModel, EventType if TYPE_CHECKING: - from argilla import Argilla + from extralit import Argilla __all__ = ["RecordEvent", "DatasetEvent", "UserResponseEvent", "WebhookEvent"] diff --git a/extralit/src/argilla/webhooks/_handler.py b/extralit/src/extralit/webhooks/_handler.py similarity index 95% rename from extralit/src/argilla/webhooks/_handler.py rename to extralit/src/extralit/webhooks/_handler.py index ca6ca9a91..c20222ad5 100644 --- a/extralit/src/argilla/webhooks/_handler.py +++ b/extralit/src/extralit/webhooks/_handler.py @@ -14,11 +14,11 @@ from typing import Callable, TYPE_CHECKING -from argilla.webhooks._event import WebhookEvent +from extralit.webhooks._event import WebhookEvent if TYPE_CHECKING: from fastapi import Request - from argilla.webhooks._resource import Webhook + from extralit.webhooks._resource import Webhook class WebhookHandler: diff --git a/extralit/src/argilla/webhooks/_helpers.py b/extralit/src/extralit/webhooks/_helpers.py similarity index 97% rename from extralit/src/argilla/webhooks/_helpers.py rename to extralit/src/extralit/webhooks/_helpers.py index f25c834d5..bcb510cde 100644 --- a/extralit/src/argilla/webhooks/_helpers.py +++ b/extralit/src/extralit/webhooks/_helpers.py @@ -17,10 +17,10 @@ from threading import Thread from typing import TYPE_CHECKING, Optional, Callable, Union, List -import argilla as rg -from argilla import Argilla -from argilla.webhooks._handler import WebhookHandler -from argilla.webhooks._resource import Webhook +import extralit as rg +from extralit import Argilla +from extralit.webhooks._handler import WebhookHandler +from extralit.webhooks._resource import Webhook if TYPE_CHECKING: from fastapi import FastAPI diff --git a/extralit/src/argilla/webhooks/_resource.py b/extralit/src/extralit/webhooks/_resource.py similarity index 94% rename from extralit/src/argilla/webhooks/_resource.py rename to extralit/src/extralit/webhooks/_resource.py index 61c8302b4..3874e76f2 100644 --- a/extralit/src/argilla/webhooks/_resource.py +++ b/extralit/src/extralit/webhooks/_resource.py @@ -13,10 +13,10 @@ # limitations under the License. from typing import List, Optional -from argilla import Argilla -from argilla._api._webhooks import WebhookModel, WebhooksAPI -from argilla._models import EventType -from argilla._resource import Resource +from extralit import Argilla +from extralit._api._webhooks import WebhookModel, WebhooksAPI +from extralit._models import EventType +from extralit._resource import Resource class Webhook(Resource): diff --git a/extralit/src/argilla/workspaces/__init__.py b/extralit/src/extralit/workspaces/__init__.py similarity index 92% rename from extralit/src/argilla/workspaces/__init__.py rename to extralit/src/extralit/workspaces/__init__.py index 4bd9a9f13..0ecf53ac0 100644 --- a/extralit/src/argilla/workspaces/__init__.py +++ b/extralit/src/extralit/workspaces/__init__.py @@ -12,6 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.workspaces._resource import Workspace +from extralit.workspaces._resource import Workspace __all__ = ["Workspace"] diff --git a/extralit/src/argilla/workspaces/_resource.py b/extralit/src/extralit/workspaces/_resource.py similarity index 93% rename from extralit/src/argilla/workspaces/_resource.py rename to extralit/src/extralit/workspaces/_resource.py index 075313013..8ed876a4c 100644 --- a/extralit/src/argilla/workspaces/_resource.py +++ b/extralit/src/extralit/workspaces/_resource.py @@ -16,22 +16,22 @@ from typing import List, TYPE_CHECKING, Optional, overload, Union, Sequence, Any from urllib.parse import unquote, urlparse -from argilla._constants import _DEFAULT_SCHEMA_S3_PATH -from argilla._api._workspaces import WorkspacesAPI -from argilla._helpers import GenericIterator -from argilla._helpers import LoggingMixin -from argilla._models import WorkspaceModel -from argilla._resource import Resource -from argilla.client import Argilla +from extralit._constants import _DEFAULT_SCHEMA_S3_PATH +from extralit._api._workspaces import WorkspacesAPI +from extralit._helpers import GenericIterator +from extralit._helpers import LoggingMixin +from extralit._models import WorkspaceModel +from extralit._resource import Resource +from extralit.client import Argilla if TYPE_CHECKING: from uuid import UUID - from argilla.users._resource import User - from argilla.datasets._resource import Dataset - from argilla.documents._resource import Document - from argilla._models._files import ListObjectsResponse, ObjectMetadata, FileObjectResponse - from argilla._models._documents import DocumentModel - from argilla._models._schema import SchemaStructure + from extralit.users._resource import User + from extralit.datasets._resource import Dataset + from extralit.documents._resource import Document + from extralit._models._files import ListObjectsResponse, ObjectMetadata, FileObjectResponse + from extralit._models._documents import DocumentModel + from extralit._models._schema import SchemaStructure class Workspace(Resource): @@ -94,7 +94,7 @@ def remove_user(self, user: Union["User", str]) -> "User": # TODO: Make this method private def list_datasets(self) -> List["Dataset"]: - from argilla.datasets import Dataset + from extralit.datasets import Dataset datasets = self._client.api.datasets.list(self.id) self._log_message(f"Got {len(datasets)} datasets for workspace {self.id}") @@ -106,7 +106,7 @@ def list_documents(self) -> List["Document"]: Returns: List[Document]: A list of Document resource objects in the workspace. """ - from argilla.documents import Document + from extralit.documents import Document documents = self._client.api.documents.list(self.id) self._log_message(f"Got {len(documents)} documents for workspace {self.id}") @@ -188,7 +188,7 @@ def add_document( Returns: The ID of the added document. """ - from argilla._models._documents import DocumentModel + from extralit._models._documents import DocumentModel # Create document from either local file or remote URL if file_path: diff --git a/extralit/tests/integration/conftest.py b/extralit/tests/integration/conftest.py index 7e0850cee..8d4ebaaeb 100644 --- a/extralit/tests/integration/conftest.py +++ b/extralit/tests/integration/conftest.py @@ -15,8 +15,8 @@ import pytest -import argilla as rg -from argilla import Argilla, Workspace +import extralit as rg +from extralit import Argilla, Workspace @pytest.fixture(scope="session") diff --git a/extralit/tests/integration/test_add_records.py b/extralit/tests/integration/test_add_records.py index 4a360e205..7a3c86f44 100644 --- a/extralit/tests/integration/test_add_records.py +++ b/extralit/tests/integration/test_add_records.py @@ -15,11 +15,11 @@ import uuid from datetime import datetime -import argilla as rg +import extralit as rg import pytest -from argilla import Argilla, Workspace -from argilla._exceptions._responses import RecordResponsesError -from argilla._exceptions._suggestions import RecordSuggestionsError +from extralit import Argilla, Workspace +from extralit._exceptions._responses import RecordResponsesError +from extralit._exceptions._suggestions import RecordSuggestionsError def test_add_records(client): diff --git a/extralit/tests/integration/test_cli_commands.py b/extralit/tests/integration/test_cli_commands.py index 2ce69b01d..8f78dcb82 100644 --- a/extralit/tests/integration/test_cli_commands.py +++ b/extralit/tests/integration/test_cli_commands.py @@ -19,7 +19,7 @@ import pytest -from argilla import Argilla, Workspace +from extralit import Argilla, Workspace @pytest.fixture diff --git a/extralit/tests/integration/test_client.py b/extralit/tests/integration/test_client.py index d8a95ed04..4af2a1c07 100644 --- a/extralit/tests/integration/test_client.py +++ b/extralit/tests/integration/test_client.py @@ -16,8 +16,8 @@ import pytest -from argilla import Argilla, Dataset, TextField, TextQuestion, Settings, User, Workspace -from argilla._exceptions import ArgillaError +from extralit import Argilla, Dataset, TextField, TextQuestion, Settings, User, Workspace +from extralit._exceptions import ArgillaError @pytest.fixture diff --git a/extralit/tests/integration/test_create_datasets.py b/extralit/tests/integration/test_create_datasets.py index 9d6a832d6..4e9037725 100644 --- a/extralit/tests/integration/test_create_datasets.py +++ b/extralit/tests/integration/test_create_datasets.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla import ( +from extralit import ( Argilla, Dataset, ChatField, @@ -26,7 +26,7 @@ Workspace, CustomField, ) -from argilla.settings._task_distribution import TaskDistribution +from extralit.settings._task_distribution import TaskDistribution class TestCreateDatasets: diff --git a/extralit/tests/integration/test_dataset_workspace.py b/extralit/tests/integration/test_dataset_workspace.py index 37823ebaf..e2fed3188 100644 --- a/extralit/tests/integration/test_dataset_workspace.py +++ b/extralit/tests/integration/test_dataset_workspace.py @@ -17,8 +17,8 @@ import pytest -import argilla as rg -from argilla._exceptions import NotFoundError +import extralit as rg +from extralit._exceptions import NotFoundError @pytest.fixture diff --git a/extralit/tests/integration/test_delete_records.py b/extralit/tests/integration/test_delete_records.py index 97b4bb180..a3fc9c6bc 100644 --- a/extralit/tests/integration/test_delete_records.py +++ b/extralit/tests/integration/test_delete_records.py @@ -16,7 +16,7 @@ import pytest -import argilla as rg +import extralit as rg @pytest.fixture diff --git a/extralit/tests/integration/test_empty_settings.py b/extralit/tests/integration/test_empty_settings.py index 2205817eb..9bee2e98a 100644 --- a/extralit/tests/integration/test_empty_settings.py +++ b/extralit/tests/integration/test_empty_settings.py @@ -17,8 +17,8 @@ import pytest -from argilla import Argilla, Dataset, Settings, Workspace, TextQuestion, TextField -from argilla._exceptions import SettingsError +from extralit import Argilla, Dataset, Settings, Workspace, TextQuestion, TextField +from extralit._exceptions import SettingsError def test_dataset_empty_settings(client: Argilla, workspace: Workspace): diff --git a/extralit/tests/integration/test_export_dataset.py b/extralit/tests/integration/test_export_dataset.py index d06bca18e..60ec93f77 100644 --- a/extralit/tests/integration/test_export_dataset.py +++ b/extralit/tests/integration/test_export_dataset.py @@ -18,9 +18,9 @@ from tempfile import TemporaryDirectory from typing import Any, List -import argilla as rg +import extralit as rg import pytest -from argilla._exceptions import SettingsError +from extralit._exceptions import SettingsError from datasets import load_dataset from huggingface_hub.errors import BadRequestError, FileMetadataError, HfHubHTTPError from requests.exceptions import ReadTimeout, ConnectTimeout, HTTPError, RequestException diff --git a/extralit/tests/integration/test_export_records.py b/extralit/tests/integration/test_export_records.py index 7b414d9f9..5e30680ee 100644 --- a/extralit/tests/integration/test_export_records.py +++ b/extralit/tests/integration/test_export_records.py @@ -23,8 +23,8 @@ from PIL import Image from datasets import Dataset as HFDataset -import argilla as rg -from argilla import Argilla +import extralit as rg +from extralit import Argilla @pytest.fixture diff --git a/extralit/tests/integration/test_import_features.py b/extralit/tests/integration/test_import_features.py index 6366ab43e..ad065332d 100644 --- a/extralit/tests/integration/test_import_features.py +++ b/extralit/tests/integration/test_import_features.py @@ -16,7 +16,7 @@ import uuid from typing import Any, List, Generator -import argilla as rg +import extralit as rg import pytest from datasets import Dataset as HFDataset, Value, Features, ClassLabel from huggingface_hub.errors import HfHubHTTPError diff --git a/extralit/tests/integration/test_list_records.py b/extralit/tests/integration/test_list_records.py index f54d5ce03..9ffc6777d 100644 --- a/extralit/tests/integration/test_list_records.py +++ b/extralit/tests/integration/test_list_records.py @@ -17,7 +17,7 @@ import pytest -from argilla import Argilla, Dataset, Settings, TextField, TextQuestion, Workspace, LabelQuestion +from extralit import Argilla, Dataset, Settings, TextField, TextQuestion, Workspace, LabelQuestion @pytest.fixture diff --git a/extralit/tests/integration/test_listing_datasets.py b/extralit/tests/integration/test_listing_datasets.py index f47766c85..ef915bf57 100644 --- a/extralit/tests/integration/test_listing_datasets.py +++ b/extralit/tests/integration/test_listing_datasets.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla import Argilla, Dataset, Settings, TextField, TextQuestion, Workspace, TaskDistribution +from extralit import Argilla, Dataset, Settings, TextField, TextQuestion, Workspace, TaskDistribution class TestDatasetsList: diff --git a/extralit/tests/integration/test_manage_metadata.py b/extralit/tests/integration/test_manage_metadata.py index 1acaa6503..746fe5c09 100644 --- a/extralit/tests/integration/test_manage_metadata.py +++ b/extralit/tests/integration/test_manage_metadata.py @@ -14,8 +14,8 @@ import pytest -import argilla as rg -from argilla import Argilla, Dataset, Settings, TextField, Workspace, LabelQuestion +import extralit as rg +from extralit import Argilla, Dataset, Settings, TextField, Workspace, LabelQuestion @pytest.fixture diff --git a/extralit/tests/integration/test_manage_users.py b/extralit/tests/integration/test_manage_users.py index fdbf6a786..f6b7c3d9e 100644 --- a/extralit/tests/integration/test_manage_users.py +++ b/extralit/tests/integration/test_manage_users.py @@ -15,8 +15,8 @@ import pytest -from argilla import User, Argilla, Workspace -from argilla._exceptions import UnprocessableEntityError, ConflictError +from extralit import User, Argilla, Workspace +from extralit._exceptions import UnprocessableEntityError, ConflictError class TestManageUsers: diff --git a/extralit/tests/integration/test_manage_workspaces.py b/extralit/tests/integration/test_manage_workspaces.py index 6c5167679..c7a6644d9 100644 --- a/extralit/tests/integration/test_manage_workspaces.py +++ b/extralit/tests/integration/test_manage_workspaces.py @@ -13,7 +13,7 @@ # limitations under the License. import uuid -from argilla import Argilla, Workspace, User +from extralit import Argilla, Workspace, User class TestWorkspacesManagement: diff --git a/extralit/tests/integration/test_publish_datasets.py b/extralit/tests/integration/test_publish_datasets.py index 9ed824550..7ce3bcf73 100644 --- a/extralit/tests/integration/test_publish_datasets.py +++ b/extralit/tests/integration/test_publish_datasets.py @@ -13,7 +13,7 @@ # limitations under the License. -from argilla import ( +from extralit import ( Argilla, Settings, TextField, diff --git a/extralit/tests/integration/test_query_records.py b/extralit/tests/integration/test_query_records.py index 6e56d56dc..4ed622127 100644 --- a/extralit/tests/integration/test_query_records.py +++ b/extralit/tests/integration/test_query_records.py @@ -17,8 +17,8 @@ import pytest -import argilla as rg -from argilla import Argilla, Dataset, Settings, TextField, Workspace, LabelQuestion +import extralit as rg +from extralit import Argilla, Dataset, Settings, TextField, Workspace, LabelQuestion @pytest.fixture diff --git a/extralit/tests/integration/test_ranking_questions.py b/extralit/tests/integration/test_ranking_questions.py index 9e3a16444..dd2ddfbec 100644 --- a/extralit/tests/integration/test_ranking_questions.py +++ b/extralit/tests/integration/test_ranking_questions.py @@ -16,7 +16,7 @@ import pytest -import argilla as rg +import extralit as rg @pytest.fixture diff --git a/extralit/tests/integration/test_search_records.py b/extralit/tests/integration/test_search_records.py index a0b729ce5..29bd5c254 100644 --- a/extralit/tests/integration/test_search_records.py +++ b/extralit/tests/integration/test_search_records.py @@ -17,7 +17,7 @@ import pytest -from argilla import ( +from extralit import ( Argilla, Workspace, Dataset, diff --git a/extralit/tests/integration/test_update_dataset_settings.py b/extralit/tests/integration/test_update_dataset_settings.py index 16865f5fe..b660dcc45 100644 --- a/extralit/tests/integration/test_update_dataset_settings.py +++ b/extralit/tests/integration/test_update_dataset_settings.py @@ -14,7 +14,7 @@ import pytest -from argilla import ( +from extralit import ( Dataset, Settings, TextField, diff --git a/extralit/tests/integration/test_update_records.py b/extralit/tests/integration/test_update_records.py index a6bc77cd1..9bc409738 100644 --- a/extralit/tests/integration/test_update_records.py +++ b/extralit/tests/integration/test_update_records.py @@ -18,9 +18,9 @@ import pytest -import argilla as rg -from argilla import Record -from argilla._models import RecordModel +import extralit as rg +from extralit import Record +from extralit._models import RecordModel @pytest.fixture diff --git a/extralit/tests/integration/test_vectors.py b/extralit/tests/integration/test_vectors.py index f28d1e44b..8b7a9459d 100644 --- a/extralit/tests/integration/test_vectors.py +++ b/extralit/tests/integration/test_vectors.py @@ -18,7 +18,7 @@ import pytest -import argilla as rg +import extralit as rg @pytest.fixture diff --git a/extralit/tests/integration/test_workspace_documents.py b/extralit/tests/integration/test_workspace_documents.py index ccff7117a..24e946d40 100644 --- a/extralit/tests/integration/test_workspace_documents.py +++ b/extralit/tests/integration/test_workspace_documents.py @@ -17,7 +17,7 @@ import tempfile -from argilla import Workspace +from extralit import Workspace class TestWorkspaceDocuments: diff --git a/extralit/tests/integration/test_workspace_files.py b/extralit/tests/integration/test_workspace_files.py index ac98764c6..d3d61b86a 100644 --- a/extralit/tests/integration/test_workspace_files.py +++ b/extralit/tests/integration/test_workspace_files.py @@ -19,7 +19,7 @@ import pytest -from argilla import Argilla, Workspace +from extralit import Argilla, Workspace class TestWorkspaceFiles: diff --git a/extralit/tests/integration/test_workspace_schemas.py b/extralit/tests/integration/test_workspace_schemas.py index 8f85a332a..609ff09c3 100644 --- a/extralit/tests/integration/test_workspace_schemas.py +++ b/extralit/tests/integration/test_workspace_schemas.py @@ -20,14 +20,14 @@ try: import pandera as pa - from argilla._models._schema import SchemaStructure + from extralit._models._schema import SchemaStructure PANDERA_AVAILABLE = True except ImportError: PANDERA_AVAILABLE = False pytest.skip("pandera and extralit are required for schema tests", allow_module_level=True) -from argilla import Workspace +from extralit import Workspace @pytest.fixture diff --git a/extralit/tests/unit/api/http/test_http_client.py b/extralit/tests/unit/api/http/test_http_client.py index 591a184d5..26e301ec4 100644 --- a/extralit/tests/unit/api/http/test_http_client.py +++ b/extralit/tests/unit/api/http/test_http_client.py @@ -17,7 +17,7 @@ import pytest from httpx import Timeout -from argilla import Argilla +from extralit import Argilla class TestHTTPClient: diff --git a/extralit/tests/unit/api/test_workspace_documents_api.py b/extralit/tests/unit/api/test_workspace_documents_api.py index baa6643f7..8d02d37c5 100644 --- a/extralit/tests/unit/api/test_workspace_documents_api.py +++ b/extralit/tests/unit/api/test_workspace_documents_api.py @@ -19,9 +19,9 @@ import pytest -from argilla._api._workspaces import WorkspacesAPI -from argilla._models._documents import DocumentModel -from argilla.documents import Document +from extralit._api._workspaces import WorkspacesAPI +from extralit._models._documents import DocumentModel +from extralit.documents import Document @pytest.fixture @@ -308,7 +308,7 @@ class TestWorkspaceDocumentIntegration: @pytest.fixture def mock_workspace(self, sample_workspace_id): """Mock workspace with client.""" - from argilla.workspaces import Workspace + from extralit.workspaces import Workspace workspace = MagicMock(spec=Workspace) workspace.id = sample_workspace_id diff --git a/extralit/tests/unit/api/test_workspace_files_api.py b/extralit/tests/unit/api/test_workspace_files_api.py index 0d39cd447..4dcb75f3b 100644 --- a/extralit/tests/unit/api/test_workspace_files_api.py +++ b/extralit/tests/unit/api/test_workspace_files_api.py @@ -17,9 +17,9 @@ import pytest -from argilla._api._workspaces import WorkspacesAPI -from argilla._models._files import ListObjectsResponse, FileObjectResponse, ObjectMetadata -from argilla._models._documents import Document +from extralit._api._workspaces import WorkspacesAPI +from extralit._models._files import ListObjectsResponse, FileObjectResponse, ObjectMetadata +from extralit._models._documents import Document @pytest.fixture diff --git a/extralit/tests/unit/api/test_workspace_schemas_api.py b/extralit/tests/unit/api/test_workspace_schemas_api.py index 30ee4690d..edd0e94e9 100644 --- a/extralit/tests/unit/api/test_workspace_schemas_api.py +++ b/extralit/tests/unit/api/test_workspace_schemas_api.py @@ -16,12 +16,12 @@ import pytest -from argilla._api._workspaces import WorkspacesAPI -from argilla._models._files import ListObjectsResponse, ObjectMetadata, FileObjectResponse +from extralit._api._workspaces import WorkspacesAPI +from extralit._models._files import ListObjectsResponse, ObjectMetadata, FileObjectResponse try: import pandera as pa - from argilla._models._schema import SchemaStructure + from extralit._models._schema import SchemaStructure PANDERA_AVAILABLE = True except ImportError: diff --git a/extralit/tests/unit/cli/test_cli_app.py b/extralit/tests/unit/cli/test_cli_app.py index 727f625e1..24569d15a 100644 --- a/extralit/tests/unit/cli/test_cli_app.py +++ b/extralit/tests/unit/cli/test_cli_app.py @@ -16,7 +16,7 @@ import pytest from typer.testing import CliRunner -from argilla.cli.app import app +from extralit.cli.app import app @pytest.fixture diff --git a/extralit/tests/unit/cli/test_cli_datasets.py b/extralit/tests/unit/cli/test_cli_datasets.py index dc5c6e544..ecbfb2ee8 100644 --- a/extralit/tests/unit/cli/test_cli_datasets.py +++ b/extralit/tests/unit/cli/test_cli_datasets.py @@ -16,7 +16,7 @@ from typer.testing import CliRunner from unittest.mock import patch -from argilla.cli.app import app +from extralit.cli.app import app @pytest.fixture diff --git a/extralit/tests/unit/cli/test_cli_documents.py b/extralit/tests/unit/cli/test_cli_documents.py index 0d66404ff..2b527ba08 100644 --- a/extralit/tests/unit/cli/test_cli_documents.py +++ b/extralit/tests/unit/cli/test_cli_documents.py @@ -17,7 +17,7 @@ from unittest.mock import patch, MagicMock from pathlib import Path -from argilla.cli.app import app +from extralit.cli.app import app @pytest.fixture @@ -189,7 +189,7 @@ def test_import_bibtex_api_error(mock_parse_bib, mock_validate, mock_from_creden def test_display_import_analysis_results(): """Test the _display_import_analysis_results function.""" - from argilla.cli.documents.import_bib import _display_import_analysis_results + from extralit.cli.documents.import_bib import _display_import_analysis_results from rich.console import Console from io import StringIO diff --git a/extralit/tests/unit/cli/test_cli_extraction.py b/extralit/tests/unit/cli/test_cli_extraction.py index 263055854..19d50a8cc 100644 --- a/extralit/tests/unit/cli/test_cli_extraction.py +++ b/extralit/tests/unit/cli/test_cli_extraction.py @@ -16,7 +16,7 @@ from typer.testing import CliRunner from unittest.mock import patch -from argilla.cli.app import app +from extralit.cli.app import app @pytest.fixture diff --git a/extralit/tests/unit/cli/test_cli_schemas.py b/extralit/tests/unit/cli/test_cli_schemas.py index b9e065a27..6eb197ad6 100644 --- a/extralit/tests/unit/cli/test_cli_schemas.py +++ b/extralit/tests/unit/cli/test_cli_schemas.py @@ -17,7 +17,7 @@ from unittest.mock import patch from pathlib import Path -from argilla.cli.app import app +from extralit.cli.app import app @pytest.fixture diff --git a/extralit/tests/unit/cli/test_cli_training.py b/extralit/tests/unit/cli/test_cli_training.py index df3b96794..967b8f9f7 100644 --- a/extralit/tests/unit/cli/test_cli_training.py +++ b/extralit/tests/unit/cli/test_cli_training.py @@ -16,8 +16,8 @@ from typer.testing import CliRunner from unittest.mock import patch -from argilla.cli.app import app -from argilla.cli.training.__main__ import Framework +from extralit.cli.app import app +from extralit.cli.training.__main__ import Framework @pytest.fixture diff --git a/extralit/tests/unit/cli/test_cli_users.py b/extralit/tests/unit/cli/test_cli_users.py index fb65f8c4a..c0774be3e 100644 --- a/extralit/tests/unit/cli/test_cli_users.py +++ b/extralit/tests/unit/cli/test_cli_users.py @@ -16,7 +16,7 @@ from typer.testing import CliRunner from unittest.mock import patch -from argilla.cli.app import app +from extralit.cli.app import app @pytest.fixture diff --git a/extralit/tests/unit/cli/test_cli_workspaces.py b/extralit/tests/unit/cli/test_cli_workspaces.py index 50fb4b8ac..f8a2b668c 100644 --- a/extralit/tests/unit/cli/test_cli_workspaces.py +++ b/extralit/tests/unit/cli/test_cli_workspaces.py @@ -16,7 +16,7 @@ from typer.testing import CliRunner from unittest.mock import patch -from argilla.cli.app import app +from extralit.cli.app import app @pytest.fixture diff --git a/extralit/tests/unit/conftest.py b/extralit/tests/unit/conftest.py index 410d3be80..df455c5b8 100644 --- a/extralit/tests/unit/conftest.py +++ b/extralit/tests/unit/conftest.py @@ -15,7 +15,7 @@ import pytest from unittest.mock import patch from httpx import Timeout -from argilla import Argilla +from extralit import Argilla @pytest.fixture(autouse=True) diff --git a/extralit/tests/unit/export/test_record_export_import_compatibillity.py b/extralit/tests/unit/export/test_record_export_import_compatibillity.py index 006bae963..37cd235c9 100644 --- a/extralit/tests/unit/export/test_record_export_import_compatibillity.py +++ b/extralit/tests/unit/export/test_record_export_import_compatibillity.py @@ -17,8 +17,8 @@ import pytest -import argilla as rg -from argilla.records._resource import Record +import extralit as rg +from extralit.records._resource import Record @pytest.fixture diff --git a/extralit/tests/unit/export/test_settings_export_import_compatibillity.py b/extralit/tests/unit/export/test_settings_export_import_compatibillity.py index fbd8be20f..d14edc1f7 100644 --- a/extralit/tests/unit/export/test_settings_export_import_compatibillity.py +++ b/extralit/tests/unit/export/test_settings_export_import_compatibillity.py @@ -20,7 +20,7 @@ import httpx from pytest_httpx import HTTPXMock -import argilla as rg +import extralit as rg @pytest.fixture diff --git a/extralit/tests/unit/helpers/test_resource_repr.py b/extralit/tests/unit/helpers/test_resource_repr.py index ebf8b9476..44ba50142 100644 --- a/extralit/tests/unit/helpers/test_resource_repr.py +++ b/extralit/tests/unit/helpers/test_resource_repr.py @@ -14,9 +14,9 @@ import uuid -import argilla as rg -from argilla._helpers._resource_repr import ResourceHTMLReprMixin -from argilla._models import DatasetModel +import extralit as rg +from extralit._helpers._resource_repr import ResourceHTMLReprMixin +from extralit._models import DatasetModel class TestResourceHTMLReprMixin: diff --git a/extralit/tests/unit/helpers/test_spaces_deployment.py b/extralit/tests/unit/helpers/test_spaces_deployment.py index bdd938cfe..bb4dd39b7 100644 --- a/extralit/tests/unit/helpers/test_spaces_deployment.py +++ b/extralit/tests/unit/helpers/test_spaces_deployment.py @@ -17,7 +17,7 @@ import pytest from huggingface_hub import SpaceStage -from argilla.client import Argilla +from extralit.client import Argilla class TestSpacesDeploymentMixin: diff --git a/extralit/tests/unit/models/test_workspace_models.py b/extralit/tests/unit/models/test_workspace_models.py index 2eb3aa1ee..f6c533e2e 100644 --- a/extralit/tests/unit/models/test_workspace_models.py +++ b/extralit/tests/unit/models/test_workspace_models.py @@ -16,7 +16,7 @@ from dateutil import tz -from argilla._models import WorkspaceModel +from extralit._models import WorkspaceModel class TestWorkspaceModels: diff --git a/extralit/tests/unit/test_interface.py b/extralit/tests/unit/test_interface.py index dbbae5acc..1c79b7b45 100644 --- a/extralit/tests/unit/test_interface.py +++ b/extralit/tests/unit/test_interface.py @@ -14,7 +14,7 @@ from unittest import mock -import argilla as rg +import extralit as rg class TestArgilla: diff --git a/extralit/tests/unit/test_io/test_generic.py b/extralit/tests/unit/test_io/test_generic.py index e97fc08aa..0ca7d68a4 100644 --- a/extralit/tests/unit/test_io/test_generic.py +++ b/extralit/tests/unit/test_io/test_generic.py @@ -14,9 +14,9 @@ from uuid import uuid4 -import argilla as rg -from argilla import ResponseStatus -from argilla.records._io import GenericIO +import extralit as rg +from extralit import ResponseStatus +from extralit.records._io import GenericIO class TestGenericIO: diff --git a/extralit/tests/unit/test_io/test_hf_datasets.py b/extralit/tests/unit/test_io/test_hf_datasets.py index e72ea4bde..e0f5971f1 100644 --- a/extralit/tests/unit/test_io/test_hf_datasets.py +++ b/extralit/tests/unit/test_io/test_hf_datasets.py @@ -16,9 +16,9 @@ from datasets import Value, Sequence, load_dataset -import argilla as rg -from argilla.records._io import HFDatasetsIO -from argilla.records._mapping import IngestedRecordMapper +import extralit as rg +from extralit.records._io import HFDatasetsIO +from extralit.records._mapping import IngestedRecordMapper class TestHFDatasetsIO: diff --git a/extralit/tests/unit/test_markdown.py b/extralit/tests/unit/test_markdown.py index d98bae1f7..c2a195276 100644 --- a/extralit/tests/unit/test_markdown.py +++ b/extralit/tests/unit/test_markdown.py @@ -15,8 +15,8 @@ import base64 import pytest -from argilla.markdown import audio_to_html, chat_to_html, image_to_html, pdf_to_html, video_to_html -from argilla.markdown.media import _get_file_data, _is_valid_dimension, _media_to_html, _validate_media_type +from extralit.markdown import audio_to_html, chat_to_html, image_to_html, pdf_to_html, video_to_html +from extralit.markdown.media import _get_file_data, _is_valid_dimension, _media_to_html, _validate_media_type def test_validate_media_type_valid(): diff --git a/extralit/tests/unit/test_media.py b/extralit/tests/unit/test_media.py index 30181ccc6..3f10fec8a 100644 --- a/extralit/tests/unit/test_media.py +++ b/extralit/tests/unit/test_media.py @@ -15,7 +15,7 @@ import pytest from PIL import Image -from argilla._helpers._media import cast_image, pil_to_data_uri, uncast_image +from extralit._helpers._media import cast_image, pil_to_data_uri, uncast_image @pytest.fixture diff --git a/extralit/tests/unit/test_record_fields.py b/extralit/tests/unit/test_record_fields.py index 0819cb518..1be1b5c00 100644 --- a/extralit/tests/unit/test_record_fields.py +++ b/extralit/tests/unit/test_record_fields.py @@ -18,7 +18,7 @@ from PIL import Image -from argilla import Record, Settings, ImageField, Dataset, ChatField, TextField +from extralit import Record, Settings, ImageField, Dataset, ChatField, TextField @pytest.fixture diff --git a/extralit/tests/unit/test_record_ingestion.py b/extralit/tests/unit/test_record_ingestion.py index 6d83f80e6..227d09ced 100644 --- a/extralit/tests/unit/test_record_ingestion.py +++ b/extralit/tests/unit/test_record_ingestion.py @@ -16,9 +16,9 @@ import pytest -import argilla as rg -from argilla._exceptions import RecordsIngestionError -from argilla.records._dataset_records import RecordErrorHandling +import extralit as rg +from extralit._exceptions import RecordsIngestionError +from extralit.records._dataset_records import RecordErrorHandling @pytest.fixture diff --git a/extralit/tests/unit/test_record_responses.py b/extralit/tests/unit/test_record_responses.py index dc87c9aa7..d0bc20873 100644 --- a/extralit/tests/unit/test_record_responses.py +++ b/extralit/tests/unit/test_record_responses.py @@ -15,8 +15,8 @@ import pytest -from argilla import Response, User, Dataset, Settings, TextQuestion, TextField, Workspace -from argilla.records._resource import RecordResponses, Record +from extralit import Response, User, Dataset, Settings, TextQuestion, TextField, Workspace +from extralit.records._resource import RecordResponses, Record @pytest.fixture diff --git a/extralit/tests/unit/test_record_suggestions.py b/extralit/tests/unit/test_record_suggestions.py index 4f7fe48f6..ed8351644 100644 --- a/extralit/tests/unit/test_record_suggestions.py +++ b/extralit/tests/unit/test_record_suggestions.py @@ -14,8 +14,8 @@ import pytest -from argilla import Record, Suggestion -from argilla.records._resource import RecordSuggestions +from extralit import Record, Suggestion +from extralit.records._resource import RecordSuggestions @pytest.fixture diff --git a/extralit/tests/unit/test_resources/test_datasets.py b/extralit/tests/unit/test_resources/test_datasets.py index 868de40a2..a4902ce7f 100644 --- a/extralit/tests/unit/test_resources/test_datasets.py +++ b/extralit/tests/unit/test_resources/test_datasets.py @@ -19,8 +19,8 @@ import pytest from pytest_httpx import HTTPXMock -import argilla as rg -from argilla._exceptions import ( +import extralit as rg +from extralit._exceptions import ( BadRequestError, ConflictError, ForbiddenError, diff --git a/extralit/tests/unit/test_resources/test_fields.py b/extralit/tests/unit/test_resources/test_fields.py index 585fa3fd2..6fa85bb6a 100644 --- a/extralit/tests/unit/test_resources/test_fields.py +++ b/extralit/tests/unit/test_resources/test_fields.py @@ -18,10 +18,10 @@ import httpx from pytest_httpx import HTTPXMock -import argilla as rg -from argilla._models import FieldModel -from argilla._models._settings._fields import ImageFieldSettings, ChatFieldSettings -from argilla.settings._field import ImageField, ChatField, CustomField +import extralit as rg +from extralit._models import FieldModel +from extralit._models._settings._fields import ImageFieldSettings, ChatFieldSettings +from extralit.settings._field import ImageField, ChatField, CustomField class TestImageField: diff --git a/extralit/tests/unit/test_resources/test_questions.py b/extralit/tests/unit/test_resources/test_questions.py index ab5cef3a2..511eb6701 100644 --- a/extralit/tests/unit/test_resources/test_questions.py +++ b/extralit/tests/unit/test_resources/test_questions.py @@ -18,8 +18,8 @@ import httpx from pytest_httpx import HTTPXMock -import argilla as rg -from argilla._models import QuestionModel +import extralit as rg +from extralit._models import QuestionModel class TestQuestionsAPI: diff --git a/extralit/tests/unit/test_resources/test_records.py b/extralit/tests/unit/test_resources/test_records.py index 8f2ff8d58..7120e4221 100644 --- a/extralit/tests/unit/test_resources/test_records.py +++ b/extralit/tests/unit/test_resources/test_records.py @@ -16,10 +16,10 @@ import pytest -from argilla import Dataset, Record, Response, Settings, Suggestion, TextField, TextQuestion -from argilla._exceptions import ArgillaError -from argilla._models import RecordModel -from argilla._models._record._metadata import MetadataModel +from extralit import Dataset, Record, Response, Settings, Suggestion, TextField, TextQuestion +from extralit._exceptions import ArgillaError +from extralit._models import RecordModel +from extralit._models._record._metadata import MetadataModel @pytest.fixture() diff --git a/extralit/tests/unit/test_resources/test_responses.py b/extralit/tests/unit/test_resources/test_responses.py index 82349893d..0946e6b80 100644 --- a/extralit/tests/unit/test_resources/test_responses.py +++ b/extralit/tests/unit/test_resources/test_responses.py @@ -16,8 +16,8 @@ import pytest -from argilla import UserResponse, Response, Dataset, Workspace, Record -from argilla._models import UserResponseModel, ResponseStatus +from extralit import UserResponse, Response, Dataset, Workspace, Record +from extralit._models import UserResponseModel, ResponseStatus class TestResponses: diff --git a/extralit/tests/unit/test_resources/test_users.py b/extralit/tests/unit/test_resources/test_users.py index 7d9fc62fd..66bbe0512 100644 --- a/extralit/tests/unit/test_resources/test_users.py +++ b/extralit/tests/unit/test_resources/test_users.py @@ -20,8 +20,8 @@ import pytest from pytest_httpx import HTTPXMock -import argilla as rg -from argilla._exceptions import ( +import extralit as rg +from extralit._exceptions import ( BadRequestError, ConflictError, ForbiddenError, @@ -29,7 +29,7 @@ NotFoundError, UnprocessableEntityError, ) -from argilla._models import UserModel +from extralit._models import UserModel class TestUserSerialization: diff --git a/extralit/tests/unit/test_resources/test_workspaces.py b/extralit/tests/unit/test_resources/test_workspaces.py index a14e1fce5..105a8197b 100644 --- a/extralit/tests/unit/test_resources/test_workspaces.py +++ b/extralit/tests/unit/test_resources/test_workspaces.py @@ -19,8 +19,8 @@ import pytest from pytest_httpx import HTTPXMock -import argilla as rg -from argilla._exceptions import ( +import extralit as rg +from extralit._exceptions import ( BadRequestError, ConflictError, ForbiddenError, diff --git a/extralit/tests/unit/test_search/test_filters.py b/extralit/tests/unit/test_search/test_filters.py index fbc9e077c..7bbc9b45e 100644 --- a/extralit/tests/unit/test_search/test_filters.py +++ b/extralit/tests/unit/test_search/test_filters.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from argilla.records import Filter +from extralit.records import Filter class TestFilters: diff --git a/extralit/tests/unit/test_settings/test_metadata.py b/extralit/tests/unit/test_settings/test_metadata.py index ce9cda3d1..be271fff4 100644 --- a/extralit/tests/unit/test_settings/test_metadata.py +++ b/extralit/tests/unit/test_settings/test_metadata.py @@ -16,8 +16,8 @@ import pytest -import argilla as rg -from argilla._models import MetadataFieldModel, TermsMetadataPropertySettings +import extralit as rg +from extralit._models import MetadataFieldModel, TermsMetadataPropertySettings class TestMetadata: diff --git a/extralit/tests/unit/test_settings/test_multi_label_question.py b/extralit/tests/unit/test_settings/test_multi_label_question.py index 713f6931f..fe757eb83 100644 --- a/extralit/tests/unit/test_settings/test_multi_label_question.py +++ b/extralit/tests/unit/test_settings/test_multi_label_question.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argilla as rg +import extralit as rg class TestMultiLabelQuestions: diff --git a/extralit/tests/unit/test_settings/test_settings.py b/extralit/tests/unit/test_settings/test_settings.py index 30ba3ea6a..191bd8940 100644 --- a/extralit/tests/unit/test_settings/test_settings.py +++ b/extralit/tests/unit/test_settings/test_settings.py @@ -18,11 +18,11 @@ import pytest from pytest_mock import MockerFixture -import argilla as rg -from argilla import Dataset -from argilla._exceptions import SettingsError -from argilla._models import DatasetModel -from argilla.settings._task_distribution import TaskDistribution +import extralit as rg +from extralit import Dataset +from extralit._exceptions import SettingsError +from extralit._models import DatasetModel +from extralit.settings._task_distribution import TaskDistribution class TestSettings: diff --git a/extralit/tests/unit/test_settings/test_settings_fields.py b/extralit/tests/unit/test_settings/test_settings_fields.py index beb55a713..b923b53ba 100644 --- a/extralit/tests/unit/test_settings/test_settings_fields.py +++ b/extralit/tests/unit/test_settings/test_settings_fields.py @@ -13,7 +13,7 @@ # limitations under the License. import pytest -import argilla as rg +import extralit as rg class TestTextField: diff --git a/extralit/tests/unit/test_settings/test_settings_from_features.py b/extralit/tests/unit/test_settings/test_settings_from_features.py index c7bf5bd5b..c4584f120 100644 --- a/extralit/tests/unit/test_settings/test_settings_from_features.py +++ b/extralit/tests/unit/test_settings/test_settings_from_features.py @@ -13,10 +13,10 @@ # limitations under the License. import pytest -import argilla as rg +import extralit as rg -from argilla._exceptions._settings import SettingsError -from argilla.settings._io._hub import _define_settings_from_features +from extralit._exceptions._settings import SettingsError +from extralit.settings._io._hub import _define_settings_from_features def test_define_settings_from_features_text(): diff --git a/extralit/tests/unit/test_settings/test_settings_mapping_record_ingestion.py b/extralit/tests/unit/test_settings/test_settings_mapping_record_ingestion.py index 497f5484c..d6f192eae 100644 --- a/extralit/tests/unit/test_settings/test_settings_mapping_record_ingestion.py +++ b/extralit/tests/unit/test_settings/test_settings_mapping_record_ingestion.py @@ -17,7 +17,7 @@ import pytest -import argilla as rg +import extralit as rg @pytest.fixture diff --git a/extralit/tests/unit/test_settings/test_settings_questions.py b/extralit/tests/unit/test_settings/test_settings_questions.py index 2465e1c02..b64395aef 100644 --- a/extralit/tests/unit/test_settings/test_settings_questions.py +++ b/extralit/tests/unit/test_settings/test_settings_questions.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argilla as rg +import extralit as rg class TestQuestions: diff --git a/extralit/tests/unit/test_settings/test_settings_templates.py b/extralit/tests/unit/test_settings/test_settings_templates.py index e1e143ad5..758e3fef8 100644 --- a/extralit/tests/unit/test_settings/test_settings_templates.py +++ b/extralit/tests/unit/test_settings/test_settings_templates.py @@ -14,7 +14,7 @@ import pytest from unittest import mock -from argilla.settings._templates import DefaultSettingsMixin +from extralit.settings._templates import DefaultSettingsMixin class TestDefaultSettingsMixin: diff --git a/extralit/tests/unit/test_settings/test_span_question.py b/extralit/tests/unit/test_settings/test_span_question.py index b6feca788..46051a641 100644 --- a/extralit/tests/unit/test_settings/test_span_question.py +++ b/extralit/tests/unit/test_settings/test_span_question.py @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -import argilla as rg +import extralit as rg class TestSpanQuestions: From 232832e2d3b1796ede38a3bddeb165942edcdc93 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 6 Aug 2025 06:42:02 +0000 Subject: [PATCH 03/23] Update configuration files and Docker setup for namespace change - Update pyproject.toml files with correct module paths and coverage settings - Update docker-compose.yaml with EXTRALIT_ environment variables and service names - Update .devcontainer configuration for new paths and variables - Update alembic.ini references - All imports still working correctly Co-authored-by: dawn-tran <104935595+dawn-tran@users.noreply.github.com> --- .devcontainer/devcontainer.json | 6 +-- argilla-server/pyproject.toml | 2 +- .../src/extralit_server/alembic.ini | 4 +- docker-compose.yaml | 46 +++++++++---------- extralit/pyproject.toml | 4 +- 5 files changed, 31 insertions(+), 31 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 0f6ff5632..b797b483b 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -33,14 +33,14 @@ "python.defaultInterpreterPath": "/opt/conda/bin/python", "python.condaPath": "/usr/local/bin/micromamba", "search.exclude": { - "argilla-server/src/argilla_server/static/": true, + "argilla-server/src/extralit_server/static/": true, "argilla-frontend/dist/": true, "_nuxt/": true, "node_modules/": true, ".venv/": true }, "files.watcherExclude": { - "argilla-server/src/argilla_server/static/": true, + "argilla-server/src/extralit_server/static/": true, "argilla-frontend/dist/": true, "_nuxt/": true, "node_modules/": true, @@ -74,7 +74,7 @@ "WCS_HTTP_URL": "${localEnv:WCS_HTTP_URL}", "WCS_GRPC_URL": "${localEnv:WCS_GRPC_URL}", "WCS_API_KEY": "${localEnv:WCS_API_KEY}", - "ARGILLA_DATABASE_URL": "${localEnv:ARGILLA_DATABASE_URL}", + "EXTRALIT_DATABASE_URL": "${localEnv:EXTRALIT_DATABASE_URL}", "S3_ENDPOINT": "${localEnv:S3_ENDPOINT}", "S3_ACCESS_KEY": "${localEnv:S3_ACCESS_KEY}", "S3_SECRET_KEY": "${localEnv:S3_SECRET_KEY}", diff --git a/argilla-server/pyproject.toml b/argilla-server/pyproject.toml index 14c3e49c5..24c84875d 100644 --- a/argilla-server/pyproject.toml +++ b/argilla-server/pyproject.toml @@ -92,7 +92,7 @@ excludes = [".env.dev", ".env.test"] [tool.pdm.version] source = "file" -path = "src/argilla_server/_version.py" +path = "src/extralit_server/_version.py" [tool.pdm.dev-dependencies] test = [ diff --git a/argilla-server/src/extralit_server/alembic.ini b/argilla-server/src/extralit_server/alembic.ini index 749393c08..8ff71d0a3 100644 --- a/argilla-server/src/extralit_server/alembic.ini +++ b/argilla-server/src/extralit_server/alembic.ini @@ -36,10 +36,10 @@ prepend_sys_path = . # sourceless = false # version location specification; This defaults -# to src/argilla/server/alembic/versions. When using multiple version +# to src/extralit/server/alembic/versions. When using multiple version # directories, initial revisions must be specified with --version-path. # The path separator used here should be the separator specified by "version_path_separator" below. -# version_locations = %(here)s/bar:%(here)s/bat:src/argilla/server/alembic/versions +# version_locations = %(here)s/bar:%(here)s/bat:src/extralit/server/alembic/versions # version path separator; As mentioned above, this is the character used to split # version_locations. The default within new alembic.ini files is "os", which uses os.pathsep. diff --git a/docker-compose.yaml b/docker-compose.yaml index fde9cfd0d..76b0b0b11 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -1,59 +1,59 @@ x-common-variables: &common-variables - ARGILLA_HOME_PATH: /var/lib/argilla - ARGILLA_ELASTICSEARCH: http://elasticsearch:9200 - ARGILLA_DATABASE_URL: postgresql+asyncpg://postgres:postgres@postgres:5432/argilla - ARGILLA_REDIS_URL: redis://redis:6379/0 + EXTRALIT_HOME_PATH: /var/lib/extralit + EXTRALIT_ELASTICSEARCH: http://elasticsearch:9200 + EXTRALIT_DATABASE_URL: postgresql+asyncpg://postgres:postgres@postgres:5432/extralit + EXTRALIT_REDIS_URL: redis://redis:6379/0 services: - argilla: - image: extralitdev/argilla-server:latest + extralit: + image: extralitdev/extralit-server:latest restart: unless-stopped ports: - "6900:6900" environment: <<: *common-variables - USERNAME: argilla + USERNAME: extralit PASSWORD: 12345678 - API_KEY: argilla.apikey + API_KEY: extralit.apikey WORKSPACE: default - # Uncomment the following line to reindex Argilla datasets into the search engine when starting up + # Uncomment the following line to reindex Extralit datasets into the search engine when starting up # REINDEX_DATASETS: 1 # Opt-out for telemetry https://huggingface.co/docs/huggingface_hub/main/en/package_reference/utilities#huggingface_hub.utils.send_telemetry # HF_HUB_DISABLE_TELEMETRY: 1 # Opt-out for telemetry https://huggingface.co/docs/huggingface_hub/main/en/package_reference/utilities#huggingface_hub.utils.send_telemetry # HF_HUB_OFFLINE: 1 networks: - - argilla + - extralit volumes: - # ARGILLA_HOME_PATH is used to define where Argilla will save it's application data. - # If you change ARGILLA_HOME_PATH value please copy that same value to argilladata volume too. - - argilladata:/var/lib/argilla + # EXTRALIT_HOME_PATH is used to define where Extralit will save it's application data. + # If you change EXTRALIT_HOME_PATH value please copy that same value to extralitdata volume too. + - extralitdata:/var/lib/extralit depends_on: - postgres - elasticsearch - redis worker: - image: extralitdev/argilla-server:latest + image: extralitdev/extralit-server:latest environment: <<: *common-variables BACKGROUND_NUM_WORKERS: 2 networks: - - argilla + - extralit depends_on: - postgres - elasticsearch - redis - command: sh -c 'python -m argilla_server worker --num-workers $${BACKGROUND_NUM_WORKERS}' + command: sh -c 'python -m extralit_server worker --num-workers $${BACKGROUND_NUM_WORKERS}' postgres: image: postgres:14 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres - POSTGRES_DB: argilla + POSTGRES_DB: extralit networks: - - argilla + - extralit ports: - "5432:5432" volumes: @@ -66,7 +66,7 @@ services: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin # networks: - # - argilla + # - extralit ports: - "9000:9000" - "9090:9090" @@ -82,7 +82,7 @@ services: - ES_JAVA_OPTS=-Xms512m -Xmx512m -XX:UseSVE=0 - CLI_JAVA_OPTS=-XX:UseSVE=0 - node.name=elasticsearch - - cluster.name=es-argilla-local + - cluster.name=es-extralit-local - discovery.type=single-node - cluster.routing.allocation.disk.threshold_enabled=false - xpack.security.enabled=false @@ -110,15 +110,15 @@ services: redis: image: redis networks: - - argilla + - extralit ports: - "6379:6379" networks: - argilla: + extralit: driver: bridge volumes: - argilladata: + extralitdata: elasticdata: postgresdata: diff --git a/extralit/pyproject.toml b/extralit/pyproject.toml index e26c1d411..2eb133eb7 100644 --- a/extralit/pyproject.toml +++ b/extralit/pyproject.toml @@ -132,13 +132,13 @@ dev = [ [tool.pdm.scripts] test = { cmd = "pytest tests --disable-warnings", env_file = ".env.test" } -test-cov = { cmd = "pytest tests --disable-warnings --cov=argilla --cov-report=term --cov-report=xml", env_file = ".env.test" } +test-cov = { cmd = "pytest tests --disable-warnings --cov=extralit --cov-report=term --cov-report=xml", env_file = ".env.test" } lint = "ruff check" format = "black ." all = { composite = ["format", "lint", "test"] } [project.scripts] -extralit = "argilla.cli.app:app" +extralit = "extralit.cli.app:app" [tool.pytest.ini_options] testpaths = ["tests"] From 0b046eac1fa7b7db0980ee124735d78193c3f1c5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 6 Aug 2025 06:49:24 +0000 Subject: [PATCH 04/23] Fix remaining import issues and update documentation - Update .github/copilot-instructions.md with new paths and module names - Fix pyproject.toml version path reference - Fix test imports that were still referencing old argilla modules - Schema test now passes successfully - All core functionality verified working Co-authored-by: dawn-tran <104935595+dawn-tran@users.noreply.github.com> --- .github/copilot-instructions.md | 25 +++++++++---------- extralit/pdm.lock | 14 ++++++++++- extralit/pyproject.toml | 2 +- .../tests/unit/api/http/test_http_client.py | 2 +- .../unit/api/test_workspace_documents_api.py | 4 +-- extralit/tests/unit/conftest.py | 2 +- 6 files changed, 30 insertions(+), 19 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 608391676..d84d60291 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -22,9 +22,8 @@ When contributing to Extralit, consider these guidelines: Extralit is organized as a monorepo with several main components: - **extralit/**: Python SDK and core extraction functionality -- **argilla-server/**: Backend server implementation -- **argilla-frontend/**: Frontend web application -- **argilla-v1/**: Legacy compatibility layer +- **extralit-server/** (formerly argilla-server): Backend server implementation +- **argilla-frontend/**: Frontend web application (will be renamed to extralit-frontend in future) - **examples/**: Sample implementations and deployment configurations ## Core Components @@ -63,7 +62,7 @@ Key directories: - **View Models**: `setup(props) { return useViewModelName(props); }` pattern - **BaseSimpleTable**: Use existing `BaseSimpleTable.vue` for tabular display -### Backend Server (`argilla-server/src/argilla_server`) +### Backend Server (`extralit-server/src/extralit_server`) The backend is a FastAPI application that handles API requests, database operations, and search functionality. @@ -91,7 +90,7 @@ Key modules: - `webhooks/`: Webhook processing and event handling - `validators/`: Data validation logic -### SDK and Core Extraction (`argilla/src/extralit`) +### SDK and Core Extraction (`extralit/src/extralit`) The core extraction functionality and Python SDK for interacting with the Extralit system. @@ -136,7 +135,7 @@ This approach keeps related functionality together and makes the codebase more m ### Models and Database -The system uses SQLAlchemy for database operations with models defined in `argilla-server/src/argilla_server/models/database.py`. These models represent the core entities in the system: +The system uses SQLAlchemy for database operations with models defined in `extralit-server/src/extralit_server/models/database.py`. These models represent the core entities in the system: - Users and workspaces - Datasets and records - Questions and responses @@ -171,7 +170,7 @@ await authorize(current_user, WorkspacePolicy.get(workspace_id)) Getting Storage Client: ```python -from argilla_server.contexts import files +from extralit_server.contexts import files # Get appropriate client (Minio or LocalFileStorage) client = files.get_minio_client() @@ -208,9 +207,9 @@ Implementation: Schemas define the structure and format of data to be extracted, while references uniquely identify scientific papers in the system. Implementation: -- Schema definitions are handled in `argilla/src/extralit/schema/` +- Schema definitions are handled in `extralit/src/extralit/schema/` - The system uses Pandera for schema validation -- References are managed through `argilla/src/extralit/schema/references/` +- References are managed through `extralit/src/extralit/schema/references/` ### Data Aggregation and Normalization Architecture @@ -242,7 +241,7 @@ Extralit uses a normalized database approach for storing and presenting extracte ## Common Development Tasks ### Environment Configuration -- Development environment variables are in `argilla-server/.env.dev` +- Development environment variables are in `extralit-server/.env.dev` - Test environment uses temporary databases - Database paths use `${HOME}/.extralit/` pattern in development @@ -259,7 +258,7 @@ Extralit uses a normalized database approach for storing and presenting extracte 1. Update the model in `models/database.py` 2. Create a migration using Alembic: ```bash - cd argilla-server + cd extralit-server pdm run revision -m "description of change" ``` 3. Update related schemas and validators @@ -267,9 +266,9 @@ Extralit uses a normalized database approach for storing and presenting extracte #### Database Migration Guidelines - Database migrations are automatically configured via environment variables: - - Dev: `${HOME}/.extralit/argilla-dev.db` + - Dev: `${HOME}/.extralit/extralit-dev.db` - Test: Uses temporary databases managed by pytest -- Use `pdm run alembic -c src/argilla_server/alembic.ini check` to verify migration state +- Use `pdm run alembic -c src/extralit_server/alembic.ini check` to verify migration state - Always test both upgrade and downgrade paths ### Adding frontend functionality diff --git a/extralit/pdm.lock b/extralit/pdm.lock index 8f4f88d1e..37cb4cf1a 100644 --- a/extralit/pdm.lock +++ b/extralit/pdm.lock @@ -5,7 +5,7 @@ groups = ["default", "dev"] strategy = [] lock_version = "4.5.0" -content_hash = "sha256:1373f68e4d0c2648761207a076b3a6a7d954e60c39beeca0fe98ff955d3ae5ab" +content_hash = "sha256:70ce069646b7109d8dc4217449d7053c16b14700891f5b9902207ac35ba7943c" [[metadata.targets]] requires_python = ">=3.9.2,<3.14" @@ -4070,6 +4070,18 @@ files = [ {file = "pytest-8.4.1.tar.gz", hash = "sha256:7c67fd69174877359ed9371ec3af8a3d2b04741818c51e5e99cc1742251fa93c"}, ] +[[package]] +name = "pytest-asyncio" +version = "0.21.2" +summary = "" +dependencies = [ + "pytest", +] +files = [ + {file = "pytest_asyncio-0.21.2-py3-none-any.whl", hash = "sha256:ab664c88bb7998f711d8039cacd4884da6430886ae8bbd4eded552ed2004f16b"}, + {file = "pytest_asyncio-0.21.2.tar.gz", hash = "sha256:d67738fc232b94b326b9d060750beb16e0074210b98dd8b58a5239fa2a154f45"}, +] + [[package]] name = "pytest-cov" version = "6.1.1" diff --git a/extralit/pyproject.toml b/extralit/pyproject.toml index 2eb133eb7..947f0ee31 100644 --- a/extralit/pyproject.toml +++ b/extralit/pyproject.toml @@ -101,7 +101,7 @@ use-venv = true [tool.pdm.version] source = "file" -path = "src/argilla/_version.py" +path = "src/extralit/_version.py" [tool.pdm.dev-dependencies] dev = [ diff --git a/extralit/tests/unit/api/http/test_http_client.py b/extralit/tests/unit/api/http/test_http_client.py index 26e301ec4..ca26b14b1 100644 --- a/extralit/tests/unit/api/http/test_http_client.py +++ b/extralit/tests/unit/api/http/test_http_client.py @@ -68,7 +68,7 @@ def test_create_client_with_extra_cookies(self): @pytest.mark.parametrize("retries", [0, 1, 5, 10]) def test_create_client_with_various_retries(self, retries): - with patch("argilla._api._client.create_http_client") as mock_create_http_client: + with patch("extralit._api._client.create_http_client") as mock_create_http_client: mock_http_client = MagicMock() mock_create_http_client.return_value = mock_http_client diff --git a/extralit/tests/unit/api/test_workspace_documents_api.py b/extralit/tests/unit/api/test_workspace_documents_api.py index 8d02d37c5..b8e1ca0c5 100644 --- a/extralit/tests/unit/api/test_workspace_documents_api.py +++ b/extralit/tests/unit/api/test_workspace_documents_api.py @@ -75,7 +75,7 @@ class TestWorkspacesAPIDocuments: def test_add_document_delegates_to_documents_api(self, workspace_api, sample_document_model): """Test that add_document delegates to DocumentsAPI.create().""" - with patch("argilla._api._documents.DocumentsAPI") as mock_documents_api_class: + with patch("extralit._api._documents.DocumentsAPI") as mock_documents_api_class: # Mock the DocumentsAPI instance and its create method mock_documents_api = MagicMock() mock_documents_api_class.return_value = mock_documents_api @@ -95,7 +95,7 @@ def test_add_document_delegates_to_documents_api(self, workspace_api, sample_doc def test_get_documents_delegates_to_documents_api(self, workspace_api, sample_workspace_id, sample_document_model): """Test that get_documents delegates to DocumentsAPI.list().""" - with patch("argilla._api._documents.DocumentsAPI") as mock_documents_api_class: + with patch("extralit._api._documents.DocumentsAPI") as mock_documents_api_class: # Mock the DocumentsAPI instance and its list method mock_documents_api = MagicMock() mock_documents_api_class.return_value = mock_documents_api diff --git a/extralit/tests/unit/conftest.py b/extralit/tests/unit/conftest.py index df455c5b8..fe4856e0e 100644 --- a/extralit/tests/unit/conftest.py +++ b/extralit/tests/unit/conftest.py @@ -20,7 +20,7 @@ @pytest.fixture(autouse=True) def mock_validate_connection(): - with patch("argilla._api._client.APIClient._validate_connection") as mocked_validator: + with patch("extralit._api._client.APIClient._validate_connection") as mocked_validator: yield mocked_validator From 4b4f5d415fe8bd31fc2a14870d447d9f168778ee Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 6 Aug 2025 07:16:16 +0000 Subject: [PATCH 05/23] =?UTF-8?q?Complete=20directory=20rename:=20argilla-?= =?UTF-8?q?server=20=E2=86=92=20extralit-server=20and=20update=20all=20ref?= =?UTF-8?q?erences?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: dawn-tran <104935595+dawn-tran@users.noreply.github.com> --- .github/workflows/README.md | 8 ++-- .github/workflows/copilot-setup-steps.yml | 8 ++-- ...> extralit-server.build-docker-images.yml} | 30 +++++++------- ...argilla-server.yml => extralit-server.yml} | 16 ++++---- .github/workflows/extralit.yml | 4 +- .github/workflows/scorecard.yml | 2 +- Tiltfile | 40 +++++++++---------- ....yaml => extralit-server-certificate.yaml} | 4 +- ...t.yaml => extralit-server-deployment.yaml} | 14 +++---- ...rver-hpa.yaml => extralit-server-hpa.yaml} | 4 +- ...ress.yaml => extralit-server-ingress.yaml} | 6 +-- ...vice.yaml => extralit-server-service.yaml} | 6 +-- {argilla-server => extralit-server}/.env.dev | 0 {argilla-server => extralit-server}/.env.test | 0 .../.gitignore | 0 .../CHANGELOG.md | 0 {argilla-server => extralit-server}/LICENSE | 0 .../LICENSE_HEADER | 0 {argilla-server => extralit-server}/README.md | 2 +- .../docker/extralit-hf-spaces}/Dockerfile | 0 .../docker/extralit-hf-spaces}/Procfile | 0 .../docker/extralit-hf-spaces}/README.md | 0 .../config/elasticsearch.yml | 0 .../extralit-hf-spaces}/requirements.txt | 0 .../extralit-hf-spaces}/scripts/start.sh | 0 .../docker/server/Dockerfile | 0 .../docker/server/README.md | 0 .../server/dev.extralit_server.dockerfile | 0 .../server/scripts/start_extralit_server.sh | 0 {argilla-server => extralit-server}/pdm.lock | 0 .../pyproject.toml | 0 .../src/extralit_server/__init__.py | 0 .../src/extralit_server/__main__.py | 0 .../src/extralit_server/_app.py | 0 .../src/extralit_server/_version.py | 0 .../src/extralit_server/alembic.ini | 0 .../src/extralit_server/alembic/env.py | 0 .../extralit_server/alembic/script.py.mako | 0 ...9ee58fbb4_create_workspaces_users_table.py | 0 ...913727_fix_suggestions_type_enum_values.py | 0 ...4d74_add_status_column_to_records_table.py | 0 .../3a8e2f9b5dea_create_questions_table.py | 0 .../3fc3c0839959_create_suggestions_table.py | 0 ...37_add_metadata_column_to_records_table.py | 0 ...d_distribution_column_to_datasets_table.py | 0 .../580a6553186f_add_datasets_users_table.py | 0 ...0_add_metadata_column_to_datasets_table.py | 0 .../6ed1b8bf8e08_create_webhooks_table.py | 0 .../74694870197c_create_users_table.py | 0 ...dded_document_model_and_updated_record_.py | 0 ...0ab5b42d9_create_vectors_settings_table.py | 0 ...f8b57a_create_metadata_properties_table.py | 0 ...d6b33203390_create_import_history_table.py | 0 .../82a5a88a3fa5_create_workspaces_table.py | 0 ..._add_last_activity_at_to_datasets_table.py | 0 .../8be56284dac0_create_records_table.py | 0 .../8c574ada5e5f_update_enum_columns.py | 0 .../ae5522b4c674_create_fields_table.py | 0 ...extra_metadata_column_to_datasets_table.py | 0 .../b9099dc08489_create_datasets_table.py | 0 .../bda6fe24314e_create_vectors_table.py | 0 ...change_suggestions_score_column_to_json.py | 0 ...67_update_responses_user_id_foreign_key.py | 0 .../e402e9d9245e_create_responses_table.py | 0 .../src/extralit_server/api/__init__.py | 0 .../extralit_server/api/errors/__init__.py | 0 .../extralit_server/api/errors/v1/__init__.py | 0 .../api/errors/v1/exception_handlers.py | 0 .../extralit_server/api/handlers/__init__.py | 0 .../api/handlers/v1/__init__.py | 0 .../api/handlers/v1/authentication.py | 0 .../api/handlers/v1/datasets/__init__.py | 0 .../api/handlers/v1/datasets/datasets.py | 0 .../api/handlers/v1/datasets/questions.py | 0 .../api/handlers/v1/datasets/records.py | 0 .../api/handlers/v1/datasets/records_bulk.py | 0 .../api/handlers/v1/documents.py | 0 .../extralit_server/api/handlers/v1/fields.py | 0 .../extralit_server/api/handlers/v1/files.py | 0 .../api/handlers/v1/imports.py | 0 .../extralit_server/api/handlers/v1/info.py | 0 .../extralit_server/api/handlers/v1/jobs.py | 0 .../api/handlers/v1/metadata_properties.py | 0 .../extralit_server/api/handlers/v1/models.py | 0 .../extralit_server/api/handlers/v1/oauth2.py | 0 .../api/handlers/v1/questions.py | 0 .../api/handlers/v1/records.py | 0 .../api/handlers/v1/responses.py | 0 .../api/handlers/v1/settings.py | 0 .../api/handlers/v1/suggestions.py | 0 .../extralit_server/api/handlers/v1/users.py | 0 .../api/handlers/v1/vectors_settings.py | 0 .../api/handlers/v1/webhooks.py | 0 .../api/handlers/v1/workspaces.py | 0 .../extralit_server/api/policies/__init__.py | 0 .../api/policies/v1/__init__.py | 0 .../api/policies/v1/commons.py | 0 .../api/policies/v1/dataset_policy.py | 0 .../api/policies/v1/document_policy.py | 0 .../api/policies/v1/field_policy.py | 0 .../api/policies/v1/file_policy.py | 0 .../api/policies/v1/job_policy.py | 0 .../policies/v1/metadata_property_policy.py | 0 .../api/policies/v1/question_policy.py | 0 .../api/policies/v1/record_policy.py | 0 .../api/policies/v1/response_policy.py | 0 .../api/policies/v1/suggestion_policy.py | 0 .../api/policies/v1/user_policy.py | 0 .../api/policies/v1/vector_settings_policy.py | 0 .../api/policies/v1/webhook_policy.py | 0 .../api/policies/v1/workspace_policy.py | 0 .../api/policies/v1/workspace_user_policy.py | 0 .../src/extralit_server/api/routes.py | 0 .../extralit_server/api/schemas/__init__.py | 0 .../src/extralit_server/api/schemas/base.py | 0 .../api/schemas/v1/__init__.py | 0 .../extralit_server/api/schemas/v1/chat.py | 0 .../extralit_server/api/schemas/v1/commons.py | 0 .../api/schemas/v1/datasets.py | 0 .../api/schemas/v1/documents.py | 0 .../extralit_server/api/schemas/v1/fields.py | 0 .../extralit_server/api/schemas/v1/files.py | 0 .../extralit_server/api/schemas/v1/imports.py | 0 .../extralit_server/api/schemas/v1/info.py | 0 .../extralit_server/api/schemas/v1/jobs.py | 0 .../api/schemas/v1/metadata_properties.py | 0 .../extralit_server/api/schemas/v1/oauth2.py | 0 .../api/schemas/v1/questions.py | 0 .../extralit_server/api/schemas/v1/records.py | 0 .../api/schemas/v1/records_bulk.py | 0 .../api/schemas/v1/responses.py | 0 .../api/schemas/v1/settings.py | 0 .../api/schemas/v1/suggestions.py | 0 .../extralit_server/api/schemas/v1/users.py | 0 .../api/schemas/v1/vector_settings.py | 0 .../extralit_server/api/schemas/v1/vectors.py | 0 .../api/schemas/v1/webhooks.py | 0 .../api/schemas/v1/workspaces.py | 0 .../src/extralit_server/bulk/__init__.py | 0 .../src/extralit_server/bulk/records_bulk.py | 0 .../src/extralit_server/cli/__init__.py | 0 .../src/extralit_server/cli/__main__.py | 0 .../extralit_server/cli/database/__init__.py | 0 .../extralit_server/cli/database/__main__.py | 0 .../extralit_server/cli/database/migrate.py | 0 .../extralit_server/cli/database/revisions.py | 0 .../cli/database/users/__init__.py | 0 .../cli/database/users/__main__.py | 0 .../cli/database/users/create.py | 0 .../cli/database/users/create_default.py | 0 .../cli/database/users/migrate.py | 0 .../cli/database/users/update.py | 0 .../cli/database/users/utils.py | 0 .../src/extralit_server/cli/database/utils.py | 0 .../src/extralit_server/cli/rich.py | 0 .../cli/search_engine/__init__.py | 0 .../cli/search_engine/__main__.py | 0 .../cli/search_engine/reindex.py | 0 .../src/extralit_server/cli/start.py | 0 .../src/extralit_server/cli/worker.py | 0 .../src/extralit_server/constants.py | 0 .../src/extralit_server/contexts/__init__.py | 0 .../src/extralit_server/contexts/accounts.py | 0 .../src/extralit_server/contexts/datasets.py | 0 .../extralit_server/contexts/distribution.py | 0 .../src/extralit_server/contexts/files.py | 0 .../src/extralit_server/contexts/hub.py | 0 .../contexts/hub_templates/README.md.jinja2 | 0 .../src/extralit_server/contexts/imports.py | 0 .../src/extralit_server/contexts/info.py | 0 .../src/extralit_server/contexts/questions.py | 0 .../src/extralit_server/contexts/records.py | 0 .../src/extralit_server/contexts/search.py | 0 .../src/extralit_server/contexts/settings.py | 0 .../src/extralit_server/contexts/webhooks.py | 0 .../src/extralit_server/database.py | 0 .../src/extralit_server/enums.py | 0 .../src/extralit_server/errors/__init__.py | 0 .../src/extralit_server/errors/base_errors.py | 0 .../extralit_server/errors/error_handler.py | 0 .../extralit_server/errors/future/__init__.py | 0 .../errors/future/base_errors.py | 0 .../src/extralit_server/helpers.py | 0 .../extralit_server/integrations/__init__.py | 0 .../integrations/huggingface/__init__.py | 0 .../integrations/huggingface/spaces.py | 0 .../src/extralit_server/jobs/__init__.py | 0 .../src/extralit_server/jobs/dataset_jobs.py | 0 .../src/extralit_server/jobs/document_jobs.py | 0 .../src/extralit_server/jobs/hub_jobs.py | 0 .../src/extralit_server/jobs/import_jobs.py | 0 .../src/extralit_server/jobs/queues.py | 0 .../src/extralit_server/jobs/webhook_jobs.py | 0 .../src/extralit_server/logging.py | 0 .../src/extralit_server/models/__init__.py | 0 .../src/extralit_server/models/base.py | 0 .../src/extralit_server/models/database.py | 0 .../models/metadata_properties.py | 0 .../src/extralit_server/models/mixins.py | 0 .../src/extralit_server/models/suggestions.py | 0 .../extralit_server/search_engine/__init__.py | 0 .../src/extralit_server/search_engine/base.py | 0 .../extralit_server/search_engine/commons.py | 0 .../search_engine/elasticsearch.py | 0 .../search_engine/opensearch.py | 0 .../src/extralit_server/security/__init__.py | 0 .../security/authentication/__init__.py | 0 .../security/authentication/db/__init__.py | 0 .../authentication/db/api_key_backend.py | 0 .../authentication/db/bearer_token_backend.py | 0 .../security/authentication/jwt.py | 0 .../authentication/oauth2/__init__.py | 0 .../authentication/oauth2/_backends.py | 0 .../authentication/oauth2/auth_backend.py | 0 .../authentication/oauth2/provider.py | 0 .../authentication/oauth2/settings.py | 0 .../security/authentication/provider.py | 0 .../security/authentication/userinfo.py | 0 .../src/extralit_server/security/settings.py | 0 .../src/extralit_server/settings.py | 0 .../src/extralit_server/static_rewrite.py | 0 .../src/extralit_server/telemetry/__init__.py | 0 .../src/extralit_server/telemetry/_client.py | 0 .../src/extralit_server/telemetry/_helpers.py | 0 .../src/extralit_server/use_cases/__init__.py | 0 .../use_cases/responses/__init__.py | 0 .../responses/upsert_responses_in_bulk.py | 0 .../src/extralit_server/utils.py | 0 .../src/extralit_server/utils/__init__.py | 0 .../src/extralit_server/utils/_fastapi.py | 0 .../src/extralit_server/utils/params.py | 0 .../src/extralit_server/utils/str_enum.py | 0 .../extralit_server/validators/__init__.py | 0 .../extralit_server/validators/datasets.py | 0 .../extralit_server/validators/questions.py | 0 .../src/extralit_server/validators/records.py | 0 .../validators/response_values.py | 0 .../extralit_server/validators/responses.py | 0 .../extralit_server/validators/suggestions.py | 0 .../src/extralit_server/validators/users.py | 0 .../src/extralit_server/validators/vectors.py | 0 .../extralit_server/validators/webhooks.py | 0 .../src/extralit_server/webhooks/__init__.py | 0 .../extralit_server/webhooks/v1/__init__.py | 0 .../extralit_server/webhooks/v1/commons.py | 0 .../extralit_server/webhooks/v1/datasets.py | 0 .../src/extralit_server/webhooks/v1/enums.py | 0 .../src/extralit_server/webhooks/v1/event.py | 0 .../src/extralit_server/webhooks/v1/ping.py | 0 .../extralit_server/webhooks/v1/records.py | 0 .../extralit_server/webhooks/v1/responses.py | 0 .../extralit_server/webhooks/v1/schemas.py | 0 .../tests/__init__.py | 0 .../tests/conftest.py | 0 .../tests/database.py | 0 .../tests/factories.py | 0 .../tests/unit/__init__.py | 0 .../tests/unit/api/__init__.py | 0 .../tests/unit/api/handlers/v1/__init__.py | 0 .../handlers/v1/authentication/__init__.py | 0 .../v1/authentication/test_create_token.py | 0 .../unit/api/handlers/v1/datasets/__init__.py | 0 .../fields/test_create_dataset_field.py | 0 .../fields/test_list_dataset_fields.py | 0 .../v1/datasets/questions/__init__.py | 0 .../questions/test_create_dataset_question.py | 0 .../questions/test_list_dataset_questions.py | 0 .../handlers/v1/datasets/records/__init__.py | 0 .../datasets/records/records_bulk/__init__.py | 0 .../test_create_dataset_records_bulk.py | 0 .../records_bulk/test_dataset_records_bulk.py | 0 ...est_dataset_records_bulk_with_responses.py | 0 ...t_dataset_records_bulk_with_suggestions.py | 0 .../test_dataset_records_bulk_with_vectors.py | 0 .../test_update_dataset_records_in_bulk.py | 0 .../test_upsert_dataset_records_bulk.py | 0 .../records/test_delete_dataset_records.py | 0 .../v1/datasets/test_create_dataset.py | 0 .../v1/datasets/test_create_dataset_field.py | 0 ...test_create_dataset_metadata_properties.py | 0 .../datasets/test_create_dataset_question.py | 0 .../test_create_dataset_vector_settings.py | 0 .../v1/datasets/test_delete_dataset.py | 0 .../v1/datasets/test_export_dataset_to_hub.py | 0 .../v1/datasets/test_get_dataset_progress.py | 0 .../test_get_dataset_users_progress.py | 0 .../test_list_current_user_datasets.py | 0 ...aset_records_search_suggestions_options.py | 0 .../v1/datasets/test_publish_dataset.py | 0 .../handlers/v1/datasets/test_questions.py | 0 ...est_search_current_user_dataset_records.py | 0 .../datasets/test_search_dataset_records.py | 0 .../v1/datasets/test_update_dataset.py | 0 .../handlers/v1/fields/test_update_field.py | 0 .../unit/api/handlers/v1/info/__init__.py | 0 .../api/handlers/v1/info/test_get_status.py | 0 .../api/handlers/v1/info/test_get_version.py | 0 .../api/handlers/v1/questions/__init__.py | 0 .../v1/questions/test_update_question.py | 0 .../unit/api/handlers/v1/records/__init__.py | 0 .../v1/records/test_create_record_response.py | 0 .../handlers/v1/records/test_delete_record.py | 0 .../handlers/v1/records/test_update_record.py | 0 .../v1/records/test_upsert_suggestion.py | 0 .../api/handlers/v1/responses/__init__.py | 0 ...test_create_current_user_responses_bulk.py | 0 .../v1/responses/test_delete_response.py | 0 .../v1/responses/test_update_response.py | 0 .../unit/api/handlers/v1/settings/__init__.py | 0 .../handlers/v1/settings/test_get_settings.py | 0 .../api/handlers/v1/test_bulk_documents.py | 0 .../unit/api/handlers/v1/test_datasets.py | 0 .../unit/api/handlers/v1/test_documents.py | 0 .../tests/unit/api/handlers/v1/test_fields.py | 0 .../tests/unit/api/handlers/v1/test_files.py | 0 .../unit/api/handlers/v1/test_imports.py | 0 .../handlers/v1/test_list_dataset_records.py | 0 .../handlers/v1/test_metadata_properties.py | 0 .../tests/unit/api/handlers/v1/test_models.py | 0 .../tests/unit/api/handlers/v1/test_oauth2.py | 0 .../unit/api/handlers/v1/test_questions.py | 0 .../unit/api/handlers/v1/test_records.py | 0 .../unit/api/handlers/v1/test_responses.py | 0 .../unit/api/handlers/v1/test_suggestions.py | 0 .../tests/unit/api/handlers/v1/test_users.py | 0 .../api/handlers/v1/test_vectors_settings.py | 0 .../unit/api/handlers/v1/test_workspaces.py | 0 .../unit/api/handlers/v1/users/__init__.py | 0 .../api/handlers/v1/users/test_create_user.py | 0 .../api/handlers/v1/users/test_delete_user.py | 0 .../v1/users/test_get_current_user.py | 0 .../api/handlers/v1/users/test_get_user.py | 0 .../api/handlers/v1/users/test_list_users.py | 0 .../api/handlers/v1/users/test_update_user.py | 0 .../unit/api/handlers/v1/webhooks/__init__.py | 0 .../v1/webhooks/test_create_webhook.py | 0 .../v1/webhooks/test_delete_webhook.py | 0 .../v1/webhooks/test_list_webhooks.py | 0 .../handlers/v1/webhooks/test_ping_webhook.py | 0 .../v1/webhooks/test_update_webhook.py | 0 .../api/handlers/v1/workspaces/__init__.py | 0 .../v1/workspaces/test_create_workspace.py | 0 .../workspaces/test_create_workspace_user.py | 0 .../workspaces/test_delete_workspace_user.py | 0 .../workspaces/test_list_workspace_users.py | 0 .../tests/unit/api/schemas/__init__.py | 0 .../schemas/v1/records/test_record_create.py | 0 .../schemas/v1/records/test_record_upsert.py | 0 .../responses/test_response_value_create.py | 0 .../tests/unit/api/schemas/v1/test_commons.py | 0 .../tests/unit/api/test_docs.py | 0 .../tests/unit/api/test_not_found_routes.py | 0 .../tests/unit/api/v0/test_workspaces.py | 0 .../tests/unit/cli/__init__.py | 0 .../tests/unit/cli/conftest.py | 0 .../tests/unit/cli/database/__init__.py | 0 .../tests/unit/cli/database/users/__init__.py | 0 .../tests/unit/cli/database/users/conftest.py | 0 .../unit/cli/database/users/test_create.py | 0 .../cli/database/users/test_create_default.py | 0 .../unit/cli/database/users/test_migrate.py | 0 .../unit/cli/database/users/test_update.py | 0 .../database/users/test_user_files/users.yml | 0 .../test_user_files/users_invalid_user.yml | 0 .../users_invalid_workspace.yml | 0 .../users/test_user_files/users_one.yml | 0 .../tests/unit/cli/search_engine/__init__.py | 0 .../tests/unit/cli/search_engine/conftest.py | 0 .../unit/cli/search_engine/test_reindex.py | 0 .../tests/unit/cli/test_start.py | 0 .../tests/unit/commons/__init__.py | 0 .../tests/unit/commons/test_settings.py | 0 .../tests/unit/commons/test_telemetry.py | 0 .../tests/unit/conftest.py | 0 .../tests/unit/contexts/__init__.py | 0 .../unit/contexts/hub/test_hub_dataset.py | 0 .../contexts/hub/test_hub_dataset_exporter.py | 0 .../tests/unit/contexts/search/__init__.py | 0 .../test_search_records_query_validator.py | 0 .../tests/unit/contexts/test_imports.py | 0 .../tests/unit/daos/test_datasets.py | 0 .../models/test_dataset_user_model.py | 0 .../unit/database/models/test_field_model.py | 0 .../tests/unit/errors/__init__.py | 0 .../tests/unit/errors/test_errors.py | 0 .../tests/unit/jobs/__init__.py | 0 .../tests/unit/jobs/test_document_jobs.py | 0 .../tests/unit/jobs/webhook_jobs/__init__.py | 0 .../test_enqueue_notify_events.py | 0 .../tests/unit/models/__init__.py | 0 .../tests/unit/models/test_import_history.py | 0 .../tests/unit/models/test_webhook.py | 0 .../tests/unit/search_engine/__init__.py | 0 .../tests/unit/search_engine/conftest.py | 0 .../tests/unit/search_engine/test_commons.py | 0 .../unit/search_engine/test_elastisearch.py | 0 .../unit/search_engine/test_opensearch.py | 0 .../tests/unit/security/__init__.py | 0 .../unit/security/authentication/__init__.py | 0 .../authentication/oauth2/__init__.py | 0 .../oauth2/backends/__init__.py | 0 .../oauth2/backends/test_keycloack_backend.py | 0 .../authentication/oauth2/test_settings.py | 0 .../security/authentication/test_userinfo.py | 0 .../tests/unit/security/test_model.py | 0 .../tests/unit/security/test_settings.py | 0 .../tests/unit/telemetry/__init__.py | 0 .../unit/telemetry/test_telemetry_helpers.py | 0 .../tests/unit/test_api_telemetry.py | 0 .../tests/unit/test_app.py | 0 .../tests/unit/test_database.py | 0 .../tests/unit/test_logging.py | 0 .../tests/unit/test_utils.py | 0 .../tests/unit/utils/__init__.py | 0 .../tests/unit/utils/test_fastapi_utils.py | 0 .../tests/unit/validators/__init__.py | 0 .../unit/validators/test_records_bulk.py | 0 .../tests/unit/webhooks/__init__.py | 0 .../tests/unit/webhooks/v1/__init__.py | 0 .../webhooks/v1/test_notify_ping_event.py | 0 420 files changed, 72 insertions(+), 72 deletions(-) rename .github/workflows/{argilla-server.build-docker-images.yml => extralit-server.build-docker-images.yml} (85%) rename .github/workflows/{argilla-server.yml => extralit-server.yml} (94%) rename examples/deployments/k8s/{argilla-server-certificate.yaml => extralit-server-certificate.yaml} (79%) rename examples/deployments/k8s/{argilla-server-deployment.yaml => extralit-server-deployment.yaml} (93%) rename examples/deployments/k8s/{argilla-server-hpa.yaml => extralit-server-hpa.yaml} (82%) rename examples/deployments/k8s/{argilla-server-ingress.yaml => extralit-server-ingress.yaml} (77%) rename examples/deployments/k8s/{argilla-server-service.yaml => extralit-server-service.yaml} (58%) rename {argilla-server => extralit-server}/.env.dev (100%) rename {argilla-server => extralit-server}/.env.test (100%) rename {argilla-server => extralit-server}/.gitignore (100%) rename {argilla-server => extralit-server}/CHANGELOG.md (100%) rename {argilla-server => extralit-server}/LICENSE (100%) rename {argilla-server => extralit-server}/LICENSE_HEADER (100%) rename {argilla-server => extralit-server}/README.md (99%) rename {argilla-server/docker/argilla-hf-spaces => extralit-server/docker/extralit-hf-spaces}/Dockerfile (100%) rename {argilla-server/docker/argilla-hf-spaces => extralit-server/docker/extralit-hf-spaces}/Procfile (100%) rename {argilla-server/docker/argilla-hf-spaces => extralit-server/docker/extralit-hf-spaces}/README.md (100%) rename {argilla-server/docker/argilla-hf-spaces => extralit-server/docker/extralit-hf-spaces}/config/elasticsearch.yml (100%) rename {argilla-server/docker/argilla-hf-spaces => extralit-server/docker/extralit-hf-spaces}/requirements.txt (100%) rename {argilla-server/docker/argilla-hf-spaces => extralit-server/docker/extralit-hf-spaces}/scripts/start.sh (100%) rename {argilla-server => extralit-server}/docker/server/Dockerfile (100%) rename {argilla-server => extralit-server}/docker/server/README.md (100%) rename argilla-server/docker/server/dev.argilla_server.dockerfile => extralit-server/docker/server/dev.extralit_server.dockerfile (100%) rename argilla-server/docker/server/scripts/start_argilla_server.sh => extralit-server/docker/server/scripts/start_extralit_server.sh (100%) rename {argilla-server => extralit-server}/pdm.lock (100%) rename {argilla-server => extralit-server}/pyproject.toml (100%) rename {argilla-server => extralit-server}/src/extralit_server/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/__main__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/_app.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/_version.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic.ini (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/env.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/script.py.mako (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/237f7c674d74_add_status_column_to_records_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/3fc3c0839959_create_suggestions_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/45a12f74448b_add_distribution_column_to_datasets_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/580a6553186f_add_datasets_users_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/660d6c6b3360_add_metadata_column_to_datasets_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/6ed1b8bf8e08_create_webhooks_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/74694870197c_create_users_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/7552df94427a_added_document_model_and_updated_record_.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/7d6b33203390_create_import_history_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/8be56284dac0_create_records_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/8c574ada5e5f_update_enum_columns.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/ae5522b4c674_create_fields_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/b9099dc08489_create_datasets_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/bda6fe24314e_create_vectors_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/d00f819ccc67_update_responses_user_id_foreign_key.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/alembic/versions/e402e9d9245e_create_responses_table.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/errors/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/errors/v1/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/errors/v1/exception_handlers.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/authentication.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/datasets/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/datasets/datasets.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/datasets/questions.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/datasets/records.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/datasets/records_bulk.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/documents.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/fields.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/files.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/imports.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/info.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/jobs.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/metadata_properties.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/models.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/oauth2.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/questions.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/records.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/responses.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/settings.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/suggestions.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/users.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/vectors_settings.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/webhooks.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/handlers/v1/workspaces.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/commons.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/dataset_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/document_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/field_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/file_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/job_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/metadata_property_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/question_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/record_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/response_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/suggestion_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/user_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/vector_settings_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/webhook_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/workspace_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/policies/v1/workspace_user_policy.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/routes.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/base.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/chat.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/commons.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/datasets.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/documents.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/fields.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/files.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/imports.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/info.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/jobs.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/metadata_properties.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/oauth2.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/questions.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/records.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/records_bulk.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/responses.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/settings.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/suggestions.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/users.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/vector_settings.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/vectors.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/webhooks.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/api/schemas/v1/workspaces.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/bulk/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/bulk/records_bulk.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/__main__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/__main__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/migrate.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/revisions.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/users/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/users/__main__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/users/create.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/users/create_default.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/users/migrate.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/users/update.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/users/utils.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/database/utils.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/rich.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/search_engine/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/search_engine/__main__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/search_engine/reindex.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/start.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/cli/worker.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/constants.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/accounts.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/datasets.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/distribution.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/files.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/hub.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/hub_templates/README.md.jinja2 (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/imports.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/info.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/questions.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/records.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/search.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/settings.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/contexts/webhooks.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/database.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/enums.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/errors/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/errors/base_errors.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/errors/error_handler.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/errors/future/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/errors/future/base_errors.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/helpers.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/integrations/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/integrations/huggingface/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/integrations/huggingface/spaces.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/jobs/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/jobs/dataset_jobs.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/jobs/document_jobs.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/jobs/hub_jobs.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/jobs/import_jobs.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/jobs/queues.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/jobs/webhook_jobs.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/logging.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/models/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/models/base.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/models/database.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/models/metadata_properties.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/models/mixins.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/models/suggestions.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/search_engine/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/search_engine/base.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/search_engine/commons.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/search_engine/elasticsearch.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/search_engine/opensearch.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/db/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/db/api_key_backend.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/db/bearer_token_backend.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/jwt.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/oauth2/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/oauth2/_backends.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/oauth2/auth_backend.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/oauth2/provider.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/oauth2/settings.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/provider.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/authentication/userinfo.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/security/settings.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/settings.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/static_rewrite.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/telemetry/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/telemetry/_client.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/telemetry/_helpers.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/use_cases/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/use_cases/responses/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/use_cases/responses/upsert_responses_in_bulk.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/utils.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/utils/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/utils/_fastapi.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/utils/params.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/utils/str_enum.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/validators/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/validators/datasets.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/validators/questions.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/validators/records.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/validators/response_values.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/validators/responses.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/validators/suggestions.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/validators/users.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/validators/vectors.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/validators/webhooks.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/webhooks/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/webhooks/v1/__init__.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/webhooks/v1/commons.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/webhooks/v1/datasets.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/webhooks/v1/enums.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/webhooks/v1/event.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/webhooks/v1/ping.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/webhooks/v1/records.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/webhooks/v1/responses.py (100%) rename {argilla-server => extralit-server}/src/extralit_server/webhooks/v1/schemas.py (100%) rename {argilla-server => extralit-server}/tests/__init__.py (100%) rename {argilla-server => extralit-server}/tests/conftest.py (100%) rename {argilla-server => extralit-server}/tests/database.py (100%) rename {argilla-server => extralit-server}/tests/factories.py (100%) rename {argilla-server => extralit-server}/tests/unit/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/authentication/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/authentication/test_create_token.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/fields/test_create_dataset_field.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/fields/test_list_dataset_fields.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/questions/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/questions/test_create_dataset_question.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/questions/test_list_dataset_questions.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/records/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/records/records_bulk/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_update_dataset_records_in_bulk.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_upsert_dataset_records_bulk.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/records/test_delete_dataset_records.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_create_dataset.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_create_dataset_field.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_create_dataset_metadata_properties.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_create_dataset_question.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_create_dataset_vector_settings.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_delete_dataset.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_list_current_user_datasets.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_list_dataset_records_search_suggestions_options.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_publish_dataset.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_questions.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_search_current_user_dataset_records.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_search_dataset_records.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/datasets/test_update_dataset.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/fields/test_update_field.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/info/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/info/test_get_status.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/info/test_get_version.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/questions/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/questions/test_update_question.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/records/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/records/test_create_record_response.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/records/test_delete_record.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/records/test_update_record.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/responses/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/responses/test_delete_response.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/responses/test_update_response.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/settings/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/settings/test_get_settings.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_bulk_documents.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_datasets.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_documents.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_fields.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_files.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_imports.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_list_dataset_records.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_metadata_properties.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_models.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_oauth2.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_questions.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_records.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_responses.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_suggestions.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_users.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_vectors_settings.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/test_workspaces.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/users/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/users/test_create_user.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/users/test_delete_user.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/users/test_get_current_user.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/users/test_get_user.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/users/test_list_users.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/users/test_update_user.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/webhooks/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/webhooks/test_create_webhook.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/webhooks/test_delete_webhook.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/webhooks/test_list_webhooks.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/webhooks/test_update_webhook.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/workspaces/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/workspaces/test_create_workspace.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/workspaces/test_create_workspace_user.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/workspaces/test_delete_workspace_user.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/handlers/v1/workspaces/test_list_workspace_users.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/schemas/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/schemas/v1/records/test_record_create.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/schemas/v1/records/test_record_upsert.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/schemas/v1/responses/test_response_value_create.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/schemas/v1/test_commons.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/test_docs.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/test_not_found_routes.py (100%) rename {argilla-server => extralit-server}/tests/unit/api/v0/test_workspaces.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/conftest.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/database/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/database/users/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/database/users/conftest.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/database/users/test_create.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/database/users/test_create_default.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/database/users/test_migrate.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/database/users/test_update.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/database/users/test_user_files/users.yml (100%) rename {argilla-server => extralit-server}/tests/unit/cli/database/users/test_user_files/users_invalid_user.yml (100%) rename {argilla-server => extralit-server}/tests/unit/cli/database/users/test_user_files/users_invalid_workspace.yml (100%) rename {argilla-server => extralit-server}/tests/unit/cli/database/users/test_user_files/users_one.yml (100%) rename {argilla-server => extralit-server}/tests/unit/cli/search_engine/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/search_engine/conftest.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/search_engine/test_reindex.py (100%) rename {argilla-server => extralit-server}/tests/unit/cli/test_start.py (100%) rename {argilla-server => extralit-server}/tests/unit/commons/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/commons/test_settings.py (100%) rename {argilla-server => extralit-server}/tests/unit/commons/test_telemetry.py (100%) rename {argilla-server => extralit-server}/tests/unit/conftest.py (100%) rename {argilla-server => extralit-server}/tests/unit/contexts/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/contexts/hub/test_hub_dataset.py (100%) rename {argilla-server => extralit-server}/tests/unit/contexts/hub/test_hub_dataset_exporter.py (100%) rename {argilla-server => extralit-server}/tests/unit/contexts/search/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/contexts/search/test_search_records_query_validator.py (100%) rename {argilla-server => extralit-server}/tests/unit/contexts/test_imports.py (100%) rename {argilla-server => extralit-server}/tests/unit/daos/test_datasets.py (100%) rename {argilla-server => extralit-server}/tests/unit/database/models/test_dataset_user_model.py (100%) rename {argilla-server => extralit-server}/tests/unit/database/models/test_field_model.py (100%) rename {argilla-server => extralit-server}/tests/unit/errors/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/errors/test_errors.py (100%) rename {argilla-server => extralit-server}/tests/unit/jobs/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/jobs/test_document_jobs.py (100%) rename {argilla-server => extralit-server}/tests/unit/jobs/webhook_jobs/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/jobs/webhook_jobs/test_enqueue_notify_events.py (100%) rename {argilla-server => extralit-server}/tests/unit/models/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/models/test_import_history.py (100%) rename {argilla-server => extralit-server}/tests/unit/models/test_webhook.py (100%) rename {argilla-server => extralit-server}/tests/unit/search_engine/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/search_engine/conftest.py (100%) rename {argilla-server => extralit-server}/tests/unit/search_engine/test_commons.py (100%) rename {argilla-server => extralit-server}/tests/unit/search_engine/test_elastisearch.py (100%) rename {argilla-server => extralit-server}/tests/unit/search_engine/test_opensearch.py (100%) rename {argilla-server => extralit-server}/tests/unit/security/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/security/authentication/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/security/authentication/oauth2/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/security/authentication/oauth2/backends/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py (100%) rename {argilla-server => extralit-server}/tests/unit/security/authentication/oauth2/test_settings.py (100%) rename {argilla-server => extralit-server}/tests/unit/security/authentication/test_userinfo.py (100%) rename {argilla-server => extralit-server}/tests/unit/security/test_model.py (100%) rename {argilla-server => extralit-server}/tests/unit/security/test_settings.py (100%) rename {argilla-server => extralit-server}/tests/unit/telemetry/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/telemetry/test_telemetry_helpers.py (100%) rename {argilla-server => extralit-server}/tests/unit/test_api_telemetry.py (100%) rename {argilla-server => extralit-server}/tests/unit/test_app.py (100%) rename {argilla-server => extralit-server}/tests/unit/test_database.py (100%) rename {argilla-server => extralit-server}/tests/unit/test_logging.py (100%) rename {argilla-server => extralit-server}/tests/unit/test_utils.py (100%) rename {argilla-server => extralit-server}/tests/unit/utils/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/utils/test_fastapi_utils.py (100%) rename {argilla-server => extralit-server}/tests/unit/validators/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/validators/test_records_bulk.py (100%) rename {argilla-server => extralit-server}/tests/unit/webhooks/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/webhooks/v1/__init__.py (100%) rename {argilla-server => extralit-server}/tests/unit/webhooks/v1/test_notify_ping_event.py (100%) diff --git a/.github/workflows/README.md b/.github/workflows/README.md index b5373d3a8..82a3ecba5 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -22,9 +22,9 @@ Python 3.13 support requires special handling due to some dependencies not yet b - The `spacy` dependency is specified with version conditions based on the Python version (v3.8.0+ for Python 3.13) - These conditional dependencies ensure the package can be built and tested on Python 3.13 -### `argilla-server.yml` +### `extralit-server.yml` -Builds and publishes the `argilla-server` package. +Builds and publishes the `extralit-server` package. - **Trigger**: Push to main/develop/releases branches, pull requests, or manual dispatch - **Key steps**: @@ -41,7 +41,7 @@ The workflows use multiple caching strategies to improve build performance: 1. **PDM cache**: Through the `setup-pdm` action 2. **UV cache**: Through the `actions/cache` action - Key format: `{os}-uv-{python-version}-{pdm_hash}` for argilla - - Key format: `{os}-uv-server-{pdm_hash}` for argilla-server + - Key format: `{os}-uv-server-{pdm_hash}` for extralit-server - Paths cached: `~/.cache/uv`, `~/.cache/pip` The UV cache uses the PDM lockfile hash to ensure the cache is invalidated when dependencies change. This approach provides more precise cache invalidation than date-based keys. @@ -56,7 +56,7 @@ The workflows set various environment variables: - `PDM_IGNORE_ACTIVE_VENV`: Ignore active virtual environments Additional environment variables are set in specific workflows: -- For `argilla-server.yml`: Database connection variables for Postgres, Elasticsearch, Redis, and MinIO +- For `extralit-server.yml`: Database connection variables for Postgres, Elasticsearch, Redis, and MinIO - For `extralit.yml`: HuggingFace credentials for integration tests ## Common Issues & Solutions diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 4de6fb967..9514eab70 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -65,7 +65,7 @@ jobs: cache-local-path: ~/.cache/uv cache-dependency-glob: "argilla-server/pdm.lock" - - name: Setup Python env and Install argilla-server editable package + - name: Setup Python env and Install extralit-server editable package env: PDM_IGNORE_ACTIVE_VENV: 1 run: | @@ -73,7 +73,7 @@ jobs: pdm config use_uv true pdm config python.install_root "$(uv python dir)" - cd argilla-server/ + cd extralit-server/ pdm install -G test - name: Install extralit editable package with dependencies @@ -96,7 +96,7 @@ jobs: npm install - name: Pre-run database migrations - working-directory: argilla-server + working-directory: extralit-server env: HOME: /home/runner run: | @@ -105,4 +105,4 @@ jobs: - name: Verify critical dependencies run: | - cd argilla-server && pdm run python -c "import pandera; print('✓ Pandera available')" || echo "⚠ Pandera not available" + cd extralit-server && pdm run python -c "import pandera; print('✓ Pandera available')" || echo "⚠ Pandera not available" diff --git a/.github/workflows/argilla-server.build-docker-images.yml b/.github/workflows/extralit-server.build-docker-images.yml similarity index 85% rename from .github/workflows/argilla-server.build-docker-images.yml rename to .github/workflows/extralit-server.build-docker-images.yml index fc6cd9666..456d35347 100644 --- a/.github/workflows/argilla-server.build-docker-images.yml +++ b/.github/workflows/extralit-server.build-docker-images.yml @@ -15,7 +15,7 @@ on: jobs: build: - name: Build Argilla server docker images +name: Build Extralit server docker images runs-on: ubuntu-latest steps: @@ -24,13 +24,13 @@ jobs: - name: Setup PDM uses: pdm-project/setup-pdm@v4 with: - python-version-file: argilla-server/pyproject.toml - cache-dependency-path: argilla-server/pdm.lock + python-version-file: extralit-server/pyproject.toml + cache-dependency-path: extralit-server/pdm.lock cache: true - name: Read package info id: package-info - working-directory: argilla-server + working-directory: extralit-server run: | PACKAGE_VERSION=$(pdm show --version) PACKAGE_NAME=$(pdm show --name) @@ -48,16 +48,16 @@ jobs: if [[ $IS_RELEASE == true ]]; then echo "PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_ENV echo "IMAGE_TAG=v$PACKAGE_VERSION" >> $GITHUB_ENV - echo "SERVER_DOCKER_IMAGE=extralit/argilla-server" >> $GITHUB_ENV - echo "HF_SPACES_DOCKER_IMAGE=extralit/argilla-hf-spaces" >> $GITHUB_ENV + echo "SERVER_DOCKER_IMAGE=extralit/extralit-server" >> $GITHUB_ENV + echo "HF_SPACES_DOCKER_IMAGE=extralit/extralit-hf-spaces" >> $GITHUB_ENV echo "DOCKER_USERNAME=$DOCKER_USERNAME" >> $GITHUB_ENV echo "DOCKER_PASSWORD=$DOCKER_PASSWORD" >> $GITHUB_ENV echo "PUBLISH_LATEST=$PUBLISH_LATEST" >> $GITHUB_ENV else echo "PLATFORMS=linux/amd64" >> $GITHUB_ENV echo "IMAGE_TAG=$DOCKER_IMAGE_TAG" >> $GITHUB_ENV - echo "SERVER_DOCKER_IMAGE=extralitdev/argilla-server" >> $GITHUB_ENV - echo "HF_SPACES_DOCKER_IMAGE=extralitdev/argilla-hf-spaces" >> $GITHUB_ENV + echo "SERVER_DOCKER_IMAGE=extralitdev/extralit-server" >> $GITHUB_ENV + echo "HF_SPACES_DOCKER_IMAGE=extralitdev/extralit-hf-spaces" >> $GITHUB_ENV echo "DOCKER_USERNAME=$DOCKER_USERNAME_DEV" >> $GITHUB_ENV echo "DOCKER_PASSWORD=$DOCKER_PASSWORD_DEV" >> $GITHUB_ENV echo "PUBLISH_LATEST=true" >> $GITHUB_ENV @@ -88,10 +88,10 @@ jobs: - name: Download python package uses: actions/download-artifact@v4 with: - name: argilla-server - path: argilla-server/docker/server/dist + name: extralit-server + path: extralit-server/docker/server/dist - - name: Build and push `argilla-server` image + - name: Build and push `extralit-server` image uses: docker/build-push-action@v5 with: context: argilla-server/docker/server @@ -100,11 +100,11 @@ jobs: labels: ${{ steps.meta.outputs.labels }} push: true - - name: Push latest `argilla-server` image + - name: Push latest `extralit-server` image if: ${{ env.PUBLISH_LATEST == 'true' }} uses: docker/build-push-action@v5 with: - context: argilla-server/docker/server + context: extralit-server/docker/server platforms: ${{ env.PLATFORMS }} tags: ${{ env.SERVER_DOCKER_IMAGE }}:latest labels: ${{ steps.meta.outputs.labels }} @@ -150,7 +150,7 @@ jobs: # username: ${{ env.DOCKER_USERNAME }} # password: ${{ env.DOCKER_PASSWORD }} # repository: $${{ env.SERVER_DOCKER_IMAGE }} - # readme-filepath: argilla-server/docker/server/README.md + # readme-filepath: extralit-server/docker/server/README.md # TODO: uncomment this once the step works again # - name: Docker Hub Description for `argilla-hf-spaces` # uses: peter-evans/dockerhub-description@v4 @@ -159,4 +159,4 @@ jobs: # username: ${{ env.DOCKER_USERNAME }} # password: ${{ env.DOCKER_PASSWORD }} # repository: $${{ env.HF_SPACES_DOCKER_IMAGE }} - # readme-filepath: argilla-server/docker/argilla-hf-spaces/README.md + # readme-filepath: extralit-server/docker/extralit-hf-spaces/README.md diff --git a/.github/workflows/argilla-server.yml b/.github/workflows/extralit-server.yml similarity index 94% rename from .github/workflows/argilla-server.yml rename to .github/workflows/extralit-server.yml index 857129509..ff43d4170 100644 --- a/.github/workflows/argilla-server.yml +++ b/.github/workflows/extralit-server.yml @@ -1,4 +1,4 @@ -name: Build Argilla server package +name: Build Extralit server package concurrency: group: ${{ github.workflow }}-${{ github.sha }} @@ -27,7 +27,7 @@ permissions: jobs: build: - name: Build `argilla-server` package + name: Build `extralit-server` package if: github.event.pull_request.draft == false runs-on: ubuntu-latest @@ -156,7 +156,7 @@ jobs: # End of frontend build section - name: Build package run: | - cp -r ../argilla-frontend/dist src/argilla_server/static + cp -r ../argilla-frontend/dist src/extralit_server/static pdm build - name: Upload artifact @@ -167,7 +167,7 @@ jobs: build_docker_images: name: Build docker images - uses: ./.github/workflows/argilla-server.build-docker-images.yml + uses: ./.github/workflows/extralit-server.build-docker-images.yml if: | github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop' @@ -181,7 +181,7 @@ jobs: publish_latest: ${{ github.ref == 'refs/heads/main' }} secrets: inherit - # This job will publish argilla-server python package into PyPI repository + # This job will publish extralit-server python package into PyPI repository publish_release: name: Publish Release runs-on: ubuntu-latest @@ -209,7 +209,7 @@ jobs: - name: Update repo visualizer uses: githubocto/repo-visualizer@0.7.1 with: - root_path: "argilla-server/" + root_path: "extralit-server/" excluded_paths: "dist,build,node_modules,docs,tests,.swm,assets,.github,package-lock.json,pdm.lock" excluded_globs: "*.spec.js;**/*.{png,jpg,svg,md};**/!(*.module).ts,**/__pycache__/,**/__mocks__/,LICENSE*,**/.gitignore,**/*.egg-info/,**/.*/" output_file: "repo-visualizer.svg" @@ -231,8 +231,8 @@ jobs: - name: Setup PDM uses: pdm-project/setup-pdm@v4 with: - python-version-file: argilla-server/pyproject.toml - cache-dependency-path: argilla-server/pdm.lock + python-version-file: extralit-server/pyproject.toml + cache-dependency-path: extralit-server/pdm.lock cache: true - name: Read package info diff --git a/.github/workflows/extralit.yml b/.github/workflows/extralit.yml index 6def792e3..06f38a26e 100644 --- a/.github/workflows/extralit.yml +++ b/.github/workflows/extralit.yml @@ -20,7 +20,7 @@ on: types: [opened, edited, synchronize, reopened, ready_for_review] paths: - "extralit/**" - - "argilla-server/**" + - "extralit-server/**" - ".github/workflows/extralit.yml" permissions: @@ -31,7 +31,7 @@ jobs: build: if: github.event.pull_request.draft == false services: - argilla-server: + extralit-server: image: extralitdev/argilla-hf-spaces:develop ports: - 6900:6900 diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3dd2383bf..1eecda78e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -15,7 +15,7 @@ on: types: [opened, edited, synchronize, reopened, ready_for_review] paths: - "extralit/**" - - "argilla-server/**" + - "extralit-server/**" # Declare default permissions as read only. permissions: read-all diff --git a/Tiltfile b/Tiltfile index 76a89cfb9..e5798915a 100644 --- a/Tiltfile +++ b/Tiltfile @@ -46,10 +46,10 @@ k8s_yaml([ k8s_resource( 'elasticsearch', port_forwards=['9200'], - labels=['argilla-server'], + labels=['extralit-server'], ) -# PostgreSQL is the database for argilla-server +# PostgreSQL is the database for extralit-server helm_repo('bitnami', 'https://charts.bitnami.com/bitnami', labels=['helm'], resource_name='bitnami-helm') if not ARGILLA_DATABASE_URL: helm_resource( @@ -59,7 +59,7 @@ if not ARGILLA_DATABASE_URL: '--version=13.2.0', '--values=examples/deployments/k8s/helm/postgres-helm.yaml'], port_forwards=['5432'], - labels=['argilla-server'], + labels=['extralit-server'], resource_deps=['bitnami-helm'], ) @@ -79,27 +79,27 @@ helm_resource( resource_deps=['redis-helm', 'bitnami-helm'] ) -# argilla-server is the web backend (FastAPI + SQL database) +# extralit-server is the web backend (FastAPI + SQL database) if not os.path.exists('argilla-frontend/dist'): local('npm install && npm run build', dir='argilla-frontend', quiet=True) -if not os.path.exists('argilla-server/src/argilla_server/static'): - local('cp -r argilla-frontend/dist argilla-server/src/argilla_server/static', quiet=True) -if not os.path.exists('argilla-server/dist/'): - local('pdm build', dir='argilla-server') +if not os.path.exists('extralit-server/src/extralit_server/static'): + local('cp -r argilla-frontend/dist extralit-server/src/extralit_server/static', quiet=True) +if not os.path.exists('extralit-server/dist/'): + local('pdm build', dir='extralit-server') docker_build( - "{DOCKER_REPO}/argilla-server".format(DOCKER_REPO=DOCKER_REPO), - context='argilla-server/', + "{DOCKER_REPO}/extralit-server".format(DOCKER_REPO=DOCKER_REPO), + context='extralit-server/', build_args={'ENV': ENV, 'USERS_DB': USERS_DB}, - dockerfile='argilla-server/docker/server/dev.argilla_server.dockerfile', + dockerfile='extralit-server/docker/server/dev.extralit_server.dockerfile', ignore=['examples/', 'extralit/', '.*', '**/__pycache__', '*.pyc', 'CHANGELOG.md'], live_update=[ # Sync the source code to the container - sync('argilla-server/src/', '/home/argilla/src/'), - sync('argilla-server/docker/server/scripts/start_argilla_server.sh', '/home/argilla/'), - sync('argilla-server/pyproject.toml', '/home/argilla/pyproject.toml'), + sync('extralit-server/src/', '/home/extralit/src/'), + sync('extralit-server/docker/server/scripts/start_extralit_server.sh', '/home/extralit/'), + sync('extralit-server/pyproject.toml', '/home/extralit/pyproject.toml'), ] ) -argilla_server_k8s_yaml = read_yaml_stream('examples/deployments/k8s/argilla-server-deployment.yaml') +extralit_server_k8s_yaml = read_yaml_stream('examples/deployments/k8s/extralit-server-deployment.yaml') for o in argilla_server_k8s_yaml: for container in o['spec']['template']['spec']['containers']: if container['name'] == 'argilla-server': @@ -119,14 +119,14 @@ for o in argilla_server_k8s_yaml: k8s_yaml([ encode_yaml_stream(argilla_server_k8s_yaml), - 'examples/deployments/k8s/argilla-server-service.yaml', - 'examples/deployments/k8s/argilla-server-ingress.yaml', + 'examples/deployments/k8s/extralit-server-service.yaml', + 'examples/deployments/k8s/extralit-server-ingress.yaml', # 'examples/deployments/k8s/argilla-loadbalancer-service.yaml' ]) k8s_resource( - 'argilla-server', + 'extralit-server', port_forwards=['6900'], - labels=['argilla-server'], + labels=['extralit-server'], resource_deps=['redis', 'main-db', 'elasticsearch'] if not ARGILLA_DATABASE_URL else ['redis', 'elasticsearch'], ) @@ -172,7 +172,7 @@ docker_build( "{DOCKER_REPO}/extralit-server".format(DOCKER_REPO=DOCKER_REPO), context='extralit/', dockerfile='extralit/docker/extralit.dockerfile', - ignore=['.*', 'argilla-frontend/', 'argilla-server/', '**/__pycache__', '*.pyc'], + ignore=['.*', 'argilla-frontend/', 'extralit-server/', '**/__pycache__', '*.pyc'], live_update=[ sync('extralit/', '/home/extralit/'), ] diff --git a/examples/deployments/k8s/argilla-server-certificate.yaml b/examples/deployments/k8s/extralit-server-certificate.yaml similarity index 79% rename from examples/deployments/k8s/argilla-server-certificate.yaml rename to examples/deployments/k8s/extralit-server-certificate.yaml index 35b8cdf56..fcc7c6321 100644 --- a/examples/deployments/k8s/argilla-server-certificate.yaml +++ b/examples/deployments/k8s/extralit-server-certificate.yaml @@ -8,11 +8,11 @@ spec: apiVersion: cert-manager.io/v1 kind: Certificate metadata: - name: argilla-server-certificate + name: extralit-server-certificate spec: dnsNames: - argilla-hostname - secretName: argilla-server-tls + secretName: extralit-server-tls issuerRef: name: selfsigned-issuer kind: ClusterIssuer \ No newline at end of file diff --git a/examples/deployments/k8s/argilla-server-deployment.yaml b/examples/deployments/k8s/extralit-server-deployment.yaml similarity index 93% rename from examples/deployments/k8s/argilla-server-deployment.yaml rename to examples/deployments/k8s/extralit-server-deployment.yaml index aa44c282f..434810b25 100644 --- a/examples/deployments/k8s/argilla-server-deployment.yaml +++ b/examples/deployments/k8s/extralit-server-deployment.yaml @@ -1,9 +1,9 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: argilla-server + name: extralit-server labels: - app: argilla-server + app: extralit-server spec: replicas: 1 strategy: @@ -13,11 +13,11 @@ spec: maxSurge: 1 selector: matchLabels: - app: argilla-server + app: extralit-server template: metadata: labels: - app: argilla-server + app: extralit-server spec: affinity: nodeAffinity: @@ -28,7 +28,7 @@ spec: - key: role operator: In values: - - argilla-server + - extralit-server initContainers: - name: wait-for-elasticsearch image: alpine/curl:latest @@ -37,8 +37,8 @@ spec: while [ $status_code -ne 200 ]; do sleep 5; status_code=$(curl -s -o /dev/null -w '%{http_code}' $ELASTICSEARCH_URL); echo Sleeping...; done; echo Elasticsearch Connected " ] containers: - - name: argilla-server - image: extralit/argilla-server:latest + - name: extralit-server + image: extralit/extralit-server:latest ports: - containerPort: 6900 resources: diff --git a/examples/deployments/k8s/argilla-server-hpa.yaml b/examples/deployments/k8s/extralit-server-hpa.yaml similarity index 82% rename from examples/deployments/k8s/argilla-server-hpa.yaml rename to examples/deployments/k8s/extralit-server-hpa.yaml index 72ade05e5..f4ce5f3a1 100644 --- a/examples/deployments/k8s/argilla-server-hpa.yaml +++ b/examples/deployments/k8s/extralit-server-hpa.yaml @@ -1,12 +1,12 @@ apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: - name: argilla-server-hpa + name: extralit-server-hpa spec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment - name: argilla-server-deployment + name: extralit-server-deployment minReplicas: 1 maxReplicas: 3 metrics: diff --git a/examples/deployments/k8s/argilla-server-ingress.yaml b/examples/deployments/k8s/extralit-server-ingress.yaml similarity index 77% rename from examples/deployments/k8s/argilla-server-ingress.yaml rename to examples/deployments/k8s/extralit-server-ingress.yaml index 583b2c4e9..724513c17 100644 --- a/examples/deployments/k8s/argilla-server-ingress.yaml +++ b/examples/deployments/k8s/extralit-server-ingress.yaml @@ -1,14 +1,14 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: - name: argilla-server-ingress + name: extralit-server-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: tls: - hosts: - argilla-hostname - secretName: argilla-server-tls + secretName: extralit-server-tls rules: - host: argilla-hostname http: @@ -17,6 +17,6 @@ spec: pathType: Prefix backend: service: - name: argilla-server + name: extralit-server port: number: 6900 diff --git a/examples/deployments/k8s/argilla-server-service.yaml b/examples/deployments/k8s/extralit-server-service.yaml similarity index 58% rename from examples/deployments/k8s/argilla-server-service.yaml rename to examples/deployments/k8s/extralit-server-service.yaml index 43fa7b8d2..04ceefc9b 100644 --- a/examples/deployments/k8s/argilla-server-service.yaml +++ b/examples/deployments/k8s/extralit-server-service.yaml @@ -1,12 +1,12 @@ apiVersion: v1 kind: Service metadata: - name: argilla-server + name: extralit-server labels: - app: argilla-server + app: extralit-server spec: selector: - app: argilla-server + app: extralit-server ports: - name: http port: 6900 diff --git a/argilla-server/.env.dev b/extralit-server/.env.dev similarity index 100% rename from argilla-server/.env.dev rename to extralit-server/.env.dev diff --git a/argilla-server/.env.test b/extralit-server/.env.test similarity index 100% rename from argilla-server/.env.test rename to extralit-server/.env.test diff --git a/argilla-server/.gitignore b/extralit-server/.gitignore similarity index 100% rename from argilla-server/.gitignore rename to extralit-server/.gitignore diff --git a/argilla-server/CHANGELOG.md b/extralit-server/CHANGELOG.md similarity index 100% rename from argilla-server/CHANGELOG.md rename to extralit-server/CHANGELOG.md diff --git a/argilla-server/LICENSE b/extralit-server/LICENSE similarity index 100% rename from argilla-server/LICENSE rename to extralit-server/LICENSE diff --git a/argilla-server/LICENSE_HEADER b/extralit-server/LICENSE_HEADER similarity index 100% rename from argilla-server/LICENSE_HEADER rename to extralit-server/LICENSE_HEADER diff --git a/argilla-server/README.md b/extralit-server/README.md similarity index 99% rename from argilla-server/README.md rename to extralit-server/README.md index 91c8ff5f2..bafa1e4e6 100644 --- a/argilla-server/README.md +++ b/extralit-server/README.md @@ -46,7 +46,7 @@ The server components are split into two main services: ``` ``` -/argilla_server +/extralit_server /api # Annotation UI API endpoints /handlers /schemas diff --git a/argilla-server/docker/argilla-hf-spaces/Dockerfile b/extralit-server/docker/extralit-hf-spaces/Dockerfile similarity index 100% rename from argilla-server/docker/argilla-hf-spaces/Dockerfile rename to extralit-server/docker/extralit-hf-spaces/Dockerfile diff --git a/argilla-server/docker/argilla-hf-spaces/Procfile b/extralit-server/docker/extralit-hf-spaces/Procfile similarity index 100% rename from argilla-server/docker/argilla-hf-spaces/Procfile rename to extralit-server/docker/extralit-hf-spaces/Procfile diff --git a/argilla-server/docker/argilla-hf-spaces/README.md b/extralit-server/docker/extralit-hf-spaces/README.md similarity index 100% rename from argilla-server/docker/argilla-hf-spaces/README.md rename to extralit-server/docker/extralit-hf-spaces/README.md diff --git a/argilla-server/docker/argilla-hf-spaces/config/elasticsearch.yml b/extralit-server/docker/extralit-hf-spaces/config/elasticsearch.yml similarity index 100% rename from argilla-server/docker/argilla-hf-spaces/config/elasticsearch.yml rename to extralit-server/docker/extralit-hf-spaces/config/elasticsearch.yml diff --git a/argilla-server/docker/argilla-hf-spaces/requirements.txt b/extralit-server/docker/extralit-hf-spaces/requirements.txt similarity index 100% rename from argilla-server/docker/argilla-hf-spaces/requirements.txt rename to extralit-server/docker/extralit-hf-spaces/requirements.txt diff --git a/argilla-server/docker/argilla-hf-spaces/scripts/start.sh b/extralit-server/docker/extralit-hf-spaces/scripts/start.sh similarity index 100% rename from argilla-server/docker/argilla-hf-spaces/scripts/start.sh rename to extralit-server/docker/extralit-hf-spaces/scripts/start.sh diff --git a/argilla-server/docker/server/Dockerfile b/extralit-server/docker/server/Dockerfile similarity index 100% rename from argilla-server/docker/server/Dockerfile rename to extralit-server/docker/server/Dockerfile diff --git a/argilla-server/docker/server/README.md b/extralit-server/docker/server/README.md similarity index 100% rename from argilla-server/docker/server/README.md rename to extralit-server/docker/server/README.md diff --git a/argilla-server/docker/server/dev.argilla_server.dockerfile b/extralit-server/docker/server/dev.extralit_server.dockerfile similarity index 100% rename from argilla-server/docker/server/dev.argilla_server.dockerfile rename to extralit-server/docker/server/dev.extralit_server.dockerfile diff --git a/argilla-server/docker/server/scripts/start_argilla_server.sh b/extralit-server/docker/server/scripts/start_extralit_server.sh similarity index 100% rename from argilla-server/docker/server/scripts/start_argilla_server.sh rename to extralit-server/docker/server/scripts/start_extralit_server.sh diff --git a/argilla-server/pdm.lock b/extralit-server/pdm.lock similarity index 100% rename from argilla-server/pdm.lock rename to extralit-server/pdm.lock diff --git a/argilla-server/pyproject.toml b/extralit-server/pyproject.toml similarity index 100% rename from argilla-server/pyproject.toml rename to extralit-server/pyproject.toml diff --git a/argilla-server/src/extralit_server/__init__.py b/extralit-server/src/extralit_server/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/__init__.py rename to extralit-server/src/extralit_server/__init__.py diff --git a/argilla-server/src/extralit_server/__main__.py b/extralit-server/src/extralit_server/__main__.py similarity index 100% rename from argilla-server/src/extralit_server/__main__.py rename to extralit-server/src/extralit_server/__main__.py diff --git a/argilla-server/src/extralit_server/_app.py b/extralit-server/src/extralit_server/_app.py similarity index 100% rename from argilla-server/src/extralit_server/_app.py rename to extralit-server/src/extralit_server/_app.py diff --git a/argilla-server/src/extralit_server/_version.py b/extralit-server/src/extralit_server/_version.py similarity index 100% rename from argilla-server/src/extralit_server/_version.py rename to extralit-server/src/extralit_server/_version.py diff --git a/argilla-server/src/extralit_server/alembic.ini b/extralit-server/src/extralit_server/alembic.ini similarity index 100% rename from argilla-server/src/extralit_server/alembic.ini rename to extralit-server/src/extralit_server/alembic.ini diff --git a/argilla-server/src/extralit_server/alembic/env.py b/extralit-server/src/extralit_server/alembic/env.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/env.py rename to extralit-server/src/extralit_server/alembic/env.py diff --git a/argilla-server/src/extralit_server/alembic/script.py.mako b/extralit-server/src/extralit_server/alembic/script.py.mako similarity index 100% rename from argilla-server/src/extralit_server/alembic/script.py.mako rename to extralit-server/src/extralit_server/alembic/script.py.mako diff --git a/argilla-server/src/extralit_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py b/extralit-server/src/extralit_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py rename to extralit-server/src/extralit_server/alembic/versions/1769ee58fbb4_create_workspaces_users_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py b/extralit-server/src/extralit_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py rename to extralit-server/src/extralit_server/alembic/versions/1e629a913727_fix_suggestions_type_enum_values.py diff --git a/argilla-server/src/extralit_server/alembic/versions/237f7c674d74_add_status_column_to_records_table.py b/extralit-server/src/extralit_server/alembic/versions/237f7c674d74_add_status_column_to_records_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/237f7c674d74_add_status_column_to_records_table.py rename to extralit-server/src/extralit_server/alembic/versions/237f7c674d74_add_status_column_to_records_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py b/extralit-server/src/extralit_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py rename to extralit-server/src/extralit_server/alembic/versions/3a8e2f9b5dea_create_questions_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/3fc3c0839959_create_suggestions_table.py b/extralit-server/src/extralit_server/alembic/versions/3fc3c0839959_create_suggestions_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/3fc3c0839959_create_suggestions_table.py rename to extralit-server/src/extralit_server/alembic/versions/3fc3c0839959_create_suggestions_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py b/extralit-server/src/extralit_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py rename to extralit-server/src/extralit_server/alembic/versions/3ff6484f8b37_add_metadata_column_to_records_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/45a12f74448b_add_distribution_column_to_datasets_table.py b/extralit-server/src/extralit_server/alembic/versions/45a12f74448b_add_distribution_column_to_datasets_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/45a12f74448b_add_distribution_column_to_datasets_table.py rename to extralit-server/src/extralit_server/alembic/versions/45a12f74448b_add_distribution_column_to_datasets_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/580a6553186f_add_datasets_users_table.py b/extralit-server/src/extralit_server/alembic/versions/580a6553186f_add_datasets_users_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/580a6553186f_add_datasets_users_table.py rename to extralit-server/src/extralit_server/alembic/versions/580a6553186f_add_datasets_users_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/660d6c6b3360_add_metadata_column_to_datasets_table.py b/extralit-server/src/extralit_server/alembic/versions/660d6c6b3360_add_metadata_column_to_datasets_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/660d6c6b3360_add_metadata_column_to_datasets_table.py rename to extralit-server/src/extralit_server/alembic/versions/660d6c6b3360_add_metadata_column_to_datasets_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/6ed1b8bf8e08_create_webhooks_table.py b/extralit-server/src/extralit_server/alembic/versions/6ed1b8bf8e08_create_webhooks_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/6ed1b8bf8e08_create_webhooks_table.py rename to extralit-server/src/extralit_server/alembic/versions/6ed1b8bf8e08_create_webhooks_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/74694870197c_create_users_table.py b/extralit-server/src/extralit_server/alembic/versions/74694870197c_create_users_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/74694870197c_create_users_table.py rename to extralit-server/src/extralit_server/alembic/versions/74694870197c_create_users_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/7552df94427a_added_document_model_and_updated_record_.py b/extralit-server/src/extralit_server/alembic/versions/7552df94427a_added_document_model_and_updated_record_.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/7552df94427a_added_document_model_and_updated_record_.py rename to extralit-server/src/extralit_server/alembic/versions/7552df94427a_added_document_model_and_updated_record_.py diff --git a/argilla-server/src/extralit_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py b/extralit-server/src/extralit_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py rename to extralit-server/src/extralit_server/alembic/versions/7850ab5b42d9_create_vectors_settings_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py b/extralit-server/src/extralit_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py rename to extralit-server/src/extralit_server/alembic/versions/7cbcccf8b57a_create_metadata_properties_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/7d6b33203390_create_import_history_table.py b/extralit-server/src/extralit_server/alembic/versions/7d6b33203390_create_import_history_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/7d6b33203390_create_import_history_table.py rename to extralit-server/src/extralit_server/alembic/versions/7d6b33203390_create_import_history_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py b/extralit-server/src/extralit_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py rename to extralit-server/src/extralit_server/alembic/versions/82a5a88a3fa5_create_workspaces_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py b/extralit-server/src/extralit_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py rename to extralit-server/src/extralit_server/alembic/versions/84f6b9ff6076_add_last_activity_at_to_datasets_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/8be56284dac0_create_records_table.py b/extralit-server/src/extralit_server/alembic/versions/8be56284dac0_create_records_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/8be56284dac0_create_records_table.py rename to extralit-server/src/extralit_server/alembic/versions/8be56284dac0_create_records_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/8c574ada5e5f_update_enum_columns.py b/extralit-server/src/extralit_server/alembic/versions/8c574ada5e5f_update_enum_columns.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/8c574ada5e5f_update_enum_columns.py rename to extralit-server/src/extralit_server/alembic/versions/8c574ada5e5f_update_enum_columns.py diff --git a/argilla-server/src/extralit_server/alembic/versions/ae5522b4c674_create_fields_table.py b/extralit-server/src/extralit_server/alembic/versions/ae5522b4c674_create_fields_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/ae5522b4c674_create_fields_table.py rename to extralit-server/src/extralit_server/alembic/versions/ae5522b4c674_create_fields_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py b/extralit-server/src/extralit_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py rename to extralit-server/src/extralit_server/alembic/versions/b8458008b60e_add_allow_extra_metadata_column_to_datasets_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/b9099dc08489_create_datasets_table.py b/extralit-server/src/extralit_server/alembic/versions/b9099dc08489_create_datasets_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/b9099dc08489_create_datasets_table.py rename to extralit-server/src/extralit_server/alembic/versions/b9099dc08489_create_datasets_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/bda6fe24314e_create_vectors_table.py b/extralit-server/src/extralit_server/alembic/versions/bda6fe24314e_create_vectors_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/bda6fe24314e_create_vectors_table.py rename to extralit-server/src/extralit_server/alembic/versions/bda6fe24314e_create_vectors_table.py diff --git a/argilla-server/src/extralit_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py b/extralit-server/src/extralit_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py rename to extralit-server/src/extralit_server/alembic/versions/ca7293c38970_change_suggestions_score_column_to_json.py diff --git a/argilla-server/src/extralit_server/alembic/versions/d00f819ccc67_update_responses_user_id_foreign_key.py b/extralit-server/src/extralit_server/alembic/versions/d00f819ccc67_update_responses_user_id_foreign_key.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/d00f819ccc67_update_responses_user_id_foreign_key.py rename to extralit-server/src/extralit_server/alembic/versions/d00f819ccc67_update_responses_user_id_foreign_key.py diff --git a/argilla-server/src/extralit_server/alembic/versions/e402e9d9245e_create_responses_table.py b/extralit-server/src/extralit_server/alembic/versions/e402e9d9245e_create_responses_table.py similarity index 100% rename from argilla-server/src/extralit_server/alembic/versions/e402e9d9245e_create_responses_table.py rename to extralit-server/src/extralit_server/alembic/versions/e402e9d9245e_create_responses_table.py diff --git a/argilla-server/src/extralit_server/api/__init__.py b/extralit-server/src/extralit_server/api/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/api/__init__.py rename to extralit-server/src/extralit_server/api/__init__.py diff --git a/argilla-server/src/extralit_server/api/errors/__init__.py b/extralit-server/src/extralit_server/api/errors/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/api/errors/__init__.py rename to extralit-server/src/extralit_server/api/errors/__init__.py diff --git a/argilla-server/src/extralit_server/api/errors/v1/__init__.py b/extralit-server/src/extralit_server/api/errors/v1/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/api/errors/v1/__init__.py rename to extralit-server/src/extralit_server/api/errors/v1/__init__.py diff --git a/argilla-server/src/extralit_server/api/errors/v1/exception_handlers.py b/extralit-server/src/extralit_server/api/errors/v1/exception_handlers.py similarity index 100% rename from argilla-server/src/extralit_server/api/errors/v1/exception_handlers.py rename to extralit-server/src/extralit_server/api/errors/v1/exception_handlers.py diff --git a/argilla-server/src/extralit_server/api/handlers/__init__.py b/extralit-server/src/extralit_server/api/handlers/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/__init__.py rename to extralit-server/src/extralit_server/api/handlers/__init__.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/__init__.py b/extralit-server/src/extralit_server/api/handlers/v1/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/__init__.py rename to extralit-server/src/extralit_server/api/handlers/v1/__init__.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/authentication.py b/extralit-server/src/extralit_server/api/handlers/v1/authentication.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/authentication.py rename to extralit-server/src/extralit_server/api/handlers/v1/authentication.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/datasets/__init__.py b/extralit-server/src/extralit_server/api/handlers/v1/datasets/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/datasets/__init__.py rename to extralit-server/src/extralit_server/api/handlers/v1/datasets/__init__.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/datasets/datasets.py b/extralit-server/src/extralit_server/api/handlers/v1/datasets/datasets.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/datasets/datasets.py rename to extralit-server/src/extralit_server/api/handlers/v1/datasets/datasets.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/datasets/questions.py b/extralit-server/src/extralit_server/api/handlers/v1/datasets/questions.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/datasets/questions.py rename to extralit-server/src/extralit_server/api/handlers/v1/datasets/questions.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/datasets/records.py b/extralit-server/src/extralit_server/api/handlers/v1/datasets/records.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/datasets/records.py rename to extralit-server/src/extralit_server/api/handlers/v1/datasets/records.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/datasets/records_bulk.py b/extralit-server/src/extralit_server/api/handlers/v1/datasets/records_bulk.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/datasets/records_bulk.py rename to extralit-server/src/extralit_server/api/handlers/v1/datasets/records_bulk.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/documents.py b/extralit-server/src/extralit_server/api/handlers/v1/documents.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/documents.py rename to extralit-server/src/extralit_server/api/handlers/v1/documents.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/fields.py b/extralit-server/src/extralit_server/api/handlers/v1/fields.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/fields.py rename to extralit-server/src/extralit_server/api/handlers/v1/fields.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/files.py b/extralit-server/src/extralit_server/api/handlers/v1/files.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/files.py rename to extralit-server/src/extralit_server/api/handlers/v1/files.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/imports.py b/extralit-server/src/extralit_server/api/handlers/v1/imports.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/imports.py rename to extralit-server/src/extralit_server/api/handlers/v1/imports.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/info.py b/extralit-server/src/extralit_server/api/handlers/v1/info.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/info.py rename to extralit-server/src/extralit_server/api/handlers/v1/info.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/jobs.py b/extralit-server/src/extralit_server/api/handlers/v1/jobs.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/jobs.py rename to extralit-server/src/extralit_server/api/handlers/v1/jobs.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/metadata_properties.py b/extralit-server/src/extralit_server/api/handlers/v1/metadata_properties.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/metadata_properties.py rename to extralit-server/src/extralit_server/api/handlers/v1/metadata_properties.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/models.py b/extralit-server/src/extralit_server/api/handlers/v1/models.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/models.py rename to extralit-server/src/extralit_server/api/handlers/v1/models.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/oauth2.py b/extralit-server/src/extralit_server/api/handlers/v1/oauth2.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/oauth2.py rename to extralit-server/src/extralit_server/api/handlers/v1/oauth2.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/questions.py b/extralit-server/src/extralit_server/api/handlers/v1/questions.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/questions.py rename to extralit-server/src/extralit_server/api/handlers/v1/questions.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/records.py b/extralit-server/src/extralit_server/api/handlers/v1/records.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/records.py rename to extralit-server/src/extralit_server/api/handlers/v1/records.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/responses.py b/extralit-server/src/extralit_server/api/handlers/v1/responses.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/responses.py rename to extralit-server/src/extralit_server/api/handlers/v1/responses.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/settings.py b/extralit-server/src/extralit_server/api/handlers/v1/settings.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/settings.py rename to extralit-server/src/extralit_server/api/handlers/v1/settings.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/suggestions.py b/extralit-server/src/extralit_server/api/handlers/v1/suggestions.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/suggestions.py rename to extralit-server/src/extralit_server/api/handlers/v1/suggestions.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/users.py b/extralit-server/src/extralit_server/api/handlers/v1/users.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/users.py rename to extralit-server/src/extralit_server/api/handlers/v1/users.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/vectors_settings.py b/extralit-server/src/extralit_server/api/handlers/v1/vectors_settings.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/vectors_settings.py rename to extralit-server/src/extralit_server/api/handlers/v1/vectors_settings.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/webhooks.py b/extralit-server/src/extralit_server/api/handlers/v1/webhooks.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/webhooks.py rename to extralit-server/src/extralit_server/api/handlers/v1/webhooks.py diff --git a/argilla-server/src/extralit_server/api/handlers/v1/workspaces.py b/extralit-server/src/extralit_server/api/handlers/v1/workspaces.py similarity index 100% rename from argilla-server/src/extralit_server/api/handlers/v1/workspaces.py rename to extralit-server/src/extralit_server/api/handlers/v1/workspaces.py diff --git a/argilla-server/src/extralit_server/api/policies/__init__.py b/extralit-server/src/extralit_server/api/policies/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/__init__.py rename to extralit-server/src/extralit_server/api/policies/__init__.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/__init__.py b/extralit-server/src/extralit_server/api/policies/v1/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/__init__.py rename to extralit-server/src/extralit_server/api/policies/v1/__init__.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/commons.py b/extralit-server/src/extralit_server/api/policies/v1/commons.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/commons.py rename to extralit-server/src/extralit_server/api/policies/v1/commons.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/dataset_policy.py b/extralit-server/src/extralit_server/api/policies/v1/dataset_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/dataset_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/dataset_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/document_policy.py b/extralit-server/src/extralit_server/api/policies/v1/document_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/document_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/document_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/field_policy.py b/extralit-server/src/extralit_server/api/policies/v1/field_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/field_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/field_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/file_policy.py b/extralit-server/src/extralit_server/api/policies/v1/file_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/file_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/file_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/job_policy.py b/extralit-server/src/extralit_server/api/policies/v1/job_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/job_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/job_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/metadata_property_policy.py b/extralit-server/src/extralit_server/api/policies/v1/metadata_property_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/metadata_property_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/metadata_property_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/question_policy.py b/extralit-server/src/extralit_server/api/policies/v1/question_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/question_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/question_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/record_policy.py b/extralit-server/src/extralit_server/api/policies/v1/record_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/record_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/record_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/response_policy.py b/extralit-server/src/extralit_server/api/policies/v1/response_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/response_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/response_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/suggestion_policy.py b/extralit-server/src/extralit_server/api/policies/v1/suggestion_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/suggestion_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/suggestion_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/user_policy.py b/extralit-server/src/extralit_server/api/policies/v1/user_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/user_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/user_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/vector_settings_policy.py b/extralit-server/src/extralit_server/api/policies/v1/vector_settings_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/vector_settings_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/vector_settings_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/webhook_policy.py b/extralit-server/src/extralit_server/api/policies/v1/webhook_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/webhook_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/webhook_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/workspace_policy.py b/extralit-server/src/extralit_server/api/policies/v1/workspace_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/workspace_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/workspace_policy.py diff --git a/argilla-server/src/extralit_server/api/policies/v1/workspace_user_policy.py b/extralit-server/src/extralit_server/api/policies/v1/workspace_user_policy.py similarity index 100% rename from argilla-server/src/extralit_server/api/policies/v1/workspace_user_policy.py rename to extralit-server/src/extralit_server/api/policies/v1/workspace_user_policy.py diff --git a/argilla-server/src/extralit_server/api/routes.py b/extralit-server/src/extralit_server/api/routes.py similarity index 100% rename from argilla-server/src/extralit_server/api/routes.py rename to extralit-server/src/extralit_server/api/routes.py diff --git a/argilla-server/src/extralit_server/api/schemas/__init__.py b/extralit-server/src/extralit_server/api/schemas/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/__init__.py rename to extralit-server/src/extralit_server/api/schemas/__init__.py diff --git a/argilla-server/src/extralit_server/api/schemas/base.py b/extralit-server/src/extralit_server/api/schemas/base.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/base.py rename to extralit-server/src/extralit_server/api/schemas/base.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/__init__.py b/extralit-server/src/extralit_server/api/schemas/v1/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/__init__.py rename to extralit-server/src/extralit_server/api/schemas/v1/__init__.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/chat.py b/extralit-server/src/extralit_server/api/schemas/v1/chat.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/chat.py rename to extralit-server/src/extralit_server/api/schemas/v1/chat.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/commons.py b/extralit-server/src/extralit_server/api/schemas/v1/commons.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/commons.py rename to extralit-server/src/extralit_server/api/schemas/v1/commons.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/datasets.py b/extralit-server/src/extralit_server/api/schemas/v1/datasets.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/datasets.py rename to extralit-server/src/extralit_server/api/schemas/v1/datasets.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/documents.py b/extralit-server/src/extralit_server/api/schemas/v1/documents.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/documents.py rename to extralit-server/src/extralit_server/api/schemas/v1/documents.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/fields.py b/extralit-server/src/extralit_server/api/schemas/v1/fields.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/fields.py rename to extralit-server/src/extralit_server/api/schemas/v1/fields.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/files.py b/extralit-server/src/extralit_server/api/schemas/v1/files.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/files.py rename to extralit-server/src/extralit_server/api/schemas/v1/files.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/imports.py b/extralit-server/src/extralit_server/api/schemas/v1/imports.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/imports.py rename to extralit-server/src/extralit_server/api/schemas/v1/imports.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/info.py b/extralit-server/src/extralit_server/api/schemas/v1/info.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/info.py rename to extralit-server/src/extralit_server/api/schemas/v1/info.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/jobs.py b/extralit-server/src/extralit_server/api/schemas/v1/jobs.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/jobs.py rename to extralit-server/src/extralit_server/api/schemas/v1/jobs.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/metadata_properties.py b/extralit-server/src/extralit_server/api/schemas/v1/metadata_properties.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/metadata_properties.py rename to extralit-server/src/extralit_server/api/schemas/v1/metadata_properties.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/oauth2.py b/extralit-server/src/extralit_server/api/schemas/v1/oauth2.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/oauth2.py rename to extralit-server/src/extralit_server/api/schemas/v1/oauth2.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/questions.py b/extralit-server/src/extralit_server/api/schemas/v1/questions.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/questions.py rename to extralit-server/src/extralit_server/api/schemas/v1/questions.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/records.py b/extralit-server/src/extralit_server/api/schemas/v1/records.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/records.py rename to extralit-server/src/extralit_server/api/schemas/v1/records.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/records_bulk.py b/extralit-server/src/extralit_server/api/schemas/v1/records_bulk.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/records_bulk.py rename to extralit-server/src/extralit_server/api/schemas/v1/records_bulk.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/responses.py b/extralit-server/src/extralit_server/api/schemas/v1/responses.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/responses.py rename to extralit-server/src/extralit_server/api/schemas/v1/responses.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/settings.py b/extralit-server/src/extralit_server/api/schemas/v1/settings.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/settings.py rename to extralit-server/src/extralit_server/api/schemas/v1/settings.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/suggestions.py b/extralit-server/src/extralit_server/api/schemas/v1/suggestions.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/suggestions.py rename to extralit-server/src/extralit_server/api/schemas/v1/suggestions.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/users.py b/extralit-server/src/extralit_server/api/schemas/v1/users.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/users.py rename to extralit-server/src/extralit_server/api/schemas/v1/users.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/vector_settings.py b/extralit-server/src/extralit_server/api/schemas/v1/vector_settings.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/vector_settings.py rename to extralit-server/src/extralit_server/api/schemas/v1/vector_settings.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/vectors.py b/extralit-server/src/extralit_server/api/schemas/v1/vectors.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/vectors.py rename to extralit-server/src/extralit_server/api/schemas/v1/vectors.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/webhooks.py b/extralit-server/src/extralit_server/api/schemas/v1/webhooks.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/webhooks.py rename to extralit-server/src/extralit_server/api/schemas/v1/webhooks.py diff --git a/argilla-server/src/extralit_server/api/schemas/v1/workspaces.py b/extralit-server/src/extralit_server/api/schemas/v1/workspaces.py similarity index 100% rename from argilla-server/src/extralit_server/api/schemas/v1/workspaces.py rename to extralit-server/src/extralit_server/api/schemas/v1/workspaces.py diff --git a/argilla-server/src/extralit_server/bulk/__init__.py b/extralit-server/src/extralit_server/bulk/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/bulk/__init__.py rename to extralit-server/src/extralit_server/bulk/__init__.py diff --git a/argilla-server/src/extralit_server/bulk/records_bulk.py b/extralit-server/src/extralit_server/bulk/records_bulk.py similarity index 100% rename from argilla-server/src/extralit_server/bulk/records_bulk.py rename to extralit-server/src/extralit_server/bulk/records_bulk.py diff --git a/argilla-server/src/extralit_server/cli/__init__.py b/extralit-server/src/extralit_server/cli/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/cli/__init__.py rename to extralit-server/src/extralit_server/cli/__init__.py diff --git a/argilla-server/src/extralit_server/cli/__main__.py b/extralit-server/src/extralit_server/cli/__main__.py similarity index 100% rename from argilla-server/src/extralit_server/cli/__main__.py rename to extralit-server/src/extralit_server/cli/__main__.py diff --git a/argilla-server/src/extralit_server/cli/database/__init__.py b/extralit-server/src/extralit_server/cli/database/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/__init__.py rename to extralit-server/src/extralit_server/cli/database/__init__.py diff --git a/argilla-server/src/extralit_server/cli/database/__main__.py b/extralit-server/src/extralit_server/cli/database/__main__.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/__main__.py rename to extralit-server/src/extralit_server/cli/database/__main__.py diff --git a/argilla-server/src/extralit_server/cli/database/migrate.py b/extralit-server/src/extralit_server/cli/database/migrate.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/migrate.py rename to extralit-server/src/extralit_server/cli/database/migrate.py diff --git a/argilla-server/src/extralit_server/cli/database/revisions.py b/extralit-server/src/extralit_server/cli/database/revisions.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/revisions.py rename to extralit-server/src/extralit_server/cli/database/revisions.py diff --git a/argilla-server/src/extralit_server/cli/database/users/__init__.py b/extralit-server/src/extralit_server/cli/database/users/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/users/__init__.py rename to extralit-server/src/extralit_server/cli/database/users/__init__.py diff --git a/argilla-server/src/extralit_server/cli/database/users/__main__.py b/extralit-server/src/extralit_server/cli/database/users/__main__.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/users/__main__.py rename to extralit-server/src/extralit_server/cli/database/users/__main__.py diff --git a/argilla-server/src/extralit_server/cli/database/users/create.py b/extralit-server/src/extralit_server/cli/database/users/create.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/users/create.py rename to extralit-server/src/extralit_server/cli/database/users/create.py diff --git a/argilla-server/src/extralit_server/cli/database/users/create_default.py b/extralit-server/src/extralit_server/cli/database/users/create_default.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/users/create_default.py rename to extralit-server/src/extralit_server/cli/database/users/create_default.py diff --git a/argilla-server/src/extralit_server/cli/database/users/migrate.py b/extralit-server/src/extralit_server/cli/database/users/migrate.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/users/migrate.py rename to extralit-server/src/extralit_server/cli/database/users/migrate.py diff --git a/argilla-server/src/extralit_server/cli/database/users/update.py b/extralit-server/src/extralit_server/cli/database/users/update.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/users/update.py rename to extralit-server/src/extralit_server/cli/database/users/update.py diff --git a/argilla-server/src/extralit_server/cli/database/users/utils.py b/extralit-server/src/extralit_server/cli/database/users/utils.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/users/utils.py rename to extralit-server/src/extralit_server/cli/database/users/utils.py diff --git a/argilla-server/src/extralit_server/cli/database/utils.py b/extralit-server/src/extralit_server/cli/database/utils.py similarity index 100% rename from argilla-server/src/extralit_server/cli/database/utils.py rename to extralit-server/src/extralit_server/cli/database/utils.py diff --git a/argilla-server/src/extralit_server/cli/rich.py b/extralit-server/src/extralit_server/cli/rich.py similarity index 100% rename from argilla-server/src/extralit_server/cli/rich.py rename to extralit-server/src/extralit_server/cli/rich.py diff --git a/argilla-server/src/extralit_server/cli/search_engine/__init__.py b/extralit-server/src/extralit_server/cli/search_engine/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/cli/search_engine/__init__.py rename to extralit-server/src/extralit_server/cli/search_engine/__init__.py diff --git a/argilla-server/src/extralit_server/cli/search_engine/__main__.py b/extralit-server/src/extralit_server/cli/search_engine/__main__.py similarity index 100% rename from argilla-server/src/extralit_server/cli/search_engine/__main__.py rename to extralit-server/src/extralit_server/cli/search_engine/__main__.py diff --git a/argilla-server/src/extralit_server/cli/search_engine/reindex.py b/extralit-server/src/extralit_server/cli/search_engine/reindex.py similarity index 100% rename from argilla-server/src/extralit_server/cli/search_engine/reindex.py rename to extralit-server/src/extralit_server/cli/search_engine/reindex.py diff --git a/argilla-server/src/extralit_server/cli/start.py b/extralit-server/src/extralit_server/cli/start.py similarity index 100% rename from argilla-server/src/extralit_server/cli/start.py rename to extralit-server/src/extralit_server/cli/start.py diff --git a/argilla-server/src/extralit_server/cli/worker.py b/extralit-server/src/extralit_server/cli/worker.py similarity index 100% rename from argilla-server/src/extralit_server/cli/worker.py rename to extralit-server/src/extralit_server/cli/worker.py diff --git a/argilla-server/src/extralit_server/constants.py b/extralit-server/src/extralit_server/constants.py similarity index 100% rename from argilla-server/src/extralit_server/constants.py rename to extralit-server/src/extralit_server/constants.py diff --git a/argilla-server/src/extralit_server/contexts/__init__.py b/extralit-server/src/extralit_server/contexts/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/__init__.py rename to extralit-server/src/extralit_server/contexts/__init__.py diff --git a/argilla-server/src/extralit_server/contexts/accounts.py b/extralit-server/src/extralit_server/contexts/accounts.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/accounts.py rename to extralit-server/src/extralit_server/contexts/accounts.py diff --git a/argilla-server/src/extralit_server/contexts/datasets.py b/extralit-server/src/extralit_server/contexts/datasets.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/datasets.py rename to extralit-server/src/extralit_server/contexts/datasets.py diff --git a/argilla-server/src/extralit_server/contexts/distribution.py b/extralit-server/src/extralit_server/contexts/distribution.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/distribution.py rename to extralit-server/src/extralit_server/contexts/distribution.py diff --git a/argilla-server/src/extralit_server/contexts/files.py b/extralit-server/src/extralit_server/contexts/files.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/files.py rename to extralit-server/src/extralit_server/contexts/files.py diff --git a/argilla-server/src/extralit_server/contexts/hub.py b/extralit-server/src/extralit_server/contexts/hub.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/hub.py rename to extralit-server/src/extralit_server/contexts/hub.py diff --git a/argilla-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 b/extralit-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 similarity index 100% rename from argilla-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 rename to extralit-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 diff --git a/argilla-server/src/extralit_server/contexts/imports.py b/extralit-server/src/extralit_server/contexts/imports.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/imports.py rename to extralit-server/src/extralit_server/contexts/imports.py diff --git a/argilla-server/src/extralit_server/contexts/info.py b/extralit-server/src/extralit_server/contexts/info.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/info.py rename to extralit-server/src/extralit_server/contexts/info.py diff --git a/argilla-server/src/extralit_server/contexts/questions.py b/extralit-server/src/extralit_server/contexts/questions.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/questions.py rename to extralit-server/src/extralit_server/contexts/questions.py diff --git a/argilla-server/src/extralit_server/contexts/records.py b/extralit-server/src/extralit_server/contexts/records.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/records.py rename to extralit-server/src/extralit_server/contexts/records.py diff --git a/argilla-server/src/extralit_server/contexts/search.py b/extralit-server/src/extralit_server/contexts/search.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/search.py rename to extralit-server/src/extralit_server/contexts/search.py diff --git a/argilla-server/src/extralit_server/contexts/settings.py b/extralit-server/src/extralit_server/contexts/settings.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/settings.py rename to extralit-server/src/extralit_server/contexts/settings.py diff --git a/argilla-server/src/extralit_server/contexts/webhooks.py b/extralit-server/src/extralit_server/contexts/webhooks.py similarity index 100% rename from argilla-server/src/extralit_server/contexts/webhooks.py rename to extralit-server/src/extralit_server/contexts/webhooks.py diff --git a/argilla-server/src/extralit_server/database.py b/extralit-server/src/extralit_server/database.py similarity index 100% rename from argilla-server/src/extralit_server/database.py rename to extralit-server/src/extralit_server/database.py diff --git a/argilla-server/src/extralit_server/enums.py b/extralit-server/src/extralit_server/enums.py similarity index 100% rename from argilla-server/src/extralit_server/enums.py rename to extralit-server/src/extralit_server/enums.py diff --git a/argilla-server/src/extralit_server/errors/__init__.py b/extralit-server/src/extralit_server/errors/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/errors/__init__.py rename to extralit-server/src/extralit_server/errors/__init__.py diff --git a/argilla-server/src/extralit_server/errors/base_errors.py b/extralit-server/src/extralit_server/errors/base_errors.py similarity index 100% rename from argilla-server/src/extralit_server/errors/base_errors.py rename to extralit-server/src/extralit_server/errors/base_errors.py diff --git a/argilla-server/src/extralit_server/errors/error_handler.py b/extralit-server/src/extralit_server/errors/error_handler.py similarity index 100% rename from argilla-server/src/extralit_server/errors/error_handler.py rename to extralit-server/src/extralit_server/errors/error_handler.py diff --git a/argilla-server/src/extralit_server/errors/future/__init__.py b/extralit-server/src/extralit_server/errors/future/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/errors/future/__init__.py rename to extralit-server/src/extralit_server/errors/future/__init__.py diff --git a/argilla-server/src/extralit_server/errors/future/base_errors.py b/extralit-server/src/extralit_server/errors/future/base_errors.py similarity index 100% rename from argilla-server/src/extralit_server/errors/future/base_errors.py rename to extralit-server/src/extralit_server/errors/future/base_errors.py diff --git a/argilla-server/src/extralit_server/helpers.py b/extralit-server/src/extralit_server/helpers.py similarity index 100% rename from argilla-server/src/extralit_server/helpers.py rename to extralit-server/src/extralit_server/helpers.py diff --git a/argilla-server/src/extralit_server/integrations/__init__.py b/extralit-server/src/extralit_server/integrations/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/integrations/__init__.py rename to extralit-server/src/extralit_server/integrations/__init__.py diff --git a/argilla-server/src/extralit_server/integrations/huggingface/__init__.py b/extralit-server/src/extralit_server/integrations/huggingface/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/integrations/huggingface/__init__.py rename to extralit-server/src/extralit_server/integrations/huggingface/__init__.py diff --git a/argilla-server/src/extralit_server/integrations/huggingface/spaces.py b/extralit-server/src/extralit_server/integrations/huggingface/spaces.py similarity index 100% rename from argilla-server/src/extralit_server/integrations/huggingface/spaces.py rename to extralit-server/src/extralit_server/integrations/huggingface/spaces.py diff --git a/argilla-server/src/extralit_server/jobs/__init__.py b/extralit-server/src/extralit_server/jobs/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/jobs/__init__.py rename to extralit-server/src/extralit_server/jobs/__init__.py diff --git a/argilla-server/src/extralit_server/jobs/dataset_jobs.py b/extralit-server/src/extralit_server/jobs/dataset_jobs.py similarity index 100% rename from argilla-server/src/extralit_server/jobs/dataset_jobs.py rename to extralit-server/src/extralit_server/jobs/dataset_jobs.py diff --git a/argilla-server/src/extralit_server/jobs/document_jobs.py b/extralit-server/src/extralit_server/jobs/document_jobs.py similarity index 100% rename from argilla-server/src/extralit_server/jobs/document_jobs.py rename to extralit-server/src/extralit_server/jobs/document_jobs.py diff --git a/argilla-server/src/extralit_server/jobs/hub_jobs.py b/extralit-server/src/extralit_server/jobs/hub_jobs.py similarity index 100% rename from argilla-server/src/extralit_server/jobs/hub_jobs.py rename to extralit-server/src/extralit_server/jobs/hub_jobs.py diff --git a/argilla-server/src/extralit_server/jobs/import_jobs.py b/extralit-server/src/extralit_server/jobs/import_jobs.py similarity index 100% rename from argilla-server/src/extralit_server/jobs/import_jobs.py rename to extralit-server/src/extralit_server/jobs/import_jobs.py diff --git a/argilla-server/src/extralit_server/jobs/queues.py b/extralit-server/src/extralit_server/jobs/queues.py similarity index 100% rename from argilla-server/src/extralit_server/jobs/queues.py rename to extralit-server/src/extralit_server/jobs/queues.py diff --git a/argilla-server/src/extralit_server/jobs/webhook_jobs.py b/extralit-server/src/extralit_server/jobs/webhook_jobs.py similarity index 100% rename from argilla-server/src/extralit_server/jobs/webhook_jobs.py rename to extralit-server/src/extralit_server/jobs/webhook_jobs.py diff --git a/argilla-server/src/extralit_server/logging.py b/extralit-server/src/extralit_server/logging.py similarity index 100% rename from argilla-server/src/extralit_server/logging.py rename to extralit-server/src/extralit_server/logging.py diff --git a/argilla-server/src/extralit_server/models/__init__.py b/extralit-server/src/extralit_server/models/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/models/__init__.py rename to extralit-server/src/extralit_server/models/__init__.py diff --git a/argilla-server/src/extralit_server/models/base.py b/extralit-server/src/extralit_server/models/base.py similarity index 100% rename from argilla-server/src/extralit_server/models/base.py rename to extralit-server/src/extralit_server/models/base.py diff --git a/argilla-server/src/extralit_server/models/database.py b/extralit-server/src/extralit_server/models/database.py similarity index 100% rename from argilla-server/src/extralit_server/models/database.py rename to extralit-server/src/extralit_server/models/database.py diff --git a/argilla-server/src/extralit_server/models/metadata_properties.py b/extralit-server/src/extralit_server/models/metadata_properties.py similarity index 100% rename from argilla-server/src/extralit_server/models/metadata_properties.py rename to extralit-server/src/extralit_server/models/metadata_properties.py diff --git a/argilla-server/src/extralit_server/models/mixins.py b/extralit-server/src/extralit_server/models/mixins.py similarity index 100% rename from argilla-server/src/extralit_server/models/mixins.py rename to extralit-server/src/extralit_server/models/mixins.py diff --git a/argilla-server/src/extralit_server/models/suggestions.py b/extralit-server/src/extralit_server/models/suggestions.py similarity index 100% rename from argilla-server/src/extralit_server/models/suggestions.py rename to extralit-server/src/extralit_server/models/suggestions.py diff --git a/argilla-server/src/extralit_server/search_engine/__init__.py b/extralit-server/src/extralit_server/search_engine/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/search_engine/__init__.py rename to extralit-server/src/extralit_server/search_engine/__init__.py diff --git a/argilla-server/src/extralit_server/search_engine/base.py b/extralit-server/src/extralit_server/search_engine/base.py similarity index 100% rename from argilla-server/src/extralit_server/search_engine/base.py rename to extralit-server/src/extralit_server/search_engine/base.py diff --git a/argilla-server/src/extralit_server/search_engine/commons.py b/extralit-server/src/extralit_server/search_engine/commons.py similarity index 100% rename from argilla-server/src/extralit_server/search_engine/commons.py rename to extralit-server/src/extralit_server/search_engine/commons.py diff --git a/argilla-server/src/extralit_server/search_engine/elasticsearch.py b/extralit-server/src/extralit_server/search_engine/elasticsearch.py similarity index 100% rename from argilla-server/src/extralit_server/search_engine/elasticsearch.py rename to extralit-server/src/extralit_server/search_engine/elasticsearch.py diff --git a/argilla-server/src/extralit_server/search_engine/opensearch.py b/extralit-server/src/extralit_server/search_engine/opensearch.py similarity index 100% rename from argilla-server/src/extralit_server/search_engine/opensearch.py rename to extralit-server/src/extralit_server/search_engine/opensearch.py diff --git a/argilla-server/src/extralit_server/security/__init__.py b/extralit-server/src/extralit_server/security/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/security/__init__.py rename to extralit-server/src/extralit_server/security/__init__.py diff --git a/argilla-server/src/extralit_server/security/authentication/__init__.py b/extralit-server/src/extralit_server/security/authentication/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/__init__.py rename to extralit-server/src/extralit_server/security/authentication/__init__.py diff --git a/argilla-server/src/extralit_server/security/authentication/db/__init__.py b/extralit-server/src/extralit_server/security/authentication/db/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/db/__init__.py rename to extralit-server/src/extralit_server/security/authentication/db/__init__.py diff --git a/argilla-server/src/extralit_server/security/authentication/db/api_key_backend.py b/extralit-server/src/extralit_server/security/authentication/db/api_key_backend.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/db/api_key_backend.py rename to extralit-server/src/extralit_server/security/authentication/db/api_key_backend.py diff --git a/argilla-server/src/extralit_server/security/authentication/db/bearer_token_backend.py b/extralit-server/src/extralit_server/security/authentication/db/bearer_token_backend.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/db/bearer_token_backend.py rename to extralit-server/src/extralit_server/security/authentication/db/bearer_token_backend.py diff --git a/argilla-server/src/extralit_server/security/authentication/jwt.py b/extralit-server/src/extralit_server/security/authentication/jwt.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/jwt.py rename to extralit-server/src/extralit_server/security/authentication/jwt.py diff --git a/argilla-server/src/extralit_server/security/authentication/oauth2/__init__.py b/extralit-server/src/extralit_server/security/authentication/oauth2/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/oauth2/__init__.py rename to extralit-server/src/extralit_server/security/authentication/oauth2/__init__.py diff --git a/argilla-server/src/extralit_server/security/authentication/oauth2/_backends.py b/extralit-server/src/extralit_server/security/authentication/oauth2/_backends.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/oauth2/_backends.py rename to extralit-server/src/extralit_server/security/authentication/oauth2/_backends.py diff --git a/argilla-server/src/extralit_server/security/authentication/oauth2/auth_backend.py b/extralit-server/src/extralit_server/security/authentication/oauth2/auth_backend.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/oauth2/auth_backend.py rename to extralit-server/src/extralit_server/security/authentication/oauth2/auth_backend.py diff --git a/argilla-server/src/extralit_server/security/authentication/oauth2/provider.py b/extralit-server/src/extralit_server/security/authentication/oauth2/provider.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/oauth2/provider.py rename to extralit-server/src/extralit_server/security/authentication/oauth2/provider.py diff --git a/argilla-server/src/extralit_server/security/authentication/oauth2/settings.py b/extralit-server/src/extralit_server/security/authentication/oauth2/settings.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/oauth2/settings.py rename to extralit-server/src/extralit_server/security/authentication/oauth2/settings.py diff --git a/argilla-server/src/extralit_server/security/authentication/provider.py b/extralit-server/src/extralit_server/security/authentication/provider.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/provider.py rename to extralit-server/src/extralit_server/security/authentication/provider.py diff --git a/argilla-server/src/extralit_server/security/authentication/userinfo.py b/extralit-server/src/extralit_server/security/authentication/userinfo.py similarity index 100% rename from argilla-server/src/extralit_server/security/authentication/userinfo.py rename to extralit-server/src/extralit_server/security/authentication/userinfo.py diff --git a/argilla-server/src/extralit_server/security/settings.py b/extralit-server/src/extralit_server/security/settings.py similarity index 100% rename from argilla-server/src/extralit_server/security/settings.py rename to extralit-server/src/extralit_server/security/settings.py diff --git a/argilla-server/src/extralit_server/settings.py b/extralit-server/src/extralit_server/settings.py similarity index 100% rename from argilla-server/src/extralit_server/settings.py rename to extralit-server/src/extralit_server/settings.py diff --git a/argilla-server/src/extralit_server/static_rewrite.py b/extralit-server/src/extralit_server/static_rewrite.py similarity index 100% rename from argilla-server/src/extralit_server/static_rewrite.py rename to extralit-server/src/extralit_server/static_rewrite.py diff --git a/argilla-server/src/extralit_server/telemetry/__init__.py b/extralit-server/src/extralit_server/telemetry/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/telemetry/__init__.py rename to extralit-server/src/extralit_server/telemetry/__init__.py diff --git a/argilla-server/src/extralit_server/telemetry/_client.py b/extralit-server/src/extralit_server/telemetry/_client.py similarity index 100% rename from argilla-server/src/extralit_server/telemetry/_client.py rename to extralit-server/src/extralit_server/telemetry/_client.py diff --git a/argilla-server/src/extralit_server/telemetry/_helpers.py b/extralit-server/src/extralit_server/telemetry/_helpers.py similarity index 100% rename from argilla-server/src/extralit_server/telemetry/_helpers.py rename to extralit-server/src/extralit_server/telemetry/_helpers.py diff --git a/argilla-server/src/extralit_server/use_cases/__init__.py b/extralit-server/src/extralit_server/use_cases/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/use_cases/__init__.py rename to extralit-server/src/extralit_server/use_cases/__init__.py diff --git a/argilla-server/src/extralit_server/use_cases/responses/__init__.py b/extralit-server/src/extralit_server/use_cases/responses/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/use_cases/responses/__init__.py rename to extralit-server/src/extralit_server/use_cases/responses/__init__.py diff --git a/argilla-server/src/extralit_server/use_cases/responses/upsert_responses_in_bulk.py b/extralit-server/src/extralit_server/use_cases/responses/upsert_responses_in_bulk.py similarity index 100% rename from argilla-server/src/extralit_server/use_cases/responses/upsert_responses_in_bulk.py rename to extralit-server/src/extralit_server/use_cases/responses/upsert_responses_in_bulk.py diff --git a/argilla-server/src/extralit_server/utils.py b/extralit-server/src/extralit_server/utils.py similarity index 100% rename from argilla-server/src/extralit_server/utils.py rename to extralit-server/src/extralit_server/utils.py diff --git a/argilla-server/src/extralit_server/utils/__init__.py b/extralit-server/src/extralit_server/utils/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/utils/__init__.py rename to extralit-server/src/extralit_server/utils/__init__.py diff --git a/argilla-server/src/extralit_server/utils/_fastapi.py b/extralit-server/src/extralit_server/utils/_fastapi.py similarity index 100% rename from argilla-server/src/extralit_server/utils/_fastapi.py rename to extralit-server/src/extralit_server/utils/_fastapi.py diff --git a/argilla-server/src/extralit_server/utils/params.py b/extralit-server/src/extralit_server/utils/params.py similarity index 100% rename from argilla-server/src/extralit_server/utils/params.py rename to extralit-server/src/extralit_server/utils/params.py diff --git a/argilla-server/src/extralit_server/utils/str_enum.py b/extralit-server/src/extralit_server/utils/str_enum.py similarity index 100% rename from argilla-server/src/extralit_server/utils/str_enum.py rename to extralit-server/src/extralit_server/utils/str_enum.py diff --git a/argilla-server/src/extralit_server/validators/__init__.py b/extralit-server/src/extralit_server/validators/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/validators/__init__.py rename to extralit-server/src/extralit_server/validators/__init__.py diff --git a/argilla-server/src/extralit_server/validators/datasets.py b/extralit-server/src/extralit_server/validators/datasets.py similarity index 100% rename from argilla-server/src/extralit_server/validators/datasets.py rename to extralit-server/src/extralit_server/validators/datasets.py diff --git a/argilla-server/src/extralit_server/validators/questions.py b/extralit-server/src/extralit_server/validators/questions.py similarity index 100% rename from argilla-server/src/extralit_server/validators/questions.py rename to extralit-server/src/extralit_server/validators/questions.py diff --git a/argilla-server/src/extralit_server/validators/records.py b/extralit-server/src/extralit_server/validators/records.py similarity index 100% rename from argilla-server/src/extralit_server/validators/records.py rename to extralit-server/src/extralit_server/validators/records.py diff --git a/argilla-server/src/extralit_server/validators/response_values.py b/extralit-server/src/extralit_server/validators/response_values.py similarity index 100% rename from argilla-server/src/extralit_server/validators/response_values.py rename to extralit-server/src/extralit_server/validators/response_values.py diff --git a/argilla-server/src/extralit_server/validators/responses.py b/extralit-server/src/extralit_server/validators/responses.py similarity index 100% rename from argilla-server/src/extralit_server/validators/responses.py rename to extralit-server/src/extralit_server/validators/responses.py diff --git a/argilla-server/src/extralit_server/validators/suggestions.py b/extralit-server/src/extralit_server/validators/suggestions.py similarity index 100% rename from argilla-server/src/extralit_server/validators/suggestions.py rename to extralit-server/src/extralit_server/validators/suggestions.py diff --git a/argilla-server/src/extralit_server/validators/users.py b/extralit-server/src/extralit_server/validators/users.py similarity index 100% rename from argilla-server/src/extralit_server/validators/users.py rename to extralit-server/src/extralit_server/validators/users.py diff --git a/argilla-server/src/extralit_server/validators/vectors.py b/extralit-server/src/extralit_server/validators/vectors.py similarity index 100% rename from argilla-server/src/extralit_server/validators/vectors.py rename to extralit-server/src/extralit_server/validators/vectors.py diff --git a/argilla-server/src/extralit_server/validators/webhooks.py b/extralit-server/src/extralit_server/validators/webhooks.py similarity index 100% rename from argilla-server/src/extralit_server/validators/webhooks.py rename to extralit-server/src/extralit_server/validators/webhooks.py diff --git a/argilla-server/src/extralit_server/webhooks/__init__.py b/extralit-server/src/extralit_server/webhooks/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/webhooks/__init__.py rename to extralit-server/src/extralit_server/webhooks/__init__.py diff --git a/argilla-server/src/extralit_server/webhooks/v1/__init__.py b/extralit-server/src/extralit_server/webhooks/v1/__init__.py similarity index 100% rename from argilla-server/src/extralit_server/webhooks/v1/__init__.py rename to extralit-server/src/extralit_server/webhooks/v1/__init__.py diff --git a/argilla-server/src/extralit_server/webhooks/v1/commons.py b/extralit-server/src/extralit_server/webhooks/v1/commons.py similarity index 100% rename from argilla-server/src/extralit_server/webhooks/v1/commons.py rename to extralit-server/src/extralit_server/webhooks/v1/commons.py diff --git a/argilla-server/src/extralit_server/webhooks/v1/datasets.py b/extralit-server/src/extralit_server/webhooks/v1/datasets.py similarity index 100% rename from argilla-server/src/extralit_server/webhooks/v1/datasets.py rename to extralit-server/src/extralit_server/webhooks/v1/datasets.py diff --git a/argilla-server/src/extralit_server/webhooks/v1/enums.py b/extralit-server/src/extralit_server/webhooks/v1/enums.py similarity index 100% rename from argilla-server/src/extralit_server/webhooks/v1/enums.py rename to extralit-server/src/extralit_server/webhooks/v1/enums.py diff --git a/argilla-server/src/extralit_server/webhooks/v1/event.py b/extralit-server/src/extralit_server/webhooks/v1/event.py similarity index 100% rename from argilla-server/src/extralit_server/webhooks/v1/event.py rename to extralit-server/src/extralit_server/webhooks/v1/event.py diff --git a/argilla-server/src/extralit_server/webhooks/v1/ping.py b/extralit-server/src/extralit_server/webhooks/v1/ping.py similarity index 100% rename from argilla-server/src/extralit_server/webhooks/v1/ping.py rename to extralit-server/src/extralit_server/webhooks/v1/ping.py diff --git a/argilla-server/src/extralit_server/webhooks/v1/records.py b/extralit-server/src/extralit_server/webhooks/v1/records.py similarity index 100% rename from argilla-server/src/extralit_server/webhooks/v1/records.py rename to extralit-server/src/extralit_server/webhooks/v1/records.py diff --git a/argilla-server/src/extralit_server/webhooks/v1/responses.py b/extralit-server/src/extralit_server/webhooks/v1/responses.py similarity index 100% rename from argilla-server/src/extralit_server/webhooks/v1/responses.py rename to extralit-server/src/extralit_server/webhooks/v1/responses.py diff --git a/argilla-server/src/extralit_server/webhooks/v1/schemas.py b/extralit-server/src/extralit_server/webhooks/v1/schemas.py similarity index 100% rename from argilla-server/src/extralit_server/webhooks/v1/schemas.py rename to extralit-server/src/extralit_server/webhooks/v1/schemas.py diff --git a/argilla-server/tests/__init__.py b/extralit-server/tests/__init__.py similarity index 100% rename from argilla-server/tests/__init__.py rename to extralit-server/tests/__init__.py diff --git a/argilla-server/tests/conftest.py b/extralit-server/tests/conftest.py similarity index 100% rename from argilla-server/tests/conftest.py rename to extralit-server/tests/conftest.py diff --git a/argilla-server/tests/database.py b/extralit-server/tests/database.py similarity index 100% rename from argilla-server/tests/database.py rename to extralit-server/tests/database.py diff --git a/argilla-server/tests/factories.py b/extralit-server/tests/factories.py similarity index 100% rename from argilla-server/tests/factories.py rename to extralit-server/tests/factories.py diff --git a/argilla-server/tests/unit/__init__.py b/extralit-server/tests/unit/__init__.py similarity index 100% rename from argilla-server/tests/unit/__init__.py rename to extralit-server/tests/unit/__init__.py diff --git a/argilla-server/tests/unit/api/__init__.py b/extralit-server/tests/unit/api/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/__init__.py rename to extralit-server/tests/unit/api/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/__init__.py b/extralit-server/tests/unit/api/handlers/v1/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/authentication/__init__.py b/extralit-server/tests/unit/api/handlers/v1/authentication/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/authentication/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/authentication/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/authentication/test_create_token.py b/extralit-server/tests/unit/api/handlers/v1/authentication/test_create_token.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/authentication/test_create_token.py rename to extralit-server/tests/unit/api/handlers/v1/authentication/test_create_token.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/__init__.py b/extralit-server/tests/unit/api/handlers/v1/datasets/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_create_dataset_field.py b/extralit-server/tests/unit/api/handlers/v1/datasets/fields/test_create_dataset_field.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_create_dataset_field.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/fields/test_create_dataset_field.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_list_dataset_fields.py b/extralit-server/tests/unit/api/handlers/v1/datasets/fields/test_list_dataset_fields.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/fields/test_list_dataset_fields.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/fields/test_list_dataset_fields.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/questions/__init__.py b/extralit-server/tests/unit/api/handlers/v1/datasets/questions/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/questions/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/questions/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_create_dataset_question.py b/extralit-server/tests/unit/api/handlers/v1/datasets/questions/test_create_dataset_question.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_create_dataset_question.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/questions/test_create_dataset_question.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_list_dataset_questions.py b/extralit-server/tests/unit/api/handlers/v1/datasets/questions/test_list_dataset_questions.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/questions/test_list_dataset_questions.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/questions/test_list_dataset_questions.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/__init__.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/records/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/records/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/__init__.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_responses.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_suggestions.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_dataset_records_bulk_with_vectors.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_update_dataset_records_in_bulk.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_update_dataset_records_in_bulk.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_update_dataset_records_in_bulk.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_update_dataset_records_in_bulk.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_upsert_dataset_records_bulk.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_upsert_dataset_records_bulk.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_upsert_dataset_records_bulk.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_upsert_dataset_records_bulk.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/records/test_delete_dataset_records.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/test_delete_dataset_records.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/records/test_delete_dataset_records.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/records/test_delete_dataset_records.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_create_dataset.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_create_dataset.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_field.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_field.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_field.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_field.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_metadata_properties.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_metadata_properties.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_metadata_properties.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_metadata_properties.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_question.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_question.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_question.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_question.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_vector_settings.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_vector_settings.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_vector_settings.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_create_dataset_vector_settings.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_delete_dataset.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_delete_dataset.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_delete_dataset.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_delete_dataset.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_list_current_user_datasets.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_list_current_user_datasets.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_list_current_user_datasets.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_list_current_user_datasets.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_list_dataset_records_search_suggestions_options.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_list_dataset_records_search_suggestions_options.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_list_dataset_records_search_suggestions_options.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_list_dataset_records_search_suggestions_options.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_publish_dataset.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_publish_dataset.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_publish_dataset.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_publish_dataset.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_questions.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_questions.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_questions.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_questions.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_search_current_user_dataset_records.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_search_current_user_dataset_records.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_search_current_user_dataset_records.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_search_current_user_dataset_records.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_search_dataset_records.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_search_dataset_records.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_search_dataset_records.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_search_dataset_records.py diff --git a/argilla-server/tests/unit/api/handlers/v1/datasets/test_update_dataset.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_update_dataset.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/datasets/test_update_dataset.py rename to extralit-server/tests/unit/api/handlers/v1/datasets/test_update_dataset.py diff --git a/argilla-server/tests/unit/api/handlers/v1/fields/test_update_field.py b/extralit-server/tests/unit/api/handlers/v1/fields/test_update_field.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/fields/test_update_field.py rename to extralit-server/tests/unit/api/handlers/v1/fields/test_update_field.py diff --git a/argilla-server/tests/unit/api/handlers/v1/info/__init__.py b/extralit-server/tests/unit/api/handlers/v1/info/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/info/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/info/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/info/test_get_status.py b/extralit-server/tests/unit/api/handlers/v1/info/test_get_status.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/info/test_get_status.py rename to extralit-server/tests/unit/api/handlers/v1/info/test_get_status.py diff --git a/argilla-server/tests/unit/api/handlers/v1/info/test_get_version.py b/extralit-server/tests/unit/api/handlers/v1/info/test_get_version.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/info/test_get_version.py rename to extralit-server/tests/unit/api/handlers/v1/info/test_get_version.py diff --git a/argilla-server/tests/unit/api/handlers/v1/questions/__init__.py b/extralit-server/tests/unit/api/handlers/v1/questions/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/questions/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/questions/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/questions/test_update_question.py b/extralit-server/tests/unit/api/handlers/v1/questions/test_update_question.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/questions/test_update_question.py rename to extralit-server/tests/unit/api/handlers/v1/questions/test_update_question.py diff --git a/argilla-server/tests/unit/api/handlers/v1/records/__init__.py b/extralit-server/tests/unit/api/handlers/v1/records/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/records/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/records/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/records/test_create_record_response.py b/extralit-server/tests/unit/api/handlers/v1/records/test_create_record_response.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/records/test_create_record_response.py rename to extralit-server/tests/unit/api/handlers/v1/records/test_create_record_response.py diff --git a/argilla-server/tests/unit/api/handlers/v1/records/test_delete_record.py b/extralit-server/tests/unit/api/handlers/v1/records/test_delete_record.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/records/test_delete_record.py rename to extralit-server/tests/unit/api/handlers/v1/records/test_delete_record.py diff --git a/argilla-server/tests/unit/api/handlers/v1/records/test_update_record.py b/extralit-server/tests/unit/api/handlers/v1/records/test_update_record.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/records/test_update_record.py rename to extralit-server/tests/unit/api/handlers/v1/records/test_update_record.py diff --git a/argilla-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py b/extralit-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py rename to extralit-server/tests/unit/api/handlers/v1/records/test_upsert_suggestion.py diff --git a/argilla-server/tests/unit/api/handlers/v1/responses/__init__.py b/extralit-server/tests/unit/api/handlers/v1/responses/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/responses/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/responses/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py b/extralit-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py rename to extralit-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py diff --git a/argilla-server/tests/unit/api/handlers/v1/responses/test_delete_response.py b/extralit-server/tests/unit/api/handlers/v1/responses/test_delete_response.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/responses/test_delete_response.py rename to extralit-server/tests/unit/api/handlers/v1/responses/test_delete_response.py diff --git a/argilla-server/tests/unit/api/handlers/v1/responses/test_update_response.py b/extralit-server/tests/unit/api/handlers/v1/responses/test_update_response.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/responses/test_update_response.py rename to extralit-server/tests/unit/api/handlers/v1/responses/test_update_response.py diff --git a/argilla-server/tests/unit/api/handlers/v1/settings/__init__.py b/extralit-server/tests/unit/api/handlers/v1/settings/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/settings/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/settings/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/settings/test_get_settings.py b/extralit-server/tests/unit/api/handlers/v1/settings/test_get_settings.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/settings/test_get_settings.py rename to extralit-server/tests/unit/api/handlers/v1/settings/test_get_settings.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_bulk_documents.py b/extralit-server/tests/unit/api/handlers/v1/test_bulk_documents.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_bulk_documents.py rename to extralit-server/tests/unit/api/handlers/v1/test_bulk_documents.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_datasets.py b/extralit-server/tests/unit/api/handlers/v1/test_datasets.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_datasets.py rename to extralit-server/tests/unit/api/handlers/v1/test_datasets.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_documents.py b/extralit-server/tests/unit/api/handlers/v1/test_documents.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_documents.py rename to extralit-server/tests/unit/api/handlers/v1/test_documents.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_fields.py b/extralit-server/tests/unit/api/handlers/v1/test_fields.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_fields.py rename to extralit-server/tests/unit/api/handlers/v1/test_fields.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_files.py b/extralit-server/tests/unit/api/handlers/v1/test_files.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_files.py rename to extralit-server/tests/unit/api/handlers/v1/test_files.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_imports.py b/extralit-server/tests/unit/api/handlers/v1/test_imports.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_imports.py rename to extralit-server/tests/unit/api/handlers/v1/test_imports.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_list_dataset_records.py b/extralit-server/tests/unit/api/handlers/v1/test_list_dataset_records.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_list_dataset_records.py rename to extralit-server/tests/unit/api/handlers/v1/test_list_dataset_records.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_metadata_properties.py b/extralit-server/tests/unit/api/handlers/v1/test_metadata_properties.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_metadata_properties.py rename to extralit-server/tests/unit/api/handlers/v1/test_metadata_properties.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_models.py b/extralit-server/tests/unit/api/handlers/v1/test_models.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_models.py rename to extralit-server/tests/unit/api/handlers/v1/test_models.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_oauth2.py b/extralit-server/tests/unit/api/handlers/v1/test_oauth2.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_oauth2.py rename to extralit-server/tests/unit/api/handlers/v1/test_oauth2.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_questions.py b/extralit-server/tests/unit/api/handlers/v1/test_questions.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_questions.py rename to extralit-server/tests/unit/api/handlers/v1/test_questions.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_records.py b/extralit-server/tests/unit/api/handlers/v1/test_records.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_records.py rename to extralit-server/tests/unit/api/handlers/v1/test_records.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_responses.py b/extralit-server/tests/unit/api/handlers/v1/test_responses.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_responses.py rename to extralit-server/tests/unit/api/handlers/v1/test_responses.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_suggestions.py b/extralit-server/tests/unit/api/handlers/v1/test_suggestions.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_suggestions.py rename to extralit-server/tests/unit/api/handlers/v1/test_suggestions.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_users.py b/extralit-server/tests/unit/api/handlers/v1/test_users.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_users.py rename to extralit-server/tests/unit/api/handlers/v1/test_users.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_vectors_settings.py b/extralit-server/tests/unit/api/handlers/v1/test_vectors_settings.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_vectors_settings.py rename to extralit-server/tests/unit/api/handlers/v1/test_vectors_settings.py diff --git a/argilla-server/tests/unit/api/handlers/v1/test_workspaces.py b/extralit-server/tests/unit/api/handlers/v1/test_workspaces.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/test_workspaces.py rename to extralit-server/tests/unit/api/handlers/v1/test_workspaces.py diff --git a/argilla-server/tests/unit/api/handlers/v1/users/__init__.py b/extralit-server/tests/unit/api/handlers/v1/users/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/users/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/users/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_create_user.py b/extralit-server/tests/unit/api/handlers/v1/users/test_create_user.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/users/test_create_user.py rename to extralit-server/tests/unit/api/handlers/v1/users/test_create_user.py diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_delete_user.py b/extralit-server/tests/unit/api/handlers/v1/users/test_delete_user.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/users/test_delete_user.py rename to extralit-server/tests/unit/api/handlers/v1/users/test_delete_user.py diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_get_current_user.py b/extralit-server/tests/unit/api/handlers/v1/users/test_get_current_user.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/users/test_get_current_user.py rename to extralit-server/tests/unit/api/handlers/v1/users/test_get_current_user.py diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_get_user.py b/extralit-server/tests/unit/api/handlers/v1/users/test_get_user.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/users/test_get_user.py rename to extralit-server/tests/unit/api/handlers/v1/users/test_get_user.py diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_list_users.py b/extralit-server/tests/unit/api/handlers/v1/users/test_list_users.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/users/test_list_users.py rename to extralit-server/tests/unit/api/handlers/v1/users/test_list_users.py diff --git a/argilla-server/tests/unit/api/handlers/v1/users/test_update_user.py b/extralit-server/tests/unit/api/handlers/v1/users/test_update_user.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/users/test_update_user.py rename to extralit-server/tests/unit/api/handlers/v1/users/test_update_user.py diff --git a/argilla-server/tests/unit/api/handlers/v1/webhooks/__init__.py b/extralit-server/tests/unit/api/handlers/v1/webhooks/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/webhooks/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/webhooks/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_create_webhook.py b/extralit-server/tests/unit/api/handlers/v1/webhooks/test_create_webhook.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/webhooks/test_create_webhook.py rename to extralit-server/tests/unit/api/handlers/v1/webhooks/test_create_webhook.py diff --git a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_delete_webhook.py b/extralit-server/tests/unit/api/handlers/v1/webhooks/test_delete_webhook.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/webhooks/test_delete_webhook.py rename to extralit-server/tests/unit/api/handlers/v1/webhooks/test_delete_webhook.py diff --git a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_list_webhooks.py b/extralit-server/tests/unit/api/handlers/v1/webhooks/test_list_webhooks.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/webhooks/test_list_webhooks.py rename to extralit-server/tests/unit/api/handlers/v1/webhooks/test_list_webhooks.py diff --git a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py b/extralit-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py rename to extralit-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py diff --git a/argilla-server/tests/unit/api/handlers/v1/webhooks/test_update_webhook.py b/extralit-server/tests/unit/api/handlers/v1/webhooks/test_update_webhook.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/webhooks/test_update_webhook.py rename to extralit-server/tests/unit/api/handlers/v1/webhooks/test_update_webhook.py diff --git a/argilla-server/tests/unit/api/handlers/v1/workspaces/__init__.py b/extralit-server/tests/unit/api/handlers/v1/workspaces/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/workspaces/__init__.py rename to extralit-server/tests/unit/api/handlers/v1/workspaces/__init__.py diff --git a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace.py b/extralit-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace.py rename to extralit-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace.py diff --git a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace_user.py b/extralit-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace_user.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace_user.py rename to extralit-server/tests/unit/api/handlers/v1/workspaces/test_create_workspace_user.py diff --git a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_delete_workspace_user.py b/extralit-server/tests/unit/api/handlers/v1/workspaces/test_delete_workspace_user.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/workspaces/test_delete_workspace_user.py rename to extralit-server/tests/unit/api/handlers/v1/workspaces/test_delete_workspace_user.py diff --git a/argilla-server/tests/unit/api/handlers/v1/workspaces/test_list_workspace_users.py b/extralit-server/tests/unit/api/handlers/v1/workspaces/test_list_workspace_users.py similarity index 100% rename from argilla-server/tests/unit/api/handlers/v1/workspaces/test_list_workspace_users.py rename to extralit-server/tests/unit/api/handlers/v1/workspaces/test_list_workspace_users.py diff --git a/argilla-server/tests/unit/api/schemas/__init__.py b/extralit-server/tests/unit/api/schemas/__init__.py similarity index 100% rename from argilla-server/tests/unit/api/schemas/__init__.py rename to extralit-server/tests/unit/api/schemas/__init__.py diff --git a/argilla-server/tests/unit/api/schemas/v1/records/test_record_create.py b/extralit-server/tests/unit/api/schemas/v1/records/test_record_create.py similarity index 100% rename from argilla-server/tests/unit/api/schemas/v1/records/test_record_create.py rename to extralit-server/tests/unit/api/schemas/v1/records/test_record_create.py diff --git a/argilla-server/tests/unit/api/schemas/v1/records/test_record_upsert.py b/extralit-server/tests/unit/api/schemas/v1/records/test_record_upsert.py similarity index 100% rename from argilla-server/tests/unit/api/schemas/v1/records/test_record_upsert.py rename to extralit-server/tests/unit/api/schemas/v1/records/test_record_upsert.py diff --git a/argilla-server/tests/unit/api/schemas/v1/responses/test_response_value_create.py b/extralit-server/tests/unit/api/schemas/v1/responses/test_response_value_create.py similarity index 100% rename from argilla-server/tests/unit/api/schemas/v1/responses/test_response_value_create.py rename to extralit-server/tests/unit/api/schemas/v1/responses/test_response_value_create.py diff --git a/argilla-server/tests/unit/api/schemas/v1/test_commons.py b/extralit-server/tests/unit/api/schemas/v1/test_commons.py similarity index 100% rename from argilla-server/tests/unit/api/schemas/v1/test_commons.py rename to extralit-server/tests/unit/api/schemas/v1/test_commons.py diff --git a/argilla-server/tests/unit/api/test_docs.py b/extralit-server/tests/unit/api/test_docs.py similarity index 100% rename from argilla-server/tests/unit/api/test_docs.py rename to extralit-server/tests/unit/api/test_docs.py diff --git a/argilla-server/tests/unit/api/test_not_found_routes.py b/extralit-server/tests/unit/api/test_not_found_routes.py similarity index 100% rename from argilla-server/tests/unit/api/test_not_found_routes.py rename to extralit-server/tests/unit/api/test_not_found_routes.py diff --git a/argilla-server/tests/unit/api/v0/test_workspaces.py b/extralit-server/tests/unit/api/v0/test_workspaces.py similarity index 100% rename from argilla-server/tests/unit/api/v0/test_workspaces.py rename to extralit-server/tests/unit/api/v0/test_workspaces.py diff --git a/argilla-server/tests/unit/cli/__init__.py b/extralit-server/tests/unit/cli/__init__.py similarity index 100% rename from argilla-server/tests/unit/cli/__init__.py rename to extralit-server/tests/unit/cli/__init__.py diff --git a/argilla-server/tests/unit/cli/conftest.py b/extralit-server/tests/unit/cli/conftest.py similarity index 100% rename from argilla-server/tests/unit/cli/conftest.py rename to extralit-server/tests/unit/cli/conftest.py diff --git a/argilla-server/tests/unit/cli/database/__init__.py b/extralit-server/tests/unit/cli/database/__init__.py similarity index 100% rename from argilla-server/tests/unit/cli/database/__init__.py rename to extralit-server/tests/unit/cli/database/__init__.py diff --git a/argilla-server/tests/unit/cli/database/users/__init__.py b/extralit-server/tests/unit/cli/database/users/__init__.py similarity index 100% rename from argilla-server/tests/unit/cli/database/users/__init__.py rename to extralit-server/tests/unit/cli/database/users/__init__.py diff --git a/argilla-server/tests/unit/cli/database/users/conftest.py b/extralit-server/tests/unit/cli/database/users/conftest.py similarity index 100% rename from argilla-server/tests/unit/cli/database/users/conftest.py rename to extralit-server/tests/unit/cli/database/users/conftest.py diff --git a/argilla-server/tests/unit/cli/database/users/test_create.py b/extralit-server/tests/unit/cli/database/users/test_create.py similarity index 100% rename from argilla-server/tests/unit/cli/database/users/test_create.py rename to extralit-server/tests/unit/cli/database/users/test_create.py diff --git a/argilla-server/tests/unit/cli/database/users/test_create_default.py b/extralit-server/tests/unit/cli/database/users/test_create_default.py similarity index 100% rename from argilla-server/tests/unit/cli/database/users/test_create_default.py rename to extralit-server/tests/unit/cli/database/users/test_create_default.py diff --git a/argilla-server/tests/unit/cli/database/users/test_migrate.py b/extralit-server/tests/unit/cli/database/users/test_migrate.py similarity index 100% rename from argilla-server/tests/unit/cli/database/users/test_migrate.py rename to extralit-server/tests/unit/cli/database/users/test_migrate.py diff --git a/argilla-server/tests/unit/cli/database/users/test_update.py b/extralit-server/tests/unit/cli/database/users/test_update.py similarity index 100% rename from argilla-server/tests/unit/cli/database/users/test_update.py rename to extralit-server/tests/unit/cli/database/users/test_update.py diff --git a/argilla-server/tests/unit/cli/database/users/test_user_files/users.yml b/extralit-server/tests/unit/cli/database/users/test_user_files/users.yml similarity index 100% rename from argilla-server/tests/unit/cli/database/users/test_user_files/users.yml rename to extralit-server/tests/unit/cli/database/users/test_user_files/users.yml diff --git a/argilla-server/tests/unit/cli/database/users/test_user_files/users_invalid_user.yml b/extralit-server/tests/unit/cli/database/users/test_user_files/users_invalid_user.yml similarity index 100% rename from argilla-server/tests/unit/cli/database/users/test_user_files/users_invalid_user.yml rename to extralit-server/tests/unit/cli/database/users/test_user_files/users_invalid_user.yml diff --git a/argilla-server/tests/unit/cli/database/users/test_user_files/users_invalid_workspace.yml b/extralit-server/tests/unit/cli/database/users/test_user_files/users_invalid_workspace.yml similarity index 100% rename from argilla-server/tests/unit/cli/database/users/test_user_files/users_invalid_workspace.yml rename to extralit-server/tests/unit/cli/database/users/test_user_files/users_invalid_workspace.yml diff --git a/argilla-server/tests/unit/cli/database/users/test_user_files/users_one.yml b/extralit-server/tests/unit/cli/database/users/test_user_files/users_one.yml similarity index 100% rename from argilla-server/tests/unit/cli/database/users/test_user_files/users_one.yml rename to extralit-server/tests/unit/cli/database/users/test_user_files/users_one.yml diff --git a/argilla-server/tests/unit/cli/search_engine/__init__.py b/extralit-server/tests/unit/cli/search_engine/__init__.py similarity index 100% rename from argilla-server/tests/unit/cli/search_engine/__init__.py rename to extralit-server/tests/unit/cli/search_engine/__init__.py diff --git a/argilla-server/tests/unit/cli/search_engine/conftest.py b/extralit-server/tests/unit/cli/search_engine/conftest.py similarity index 100% rename from argilla-server/tests/unit/cli/search_engine/conftest.py rename to extralit-server/tests/unit/cli/search_engine/conftest.py diff --git a/argilla-server/tests/unit/cli/search_engine/test_reindex.py b/extralit-server/tests/unit/cli/search_engine/test_reindex.py similarity index 100% rename from argilla-server/tests/unit/cli/search_engine/test_reindex.py rename to extralit-server/tests/unit/cli/search_engine/test_reindex.py diff --git a/argilla-server/tests/unit/cli/test_start.py b/extralit-server/tests/unit/cli/test_start.py similarity index 100% rename from argilla-server/tests/unit/cli/test_start.py rename to extralit-server/tests/unit/cli/test_start.py diff --git a/argilla-server/tests/unit/commons/__init__.py b/extralit-server/tests/unit/commons/__init__.py similarity index 100% rename from argilla-server/tests/unit/commons/__init__.py rename to extralit-server/tests/unit/commons/__init__.py diff --git a/argilla-server/tests/unit/commons/test_settings.py b/extralit-server/tests/unit/commons/test_settings.py similarity index 100% rename from argilla-server/tests/unit/commons/test_settings.py rename to extralit-server/tests/unit/commons/test_settings.py diff --git a/argilla-server/tests/unit/commons/test_telemetry.py b/extralit-server/tests/unit/commons/test_telemetry.py similarity index 100% rename from argilla-server/tests/unit/commons/test_telemetry.py rename to extralit-server/tests/unit/commons/test_telemetry.py diff --git a/argilla-server/tests/unit/conftest.py b/extralit-server/tests/unit/conftest.py similarity index 100% rename from argilla-server/tests/unit/conftest.py rename to extralit-server/tests/unit/conftest.py diff --git a/argilla-server/tests/unit/contexts/__init__.py b/extralit-server/tests/unit/contexts/__init__.py similarity index 100% rename from argilla-server/tests/unit/contexts/__init__.py rename to extralit-server/tests/unit/contexts/__init__.py diff --git a/argilla-server/tests/unit/contexts/hub/test_hub_dataset.py b/extralit-server/tests/unit/contexts/hub/test_hub_dataset.py similarity index 100% rename from argilla-server/tests/unit/contexts/hub/test_hub_dataset.py rename to extralit-server/tests/unit/contexts/hub/test_hub_dataset.py diff --git a/argilla-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py b/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py similarity index 100% rename from argilla-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py rename to extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py diff --git a/argilla-server/tests/unit/contexts/search/__init__.py b/extralit-server/tests/unit/contexts/search/__init__.py similarity index 100% rename from argilla-server/tests/unit/contexts/search/__init__.py rename to extralit-server/tests/unit/contexts/search/__init__.py diff --git a/argilla-server/tests/unit/contexts/search/test_search_records_query_validator.py b/extralit-server/tests/unit/contexts/search/test_search_records_query_validator.py similarity index 100% rename from argilla-server/tests/unit/contexts/search/test_search_records_query_validator.py rename to extralit-server/tests/unit/contexts/search/test_search_records_query_validator.py diff --git a/argilla-server/tests/unit/contexts/test_imports.py b/extralit-server/tests/unit/contexts/test_imports.py similarity index 100% rename from argilla-server/tests/unit/contexts/test_imports.py rename to extralit-server/tests/unit/contexts/test_imports.py diff --git a/argilla-server/tests/unit/daos/test_datasets.py b/extralit-server/tests/unit/daos/test_datasets.py similarity index 100% rename from argilla-server/tests/unit/daos/test_datasets.py rename to extralit-server/tests/unit/daos/test_datasets.py diff --git a/argilla-server/tests/unit/database/models/test_dataset_user_model.py b/extralit-server/tests/unit/database/models/test_dataset_user_model.py similarity index 100% rename from argilla-server/tests/unit/database/models/test_dataset_user_model.py rename to extralit-server/tests/unit/database/models/test_dataset_user_model.py diff --git a/argilla-server/tests/unit/database/models/test_field_model.py b/extralit-server/tests/unit/database/models/test_field_model.py similarity index 100% rename from argilla-server/tests/unit/database/models/test_field_model.py rename to extralit-server/tests/unit/database/models/test_field_model.py diff --git a/argilla-server/tests/unit/errors/__init__.py b/extralit-server/tests/unit/errors/__init__.py similarity index 100% rename from argilla-server/tests/unit/errors/__init__.py rename to extralit-server/tests/unit/errors/__init__.py diff --git a/argilla-server/tests/unit/errors/test_errors.py b/extralit-server/tests/unit/errors/test_errors.py similarity index 100% rename from argilla-server/tests/unit/errors/test_errors.py rename to extralit-server/tests/unit/errors/test_errors.py diff --git a/argilla-server/tests/unit/jobs/__init__.py b/extralit-server/tests/unit/jobs/__init__.py similarity index 100% rename from argilla-server/tests/unit/jobs/__init__.py rename to extralit-server/tests/unit/jobs/__init__.py diff --git a/argilla-server/tests/unit/jobs/test_document_jobs.py b/extralit-server/tests/unit/jobs/test_document_jobs.py similarity index 100% rename from argilla-server/tests/unit/jobs/test_document_jobs.py rename to extralit-server/tests/unit/jobs/test_document_jobs.py diff --git a/argilla-server/tests/unit/jobs/webhook_jobs/__init__.py b/extralit-server/tests/unit/jobs/webhook_jobs/__init__.py similarity index 100% rename from argilla-server/tests/unit/jobs/webhook_jobs/__init__.py rename to extralit-server/tests/unit/jobs/webhook_jobs/__init__.py diff --git a/argilla-server/tests/unit/jobs/webhook_jobs/test_enqueue_notify_events.py b/extralit-server/tests/unit/jobs/webhook_jobs/test_enqueue_notify_events.py similarity index 100% rename from argilla-server/tests/unit/jobs/webhook_jobs/test_enqueue_notify_events.py rename to extralit-server/tests/unit/jobs/webhook_jobs/test_enqueue_notify_events.py diff --git a/argilla-server/tests/unit/models/__init__.py b/extralit-server/tests/unit/models/__init__.py similarity index 100% rename from argilla-server/tests/unit/models/__init__.py rename to extralit-server/tests/unit/models/__init__.py diff --git a/argilla-server/tests/unit/models/test_import_history.py b/extralit-server/tests/unit/models/test_import_history.py similarity index 100% rename from argilla-server/tests/unit/models/test_import_history.py rename to extralit-server/tests/unit/models/test_import_history.py diff --git a/argilla-server/tests/unit/models/test_webhook.py b/extralit-server/tests/unit/models/test_webhook.py similarity index 100% rename from argilla-server/tests/unit/models/test_webhook.py rename to extralit-server/tests/unit/models/test_webhook.py diff --git a/argilla-server/tests/unit/search_engine/__init__.py b/extralit-server/tests/unit/search_engine/__init__.py similarity index 100% rename from argilla-server/tests/unit/search_engine/__init__.py rename to extralit-server/tests/unit/search_engine/__init__.py diff --git a/argilla-server/tests/unit/search_engine/conftest.py b/extralit-server/tests/unit/search_engine/conftest.py similarity index 100% rename from argilla-server/tests/unit/search_engine/conftest.py rename to extralit-server/tests/unit/search_engine/conftest.py diff --git a/argilla-server/tests/unit/search_engine/test_commons.py b/extralit-server/tests/unit/search_engine/test_commons.py similarity index 100% rename from argilla-server/tests/unit/search_engine/test_commons.py rename to extralit-server/tests/unit/search_engine/test_commons.py diff --git a/argilla-server/tests/unit/search_engine/test_elastisearch.py b/extralit-server/tests/unit/search_engine/test_elastisearch.py similarity index 100% rename from argilla-server/tests/unit/search_engine/test_elastisearch.py rename to extralit-server/tests/unit/search_engine/test_elastisearch.py diff --git a/argilla-server/tests/unit/search_engine/test_opensearch.py b/extralit-server/tests/unit/search_engine/test_opensearch.py similarity index 100% rename from argilla-server/tests/unit/search_engine/test_opensearch.py rename to extralit-server/tests/unit/search_engine/test_opensearch.py diff --git a/argilla-server/tests/unit/security/__init__.py b/extralit-server/tests/unit/security/__init__.py similarity index 100% rename from argilla-server/tests/unit/security/__init__.py rename to extralit-server/tests/unit/security/__init__.py diff --git a/argilla-server/tests/unit/security/authentication/__init__.py b/extralit-server/tests/unit/security/authentication/__init__.py similarity index 100% rename from argilla-server/tests/unit/security/authentication/__init__.py rename to extralit-server/tests/unit/security/authentication/__init__.py diff --git a/argilla-server/tests/unit/security/authentication/oauth2/__init__.py b/extralit-server/tests/unit/security/authentication/oauth2/__init__.py similarity index 100% rename from argilla-server/tests/unit/security/authentication/oauth2/__init__.py rename to extralit-server/tests/unit/security/authentication/oauth2/__init__.py diff --git a/argilla-server/tests/unit/security/authentication/oauth2/backends/__init__.py b/extralit-server/tests/unit/security/authentication/oauth2/backends/__init__.py similarity index 100% rename from argilla-server/tests/unit/security/authentication/oauth2/backends/__init__.py rename to extralit-server/tests/unit/security/authentication/oauth2/backends/__init__.py diff --git a/argilla-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py b/extralit-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py similarity index 100% rename from argilla-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py rename to extralit-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py diff --git a/argilla-server/tests/unit/security/authentication/oauth2/test_settings.py b/extralit-server/tests/unit/security/authentication/oauth2/test_settings.py similarity index 100% rename from argilla-server/tests/unit/security/authentication/oauth2/test_settings.py rename to extralit-server/tests/unit/security/authentication/oauth2/test_settings.py diff --git a/argilla-server/tests/unit/security/authentication/test_userinfo.py b/extralit-server/tests/unit/security/authentication/test_userinfo.py similarity index 100% rename from argilla-server/tests/unit/security/authentication/test_userinfo.py rename to extralit-server/tests/unit/security/authentication/test_userinfo.py diff --git a/argilla-server/tests/unit/security/test_model.py b/extralit-server/tests/unit/security/test_model.py similarity index 100% rename from argilla-server/tests/unit/security/test_model.py rename to extralit-server/tests/unit/security/test_model.py diff --git a/argilla-server/tests/unit/security/test_settings.py b/extralit-server/tests/unit/security/test_settings.py similarity index 100% rename from argilla-server/tests/unit/security/test_settings.py rename to extralit-server/tests/unit/security/test_settings.py diff --git a/argilla-server/tests/unit/telemetry/__init__.py b/extralit-server/tests/unit/telemetry/__init__.py similarity index 100% rename from argilla-server/tests/unit/telemetry/__init__.py rename to extralit-server/tests/unit/telemetry/__init__.py diff --git a/argilla-server/tests/unit/telemetry/test_telemetry_helpers.py b/extralit-server/tests/unit/telemetry/test_telemetry_helpers.py similarity index 100% rename from argilla-server/tests/unit/telemetry/test_telemetry_helpers.py rename to extralit-server/tests/unit/telemetry/test_telemetry_helpers.py diff --git a/argilla-server/tests/unit/test_api_telemetry.py b/extralit-server/tests/unit/test_api_telemetry.py similarity index 100% rename from argilla-server/tests/unit/test_api_telemetry.py rename to extralit-server/tests/unit/test_api_telemetry.py diff --git a/argilla-server/tests/unit/test_app.py b/extralit-server/tests/unit/test_app.py similarity index 100% rename from argilla-server/tests/unit/test_app.py rename to extralit-server/tests/unit/test_app.py diff --git a/argilla-server/tests/unit/test_database.py b/extralit-server/tests/unit/test_database.py similarity index 100% rename from argilla-server/tests/unit/test_database.py rename to extralit-server/tests/unit/test_database.py diff --git a/argilla-server/tests/unit/test_logging.py b/extralit-server/tests/unit/test_logging.py similarity index 100% rename from argilla-server/tests/unit/test_logging.py rename to extralit-server/tests/unit/test_logging.py diff --git a/argilla-server/tests/unit/test_utils.py b/extralit-server/tests/unit/test_utils.py similarity index 100% rename from argilla-server/tests/unit/test_utils.py rename to extralit-server/tests/unit/test_utils.py diff --git a/argilla-server/tests/unit/utils/__init__.py b/extralit-server/tests/unit/utils/__init__.py similarity index 100% rename from argilla-server/tests/unit/utils/__init__.py rename to extralit-server/tests/unit/utils/__init__.py diff --git a/argilla-server/tests/unit/utils/test_fastapi_utils.py b/extralit-server/tests/unit/utils/test_fastapi_utils.py similarity index 100% rename from argilla-server/tests/unit/utils/test_fastapi_utils.py rename to extralit-server/tests/unit/utils/test_fastapi_utils.py diff --git a/argilla-server/tests/unit/validators/__init__.py b/extralit-server/tests/unit/validators/__init__.py similarity index 100% rename from argilla-server/tests/unit/validators/__init__.py rename to extralit-server/tests/unit/validators/__init__.py diff --git a/argilla-server/tests/unit/validators/test_records_bulk.py b/extralit-server/tests/unit/validators/test_records_bulk.py similarity index 100% rename from argilla-server/tests/unit/validators/test_records_bulk.py rename to extralit-server/tests/unit/validators/test_records_bulk.py diff --git a/argilla-server/tests/unit/webhooks/__init__.py b/extralit-server/tests/unit/webhooks/__init__.py similarity index 100% rename from argilla-server/tests/unit/webhooks/__init__.py rename to extralit-server/tests/unit/webhooks/__init__.py diff --git a/argilla-server/tests/unit/webhooks/v1/__init__.py b/extralit-server/tests/unit/webhooks/v1/__init__.py similarity index 100% rename from argilla-server/tests/unit/webhooks/v1/__init__.py rename to extralit-server/tests/unit/webhooks/v1/__init__.py diff --git a/argilla-server/tests/unit/webhooks/v1/test_notify_ping_event.py b/extralit-server/tests/unit/webhooks/v1/test_notify_ping_event.py similarity index 100% rename from argilla-server/tests/unit/webhooks/v1/test_notify_ping_event.py rename to extralit-server/tests/unit/webhooks/v1/test_notify_ping_event.py From 1c508975e38e9e84bba4d62f7cad959f9172ec42 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 08:51:04 -0700 Subject: [PATCH 06/23] Update references from argilla-server to extralit-server across configuration and documentation files - Updated .gitignore, .pre-commit-config.yaml, and codecov.yml to reflect new paths. - Modified .devcontainer and docker-compose configurations for the new server structure. - Adjusted setup scripts and GitHub workflows to point to extralit-server. - Updated documentation and markdown files to ensure consistency with the new naming convention. --- .devcontainer/devcontainer.json | 211 ++++++++-------- .../docker-compose/devcontainer.json | 232 +++++++++--------- .devcontainer/docker-compose/setup.sh | 2 +- .devcontainer/setup.sh | 2 +- .github/workflows/copilot-setup-steps.yml | 4 +- .../extralit-server.build-docker-images.yml | 8 +- .github/workflows/extralit-server.yml | 12 +- .gitignore | 2 +- .kiro/specs/import-history-sidebar/design.md | 4 +- .kiro/specs/papers-library-importer/design.md | 8 +- .kiro/specs/papers-library-importer/tasks.md | 2 +- .kiro/steering/structure.md | 10 +- .kiro/steering/tech.md | 2 +- .pre-commit-config.yaml | 6 +- .../domain/entities/import/ImportAnalysis.ts | 2 +- codecov.yml | 4 +- extralit-server/src/extralit_server/_app.py | 2 +- extralit/docs/admin_guide/index.md | 2 +- .../migrate_from_legacy_datasets.md | 2 +- extralit/docs/admin_guide/upgrading.md | 4 +- extralit/docs/community/developer.md | 6 +- .../docs/getting_started/development_setup.md | 4 +- .../reference/argilla-server/telemetry.md | 2 +- extralit/mkdocs.yml | 21 +- 24 files changed, 271 insertions(+), 283 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b797b483b..acf6c444f 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -1,115 +1,108 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the // README at: https://github.com/devcontainers/templates/tree/main/src/anaconda { - "name": "Tilt on K8s for full-stack development", - - "build": { - "context": ".", - "dockerfile": "Dockerfile" - }, - - "customizations": { - "vscode": { - "extensions": [ - "GitHub.copilot", - "GitHub.copilot-chat", - "github.vscode-github-actions", - "ms-python.python", - "usernamehw.errorlens", - "charliermarsh.ruff", - "ms-toolsai.jupyter", - "eamodio.gitlens", - "tilt-dev.tiltfile", - "Vue.volar", - "ms-kubernetes-tools.vscode-kubernetes-tools", - "firsttris.vscode-jest-runner" - ] + "name": "Tilt on K8s for full-stack development", + "build": { + "context": ".", + "dockerfile": "Dockerfile" }, - "settings": { - "python.testing.pytestEnabled": true, - "python.testing.cwd": "${workspaceFolder}/tests", - "python.envFile": "${workspaceFolder}/extralit/.env.test", - "python.testing.pytestArgs": [ "-vs", "--disable-warnings" ], - "python.defaultInterpreterPath": "/opt/conda/bin/python", - "python.condaPath": "/usr/local/bin/micromamba", - "search.exclude": { - "argilla-server/src/extralit_server/static/": true, - "argilla-frontend/dist/": true, - "_nuxt/": true, - "node_modules/": true, - ".venv/": true - }, - "files.watcherExclude": { - "argilla-server/src/extralit_server/static/": true, - "argilla-frontend/dist/": true, - "_nuxt/": true, - "node_modules/": true, - ".venv/": true - }, - "[javascript]": { - "editor.tabSize": 2 - }, - "jest.pathToJest": "npm test --", - "jest.autoRun": { - "watch": true, - "onSave": "test-file" - }, - "jest.runAllTestsFirst": false, - "jest.showCoverageOnLoad": true, - "jest.testExplorer": { - "enabled": true - } - } - }, - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - "forwardPorts": [ - 10350, - 5005, - 6443, - 3000 - ], - - "remoteEnv": { - "WCS_HTTP_URL": "${localEnv:WCS_HTTP_URL}", - "WCS_GRPC_URL": "${localEnv:WCS_GRPC_URL}", - "WCS_API_KEY": "${localEnv:WCS_API_KEY}", - "EXTRALIT_DATABASE_URL": "${localEnv:EXTRALIT_DATABASE_URL}", - "S3_ENDPOINT": "${localEnv:S3_ENDPOINT}", - "S3_ACCESS_KEY": "${localEnv:S3_ACCESS_KEY}", - "S3_SECRET_KEY": "${localEnv:S3_SECRET_KEY}", - "OPENAI_API_KEY": "${localEnv:OPENAI_API_KEY}" - }, - - // Features to add to the dev container. More info: https://containers.dev/features. - "features": { - // Add Docker-in-Docker support. A Debian base requires the proprietary Docker engine. - "ghcr.io/devcontainers/features/docker-in-docker:2.12.0": { - "version": "latest", - "moby": "false" + "customizations": { + "vscode": { + "extensions": [ + "GitHub.copilot", + "GitHub.copilot-chat", + "github.vscode-github-actions", + "ms-python.python", + "usernamehw.errorlens", + "charliermarsh.ruff", + "ms-toolsai.jupyter", + "eamodio.gitlens", + "tilt-dev.tiltfile", + "Vue.volar", + "ms-kubernetes-tools.vscode-kubernetes-tools", + "firsttris.vscode-jest-runner" + ] + }, + "settings": { + "python.testing.pytestEnabled": true, + "python.testing.cwd": "${workspaceFolder}/tests", + "python.envFile": "${workspaceFolder}/extralit/.env.test", + "python.testing.pytestArgs": [ + "-vs", + "--disable-warnings" + ], + "python.defaultInterpreterPath": "/opt/conda/bin/python", + "python.condaPath": "/usr/local/bin/micromamba", + "search.exclude": { + "extralit-server/src/extralit_server/static/": true, + "argilla-frontend/dist/": true, + "_nuxt/": true, + "node_modules/": true, + ".venv/": true + }, + "files.watcherExclude": { + "extralit-server/src/extralit_server/static/": true, + "argilla-frontend/dist/": true, + "_nuxt/": true, + "node_modules/": true, + ".venv/": true + }, + "[javascript]": { + "editor.tabSize": 2 + }, + "jest.pathToJest": "npm test --", + "jest.autoRun": { + "watch": true, + "onSave": "test-file" + }, + "jest.runAllTestsFirst": false, + "jest.showCoverageOnLoad": true, + "jest.testExplorer": { + "enabled": true + } + } + }, + // Use 'forwardPorts' to make a list of ports inside the container available locally. + "forwardPorts": [ + 10350, + 5005, + 6443, + 3000 + ], + "remoteEnv": { + "WCS_HTTP_URL": "${localEnv:WCS_HTTP_URL}", + "WCS_GRPC_URL": "${localEnv:WCS_GRPC_URL}", + "WCS_API_KEY": "${localEnv:WCS_API_KEY}", + "EXTRALIT_DATABASE_URL": "${localEnv:EXTRALIT_DATABASE_URL}", + "S3_ENDPOINT": "${localEnv:S3_ENDPOINT}", + "S3_ACCESS_KEY": "${localEnv:S3_ACCESS_KEY}", + "S3_SECRET_KEY": "${localEnv:S3_SECRET_KEY}", + "OPENAI_API_KEY": "${localEnv:OPENAI_API_KEY}" }, - - // Add Kubernetes support with k3d and the kubectl, and helm CLI tools. - "ghcr.io/rio/features/k3d:1.1.0": {}, - "ghcr.io/devcontainers/features/kubectl-helm-minikube:1.2.0": {}, - - // Add python support with micromamba and some packages - "ghcr.io/mamba-org/devcontainer-features/micromamba": { - "autoActivate": true, - "channels": "conda-forge huggingface defaults", - "packages": "python==3.10.14 uvicorn uv pdm ipykernel pre-commit pyparsing!=3.0.5 pytest pytest-cov pytest-mock pytest-asyncio==0.21.1 pytest-env factory_boy~=3.2.1 pandoc==2.12 ipython<8.0.0 nodejs==18.16.1 pandoc==2.12 pytest-randomly>=3.15.0", - "envFile": "", - "envName": "base" + // Features to add to the dev container. More info: https://containers.dev/features. + "features": { + // Add Docker-in-Docker support. A Debian base requires the proprietary Docker engine. + "ghcr.io/devcontainers/features/docker-in-docker:2.12.0": { + "version": "latest", + "moby": "false" + }, + // Add Kubernetes support with k3d and the kubectl, and helm CLI tools. + "ghcr.io/rio/features/k3d:1.1.0": {}, + "ghcr.io/devcontainers/features/kubectl-helm-minikube:1.2.0": {}, + // Add python support with micromamba and some packages + "ghcr.io/mamba-org/devcontainer-features/micromamba": { + "autoActivate": true, + "channels": "conda-forge huggingface defaults", + "packages": "python==3.10.14 uvicorn uv pdm ipykernel pre-commit pyparsing!=3.0.5 pytest pytest-cov pytest-mock pytest-asyncio==0.21.1 pytest-env factory_boy~=3.2.1 pandoc==2.12 ipython<8.0.0 nodejs==18.16.1 pandoc==2.12 pytest-randomly>=3.15.0", + "envFile": "", + "envName": "base" + }, }, - - }, - - "postCreateCommand": "/workspace/setup.sh", - "postStopCommand": "tilt down", - - "hostRequirements": { - "cpus": 4, - "memory": "16gb", - "storage": "32gb" - } -} + "postCreateCommand": "/workspace/setup.sh", + "postStopCommand": "tilt down", + "hostRequirements": { + "cpus": 4, + "memory": "16gb", + "storage": "32gb" + } +} \ No newline at end of file diff --git a/.devcontainer/docker-compose/devcontainer.json b/.devcontainer/docker-compose/devcontainer.json index bf43e27aa..c171646c4 100644 --- a/.devcontainer/docker-compose/devcontainer.json +++ b/.devcontainer/docker-compose/devcontainer.json @@ -1,126 +1,120 @@ // For format details, see https://aka.ms/devcontainer.json. For config options, see the // README at: https://github.com/devcontainers/templates/tree/main/src/anaconda { - "name": "Docker-Compose", - - "dockerComposeFile": "docker-compose.yml", - "service": "devcontainer", - "runServices": [ - "elasticsearch", - "postgres", - "minio", - "weaviate", - "redis" - ], - "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", - - // Use 'forwardPorts' to make a list of ports inside the container available locally. - "forwardPorts": [ - 9200, - 5432, - 9090, - 8080, - 50051 - ], - "portsAttributes": { - "8888": { - "label": "Jupyter", - "requireLocalPort": true, - "onAutoForward": "ignore" + "name": "Docker-Compose", + "dockerComposeFile": "docker-compose.yml", + "service": "devcontainer", + "runServices": [ + "elasticsearch", + "postgres", + "minio", + "weaviate", + "redis" + ], + "workspaceFolder": "/workspaces/${localWorkspaceFolderBasename}", + // Use 'forwardPorts' to make a list of ports inside the container available locally. + "forwardPorts": [ + 9200, + 5432, + 9090, + 8080, + 50051 + ], + "portsAttributes": { + "8888": { + "label": "Jupyter", + "requireLocalPort": true, + "onAutoForward": "ignore" + }, + "5601": { + "label": "Kibana", + "requireLocalPort": true, + "onAutoForward": "ignore" + }, + "9200": { + "label": "elastic", + "requireLocalPort": true, + "onAutoForward": "ignore" + }, + "5432": { + "label": "postgres", + "requireLocalPort": true, + "onAutoForward": "ignore" + }, + "9090": { + "label": "minio-console", + "requireLocalPort": true, + "onAutoForward": "ignore" + }, + "8080": { + "label": "weaviate", + "requireLocalPort": true, + "onAutoForward": "ignore" + }, + "50051": { + "label": "weaviate-grpc", + "requireLocalPort": true, + "onAutoForward": "ignore" + } }, - "5601": { - "label": "Kibana", - "requireLocalPort": true, - "onAutoForward": "ignore" + // Features to add to the dev container. More info: https://containers.dev/features. + "features": { + // Add python support with micromamba and some packages + "ghcr.io/mamba-org/devcontainer-features/micromamba": { + "autoActivate": true, + "channels": "pytorch conda-forge huggingface defaults", + "packages": "python==3.10.14 uvicorn uv pdm pyparsing!=3.0.5 pytest pytest-cov pytest-mock pytest-xdist pytest-asyncio==0.21.1 pytest-env pytest-watch factory_boy~=3.2.1 nodejs=18.16.1 datasets==2.21.0 spacy==3.6.1 pytest-randomly>=3.15.0", + "envFile": "", + "envName": "base" + } }, - "9200": { - "label": "elastic", - "requireLocalPort": true, - "onAutoForward": "ignore" + "postCreateCommand": "/workspace/setup.sh", + "hostRequirements": { + "cpus": 4, + "memory": "16gb", + "storage": "32gb" }, - "5432": { - "label": "postgres", - "requireLocalPort": true, - "onAutoForward": "ignore" - }, - "9090": { - "label": "minio-console", - "requireLocalPort": true, - "onAutoForward": "ignore" - }, - "8080": { - "label": "weaviate", - "requireLocalPort": true, - "onAutoForward": "ignore" - }, - "50051": { - "label": "weaviate-grpc", - "requireLocalPort": true, - "onAutoForward": "ignore" - } - }, - - // Features to add to the dev container. More info: https://containers.dev/features. - "features": { - // Add python support with micromamba and some packages - "ghcr.io/mamba-org/devcontainer-features/micromamba": { - "autoActivate": true, - "channels": "pytorch conda-forge huggingface defaults", - "packages": "python==3.10.14 uvicorn uv pdm pyparsing!=3.0.5 pytest pytest-cov pytest-mock pytest-xdist pytest-asyncio==0.21.1 pytest-env pytest-watch factory_boy~=3.2.1 nodejs=18.16.1 datasets==2.21.0 spacy==3.6.1 pytest-randomly>=3.15.0", - "envFile": "", - "envName": "base" - } - }, - - "postCreateCommand": "/workspace/setup.sh", - - "hostRequirements": { - "cpus": 4, - "memory": "16gb", - "storage": "32gb" - }, - - "customizations": { - "vscode": { - "extensions": [ - "GitHub.copilot", - "GitHub.copilot-chat", - "ms-python.python", - "usernamehw.errorlens", - "charliermarsh.ruff", - "eamodio.gitlens", - "tilt-dev.tiltfile", - "github.vscode-github-actions", - "codecov.codecov", - "ryanluker.vscode-coverage-gutters", - "ms-vscode.live-server" - ] - }, - "settings": { - "python.testing.pytestEnabled": true, - "python.testing.cwd": "${workspaceFolder}/extralit/", - "python.testing.pytestArgs": [ - "-vv", - "--disable-warnings" - ], - "python.defaultInterpreterPath": "/opt/conda/bin/python", - "python.condaPath": "/usr/local/bin/micromamba", - "python.envFile": "${workspaceFolder}/extralit/.env.test", - "search.exclude": { - "argilla-server/src/argilla_server/static/": true, - "argilla-frontend/dist/": true, - "_nuxt/": true, - "node_modules/": true, - ".venv/": true, - "**/*.png": true - }, - "files.watcherExclude": { - "argilla-server/src/argilla_server/static/": true, - "argilla-frontend/dist/": true, - "_nuxt/": true, - "node_modules/": true, - ".venv/": true - } + "customizations": { + "vscode": { + "extensions": [ + "GitHub.copilot", + "GitHub.copilot-chat", + "ms-python.python", + "usernamehw.errorlens", + "charliermarsh.ruff", + "eamodio.gitlens", + "tilt-dev.tiltfile", + "github.vscode-github-actions", + "codecov.codecov", + "ryanluker.vscode-coverage-gutters", + "ms-vscode.live-server" + ] + }, + "settings": { + "python.testing.pytestEnabled": true, + "python.testing.cwd": "${workspaceFolder}/extralit/", + "python.testing.pytestArgs": [ + "-vv", + "--disable-warnings" + ], + "python.defaultInterpreterPath": "/opt/conda/bin/python", + "python.condaPath": "/usr/local/bin/micromamba", + "python.envFile": "${workspaceFolder}/extralit/.env.test", + "search.exclude": { + "extralit-server/src/argilla_server/static/": true, + "argilla-frontend/dist/": true, + "_nuxt/": true, + "node_modules/": true, + ".venv/": true, + "**/*.png": true + }, + "files.watcherExclude": { + "extralit-server/src/argilla_server/static/": true, + "argilla-frontend/dist/": true, + "_nuxt/": true, + "node_modules/": true, + ".venv/": true + } + } } - } -} +} \ No newline at end of file diff --git a/.devcontainer/docker-compose/setup.sh b/.devcontainer/docker-compose/setup.sh index 37111575c..25ec1da11 100644 --- a/.devcontainer/docker-compose/setup.sh +++ b/.devcontainer/docker-compose/setup.sh @@ -6,7 +6,7 @@ if ! pip list | grep -q "extralit"; then pdm config use_uv true pdm config python.install_root /opt/conda/ uv pip install -q "sentence-transformers<3.0.0" transformers "textdescriptives<3.0.0" \ - -e /workspaces/extralit/argilla-server/ && \ + -e /workspaces/extralit/extralit-server/ && \ uv pip install -q -e /workspaces/extralit/extralit/ else echo "Package 'extralit' is already installed. Skipping installation." diff --git a/.devcontainer/setup.sh b/.devcontainer/setup.sh index c54b8ea65..f2675bb7b 100644 --- a/.devcontainer/setup.sh +++ b/.devcontainer/setup.sh @@ -18,7 +18,7 @@ if ! pip list | grep -q "extralit"; then echo 'Installing required packages and editable installs...' pdm config use_uv true pdm config python.install_root /opt/conda/ - uv pip install -e /workspaces/extralit/argilla-server/ + uv pip install -e /workspaces/extralit/extralit-server/ uv pip install -e /workspaces/extralit/extralit/ else echo 'Package 'extralit' is already installed. Skipping installation.' diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 9514eab70..f24dc0738 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -59,11 +59,11 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v5 with: - pyproject-file: "argilla-server/pyproject.toml" + pyproject-file: "extralit-server/pyproject.toml" python-version: "3.11" enable-cache: true cache-local-path: ~/.cache/uv - cache-dependency-glob: "argilla-server/pdm.lock" + cache-dependency-glob: "extralit-server/pdm.lock" - name: Setup Python env and Install extralit-server editable package env: diff --git a/.github/workflows/extralit-server.build-docker-images.yml b/.github/workflows/extralit-server.build-docker-images.yml index 456d35347..aff95ca54 100644 --- a/.github/workflows/extralit-server.build-docker-images.yml +++ b/.github/workflows/extralit-server.build-docker-images.yml @@ -15,7 +15,7 @@ on: jobs: build: -name: Build Extralit server docker images + name: Build Extralit server docker images runs-on: ubuntu-latest steps: @@ -94,7 +94,7 @@ name: Build Extralit server docker images - name: Build and push `extralit-server` image uses: docker/build-push-action@v5 with: - context: argilla-server/docker/server + context: extralit-server/docker/server platforms: ${{ env.PLATFORMS }} tags: ${{ env.SERVER_DOCKER_IMAGE }}:${{ env.IMAGE_TAG }} labels: ${{ steps.meta.outputs.labels }} @@ -113,7 +113,7 @@ name: Build Extralit server docker images # - name: Build and push `argilla-hf-spaces` image # uses: docker/build-push-action@v5 # with: - # context: argilla-server/docker/argilla-hf-spaces + # context: extralit-server/docker/argilla-hf-spaces # platforms: ${{ env.PLATFORMS }} # tags: ${{ env.HF_SPACES_DOCKER_IMAGE }}:${{ env.IMAGE_TAG }} # labels: ${{ steps.meta.outputs.labels }} @@ -126,7 +126,7 @@ name: Build Extralit server docker images # if: ${{ env.PUBLISH_LATEST == 'true' }} # uses: docker/build-push-action@v5 # with: - # context: argilla-server/docker/argilla-hf-spaces + # context: extralit-server/docker/argilla-hf-spaces # platforms: ${{ env.PLATFORMS }} # tags: ${{ env.HF_SPACES_DOCKER_IMAGE }}:latest # labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/extralit-server.yml b/.github/workflows/extralit-server.yml index ff43d4170..3a922a470 100644 --- a/.github/workflows/extralit-server.yml +++ b/.github/workflows/extralit-server.yml @@ -13,13 +13,13 @@ on: - develop - releases/** paths: - - "argilla-server/**" + - "extralit-server/**" - ".github/workflows/argilla-server.*" pull_request: types: [opened, edited, synchronize, reopened, ready_for_review] paths: - - "argilla-server/**" + - "extralit-server/**" - ".github/workflows/argilla-server.*" permissions: @@ -94,10 +94,10 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v5 with: - pyproject-file: "argilla-server/pyproject.toml" + pyproject-file: "extralit-server/pyproject.toml" enable-cache: true cache-local-path: ~/.cache/uv - cache-dependency-glob: "argilla-server/pdm.lock" + cache-dependency-glob: "extralit-server/pdm.lock" - name: Install PDM run: uv tool install pdm @@ -163,7 +163,7 @@ jobs: uses: actions/upload-artifact@v4 with: name: argilla-server - path: argilla-server/dist + path: extralit-server/dist build_docker_images: name: Build docker images @@ -226,7 +226,7 @@ jobs: uses: actions/download-artifact@v4 with: name: argilla-server - path: argilla-server/dist + path: extralit-server/dist - name: Setup PDM uses: pdm-project/setup-pdm@v4 diff --git a/.gitignore b/.gitignore index a5aa45fc3..1bf60c5ee 100644 --- a/.gitignore +++ b/.gitignore @@ -153,5 +153,5 @@ src/**/server/static/ .devcontainer/*/secrets # App generated files -argilla-server/src/argilla_server/static +extralit-server/src/argilla_server/static extralit/site diff --git a/.kiro/specs/import-history-sidebar/design.md b/.kiro/specs/import-history-sidebar/design.md index c6fdd9233..6868d7365 100644 --- a/.kiro/specs/import-history-sidebar/design.md +++ b/.kiro/specs/import-history-sidebar/design.md @@ -56,7 +56,7 @@ graph TD - Provides detailed tabular data for DatasetConfiguration component - List view includes metadata but excludes data for performance -#### 2. ImportHistory Context Enhancement (`argilla-server/src/argilla_server/contexts/imports.py`) +#### 2. ImportHistory Context Enhancement (`extralit-server/src/argilla_server/contexts/imports.py`) **New Services:** - `get_import_history_details()` - Retrieve complete ImportHistory record with data @@ -393,7 +393,7 @@ argilla-frontend/ ### Backend File Organization ``` -argilla-server/ +extralit-server/ ├── src/argilla_server/api/ │ ├── handlers/v1/ │ │ └── imports.py # Enhanced with details endpoint diff --git a/.kiro/specs/papers-library-importer/design.md b/.kiro/specs/papers-library-importer/design.md index e08b0205f..c5eac4c2d 100644 --- a/.kiro/specs/papers-library-importer/design.md +++ b/.kiro/specs/papers-library-importer/design.md @@ -52,7 +52,7 @@ graph TD ### Backend Components -#### 1. Import Analysis API Handler (`argilla-server/src/argilla_server/api/handlers/v1/imports.py`) +#### 1. Import Analysis API Handler (`extralit-server/src/argilla_server/api/handlers/v1/imports.py`) **Endpoints:** - `POST /api/v1/imports/analyze` - Analyze file metadata to determine add/update/skip status @@ -73,7 +73,7 @@ async def analyze_import( - Compares file sizes to determine if updates are needed - Returns status analysis for frontend preview without blocking on document validation errors -#### 2. Bulk Document Upload Handler (`argilla-server/src/argilla_server/api/handlers/v1/documents.py`) +#### 2. Bulk Document Upload Handler (`extralit-server/src/argilla_server/api/handlers/v1/documents.py`) **New Endpoint:** - `POST /documents/bulk` - Asynchronous bulk document upload with job queue @@ -93,13 +93,13 @@ async def bulk_upload_documents( - Job handles multiple file uploads and creates separate document records for each file - All files for a reference share the same bibliographic metadata but have unique file paths -#### 3. Import Context (`argilla-server/src/argilla_server/contexts/imports.py`) +#### 3. Import Context (`extralit-server/src/argilla_server/contexts/imports.py`) **Core Services:** - `analyze_import_status()` - Uses existing `check_existing_document()` function from documents handler to determine add/update/skip status - `validate_document_metadata()` - Validate DocumentMetadata objects (not just DocumentCreate) from frontend -#### 4. Document Upload Job (`argilla-server/src/argilla_server/jobs/document_jobs.py`) +#### 4. Document Upload Job (`extralit-server/src/argilla_server/jobs/document_jobs.py`) **Async Job Functions:** ```python diff --git a/.kiro/specs/papers-library-importer/tasks.md b/.kiro/specs/papers-library-importer/tasks.md index 6aceae326..85d879733 100644 --- a/.kiro/specs/papers-library-importer/tasks.md +++ b/.kiro/specs/papers-library-importer/tasks.md @@ -50,7 +50,7 @@ - _Requirements: 3.1, 3.3, 3.4, 3.7_ - [x] 3.3 Implement ImportHistory database model - - Create ImportHistory model in database.py with required fields, with the alembic upgrade path at `argilla-server/src/argilla_server/alembic/versions/7d6b33203390_create_import_history_table.py` + - Create ImportHistory model in database.py with required fields, with the alembic upgrade path at `extralit-server/src/argilla_server/alembic/versions/7d6b33203390_create_import_history_table.py` - Add relationships to Workspace and User models - Create migration script for the new table - _Requirements: 3.5, 4.1_ diff --git a/.kiro/steering/structure.md b/.kiro/steering/structure.md index 125e0719a..458b6770b 100644 --- a/.kiro/steering/structure.md +++ b/.kiro/steering/structure.md @@ -5,7 +5,7 @@ This is a monorepo containing multiple related packages: ``` extralit/ -├── argilla-server/ # FastAPI backend server +├── extralit-server/ # FastAPI backend server ├── argilla-frontend/ # Nuxt.js web UI ├── extralit/ # Python SDK and CLI ├── argilla-v1/ # Legacy v1 compatibility layer @@ -13,9 +13,9 @@ extralit/ └── .kiro/ # Kiro AI assistant configuration ``` -## Backend Structure (argilla-server/) +## Backend Structure (extralit-server/) ``` -argilla-server/ +extralit-server/ ├── src/argilla_server/ │ ├── api/ # FastAPI routes and handlers │ │ ├── handlers/ # Request handlers by version @@ -179,14 +179,14 @@ examples/ ``` ## Configuration Files -- **Backend**: `argilla-server/pyproject.toml` (PDM), `.env.dev`, `.env.test` +- **Backend**: `extralit-server/pyproject.toml` (PDM), `.env.dev`, `.env.test` - **Frontend**: `argilla-frontend/package.json` (npm), `nuxt.config.ts` - **SDK**: `extralit/pyproject.toml` (PDM) - **Docker**: `docker-compose.yaml` for local development - **K8s**: `Tiltfile` for Kubernetes development ## Development Workflow -1. **Backend changes**: Work in `argilla-server/src/argilla_server/` +1. **Backend changes**: Work in `extralit-server/src/argilla_server/` 2. **Frontend changes**: Work in `argilla-frontend/components/` or `argilla-frontend/pages/` 3. **SDK changes**: Work in `extralit/src/argilla/` or `extralit/src/extralit/` 4. **Tests**: Each package has its own `tests/` directory diff --git a/.kiro/steering/tech.md b/.kiro/steering/tech.md index 586b59c31..85ca7d3ad 100644 --- a/.kiro/steering/tech.md +++ b/.kiro/steering/tech.md @@ -8,7 +8,7 @@ Extralit is a multi-component system with 5 core components: - **Vector Database**: ElasticSearch or AWS OpenSearch for scalable search - **Database**: PostgreSQL for application data storage -## Backend (argilla-server/) +## Backend (extralit-server/) - **Framework**: FastAPI ~0.115.0 - **Database**: SQLAlchemy 2.0 with PostgreSQL (asyncpg) or SQLite (aiosqlite) - **Search**: ElasticSearch 8.x or OpenSearch 2.x diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2abef6786..a41346bf5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -68,7 +68,7 @@ repos: hooks: - id: autoflake name: "Remove unused imports and variables in argilla-server" - files: '^argilla-server/.*\.py$' + files: '^extralit-server/.*\.py$' args: - "--remove-all-unused-imports" - "--remove-unused-variables" @@ -87,10 +87,10 @@ repos: hooks: - id: insert-license name: "Insert license header in Python source files" - files: '^argilla-server/.*\.py$' + files: '^extralit-server/.*\.py$' args: - --license-filepath - - argilla-server/LICENSE_HEADER + - extralit-server/LICENSE_HEADER - --fuzzy-match-generates-todo ############################################################################## diff --git a/argilla-frontend/v1/domain/entities/import/ImportAnalysis.ts b/argilla-frontend/v1/domain/entities/import/ImportAnalysis.ts index 45759e9ef..e15dc45b9 100644 --- a/argilla-frontend/v1/domain/entities/import/ImportAnalysis.ts +++ b/argilla-frontend/v1/domain/entities/import/ImportAnalysis.ts @@ -1,6 +1,6 @@ /** * Import analysis entities based on backend schemas - * Maps to argilla-server/src/argilla_server/api/schemas/v1/imports.py + * Maps to extralit-server/src/argilla_server/api/schemas/v1/imports.py */ // Basic field types supported in dataframes diff --git a/codecov.yml b/codecov.yml index db8448649..7b465d7af 100644 --- a/codecov.yml +++ b/codecov.yml @@ -26,7 +26,7 @@ flags: carryforward: true argilla_server: paths: - - argilla-server/ + - extralit-server/ carryforward: true component_management: @@ -52,7 +52,7 @@ component_management: - component_id: argilla-server paths: - - argilla-server/** + - extralit-server/** - component_id: argilla-frontend paths: diff --git a/extralit-server/src/extralit_server/_app.py b/extralit-server/src/extralit_server/_app.py index 2f5b3d0d8..5e0844cb2 100644 --- a/extralit-server/src/extralit_server/_app.py +++ b/extralit-server/src/extralit_server/_app.py @@ -295,7 +295,7 @@ def _show_telemetry_warning(): message += inspect.cleandoc( "Extralit uses telemetry to report anonymous usage and error information. You\n" "can know more about what information is reported at:\n\n" - " https://docs.extralit.ai/latest/reference/argilla-server/telemetry/\n\n" + " https://docs.extralit.ai/latest/reference/extralit-server/telemetry/\n\n" "Telemetry is currently enabled. If you want to disable it, you can configure\n" "the environment variable before relaunching the server:\n\n" f'{"#set HF_HUB_DISABLE_TELEMETRY=1" if os.name == "nt" else "$>export HF_HUB_DISABLE_TELEMETRY=1"}' diff --git a/extralit/docs/admin_guide/index.md b/extralit/docs/admin_guide/index.md index f4b2a877c..e4c8406a7 100644 --- a/extralit/docs/admin_guide/index.md +++ b/extralit/docs/admin_guide/index.md @@ -33,7 +33,7 @@ hide: toc Learn how to configure various deployment options and customize Extralit for your specific needs. - [:octicons-arrow-right-24: How-to guide](../reference/argilla-server/configuration.md) + [:octicons-arrow-right-24: How-to guide](../reference/extralit-server/configuration.md) - __Upgrade Extralit__ diff --git a/extralit/docs/admin_guide/migrate_from_legacy_datasets.md b/extralit/docs/admin_guide/migrate_from_legacy_datasets.md index 464d458e9..3c10942d7 100644 --- a/extralit/docs/admin_guide/migrate_from_legacy_datasets.md +++ b/extralit/docs/admin_guide/migrate_from_legacy_datasets.md @@ -41,7 +41,7 @@ Argilla v2 introduces several important changes to the API that affect how you m !!! note Legacy datasets include: `DatasetForTextClassification`, `DatasetForTokenClassification`, and `DatasetForText2Text`. - `FeedbackDataset`'s do not need to be migrated as they are already in the Argilla V2 format. Anyway, since the 2.x version includes changes to the search index structure, you should reindex the datasets by enabling the docker environment variable REINDEX_DATASET (This step is automatically executed if you're running Argilla in an HF Space). See the [server configuration docs](../reference/argilla-server/configuration.md#docker-images-only) section for more details. + `FeedbackDataset`'s do not need to be migrated as they are already in the Argilla V2 format. Anyway, since the 2.x version includes changes to the search index structure, you should reindex the datasets by enabling the docker environment variable REINDEX_DATASET (This step is automatically executed if you're running Argilla in an HF Space). See the [server configuration docs](../reference/extralit-server/configuration.md#docker-images-only) section for more details. To follow this guide, you will need to have the following prerequisites: diff --git a/extralit/docs/admin_guide/upgrading.md b/extralit/docs/admin_guide/upgrading.md index 3722ffe10..39fe86316 100644 --- a/extralit/docs/admin_guide/upgrading.md +++ b/extralit/docs/admin_guide/upgrading.md @@ -30,8 +30,8 @@ This guide covers the update process for Extralit across different deployment op Finally, build the wheel containing the built argilla-frontend/dist ```bash - cp -r argilla-frontend/dist argilla-server/src/argilla_server/static - rm -rf argilla-server/dist && python -m build -s argilla-server/ + cp -r argilla-frontend/dist extralit-server/src/argilla_server/static + rm -rf extralit-server/dist && python -m build -s extralit-server/ ``` 3. Rebuild the `extralit` Python client package diff --git a/extralit/docs/community/developer.md b/extralit/docs/community/developer.md index 2a4e836f7..1827129fd 100644 --- a/extralit/docs/community/developer.md +++ b/extralit/docs/community/developer.md @@ -47,7 +47,7 @@ The Extralit repository has a monorepo structure, which means that all the compo - [`argilla/src/extralit/`](https://github.com/extralit/extralit/tree/develop/argilla/src/extralit): The FastAPI server project for extraction - [`argilla/docs/`](https://github.com/extralit/extralit/tree/develop/argilla/docs): The documentation project - [`argilla/src/argilla/`](https://github.com/extralit/extralit/tree/develop/argilla): The argilla SDK project -- [`argilla-server/src/argilla_server/`](https://github.com/extralit/extralit/tree/develop/argilla-server): The FastAPI server project for annotation +- [`extralit-server/src/argilla_server/`](https://github.com/extralit/extralit/tree/develop/argilla-server): The FastAPI server project for annotation - [`argilla-frontend/`](https://github.com/extralit/extralit/tree/develop/argilla-frontend): The Vue.js UI project - [`examples`](https://github.com/extralit/extralit/tree/develop/examples): Example resources for deployments, scripts and notebooks @@ -94,7 +94,7 @@ To install specific sub-packages with editable mode, you can use the following c ```sh pip install -e argilla/ # or -pip install -e argilla-server/ +pip install -e extralit-server/ ``` @@ -189,7 +189,7 @@ cd argilla-server pdm run revision -m "description of change" ``` -3. Review the generated revision file in `argilla-server/migrations/versions/` +3. Review the generated revision file in `extralit-server/migrations/versions/` 4. Test the migration: ```bash diff --git a/extralit/docs/getting_started/development_setup.md b/extralit/docs/getting_started/development_setup.md index 8afc9bb34..8149d1bd1 100644 --- a/extralit/docs/getting_started/development_setup.md +++ b/extralit/docs/getting_started/development_setup.md @@ -105,7 +105,7 @@ Then, select from three different development environments through devcontainers ### 3. Development workflow* - - **Backend Development**: Changes to `argilla-server/src/argilla_server/` or `argilla/src/{argilla,extralit}/` are automatically updated if Tilt is running + - **Backend Development**: Changes to `extralit-server/src/argilla_server/` or `argilla/src/{argilla,extralit}/` are automatically updated if Tilt is running - **Python SDK packages** ```bash cd argilla @@ -170,7 +170,7 @@ npm install npm run build # Copy built files to server static directory -cp -r dist ../argilla-server/src/argilla_server/static +cp -r dist ../extralit-server/src/argilla_server/static ``` ### 4. Configure Environment Variables diff --git a/extralit/docs/reference/argilla-server/telemetry.md b/extralit/docs/reference/argilla-server/telemetry.md index 7a5a01e80..6571af179 100644 --- a/extralit/docs/reference/argilla-server/telemetry.md +++ b/extralit/docs/reference/argilla-server/telemetry.md @@ -49,5 +49,5 @@ The following usage and error information is reported: * The type of deployment: `huggingface_space` or `server` * The dockerized deployment flag: `True` or `False` -For transparency, you can inspect the source code where this is performed [here](https://github.com/extralit/extralit/argilla-server/src/argilla_server/telemetry.py). +For transparency, you can inspect the source code where this is performed [here](https://github.com/extralit/extralit/extralit-server/src/argilla_server/telemetry.py). diff --git a/extralit/mkdocs.yml b/extralit/mkdocs.yml index 7c7a5706d..28ea80509 100644 --- a/extralit/mkdocs.yml +++ b/extralit/mkdocs.yml @@ -109,6 +109,7 @@ markdown_extensions: emoji_generator: !!python/name:material.extensions.emoji.to_svg # activating permalink: true makes the anchor link works in the notebooks + - toc: permalink: true @@ -205,13 +206,13 @@ nav: - Query and filter records: admin_guide/query.md - Import and export datasets: admin_guide/import_export.md - Advanced: - - Custom fields with layout templates: admin_guide/custom_fields.md - - Use webhooks to respond to server events: - - admin_guide/webhooks.md - - Webhooks internals: admin_guide/webhooks_internals.md - - Use Markdown to format rich content: admin_guide/use_markdown_to_format_rich_content.md - - Migrate users, workspaces and datasets to Argilla V2: admin_guide/migrate_from_legacy_datasets.md - - Custom fields with layout templates: admin_guide/custom_fields.md + - Custom fields with layout templates: admin_guide/custom_fields.md + - Use webhooks to respond to server events: + - admin_guide/webhooks.md + - Webhooks internals: admin_guide/webhooks_internals.md + - Use Markdown to format rich content: admin_guide/use_markdown_to_format_rich_content.md + - Migrate users, workspaces and datasets to Argilla V2: admin_guide/migrate_from_legacy_datasets.md + - Custom fields with layout templates: admin_guide/custom_fields.md - Tutorials: - tutorials/index.md - Text classification: tutorials/text_classification.ipynb @@ -221,10 +222,10 @@ nav: - API Reference: - Argilla Python SDK: reference/argilla/ - FastAPI Server: - - Server configuration: reference/argilla-server/configuration.md - - OAuth2 configuration: reference/argilla-server/oauth2_configuration.md + - Server configuration: reference/extralit-server/configuration.md + - OAuth2 configuration: reference/extralit-server/oauth2_configuration.md - Telemetry: - - Server Telemetry: reference/argilla-server/telemetry.md + - Server Telemetry: reference/extralit-server/telemetry.md - FAQ: getting_started/faq.md - Community: - community/index.md From 1903fee8b164eda9fd1196d0d82c8f4d20bfcfa9 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 09:11:08 -0700 Subject: [PATCH 07/23] rename argilla_server to extralit_server --- .../docker-compose/devcontainer.json | 4 +- .dockerignore | 2 +- .github/workflows/copilot-setup-steps.yml | 2 +- .../extralit-server.build-docker-images.yml | 4 +- .gitignore | 2 +- .kiro/specs/import-history-sidebar/design.md | 6 +- .kiro/specs/papers-library-importer/design.md | 8 +- .kiro/specs/papers-library-importer/tasks.md | 2 +- .kiro/steering/structure.md | 4 +- Tiltfile | 18 ++-- argilla-frontend/dev.frontend.Dockerfile | 4 +- .../domain/entities/import/ImportAnalysis.ts | 2 +- codecov.yml | 2 +- .../templates/worker-deployment.yaml | 2 +- extralit-server/.env.dev | 2 +- extralit-server/.gitignore | 2 +- extralit-server/README.md | 2 +- .../docker/extralit-hf-spaces/Dockerfile | 6 +- .../docker/extralit-hf-spaces/Procfile | 2 +- extralit-server/docker/server/Dockerfile | 8 +- .../server/dev.extralit_server.dockerfile | 38 ++++---- .../server/scripts/start_extralit_server.sh | 8 +- extralit-server/pyproject.toml | 12 +-- .../src/extralit_server/cli/start.py | 22 ++--- .../test_create_dataset_records_bulk.py | 22 ++--- .../handlers/v1/settings/test_get_settings.py | 26 +++--- .../api/handlers/v1/test_bulk_documents.py | 32 +++---- .../unit/api/handlers/v1/test_documents.py | 10 +-- .../tests/unit/api/handlers/v1/test_files.py | 14 +-- .../tests/unit/api/handlers/v1/test_models.py | 8 +- .../tests/unit/api/handlers/v1/test_oauth2.py | 90 ++++++++++++------- .../tests/unit/cli/database/users/conftest.py | 28 +++--- .../tests/unit/cli/search_engine/conftest.py | 22 ++--- extralit-server/tests/unit/cli/test_start.py | 22 ++--- .../tests/unit/commons/test_telemetry.py | 31 ++++--- extralit-server/tests/unit/conftest.py | 4 +- .../tests/unit/jobs/test_document_jobs.py | 16 ++-- extralit-server/tests/unit/test_app.py | 30 +++---- extralit/docs/admin_guide/k8s_deployment.md | 8 +- extralit/docs/admin_guide/upgrading.md | 8 +- extralit/docs/community/developer.md | 2 +- .../docs/getting_started/development_setup.md | 8 +- .../reference/argilla-server/configuration.md | 2 +- .../reference/argilla-server/telemetry.md | 2 +- 44 files changed, 287 insertions(+), 262 deletions(-) diff --git a/.devcontainer/docker-compose/devcontainer.json b/.devcontainer/docker-compose/devcontainer.json index c171646c4..4e87edc07 100644 --- a/.devcontainer/docker-compose/devcontainer.json +++ b/.devcontainer/docker-compose/devcontainer.json @@ -101,7 +101,7 @@ "python.condaPath": "/usr/local/bin/micromamba", "python.envFile": "${workspaceFolder}/extralit/.env.test", "search.exclude": { - "extralit-server/src/argilla_server/static/": true, + "extralit-server/src/extralit_server/static/": true, "argilla-frontend/dist/": true, "_nuxt/": true, "node_modules/": true, @@ -109,7 +109,7 @@ "**/*.png": true }, "files.watcherExclude": { - "extralit-server/src/argilla_server/static/": true, + "extralit-server/src/extralit_server/static/": true, "argilla-frontend/dist/": true, "_nuxt/": true, "node_modules/": true, diff --git a/.dockerignore b/.dockerignore index 9ce26e8c7..961759ed9 100644 --- a/.dockerignore +++ b/.dockerignore @@ -2,7 +2,7 @@ !dist/*.whl # Scripts -!docker/scripts/start_argilla_server.sh +!docker/scripts/start_extralit_server.sh !docker/scripts/wait-for-it.sh !docker/scripts/start_quickstart_argilla.sh !docker/scripts/load_data.py diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index f24dc0738..19af2b044 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -101,7 +101,7 @@ jobs: HOME: /home/runner run: | mkdir -p /home/runner/.extralit - pdm run alembic -c src/argilla_server/alembic.ini upgrade head + pdm run alembic -c src/extralit_server/alembic.ini upgrade head - name: Verify critical dependencies run: | diff --git a/.github/workflows/extralit-server.build-docker-images.yml b/.github/workflows/extralit-server.build-docker-images.yml index aff95ca54..c689a0fea 100644 --- a/.github/workflows/extralit-server.build-docker-images.yml +++ b/.github/workflows/extralit-server.build-docker-images.yml @@ -118,7 +118,7 @@ jobs: # tags: ${{ env.HF_SPACES_DOCKER_IMAGE }}:${{ env.IMAGE_TAG }} # labels: ${{ steps.meta.outputs.labels }} # build-args: | - # ARGILLA_SERVER_IMAGE=${{ env.SERVER_DOCKER_IMAGE }} + # extralit_server_IMAGE=${{ env.SERVER_DOCKER_IMAGE }} # ARGILLA_VERSION=${{ env.IMAGE_TAG }} # push: true @@ -131,7 +131,7 @@ jobs: # tags: ${{ env.HF_SPACES_DOCKER_IMAGE }}:latest # labels: ${{ steps.meta.outputs.labels }} # build-args: | - # ARGILLA_SERVER_IMAGE=${{ env.SERVER_DOCKER_IMAGE }} + # extralit_server_IMAGE=${{ env.SERVER_DOCKER_IMAGE }} # ARGILLA_VERSION=${{ env.IMAGE_TAG }} # push: true diff --git a/.gitignore b/.gitignore index 1bf60c5ee..996925b96 100644 --- a/.gitignore +++ b/.gitignore @@ -153,5 +153,5 @@ src/**/server/static/ .devcontainer/*/secrets # App generated files -extralit-server/src/argilla_server/static +extralit-server/src/extralit_server/static extralit/site diff --git a/.kiro/specs/import-history-sidebar/design.md b/.kiro/specs/import-history-sidebar/design.md index 6868d7365..641bbba05 100644 --- a/.kiro/specs/import-history-sidebar/design.md +++ b/.kiro/specs/import-history-sidebar/design.md @@ -56,7 +56,7 @@ graph TD - Provides detailed tabular data for DatasetConfiguration component - List view includes metadata but excludes data for performance -#### 2. ImportHistory Context Enhancement (`extralit-server/src/argilla_server/contexts/imports.py`) +#### 2. ImportHistory Context Enhancement (`extralit-server/src/extralit_server/contexts/imports.py`) **New Services:** - `get_import_history_details()` - Retrieve complete ImportHistory record with data @@ -394,12 +394,12 @@ argilla-frontend/ ### Backend File Organization ``` extralit-server/ -├── src/argilla_server/api/ +├── src/extralit_server/api/ │ ├── handlers/v1/ │ │ └── imports.py # Enhanced with details endpoint │ └── schemas/v1/ │ └── imports.py # Enhanced with details response -└── src/argilla_server/contexts/ +└── src/extralit_server/contexts/ └── imports.py # Enhanced with details service ``` diff --git a/.kiro/specs/papers-library-importer/design.md b/.kiro/specs/papers-library-importer/design.md index c5eac4c2d..9fd577765 100644 --- a/.kiro/specs/papers-library-importer/design.md +++ b/.kiro/specs/papers-library-importer/design.md @@ -52,7 +52,7 @@ graph TD ### Backend Components -#### 1. Import Analysis API Handler (`extralit-server/src/argilla_server/api/handlers/v1/imports.py`) +#### 1. Import Analysis API Handler (`extralit-server/src/extralit_server/api/handlers/v1/imports.py`) **Endpoints:** - `POST /api/v1/imports/analyze` - Analyze file metadata to determine add/update/skip status @@ -73,7 +73,7 @@ async def analyze_import( - Compares file sizes to determine if updates are needed - Returns status analysis for frontend preview without blocking on document validation errors -#### 2. Bulk Document Upload Handler (`extralit-server/src/argilla_server/api/handlers/v1/documents.py`) +#### 2. Bulk Document Upload Handler (`extralit-server/src/extralit_server/api/handlers/v1/documents.py`) **New Endpoint:** - `POST /documents/bulk` - Asynchronous bulk document upload with job queue @@ -93,13 +93,13 @@ async def bulk_upload_documents( - Job handles multiple file uploads and creates separate document records for each file - All files for a reference share the same bibliographic metadata but have unique file paths -#### 3. Import Context (`extralit-server/src/argilla_server/contexts/imports.py`) +#### 3. Import Context (`extralit-server/src/extralit_server/contexts/imports.py`) **Core Services:** - `analyze_import_status()` - Uses existing `check_existing_document()` function from documents handler to determine add/update/skip status - `validate_document_metadata()` - Validate DocumentMetadata objects (not just DocumentCreate) from frontend -#### 4. Document Upload Job (`extralit-server/src/argilla_server/jobs/document_jobs.py`) +#### 4. Document Upload Job (`extralit-server/src/extralit_server/jobs/document_jobs.py`) **Async Job Functions:** ```python diff --git a/.kiro/specs/papers-library-importer/tasks.md b/.kiro/specs/papers-library-importer/tasks.md index 85d879733..f54fb75cd 100644 --- a/.kiro/specs/papers-library-importer/tasks.md +++ b/.kiro/specs/papers-library-importer/tasks.md @@ -50,7 +50,7 @@ - _Requirements: 3.1, 3.3, 3.4, 3.7_ - [x] 3.3 Implement ImportHistory database model - - Create ImportHistory model in database.py with required fields, with the alembic upgrade path at `extralit-server/src/argilla_server/alembic/versions/7d6b33203390_create_import_history_table.py` + - Create ImportHistory model in database.py with required fields, with the alembic upgrade path at `extralit-server/src/extralit_server/alembic/versions/7d6b33203390_create_import_history_table.py` - Add relationships to Workspace and User models - Create migration script for the new table - _Requirements: 3.5, 4.1_ diff --git a/.kiro/steering/structure.md b/.kiro/steering/structure.md index 458b6770b..a1fbe2760 100644 --- a/.kiro/steering/structure.md +++ b/.kiro/steering/structure.md @@ -16,7 +16,7 @@ extralit/ ## Backend Structure (extralit-server/) ``` extralit-server/ -├── src/argilla_server/ +├── src/extralit_server/ │ ├── api/ # FastAPI routes and handlers │ │ ├── handlers/ # Request handlers by version │ │ └── schemas/ # Pydantic models for API @@ -186,7 +186,7 @@ examples/ - **K8s**: `Tiltfile` for Kubernetes development ## Development Workflow -1. **Backend changes**: Work in `extralit-server/src/argilla_server/` +1. **Backend changes**: Work in `extralit-server/src/extralit_server/` 2. **Frontend changes**: Work in `argilla-frontend/components/` or `argilla-frontend/pages/` 3. **SDK changes**: Work in `extralit/src/argilla/` or `extralit/src/extralit/` 4. **Tests**: Each package has its own `tests/` directory diff --git a/Tiltfile b/Tiltfile index e5798915a..259b50640 100644 --- a/Tiltfile +++ b/Tiltfile @@ -53,8 +53,8 @@ k8s_resource( helm_repo('bitnami', 'https://charts.bitnami.com/bitnami', labels=['helm'], resource_name='bitnami-helm') if not ARGILLA_DATABASE_URL: helm_resource( - name='main-db', - chart='bitnami/postgresql', + name='main-db', + chart='bitnami/postgresql', flags=[ '--version=13.2.0', '--values=examples/deployments/k8s/helm/postgres-helm.yaml'], @@ -100,7 +100,7 @@ docker_build( ] ) extralit_server_k8s_yaml = read_yaml_stream('examples/deployments/k8s/extralit-server-deployment.yaml') -for o in argilla_server_k8s_yaml: +for o in extralit_server_k8s_yaml: for container in o['spec']['template']['spec']['containers']: if container['name'] == 'argilla-server': container['image'] = "{DOCKER_REPO}/argilla-server".format(DOCKER_REPO=DOCKER_REPO) @@ -118,8 +118,8 @@ for o in argilla_server_k8s_yaml: ]) k8s_yaml([ - encode_yaml_stream(argilla_server_k8s_yaml), - 'examples/deployments/k8s/extralit-server-service.yaml', + encode_yaml_stream(extralit_server_k8s_yaml), + 'examples/deployments/k8s/extralit-server-service.yaml', 'examples/deployments/k8s/extralit-server-ingress.yaml', # 'examples/deployments/k8s/argilla-loadbalancer-service.yaml' ]) @@ -143,7 +143,7 @@ k8s_resource( # MinIO S3 storage if not S3_ENDPOINT or not S3_ACCESS_KEY or not S3_SECRET_KEY: k8s_yaml([ - 'examples/deployments/k8s/minio-dev.yaml', + 'examples/deployments/k8s/minio-dev.yaml', 'examples/deployments/k8s/minio-standalone-pvc.yaml']) k8s_resource( 'minio', @@ -154,8 +154,8 @@ if not S3_ENDPOINT or not S3_ACCESS_KEY or not S3_SECRET_KEY: # Weaviate vector database helm_repo('weaviate', 'https://weaviate.github.io/weaviate-helm', labels=['helm'], resource_name='weaviate-helm') helm_resource( - name='weaviate-server', - chart='weaviate/weaviate', + name='weaviate-server', + chart='weaviate/weaviate', flags=[ '--version=16.8.8', '--values=examples/deployments/k8s/helm/weaviate-helm.yaml'], @@ -201,7 +201,7 @@ for o in extralit_k8s_yaml: ]) k8s_yaml([ - encode_yaml_stream(extralit_k8s_yaml), + encode_yaml_stream(extralit_k8s_yaml), 'examples/deployments/k8s/extralit-configs.yaml' ]) k8s_resource( diff --git a/argilla-frontend/dev.frontend.Dockerfile b/argilla-frontend/dev.frontend.Dockerfile index 01bc03c2d..cdd34d5c3 100644 --- a/argilla-frontend/dev.frontend.Dockerfile +++ b/argilla-frontend/dev.frontend.Dockerfile @@ -1,6 +1,6 @@ -ARG ARGILLA_SERVER_TAG=develop +ARG extralit_server_TAG=develop -FROM extralitdev/argilla-hf-spaces:${ARGILLA_SERVER_TAG} +FROM extralitdev/argilla-hf-spaces:${extralit_server_TAG} USER root diff --git a/argilla-frontend/v1/domain/entities/import/ImportAnalysis.ts b/argilla-frontend/v1/domain/entities/import/ImportAnalysis.ts index e15dc45b9..04288a349 100644 --- a/argilla-frontend/v1/domain/entities/import/ImportAnalysis.ts +++ b/argilla-frontend/v1/domain/entities/import/ImportAnalysis.ts @@ -1,6 +1,6 @@ /** * Import analysis entities based on backend schemas - * Maps to extralit-server/src/argilla_server/api/schemas/v1/imports.py + * Maps to extralit-server/src/extralit_server/api/schemas/v1/imports.py */ // Basic field types supported in dataframes diff --git a/codecov.yml b/codecov.yml index 7b465d7af..6915a6803 100644 --- a/codecov.yml +++ b/codecov.yml @@ -24,7 +24,7 @@ flags: paths: - argilla-v1/src/argilla_v1/ carryforward: true - argilla_server: + extralit_server: paths: - extralit-server/ carryforward: true diff --git a/examples/deployments/k8s/argilla-chart/templates/worker-deployment.yaml b/examples/deployments/k8s/argilla-chart/templates/worker-deployment.yaml index ef41432eb..ba4ae8eaf 100644 --- a/examples/deployments/k8s/argilla-chart/templates/worker-deployment.yaml +++ b/examples/deployments/k8s/argilla-chart/templates/worker-deployment.yaml @@ -31,7 +31,7 @@ spec: - name: ARGILLA_HOME_PATH value: {{ .Values.argilla.persistence.mountPath | quote }} {{- end }} - command: ["sh", "-c", "python -m argilla_server worker --num-workers ${BACKGROUND_NUM_WORKERS}"] + command: ["sh", "-c", "python -m extralit_server worker --num-workers ${BACKGROUND_NUM_WORKERS}"] {{- if .Values.argilla.persistence.enabled }} volumeMounts: - name: argilla-data diff --git a/extralit-server/.env.dev b/extralit-server/.env.dev index a1399f4f2..1e95eb88b 100644 --- a/extralit-server/.env.dev +++ b/extralit-server/.env.dev @@ -1,5 +1,5 @@ OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES # Needed by RQ to work with forked processes on MacOS -ALEMBIC_CONFIG=src/argilla_server/alembic.ini +ALEMBIC_CONFIG=src/extralit_server/alembic.ini ARGILLA_AUTH_SECRET_KEY=8VO7na5N/jQx+yP/N+HlE8q51vPdrxqlh6OzoebIyko= # With this we avoid using a different key every time the server is reloaded ARGILLA_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/argilla-dev.db?check_same_thread=False HF_HUB_DISABLE_TELEMETRY=1 diff --git a/extralit-server/.gitignore b/extralit-server/.gitignore index 5b23677dc..cbe83758a 100644 --- a/extralit-server/.gitignore +++ b/extralit-server/.gitignore @@ -166,4 +166,4 @@ cython_debug/ .DS_Store # Generated static files -src/argilla_server/static/ \ No newline at end of file +src/extralit_server/static/ \ No newline at end of file diff --git a/extralit-server/README.md b/extralit-server/README.md index bafa1e4e6..48243ddf6 100644 --- a/extralit-server/README.md +++ b/extralit-server/README.md @@ -110,7 +110,7 @@ python -m extralit_server db create-user # Start servers python -m extralit_server start -python -m argilla_server start +python -m extralit_server start # Run workers python -m extralit_server worker diff --git a/extralit-server/docker/extralit-hf-spaces/Dockerfile b/extralit-server/docker/extralit-hf-spaces/Dockerfile index e195103d8..41bf40fff 100644 --- a/extralit-server/docker/extralit-hf-spaces/Dockerfile +++ b/extralit-server/docker/extralit-hf-spaces/Dockerfile @@ -1,9 +1,9 @@ # Multi-stage build to reduce image size ARG ARGILLA_VERSION=latest -ARG ARGILLA_SERVER_IMAGE=extralitdev/argilla-server +ARG extralit_server_IMAGE=extralitdev/argilla-server # Base stage with common dependencies -FROM ${ARGILLA_SERVER_IMAGE}:${ARGILLA_VERSION} AS base +FROM ${extralit_server_IMAGE}:${ARGILLA_VERSION} AS base USER root # Copy Argilla distribution files @@ -37,7 +37,7 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends re # Install Python dependencies and additional utilities RUN pip install --no-cache-dir -r /packages/requirements.txt && \ chmod +x /home/argilla/start.sh && \ - chmod +x /home/argilla/start_argilla_server.sh && \ + chmod +x /home/argilla/start_extralit_server.sh && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends curl jq pwgen && \ apt-get remove -y wget gnupg && \ apt-get clean && \ diff --git a/extralit-server/docker/extralit-hf-spaces/Procfile b/extralit-server/docker/extralit-hf-spaces/Procfile index 940bc02e6..428200686 100644 --- a/extralit-server/docker/extralit-hf-spaces/Procfile +++ b/extralit-server/docker/extralit-hf-spaces/Procfile @@ -2,4 +2,4 @@ elastic: /usr/share/elasticsearch/bin/elasticsearch redis: /usr/bin/redis-server worker_high: sleep 30; rq worker-pool --num-workers 2 high worker_default: sleep 30; rq worker-pool --num-workers 1 default -argilla: sleep 30; /bin/bash start_argilla_server.sh +argilla: sleep 30; /bin/bash start_extralit_server.sh diff --git a/extralit-server/docker/server/Dockerfile b/extralit-server/docker/server/Dockerfile index 9dc1a6ef2..eabeb115a 100644 --- a/extralit-server/docker/server/Dockerfile +++ b/extralit-server/docker/server/Dockerfile @@ -29,7 +29,7 @@ ENV ARGILLA_HOME_PATH=/var/lib/argilla ## Uvicorn defaults ENV UVICORN_PORT=6900 ### Uvicorn app. Extended apps can override this variable -ENV UVICORN_APP=argilla_server:app +ENV UVICORN_APP=extralit_server:app RUN useradd -ms /bin/bash argilla @@ -43,7 +43,7 @@ RUN mkdir -p "$ARGILLA_HOME_PATH" && \ rm -rf /var/lib/apt/lists/* /packages VOLUME $ARGILLA_HOME_PATH -COPY scripts/start_argilla_server.sh /home/argilla +COPY scripts/start_extralit_server.sh /home/argilla # Destination folder must be the same as the builder one. Otherwise installed script won't work (since the installation fixes the path inside the script) COPY --chown=argilla:argilla --from=builder /opt/venv /opt/venv @@ -52,11 +52,11 @@ ENV MAMBA_ROOT_PREFIX=/opt/venv ENV CONDA_PREFIX=/opt/venv WORKDIR /home/argilla -RUN chmod +x start_argilla_server.sh +RUN chmod +x start_extralit_server.sh USER argilla # Exposing ports EXPOSE 6900 -CMD ["/bin/bash", "start_argilla_server.sh"] +CMD ["/bin/bash", "start_extralit_server.sh"] diff --git a/extralit-server/docker/server/dev.extralit_server.dockerfile b/extralit-server/docker/server/dev.extralit_server.dockerfile index 34d989e63..7db7960ac 100644 --- a/extralit-server/docker/server/dev.extralit_server.dockerfile +++ b/extralit-server/docker/server/dev.extralit_server.dockerfile @@ -5,23 +5,23 @@ COPY dist/*.whl /packages/ RUN python -m venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" RUN apt-get update && \ - apt-get upgrade -y && \ - apt-get install -y python-dev-is-python3 libpq-dev gcc && \ - pip install --upgrade uv && \ - uv pip install uvicorn[standard] && \ - for wheel in /packages/*.whl; do uv pip install "$wheel"[server,postgresql]; done && \ - apt-get remove -y python-dev-is-python3 libpq-dev gcc && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /packages + apt-get upgrade -y && \ + apt-get install -y python-dev-is-python3 libpq-dev gcc && \ + pip install --upgrade uv && \ + uv pip install uvicorn[standard] && \ + for wheel in /packages/*.whl; do uv pip install "$wheel"[server,postgresql]; done && \ + apt-get remove -y python-dev-is-python3 libpq-dev gcc && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* && \ + rm -rf /packages FROM python:3.10-slim RUN apt-get update && \ - apt-get upgrade -y && \ - apt-get install -y libpq-dev nano && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* + apt-get upgrade -y && \ + apt-get install -y libpq-dev nano && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* COPY --from=builder /opt/venv /opt/venv @@ -41,7 +41,7 @@ ENV ARGILLA_LOCAL_AUTH_USERS_DB_FILE=$USERS_DB ## Uvicorn defaults ENV UVICORN_PORT=6900 ### Uvicorn app. Extended apps can override this variable -ENV UVICORN_APP=argilla_server:app +ENV UVICORN_APP=extralit_server:app # Create a user and a volume for argilla @@ -62,12 +62,12 @@ SHELL ["/bin/bash", "-c"] RUN source /opt/venv/bin/activate ENV PATH="/opt/venv/bin:$PATH" ENV VIRTUAL_ENV="/opt/venv" -ENV UVICORN_APP=argilla_server:app +ENV UVICORN_APP=extralit_server:app RUN uv pip install -q uvicorn[standard] -e "." - -RUN chmod +x /home/argilla/start_argilla_server.sh && \ - chown -R argilla:argilla /home/argilla + +RUN chmod +x /home/argilla/start_extralit_server.sh && \ + chown -R argilla:argilla /home/argilla # Switch to the argilla user USER argilla @@ -76,4 +76,4 @@ USER argilla EXPOSE 6900 # Set the command for the container -CMD /bin/bash -c "/bin/bash start_argilla_server.sh" +CMD /bin/bash -c "/bin/bash start_extralit_server.sh" diff --git a/extralit-server/docker/server/scripts/start_extralit_server.sh b/extralit-server/docker/server/scripts/start_extralit_server.sh index 61a89b85b..35765a5de 100755 --- a/extralit-server/docker/server/scripts/start_extralit_server.sh +++ b/extralit-server/docker/server/scripts/start_extralit_server.sh @@ -13,7 +13,7 @@ if [ -z "$ARGILLA_DATABASE_URL" ] && [ -n "$POSTGRES_PASSWORD" ] && [ -n "$POSTG fi # Run database migrations -python -m argilla_server database migrate +python -m extralit_server database migrate if [ -n "$USERNAME" ] && [ -n "$PASSWORD" ]; then echo "Creating owner user with username ${USERNAME}" @@ -28,17 +28,17 @@ if [ -n "$USERNAME" ] && [ -n "$PASSWORD" ]; then cmd_args="$cmd_args --workspace $WORKSPACE" fi - python -m argilla_server database users create $cmd_args + python -m extralit_server database users create $cmd_args else echo "No username and password was provided. Skipping user creation" fi # Reindexing data into search engine -index_count=$(python -m argilla_server search-engine list | wc -l) +index_count=$(python -m extralit_server search-engine list | wc -l) if [ "$REINDEX_DATASETS" == "true" ] || [ "$REINDEX_DATASETS" == "1" ] || [ "$index_count" -le 1 ]; then echo "Reindexing existing datasets" - python -m argilla_server search-engine reindex + python -m extralit_server search-engine reindex fi if [ "$ENV" = "dev" ]; then diff --git a/extralit-server/pyproject.toml b/extralit-server/pyproject.toml index 24c84875d..7c82f565b 100644 --- a/extralit-server/pyproject.toml +++ b/extralit-server/pyproject.toml @@ -173,19 +173,19 @@ line-length = 120 [tool.pdm.scripts] _.env_file = ".env.dev" -cli = { cmd = "python -m argilla_server.cli" } -server = { cmd = "uvicorn argilla_server:app --host 0.0.0.0 --port 6900 --reload" } +cli = { cmd = "python -m extralit_server.cli" } +server = { cmd = "uvicorn extralit_server:app --host 0.0.0.0 --port 6900 --reload" } migrate = { cmd = "alembic upgrade head" } -alembic = { cmd = "alembic -c src/argilla_server/alembic.ini" } -revision = { cmd = "alembic -c src/argilla_server/alembic.ini revision --autogenerate" } -worker = { cmd = "python -m argilla_server worker" } +alembic = { cmd = "alembic -c src/extralit_server/alembic.ini" } +revision = { cmd = "alembic -c src/extralit_server/alembic.ini revision --autogenerate" } +worker = { cmd = "python -m extralit_server worker" } server-dev.composite = [ "migrate", "cli database users create_default", "server", ] test = { cmd = "pytest --verbosity=1 --disable-warnings", env_file = ".env.test" } -test-cov = { cmd = "pytest tests --cov=argilla_server --cov-report=term --cov-report=xml --verbosity=0 --disable-warnings", env_file = ".env.test" } +test-cov = { cmd = "pytest tests --cov=extralit_server --cov-report=term --cov-report=xml --verbosity=0 --disable-warnings", env_file = ".env.test" } docker-build-argilla-server = { shell = "pdm build && cp -R dist docker/server && docker build -t extralit/argilla-server:local docker/server" } docker-build-argilla-hf-spaces = { shell = "pdm run docker-build-argilla-server && docker build --build-arg ARGILLA_VERSION=local -t extralit/argilla-hf-spaces:local docker/argilla-hf-spaces" } diff --git a/extralit-server/src/extralit_server/cli/start.py b/extralit-server/src/extralit_server/cli/start.py index b802b76ef..b88ce6e18 100644 --- a/extralit-server/src/extralit_server/cli/start.py +++ b/extralit-server/src/extralit_server/cli/start.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import typer @@ -23,7 +23,7 @@ def start( import uvicorn uvicorn.run( - "argilla_server:app", + "extralit_server:app", port=port, host=host, access_log=access_log, diff --git a/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py index 53d9c04bf..78511a429 100644 --- a/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py +++ b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest from typing import Any @@ -831,7 +831,7 @@ async def test_create_dataset_records_bulk_with_wrong_custom_field_value( { "loc": ["body", "items", 0, "fields"], "msg": "Value error, Error parsing chat field 'text-field': " - "argilla_server.api.schemas.v1.chat.ChatFieldValue() " + "extralit_server.api.schemas.v1.chat.ChatFieldValue() " "argument after ** must be a mapping, not str", "type": "value_error", } diff --git a/extralit-server/tests/unit/api/handlers/v1/settings/test_get_settings.py b/extralit-server/tests/unit/api/handlers/v1/settings/test_get_settings.py index c76149172..d91d1e8e7 100644 --- a/extralit-server/tests/unit/api/handlers/v1/settings/test_get_settings.py +++ b/extralit-server/tests/unit/api/handlers/v1/settings/test_get_settings.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os from unittest import mock @@ -19,7 +19,7 @@ from extralit_server.contexts import settings as settings_context from extralit_server.contexts.settings import HUGGINGFACE_SETTINGS from extralit_server.integrations.huggingface.spaces import HuggingfaceSettings -from extralit_server.settings import settings as argilla_server_settings, settings +from extralit_server.settings import settings as extralit_server_settings, settings from httpx import AsyncClient @@ -39,7 +39,9 @@ async def test_get_settings_for_argilla_settings_running_on_huggingface_with_dis self, async_client: AsyncClient ): with mock.patch.object(HUGGINGFACE_SETTINGS, "space_id", "space-id"): - with mock.patch.object(argilla_server_settings, "show_huggingface_space_persistent_storage_warning", False): + with mock.patch.object( + extralit_server_settings, "show_huggingface_space_persistent_storage_warning", False + ): response = await async_client.get(self.url()) assert response.status_code == 200 diff --git a/extralit-server/tests/unit/api/handlers/v1/test_bulk_documents.py b/extralit-server/tests/unit/api/handlers/v1/test_bulk_documents.py index 6810e399a..c26b88795 100644 --- a/extralit-server/tests/unit/api/handlers/v1/test_bulk_documents.py +++ b/extralit-server/tests/unit/api/handlers/v1/test_bulk_documents.py @@ -16,7 +16,7 @@ import pytest from io import BytesIO from uuid import uuid4 -from unittest.mock import patch, MagicMock +from unittest.mock import patch from fastapi import status from httpx import AsyncClient @@ -158,14 +158,14 @@ async def test_bulk_upload_documents_invalid_workspace(self, async_client: Async assert response.status_code == status.HTTP_422_UNPROCESSABLE_ENTITY assert "not found" in response.json()["detail"] - @patch("argilla_server.contexts.imports.process_bulk_upload") - async def test_bulk_upload_documents_success(self, mock_process_bulk, async_client: AsyncClient, owner_auth_header: dict): + @patch("extralit_server.contexts.imports.process_bulk_upload") + async def test_bulk_upload_documents_success( + self, mock_process_bulk, async_client: AsyncClient, owner_auth_header: dict + ): """Test successful bulk upload.""" # Mock the process_bulk_upload function mock_process_bulk.return_value = DocumentsBulkResponse( - job_ids={"test_ref": "test_job_id"}, - total_documents=1, - failed_validations=[] + job_ids={"test_ref": "test_job_id"}, total_documents=1, failed_validations=[] ) # Create owner user and workspace @@ -211,14 +211,14 @@ async def test_bulk_upload_documents_success(self, mock_process_bulk, async_clie # Verify process_bulk_upload was called mock_process_bulk.assert_called_once() - @patch("argilla_server.contexts.imports.process_bulk_upload") - async def test_bulk_upload_documents_multiple_files(self, mock_process_bulk, async_client: AsyncClient, owner_auth_header: dict): + @patch("extralit_server.contexts.imports.process_bulk_upload") + async def test_bulk_upload_documents_multiple_files( + self, mock_process_bulk, async_client: AsyncClient, owner_auth_header: dict + ): """Test bulk upload with multiple files.""" # Mock the process_bulk_upload function mock_process_bulk.return_value = DocumentsBulkResponse( - job_ids={"ref1": "job_id_1", "ref2": "job_id_2"}, - total_documents=2, - failed_validations=[] + job_ids={"ref1": "job_id_1", "ref2": "job_id_2"}, total_documents=2, failed_validations=[] ) # Create owner user and workspace @@ -273,14 +273,14 @@ async def test_bulk_upload_documents_multiple_files(self, mock_process_bulk, asy # Verify process_bulk_upload was called mock_process_bulk.assert_called_once() - @patch("argilla_server.contexts.imports.process_bulk_upload") - async def test_bulk_upload_documents_partial_failure(self, mock_process_bulk, async_client: AsyncClient, owner_auth_header: dict): + @patch("extralit_server.contexts.imports.process_bulk_upload") + async def test_bulk_upload_documents_partial_failure( + self, mock_process_bulk, async_client: AsyncClient, owner_auth_header: dict + ): """Test bulk upload with some files failing validation.""" # Mock the process_bulk_upload function with partial failure mock_process_bulk.return_value = DocumentsBulkResponse( - job_ids={"valid_ref": "test_job_id"}, - total_documents=2, - failed_validations=["invalid_ref: Not a PDF file"] + job_ids={"valid_ref": "test_job_id"}, total_documents=2, failed_validations=["invalid_ref: Not a PDF file"] ) # Create owner user and workspace diff --git a/extralit-server/tests/unit/api/handlers/v1/test_documents.py b/extralit-server/tests/unit/api/handlers/v1/test_documents.py index 812d0725a..bc47b1767 100644 --- a/extralit-server/tests/unit/api/handlers/v1/test_documents.py +++ b/extralit-server/tests/unit/api/handlers/v1/test_documents.py @@ -45,7 +45,7 @@ async def test_upload_document(async_client: AsyncClient, db: AsyncSession, owne ) # Mock the put_object function - with patch("argilla_server.contexts.files.put_object") as mock_put_object: + with patch("extralit_server.contexts.files.put_object") as mock_put_object: mock_put_object.return_value = MagicMock() upload_response = await async_client.post( @@ -85,8 +85,8 @@ async def test_upload_duplicate_document(async_client: AsyncClient, db: AsyncSes # Mock the put_object function with ( - patch("argilla_server.contexts.files.put_object") as mock_put_object, - patch("argilla_server.contexts.files.get_object") as mock_get_object, + patch("extralit_server.contexts.files.put_object") as mock_put_object, + patch("extralit_server.contexts.files.get_object") as mock_get_object, ): mock_put_object.return_value = MagicMock() mock_get_response = MagicMock() @@ -156,13 +156,13 @@ async def test_delete_documents_by_id(async_client: AsyncClient, db: AsyncSessio document = await DocumentFactory.create(workspace=workspace) - with patch("argilla_server.contexts.files.delete_object") as mock_delete_object: + with patch("extralit_server.contexts.files.delete_object") as mock_delete_object: mock_delete_object.return_value = None document_delete = DocumentDeleteRequest(id=document.id) # Use proper patching to avoid 500 error - with patch("argilla_server.contexts.files.delete_object") as mock_delete: + with patch("extralit_server.contexts.files.delete_object") as mock_delete: mock_delete.return_value = None response = await async_client.delete( diff --git a/extralit-server/tests/unit/api/handlers/v1/test_files.py b/extralit-server/tests/unit/api/handlers/v1/test_files.py index c22071e91..15ff39a50 100644 --- a/extralit-server/tests/unit/api/handlers/v1/test_files.py +++ b/extralit-server/tests/unit/api/handlers/v1/test_files.py @@ -35,7 +35,7 @@ @pytest.mark.asyncio async def test_get_file(async_client: "AsyncClient"): # Mock the Minio client and the response - with patch("argilla_server.contexts.files.get_object") as mock_get_object: + with patch("extralit_server.contexts.files.get_object") as mock_get_object: # Set up mock response mock_response = MagicMock() mock_response.data = b"test data" @@ -59,7 +59,7 @@ async def test_put_file(async_client: "AsyncClient", owner_auth_header: dict): file_content = b"test file content" # Mock the Minio client and the response - with patch("argilla_server.contexts.files.put_object") as mock_put_object: + with patch("extralit_server.contexts.files.put_object") as mock_put_object: mock_response = ObjectMetadata(bucket_name=bucket_name, object_name=object_name, is_latest=True) mock_put_object.return_value = mock_response @@ -97,7 +97,7 @@ async def test_list_objects(async_client: "AsyncClient", owner_auth_header: dict await WorkspaceUserFactory.create(workspace_id=workspace_a.id, user_id=user_a.id) # Mock the Minio client and the response - with patch("argilla_server.contexts.files.list_objects") as mock_list_objects: + with patch("extralit_server.contexts.files.list_objects") as mock_list_objects: mock_response = ListObjectsResponse( objects=[ ObjectMetadata(bucket_name=bucket_name, object_name=f"{prefix}/test1"), @@ -122,9 +122,9 @@ async def test_list_objects_with_versions(async_client: "AsyncClient", owner_aut # Mock get_minio_client and bucket_exists with ( - patch("argilla_server.contexts.files.get_minio_client") as mock_get_minio_client, - patch("argilla_server.contexts.files.delete_bucket") as mock_delete_bucket, - patch("argilla_server.contexts.files.list_objects") as mock_list_objects, + patch("extralit_server.contexts.files.get_minio_client") as mock_get_minio_client, + patch("extralit_server.contexts.files.delete_bucket") as mock_delete_bucket, + patch("extralit_server.contexts.files.list_objects") as mock_list_objects, ): # Setup mocks mock_client = MagicMock() @@ -183,7 +183,7 @@ async def test_delete_file(async_client: "AsyncClient", owner_auth_header: dict) file = MinioFileFactory.build(object_name=object_name, bucket_name=bucket_name) # Mock delete_object function - with patch("argilla_server.contexts.files.delete_object") as mock_delete: + with patch("extralit_server.contexts.files.delete_object") as mock_delete: mock_delete.return_value = None response = await async_client.delete( diff --git a/extralit-server/tests/unit/api/handlers/v1/test_models.py b/extralit-server/tests/unit/api/handlers/v1/test_models.py index 665e1dc67..6e7edd797 100644 --- a/extralit-server/tests/unit/api/handlers/v1/test_models.py +++ b/extralit-server/tests/unit/api/handlers/v1/test_models.py @@ -38,7 +38,7 @@ async def aiter(iterable): async def test_models_proxy_get_request_streaming_as_owner(): current_user = User(username="testuser", role="owner") - with patch("argilla_server.api.handlers.v1.models.client.send") as mock_send: + with patch("extralit_server.api.handlers.v1.models.client.send") as mock_send: mock_response = MagicMock() mock_response.aiter_raw = MagicMock(return_value=aiter([b"chunk1", b"chunk2"])) mock_send.return_value = mock_response @@ -58,7 +58,7 @@ async def test_models_proxy_post_request_as_admin(): user = await AdminFactory() await WorkspaceUserFactory(workspace_id=workspace.id, user_id=user.id) - with patch("argilla_server.api.handlers.v1.models.client.send") as mock_send: + with patch("extralit_server.api.handlers.v1.models.client.send") as mock_send: mock_response = MagicMock() mock_response.aiter_raw.return_value = [b"chunk1", b"chunk2"] mock_send.return_value = mock_response @@ -75,7 +75,7 @@ async def test_models_proxy_post_request_as_admin(): async def test_models_proxy_put_request(): current_user = User(username="testuser", role="owner") - with patch("argilla_server.api.handlers.v1.models.client.send") as mock_send: + with patch("extralit_server.api.handlers.v1.models.client.send") as mock_send: mock_response = MagicMock() mock_response.aiter_raw.return_value = [b"chunk1", b"chunk2"] mock_send.return_value = mock_response @@ -92,7 +92,7 @@ async def test_models_proxy_put_request(): async def test_models_proxy_delete_request(): current_user = User(username="testuser", role="owner") - with patch("argilla_server.api.handlers.v1.models.client.send") as mock_send: + with patch("extralit_server.api.handlers.v1.models.client.send") as mock_send: mock_response = MagicMock() mock_response.aiter_raw.return_value = [b"chunk1", b"chunk2"] mock_send.return_value = mock_response diff --git a/extralit-server/tests/unit/api/handlers/v1/test_oauth2.py b/extralit-server/tests/unit/api/handlers/v1/test_oauth2.py index 080c07794..f66a98b42 100644 --- a/extralit-server/tests/unit/api/handlers/v1/test_oauth2.py +++ b/extralit-server/tests/unit/api/handlers/v1/test_oauth2.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from unittest import mock @@ -53,7 +53,9 @@ async def tests_list_providers_with_default_config(self, async_client: AsyncClie async def test_list_providers( self, async_client: AsyncClient, owner_auth_header: dict, default_oauth_settings: OAuth2Settings ): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): response = await async_client.get("/api/v1/oauth2/providers", headers=owner_auth_header) assert response.status_code == 200 assert response.json() == {"items": [{"name": "huggingface"}]} @@ -61,7 +63,9 @@ async def test_list_providers( async def test_provider_huggingface_authentication( self, async_client: AsyncClient, owner_auth_header: dict, default_oauth_settings: OAuth2Settings ): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): response = await async_client.get( "/api/v1/oauth2/providers/huggingface/authentication?extra=params", headers=owner_auth_header ) @@ -76,7 +80,9 @@ async def test_provider_huggingface_authentication( async def test_provider_authentication_with_invalid_provider( self, async_client: AsyncClient, owner_auth_header: dict, default_oauth_settings: OAuth2Settings ): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): response = await async_client.get( "/api/v1/oauth2/providers/invalid/authentication", headers=owner_auth_header ) @@ -89,9 +95,11 @@ async def test_provider_huggingface_access_token( owner_auth_header: dict, default_oauth_settings: OAuth2Settings, ): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): with mock.patch( - "argilla_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", + "extralit_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", return_value={"username": "username", "name": "name"}, ): response = await async_client.get( @@ -120,9 +128,11 @@ async def test_provider_access_token_with_specific_userinfo_workspace( ): workspace = await WorkspaceFactory.create() - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): with mock.patch( - "argilla_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", + "extralit_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", return_value={"username": "username", "name": "name", "available_workspaces": [workspace.name]}, ): response = await async_client.get( @@ -152,9 +162,11 @@ async def test_provider_huggingface_access_token_with_missing_username( owner_auth_header: dict, default_oauth_settings: OAuth2Settings, ): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): with mock.patch( - "argilla_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", + "extralit_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", return_value={"name": "name"}, ): response = await async_client.get( @@ -173,9 +185,11 @@ async def test_provider_huggingface_access_token_with_missing_name( owner_auth_header: dict, default_oauth_settings: OAuth2Settings, ): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): with mock.patch( - "argilla_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", + "extralit_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", return_value={"username": "username"}, ): response = await async_client.get( @@ -199,7 +213,9 @@ async def test_provider_huggingface_access_token_with_missing_name( async def test_provider_access_token_with_invalid_provider( self, async_client: AsyncClient, owner_auth_header: dict, default_oauth_settings: OAuth2Settings ): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): response = await async_client.get( "/api/v1/oauth2/providers/invalid/authentication", headers=owner_auth_header ) @@ -208,7 +224,9 @@ async def test_provider_access_token_with_invalid_provider( async def test_provider_access_token_with_not_found_code( self, async_client: AsyncClient, owner_auth_header: dict, default_oauth_settings: OAuth2Settings ): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): response = await async_client.get( "/api/v1/oauth2/providers/huggingface/access-token", headers=owner_auth_header ) @@ -218,7 +236,9 @@ async def test_provider_access_token_with_not_found_code( async def test_provider_access_token_with_not_found_state( self, async_client: AsyncClient, owner_auth_header: dict, default_oauth_settings: OAuth2Settings ): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): response = await async_client.get( "/api/v1/oauth2/providers/huggingface/access-token", params={"code": "code"}, headers=owner_auth_header ) @@ -228,7 +248,9 @@ async def test_provider_access_token_with_not_found_state( async def test_provider_access_token_with_invalid_state( self, async_client: AsyncClient, owner_auth_header: dict, default_oauth_settings: OAuth2Settings ): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): response = await async_client.get( "/api/v1/oauth2/providers/huggingface/access-token", params={"code": "code", "state": "invalid"}, @@ -241,9 +263,11 @@ async def test_provider_access_token_with_invalid_state( async def test_provider_access_token_with_authentication_error( self, async_client: AsyncClient, owner_auth_header: dict, default_oauth_settings: OAuth2Settings ): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): with mock.patch( - "argilla_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", + "extralit_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", side_effect=AuthenticationError("error"), ): response = await async_client.get( @@ -264,9 +288,11 @@ async def test_provider_access_token_with_already_created_user( ): admin = await AdminFactory.create() - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): with mock.patch( - "argilla_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", + "extralit_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", return_value={"username": admin.username, "name": admin.first_name}, ): response = await async_client.get( @@ -290,9 +316,11 @@ async def test_provider_access_token_with_same_username( ): user = await AnnotatorFactory.create() - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings): + with mock.patch( + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: default_oauth_settings + ): with mock.patch( - "argilla_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", + "extralit_server.security.authentication.oauth2.provider.OAuth2ClientProvider._fetch_user_data", return_value={"username": user.username, "name": user.first_name}, ): response = await async_client.get( diff --git a/extralit-server/tests/unit/cli/database/users/conftest.py b/extralit-server/tests/unit/cli/database/users/conftest.py index 752246e9e..de4e83e6a 100644 --- a/extralit-server/tests/unit/cli/database/users/conftest.py +++ b/extralit-server/tests/unit/cli/database/users/conftest.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typing import TYPE_CHECKING @@ -23,7 +23,7 @@ @pytest.fixture(autouse=True) def mock_session_local(mocker: "MockerFixture", async_db_proxy: "AsyncSession") -> None: - mocker.patch("argilla_server.cli.database.users.create.AsyncSessionLocal", return_value=async_db_proxy) - mocker.patch("argilla_server.cli.database.users.update.AsyncSessionLocal", return_value=async_db_proxy) - mocker.patch("argilla_server.cli.database.users.create_default.AsyncSessionLocal", return_value=async_db_proxy) - mocker.patch("argilla_server.cli.database.users.migrate.AsyncSessionLocal", return_value=async_db_proxy) + mocker.patch("extralit_server.cli.database.users.create.AsyncSessionLocal", return_value=async_db_proxy) + mocker.patch("extralit_server.cli.database.users.update.AsyncSessionLocal", return_value=async_db_proxy) + mocker.patch("extralit_server.cli.database.users.create_default.AsyncSessionLocal", return_value=async_db_proxy) + mocker.patch("extralit_server.cli.database.users.migrate.AsyncSessionLocal", return_value=async_db_proxy) diff --git a/extralit-server/tests/unit/cli/search_engine/conftest.py b/extralit-server/tests/unit/cli/search_engine/conftest.py index f73159fe6..486e6afed 100644 --- a/extralit-server/tests/unit/cli/search_engine/conftest.py +++ b/extralit-server/tests/unit/cli/search_engine/conftest.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest @@ -20,4 +20,4 @@ @pytest.fixture(autouse=True) def mock_session_local(mocker: MockerFixture, async_db_proxy: AsyncSession) -> None: - mocker.patch("argilla_server.cli.search_engine.reindex.AsyncSessionLocal", return_value=async_db_proxy) + mocker.patch("extralit_server.cli.search_engine.reindex.AsyncSessionLocal", return_value=async_db_proxy) diff --git a/extralit-server/tests/unit/cli/test_start.py b/extralit-server/tests/unit/cli/test_start.py index ba2320619..36af2c89e 100644 --- a/extralit-server/tests/unit/cli/test_start.py +++ b/extralit-server/tests/unit/cli/test_start.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typing import TYPE_CHECKING @@ -25,4 +25,4 @@ def test_start_command(cli_runner: "CliRunner", cli: "Typer", mocker: "MockerFix result = cli_runner.invoke(cli, "start --host 1.1.1.1 --port 6899 --no-access-log") assert result.exit_code == 0 - uvicorn_run_mock.assert_called_once_with("argilla_server:app", host="1.1.1.1", port=6899, access_log=False) + uvicorn_run_mock.assert_called_once_with("extralit_server:app", host="1.1.1.1", port=6899, access_log=False) diff --git a/extralit-server/tests/unit/commons/test_telemetry.py b/extralit-server/tests/unit/commons/test_telemetry.py index 6cc7a8141..122b74cf3 100644 --- a/extralit-server/tests/unit/commons/test_telemetry.py +++ b/extralit-server/tests/unit/commons/test_telemetry.py @@ -1,18 +1,17 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import uuid -from unittest.mock import MagicMock import pytest from fastapi import Request @@ -31,7 +30,7 @@ class TestSuiteTelemetry: async def test_create_client_with_server_id(self, mocker: MockerFixture): mock_server_id = uuid.uuid4() - mocker.patch("argilla_server.telemetry._client.get_server_id", return_value=mock_server_id) + mocker.patch("extralit_server.telemetry._client.get_server_id", return_value=mock_server_id) test_telemetry = TelemetryClient() @@ -57,7 +56,7 @@ def test_create_client_with_persistent_storage_disabled(self): def test_track_data(self, mocker: MockerFixture): from extralit_server._version import __version__ as version - mock = mocker.patch("argilla_server.telemetry._client.send_telemetry") + mock = mocker.patch("extralit_server.telemetry._client.send_telemetry") telemetry = TelemetryClient() telemetry.track_data("test_topic", {"test": "test"}) @@ -71,7 +70,7 @@ def test_track_data(self, mocker: MockerFixture): async def test_track_api_request(self, test_telemetry: TelemetryClient, mocker: MockerFixture): mocker.patch( - "argilla_server.telemetry._client.resolve_endpoint_path_for_request", return_value="/api/test/endpoint" + "extralit_server.telemetry._client.resolve_endpoint_path_for_request", return_value="/api/test/endpoint" ) request = Request( @@ -102,7 +101,7 @@ async def test_track_api_request(self, test_telemetry: TelemetryClient, mocker: async def test_track_api_request_call_with_error(self, test_telemetry: TelemetryClient, mocker: MockerFixture): mocker.patch( - "argilla_server.telemetry._client.resolve_endpoint_path_for_request", return_value="/api/test/endpoint" + "extralit_server.telemetry._client.resolve_endpoint_path_for_request", return_value="/api/test/endpoint" ) request = Request( @@ -131,7 +130,7 @@ async def test_track_api_request_call_with_error_and_exception( self, test_telemetry: TelemetryClient, mocker: MockerFixture ): mocker.patch( - "argilla_server.telemetry._client.resolve_endpoint_path_for_request", return_value="/api/test/endpoint" + "extralit_server.telemetry._client.resolve_endpoint_path_for_request", return_value="/api/test/endpoint" ) request = Request( diff --git a/extralit-server/tests/unit/conftest.py b/extralit-server/tests/unit/conftest.py index 8a9138870..2fc19f623 100644 --- a/extralit-server/tests/unit/conftest.py +++ b/extralit-server/tests/unit/conftest.py @@ -22,7 +22,7 @@ from opensearchpy import OpenSearch from sqlalchemy.engine.interfaces import IsolationLevel -from extralit_server.contexts import distribution, datasets, records +from extralit_server.contexts import distribution, datasets from extralit_server.api.routes import api_v1 from extralit_server.constants import API_KEY_HEADER_NAME, DEFAULT_API_KEY from extralit_server.database import get_async_db @@ -124,7 +124,7 @@ def test_telemetry(mocker: "MockerFixture") -> "TelemetryClient": setattr(real_telemetry, attr_name, wrapped) # Patch the _TELEMETRY_CLIENT to use the real_telemetry - mocker.patch("argilla_server.telemetry._client._TELEMETRY_CLIENT", new=real_telemetry) + mocker.patch("extralit_server.telemetry._client._TELEMETRY_CLIENT", new=real_telemetry) return real_telemetry diff --git a/extralit-server/tests/unit/jobs/test_document_jobs.py b/extralit-server/tests/unit/jobs/test_document_jobs.py index dd386dd46..a47cb17e6 100644 --- a/extralit-server/tests/unit/jobs/test_document_jobs.py +++ b/extralit-server/tests/unit/jobs/test_document_jobs.py @@ -24,9 +24,9 @@ class TestDocumentJobs: """Test suite for document job functions.""" - @patch("argilla_server.jobs.document_jobs.files") - @patch("argilla_server.jobs.document_jobs.datasets") - @patch("argilla_server.jobs.document_jobs.imports") + @patch("extralit_server.jobs.document_jobs.files") + @patch("extralit_server.jobs.document_jobs.datasets") + @patch("extralit_server.jobs.document_jobs.imports") @pytest.mark.skip("temporarily skipping") async def test_upload_reference_documents_job_success(self, mock_imports, mock_datasets, mock_files): """Test successful reference documents upload job.""" @@ -66,7 +66,7 @@ async def test_upload_reference_documents_job_success(self, mock_imports, mock_d mock_datasets.create_document.return_value = mock_document # Mock the model_dump method for DocumentCreate objects - with patch("argilla_server.api.schemas.v1.documents.DocumentCreate.model_dump") as mock_model_dump: + with patch("extralit_server.api.schemas.v1.documents.DocumentCreate.model_dump") as mock_model_dump: mock_model_dump.return_value = {"file_name": "test.pdf", "pmid": None, "doi": "10.1234/test.doi"} # Execute job @@ -114,9 +114,9 @@ async def test_upload_reference_documents_job_workspace_not_found(self): assert result["reference"] == reference assert "not found" in result["errors"][0] - @patch("argilla_server.jobs.document_jobs.files") - @patch("argilla_server.jobs.document_jobs.datasets") - @patch("argilla_server.jobs.document_jobs.imports") + @patch("extralit_server.jobs.document_jobs.files") + @patch("extralit_server.jobs.document_jobs.datasets") + @patch("extralit_server.jobs.document_jobs.imports") @pytest.mark.skip("temporarily skipping") async def test_upload_reference_documents_job_partial_failure(self, mock_imports, mock_datasets, mock_files): """Test reference documents upload job with partial failure.""" @@ -161,7 +161,7 @@ async def test_upload_reference_documents_job_partial_failure(self, mock_imports mock_datasets.create_document.return_value = mock_document # Mock the model_dump method for DocumentCreate objects - with patch("argilla_server.api.schemas.v1.documents.DocumentCreate.model_dump") as mock_model_dump: + with patch("extralit_server.api.schemas.v1.documents.DocumentCreate.model_dump") as mock_model_dump: mock_model_dump.return_value = {"file_name": "test.pdf", "pmid": None, "doi": "10.1234/test.doi"} # Execute job diff --git a/extralit-server/tests/unit/test_app.py b/extralit-server/tests/unit/test_app.py index de50f2d50..931e310c9 100644 --- a/extralit-server/tests/unit/test_app.py +++ b/extralit-server/tests/unit/test_app.py @@ -1,34 +1,30 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typing import cast from unittest import mock -from unittest.mock import MagicMock import pytest -from pytest_mock import MockerFixture from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from extralit_server._app import ( create_server_app, - configure_database, _create_oauth_allowed_workspaces, track_server_startup, ) from extralit_server.models import Workspace from extralit_server.security.authentication.oauth2 import OAuth2Settings -from extralit_server.security.authentication.oauth2.settings import AllowedWorkspace from extralit_server.settings import Settings, settings from starlette.routing import Mount from starlette.testclient import TestClient @@ -77,7 +73,7 @@ def test_server_timing_header(self): async def test_create_allowed_workspaces(self, db: AsyncSession): with mock.patch( - "argilla_server.security.settings.Settings.oauth", + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: OAuth2Settings(allowed_workspaces=[{"name": "ws1"}, {"name": "ws2"}]), ): await _create_oauth_allowed_workspaces(db) @@ -87,7 +83,7 @@ async def test_create_allowed_workspaces(self, db: AsyncSession): assert set([ws.name for ws in workspaces]) == {"ws1", "ws2"} async def test_create_workspaces_with_empty_workspaces_list(self, db: AsyncSession): - with mock.patch("argilla_server.security.settings.Settings.oauth", new_callable=OAuth2Settings): + with mock.patch("extralit_server.security.settings.Settings.oauth", new_callable=OAuth2Settings): await _create_oauth_allowed_workspaces(db) workspaces = (await db.scalars(select(Workspace))).all() @@ -97,7 +93,7 @@ async def test_create_workspaces_with_existing_workspaces(self, db: AsyncSession ws = await WorkspaceFactory.create(name="test") with mock.patch( - "argilla_server.security.settings.Settings.oauth", + "extralit_server.security.settings.Settings.oauth", new_callable=lambda: OAuth2Settings(allowed_workspaces=[{"name": ws.name}]), ): await _create_oauth_allowed_workspaces(db) diff --git a/extralit/docs/admin_guide/k8s_deployment.md b/extralit/docs/admin_guide/k8s_deployment.md index e07664f92..b549ca93b 100644 --- a/extralit/docs/admin_guide/k8s_deployment.md +++ b/extralit/docs/admin_guide/k8s_deployment.md @@ -107,12 +107,12 @@ Set environment variables: ### User Account Setup -Run the `start_argilla_server.sh` script for initial setup. Manage users with `argilla_server` CLI: +Run the `start_extralit_server.sh` script for initial setup. Manage users with `extralit_server` CLI: ```bash ARGILLA_DATABASE_URL=postgresql+asyncpg://postgres:$POSTGRES_PASSWORD@$POSTGRES_HOST/postgres \ ARGILLA_LOCAL_AUTH_USERS_DB_FILE=path/to/users.yaml \ -argilla_server database users migrate +extralit_server database users migrate ``` ### Frontend Development @@ -126,7 +126,7 @@ Set up and run frontend: ### Backend Development -Changes to `src/argilla_server/` or `src/extralit/` are automatically updated while running Tilt with `ENV=dev`. Manually rebuild if needed. +Changes to `src/extralit_server/` or `src/extralit/` are automatically updated while running Tilt with `ENV=dev`. Manually rebuild if needed. ## Troubleshooting @@ -144,7 +144,7 @@ Check the Tilt web interface for services that are not green in deployment statu - `main-db` Postgres: This service can fail to redeploy due to the `main-db-0` pod not being able to mount the original persistent volume when the helm chart is redeployed, because it generated a new random password that was different from the original password. Fix it by changing the `posgres-password` to original password in the `main-db` K8s secret. ### Data persistence -- `elasticsearch`: Same issue described above causes the data index to be lost when the `elasticsearch-master-0` pod is recreated. The data index can be restored with persistent data in the `main-db` Postgres database by reindexing the data with the `argilla_server` CLI tool, see [check_search_engine.sh](https://github.com/extralit/extralit-server/blob/main/docker/server/scripts/check_search_engine.sh). +- `elasticsearch`: Same issue described above causes the data index to be lost when the `elasticsearch-master-0` pod is recreated. The data index can be restored with persistent data in the `main-db` Postgres database by reindexing the data with the `extralit_server` CLI tool, see [check_search_engine.sh](https://github.com/extralit/extralit-server/blob/main/docker/server/scripts/check_search_engine.sh). - `minio`: As a standalone pod in the K8s cluster for file blob storage, the Minio service is not automatically backed up. The data in the Minio bucket can be lost if the pod is deleted or the cluster fails in anyway. The data can be restored by re-uploading the data to the Minio bucket. diff --git a/extralit/docs/admin_guide/upgrading.md b/extralit/docs/admin_guide/upgrading.md index 39fe86316..14739283c 100644 --- a/extralit/docs/admin_guide/upgrading.md +++ b/extralit/docs/admin_guide/upgrading.md @@ -30,7 +30,7 @@ This guide covers the update process for Extralit across different deployment op Finally, build the wheel containing the built argilla-frontend/dist ```bash - cp -r argilla-frontend/dist extralit-server/src/argilla_server/static + cp -r argilla-frontend/dist extralit-server/src/extralit_server/static rm -rf extralit-server/dist && python -m build -s extralit-server/ ``` @@ -71,11 +71,11 @@ This guide covers the update process for Extralit across different deployment op For database schema changes: -- Run migrations using the `argilla_server` CLI: +- Run migrations using the `extralit_server` CLI: ```bash kubectl exec -it deployment/argilla-server-deployment -n {NAMESPACE} -- \ -argilla_server database migrate +extralit_server database migrate ```   @@ -122,7 +122,7 @@ argilla_server database migrate 4. For database schema changes, run migrations: ```bash - docker compose exec argilla argilla_server database migrate + docker compose exec argilla extralit_server database migrate ``` Powered by [Swimm](https://app.swimm.io/) diff --git a/extralit/docs/community/developer.md b/extralit/docs/community/developer.md index 1827129fd..8395d318a 100644 --- a/extralit/docs/community/developer.md +++ b/extralit/docs/community/developer.md @@ -47,7 +47,7 @@ The Extralit repository has a monorepo structure, which means that all the compo - [`argilla/src/extralit/`](https://github.com/extralit/extralit/tree/develop/argilla/src/extralit): The FastAPI server project for extraction - [`argilla/docs/`](https://github.com/extralit/extralit/tree/develop/argilla/docs): The documentation project - [`argilla/src/argilla/`](https://github.com/extralit/extralit/tree/develop/argilla): The argilla SDK project -- [`extralit-server/src/argilla_server/`](https://github.com/extralit/extralit/tree/develop/argilla-server): The FastAPI server project for annotation +- [`extralit-server/src/extralit_server/`](https://github.com/extralit/extralit/tree/develop/argilla-server): The FastAPI server project for annotation - [`argilla-frontend/`](https://github.com/extralit/extralit/tree/develop/argilla-frontend): The Vue.js UI project - [`examples`](https://github.com/extralit/extralit/tree/develop/examples): Example resources for deployments, scripts and notebooks diff --git a/extralit/docs/getting_started/development_setup.md b/extralit/docs/getting_started/development_setup.md index 8149d1bd1..c101814b7 100644 --- a/extralit/docs/getting_started/development_setup.md +++ b/extralit/docs/getting_started/development_setup.md @@ -105,7 +105,7 @@ Then, select from three different development environments through devcontainers ### 3. Development workflow* - - **Backend Development**: Changes to `extralit-server/src/argilla_server/` or `argilla/src/{argilla,extralit}/` are automatically updated if Tilt is running + - **Backend Development**: Changes to `extralit-server/src/extralit_server/` or `argilla/src/{argilla,extralit}/` are automatically updated if Tilt is running - **Python SDK packages** ```bash cd argilla @@ -170,7 +170,7 @@ npm install npm run build # Copy built files to server static directory -cp -r dist ../extralit-server/src/argilla_server/static +cp -r dist ../extralit-server/src/extralit_server/static ``` ### 4. Configure Environment Variables @@ -178,7 +178,7 @@ cp -r dist ../extralit-server/src/argilla_server/static Create a `.env.dev` file in the `argilla-server` directory with the following content: ``` -ALEMBIC_CONFIG=src/argilla_server/alembic.ini +ALEMBIC_CONFIG=src/extralit_server/alembic.ini ARGILLA_AUTH_SECRET_KEY=8VO7na5N/jQx+yP/N+HlE8q51vPdrxqlh6OzoebIyko= ARGILLA_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/argilla-dev.db?check_same_thread=False # Search engine configuration @@ -291,7 +291,7 @@ docker build -t argilla-server:latest -f docker/server/Dockerfile docker/server/ To build the Argilla HF Spaces Docker image, which includes the Argilla Server, ElasticSearch, and Redis, use the following command: ```bash -docker build --build-arg ARGILLA_SERVER_IMAGE=argilla-server --build-arg ARGILLA_VERSION=latest -t argilla-hf-spaces:latest -f docker/argilla-hf-spaces/Dockerfile docker/argilla-hf-spaces/ +docker build --build-arg extralit_server_IMAGE=argilla-server --build-arg ARGILLA_VERSION=latest -t argilla-hf-spaces:latest -f docker/argilla-hf-spaces/Dockerfile docker/argilla-hf-spaces/ ``` Start the Argilla Server and other dependencies using Docker: diff --git a/extralit/docs/reference/argilla-server/configuration.md b/extralit/docs/reference/argilla-server/configuration.md index 101deff74..b710b0afc 100644 --- a/extralit/docs/reference/argilla-server/configuration.md +++ b/extralit/docs/reference/argilla-server/configuration.md @@ -128,7 +128,7 @@ Redis is used by Argilla to store information about jobs to be processed on back - `API_KEY`: The default user api key to user. If API_KEY is not provided, a new random api key will be generated (Default: `""`). -- `UVICORN_APP`: [Advanced] The name of the FastAPI app to run. This is useful when you want to extend the FastAPI app with additional routes or middleware. The default value is `argilla_server:app`. +- `UVICORN_APP`: [Advanced] The name of the FastAPI app to run. This is useful when you want to extend the FastAPI app with additional routes or middleware. The default value is `extralit_server:app`. ## REST API docs diff --git a/extralit/docs/reference/argilla-server/telemetry.md b/extralit/docs/reference/argilla-server/telemetry.md index 6571af179..a1c515f4c 100644 --- a/extralit/docs/reference/argilla-server/telemetry.md +++ b/extralit/docs/reference/argilla-server/telemetry.md @@ -49,5 +49,5 @@ The following usage and error information is reported: * The type of deployment: `huggingface_space` or `server` * The dockerized deployment flag: `True` or `False` -For transparency, you can inspect the source code where this is performed [here](https://github.com/extralit/extralit/extralit-server/src/argilla_server/telemetry.py). +For transparency, you can inspect the source code where this is performed [here](https://github.com/extralit/extralit/extralit-server/src/extralit_server/telemetry.py). From 22841567fee39e3315bcb7cd3b475814f77ad6c1 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 09:17:48 -0700 Subject: [PATCH 08/23] renamed argilla-server to extralit-server --- .github/copilot-instructions.md | 2 +- .../extralit-server.build-docker-images.yml | 2 +- .github/workflows/extralit-server.yml | 16 +- .kiro/specs/papers-library-importer/tasks.md | 2 +- .kiro/steering/tech.md | 4 +- .pre-commit-config.yaml | 4 +- Tiltfile | 6 +- argilla-frontend/dev.frontend.Dockerfile | 2 +- codecov.yml | 2 +- .../deployments/k8s/argilla-chart/README.md | 10 +- .../deployments/k8s/argilla-chart/values.yaml | 4 +- .../k8s/argilla-loadbalancer-service.yaml | 8 +- .../deployments/k8s/extralit-deployment.yaml | 146 +++++++++--------- .../k8s/helm/elasticsearch-helm.yaml | 20 ++- extralit-server/README.md | 4 +- .../docker/extralit-hf-spaces/Dockerfile | 2 +- extralit-server/pyproject.toml | 4 +- .../src/extralit_server/telemetry/_client.py | 22 +-- .../src/extralit_server/webhooks/v1/ping.py | 23 ++- .../handlers/v1/webhooks/test_ping_webhook.py | 22 +-- .../tests/unit/commons/test_telemetry.py | 2 +- .../contexts/hub/test_hub_dataset_exporter.py | 2 +- .../webhooks/v1/test_notify_ping_event.py | 23 ++- extralit/docs/admin_guide/k8s_deployment.md | 2 +- extralit/docs/admin_guide/upgrading.md | 8 +- extralit/docs/community/developer.md | 6 +- .../docs/getting_started/development_setup.md | 16 +- 27 files changed, 180 insertions(+), 184 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index d84d60291..7259e7a61 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -22,7 +22,7 @@ When contributing to Extralit, consider these guidelines: Extralit is organized as a monorepo with several main components: - **extralit/**: Python SDK and core extraction functionality -- **extralit-server/** (formerly argilla-server): Backend server implementation +- **extralit-server/** (formerly extralit-server): Backend server implementation - **argilla-frontend/**: Frontend web application (will be renamed to extralit-frontend in future) - **examples/**: Sample implementations and deployment configurations diff --git a/.github/workflows/extralit-server.build-docker-images.yml b/.github/workflows/extralit-server.build-docker-images.yml index c689a0fea..c1e960516 100644 --- a/.github/workflows/extralit-server.build-docker-images.yml +++ b/.github/workflows/extralit-server.build-docker-images.yml @@ -143,7 +143,7 @@ jobs: event-type: build-hf-space client-payload: '{"tag":"${{ env.IMAGE_TAG }}","is_release":${{ inputs.is_release }}}' # TODO: uncomment this once the step works again - # - name: Docker Hub Description for `argilla-server` + # - name: Docker Hub Description for `extralit-server` # uses: peter-evans/dockerhub-description@v4 # if: ${{ env.PUBLISH_LATEST == 'true' }} # with: diff --git a/.github/workflows/extralit-server.yml b/.github/workflows/extralit-server.yml index 3a922a470..3ebd6d8b2 100644 --- a/.github/workflows/extralit-server.yml +++ b/.github/workflows/extralit-server.yml @@ -14,13 +14,13 @@ on: - releases/** paths: - "extralit-server/**" - - ".github/workflows/argilla-server.*" + - ".github/workflows/extralit-server.*" pull_request: types: [opened, edited, synchronize, reopened, ready_for_review] paths: - "extralit-server/**" - - ".github/workflows/argilla-server.*" + - ".github/workflows/extralit-server.*" permissions: id-token: write @@ -34,7 +34,7 @@ jobs: defaults: run: shell: bash -l {0} - working-directory: argilla-server + working-directory: extralit-server services: elasticsearch: @@ -124,7 +124,7 @@ jobs: uses: codecov/codecov-action@v5.4.3 with: files: coverage.xml - flags: argilla-server + flags: extralit-server token: ${{ secrets.CODECOV_TOKEN }} - name: Check test status @@ -135,7 +135,7 @@ jobs: if: ${{ !cancelled() }} uses: codecov/test-results-action@v1 with: - flags: argilla-server + flags: extralit-server token: ${{ secrets.CODECOV_TOKEN }} # This section is used to build the frontend and copy the build files to the server. @@ -162,7 +162,7 @@ jobs: - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: argilla-server + name: extralit-server path: extralit-server/dist build_docker_images: @@ -194,7 +194,7 @@ jobs: defaults: run: shell: bash -l {0} - working-directory: argilla-server + working-directory: extralit-server permissions: # This permission is needed for private repositories. @@ -225,7 +225,7 @@ jobs: - name: Download python package uses: actions/download-artifact@v4 with: - name: argilla-server + name: extralit-server path: extralit-server/dist - name: Setup PDM diff --git a/.kiro/specs/papers-library-importer/tasks.md b/.kiro/specs/papers-library-importer/tasks.md index f54fb75cd..0062fc13a 100644 --- a/.kiro/specs/papers-library-importer/tasks.md +++ b/.kiro/specs/papers-library-importer/tasks.md @@ -28,7 +28,7 @@ - Add import() function to extralit/src/argilla/cli/documents/add.py - Parse BibTeX file and match PDF files from folder using Python bibtexparser - Perform filename matching to create the analysis_request - - Send ImportAnalysisRequest to argilla-server for testing import analysis functionality + - Send ImportAnalysisRequest to extralit-server for testing import analysis functionality - Display analysis results (add/update/skip status) in CLI output - Enable easy testing of backend import analysis before building frontend - _Requirements: 1.1, 2.1, 2.2_ diff --git a/.kiro/steering/tech.md b/.kiro/steering/tech.md index 85ca7d3ad..ead15567a 100644 --- a/.kiro/steering/tech.md +++ b/.kiro/steering/tech.md @@ -52,7 +52,7 @@ Extralit is a multi-component system with 5 core components: ### Backend Development ```bash -cd argilla-server +cd extralit-server pdm install pdm run migrate # Run database migrations pdm run server-dev # Start dev server with auto-reload @@ -81,7 +81,7 @@ extralit --help # CLI usage ### Docker Development ```bash docker-compose up # Start full stack -pdm run docker-build-argilla-server # Build server image +pdm run docker-build-extralit-server # Build server image ``` ### Kubernetes Development (Tilt) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a41346bf5..588b808fb 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -61,13 +61,13 @@ repos: # - --keep-version ############################################################################## - # argilla-server specific hooks + # extralit-server specific hooks ############################################################################## - repo: https://github.com/pycqa/autoflake rev: v2.2.1 hooks: - id: autoflake - name: "Remove unused imports and variables in argilla-server" + name: "Remove unused imports and variables in extralit-server" files: '^extralit-server/.*\.py$' args: - "--remove-all-unused-imports" diff --git a/Tiltfile b/Tiltfile index 259b50640..714d4dbd7 100644 --- a/Tiltfile +++ b/Tiltfile @@ -75,7 +75,7 @@ helm_resource( '--set=master.persistence.size=1Gi' ], port_forwards=['6379'], - labels=['argilla-server'], + labels=['extralit-server'], resource_deps=['redis-helm', 'bitnami-helm'] ) @@ -102,8 +102,8 @@ docker_build( extralit_server_k8s_yaml = read_yaml_stream('examples/deployments/k8s/extralit-server-deployment.yaml') for o in extralit_server_k8s_yaml: for container in o['spec']['template']['spec']['containers']: - if container['name'] == 'argilla-server': - container['image'] = "{DOCKER_REPO}/argilla-server".format(DOCKER_REPO=DOCKER_REPO) + if container['name'] == 'extralit-server': + container['image'] = "{DOCKER_REPO}/extralit-server".format(DOCKER_REPO=DOCKER_REPO) if ARGILLA_DATABASE_URL: container['env'].extend([ {'name': 'ARGILLA_DATABASE_URL', 'value': ARGILLA_DATABASE_URL}, diff --git a/argilla-frontend/dev.frontend.Dockerfile b/argilla-frontend/dev.frontend.Dockerfile index cdd34d5c3..ae588e31a 100644 --- a/argilla-frontend/dev.frontend.Dockerfile +++ b/argilla-frontend/dev.frontend.Dockerfile @@ -19,7 +19,7 @@ COPY --chown=argilla:argilla nuxt.config.ts ./nuxt.config.ts # NOTE: Right now this Docker image is using dev.argilla.io as server. # If we want to use a built-in server in the future to check all functionality we can modify the following Procfile -# content adding ElasticSearch and argilla-server processes. +# content adding ElasticSearch and extralit-server processes. RUN npm install && \ echo 'frontend: cd /home/argilla/frontend && HOST=0.0.0.0 PORT=3000 npm run start\n' > /home/argilla/Procfile.frontend diff --git a/codecov.yml b/codecov.yml index 6915a6803..53154ceef 100644 --- a/codecov.yml +++ b/codecov.yml @@ -50,7 +50,7 @@ component_management: paths: - argilla-v1/src/argilla_v1/** - - component_id: argilla-server + - component_id: extralit-server paths: - extralit-server/** diff --git a/examples/deployments/k8s/argilla-chart/README.md b/examples/deployments/k8s/argilla-chart/README.md index 37c1e76f0..940039f59 100644 --- a/examples/deployments/k8s/argilla-chart/README.md +++ b/examples/deployments/k8s/argilla-chart/README.md @@ -68,10 +68,10 @@ kubectl get pods -n elastic-system ## Installing the Chart -After adding the repository, you can install the chart with the release name `my-argilla-server`: +After adding the repository, you can install the chart with the release name `my-extralit-server`: ```bash -helm install my-argilla-server examples/deployments/k8s/argilla-chart +helm install my-extralit-server examples/deployments/k8s/argilla-chart ``` Check the status of the pods: @@ -85,7 +85,7 @@ All the pods should be in the `Running` state. In a different terminal window, run the following command to access Argilla: ```bash -kubectl port-forward svc/my-argilla-server 6900 +kubectl port-forward svc/my-extralit-server 6900 ``` Argilla will be accessible at http://localhost:6900. @@ -104,10 +104,10 @@ pytest tests/integration ## Uninstalling the Chart -To uninstall/delete the `my-argilla-server` deployment: +To uninstall/delete the `my-extralit-server` deployment: ```bash -helm delete my-argilla-server +helm delete my-extralit-server ``` This command removes all the Kubernetes components associated with the chart and deletes the release. diff --git a/examples/deployments/k8s/argilla-chart/values.yaml b/examples/deployments/k8s/argilla-chart/values.yaml index d602f2086..d75b0a416 100644 --- a/examples/deployments/k8s/argilla-chart/values.yaml +++ b/examples/deployments/k8s/argilla-chart/values.yaml @@ -1,7 +1,7 @@ argilla: replicaCount: 1 image: - repository: extralit/argilla-server + repository: extralit/extralit-server tag: latest resources: requests: @@ -55,7 +55,7 @@ elasticsearch: storage: size: 1Gi accessModes: - - ReadWriteOnce + - ReadWriteOnce externalElasticsearch: host: "argilla.local" diff --git a/examples/deployments/k8s/argilla-loadbalancer-service.yaml b/examples/deployments/k8s/argilla-loadbalancer-service.yaml index 1cfd08dc6..2c4b90307 100644 --- a/examples/deployments/k8s/argilla-loadbalancer-service.yaml +++ b/examples/deployments/k8s/argilla-loadbalancer-service.yaml @@ -1,14 +1,14 @@ apiVersion: v1 kind: Service metadata: - name: argilla-server-lb + name: extralit-server-lb labels: - app: argilla-server-lb + app: extralit-server-lb spec: type: LoadBalancer selector: - app: argilla-server + app: extralit-server ports: - name: http port: 80 - targetPort: 6900 \ No newline at end of file + targetPort: 6900 diff --git a/examples/deployments/k8s/extralit-deployment.yaml b/examples/deployments/k8s/extralit-deployment.yaml index c4a295543..a7be6c268 100644 --- a/examples/deployments/k8s/extralit-deployment.yaml +++ b/examples/deployments/k8s/extralit-deployment.yaml @@ -13,85 +13,85 @@ spec: app: extralit spec: containers: - - name: extralit-server - image: extralit-server - ports: - - containerPort: 5555 - readinessProbe: - httpGet: - path: /health - port: 5555 - initialDelaySeconds: 15 - periodSeconds: 10 - timeoutSeconds: 10 - failureThreshold: 3 - successThreshold: 1 - env: - - name: OPENAI_API_KEY - valueFrom: - secretKeyRef: - name: extralit-secrets - key: OPENAI_API_KEY - - name: ARGILLA_BASE_URL - value: "http://argilla-server:6900" - - name: ARGILLA_API_KEY - valueFrom: - secretKeyRef: - name: extralit-secrets - key: ARGILLA_API_KEY - - name: WCS_HTTP_URL - value: "http://weaviate:80" - - name: WCS_GRPC_URL - value: "http://weaviate-grpc:50051" - - name: WCS_API_KEY - valueFrom: - secretKeyRef: - name: weaviate-api-keys - key: AUTHENTICATION_APIKEY_ALLOWED_KEYS - - name: S3_ENDPOINT - valueFrom: - secretKeyRef: - name: extralit-secrets - key: S3_ENDPOINT - - name: S3_ACCESS_KEY - valueFrom: - secretKeyRef: - name: extralit-secrets - key: S3_ACCESS_KEY - - name: S3_SECRET_KEY - valueFrom: - secretKeyRef: - name: extralit-secrets - key: S3_SECRET_KEY - - name: LANGFUSE_HOST - value: "http://langfuse-server:4000" - - name: LANGFUSE_SECRET_KEY - valueFrom: - secretKeyRef: - name: extralit-secrets - key: LANGFUSE_SECRET_KEY - - name: LANGFUSE_PUBLIC_KEY - valueFrom: - secretKeyRef: - name: extralit-secrets - key: LANGFUSE_PUBLIC_KEY - # volumeMounts: - # - name: extralit-storage - # mountPath: /tmp/ + - name: extralit-server + image: extralit-server + ports: + - containerPort: 5555 + readinessProbe: + httpGet: + path: /health + port: 5555 + initialDelaySeconds: 15 + periodSeconds: 10 + timeoutSeconds: 10 + failureThreshold: 3 + successThreshold: 1 + env: + - name: OPENAI_API_KEY + valueFrom: + secretKeyRef: + name: extralit-secrets + key: OPENAI_API_KEY + - name: ARGILLA_BASE_URL + value: "http://extralit-server:6900" + - name: ARGILLA_API_KEY + valueFrom: + secretKeyRef: + name: extralit-secrets + key: ARGILLA_API_KEY + - name: WCS_HTTP_URL + value: "http://weaviate:80" + - name: WCS_GRPC_URL + value: "http://weaviate-grpc:50051" + - name: WCS_API_KEY + valueFrom: + secretKeyRef: + name: weaviate-api-keys + key: AUTHENTICATION_APIKEY_ALLOWED_KEYS + - name: S3_ENDPOINT + valueFrom: + secretKeyRef: + name: extralit-secrets + key: S3_ENDPOINT + - name: S3_ACCESS_KEY + valueFrom: + secretKeyRef: + name: extralit-secrets + key: S3_ACCESS_KEY + - name: S3_SECRET_KEY + valueFrom: + secretKeyRef: + name: extralit-secrets + key: S3_SECRET_KEY + - name: LANGFUSE_HOST + value: "http://langfuse-server:4000" + - name: LANGFUSE_SECRET_KEY + valueFrom: + secretKeyRef: + name: extralit-secrets + key: LANGFUSE_SECRET_KEY + - name: LANGFUSE_PUBLIC_KEY + valueFrom: + secretKeyRef: + name: extralit-secrets + key: LANGFUSE_PUBLIC_KEY + # volumeMounts: + # - name: extralit-storage + # mountPath: /tmp/ # volumes: # - name: extralit-storage # persistentVolumeClaim: - # claimName: extralit-pvc + # claimName: extralit-pvc affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: role - operator: In - values: - - extralit + - weight: 1 + preference: + matchExpressions: + - key: role + operator: In + values: + - extralit --- apiVersion: v1 kind: Service diff --git a/examples/deployments/k8s/helm/elasticsearch-helm.yaml b/examples/deployments/k8s/helm/elasticsearch-helm.yaml index 300cb77a4..c8f735b82 100644 --- a/examples/deployments/k8s/helm/elasticsearch-helm.yaml +++ b/examples/deployments/k8s/helm/elasticsearch-helm.yaml @@ -27,7 +27,7 @@ esMajorVersion: "" # Allows you to add any config files in /usr/share/elasticsearch/config/ # such as elasticsearch.yml and log4j2.properties -esConfig: +esConfig: elasticsearch.yml: | ingest: geoip: @@ -188,13 +188,13 @@ antiAffinity: "soft" # https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#node-affinity-beta-feature nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: role - operator: In - values: - - argilla-server + - weight: 1 + preference: + matchExpressions: + - key: role + operator: In + values: + - extralit-server # The default is to deploy all pods serially. By setting this to parallel all pods are started at # the same time when bootstrapping the cluster @@ -235,8 +235,7 @@ maxUnavailable: 1 podSecurityContext: fsGroup: 1000 runAsUser: 1000 - runAsGroup: 1000 # The primary group ID for the container process. - + runAsGroup: 1000 # The primary group ID for the container process. securityContext: capabilities: @@ -374,4 +373,3 @@ networkPolicy: tests: enabled: true - diff --git a/extralit-server/README.md b/extralit-server/README.md index 48243ddf6..6eec3e169 100644 --- a/extralit-server/README.md +++ b/extralit-server/README.md @@ -120,7 +120,7 @@ See full CLI documentation in our [developer docs](https://docs.extralit.ai/late ## Running Tests -The pytest suite is primarily designed to run in the CI environment using GitHub Actions as defined in `.github/workflows/argilla-server.yml`. This workflow sets up the necessary dependencies including Elasticsearch, PostgreSQL, Redis, and Minio. +The pytest suite is primarily designed to run in the CI environment using GitHub Actions as defined in `.github/workflows/extralit-server.yml`. This workflow sets up the necessary dependencies including Elasticsearch, PostgreSQL, Redis, and Minio. Note that some tests are specifically skipped when running locally due to differences between the CI environment and local development environments. These tests may involve: @@ -133,7 +133,7 @@ To run tests in CI, create a pull request to trigger the test workflow. If you need to run a specific test locally for debugging purposes, you can use: ```bash -cd argilla-server +cd extralit-server python -m pytest [test_path] -v ``` diff --git a/extralit-server/docker/extralit-hf-spaces/Dockerfile b/extralit-server/docker/extralit-hf-spaces/Dockerfile index 41bf40fff..eb333b72e 100644 --- a/extralit-server/docker/extralit-hf-spaces/Dockerfile +++ b/extralit-server/docker/extralit-hf-spaces/Dockerfile @@ -1,6 +1,6 @@ # Multi-stage build to reduce image size ARG ARGILLA_VERSION=latest -ARG extralit_server_IMAGE=extralitdev/argilla-server +ARG extralit_server_IMAGE=extralitdev/extralit-server # Base stage with common dependencies FROM ${extralit_server_IMAGE}:${ARGILLA_VERSION} AS base diff --git a/extralit-server/pyproject.toml b/extralit-server/pyproject.toml index 7c82f565b..5c5c6eef0 100644 --- a/extralit-server/pyproject.toml +++ b/extralit-server/pyproject.toml @@ -187,5 +187,5 @@ server-dev.composite = [ test = { cmd = "pytest --verbosity=1 --disable-warnings", env_file = ".env.test" } test-cov = { cmd = "pytest tests --cov=extralit_server --cov-report=term --cov-report=xml --verbosity=0 --disable-warnings", env_file = ".env.test" } -docker-build-argilla-server = { shell = "pdm build && cp -R dist docker/server && docker build -t extralit/argilla-server:local docker/server" } -docker-build-argilla-hf-spaces = { shell = "pdm run docker-build-argilla-server && docker build --build-arg ARGILLA_VERSION=local -t extralit/argilla-hf-spaces:local docker/argilla-hf-spaces" } +docker-build-extralit-server = { shell = "pdm build && cp -R dist docker/server && docker build -t extralit/extralit-server:local docker/server" } +docker-build-argilla-hf-spaces = { shell = "pdm run docker-build-extralit-server && docker build --build-arg ARGILLA_VERSION=local -t extralit/argilla-hf-spaces:local docker/argilla-hf-spaces" } diff --git a/extralit-server/src/extralit_server/telemetry/_client.py b/extralit-server/src/extralit_server/telemetry/_client.py index 717b56395..b983e0aaa 100644 --- a/extralit-server/src/extralit_server/telemetry/_client.py +++ b/extralit-server/src/extralit_server/telemetry/_client.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import dataclasses import json @@ -57,7 +57,7 @@ def __post_init__(self): _LOGGER.info(f"Context: {json.dumps(self._system_info, indent=2)}") def track_data(self, topic: str, data: Optional[dict] = None): - library_name = "argilla-server" + library_name = "extralit-server" topic = f"argilla/server/{topic}" user_agent = {**(data or {}), **self._system_info} diff --git a/extralit-server/src/extralit_server/webhooks/v1/ping.py b/extralit-server/src/extralit_server/webhooks/v1/ping.py index 920082609..ab14facfe 100644 --- a/extralit-server/src/extralit_server/webhooks/v1/ping.py +++ b/extralit-server/src/extralit_server/webhooks/v1/ping.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import httpx @@ -19,7 +19,6 @@ from extralit_server.contexts import info from extralit_server.models import Webhook from extralit_server.webhooks.v1.commons import notify_event -from extralit_server.webhooks.v1.enums import WebhookEvent def notify_ping_event(webhook: Webhook) -> httpx.Response: @@ -28,7 +27,7 @@ def notify_ping_event(webhook: Webhook) -> httpx.Response: event="ping", timestamp=datetime.utcnow(), data={ - "agent": "argilla-server", + "agent": "extralit-server", "version": info.argilla_version(), }, ) diff --git a/extralit-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py b/extralit-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py index 11755e5fb..ee17f394f 100644 --- a/extralit-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py +++ b/extralit-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest import respx @@ -51,7 +51,7 @@ async def test_ping_webhook(self, async_client: AsyncClient, owner_auth_header: "version": 1, "timestamp": timestamp, "data": { - "agent": "argilla-server", + "agent": "extralit-server", "version": info.argilla_version(), }, } diff --git a/extralit-server/tests/unit/commons/test_telemetry.py b/extralit-server/tests/unit/commons/test_telemetry.py index 122b74cf3..855481f15 100644 --- a/extralit-server/tests/unit/commons/test_telemetry.py +++ b/extralit-server/tests/unit/commons/test_telemetry.py @@ -63,7 +63,7 @@ def test_track_data(self, mocker: MockerFixture): mock.assert_called_once_with( topic="argilla/server/test_topic", - library_name="argilla-server", + library_name="extralit-server", library_version=version, user_agent={"test": "test", **telemetry._system_info}, ) diff --git a/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py b/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py index a53dfbe58..a66c41e0c 100644 --- a/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py +++ b/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py @@ -67,7 +67,7 @@ def hf_api() -> HfApi: @pytest.fixture def hf_dataset_name(hf_api: HfApi) -> Generator[str, None, None]: - hf_dataset_name = f"{HF_ORGANIZATION}/argilla-server-dataset-test-{uuid4()}" + hf_dataset_name = f"{HF_ORGANIZATION}/extralit-server-dataset-test-{uuid4()}" yield hf_dataset_name diff --git a/extralit-server/tests/unit/webhooks/v1/test_notify_ping_event.py b/extralit-server/tests/unit/webhooks/v1/test_notify_ping_event.py index fb0f48c7e..cd8cb006e 100644 --- a/extralit-server/tests/unit/webhooks/v1/test_notify_ping_event.py +++ b/extralit-server/tests/unit/webhooks/v1/test_notify_ping_event.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest @@ -20,7 +20,6 @@ from httpx import Response from standardwebhooks.webhooks import Webhook -from extralit_server.webhooks.v1.enums import WebhookEvent from extralit_server.webhooks.v1.ping import notify_ping_event from extralit_server.contexts import info @@ -46,7 +45,7 @@ async def test_notify_ping_event(self, respx_mock): "version": 1, "timestamp": timestamp, "data": { - "agent": "argilla-server", + "agent": "extralit-server", "version": info.argilla_version(), }, } diff --git a/extralit/docs/admin_guide/k8s_deployment.md b/extralit/docs/admin_guide/k8s_deployment.md index b549ca93b..14fd7c3ac 100644 --- a/extralit/docs/admin_guide/k8s_deployment.md +++ b/extralit/docs/admin_guide/k8s_deployment.md @@ -4,7 +4,7 @@ The Extralit system consists of multiple microservices: -- argilla-server: Web server for data annotation, dataset management, and extraction services +- extralit-server: Web server for data annotation, dataset management, and extraction services - extralit-server: API server for data extraction, PDF parsing, and schema generation - Postgres database: Main database for extracted data and user accounts - Elasticsearch: Search engine for data records diff --git a/extralit/docs/admin_guide/upgrading.md b/extralit/docs/admin_guide/upgrading.md index 14739283c..c20339789 100644 --- a/extralit/docs/admin_guide/upgrading.md +++ b/extralit/docs/admin_guide/upgrading.md @@ -50,21 +50,21 @@ This guide covers the update process for Extralit across different deployment op - Push the updated Docker image to your repository: ```bash - docker push {DOCKER_REPO}/argilla-server:tag + docker push {DOCKER_REPO}/extralit-server:tag docker push {DOCKER_REPO}/extralit-server:tag ``` - Apply the updated Kubernetes configuration: ```bash - kubectl apply -f examples/deployments/k8s/argilla-server-deployment.yaml -n {NAMESPACE} + kubectl apply -f examples/deployments/k8s/extralit-server-deployment.yaml -n {NAMESPACE} kubectl apply -f examples/deployments/k8s/extralit-deployment.yaml -n {NAMESPACE} ``` 6. Monitor the rollout: ```bash - kubectl rollout status deployment/argilla-server-deployment -n {NAMESPACE} + kubectl rollout status deployment/extralit-server-deployment -n {NAMESPACE} ```   @@ -74,7 +74,7 @@ For database schema changes: - Run migrations using the `extralit_server` CLI: ```bash -kubectl exec -it deployment/argilla-server-deployment -n {NAMESPACE} -- \ +kubectl exec -it deployment/extralit-server-deployment -n {NAMESPACE} -- \ extralit_server database migrate ``` diff --git a/extralit/docs/community/developer.md b/extralit/docs/community/developer.md index 8395d318a..27c4aaee5 100644 --- a/extralit/docs/community/developer.md +++ b/extralit/docs/community/developer.md @@ -47,7 +47,7 @@ The Extralit repository has a monorepo structure, which means that all the compo - [`argilla/src/extralit/`](https://github.com/extralit/extralit/tree/develop/argilla/src/extralit): The FastAPI server project for extraction - [`argilla/docs/`](https://github.com/extralit/extralit/tree/develop/argilla/docs): The documentation project - [`argilla/src/argilla/`](https://github.com/extralit/extralit/tree/develop/argilla): The argilla SDK project -- [`extralit-server/src/extralit_server/`](https://github.com/extralit/extralit/tree/develop/argilla-server): The FastAPI server project for annotation +- [`extralit-server/src/extralit_server/`](https://github.com/extralit/extralit/tree/develop/extralit-server): The FastAPI server project for annotation - [`argilla-frontend/`](https://github.com/extralit/extralit/tree/develop/argilla-frontend): The Vue.js UI project - [`examples`](https://github.com/extralit/extralit/tree/develop/examples): Example resources for deployments, scripts and notebooks @@ -58,7 +58,7 @@ The Extralit repository has a monorepo structure, which means that all the compo ![Argilla Repository Structure](../assets/images/community/developer/repo-visualizer-argilla.svg) ??? example "Argilla Server Directory Structure" - ![Argilla Server Repository Structure](../assets/images/community/developer/repo-visualizer-argilla-server.svg) + ![Argilla Server Repository Structure](../assets/images/community/developer/repo-visualizer-extralit-server.svg) ## Development workflow @@ -185,7 +185,7 @@ When making changes to the database schema, you need to create database revision 2. Generate a new revision file: ```bash -cd argilla-server +cd extralit-server pdm run revision -m "description of change" ``` diff --git a/extralit/docs/getting_started/development_setup.md b/extralit/docs/getting_started/development_setup.md index c101814b7..551f923e1 100644 --- a/extralit/docs/getting_started/development_setup.md +++ b/extralit/docs/getting_started/development_setup.md @@ -81,7 +81,7 @@ Then, select from three different development environments through devcontainers docker-compose up -d # Install server dependencies - cd argilla-server + cd extralit-server pdm install # Start the server in development mode @@ -154,7 +154,7 @@ We recommend using PDM for package management: pip install pdm uv # Install server dependencies -cd argilla-server +cd extralit-server pdm install # Install client dependencies @@ -175,7 +175,7 @@ cp -r dist ../extralit-server/src/extralit_server/static ### 4. Configure Environment Variables -Create a `.env.dev` file in the `argilla-server` directory with the following content: +Create a `.env.dev` file in the `extralit-server` directory with the following content: ``` ALEMBIC_CONFIG=src/extralit_server/alembic.ini @@ -213,7 +213,7 @@ docker compose up -d ### 6. Run Database Migrations and Start the Server ```bash -cd argilla-server +cd extralit-server pdm run migrate pdm run cli database users create_default pdm run server @@ -275,23 +275,23 @@ ENV=dev DOCKER_REPO=localhost:5005 tilt up --namespace extralit-dev --context ki For a simpler setup using Docker without live development capabilities: -### 0. Building the `argilla-server` and `argilla-hf-spaces` docker images +### 0. Building the `extralit-server` and `argilla-hf-spaces` docker images To build and run the Argilla Server using Docker, follow these steps: ```bash -cd argilla-server +cd extralit-server pdm build && cp -r dist/ docker/server/ ``` ```bash -docker build -t argilla-server:latest -f docker/server/Dockerfile docker/server/ +docker build -t extralit-server:latest -f docker/server/Dockerfile docker/server/ ``` To build the Argilla HF Spaces Docker image, which includes the Argilla Server, ElasticSearch, and Redis, use the following command: ```bash -docker build --build-arg extralit_server_IMAGE=argilla-server --build-arg ARGILLA_VERSION=latest -t argilla-hf-spaces:latest -f docker/argilla-hf-spaces/Dockerfile docker/argilla-hf-spaces/ +docker build --build-arg extralit_server_IMAGE=extralit-server --build-arg ARGILLA_VERSION=latest -t argilla-hf-spaces:latest -f docker/argilla-hf-spaces/Dockerfile docker/argilla-hf-spaces/ ``` Start the Argilla Server and other dependencies using Docker: From 99373b3e67f10c6e6ef50a09eb2f9e878850bdad Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 09:29:33 -0700 Subject: [PATCH 09/23] updated client.Argilla to client.Extralit --- .github/workflows/extralit.yml | 2 +- .kiro/steering/structure.md | 1 - .pre-commit-config.yaml | 31 ----- codecov.yml | 5 - .../docker/nginx/docker-compose.yaml | 2 +- .../docker/traefik/docker-compose.yaml | 2 +- .../deployments/k8s/argilla-chart/README.md | 2 +- .../deployments/k8s/argilla-chart/values.yaml | 2 +- examples/webhooks/basic-webhooks/README.md | 2 +- examples/webhooks/basic-webhooks/main.py | 4 +- .../server/dev.extralit_server.dockerfile | 2 +- .../src/extralit_server/constants.py | 26 ++-- extralit/.env.test | 2 +- extralit/docs/admin_guide/user.md | 18 +-- extralit/docs/community/adding_language.md | 2 +- .../docs/getting_started/development_setup.md | 4 +- extralit/pyproject.toml | 1 - extralit/src/extralit/_api/_http/_client.py | 5 +- extralit/src/extralit/_helpers/_deploy.py | 4 +- extralit/src/extralit/_helpers/_log.py | 4 +- extralit/src/extralit/_resource.py | 10 +- extralit/src/extralit/cli/callback.py | 8 +- extralit/src/extralit/cli/documents/add.py | 4 +- extralit/src/extralit/cli/documents/delete.py | 4 +- .../src/extralit/cli/documents/import_bib.py | 12 +- .../extralit/cli/documents/import_history.py | 10 +- extralit/src/extralit/cli/documents/list.py | 4 +- extralit/src/extralit/cli/files/delete.py | 4 +- extralit/src/extralit/cli/files/download.py | 4 +- extralit/src/extralit/cli/files/list.py | 4 +- extralit/src/extralit/cli/files/upload.py | 4 +- extralit/src/extralit/client/__init__.py | 18 ++- extralit/src/extralit/client/login.py | 4 +- extralit/src/extralit/client/resources.py | 10 +- extralit/src/extralit/datasets/_io/_disk.py | 6 +- extralit/src/extralit/datasets/_io/_hub.py | 12 +- extralit/src/extralit/datasets/_resource.py | 12 +- extralit/src/extralit/documents/_resource.py | 20 +-- .../src/extralit/records/_dataset_records.py | 8 +- extralit/src/extralit/records/_resource.py | 6 +- extralit/src/extralit/responses.py | 6 +- extralit/src/extralit/settings/_field.py | 18 +-- extralit/src/extralit/settings/_metadata.py | 16 +-- extralit/src/extralit/settings/_question.py | 22 +-- extralit/src/extralit/settings/_vector.py | 10 +- extralit/src/extralit/users/_resource.py | 8 +- extralit/src/extralit/v1/__init__.py | 32 ----- extralit/src/extralit/webhooks/_event.py | 16 +-- extralit/src/extralit/webhooks/_helpers.py | 8 +- extralit/src/extralit/webhooks/_resource.py | 12 +- extralit/src/extralit/workspaces/_resource.py | 8 +- extralit/tests/integration/conftest.py | 12 +- .../tests/integration/test_add_records.py | 16 +-- .../tests/integration/test_cli_commands.py | 8 +- extralit/tests/integration/test_client.py | 24 ++-- .../tests/integration/test_create_datasets.py | 22 +-- .../integration/test_dataset_workspace.py | 20 ++- .../tests/integration/test_delete_records.py | 10 +- .../tests/integration/test_empty_settings.py | 10 +- .../tests/integration/test_export_dataset.py | 16 ++- .../tests/integration/test_export_records.py | 18 ++- .../tests/integration/test_import_features.py | 6 +- .../tests/integration/test_list_records.py | 24 ++-- .../integration/test_listing_datasets.py | 8 +- .../tests/integration/test_manage_metadata.py | 10 +- .../tests/integration/test_manage_users.py | 22 +-- .../integration/test_manage_workspaces.py | 12 +- .../integration/test_publish_datasets.py | 6 +- .../tests/integration/test_query_records.py | 10 +- .../integration/test_ranking_questions.py | 5 +- .../tests/integration/test_search_records.py | 24 ++-- .../test_update_dataset_settings.py | 12 +- .../tests/integration/test_update_records.py | 18 +-- extralit/tests/integration/test_vectors.py | 11 +- .../tests/integration/test_workspace_files.py | 52 ++++--- .../tests/unit/api/http/test_http_client.py | 32 ++--- .../unit/api/test_workspace_documents_api.py | 129 +++++++----------- extralit/tests/unit/cli/test_cli_datasets.py | 8 +- extralit/tests/unit/cli/test_cli_documents.py | 42 +++--- extralit/tests/unit/cli/test_cli_schemas.py | 2 +- extralit/tests/unit/cli/test_cli_training.py | 8 +- .../tests/unit/cli/test_cli_workspaces.py | 10 +- extralit/tests/unit/conftest.py | 8 +- ...t_settings_export_import_compatibillity.py | 4 +- .../tests/unit/helpers/test_resource_repr.py | 5 +- .../unit/helpers/test_spaces_deployment.py | 18 +-- extralit/tests/unit/test_interface.py | 10 +- .../unit/test_resources/test_datasets.py | 10 +- .../tests/unit/test_resources/test_fields.py | 4 +- .../unit/test_resources/test_questions.py | 4 +- .../tests/unit/test_resources/test_users.py | 18 +-- .../unit/test_resources/test_workspaces.py | 18 +-- 92 files changed, 529 insertions(+), 618 deletions(-) delete mode 100644 extralit/src/extralit/v1/__init__.py diff --git a/.github/workflows/extralit.yml b/.github/workflows/extralit.yml index 06f38a26e..eefdedbf6 100644 --- a/.github/workflows/extralit.yml +++ b/.github/workflows/extralit.yml @@ -40,7 +40,7 @@ jobs: # Set credentials USERNAME: argilla PASSWORD: 12345678 - API_KEY: argilla.apikey + API_KEY: extralit.apikey # Configure storage to use local files instead of MinIO ARGILLA_S3_ENDPOINT: "" ARGILLA_S3_ACCESS_KEY: "" diff --git a/.kiro/steering/structure.md b/.kiro/steering/structure.md index a1fbe2760..25de7cc53 100644 --- a/.kiro/steering/structure.md +++ b/.kiro/steering/structure.md @@ -8,7 +8,6 @@ extralit/ ├── extralit-server/ # FastAPI backend server ├── argilla-frontend/ # Nuxt.js web UI ├── extralit/ # Python SDK and CLI -├── argilla-v1/ # Legacy v1 compatibility layer ├── examples/ # Usage examples and deployments └── .kiro/ # Kiro AI assistant configuration ``` diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 588b808fb..c12b35188 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -93,37 +93,6 @@ repos: - extralit-server/LICENSE_HEADER - --fuzzy-match-generates-todo - ############################################################################## - # argilla-v1 SDK specific hooks - ############################################################################## - - repo: https://github.com/pycqa/autoflake - rev: v2.2.1 - hooks: - - id: autoflake - name: "Remove unused imports and variables" - files: '^argilla-v1/.*\.py$' - args: - - "--remove-all-unused-imports" - - "--remove-unused-variables" - - "--in-place" - - repo: https://github.com/charliermarsh/ruff-pre-commit - rev: v0.4.8 - hooks: - - id: ruff - files: 'argilla-v1/src/.*\.py$' - args: - - --fix - - repo: https://github.com/Lucas-C/pre-commit-hooks - rev: v1.5.5 - hooks: - - id: insert-license - name: "Insert license header in Python source files" - files: '^argilla-v1/.*\.py$' - args: - - --license-filepath - - extralit/LICENSE_HEADER - - --fuzzy-match-generates-todo - ############################################################################## # argilla-frontend specific hooks ############################################################################## diff --git a/codecov.yml b/codecov.yml index 53154ceef..4824b23e8 100644 --- a/codecov.yml +++ b/codecov.yml @@ -45,11 +45,6 @@ component_management: paths: - extralit/src/argilla/** - - component_id: argilla_v1 - name: argilla_v1 - paths: - - argilla-v1/src/argilla_v1/** - - component_id: extralit-server paths: - extralit-server/** diff --git a/examples/deployments/docker/nginx/docker-compose.yaml b/examples/deployments/docker/nginx/docker-compose.yaml index 9bc139a31..c0c272d8a 100644 --- a/examples/deployments/docker/nginx/docker-compose.yaml +++ b/examples/deployments/docker/nginx/docker-compose.yaml @@ -17,7 +17,7 @@ services: USERNAME: argilla PASSWORD: 12345678 - API_KEY: argilla.apikey + API_KEY: extralit.apikey ports: - "6900:6900" diff --git a/examples/deployments/docker/traefik/docker-compose.yaml b/examples/deployments/docker/traefik/docker-compose.yaml index 796d549a3..b65428ac5 100644 --- a/examples/deployments/docker/traefik/docker-compose.yaml +++ b/examples/deployments/docker/traefik/docker-compose.yaml @@ -23,7 +23,7 @@ services: ARGILLA_BASE_URL: /argilla USERNAME: argilla PASSWORD: 12345678 - API_KEY: argilla.apikey + API_KEY: extralit.apikey labels: - "traefik.enable=true" - "traefik.http.routers.argilla.rule=PathPrefix(`/argilla/`)" diff --git a/examples/deployments/k8s/argilla-chart/README.md b/examples/deployments/k8s/argilla-chart/README.md index 940039f59..6736e6a1d 100644 --- a/examples/deployments/k8s/argilla-chart/README.md +++ b/examples/deployments/k8s/argilla-chart/README.md @@ -94,7 +94,7 @@ Argilla will be accessible at http://localhost:6900. Set the following environment variables: ```bash export ARGILLA_API_URL=http://localhost:6900 -export ARGILLA_API_KEY=argilla.apikey +export ARGILLA_API_KEY=extralit.apikey ``` Run the following command to execute the integration tests: diff --git a/examples/deployments/k8s/argilla-chart/values.yaml b/examples/deployments/k8s/argilla-chart/values.yaml index d75b0a416..036c87372 100644 --- a/examples/deployments/k8s/argilla-chart/values.yaml +++ b/examples/deployments/k8s/argilla-chart/values.yaml @@ -12,7 +12,7 @@ argilla: auth: username: "argilla" password: "12345678" - apiKey: "argilla.apikey" + apiKey: "extralit.apikey" persistence: enabled: true accessMode: ReadWriteOnce diff --git a/examples/webhooks/basic-webhooks/README.md b/examples/webhooks/basic-webhooks/README.md index c1f3343c2..e6dea8078 100644 --- a/examples/webhooks/basic-webhooks/README.md +++ b/examples/webhooks/basic-webhooks/README.md @@ -27,7 +27,7 @@ For more information on how to install the server, please refer to the [Extralit Once the argilla server is up and running, start the webhook server by running the following command: ```bash -ARGILLA_API_KEY=argilla.apikey \ +ARGILLA_API_KEY=extralit.apikey \ WEBHOOK_SERVER_URL=http://host.docker.internal:8000 \ uvicorn main:server ``` diff --git a/examples/webhooks/basic-webhooks/main.py b/examples/webhooks/basic-webhooks/main.py index fd95bae1e..ef37dcc50 100644 --- a/examples/webhooks/basic-webhooks/main.py +++ b/examples/webhooks/basic-webhooks/main.py @@ -4,11 +4,11 @@ import extralit as rg # Environment variables with defaults -API_KEY = os.environ.get("ARGILLA_API_KEY", "argilla.apikey") +API_KEY = os.environ.get("ARGILLA_API_KEY", "extralit.apikey") API_URL = os.environ.get("ARGILLA_API_URL", "http://localhost:6900") # Initialize Argilla client -client = rg.Argilla(api_key=API_KEY, api_url=API_URL) +client = rg.Extralit(api_key=API_KEY, api_url=API_URL) # Show the existing webhooks in the argilla server for webhook in client.webhooks: diff --git a/extralit-server/docker/server/dev.extralit_server.dockerfile b/extralit-server/docker/server/dev.extralit_server.dockerfile index 7db7960ac..835f8972d 100644 --- a/extralit-server/docker/server/dev.extralit_server.dockerfile +++ b/extralit-server/docker/server/dev.extralit_server.dockerfile @@ -33,7 +33,7 @@ ENV ENV=$ENV ENV USERNAME="argilla" ENV PASSWORD="12345678" -ENV API_KEY="argilla.apikey" +ENV API_KEY="extralit.apikey" ## Argilla home path ENV ARGILLA_HOME_PATH=/var/lib/argilla diff --git a/extralit-server/src/extralit_server/constants.py b/extralit-server/src/extralit_server/constants.py index 6a5cd49b7..1963fd865 100644 --- a/extralit-server/src/extralit_server/constants.py +++ b/extralit-server/src/extralit_server/constants.py @@ -1,19 +1,19 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. -API_KEY_HEADER_NAME = "X-Argilla-Api-Key" -WORKSPACE_HEADER_NAME = "X-Argilla-Workspace" +API_KEY_HEADER_NAME = "X-Extralit-Api-Key" +WORKSPACE_HEADER_NAME = "X-Extralit-Workspace" DATABASE_SQLITE = "sqlite" DATABASE_POSTGRESQL = "postgresql" @@ -23,7 +23,7 @@ DEFAULT_USERNAME = "argilla" DEFAULT_PASSWORD = "1234" -DEFAULT_API_KEY = "argilla.apikey" +DEFAULT_API_KEY = "extralit.apikey" DEFAULT_DATABASE_SQLITE_TIMEOUT = 5 diff --git a/extralit/.env.test b/extralit/.env.test index 0f1d4a0dc..b471bb2db 100644 --- a/extralit/.env.test +++ b/extralit/.env.test @@ -1,2 +1,2 @@ ARGILLA_API_URL=http://localhost:6900 -ARGILLA_API_KEY=argilla.apikey +ARGILLA_API_KEY=extralit.apikey diff --git a/extralit/docs/admin_guide/user.md b/extralit/docs/admin_guide/user.md index d23adbccb..eb0f55c1c 100644 --- a/extralit/docs/admin_guide/user.md +++ b/extralit/docs/admin_guide/user.md @@ -9,14 +9,14 @@ This guide provides an overview of user roles and credentials, explaining how to A **user** in Argilla is an authorized person who, depending on their role, can use the Python SDK and access the UI in a running Argilla instance. We differentiate between three types of users depending on their role, permissions and needs: `owner`, `admin` and `annotator`. === "Overview" - | | Owner | Admin | Annotator | - |-------------------------------|------------|---------------------------|-----------| - | **Number** | Unlimited | Unlimited | Unlimited | - | **Create and delete workspaces** | Yes | No | No | - | **Assign users to workspaces** | Yes | No | No | - | **Create, configure, update, and delete datasets** | Yes | Only within assigned workspaces | No | - | **Create, update, and delete users** | Yes | No | No | - | **Provide feedback with Argila UI** | Yes | Yes | Yes | + | | Owner | Admin | Annotator | + | -------------------------------------------------- | --------- | ------------------------------- | --------- | + | **Number** | Unlimited | Unlimited | Unlimited | + | **Create and delete workspaces** | Yes | No | No | + | **Assign users to workspaces** | Yes | No | No | + | **Create, configure, update, and delete datasets** | Yes | Only within assigned workspaces | No | + | **Create, update, and delete users** | Yes | No | No | + | **Provide feedback with Argila UI** | Yes | Yes | Yes | === "Owner" @@ -53,7 +53,7 @@ A **user** in Argilla is an authorized person who, depending on their role, can Depending on [your Argilla deployment](../getting_started/quickstart.md), the initial user with the `owner` role will vary. * If you deploy on the Hugging Face Hub, the initial user will correspond to the Space owner (your personal account). The API key is automatically generated and can be copied from the "Settings" section of the UI. -* If you deploy with Docker, the default values for the environment variables are: USERNAME: argilla, PASSWORD: 12345678, API_KEY: argilla.apikey. +* If you deploy with Docker, the default values for the environment variables are: USERNAME: argilla, PASSWORD: 12345678, API_KEY: extralit.apikey. For the new users, the username and password are set during the creation process. The API key can be copied from the "Settings" section of the UI. diff --git a/extralit/docs/community/adding_language.md b/extralit/docs/community/adding_language.md index e82883ffe..630e7b07c 100644 --- a/extralit/docs/community/adding_language.md +++ b/extralit/docs/community/adding_language.md @@ -43,7 +43,7 @@ export default { ```python import argilla as rg -client_local = rg.Argilla(api_url="http://localhost:6900/", api_key="argilla.apikey") +client_local = rg.Argilla(api_url="http://localhost:6900/", api_key="extralit.apikey") sample_questions = [ rg.SpanQuestion( diff --git a/extralit/docs/getting_started/development_setup.md b/extralit/docs/getting_started/development_setup.md index 551f923e1..f0c1b7c18 100644 --- a/extralit/docs/getting_started/development_setup.md +++ b/extralit/docs/getting_started/development_setup.md @@ -126,7 +126,7 @@ Then, select from three different development environments through devcontainers - Log in with the default credentials: - Username: `argilla` - Password: `12345678` - - API Key: `argilla.apikey` + - API Key: `extralit.apikey` ## Option 2: Local Development Setup @@ -297,7 +297,7 @@ docker build --build-arg extralit_server_IMAGE=extralit-server --build-arg ARGIL Start the Argilla Server and other dependencies using Docker: ```bash -docker run --rm -p 6900:6900 -e ARGILLA_ENABLE_TELEMETRY=0 -e USERNAME=argilla -e PASSWORD=12345678 -e API_KEY=argilla.apikey --name argilla-hf-spaces argilla-hf-spaces:latest +docker run --rm -p 6900:6900 -e ARGILLA_ENABLE_TELEMETRY=0 -e USERNAME=argilla -e PASSWORD=12345678 -e API_KEY=extralit.apikey --name argilla-hf-spaces argilla-hf-spaces:latest ``` diff --git a/extralit/pyproject.toml b/extralit/pyproject.toml index 947f0ee31..328c37fb4 100644 --- a/extralit/pyproject.toml +++ b/extralit/pyproject.toml @@ -83,7 +83,6 @@ pdf = [ "pymupdf==1.26.0", "pdf2image ~= 1.16.0", ] -legacy = ["argilla-v1[listeners]"] [build-system] requires = ["pdm-backend>=2.0.0", "setuptools>=68.0.0"] diff --git a/extralit/src/extralit/_api/_http/_client.py b/extralit/src/extralit/_api/_http/_client.py index ffcb01f73..4bde5901c 100644 --- a/extralit/src/extralit/_api/_http/_client.py +++ b/extralit/src/extralit/_api/_http/_client.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -11,6 +11,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. + import inspect from dataclasses import dataclass @@ -35,7 +36,7 @@ def create_http_client(api_url: str, api_key: str, timeout: int, retries: int, * # This piece of code is needed to make old sdk works in combination with new one headers = client_args.pop("headers", {}) - headers["X-Argilla-Api-Key"] = api_key + headers["X-Extralit-Api-Key"] = api_key http_transport = httpx.HTTPTransport( retries=retries, diff --git a/extralit/src/extralit/_helpers/_deploy.py b/extralit/src/extralit/_helpers/_deploy.py index 60c4ef960..01e6b5581 100644 --- a/extralit/src/extralit/_helpers/_deploy.py +++ b/extralit/src/extralit/_helpers/_deploy.py @@ -25,7 +25,7 @@ if TYPE_CHECKING: from huggingface_hub.hf_api import RepoUrl, SpaceHardware, SpaceStorage # noqa - from extralit.client import Argilla + from extralit.client import Extralit _SLEEP_TIME = 10 _ARGILLA_SPACE_TEMPLATE_REPO = "argilla/argilla-template-space" @@ -42,7 +42,7 @@ def deploy_on_spaces( space_storage: Optional[Union[str, "SpaceStorage", Literal["small", "medium", "large"]]] = None, space_hardware: Optional[Union[str, "SpaceHardware", Literal["cpu-basic", "cpu-upgrade"]]] = "cpu-basic", private: Optional[Union[bool, None]] = False, - ) -> "Argilla": + ) -> "Extralit": """ Deploys Argilla on Hugging Face Spaces. diff --git a/extralit/src/extralit/_helpers/_log.py b/extralit/src/extralit/_helpers/_log.py index f75574151..ab80d9048 100644 --- a/extralit/src/extralit/_helpers/_log.py +++ b/extralit/src/extralit/_helpers/_log.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -24,7 +24,7 @@ "critical": logging.CRITICAL, } -logger = logging.getLogger(name="argilla.sdk") +logger = logging.getLogger(name="extralit.sdk") def log_message(message: str, level: str = "info") -> None: diff --git a/extralit/src/extralit/_resource.py b/extralit/src/extralit/_resource.py index 7600ef085..622d78190 100644 --- a/extralit/src/extralit/_resource.py +++ b/extralit/src/extralit/_resource.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -27,19 +27,19 @@ if TYPE_CHECKING: from extralit._api._base import ResourceAPI from extralit._models import ResourceModel - from extralit.client import Argilla + from extralit.client import Extralit class Resource(LoggingMixin): """Base class for all resources (Dataset, Workspace, User, etc.)""" _model: "ResourceModel" - _client: "Argilla" + _client: "Extralit" _api: "ResourceAPI" _MAX_OUTDATED_RETENTION = 30 - def __init__(self, api: Optional["ResourceAPI"] = None, client: Optional["Argilla"] = None) -> None: + def __init__(self, api: Optional["ResourceAPI"] = None, client: Optional["Extralit"] = None) -> None: self._client = client self._api = api @@ -140,5 +140,5 @@ def _seconds_from_last_api_call(self) -> Optional[float]: return (datetime.utcnow() - self._last_api_call).total_seconds() @abstractmethod - def _with_client(self, client: "Argilla") -> "Self": + def _with_client(self, client: "Extralit") -> "Self": pass diff --git a/extralit/src/extralit/cli/callback.py b/extralit/src/extralit/cli/callback.py index cb44b174b..0e3cd00fe 100644 --- a/extralit/src/extralit/cli/callback.py +++ b/extralit/src/extralit/cli/callback.py @@ -16,7 +16,7 @@ import typer if TYPE_CHECKING: - from extralit.client.core import Argilla + from extralit.client.core import Extralit def echo_in_panel(text, title=None, title_align="center", success=True): @@ -33,7 +33,7 @@ def echo_in_panel(text, title=None, title_align="center", success=True): Console().print(panel) -def init_callback() -> "Argilla": +def init_callback() -> "Extralit": """Initialize Argilla client if user is logged in, otherwise exit.""" from extralit.client.login import ArgillaCredentials @@ -47,9 +47,9 @@ def init_callback() -> "Argilla": raise typer.Exit(code=1) try: - from extralit.client import Argilla + from extralit.client import Extralit - client = Argilla.from_credentials() + client = Extralit.from_credentials() return client except Exception as e: echo_in_panel( diff --git a/extralit/src/extralit/cli/documents/add.py b/extralit/src/extralit/cli/documents/add.py index 61d157496..1641e9f23 100644 --- a/extralit/src/extralit/cli/documents/add.py +++ b/extralit/src/extralit/cli/documents/add.py @@ -38,7 +38,7 @@ from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn -from extralit.client import Argilla +from extralit.client import Extralit from extralit.cli.rich import get_argilla_themed_panel from extralit.documents import Document @@ -70,7 +70,7 @@ def add_document( try: # Get the client - client = Argilla.from_credentials() + client = Extralit.from_credentials() # Get the workspace workspace_obj = client.workspaces(name=workspace) diff --git a/extralit/src/extralit/cli/documents/delete.py b/extralit/src/extralit/cli/documents/delete.py index 5a93b757b..9dde68b88 100644 --- a/extralit/src/extralit/cli/documents/delete.py +++ b/extralit/src/extralit/cli/documents/delete.py @@ -20,7 +20,7 @@ import typer from rich.console import Console -from extralit.client import Argilla +from extralit.client import Extralit from extralit.cli.rich import get_argilla_themed_panel @@ -35,7 +35,7 @@ def delete_document( console = Console() try: - client = Argilla.from_credentials() + client = Extralit.from_credentials() # Get the workspace workspace_obj = client.workspaces(name=workspace) diff --git a/extralit/src/extralit/cli/documents/import_bib.py b/extralit/src/extralit/cli/documents/import_bib.py index 3bbf01d92..08fb78d5c 100644 --- a/extralit/src/extralit/cli/documents/import_bib.py +++ b/extralit/src/extralit/cli/documents/import_bib.py @@ -44,7 +44,7 @@ from rich.table import Table from extralit.workspaces._resource import Workspace -from extralit.client import Argilla +from extralit.client import Extralit from extralit.cli.rich import get_argilla_themed_panel @@ -265,7 +265,7 @@ def _build_documents_payload(df: pd.DataFrame, workspace_obj: Workspace, collect return documents -def _send_import_analysis_request(client: Argilla, workspace_obj: Workspace, documents, console: Console): +def _send_import_analysis_request(client: Extralit, workspace_obj: Workspace, documents, console: Console): with Progress( SpinnerColumn(), TextColumn("[progress.description]{task.description}"), @@ -286,7 +286,7 @@ def _send_import_analysis_request(client: Argilla, workspace_obj: Workspace, doc def _execute_document_bulk_import( - client: Argilla, analysis_result: Dict, df: pd.DataFrame, df_data: Dict, bibtex_file: Path, console: Console + client: Extralit, analysis_result: Dict, df: pd.DataFrame, df_data: Dict, bibtex_file: Path, console: Console ) -> None: """Execute bulk document import with multi-file support per reference.""" with Progress( @@ -442,7 +442,7 @@ def _execute_document_bulk_import( def _store_import_history( - client: Argilla, analysis_result: Dict, df_data: Dict, bibtex_file: Path, console: Console + client: Extralit, analysis_result: Dict, df_data: Dict, bibtex_file: Path, console: Console ) -> None: """ Store import history record with dataframe data and metadata. @@ -554,7 +554,7 @@ def _handle_cli_exception(console: Console, e: Exception, debug: bool = False) - raise typer.Exit(code=1) -def _validate_workspace_and_folder(client: Argilla, workspace: str, pdf_folder: Path, console: Console) -> Workspace: +def _validate_workspace_and_folder(client: Extralit, workspace: str, pdf_folder: Path, console: Console) -> Workspace: """Validate workspace exists and PDF folder is accessible.""" workspace_obj = client.workspaces(name=workspace) if not workspace_obj: @@ -626,7 +626,7 @@ def import_bib( console = Console() try: # Initialize client and validate inputs - client = Argilla.from_credentials() + client = Extralit.from_credentials() workspace_obj = _validate_workspace_and_folder(client, workspace, pdf_folder, console) # Phase 1: Parse BibTeX to DataFrame and match PDF files diff --git a/extralit/src/extralit/cli/documents/import_history.py b/extralit/src/extralit/cli/documents/import_history.py index 5c7af46bc..9d66dbbed 100644 --- a/extralit/src/extralit/cli/documents/import_history.py +++ b/extralit/src/extralit/cli/documents/import_history.py @@ -35,7 +35,7 @@ from rich.progress import Progress, SpinnerColumn, TextColumn from rich.table import Table -from extralit.client import Argilla +from extralit.client import Extralit from extralit.cli.rich import get_argilla_themed_panel @@ -60,7 +60,7 @@ def list_import_histories( try: # Initialize client and get workspace - client = Argilla.from_credentials() + client = Extralit.from_credentials() workspace_obj = client.workspaces(name=workspace) if not workspace_obj: panel = get_argilla_themed_panel( @@ -97,7 +97,7 @@ def list_import_histories( def _list_import_histories_internal( - client: Argilla, workspace_obj, workspace: str, console: Console, debug: bool + client: Extralit, workspace_obj, workspace: str, console: Console, debug: bool ) -> None: """Internal function to list import histories.""" # Fetch import histories @@ -166,7 +166,7 @@ def _list_import_histories_internal( def _export_import_history_internal( - client: Argilla, workspace_obj, history_id: str, output_dir: Path, console: Console, debug: bool + client: Extralit, workspace_obj, history_id: str, output_dir: Path, console: Console, debug: bool ) -> None: """Internal function to export import history.""" # Ensure output directory exists @@ -221,7 +221,7 @@ def _export_import_history_internal( def _show_import_history_internal( - client: Argilla, workspace_obj, history_id: str, console: Console, debug: bool + client: Extralit, workspace_obj, history_id: str, console: Console, debug: bool ) -> None: """Internal function to show import history details.""" # Fetch detailed import history diff --git a/extralit/src/extralit/cli/documents/list.py b/extralit/src/extralit/cli/documents/list.py index 2bfc7b5a5..28f72b2bc 100644 --- a/extralit/src/extralit/cli/documents/list.py +++ b/extralit/src/extralit/cli/documents/list.py @@ -17,7 +17,7 @@ import typer from rich.console import Console -from extralit.client import Argilla +from extralit.client import Extralit from extralit.cli.rich import get_argilla_themed_panel, print_rich_table @@ -28,7 +28,7 @@ def list_documents( console = Console() try: - client = Argilla.from_credentials() + client = Extralit.from_credentials() workspace_obj = client.workspaces(name=workspace) if not workspace_obj: diff --git a/extralit/src/extralit/cli/files/delete.py b/extralit/src/extralit/cli/files/delete.py index c80bb6a78..a6582589d 100644 --- a/extralit/src/extralit/cli/files/delete.py +++ b/extralit/src/extralit/cli/files/delete.py @@ -17,7 +17,7 @@ import typer from rich.console import Console -from extralit.client import Argilla +from extralit.client import Extralit from extralit.cli.rich import get_argilla_themed_panel @@ -32,7 +32,7 @@ def delete_file( try: # Get the client - client = Argilla.from_credentials() + client = Extralit.from_credentials() # Get the workspace workspace_obj = client.workspaces(name=workspace) diff --git a/extralit/src/extralit/cli/files/download.py b/extralit/src/extralit/cli/files/download.py index b14cd3eb9..148b165a4 100644 --- a/extralit/src/extralit/cli/files/download.py +++ b/extralit/src/extralit/cli/files/download.py @@ -20,7 +20,7 @@ from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn -from extralit.client import Argilla +from extralit.client import Extralit from extralit.cli.rich import get_argilla_themed_panel @@ -38,7 +38,7 @@ def download_file( try: # Get the client - client = Argilla.from_credentials() + client = Extralit.from_credentials() # Get the workspace workspace_obj = client.workspaces(name=workspace) diff --git a/extralit/src/extralit/cli/files/list.py b/extralit/src/extralit/cli/files/list.py index c8dc0bcb8..9f947348d 100644 --- a/extralit/src/extralit/cli/files/list.py +++ b/extralit/src/extralit/cli/files/list.py @@ -14,7 +14,7 @@ import typer -from extralit.client import Argilla +from extralit.client import Extralit from extralit.cli.rich import get_argilla_themed_panel, print_rich_table @@ -29,7 +29,7 @@ def list_files( console = Console() try: - client = Argilla.from_credentials() + client = Extralit.from_credentials() workspace_obj = client.workspaces(name=workspace) diff --git a/extralit/src/extralit/cli/files/upload.py b/extralit/src/extralit/cli/files/upload.py index 83f9e0528..fe63022ca 100644 --- a/extralit/src/extralit/cli/files/upload.py +++ b/extralit/src/extralit/cli/files/upload.py @@ -19,7 +19,7 @@ from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn -from extralit.client import Argilla +from extralit.client import Extralit from extralit.cli.rich import get_argilla_themed_panel @@ -34,7 +34,7 @@ def upload_file( console = Console() try: - client = Argilla.from_credentials() + client = Extralit.from_credentials() workspace_obj = client.workspaces(name=workspace) if not workspace_obj: diff --git a/extralit/src/extralit/client/__init__.py b/extralit/src/extralit/client/__init__.py index a6abdc59e..897aee8f6 100644 --- a/extralit/src/extralit/client/__init__.py +++ b/extralit/src/extralit/client/__init__.py @@ -1,3 +1,17 @@ -from extralit.client.core import Argilla +# Copyright 2024-present, Extralit Labs, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. -__all__ = ["Argilla"] +from extralit.client.core import Extralit + +__all__ = ["Extralit"] diff --git a/extralit/src/extralit/client/login.py b/extralit/src/extralit/client/login.py index 976666b89..0a32890fe 100644 --- a/extralit/src/extralit/client/login.py +++ b/extralit/src/extralit/client/login.py @@ -125,11 +125,11 @@ def login( ValueError: If the login fails. """ # Validate credentials by creating a client and making a test API call - from extralit.client import Argilla + from extralit.client import Extralit try: # Create client with the provided credentials - client = Argilla(api_url=api_url, api_key=api_key) + client = Extralit(api_url=api_url, api_key=api_key) # Try to get user info - this will raise an exception if authentication fails client.me diff --git a/extralit/src/extralit/client/resources.py b/extralit/src/extralit/client/resources.py index 76ba8bf9a..e4fab94c1 100644 --- a/extralit/src/extralit/client/resources.py +++ b/extralit/src/extralit/client/resources.py @@ -28,7 +28,7 @@ if TYPE_CHECKING: from extralit import Dataset, User, Workspace, Webhook - from extralit.client.core import Argilla + from extralit.client.core import Extralit __all__ = ["Users", "Workspaces", "Datasets", "Webhooks"] @@ -39,7 +39,7 @@ class Users(Sequence["User"], ResourceHTMLReprMixin): class _Iterator(GenericIterator["User"]): pass - def __init__(self, client: "Argilla") -> None: + def __init__(self, client: "Extralit") -> None: self._client = client self._api = client.api.users @@ -135,7 +135,7 @@ class Workspaces(Sequence["Workspace"], ResourceHTMLReprMixin): class _Iterator(GenericIterator["Workspace"]): pass - def __init__(self, client: "Argilla") -> None: + def __init__(self, client: "Extralit") -> None: self._client = client self._api = client.api.workspaces @@ -232,7 +232,7 @@ def __next__(self): dataset = super().__next__() return dataset.get() - def __init__(self, client: "Argilla") -> None: + def __init__(self, client: "Extralit") -> None: self._client = client self._api = client.api.datasets @@ -350,7 +350,7 @@ class Webhooks(Sequence["Webhook"], ResourceHTMLReprMixin): class _Iterator(GenericIterator["Webhook"]): pass - def __init__(self, client: "Argilla") -> None: + def __init__(self, client: "Extralit") -> None: self._client = client self._api = client.api.webhooks diff --git a/extralit/src/extralit/datasets/_io/_disk.py b/extralit/src/extralit/datasets/_io/_disk.py index ec16cc348..aa3e381dc 100644 --- a/extralit/src/extralit/datasets/_io/_disk.py +++ b/extralit/src/extralit/datasets/_io/_disk.py @@ -23,7 +23,7 @@ from extralit._exceptions import RecordsIngestionError, ArgillaError, ImportDatasetError from extralit._models import DatasetModel -from extralit.client import Argilla +from extralit.client import Extralit from extralit.settings import Settings from extralit.workspaces._resource import Workspace @@ -67,7 +67,7 @@ def from_disk( *, name: Optional[str] = None, workspace: Optional[Union["Workspace", str]] = None, - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, with_records: bool = True, ) -> "Dataset": """Imports a dataset from disk as a directory containing the dataset model, settings and records. @@ -81,7 +81,7 @@ def from_disk( with_records: whether to load the records from the Hugging Face dataset. Defaults to `True`. """ - client = client or Argilla._get_default() + client = client or Extralit._get_default() try: dataset_path, settings_path, records_path = cls._define_child_paths(path=path) diff --git a/extralit/src/extralit/datasets/_io/_hub.py b/extralit/src/extralit/datasets/_io/_hub.py index a039c52fb..d4c134d0b 100644 --- a/extralit/src/extralit/datasets/_io/_hub.py +++ b/extralit/src/extralit/datasets/_io/_hub.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -37,7 +37,7 @@ if TYPE_CHECKING: from datasets import Dataset as HFDataset - from extralit import Argilla, Dataset, Settings, Workspace + from extralit import Extralit, Dataset, Settings, Workspace class HubImportExportMixin(DiskImportExportMixin): @@ -117,7 +117,7 @@ def from_hub( *, name: Optional[str] = None, workspace: Optional[Union["Workspace", str]] = None, - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, with_records: bool = True, settings: Union["Settings", Literal["auto", "ui"]] = "ui", split: Optional[str] = None, @@ -333,13 +333,13 @@ def _get_sample_hf_record(hf_dataset: "HFDataset") -> Dict: return sample_huggingface_record @classmethod - def _run_settings_ui(cls, repo_id: str, subset: str, split: str, client: Optional["Argilla"] = None) -> str: + def _run_settings_ui(cls, repo_id: str, subset: str, split: str, client: Optional["Extralit"] = None) -> str: from urllib.parse import quote_plus, urlencode - from extralit.client import Argilla + from extralit.client import Extralit import webbrowser - client = client or Argilla._get_default() + client = client or Extralit._get_default() params = { "subset": subset, diff --git a/extralit/src/extralit/datasets/_resource.py b/extralit/src/extralit/datasets/_resource.py index 9d3cbef93..959163202 100644 --- a/extralit/src/extralit/datasets/_resource.py +++ b/extralit/src/extralit/datasets/_resource.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -24,7 +24,7 @@ from extralit._exceptions import NotFoundError, SettingsError, ForbiddenError from extralit._models import DatasetModel from extralit._resource import Resource -from extralit.client import Argilla +from extralit.client import Extralit from extralit.datasets._io import DiskImportExportMixin, HubImportExportMixin from extralit.records import DatasetRecords from extralit.settings import Settings @@ -58,7 +58,7 @@ def __init__( name: Optional[str] = None, workspace: Optional[Union["Workspace", str, UUID]] = None, settings: Optional[Settings] = None, - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, ) -> None: """Initializes a new Argilla Dataset object with the given parameters. @@ -68,7 +68,7 @@ def __init__( settings (Settings): Settings class to be used to configure the dataset. client (Argilla): Instance of Argilla to connect with the server. Default is the default client. """ - client = client or Argilla._get_default() + client = client or Extralit._get_default() super().__init__(client=client, api=client.api.datasets) if name is None: name = f"dataset_{uuid4()}" @@ -236,7 +236,7 @@ def progress(self, with_users_distribution: bool = False) -> dict: return progress @classmethod - def from_model(cls, model: DatasetModel, client: "Argilla") -> "Dataset": + def from_model(cls, model: DatasetModel, client: "Extralit") -> "Dataset": instance = cls(client=client, workspace=model.workspace_id, name=model.name) instance._model = model @@ -284,5 +284,5 @@ def _rollback_dataset_creation(self): def _is_published(self) -> bool: return self._model.status == "ready" - def _with_client(self, client: Argilla) -> "Self": + def _with_client(self, client: Extralit) -> "Self": return super()._with_client(client=client) diff --git a/extralit/src/extralit/documents/_resource.py b/extralit/src/extralit/documents/_resource.py index 4fd0b8c6b..58305c391 100644 --- a/extralit/src/extralit/documents/_resource.py +++ b/extralit/src/extralit/documents/_resource.py @@ -26,7 +26,7 @@ from extralit._api._documents import DocumentsAPI from extralit._models._documents import DocumentModel from extralit._resource import Resource -from extralit.client import Argilla +from extralit.client import Extralit if TYPE_CHECKING: pass @@ -59,7 +59,7 @@ def __init__( pmid: Optional[str] = None, doi: Optional[str] = None, id: Optional[UUID] = None, - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, ) -> None: """Initializes a Document object. @@ -77,7 +77,7 @@ def __init__( Returns: Document: The initialized document object. """ - client = client or Argilla._get_default() + client = client or Extralit._get_default() super().__init__(client=client, api=client.api.documents) self._model: DocumentModel = DocumentModel( @@ -103,7 +103,7 @@ def from_file( workspace_id: Optional[UUID] = None, pmid: Optional[str] = None, doi: Optional[str] = None, - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, ) -> "Document": """Create a Document from a file path or URL. @@ -157,7 +157,7 @@ def from_pmid( *, reference: Optional[str] = None, workspace_id: Optional[UUID] = None, - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, ) -> "Document": """Create a Document from a PubMed ID. @@ -184,7 +184,7 @@ def from_doi( *, reference: Optional[str] = None, workspace_id: Optional[UUID] = None, - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, ) -> "Document": """Create a Document from a DOI. @@ -205,7 +205,7 @@ def from_doi( ) @classmethod - def from_model(cls, model: DocumentModel, client: "Argilla") -> "Document": + def from_model(cls, model: DocumentModel, client: "Extralit") -> "Document": """Create a Document from a DocumentModel. Args: @@ -234,7 +234,7 @@ def get( cls, id: Optional[UUID] = None, pmid: Optional[str] = None, - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, ) -> "Document": """Get a document by ID or PMID. @@ -249,7 +249,7 @@ def get( Raises: ValueError: If neither id nor pmid is provided. """ - client = client or Argilla._get_default() + client = client or Extralit._get_default() if id: model = client.api.documents.get(id) @@ -339,5 +339,5 @@ def delete(self) -> None: self._update_last_api_call() self._log_message(f"Document deleted: {self}") - def _with_client(self, client: "Argilla") -> "Self": + def _with_client(self, client: "Extralit") -> "Self": return Document.from_model(self._model, client) diff --git a/extralit/src/extralit/records/_dataset_records.py b/extralit/src/extralit/records/_dataset_records.py index c010af44d..902e8d219 100644 --- a/extralit/src/extralit/records/_dataset_records.py +++ b/extralit/src/extralit/records/_dataset_records.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ from extralit._helpers import LoggingMixin from extralit._models import RecordModel from extralit._exceptions import RecordsIngestionError -from extralit.client import Argilla +from extralit.client import Extralit from extralit.records._io import GenericIO, HFDataset, HFDatasetsIO, JsonIO from extralit.records._mapping import IngestedRecordMapper from extralit.records._resource import Record @@ -45,7 +45,7 @@ class DatasetRecordsIterator: def __init__( self, dataset: "Dataset", - client: "Argilla", + client: "Extralit", query: Optional[Query] = None, start_offset: int = 0, batch_size: Optional[int] = None, @@ -177,7 +177,7 @@ class DatasetRecords(Iterable[Record], LoggingMixin): DEFAULT_DELETE_BATCH_SIZE = 64 def __init__( - self, client: "Argilla", dataset: "Dataset", mapping: Optional[Dict[str, Union[str, Sequence[str]]]] = None + self, client: "Extralit", dataset: "Dataset", mapping: Optional[Dict[str, Union[str, Sequence[str]]]] = None ): """Initializes a DatasetRecords object with a client and a dataset. Args: diff --git a/extralit/src/extralit/records/_resource.py b/extralit/src/extralit/records/_resource.py index 2b83b5153..eaeb20387 100644 --- a/extralit/src/extralit/records/_resource.py +++ b/extralit/src/extralit/records/_resource.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -34,7 +34,7 @@ if TYPE_CHECKING: from extralit.datasets import Dataset - from extralit import Argilla + from extralit import Extralit from extralit._api import RecordsAPI @@ -279,7 +279,7 @@ def from_model(cls, model: RecordModel, dataset: "Dataset") -> "Record": return instance @property - def _client(self) -> Optional["Argilla"]: + def _client(self) -> Optional["Extralit"]: if self._dataset: return self.dataset._client diff --git a/extralit/src/extralit/responses.py b/extralit/src/extralit/responses.py index b27c69d0b..35ade96fc 100644 --- a/extralit/src/extralit/responses.py +++ b/extralit/src/extralit/responses.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ from extralit.settings import RankingQuestion if TYPE_CHECKING: - from extralit import Argilla, Record + from extralit import Extralit, Record __all__ = ["Response", "UserResponse", "ResponseStatus"] @@ -134,7 +134,7 @@ class UserResponse(Resource): def __init__( self, responses: List[Response], - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, _record: Optional["Record"] = None, ) -> None: """Initializes a UserResponse with a user and a set of question answers""" diff --git a/extralit/src/extralit/settings/_field.py b/extralit/src/extralit/settings/_field.py index 53810a13e..97a604baf 100644 --- a/extralit/src/extralit/settings/_field.py +++ b/extralit/src/extralit/settings/_field.py @@ -18,7 +18,7 @@ import requests -from extralit import Argilla +from extralit import Extralit from extralit._api import FieldsAPI from extralit._exceptions import ArgillaError, SettingsError from extralit._models import ( @@ -58,9 +58,9 @@ def __init__( title: Optional[str] = None, required: Optional[bool] = True, description: Optional[str] = None, - _client: Optional[Argilla] = None, + _client: Optional[Extralit] = None, ): - client = _client or Argilla._get_default() + client = _client or Extralit._get_default() super().__init__(api=client.api.fields, client=client) @@ -89,7 +89,7 @@ def dataset(self, value: "Dataset") -> None: self._model.dataset_id = self._dataset.id self._with_client(self._dataset._client) - def _with_client(self, client: "Argilla") -> "Self": + def _with_client(self, client: "Extralit") -> "Self": # TODO: Review and simplify. Maybe only one of them is required self._client = client self._api = self._client.api.fields @@ -108,7 +108,7 @@ def __init__( use_table: Optional[bool] = False, required: bool = True, description: Optional[str] = None, - client: Optional[Argilla] = None, + client: Optional[Extralit] = None, ) -> None: """Text field for use in Argilla `Dataset` `Settings` Parameters: @@ -155,7 +155,7 @@ def __init__( title: Optional[str] = None, required: Optional[bool] = True, description: Optional[str] = None, - _client: Optional[Argilla] = None, + _client: Optional[Extralit] = None, ) -> None: """ Text field for use in Argilla `Dataset` `Settings` @@ -187,7 +187,7 @@ def __init__( use_markdown: Optional[bool] = True, required: bool = True, description: Optional[str] = None, - _client: Optional[Argilla] = None, + _client: Optional[Extralit] = None, ) -> None: """ Chat field for use in Argilla `Dataset` `Settings` @@ -229,7 +229,7 @@ def __init__( advanced_mode: Optional[bool] = False, required: bool = True, description: Optional[str] = None, - _client: Optional[Argilla] = None, + _client: Optional[Extralit] = None, ) -> None: """ Custom field for use in Argilla `Dataset` `Settings` for working with custom HTML and CSS templates. @@ -299,7 +299,7 @@ def __init__( title: Optional[str] = None, required: bool = True, description: Optional[str] = None, - _client: Optional["Argilla"] = None, + _client: Optional["Extralit"] = None, ) -> None: """ Table field for use in Argilla `Dataset` `Settings` diff --git a/extralit/src/extralit/settings/_metadata.py b/extralit/src/extralit/settings/_metadata.py index 7412acfad..0d1d6568b 100644 --- a/extralit/src/extralit/settings/_metadata.py +++ b/extralit/src/extralit/settings/_metadata.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ MetadataFieldModel, ) from extralit._resource import Resource -from extralit.client import Argilla +from extralit.client import Extralit try: from typing import Self @@ -47,8 +47,8 @@ class MetadataPropertyBase(Resource): _dataset: Optional["Dataset"] - def __init__(self, client: Optional[Argilla] = None) -> None: - client = client or Argilla._get_default() + def __init__(self, client: Optional[Extralit] = None) -> None: + client = client or Extralit._get_default() super().__init__(client=client, api=client.api.metadata) self._dataset = None @@ -90,7 +90,7 @@ def dataset(self, value: "Dataset") -> None: def __repr__(self) -> str: return f"{self.__class__.__name__}(name={self.name}, title={self.title}, visible_for_annotators={self.visible_for_annotators})" - def _with_client(self, client: "Argilla") -> "Self": + def _with_client(self, client: "Extralit") -> "Self": # TODO: Review and simplify. Maybe only one of them is required self._client = client self._api = self._client.api.metadata @@ -105,7 +105,7 @@ def __init__( options: Optional[List[Any]] = None, title: Optional[str] = None, visible_for_annotators: Optional[bool] = True, - client: Optional[Argilla] = None, + client: Optional[Extralit] = None, ) -> None: """Create a metadata field with terms settings. @@ -156,7 +156,7 @@ def __init__( max: Optional[float] = None, title: Optional[str] = None, visible_for_annotators: Optional[bool] = True, - client: Optional[Argilla] = None, + client: Optional[Extralit] = None, ) -> None: """Create a metadata field with float settings. @@ -217,7 +217,7 @@ def __init__( max: Optional[int] = None, title: Optional[str] = None, visible_for_annotators: Optional[bool] = True, - client: Optional[Argilla] = None, + client: Optional[Extralit] = None, ) -> None: """Create a metadata field with integer settings. diff --git a/extralit/src/extralit/settings/_question.py b/extralit/src/extralit/settings/_question.py index 95e6e5933..88826c2a0 100644 --- a/extralit/src/extralit/settings/_question.py +++ b/extralit/src/extralit/settings/_question.py @@ -14,7 +14,7 @@ from typing import Dict, List, Literal, Optional, Union, TYPE_CHECKING -from extralit import Argilla +from extralit import Extralit from extralit._api import QuestionsAPI from extralit._models._settings._questions import ( QuestionModel, @@ -61,9 +61,9 @@ def __init__( title: Optional[str] = None, required: Optional[bool] = True, description: Optional[str] = None, - _client: Optional[Argilla] = None, + _client: Optional[Extralit] = None, ): - client = _client or Argilla._get_default() + client = _client or Extralit._get_default() super().__init__(api=client.api.questions, client=client) @@ -98,7 +98,7 @@ def dataset(self, value: "Dataset") -> None: self._model.dataset_id = self._dataset.id self._with_client(self._dataset._client) - def _with_client(self, client: "Argilla") -> "Self": + def _with_client(self, client: "Extralit") -> "Self": # TODO: Review and simplify. Maybe only one of them is required self._client = client self._api = self._client.api.questions @@ -146,7 +146,7 @@ def __init__( required: bool = True, dynamic: bool = False, visible_labels: Optional[int] = None, - client: Optional[Argilla] = None, + client: Optional[Extralit] = None, ) -> None: """ Define a new label question for `Settings` of a `Dataset`. A label \ question is a question where the user can select one label from \ @@ -213,7 +213,7 @@ def __init__( title: Optional[str] = None, description: Optional[str] = None, required: bool = True, - client: Optional[Argilla] = None, + client: Optional[Extralit] = None, ) -> None: """Create a new multi-label question for `Settings` of a `Dataset`. A \ multi-label question is a question where the user can select multiple \ @@ -263,7 +263,7 @@ def __init__( required: bool = True, use_markdown: bool = False, use_table: bool = False, - client: Optional[Argilla] = None, + client: Optional[Extralit] = None, ) -> None: """Create a new text question for `Settings` of a `Dataset`. A text question \ is a question where the user can input text. @@ -302,7 +302,7 @@ def __init__( title: Optional[str] = None, description: Optional[str] = None, required: bool = True, - client: Optional[Argilla] = None, + client: Optional[Extralit] = None, ) -> None: """Create a new rating question for `Settings` of a `Dataset`. A rating question \ is a question where the user can select a value from a sequential list of options. @@ -348,7 +348,7 @@ def __init__( title: Optional[str] = None, description: Optional[str] = None, required: bool = True, - client: Optional[Argilla] = None, + client: Optional[Extralit] = None, ) -> None: """Create a new ranking question for `Settings` of a `Dataset`. A ranking question \ is a question where the user can rank a list of options. @@ -397,7 +397,7 @@ def __init__( title: Optional[str] = None, description: Optional[str] = None, required: bool = True, - client: Optional[Argilla] = None, + client: Optional[Extralit] = None, ): """ Create a new span question for `Settings` of a `Dataset`. A span question \ is a question where the user can select a section of text within a text field \ @@ -480,7 +480,7 @@ def __init__( title: Optional[str] = None, description: Optional[str] = None, required: bool = True, - client: Optional[Argilla] = None, + client: Optional[Extralit] = None, ): """ Create a new table question for `Settings` of a `Dataset`. A table question \ is a question where the user can input data in a tabular format. diff --git a/extralit/src/extralit/settings/_vector.py b/extralit/src/extralit/settings/_vector.py index 31bea379c..3cb78d299 100644 --- a/extralit/src/extralit/settings/_vector.py +++ b/extralit/src/extralit/settings/_vector.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ from extralit._api._vectors import VectorsAPI from extralit._models import VectorFieldModel from extralit._resource import Resource -from extralit.client import Argilla +from extralit.client import Extralit if TYPE_CHECKING: from extralit import Dataset @@ -37,7 +37,7 @@ def __init__( name: str, dimensions: int, title: Optional[str] = None, - _client: Optional["Argilla"] = None, + _client: Optional["Extralit"] = None, ) -> None: """Vector field for use in Argilla `Dataset` `Settings` @@ -46,7 +46,7 @@ def __init__( dimensions (int): The number of dimensions in the vector title (Optional[str]): The title of the vector to be shown in the UI. """ - client = _client or Argilla._get_default() + client = _client or Extralit._get_default() super().__init__(api=client.api.vectors, client=client) self._model = VectorFieldModel(name=name, title=title, dimensions=dimensions) self._dataset = None @@ -100,7 +100,7 @@ def from_dict(cls, data: dict) -> "VectorField": model = VectorFieldModel(**data) return cls.from_model(model=model) - def _with_client(self, client: "Argilla") -> "VectorField": + def _with_client(self, client: "Extralit") -> "VectorField": # TODO: Review and simplify. Maybe only one of them is required self._client = client self._api = self._client.api.vectors diff --git a/extralit/src/extralit/users/_resource.py b/extralit/src/extralit/users/_resource.py index 93ef41825..faffd95cb 100644 --- a/extralit/src/extralit/users/_resource.py +++ b/extralit/src/extralit/users/_resource.py @@ -20,7 +20,7 @@ from extralit._resource import Resource if TYPE_CHECKING: - from extralit.client.core import Argilla + from extralit.client.core import Extralit from extralit.workspaces._resource import Workspace @@ -48,7 +48,7 @@ def __init__( role: Optional[str] = None, password: Optional[str] = None, id: Optional[UUID] = None, - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, _model: Optional[UserModel] = None, ) -> None: """Initializes a User object with a client and a username @@ -65,9 +65,9 @@ def __init__( Returns: User: The initialized user object """ - from extralit.client.core import Argilla + from extralit.client.core import Extralit - client = client or Argilla._get_default() + client = client or Extralit._get_default() super().__init__(client=client, api=client.api.users) if _model is None: diff --git a/extralit/src/extralit/v1/__init__.py b/extralit/src/extralit/v1/__init__.py deleted file mode 100644 index 2a7de0550..000000000 --- a/extralit/src/extralit/v1/__init__.py +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright 2024-present, Argilla, Inc. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import warnings - -try: - from argilla_v1 import * # noqa -except ModuleNotFoundError as ex: - raise Exception( - 'The package argilla-v1 is not installed. Please install it by typing: pip install "argilla[legacy]"', - ) from ex - - -def deprecation(message: str): - warnings.warn(message, DeprecationWarning, stacklevel=2) - - -deprecation( - "The module `argilla_sdk.v1` has been include for migration purposes. " - "It's deprecated and will be removed in the future." -) diff --git a/extralit/src/extralit/webhooks/_event.py b/extralit/src/extralit/webhooks/_event.py index 5f02e4c96..a681a3d69 100644 --- a/extralit/src/extralit/webhooks/_event.py +++ b/extralit/src/extralit/webhooks/_event.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -23,7 +23,7 @@ from extralit._models import RecordModel, UserResponseModel, WorkspaceModel, EventType if TYPE_CHECKING: - from extralit import Argilla + from extralit import Extralit __all__ = ["RecordEvent", "DatasetEvent", "UserResponseEvent", "WebhookEvent"] @@ -93,7 +93,7 @@ class WebhookEvent(BaseModel): timestamp: datetime data: dict - def parsed(self, client: "Argilla") -> Union[RecordEvent, DatasetEvent, UserResponseEvent, "WebhookEvent"]: + def parsed(self, client: "Extralit") -> Union[RecordEvent, DatasetEvent, UserResponseEvent, "WebhookEvent"]: """ Parse the webhook event. @@ -134,7 +134,7 @@ def parsed(self, client: "Argilla") -> Union[RecordEvent, DatasetEvent, UserResp return self @classmethod - def _parse_dataset_from_webhook_data(cls, data: dict, client: "Argilla") -> Dataset: + def _parse_dataset_from_webhook_data(cls, data: dict, client: "Extralit") -> Dataset: workspace = Workspace.from_model(WorkspaceModel.model_validate(data["workspace"]), client=client) # TODO: Parse settings from the data # settings = Settings._from_dict(data) @@ -144,27 +144,27 @@ def _parse_dataset_from_webhook_data(cls, data: dict, client: "Argilla") -> Data try: dataset.get() - except ArgillaAPIError as _: + except ArgillaAPIError: # TODO: Show notification pass finally: return dataset @classmethod - def _parse_record_from_webhook_data(cls, data: dict, client: "Argilla") -> Record: + def _parse_record_from_webhook_data(cls, data: dict, client: "Extralit") -> Record: dataset = cls._parse_dataset_from_webhook_data(data["dataset"], client) record = Record.from_model(RecordModel.model_validate(data), dataset=dataset) try: record.get() - except ArgillaAPIError as _: + except ArgillaAPIError: # TODO: Show notification pass finally: return record @classmethod - def _parse_response_from_webhook_data(cls, data: dict, client: "Argilla") -> UserResponse: + def _parse_response_from_webhook_data(cls, data: dict, client: "Extralit") -> UserResponse: record = cls._parse_record_from_webhook_data(data["record"], client) # TODO: Link the user resource to the response diff --git a/extralit/src/extralit/webhooks/_helpers.py b/extralit/src/extralit/webhooks/_helpers.py index bcb510cde..cc29a88f4 100644 --- a/extralit/src/extralit/webhooks/_helpers.py +++ b/extralit/src/extralit/webhooks/_helpers.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ from typing import TYPE_CHECKING, Optional, Callable, Union, List import extralit as rg -from extralit import Argilla +from extralit import Extralit from extralit.webhooks._handler import WebhookHandler from extralit.webhooks._resource import Webhook @@ -62,7 +62,7 @@ def _webhook_url_for_func(func: Callable) -> str: def webhook_listener( events: Union[str, List[str]], description: Optional[str] = None, - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, server: Optional["FastAPI"] = None, raw_event: bool = False, ) -> Callable: @@ -81,7 +81,7 @@ def webhook_listener( """ - client = client or rg.Argilla._get_default() + client = client or rg.Extralit._get_default() server = server or get_webhook_server() if isinstance(events, str): diff --git a/extralit/src/extralit/webhooks/_resource.py b/extralit/src/extralit/webhooks/_resource.py index 3874e76f2..34f212ca6 100644 --- a/extralit/src/extralit/webhooks/_resource.py +++ b/extralit/src/extralit/webhooks/_resource.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. from typing import List, Optional -from extralit import Argilla +from extralit import Extralit from extralit._api._webhooks import WebhookModel, WebhooksAPI from extralit._models import EventType from extralit._resource import Resource @@ -34,8 +34,8 @@ class Webhook(Resource): _model: WebhookModel _api: WebhooksAPI - def __init__(self, url: str, events: List[EventType], description: Optional[str] = None, _client: Argilla = None): - client = _client or Argilla._get_default() + def __init__(self, url: str, events: List[EventType], description: Optional[str] = None, _client: Extralit = None): + client = _client or Extralit._get_default() api = client.api.webhooks events = events or [] @@ -85,13 +85,13 @@ def secret(self) -> str: return self._model.secret @classmethod - def from_model(cls, model: WebhookModel, client: Optional["Argilla"] = None) -> "Webhook": + def from_model(cls, model: WebhookModel, client: Optional["Extralit"] = None) -> "Webhook": instance = cls(url=model.url, events=model.events, _client=client) instance._model = model return instance - def _with_client(self, client: "Argilla") -> "Webhook": + def _with_client(self, client: "Extralit") -> "Webhook": self._client = client self._api = client.api.webhooks diff --git a/extralit/src/extralit/workspaces/_resource.py b/extralit/src/extralit/workspaces/_resource.py index 8ed876a4c..b37fa3a6e 100644 --- a/extralit/src/extralit/workspaces/_resource.py +++ b/extralit/src/extralit/workspaces/_resource.py @@ -22,7 +22,7 @@ from extralit._helpers import LoggingMixin from extralit._models import WorkspaceModel from extralit._resource import Resource -from extralit.client import Argilla +from extralit.client import Extralit if TYPE_CHECKING: from uuid import UUID @@ -52,7 +52,7 @@ def __init__( self, name: Optional[str] = None, id: Optional["UUID"] = None, - client: Optional["Argilla"] = None, + client: Optional["Extralit"] = None, ) -> None: """Initializes a Workspace object with a client and a name or id @@ -64,7 +64,7 @@ def __init__( Returns: Workspace: The initialized workspace object """ - client = client or Argilla._get_default() + client = client or Extralit._get_default() super().__init__(client=client, api=client.api.workspaces) self._model = WorkspaceModel(name=name, id=id) @@ -258,7 +258,7 @@ def update_schemas( return self._api.update_schemas(self.name, schemas, check_existing, prefix) @classmethod - def from_model(cls, model: WorkspaceModel, client: Argilla) -> "Workspace": + def from_model(cls, model: WorkspaceModel, client: Extralit) -> "Workspace": instance = cls(name=model.name, id=model.id, client=client) instance._model = model diff --git a/extralit/tests/integration/conftest.py b/extralit/tests/integration/conftest.py index 8d4ebaaeb..cc6934c4c 100644 --- a/extralit/tests/integration/conftest.py +++ b/extralit/tests/integration/conftest.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,12 +16,12 @@ import pytest import extralit as rg -from extralit import Argilla, Workspace +from extralit import Extralit, Workspace @pytest.fixture(scope="session") -def client() -> rg.Argilla: - client = rg.Argilla() +def client() -> rg.Extralit: + client = rg.Extralit() if len(list(client.workspaces)) == 0: client.workspaces.add(rg.Workspace(name=f"test_{uuid.uuid4()}")) @@ -31,7 +31,7 @@ def client() -> rg.Argilla: _cleanup(client) -def _cleanup(client: rg.Argilla): +def _cleanup(client: rg.Extralit): for dataset in client.datasets: if dataset.name.startswith("test_"): dataset.delete() @@ -59,7 +59,7 @@ def username() -> str: @pytest.fixture -def workspace(client: Argilla) -> Workspace: +def workspace(client: Extralit) -> Workspace: ws_name = f"test-{uuid.uuid4()}" workspace = client.workspaces(ws_name) diff --git a/extralit/tests/integration/test_add_records.py b/extralit/tests/integration/test_add_records.py index 7a3c86f44..247447910 100644 --- a/extralit/tests/integration/test_add_records.py +++ b/extralit/tests/integration/test_add_records.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ import extralit as rg import pytest -from extralit import Argilla, Workspace +from extralit import Extralit, Workspace from extralit._exceptions._responses import RecordResponsesError from extralit._exceptions._suggestions import RecordSuggestionsError @@ -72,7 +72,7 @@ def test_add_records(client): assert dataset_records[2].fields["text"] == mock_data[2]["text"] -def test_add_dict_records(client: Argilla, dataset_name: str): +def test_add_dict_records(client: Extralit, dataset_name: str): ws_name = "new_ws" ws = client.workspaces(ws_name) or Workspace(name=ws_name).create() @@ -569,7 +569,7 @@ def test_add_record_resources(client): assert dataset_records[2].suggestions["topics"].score == [0.9, 0.8] -def test_add_record_with_chat_field(client: rg.Argilla, dataset_name: str): +def test_add_record_with_chat_field(client: rg.Extralit, dataset_name: str): mock_resources = [ rg.Record( fields={ @@ -620,7 +620,7 @@ def test_add_record_with_chat_field(client: rg.Argilla, dataset_name: str): assert dataset.name == dataset_name -def test_add_records_with_optional_chat_field(client: rg.Argilla, dataset_name: str): +def test_add_records_with_optional_chat_field(client: rg.Extralit, dataset_name: str): mock_resources = [ rg.Record( fields={ @@ -655,7 +655,7 @@ def test_add_records_with_optional_chat_field(client: rg.Argilla, dataset_name: assert dataset.name == dataset_name -def test_add_records_with_responses_and_same_schema_name(client: Argilla, username: str): +def test_add_records_with_responses_and_same_schema_name(client: Extralit, username: str): mock_dataset_name = f"test_modify_record_responses_locally {uuid.uuid4()}" mock_data = [ { @@ -706,7 +706,7 @@ def test_add_records_with_responses_and_same_schema_name(client: Argilla, userna assert dataset_records[1].responses["label"][0].user_id == user.id -def test_add_records_objects_with_responses(client: Argilla, username: str): +def test_add_records_objects_with_responses(client: Extralit, username: str): mock_dataset_name = f"test_modify_record_responses_locally {uuid.uuid4()}" settings = rg.Settings( @@ -777,7 +777,7 @@ def test_add_records_objects_with_responses(client: Argilla, username: str): assert dataset_records[3].responses["comment"][0].status == "draft" -def test_add_records_with_boolean_metadata(client: Argilla, dataset_name: str): +def test_add_records_with_boolean_metadata(client: Extralit, dataset_name: str): settings = rg.Settings( fields=[rg.TextField(name="text")], metadata=[rg.TermsMetadataProperty(name="boolean", options=[True, False])], diff --git a/extralit/tests/integration/test_cli_commands.py b/extralit/tests/integration/test_cli_commands.py index 8f78dcb82..c3f1677a5 100644 --- a/extralit/tests/integration/test_cli_commands.py +++ b/extralit/tests/integration/test_cli_commands.py @@ -19,7 +19,7 @@ import pytest -from extralit import Argilla, Workspace +from extralit import Extralit, Workspace @pytest.fixture @@ -29,7 +29,7 @@ def test_workspace_name(): @pytest.fixture -def test_workspace(client: Argilla, test_workspace_name): +def test_workspace(client: Extralit, test_workspace_name): workspace = Workspace(name=test_workspace_name).create() yield workspace @@ -155,7 +155,7 @@ def test_documents_add_and_list_command(self, test_workspace): assert list_result.returncode == 0 assert test_url[:10] in list_result.stdout - def test_schemas_list_command(self, test_workspace, client: Argilla): + def test_schemas_list_command(self, test_workspace, client: Extralit): """Test the 'schemas list' command.""" # Ensure the CLI is logged in for schemas commands login_result = run_cli_command(f"extralit login --api-url {client.api_url} --api-key {client.api_key}") @@ -166,7 +166,7 @@ def test_schemas_list_command(self, test_workspace, client: Argilla): assert result.returncode == 0, f"\n--- CLI stdout ---\n{result.stdout}\n--- CLI stderr ---\n{result.stderr}\n" assert "No schemas found" in result.stdout - def test_schemas_download_command(self, test_workspace, client: Argilla): + def test_schemas_download_command(self, test_workspace, client: Extralit): """Test the 'schemas download' command.""" with tempfile.TemporaryDirectory() as temp_dir: login_result = run_cli_command(f"extralit login --api-url {client.api_url} --api-key {client.api_key}") diff --git a/extralit/tests/integration/test_client.py b/extralit/tests/integration/test_client.py index 4af2a1c07..5597dc3e7 100644 --- a/extralit/tests/integration/test_client.py +++ b/extralit/tests/integration/test_client.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,12 +16,12 @@ import pytest -from extralit import Argilla, Dataset, TextField, TextQuestion, Settings, User, Workspace +from extralit import Extralit, Dataset, TextField, TextQuestion, Settings, User, Workspace from extralit._exceptions import ArgillaError @pytest.fixture -def dataset(client: Argilla) -> Dataset: +def dataset(client: Extralit) -> Dataset: return Dataset( name=f"test_dataset{uuid.uuid4()}", settings=Settings(fields=[TextField(name="text")], questions=[TextQuestion(name="question")]), @@ -30,7 +30,7 @@ def dataset(client: Argilla) -> Dataset: @pytest.fixture -def user(client: Argilla) -> User: +def user(client: Extralit) -> User: user = User(username="test_user", password="test password").create() user.password = None # to align with GET user result @@ -38,13 +38,13 @@ def user(client: Argilla) -> User: @pytest.fixture -def workspace(client: Argilla) -> Workspace: +def workspace(client: Extralit) -> Workspace: return Workspace(name=f"test_workspace{uuid.uuid4()}").create() # TODO: We can move this test suite to tests/unit once we have a mock client implementation class TestClient: - def test_get_resources(self, client: Argilla, workspace: Workspace, user: User, dataset: Dataset): + def test_get_resources(self, client: Extralit, workspace: Workspace, user: User, dataset: Dataset): assert client.workspaces(name=workspace.name) == workspace assert client.workspaces(id=workspace.id) == workspace assert client.workspaces(id=str(workspace.id)) == workspace @@ -60,7 +60,7 @@ def test_get_resources(self, client: Argilla, workspace: Workspace, user: User, assert client.datasets(id=str(dataset.id)) == dataset assert client.datasets(id=str(dataset.id), name="skip this name") == dataset - def test_get_resources_warnings(self, client: Argilla): + def test_get_resources_warnings(self, client: Extralit): with pytest.warns(UserWarning, match="Workspace with id"): assert client.workspaces(id=uuid.uuid4()) is None @@ -79,7 +79,7 @@ def test_get_resources_warnings(self, client: Argilla): with pytest.warns(UserWarning, match="Dataset with name"): assert client.datasets(name="missing") is None - def test_get_resource_with_missing_args(self, client: Argilla): + def test_get_resource_with_missing_args(self, client: Extralit): with pytest.raises(ArgillaError): client.workspaces() @@ -91,14 +91,14 @@ def test_get_resource_with_missing_args(self, client: Argilla): def test_init_with_missing_api_url(self): with pytest.raises(ArgillaError): - Argilla(api_url=None) + Extralit(api_url=None) with pytest.raises(ArgillaError): - Argilla(api_url="") + Extralit(api_url="") def test_init_with_missing_api_key(self): with pytest.raises(ArgillaError): - Argilla(api_key=None) + Extralit(api_key=None) with pytest.raises(ArgillaError): - Argilla(api_key="") + Extralit(api_key="") diff --git a/extralit/tests/integration/test_create_datasets.py b/extralit/tests/integration/test_create_datasets.py index 4e9037725..90645ce1e 100644 --- a/extralit/tests/integration/test_create_datasets.py +++ b/extralit/tests/integration/test_create_datasets.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. from extralit import ( - Argilla, + Extralit, Dataset, ChatField, Settings, @@ -30,7 +30,7 @@ class TestCreateDatasets: - def test_create_dataset(self, client: Argilla, dataset_name: str): + def test_create_dataset(self, client: Extralit, dataset_name: str): dataset = Dataset( name=dataset_name, settings=Settings( @@ -52,7 +52,7 @@ def test_create_dataset(self, client: Argilla, dataset_name: str): assert created_dataset.settings == dataset.settings assert created_dataset.settings.distribution == TaskDistribution(min_submitted=1) - def test_create_dataset_with_optional_fields(self, client: Argilla, dataset_name: str): + def test_create_dataset_with_optional_fields(self, client: Extralit, dataset_name: str): dataset = Dataset( name=dataset_name, settings=Settings( @@ -69,7 +69,7 @@ def test_create_dataset_with_optional_fields(self, client: Argilla, dataset_name created_dataset = client.datasets(name=dataset_name) assert created_dataset.settings.fields["optional"].required is False - def test_create_multiple_dataset_with_same_settings(self, client: Argilla, dataset_name: str): + def test_create_multiple_dataset_with_same_settings(self, client: Extralit, dataset_name: str): settings = Settings( fields=[TextField(name="text")], questions=[RatingQuestion(name="question", values=[1, 2, 3, 4, 5])], @@ -92,7 +92,7 @@ def test_create_multiple_dataset_with_same_settings(self, client: Argilla, datas assert schema["question"].name == "question" assert schema["question"].values == [1, 2, 3, 4, 5] - def test_create_dataset_from_existing_dataset(self, client: Argilla, dataset_name: str): + def test_create_dataset_from_existing_dataset(self, client: Extralit, dataset_name: str): dataset = Dataset( name=dataset_name, settings=Settings( @@ -114,7 +114,7 @@ def test_create_dataset_from_existing_dataset(self, client: Argilla, dataset_nam assert schema["question"].name == "question" assert schema["question"].values == [1, 2, 3, 4, 5] - def test_copy_datasets_from_different_clients(self, client: Argilla, dataset_name: str): + def test_copy_datasets_from_different_clients(self, client: Extralit, dataset_name: str): dataset = Dataset( name=dataset_name, settings=Settings( @@ -124,7 +124,7 @@ def test_copy_datasets_from_different_clients(self, client: Argilla, dataset_nam client=client, ).create() - new_client = Argilla() + new_client = Extralit() new_ws = Workspace("test_copy_workspace") new_client.workspaces.add(new_ws) @@ -145,7 +145,7 @@ def test_copy_datasets_from_different_clients(self, client: Argilla, dataset_nam for question in new_dataset.settings.questions: assert question.name == "question" - def test_create_a_dataset_copy(self, client: Argilla, dataset_name: str): + def test_create_a_dataset_copy(self, client: Extralit, dataset_name: str): dataset = Dataset( name=dataset_name, settings=Settings( @@ -193,7 +193,7 @@ def test_create_a_dataset_copy(self, client: Argilla, dataset_name: str): assert dataset.distribution == new_dataset.distribution - def test_create_dataset_with_custom_task_distribution(self, client: Argilla, dataset_name: str): + def test_create_dataset_with_custom_task_distribution(self, client: Extralit, dataset_name: str): task_distribution = TaskDistribution(min_submitted=4) settings = Settings( @@ -206,7 +206,7 @@ def test_create_dataset_with_custom_task_distribution(self, client: Argilla, dat assert client.api.datasets.exists(dataset.id) assert dataset.settings.distribution == task_distribution - def test_create_dataset_with_custom_field(self, client: Argilla, dataset_name: str): + def test_create_dataset_with_custom_field(self, client: Extralit, dataset_name: str): dataset = Dataset( name=dataset_name, settings=Settings( diff --git a/extralit/tests/integration/test_dataset_workspace.py b/extralit/tests/integration/test_dataset_workspace.py index e2fed3188..83016d743 100644 --- a/extralit/tests/integration/test_dataset_workspace.py +++ b/extralit/tests/integration/test_dataset_workspace.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import random -import uuid import pytest @@ -22,7 +20,7 @@ @pytest.fixture -def dataset(client: rg.Argilla, dataset_name: str): +def dataset(client: rg.Extralit, dataset_name: str): ws = client.workspaces[0] dataset = rg.Dataset( name=dataset_name, @@ -42,7 +40,7 @@ def dataset(client: rg.Argilla, dataset_name: str): dataset.delete() -def test_dataset_with_workspace(client: rg.Argilla, dataset_name: str): +def test_dataset_with_workspace(client: rg.Extralit, dataset_name: str): ws = client.workspaces[0] dataset = rg.Dataset( name=dataset_name, @@ -63,7 +61,7 @@ def test_dataset_with_workspace(client: rg.Argilla, dataset_name: str): assert dataset.workspace == ws -def test_dataset_with_workspace_name(client: rg.Argilla, dataset_name: str): +def test_dataset_with_workspace_name(client: rg.Extralit, dataset_name: str): ws = client.workspaces[0] dataset = rg.Dataset( name=dataset_name, @@ -85,7 +83,7 @@ def test_dataset_with_workspace_name(client: rg.Argilla, dataset_name: str): assert dataset.workspace == ws -def test_dataset_with_incorrect_workspace_name(client: rg.Argilla, dataset_name: str): +def test_dataset_with_incorrect_workspace_name(client: rg.Extralit, dataset_name: str): with pytest.raises(expected_exception=NotFoundError): rg.Dataset( name=dataset_name, @@ -102,7 +100,7 @@ def test_dataset_with_incorrect_workspace_name(client: rg.Argilla, dataset_name: ).create() -def test_dataset_with_default_workspace(client: rg.Argilla, dataset_name: str): +def test_dataset_with_default_workspace(client: rg.Extralit, dataset_name: str): dataset = rg.Dataset( name=dataset_name, settings=rg.Settings( @@ -121,21 +119,21 @@ def test_dataset_with_default_workspace(client: rg.Argilla, dataset_name: str): assert dataset.workspace == client.workspaces[0] -def test_retrieving_dataset(client: rg.Argilla, dataset: rg.Dataset): +def test_retrieving_dataset(client: rg.Extralit, dataset: rg.Dataset): ws = client.workspaces[0] dataset = client.datasets(dataset.name, workspace=ws) assert isinstance(dataset, rg.Dataset) assert client.api.datasets.exists(dataset.id) -def test_retrieving_dataset_on_name(client: rg.Argilla, dataset: rg.Dataset): +def test_retrieving_dataset_on_name(client: rg.Extralit, dataset: rg.Dataset): ws = client.workspaces[0] dataset = client.datasets(dataset.name, workspace=ws.name) assert isinstance(dataset, rg.Dataset) assert client.api.datasets.exists(dataset.id) -def test_retrieving_dataset_on_default(client: rg.Argilla, dataset: rg.Dataset): +def test_retrieving_dataset_on_default(client: rg.Extralit, dataset: rg.Dataset): dataset = client.datasets(dataset.name) assert isinstance(dataset, rg.Dataset) assert client.api.datasets.exists(dataset.id) diff --git a/extralit/tests/integration/test_delete_records.py b/extralit/tests/integration/test_delete_records.py index a3fc9c6bc..11e09a91d 100644 --- a/extralit/tests/integration/test_delete_records.py +++ b/extralit/tests/integration/test_delete_records.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ @pytest.fixture -def dataset(client: rg.Argilla) -> rg.Dataset: +def dataset(client: rg.Extralit) -> rg.Dataset: workspace = client.workspaces[0] mock_dataset_name = f"test_delete_records_{uuid.uuid1()}" settings = rg.Settings( @@ -42,7 +42,7 @@ def dataset(client: rg.Argilla) -> rg.Dataset: return dataset -def test_delete_records(client: rg.Argilla, dataset: rg.Dataset): +def test_delete_records(client: rg.Extralit, dataset: rg.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -73,7 +73,7 @@ def test_delete_records(client: rg.Argilla, dataset: rg.Dataset): assert record.id not in [record.id for record in records_to_delete] -def test_delete_single_record(client: rg.Argilla, dataset: rg.Dataset): +def test_delete_single_record(client: rg.Extralit, dataset: rg.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -103,7 +103,7 @@ def test_delete_single_record(client: rg.Argilla, dataset: rg.Dataset): assert mock_data[1]["id"] not in [record.id for record in dataset_records] -def test_delete_records_with_batch_support(client: rg.Argilla, dataset: rg.Dataset): +def test_delete_records_with_batch_support(client: rg.Extralit, dataset: rg.Dataset): records = [rg.Record(id=uuid.uuid4(), fields={"text": f"Field for record {i}"}) for i in range(0, 1000)] dataset.records.log(records) diff --git a/extralit/tests/integration/test_empty_settings.py b/extralit/tests/integration/test_empty_settings.py index 9bee2e98a..8a59eaf5e 100644 --- a/extralit/tests/integration/test_empty_settings.py +++ b/extralit/tests/integration/test_empty_settings.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,11 +17,11 @@ import pytest -from extralit import Argilla, Dataset, Settings, Workspace, TextQuestion, TextField +from extralit import Extralit, Dataset, Settings, Workspace, TextQuestion, TextField from extralit._exceptions import SettingsError -def test_dataset_empty_settings(client: Argilla, workspace: Workspace): +def test_dataset_empty_settings(client: Extralit, workspace: Workspace): name = "".join(random.choices(ascii_lowercase, k=16)) settings = Settings() dataset = Dataset( @@ -34,7 +34,7 @@ def test_dataset_empty_settings(client: Argilla, workspace: Workspace): dataset.create() -def test_dataset_no_fields(client: Argilla, workspace: Workspace) -> None: +def test_dataset_no_fields(client: Extralit, workspace: Workspace) -> None: name = "".join(random.choices(ascii_lowercase, k=16)) settings = Settings( questions=[ @@ -51,7 +51,7 @@ def test_dataset_no_fields(client: Argilla, workspace: Workspace) -> None: dataset.create() -def test_dataset_no_questions(client: Argilla, workspace: Workspace) -> Dataset: +def test_dataset_no_questions(client: Extralit, workspace: Workspace) -> Dataset: name = "".join(random.choices(ascii_lowercase, k=16)) settings = Settings( fields=[ diff --git a/extralit/tests/integration/test_export_dataset.py b/extralit/tests/integration/test_export_dataset.py index 60ec93f77..eb0565196 100644 --- a/extralit/tests/integration/test_export_dataset.py +++ b/extralit/tests/integration/test_export_dataset.py @@ -167,7 +167,17 @@ def test_import_dataset_from_disk( @pytest.mark.flaky( - retries=_RETRIES, only_on=[BadRequestError, FileMetadataError, HfHubHTTPError, OSError, FileNotFoundError, ReadTimeout, ConnectTimeout, HTTPError] + retries=_RETRIES, + only_on=[ + BadRequestError, + FileMetadataError, + HfHubHTTPError, + OSError, + FileNotFoundError, + ReadTimeout, + ConnectTimeout, + HTTPError, + ], ) # Hub consistency CICD pipline @pytest.mark.skipif( not os.getenv("HF_TOKEN_ARGILLA_INTERNAL_TESTING"), @@ -249,7 +259,7 @@ def test_import_dataset_from_hub_using_settings( self, token: str, dataset: rg.Dataset, - client: rg.Argilla, + client: rg.Extralit, mock_data: List[dict[str, Any]], with_records_export: bool, with_records_import: bool, @@ -319,7 +329,7 @@ def test_import_dataset_from_hub_using_wrong_settings( self, token: str, dataset: rg.Dataset, - client: rg.Argilla, + client: rg.Extralit, mock_data: List[dict[str, Any]], with_records_export: bool, ): diff --git a/extralit/tests/integration/test_export_records.py b/extralit/tests/integration/test_export_records.py index 5e30680ee..3c85b2b18 100644 --- a/extralit/tests/integration/test_export_records.py +++ b/extralit/tests/integration/test_export_records.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,10 +13,8 @@ # limitations under the License. import json -import random import uuid from pathlib import Path -from string import ascii_lowercase from tempfile import TemporaryDirectory import pytest @@ -24,7 +22,7 @@ from datasets import Dataset as HFDataset import extralit as rg -from extralit import Argilla +from extralit import Extralit @pytest.fixture @@ -91,7 +89,7 @@ def mock_data(): ] -def test_export_records_dict_flattened(client: Argilla, dataset: rg.Dataset, mock_data): +def test_export_records_dict_flattened(client: Extralit, dataset: rg.Dataset, mock_data): dataset.records.log(records=mock_data) exported_records = dataset.records.to_dict(flatten=True) assert isinstance(exported_records, dict) @@ -101,7 +99,7 @@ def test_export_records_dict_flattened(client: Argilla, dataset: rg.Dataset, moc assert exported_records["text"] == ["Hello World, how are you?"] * 3 -def test_export_records_list_flattened(client: Argilla, dataset: rg.Dataset, mock_data): +def test_export_records_list_flattened(client: Extralit, dataset: rg.Dataset, mock_data): dataset.records.log(records=mock_data) exported_records = dataset.records.to_list(flatten=True) assert len(exported_records) == len(mock_data) @@ -115,7 +113,7 @@ def test_export_records_list_flattened(client: Argilla, dataset: rg.Dataset, moc assert exported_records[0]["label.suggestion.score"] is None -def test_export_record_list_with_filtered_records(client: Argilla, dataset: rg.Dataset, mock_data): +def test_export_record_list_with_filtered_records(client: Extralit, dataset: rg.Dataset, mock_data): dataset.records.log(records=mock_data) exported_records = dataset.records(query=rg.Query(query="hello")).to_list(flatten=True) assert len(exported_records) == len(mock_data) @@ -129,7 +127,7 @@ def test_export_record_list_with_filtered_records(client: Argilla, dataset: rg.D assert exported_records[0]["label.suggestion.score"] is None -def test_export_records_list_nested(client: Argilla, dataset: rg.Dataset, mock_data): +def test_export_records_list_nested(client: Extralit, dataset: rg.Dataset, mock_data): dataset.records.log(records=mock_data) exported_records = dataset.records.to_list(flatten=False) assert len(exported_records) == len(mock_data) @@ -138,7 +136,7 @@ def test_export_records_list_nested(client: Argilla, dataset: rg.Dataset, mock_d assert exported_records[0]["suggestions"]["label"]["score"] is None -def test_export_records_dict_nested(client: Argilla, dataset: rg.Dataset, mock_data): +def test_export_records_dict_nested(client: Extralit, dataset: rg.Dataset, mock_data): dataset.records.log(records=mock_data) exported_records = dataset.records.to_dict(flatten=False) assert isinstance(exported_records, dict) @@ -146,7 +144,7 @@ def test_export_records_dict_nested(client: Argilla, dataset: rg.Dataset, mock_d assert exported_records["suggestions"][0]["label"]["value"] == "positive" -def test_export_records_dict_nested_orient_index(client: Argilla, dataset: rg.Dataset, mock_data): +def test_export_records_dict_nested_orient_index(client: Extralit, dataset: rg.Dataset, mock_data): dataset.records.log(records=mock_data) exported_records = dataset.records.to_dict(flatten=False, orient="index") assert isinstance(exported_records, dict) diff --git a/extralit/tests/integration/test_import_features.py b/extralit/tests/integration/test_import_features.py index ad065332d..37c71b4e6 100644 --- a/extralit/tests/integration/test_import_features.py +++ b/extralit/tests/integration/test_import_features.py @@ -110,7 +110,7 @@ def test_import_records_from_datasets_with_classlabel( assert exported_dataset.features["label.suggestion"].names == ["positive", "negative"] assert exported_dataset["label.suggestion"] == [0, 1, 0] - def test_import_from_hub_with_upper_case_columns(self, client: rg.Argilla, token: str, dataset_name: str): + def test_import_from_hub_with_upper_case_columns(self, client: rg.Extralit, token: str, dataset_name: str): created_dataset = None try: created_dataset = rg.Dataset.from_hub( @@ -131,7 +131,7 @@ def test_import_from_hub_with_upper_case_columns(self, client: rg.Argilla, token assert created_dataset.settings.fields[0].name == "Text" assert list(created_dataset.records)[0].fields["Text"] == "Hello World, how are you?" - def test_import_from_hub_with_unlabelled_classes(self, client: rg.Argilla, token: str, dataset_name: str): + def test_import_from_hub_with_unlabelled_classes(self, client: rg.Extralit, token: str, dataset_name: str): created_dataset = None try: created_dataset = rg.Dataset.from_hub( @@ -151,7 +151,7 @@ def test_import_from_hub_with_unlabelled_classes(self, client: rg.Argilla, token assert created_dataset.settings.fields[0].name == "Text" assert list(created_dataset.records)[0].fields["Text"] == "Hello World, how are you?" - def test_import_with_row_id_as_record_id(self, client: rg.Argilla, token: str, dataset_name: str): + def test_import_with_row_id_as_record_id(self, client: rg.Extralit, token: str, dataset_name: str): created_dataset = None try: created_dataset = rg.Dataset.from_hub( diff --git a/extralit/tests/integration/test_list_records.py b/extralit/tests/integration/test_list_records.py index 9ffc6777d..152c01be2 100644 --- a/extralit/tests/integration/test_list_records.py +++ b/extralit/tests/integration/test_list_records.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,16 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -import random -from string import ascii_lowercase import pytest -from extralit import Argilla, Dataset, Settings, TextField, TextQuestion, Workspace, LabelQuestion +from extralit import Extralit, Dataset, Settings, TextField, TextQuestion, Workspace, LabelQuestion @pytest.fixture -def dataset(client: Argilla, workspace: Workspace, dataset_name: str) -> Dataset: +def dataset(client: Extralit, workspace: Workspace, dataset_name: str) -> Dataset: settings = Settings( fields=[TextField(name="text")], questions=[ @@ -40,7 +38,7 @@ def dataset(client: Argilla, workspace: Workspace, dataset_name: str) -> Dataset dataset.delete() -def test_list_records_with_start_offset(client: Argilla, dataset: Dataset): +def test_list_records_with_start_offset(client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "The record text field", "id": 1}, @@ -65,7 +63,7 @@ def test_list_records_with_start_offset(client: Argilla, dataset: Dataset): ] -def test_list_records_with_limit(client: Argilla, dataset: Dataset): +def test_list_records_with_limit(client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "The record text field", "id": 1}, @@ -103,7 +101,7 @@ def test_list_records_with_limit(client: Argilla, dataset: Dataset): ] -def test_list_records_with_limit_greater_than_batch_size(client: Argilla, dataset: Dataset): +def test_list_records_with_limit_greater_than_batch_size(client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "The record text field", "id": 1}, @@ -122,7 +120,7 @@ def test_list_records_with_limit_greater_than_batch_size(client: Argilla, datase @pytest.mark.parametrize("limit", [0, -1, -10]) -def test_list_records_with_invalid_limit(client: Argilla, dataset: Dataset, limit: int): +def test_list_records_with_invalid_limit(client: Extralit, dataset: Dataset, limit: int): dataset.records.log( [ {"text": "The record text field", "id": 1}, @@ -137,7 +135,7 @@ def test_list_records_with_invalid_limit(client: Argilla, dataset: Dataset, limi assert len(records) == 1 -def test_list_records_with_limit_greater_than_total(client: Argilla, dataset: Dataset): +def test_list_records_with_limit_greater_than_total(client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "The record text field", "id": 1}, @@ -152,7 +150,7 @@ def test_list_records_with_limit_greater_than_total(client: Argilla, dataset: Da assert len(records) == 5 -def test_get_record_by_id(client: Argilla, dataset: Dataset): +def test_get_record_by_id(client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "The record text field", "id": 1, "comment": "The comment", "sentiment": "positive"}, @@ -172,7 +170,7 @@ def test_get_record_by_id(client: Argilla, dataset: Dataset): assert record.responses["sentiment"][0].value == "positive" -def test_list_records_with_responses(client: Argilla, dataset: Dataset): +def test_list_records_with_responses(client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "The record text field", "id": 1, "comment": "The comment", "sentiment": "positive"}, @@ -194,7 +192,7 @@ def test_list_records_with_responses(client: Argilla, dataset: Dataset): assert records[1].responses["sentiment"][0].value == "negative" -def test_list_records_with_updated_at_and_inserted_at(client: Argilla, dataset: Dataset): +def test_list_records_with_updated_at_and_inserted_at(client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "The record text field", "id": 1}, diff --git a/extralit/tests/integration/test_listing_datasets.py b/extralit/tests/integration/test_listing_datasets.py index ef915bf57..26a22ddbc 100644 --- a/extralit/tests/integration/test_listing_datasets.py +++ b/extralit/tests/integration/test_listing_datasets.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,11 +12,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -from extralit import Argilla, Dataset, Settings, TextField, TextQuestion, Workspace, TaskDistribution +from extralit import Extralit, Dataset, Settings, TextField, TextQuestion, Workspace, TaskDistribution class TestDatasetsList: - def test_list_datasets(self, client: Argilla): + def test_list_datasets(self, client: Extralit): workspace = Workspace(name="test_workspace", client=client) workspace.create() @@ -34,7 +34,7 @@ def test_list_datasets(self, client: Argilla): if ds.name == "test_dataset": assert ds == dataset, "The dataset was not loaded properly" - def test_list_dataset_with_custom_task_distribution(self, client: Argilla, workspace: Workspace): + def test_list_dataset_with_custom_task_distribution(self, client: Extralit, workspace: Workspace): dataset = Dataset( name="test_dataset", workspace=workspace.name, diff --git a/extralit/tests/integration/test_manage_metadata.py b/extralit/tests/integration/test_manage_metadata.py index 746fe5c09..e293cceb0 100644 --- a/extralit/tests/integration/test_manage_metadata.py +++ b/extralit/tests/integration/test_manage_metadata.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,11 +15,11 @@ import pytest import extralit as rg -from extralit import Argilla, Dataset, Settings, TextField, Workspace, LabelQuestion +from extralit import Extralit, Dataset, Settings, TextField, Workspace, LabelQuestion @pytest.fixture -def dataset_with_metadata(client: Argilla, workspace: Workspace, dataset_name: str) -> Dataset: +def dataset_with_metadata(client: Extralit, workspace: Workspace, dataset_name: str) -> Dataset: settings = Settings( fields=[TextField(name="text")], questions=[LabelQuestion(name="label", labels=["positive", "negative"])], @@ -38,7 +38,7 @@ def dataset_with_metadata(client: Argilla, workspace: Workspace, dataset_name: s return dataset -def test_create_dataset_with_metadata(client: Argilla, workspace: Workspace, dataset_name: str) -> None: +def test_create_dataset_with_metadata(client: Extralit, workspace: Workspace, dataset_name: str) -> None: settings = Settings( fields=[TextField(name="text")], questions=[LabelQuestion(name="label", labels=["positive", "negative"])], @@ -68,7 +68,7 @@ def test_create_dataset_with_metadata(client: Argilla, workspace: Workspace, dat ], ) def test_create_dataset_with_numerical_metadata( - client: Argilla, workspace: Workspace, dataset_name: str, min, max, type + client: Extralit, workspace: Workspace, dataset_name: str, min, max, type ) -> None: settings = Settings( fields=[TextField(name="text")], diff --git a/extralit/tests/integration/test_manage_users.py b/extralit/tests/integration/test_manage_users.py index f6b7c3d9e..81f380e00 100644 --- a/extralit/tests/integration/test_manage_users.py +++ b/extralit/tests/integration/test_manage_users.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,36 +15,36 @@ import pytest -from extralit import User, Argilla, Workspace -from extralit._exceptions import UnprocessableEntityError, ConflictError +from extralit import User, Extralit, Workspace +from extralit._exceptions import UnprocessableEntityError class TestManageUsers: - def test_create_user(self, client: Argilla): + def test_create_user(self, client: Extralit): user = User(username=f"test_user_{uuid.uuid4()}", password="test_password") client.users.add(user) assert user.id is not None assert client.users(username=user.username).id == user.id - def test_create_user_with_id(self, client: Argilla): + def test_create_user_with_id(self, client: Extralit): user_id = uuid.uuid4() user = User(id=user_id, username=f"test_user_{uuid.uuid4()}", password="test_password") client.users.add(user) assert user.id is not None assert client.users(username=user.username).id == user_id - def test_create_user_without_password(self, client: Argilla): + def test_create_user_without_password(self, client: Extralit): user = User(username=f"test_user_{uuid.uuid4()}") with pytest.raises(expected_exception=UnprocessableEntityError): client.users.add(user) - def test_delete_user(self, client: Argilla): + def test_delete_user(self, client: Extralit): user = User(username=f"test_delete_user_{uuid.uuid4()}", password="test_password") client.users.add(user) user.delete() assert not client.api.users.exist(user.id) - def test_add_user_to_workspace(self, client: Argilla, workspace: Workspace): + def test_add_user_to_workspace(self, client: Extralit, workspace: Workspace): user = User(username=f"test_user_{uuid.uuid4()}", password="test_password") client.users.add(user) @@ -54,7 +54,7 @@ def test_add_user_to_workspace(self, client: Argilla, workspace: Workspace): user.add_to_workspace(workspace) assert user in workspace.users - def test_update_user(self, client: Argilla): + def test_update_user(self, client: Extralit): user = User(username=f"test_update_user_{uuid.uuid4()}", password="test_password") client.users.add(user) @@ -71,7 +71,7 @@ def test_update_user(self, client: Argilla): assert updated_user.last_name == "Updated Last Name" assert updated_user.role == "admin" - def test_update_user_role(self, client: Argilla): + def test_update_user_role(self, client: Extralit): user = User(username=f"test_update_user_{uuid.uuid4()}", password="test_password") client.users.add(user) @@ -83,7 +83,7 @@ def test_update_user_role(self, client: Argilla): updated_user = client.users(id=user.id) assert updated_user.role == "admin" - def test_update_user_with_duplicate_username(self, client: Argilla): + def test_update_user_with_duplicate_username(self, client: Extralit): user1 = User(username=f"test_user1_{uuid.uuid4()}", password="test_password") user2 = User(username=f"test_user2_{uuid.uuid4()}", password="test_password") client.users.add(user1) diff --git a/extralit/tests/integration/test_manage_workspaces.py b/extralit/tests/integration/test_manage_workspaces.py index c7a6644d9..4ebec9fca 100644 --- a/extralit/tests/integration/test_manage_workspaces.py +++ b/extralit/tests/integration/test_manage_workspaces.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,25 +13,25 @@ # limitations under the License. import uuid -from extralit import Argilla, Workspace, User +from extralit import Extralit, Workspace, User class TestWorkspacesManagement: - def test_create_workspace(self, client: Argilla): + def test_create_workspace(self, client: Extralit): workspace = Workspace(name=f"test_workspace{uuid.uuid4()}") client.workspaces.add(workspace) assert workspace in client.workspaces assert client.api.workspaces.exists(workspace.id) - def test_create_workspace_with_id(self, client: Argilla): + def test_create_workspace_with_id(self, client: Extralit): workspace_id = uuid.uuid4() workspace = Workspace(id=workspace_id, name=f"test_workspace{uuid.uuid4()}") client.workspaces.add(workspace) assert workspace in client.workspaces assert client.workspaces(workspace.name).id == workspace_id - def test_create_and_delete_workspace(self, client: Argilla): + def test_create_and_delete_workspace(self, client: Extralit): workspace = client.workspaces(name="test_workspace") if workspace: for dataset in workspace.datasets: @@ -44,7 +44,7 @@ def test_create_and_delete_workspace(self, client: Argilla): workspace.delete() assert not client.api.workspaces.exists(workspace.id) - def test_add_and_remove_users_to_workspace(self, client: Argilla, workspace: Workspace): + def test_add_and_remove_users_to_workspace(self, client: Extralit, workspace: Workspace): ws_name = "test_workspace" username = "test_user" diff --git a/extralit/tests/integration/test_publish_datasets.py b/extralit/tests/integration/test_publish_datasets.py index 7ce3bcf73..01cf7c1d7 100644 --- a/extralit/tests/integration/test_publish_datasets.py +++ b/extralit/tests/integration/test_publish_datasets.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ from extralit import ( - Argilla, + Extralit, Settings, TextField, TextQuestion, @@ -31,7 +31,7 @@ ) -def test_publish_dataset(client: "Argilla", dataset_name: str): +def test_publish_dataset(client: "Extralit", dataset_name: str): ws_name = "new_ws" new_ws = client.workspaces(ws_name) or Workspace(name=ws_name).create() diff --git a/extralit/tests/integration/test_query_records.py b/extralit/tests/integration/test_query_records.py index 4ed622127..121bc1675 100644 --- a/extralit/tests/integration/test_query_records.py +++ b/extralit/tests/integration/test_query_records.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,11 +18,11 @@ import pytest import extralit as rg -from extralit import Argilla, Dataset, Settings, TextField, Workspace, LabelQuestion +from extralit import Extralit, Dataset, Settings, TextField, Workspace, LabelQuestion @pytest.fixture -def dataset(client: Argilla, workspace: Workspace) -> Dataset: +def dataset(client: Extralit, workspace: Workspace) -> Dataset: name = "".join(random.choices(ascii_lowercase, k=16)) settings = Settings( fields=[TextField(name="text")], @@ -39,7 +39,7 @@ def dataset(client: Argilla, workspace: Workspace) -> Dataset: dataset.delete() -def test_query_records_by_text(client: Argilla, dataset: Dataset): +def test_query_records_by_text(client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "First record", "id": 1}, @@ -62,7 +62,7 @@ def test_query_records_by_text(client: Argilla, dataset: Dataset): assert len(records) == 2 -def test_query_records_by_suggestion_value(client: Argilla, dataset: Dataset): +def test_query_records_by_suggestion_value(client: Extralit, dataset: Dataset): data = [ { "text": "Hello World, how are you?", diff --git a/extralit/tests/integration/test_ranking_questions.py b/extralit/tests/integration/test_ranking_questions.py index dd2ddfbec..65e4ef441 100644 --- a/extralit/tests/integration/test_ranking_questions.py +++ b/extralit/tests/integration/test_ranking_questions.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,7 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import random import pytest @@ -20,7 +19,7 @@ @pytest.fixture -def dataset(client: rg.Argilla, dataset_name: str): +def dataset(client: rg.Extralit, dataset_name: str): ws = client.workspaces.default settings = rg.Settings( guidelines=f"The dataset guidelines", diff --git a/extralit/tests/integration/test_search_records.py b/extralit/tests/integration/test_search_records.py index 29bd5c254..35f640c73 100644 --- a/extralit/tests/integration/test_search_records.py +++ b/extralit/tests/integration/test_search_records.py @@ -18,7 +18,7 @@ import pytest from extralit import ( - Argilla, + Extralit, Workspace, Dataset, Settings, @@ -34,7 +34,7 @@ @pytest.fixture -def dataset(client: Argilla, workspace: Workspace, dataset_name: str) -> Dataset: +def dataset(client: Extralit, workspace: Workspace, dataset_name: str) -> Dataset: settings = Settings( fields=[TextField(name="text")], vectors=[VectorField(name="vector", dimensions=10)], @@ -57,7 +57,7 @@ def dataset(client: Argilla, workspace: Workspace, dataset_name: str) -> Dataset class TestSearchRecords: - def test_search_records_by_id(self, client: Argilla, dataset: Dataset): + def test_search_records_by_id(self, client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "The record text field", "id": 1}, @@ -69,7 +69,7 @@ def test_search_records_by_id(self, client: Argilla, dataset: Dataset): assert len(records) == 1 assert records[0].id == "1" - def test_search_records_by_server_id(self, client: Argilla, dataset: Dataset): + def test_search_records_by_server_id(self, client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "The record text field", "id": 1}, @@ -85,7 +85,7 @@ def test_search_records_by_server_id(self, client: Argilla, dataset: Dataset): assert len(records) == 1 assert records[0]._server_id == server_id - def test_search_records_by_inserted_at(self, client: Argilla, dataset: Dataset): + def test_search_records_by_inserted_at(self, client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "The record text field", "id": 1}, @@ -98,7 +98,7 @@ def test_search_records_by_inserted_at(self, client: Argilla, dataset: Dataset): assert records[0].id == "1" assert records[1].id == "2" - def test_search_records_by_updated_at(self, client: Argilla, dataset: Dataset): + def test_search_records_by_updated_at(self, client: Extralit, dataset: Dataset): dataset.records.log( [ {"text": "The record text field", "id": 1}, @@ -111,7 +111,7 @@ def test_search_records_by_updated_at(self, client: Argilla, dataset: Dataset): assert records[0].id == "1" assert records[1].id == "2" - def test_search_records_by_suggestion_agent(self, client: Argilla, dataset: Dataset): + def test_search_records_by_suggestion_agent(self, client: Extralit, dataset: Dataset): dataset.records.log( [ Record( @@ -132,7 +132,7 @@ def test_search_records_by_suggestion_agent(self, client: Argilla, dataset: Data assert len(records) == 1 assert records[0].id == "1" - def test_search_records_by_suggestion_type(self, client: Argilla, dataset: Dataset): + def test_search_records_by_suggestion_type(self, client: Extralit, dataset: Dataset): dataset.records.log( [ Record( @@ -153,7 +153,7 @@ def test_search_records_by_suggestion_type(self, client: Argilla, dataset: Datas assert len(records) == 1 assert records[0].id == "1" - def test_search_records_by_similar_value(self, client: Argilla, dataset: Dataset): + def test_search_records_by_similar_value(self, client: Extralit, dataset: Dataset): data = [ { "id": i, @@ -175,7 +175,7 @@ def test_search_records_by_similar_value(self, client: Argilla, dataset: Dataset assert len(records) == 1000 assert records[0][0].id == str(data[3]["id"]) - def test_search_records_by_least_similar_value(self, client: Argilla, dataset: Dataset): + def test_search_records_by_least_similar_value(self, client: Extralit, dataset: Dataset): data = [ { "id": i, @@ -200,7 +200,7 @@ def test_search_records_by_least_similar_value(self, client: Argilla, dataset: D assert records[0][0].id != str(data[3]["id"]) - def test_search_records_by_similar_record(self, client: Argilla, dataset: Dataset): + def test_search_records_by_similar_record(self, client: Extralit, dataset: Dataset): data = [ { "id": i, @@ -224,7 +224,7 @@ def test_search_records_by_similar_record(self, client: Argilla, dataset: Datase assert len(records) == 1000 assert records[0][0].id != str(record.id) - def test_search_records_by_least_similar_record(self, client: Argilla, dataset: Dataset): + def test_search_records_by_least_similar_record(self, client: Extralit, dataset: Dataset): data = [ { "id": i, diff --git a/extralit/tests/integration/test_update_dataset_settings.py b/extralit/tests/integration/test_update_dataset_settings.py index b660dcc45..1d67f4967 100644 --- a/extralit/tests/integration/test_update_dataset_settings.py +++ b/extralit/tests/integration/test_update_dataset_settings.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ TextField, ChatField, LabelQuestion, - Argilla, + Extralit, VectorField, FloatMetadataProperty, TermsMetadataProperty, @@ -42,7 +42,7 @@ def dataset(dataset_name: str): class TestUpdateDatasetSettings: - def test_update_settings(self, client: Argilla, dataset: Dataset): + def test_update_settings(self, client: Extralit, dataset: Dataset): settings = dataset.settings settings.fields["text"].use_markdown = True @@ -64,7 +64,7 @@ def test_update_settings(self, client: Argilla, dataset: Dataset): dataset = client.datasets(dataset.name) assert dataset.settings.vectors["vector"].title == "A new title for vector" - def test_update_question_title(self, client: Argilla, dataset: Dataset): + def test_update_question_title(self, client: Extralit, dataset: Dataset): question = dataset.settings.questions["label"] question.title = "A new title for label question" dataset.settings.update() @@ -73,14 +73,14 @@ def test_update_question_title(self, client: Argilla, dataset: Dataset): question = dataset.settings.questions["label"] assert question.title == "A new title for label question" - def test_update_distribution_settings(self, client: Argilla, dataset: Dataset): + def test_update_distribution_settings(self, client: Extralit, dataset: Dataset): dataset.settings.distribution.min_submitted = 100 dataset.update() dataset = client.datasets(dataset.name) assert dataset.settings.distribution.min_submitted == 100 - def test_remove_settings_property(self, client: Argilla, dataset: Dataset): + def test_remove_settings_property(self, client: Extralit, dataset: Dataset): dataset.settings.metadata.add(TermsMetadataProperty(name="metadata")) dataset.settings.vectors.add(VectorField(name="vector", dimensions=10)) dataset.update() diff --git a/extralit/tests/integration/test_update_records.py b/extralit/tests/integration/test_update_records.py index 9bc409738..74fd64bc6 100644 --- a/extralit/tests/integration/test_update_records.py +++ b/extralit/tests/integration/test_update_records.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,19 +12,15 @@ # See the License for the specific language governing permissions and # limitations under the License. -import random import uuid -from string import ascii_lowercase import pytest import extralit as rg -from extralit import Record -from extralit._models import RecordModel @pytest.fixture -def dataset(client: rg.Argilla, dataset_name: str) -> rg.Dataset: +def dataset(client: rg.Extralit, dataset_name: str) -> rg.Dataset: workspace = client.workspaces[0] settings = rg.Settings( allow_extra_metadata=True, @@ -46,7 +42,7 @@ def dataset(client: rg.Argilla, dataset_name: str) -> rg.Dataset: class TestUpdateRecords: - def test_update_records_fields(self, client: rg.Argilla, dataset: rg.Dataset): + def test_update_records_fields(self, client: rg.Extralit, dataset: rg.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -76,7 +72,7 @@ def test_update_records_fields(self, client: rg.Argilla, dataset: rg.Dataset): class TestUpdateSuggestions: - def test_update_records_suggestions_from_data(self, client: rg.Argilla, dataset: rg.Dataset): + def test_update_records_suggestions_from_data(self, client: rg.Extralit, dataset: rg.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -114,7 +110,7 @@ def test_update_records_suggestions_from_data(self, client: rg.Argilla, dataset: assert record.suggestions["label"].value == "positive" @pytest.mark.skip(reason="This test is failing because the backend expects the fields to be present in the data.") - def test_update_records_without_fields(self, client: rg.Argilla, dataset: rg.Dataset): + def test_update_records_without_fields(self, client: rg.Extralit, dataset: rg.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -143,7 +139,7 @@ def test_update_records_without_fields(self, client: rg.Argilla, dataset: rg.Dat for i, record in enumerate(dataset.records(with_suggestions=True)): assert record.suggestions["label"].value == updated_mock_data[i]["label"] - def test_update_records_add_suggestions(self, client: rg.Argilla, dataset: rg.Dataset): + def test_update_records_add_suggestions(self, client: rg.Extralit, dataset: rg.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -181,7 +177,7 @@ def test_update_records_add_suggestions(self, client: rg.Argilla, dataset: rg.Da class TestUpdateResponses: - def test_update_records_add_responses(self, client: rg.Argilla, dataset: rg.Dataset): + def test_update_records_add_responses(self, client: rg.Extralit, dataset: rg.Dataset): mock_data = [ { "text": "Hello World, how are you?", diff --git a/extralit/tests/integration/test_vectors.py b/extralit/tests/integration/test_vectors.py index 8b7a9459d..c60016e62 100644 --- a/extralit/tests/integration/test_vectors.py +++ b/extralit/tests/integration/test_vectors.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,7 +14,6 @@ import random import uuid -from datetime import datetime import pytest @@ -22,7 +21,7 @@ @pytest.fixture -def dataset(client: rg.Argilla, dataset_name: str) -> rg.Dataset: +def dataset(client: rg.Extralit, dataset_name: str) -> rg.Dataset: workspace = client.workspaces[0] settings = rg.Settings( fields=[rg.TextField(name="text")], @@ -40,7 +39,7 @@ def dataset(client: rg.Argilla, dataset_name: str) -> rg.Dataset: dataset.delete() -def test_vectors(client: rg.Argilla, dataset: rg.Dataset): +def test_vectors(client: rg.Extralit, dataset: rg.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -72,7 +71,7 @@ def test_vectors(client: rg.Argilla, dataset: rg.Dataset): assert dataset_records[2].vectors["vector"] == mock_data[2]["vector"] -def test_vectors_return_with_bool(client: rg.Argilla, dataset: rg.Dataset): +def test_vectors_return_with_bool(client: rg.Extralit, dataset: rg.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -104,7 +103,7 @@ def test_vectors_return_with_bool(client: rg.Argilla, dataset: rg.Dataset): assert dataset_records[2].vectors["vector"] == mock_data[2]["vector"] -def test_vectors_return_with_name(client: rg.Argilla, dataset: rg.Dataset): +def test_vectors_return_with_name(client: rg.Extralit, dataset: rg.Dataset): mock_data = [ { "text": "Hello World, how are you?", diff --git a/extralit/tests/integration/test_workspace_files.py b/extralit/tests/integration/test_workspace_files.py index d3d61b86a..26a181c55 100644 --- a/extralit/tests/integration/test_workspace_files.py +++ b/extralit/tests/integration/test_workspace_files.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,11 +15,9 @@ import os import uuid import tempfile -from pathlib import Path -import pytest -from extralit import Argilla, Workspace +from extralit import Workspace class TestWorkspaceFiles: @@ -27,106 +25,106 @@ def test_list_files(self, workspace: Workspace): """Test listing files in a workspace.""" # List files in the workspace files = workspace.list_files("") - + # Verify the result assert hasattr(files, "objects") # Initially, there should be no files assert len(files.objects) == 0 - + def test_upload_and_list_files(self, workspace: Workspace): """Test uploading a file to a workspace and listing it.""" # Create a temporary file with tempfile.NamedTemporaryFile(delete=False, suffix=".txt") as temp_file: temp_file.write(b"Test content") temp_file_path = temp_file.name - + try: # Upload the file remote_path = f"test_file_{uuid.uuid4()}.txt" file_metadata = workspace.put_file(remote_path, temp_file_path) - + # Verify the file metadata assert file_metadata.object_name == remote_path - + # List files in the workspace files = workspace.list_files("") - + # Verify the file is in the list assert len(files.objects) > 0 assert any(file.object_name == remote_path for file in files.objects) finally: # Clean up the temporary file os.unlink(temp_file_path) - + # Clean up the remote file try: workspace.delete_file(remote_path) except Exception: pass - + def test_upload_download_and_delete_file(self, workspace: Workspace): """Test uploading, downloading, and deleting a file.""" # Create a temporary file with tempfile.NamedTemporaryFile(delete=False, suffix=".txt") as temp_file: temp_file.write(b"Test content for download") temp_file_path = temp_file.name - + try: # Upload the file remote_path = f"test_download_{uuid.uuid4()}.txt" file_metadata = workspace.put_file(remote_path, temp_file_path) - + # Verify the file metadata assert file_metadata.object_name == remote_path - + # Download the file file_response = workspace.get_file(remote_path) - + # Verify the file content assert file_response.content == b"Test content for download" - + # Delete the file workspace.delete_file(remote_path) - + # Verify the file is deleted files = workspace.list_files("") assert not any(file.object_name == remote_path for file in files.objects) finally: # Clean up the temporary file os.unlink(temp_file_path) - + def test_file_operations_with_subdirectories(self, workspace: Workspace): """Test file operations with subdirectories.""" # Create a temporary file with tempfile.NamedTemporaryFile(delete=False, suffix=".txt") as temp_file: temp_file.write(b"Test content in subdirectory") temp_file_path = temp_file.name - + try: # Upload the file to a subdirectory subdir = f"test_subdir_{uuid.uuid4()}" remote_path = f"{subdir}/test_file.txt" file_metadata = workspace.put_file(remote_path, temp_file_path) - + # Verify the file metadata assert file_metadata.object_name == remote_path - + # List files in the subdirectory files = workspace.list_files(subdir) - + # Verify the file is in the list assert len(files.objects) > 0 assert any(file.object_name == remote_path for file in files.objects) - + # Download the file file_response = workspace.get_file(remote_path) - + # Verify the file content assert file_response.content == b"Test content in subdirectory" - + # Delete the file workspace.delete_file(remote_path) - + # Verify the file is deleted files = workspace.list_files(subdir) assert not any(file.object_name == remote_path for file in files.objects) diff --git a/extralit/tests/unit/api/http/test_http_client.py b/extralit/tests/unit/api/http/test_http_client.py index ca26b14b1..e89aa8271 100644 --- a/extralit/tests/unit/api/http/test_http_client.py +++ b/extralit/tests/unit/api/http/test_http_client.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,53 +17,53 @@ import pytest from httpx import Timeout -from extralit import Argilla +from extralit import Extralit class TestHTTPClient: def test_create_default_client(self): - http_client = Argilla().http_client + http_client = Extralit().http_client assert http_client is not None assert http_client.base_url == "http://localhost:6900" assert http_client.timeout == Timeout(60) - assert http_client.headers["X-Argilla-Api-Key"] == "argilla.apikey" + assert http_client.headers["X-Extralit-Api-Key"] == "extralit.apikey" def test_create_client_with_custom_timeout(self): - http_client = Argilla(timeout=30).http_client + http_client = Extralit(timeout=30).http_client assert http_client is not None assert http_client.base_url == "http://localhost:6900" assert http_client.timeout == Timeout(30) - assert http_client.headers["X-Argilla-Api-Key"] == "argilla.apikey" + assert http_client.headers["X-Extralit-Api-Key"] == "extralit.apikey" def test_create_client_with_custom_api_url(self): - http_client = Argilla(api_url="http://localhost:8000").http_client + http_client = Extralit(api_url="http://localhost:8000").http_client assert http_client is not None assert http_client.base_url == "http://localhost:8000" def test_create_client_with_custom_api_key(self): - http_client = Argilla(api_key="custom.apikey").http_client + http_client = Extralit(api_key="custom.apikey").http_client assert http_client is not None assert http_client.base_url == "http://localhost:6900" - assert http_client.headers["X-Argilla-Api-Key"] == "custom.apikey" + assert http_client.headers["X-Extralit-Api-Key"] == "custom.apikey" def test_create_client_with_extra_headers(self): - http_client = Argilla(headers={"X-Custom-Header": "Custom value"}).http_client + http_client = Extralit(headers={"X-Custom-Header": "Custom value"}).http_client assert http_client is not None assert http_client.base_url == "http://localhost:6900" - assert http_client.headers["X-Argilla-Api-Key"] == "argilla.apikey" + assert http_client.headers["X-Extralit-Api-Key"] == "extralit.apikey" assert http_client.headers["X-Custom-Header"] == "Custom value" def test_create_client_with_extra_cookies(self): - http_client = Argilla(cookies={"session": "session_id"}).http_client + http_client = Extralit(cookies={"session": "session_id"}).http_client assert http_client is not None assert http_client.base_url == "http://localhost:6900" - assert http_client.headers["X-Argilla-Api-Key"] == "argilla.apikey" + assert http_client.headers["X-Extralit-Api-Key"] == "extralit.apikey" assert http_client.cookies["session"] == "session_id" @pytest.mark.parametrize("retries", [0, 1, 5, 10]) @@ -72,14 +72,14 @@ def test_create_client_with_various_retries(self, retries): mock_http_client = MagicMock() mock_create_http_client.return_value = mock_http_client - Argilla(api_url="http://test.com", api_key="test_key", retries=retries) + Extralit(api_url="http://test.com", api_key="test_key", retries=retries) mock_create_http_client.assert_called_once_with( api_url="http://test.com", api_key="test_key", timeout=60, retries=retries ) def test_create_client_with_verify(self): - http_client = Argilla( + http_client = Extralit( api_url="http://test.com", api_key="test_key", verify=True, @@ -88,7 +88,7 @@ def test_create_client_with_verify(self): # See https://docs.python.org/3/library/ssl.html#ssl.SSLContext.verify_mode assert http_client._transport._pool._ssl_context.verify_mode == ssl.CERT_REQUIRED - http_client = Argilla( + http_client = Extralit( api_url="http://test.com", api_key="test_key", verify=False, diff --git a/extralit/tests/unit/api/test_workspace_documents_api.py b/extralit/tests/unit/api/test_workspace_documents_api.py index b8e1ca0c5..83d07c216 100644 --- a/extralit/tests/unit/api/test_workspace_documents_api.py +++ b/extralit/tests/unit/api/test_workspace_documents_api.py @@ -86,10 +86,10 @@ def test_add_document_delegates_to_documents_api(self, workspace_api, sample_doc # Verify DocumentsAPI was instantiated with the http_client mock_documents_api_class.assert_called_once_with(http_client=workspace_api.http_client) - + # Verify create was called with the document mock_documents_api.create.assert_called_once_with(sample_document_model) - + # Verify the result is the document ID assert result == sample_document_model.id @@ -106,10 +106,10 @@ def test_get_documents_delegates_to_documents_api(self, workspace_api, sample_wo # Verify DocumentsAPI was instantiated with the http_client mock_documents_api_class.assert_called_once_with(http_client=workspace_api.http_client) - + # Verify list was called with the workspace_id mock_documents_api.list.assert_called_once_with(sample_workspace_id) - + # Verify the result is a list of DocumentModels assert result == [sample_document_model] assert len(result) == 1 @@ -130,34 +130,26 @@ def mock_client(self): def test_document_create(self, mock_client, sample_workspace_id): """Test Document.create() method.""" client, documents_api = mock_client - + # Create a document - doc = Document( - workspace_id=sample_workspace_id, - reference="Test2023", - pmid="87654321", - client=client - ) - + doc = Document(workspace_id=sample_workspace_id, reference="Test2023", pmid="87654321", client=client) + # Mock the API response created_model = DocumentModel( - id=uuid4(), - workspace_id=sample_workspace_id, - reference="Test2023", - pmid="87654321" + id=uuid4(), workspace_id=sample_workspace_id, reference="Test2023", pmid="87654321" ) documents_api.create.return_value = created_model - + # Call create result = doc.create() - + # Verify API was called documents_api.create.assert_called_once() created_call_args = documents_api.create.call_args[0][0] assert created_call_args.workspace_id == sample_workspace_id assert created_call_args.reference == "Test2023" assert created_call_args.pmid == "87654321" - + # Verify result assert result is doc assert doc.id == created_model.id @@ -165,23 +157,20 @@ def test_document_create(self, mock_client, sample_workspace_id): def test_document_get(self, mock_client, sample_document_id): """Test Document.get() class method.""" client, documents_api = mock_client - + # Mock the API response retrieved_model = DocumentModel( - id=sample_document_id, - workspace_id=uuid4(), - reference="Retrieved2023", - file_name="retrieved.pdf" + id=sample_document_id, workspace_id=uuid4(), reference="Retrieved2023", file_name="retrieved.pdf" ) documents_api.get.return_value = retrieved_model - + # Call get - with patch("argilla.documents._resource.Argilla._get_default", return_value=client): + with patch("extralit.documents._resource.Argilla._get_default", return_value=client): doc = Document.get(id=sample_document_id) - + # Verify API was called documents_api.get.assert_called_once_with(sample_document_id) - + # Verify result assert doc.id == sample_document_id assert doc.reference == "Retrieved2023" @@ -190,69 +179,56 @@ def test_document_get(self, mock_client, sample_document_id): def test_document_update(self, mock_client, sample_document_id, sample_workspace_id): """Test Document.update() method.""" client, documents_api = mock_client - + # Create a document with existing data - doc = Document( - id=sample_document_id, - workspace_id=sample_workspace_id, - reference="Original2023", - client=client - ) - + doc = Document(id=sample_document_id, workspace_id=sample_workspace_id, reference="Original2023", client=client) + # Update some fields doc.reference = "Updated2023" doc.pmid = "11111111" - + # Mock the API response updated_model = DocumentModel( - id=sample_document_id, - workspace_id=sample_workspace_id, - reference="Updated2023", - pmid="11111111" + id=sample_document_id, workspace_id=sample_workspace_id, reference="Updated2023", pmid="11111111" ) documents_api.update.return_value = updated_model - + # Call update result = doc.update() - + # Verify API was called documents_api.update.assert_called_once() updated_call_args = documents_api.update.call_args[0][0] assert updated_call_args.id == sample_document_id assert updated_call_args.reference == "Updated2023" assert updated_call_args.pmid == "11111111" - + # Verify result assert result is doc def test_document_delete(self, mock_client, sample_document_id, sample_workspace_id): """Test Document.delete() method.""" client, documents_api = mock_client - + # Create a document - doc = Document( - id=sample_document_id, - workspace_id=sample_workspace_id, - reference="ToDelete2023", - client=client - ) - + doc = Document(id=sample_document_id, workspace_id=sample_workspace_id, reference="ToDelete2023", client=client) + # Call delete doc.delete() - + # Verify API was called documents_api.delete.assert_called_once_with(sample_document_id, sample_workspace_id) def test_document_factory_methods(self, mock_client, sample_workspace_id): """Test Document factory methods.""" client, documents_api = mock_client - - with patch("argilla.documents._resource.Argilla._get_default", return_value=client): + + with patch("extralit.documents._resource.Argilla._get_default", return_value=client): # Test from_pmid doc_pmid = Document.from_pmid(pmid="12345678", workspace_id=sample_workspace_id) assert doc_pmid.pmid == "12345678" assert doc_pmid.workspace_id == sample_workspace_id - + # Test from_doi doc_doi = Document.from_doi(doi="10.1234/example", workspace_id=sample_workspace_id) assert doc_doi.doi == "10.1234/example" @@ -261,21 +237,19 @@ def test_document_factory_methods(self, mock_client, sample_workspace_id): def test_document_from_file_local(self, mock_client, sample_workspace_id): """Test Document.from_file() with local file.""" client, documents_api = mock_client - + # Create a temporary file - with tempfile.NamedTemporaryFile(mode='w', delete=False, suffix='.pdf') as tmp_file: + with tempfile.NamedTemporaryFile(mode="w", delete=False, suffix=".pdf") as tmp_file: tmp_file.write("test content") tmp_file_path = tmp_file.name - + try: - with patch("argilla.documents._resource.Argilla._get_default", return_value=client): + with patch("extralit.documents._resource.Argilla._get_default", return_value=client): # Test from_file with local path doc = Document.from_file( - file_path_or_url=tmp_file_path, - reference="LocalFile2023", - workspace_id=sample_workspace_id + file_path_or_url=tmp_file_path, reference="LocalFile2023", workspace_id=sample_workspace_id ) - + assert doc.file_path == tmp_file_path assert doc.reference == "LocalFile2023" assert doc.workspace_id == sample_workspace_id @@ -287,15 +261,15 @@ def test_document_from_file_local(self, mock_client, sample_workspace_id): def test_document_from_file_url(self, mock_client, sample_workspace_id): """Test Document.from_file() with URL.""" client, documents_api = mock_client - - with patch("argilla.documents._resource.Argilla._get_default", return_value=client): + + with patch("extralit.documents._resource.Argilla._get_default", return_value=client): # Test from_file with URL doc = Document.from_file( file_path_or_url="https://example.com/paper.pdf", reference="URLFile2023", - workspace_id=sample_workspace_id + workspace_id=sample_workspace_id, ) - + assert doc.url == "https://example.com/paper.pdf" assert doc.reference == "URLFile2023" assert doc.workspace_id == sample_workspace_id @@ -309,7 +283,7 @@ class TestWorkspaceDocumentIntegration: def mock_workspace(self, sample_workspace_id): """Mock workspace with client.""" from extralit.workspaces import Workspace - + workspace = MagicMock(spec=Workspace) workspace.id = sample_workspace_id workspace._client = MagicMock() @@ -322,13 +296,13 @@ def test_workspace_documents_property(self, mock_workspace, sample_document_mode mock_workspace.list_documents.return_value = [ Document.from_model(model=sample_document_model, client=mock_workspace._client) ] - + # Since we're using a MagicMock, we need to explicitly set up the property behavior # The documents property should call list_documents() mock_workspace.documents = mock_workspace.list_documents.return_value - + documents = mock_workspace.documents - + assert len(documents) == 1 assert isinstance(documents[0], Document) assert documents[0].id == sample_document_model.id @@ -337,13 +311,10 @@ def test_workspace_add_document_integration(self, mock_workspace, sample_workspa """Test workspace.add_document creates Document and calls API.""" # Mock the actual add_document method behavior mock_workspace.add_document.return_value = uuid4() - + # Call add_document - doc_id = mock_workspace.add_document( - file_path="/path/to/paper.pdf", - reference="Integration2023" - ) - + doc_id = mock_workspace.add_document(file_path="/path/to/paper.pdf", reference="Integration2023") + # Verify it was called mock_workspace.add_document.assert_called_once() - assert isinstance(doc_id, UUID) \ No newline at end of file + assert isinstance(doc_id, UUID) diff --git a/extralit/tests/unit/cli/test_cli_datasets.py b/extralit/tests/unit/cli/test_cli_datasets.py index ecbfb2ee8..ffadaa75f 100644 --- a/extralit/tests/unit/cli/test_cli_datasets.py +++ b/extralit/tests/unit/cli/test_cli_datasets.py @@ -25,7 +25,7 @@ def runner(): return CliRunner() -@patch("argilla.cli.datasets.__main__.list_datasets") +@patch("extralit.cli.datasets.__main__.list_datasets") @pytest.mark.skip(reason="Test temporarily disabled") def test_datasets_list(mock_list_datasets, runner): """Test the 'list' command functionality.""" @@ -58,7 +58,7 @@ def test_datasets_list(mock_list_datasets, runner): mock_list_datasets.assert_called_once() -@patch("argilla.cli.datasets.__main__.create_dataset") +@patch("extralit.cli.datasets.__main__.create_dataset") @pytest.mark.skip(reason="Test temporarily disabled") def test_datasets_create(mock_create_dataset, runner): """Test the 'create' command functionality.""" @@ -85,7 +85,7 @@ def test_datasets_create(mock_create_dataset, runner): mock_create_dataset.assert_called_once() -@patch("argilla.cli.datasets.__main__.delete_dataset") +@patch("extralit.cli.datasets.__main__.delete_dataset") @pytest.mark.skip(reason="Test temporarily disabled") def test_datasets_delete(mock_delete_dataset, runner): """Test the 'delete' command functionality.""" @@ -112,7 +112,7 @@ def test_datasets_delete(mock_delete_dataset, runner): mock_delete_dataset.assert_called_once() -@patch("argilla.cli.datasets.__main__.push_to_huggingface") +@patch("extralit.cli.datasets.__main__.push_to_huggingface") @pytest.mark.skip(reason="Test temporarily disabled") def test_datasets_push_to_hf(mock_push_to_hf, runner): """Test the 'push-to-huggingface' command functionality.""" diff --git a/extralit/tests/unit/cli/test_cli_documents.py b/extralit/tests/unit/cli/test_cli_documents.py index 2b527ba08..73d33ebcb 100644 --- a/extralit/tests/unit/cli/test_cli_documents.py +++ b/extralit/tests/unit/cli/test_cli_documents.py @@ -26,12 +26,12 @@ def runner(): return CliRunner() -@patch("argilla.client.Argilla.from_credentials") -@patch("argilla.cli.documents.import_bib._validate_workspace_and_folder") -@patch("argilla.cli.documents.import_bib._parse_bibtex_to_dataframe") -@patch("argilla.cli.documents.import_bib._match_pdfs_to_dataframe") -@patch("argilla.cli.documents.import_bib._send_import_analysis_request") -@patch("argilla.cli.documents.import_bib._display_import_analysis_results") +@patch("extralit.client.Extralit.from_credentials") +@patch("extralit.cli.documents.import_bib._validate_workspace_and_folder") +@patch("extralit.cli.documents.import_bib._parse_bibtex_to_dataframe") +@patch("extralit.cli.documents.import_bib._match_pdfs_to_dataframe") +@patch("extralit.cli.documents.import_bib._send_import_analysis_request") +@patch("extralit.cli.documents.import_bib._display_import_analysis_results") def test_import_bibtex_analysis( mock_display, mock_analysis, mock_match_pdfs, mock_parse_bib, mock_validate, mock_from_credentials, runner ): @@ -79,12 +79,12 @@ def test_import_bibtex_analysis( assert "import analysis complete" in result.stdout.lower() -@patch("argilla.client.Argilla.from_credentials") -@patch("argilla.cli.documents.import_bib._validate_workspace_and_folder") -@patch("argilla.cli.documents.import_bib._parse_bibtex_to_dataframe") -@patch("argilla.cli.documents.import_bib._match_pdfs_to_dataframe") -@patch("argilla.cli.documents.import_bib._send_import_analysis_request") -@patch("argilla.cli.documents.import_bib._display_import_analysis_results") +@patch("extralit.client.Extralit.from_credentials") +@patch("extralit.cli.documents.import_bib._validate_workspace_and_folder") +@patch("extralit.cli.documents.import_bib._parse_bibtex_to_dataframe") +@patch("extralit.cli.documents.import_bib._match_pdfs_to_dataframe") +@patch("extralit.cli.documents.import_bib._send_import_analysis_request") +@patch("extralit.cli.documents.import_bib._display_import_analysis_results") def test_import_bibtex_with_pdf_matching( mock_display, mock_analysis, mock_match_pdfs, mock_parse_bib, mock_validate, mock_from_credentials, runner ): @@ -160,9 +160,9 @@ def test_import_bibtex_file_error(runner): assert "nonexistent.bib" in result.output or "does not exist" in result.output -@patch("argilla.client.Argilla.from_credentials") -@patch("argilla.cli.documents.import_bib._validate_workspace_and_folder") -@patch("argilla.cli.documents.import_bib._parse_bibtex_to_dataframe") +@patch("extralit.client.Extralit.from_credentials") +@patch("extralit.cli.documents.import_bib._validate_workspace_and_folder") +@patch("extralit.cli.documents.import_bib._parse_bibtex_to_dataframe") def test_import_bibtex_api_error(mock_parse_bib, mock_validate, mock_from_credentials, runner): """Test the 'import' command with an API error.""" # Mock client and workspace @@ -219,12 +219,12 @@ def test_display_import_analysis_results(): assert "Document Import Status" in output_str -@patch("argilla.client.Argilla.from_credentials") -@patch("argilla.cli.documents.import_bib._validate_workspace_and_folder") -@patch("argilla.cli.documents.import_bib._parse_bibtex_to_dataframe") -@patch("argilla.cli.documents.import_bib._match_pdfs_to_dataframe") -@patch("argilla.cli.documents.import_bib._send_import_analysis_request") -@patch("argilla.cli.documents.import_bib._display_import_analysis_results") +@patch("extralit.client.Extralit.from_credentials") +@patch("extralit.cli.documents.import_bib._validate_workspace_and_folder") +@patch("extralit.cli.documents.import_bib._parse_bibtex_to_dataframe") +@patch("extralit.cli.documents.import_bib._match_pdfs_to_dataframe") +@patch("extralit.cli.documents.import_bib._send_import_analysis_request") +@patch("extralit.cli.documents.import_bib._display_import_analysis_results") def test_import_bibtex_filename_matching( mock_display, mock_analysis, mock_match_pdfs, mock_parse_bib, mock_validate, mock_from_credentials, runner ): diff --git a/extralit/tests/unit/cli/test_cli_schemas.py b/extralit/tests/unit/cli/test_cli_schemas.py index 6eb197ad6..93155770b 100644 --- a/extralit/tests/unit/cli/test_cli_schemas.py +++ b/extralit/tests/unit/cli/test_cli_schemas.py @@ -76,7 +76,7 @@ def test_schemas_list_with_csv_export(mock_print, runner): mock_print.assert_called_once() -@patch("argilla.cli.schemas.upload.upload_schemas") +@patch("extralit.cli.schemas.upload.upload_schemas") @pytest.mark.skip(reason="Test temporarily disabled") def test_schemas_upload(mock_upload_schemas, runner): """Test the 'upload schemas' command functionality.""" diff --git a/extralit/tests/unit/cli/test_cli_training.py b/extralit/tests/unit/cli/test_cli_training.py index 967b8f9f7..bf15a299c 100644 --- a/extralit/tests/unit/cli/test_cli_training.py +++ b/extralit/tests/unit/cli/test_cli_training.py @@ -27,7 +27,7 @@ def runner(): @patch("rich.console.Console.print") -@patch("argilla.cli.training.__main__.framework_callback") +@patch("extralit.cli.training.__main__.framework_callback") @pytest.mark.skip(reason="Test temporarily disabled") def test_training_basic(mock_framework_callback, mock_print, runner): """Test basic training command functionality.""" @@ -48,7 +48,7 @@ def test_training_basic(mock_framework_callback, mock_print, runner): @patch("rich.console.Console.print") -@patch("argilla.cli.training.__main__.framework_callback") +@patch("extralit.cli.training.__main__.framework_callback") @pytest.mark.skip(reason="Test temporarily disabled") def test_training_with_options(mock_framework_callback, mock_print, runner): """Test training command with additional options.""" @@ -88,7 +88,7 @@ def test_training_with_options(mock_framework_callback, mock_print, runner): @patch("rich.console.Console.print") -@patch("argilla.cli.training.__main__.framework_callback") +@patch("extralit.cli.training.__main__.framework_callback") @pytest.mark.skip(reason="Test temporarily disabled") def test_training_with_query(mock_framework_callback, mock_print, runner): """Test training command with query parameter.""" @@ -120,7 +120,7 @@ def test_training_with_query(mock_framework_callback, mock_print, runner): @patch("rich.console.Console.print") -@patch("argilla.cli.training.__main__.framework_callback") +@patch("extralit.cli.training.__main__.framework_callback") @patch("json.loads") @pytest.mark.skip(reason="Test temporarily disabled") def test_training_with_config_update(mock_json_loads, mock_framework_callback, mock_print, runner): diff --git a/extralit/tests/unit/cli/test_cli_workspaces.py b/extralit/tests/unit/cli/test_cli_workspaces.py index f8a2b668c..2922d85a2 100644 --- a/extralit/tests/unit/cli/test_cli_workspaces.py +++ b/extralit/tests/unit/cli/test_cli_workspaces.py @@ -25,7 +25,7 @@ def runner(): return CliRunner() -@patch("argilla.cli.workspaces.__main__.get_workspaces") +@patch("extralit.cli.workspaces.__main__.get_workspaces") @pytest.mark.skip(reason="Test temporarily disabled") def test_workspaces_list(mock_get_workspaces, runner): """Test the 'list' command functionality.""" @@ -68,8 +68,8 @@ def test_workspaces_create(runner): @pytest.mark.skip(reason="Test temporarily disabled") -@patch("argilla.cli.workspaces.__main__.get_workspace") -@patch("argilla.cli.workspaces.__main__.get_user") +@patch("extralit.cli.workspaces.__main__.get_workspace") +@patch("extralit.cli.workspaces.__main__.get_user") def test_workspaces_add_user(mock_get_user, mock_get_workspace, runner): """Test the 'add-user' command functionality.""" # Mock the workspace and user retrieval functions @@ -94,8 +94,8 @@ def test_workspaces_add_user(mock_get_user, mock_get_workspace, runner): @pytest.mark.skip(reason="Test temporarily disabled") -@patch("argilla.cli.workspaces.__main__.get_workspace") -@patch("argilla.cli.workspaces.__main__.get_user") +@patch("extralit.cli.workspaces.__main__.get_workspace") +@patch("extralit.cli.workspaces.__main__.get_user") def test_workspaces_delete_user(mock_get_user, mock_get_workspace, runner): """Test the 'delete-user' command functionality.""" # Mock the workspace and user retrieval functions diff --git a/extralit/tests/unit/conftest.py b/extralit/tests/unit/conftest.py index fe4856e0e..f0d5693ec 100644 --- a/extralit/tests/unit/conftest.py +++ b/extralit/tests/unit/conftest.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,7 +15,7 @@ import pytest from unittest.mock import patch from httpx import Timeout -from extralit import Argilla +from extralit import Extralit @pytest.fixture(autouse=True) @@ -26,9 +26,9 @@ def mock_validate_connection(): # Example usage in a test module def test_create_default_client(mock_validate_connection): - http_client = Argilla().http_client + http_client = Extralit().http_client assert http_client is not None assert http_client.base_url == "http://localhost:6900" assert http_client.timeout == Timeout(60) - assert http_client.headers["X-Argilla-Api-Key"] == "argilla.apikey" + assert http_client.headers["X-Extralit-Api-Key"] == "extralit.apikey" diff --git a/extralit/tests/unit/export/test_settings_export_import_compatibillity.py b/extralit/tests/unit/export/test_settings_export_import_compatibillity.py index d14edc1f7..d824d37f1 100644 --- a/extralit/tests/unit/export/test_settings_export_import_compatibillity.py +++ b/extralit/tests/unit/export/test_settings_export_import_compatibillity.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -43,7 +43,7 @@ def settings(): @pytest.fixture def dataset(httpx_mock: HTTPXMock, settings) -> rg.Dataset: api_url = "http://test_url" - client = rg.Argilla(api_url) + client = rg.Extralit(api_url) workspace_id = uuid.uuid4() workspace_name = "workspace-01" mock_workspace = { diff --git a/extralit/tests/unit/helpers/test_resource_repr.py b/extralit/tests/unit/helpers/test_resource_repr.py index 44ba50142..cdf8744d5 100644 --- a/extralit/tests/unit/helpers/test_resource_repr.py +++ b/extralit/tests/unit/helpers/test_resource_repr.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,12 +16,11 @@ import extralit as rg from extralit._helpers._resource_repr import ResourceHTMLReprMixin -from extralit._models import DatasetModel class TestResourceHTMLReprMixin: def test_represent_workspaces_as_html(self): - client = rg.Argilla() + client = rg.Extralit() workspaces = [ rg.Workspace(name="workspace1", id=uuid.uuid4()), rg.Workspace(name="workspace2", id=uuid.uuid4()), diff --git a/extralit/tests/unit/helpers/test_spaces_deployment.py b/extralit/tests/unit/helpers/test_spaces_deployment.py index bb4dd39b7..600f0d831 100644 --- a/extralit/tests/unit/helpers/test_spaces_deployment.py +++ b/extralit/tests/unit/helpers/test_spaces_deployment.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,17 +17,17 @@ import pytest from huggingface_hub import SpaceStage -from extralit.client import Argilla +from extralit.client import Extralit class TestSpacesDeploymentMixin: @pytest.fixture def argilla_client_class(self): - return Argilla + return Extralit - @patch("argilla._helpers._deploy.HfApi") - @patch("argilla._helpers._deploy.get_token") - @patch("argilla.client.Argilla.__init__", return_value=None) + @patch("extralit._helpers._deploy.HfApi") + @patch("extralit._helpers._deploy.get_token") + @patch("extralit.client.Extralit.__init__", return_value=None) def test_deploy_on_spaces(self, mock_argilla_init, mock_get_token, mock_hf_api, argilla_client_class): mock_get_token.return_value = "fake_token" mock_api = Mock() @@ -38,7 +38,7 @@ def test_deploy_on_spaces(self, mock_argilla_init, mock_get_token, mock_hf_api, result = argilla_client_class.deploy_on_spaces(api_key="12345678") - assert isinstance(result, Argilla) + assert isinstance(result, Extralit) mock_api.duplicate_space.assert_called_once() mock_api.create_repo.assert_called_once() mock_argilla_init.assert_called_once() @@ -50,8 +50,8 @@ def test_deploy_on_spaces(self, mock_argilla_init, mock_get_token, mock_hf_api, assert kwargs["api_url"].endswith(".hf.space/") assert "headers" in kwargs - @patch("argilla._helpers._deploy.get_token") - @patch("argilla._helpers._deploy.login") + @patch("extralit._helpers._deploy.get_token") + @patch("extralit._helpers._deploy.login") def test_acquire_hf_token(self, mock_login, mock_get_token, argilla_client_class): mock_get_token.side_effect = [None, "fake_token"] token = argilla_client_class._acquire_hf_token(None) diff --git a/extralit/tests/unit/test_interface.py b/extralit/tests/unit/test_interface.py index 1c79b7b45..e116522ee 100644 --- a/extralit/tests/unit/test_interface.py +++ b/extralit/tests/unit/test_interface.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,18 +19,18 @@ class TestArgilla: def test_default_client(self): - with mock.patch("argilla.Argilla") as mock_client: + with mock.patch("extralit.Argilla") as mock_client: mock_client.return_value.api_url = "http://localhost:6900" mock_client.return_value.api_key = "admin.apikey" mock_client.return_value.workspace = "argilla" - client = rg.Argilla(api_url="http://localhost:6900", api_key="admin.apikey") + client = rg.Extralit(api_url="http://localhost:6900", api_key="admin.apikey") assert client.api_url == "http://localhost:6900" assert client.api_key == "admin.apikey" def test_multiple_clients(self): - local_client = rg.Argilla(api_url="http://localhost:6900", api_key="admin.apikey") - remote_client = rg.Argilla(api_url="http://argilla.production.net", api_key="admin.apikey") + local_client = rg.Extralit(api_url="http://localhost:6900", api_key="admin.apikey") + remote_client = rg.Extralit(api_url="http://argilla.production.net", api_key="admin.apikey") assert local_client.api_url == "http://localhost:6900" assert remote_client.api_url == "http://argilla.production.net" diff --git a/extralit/tests/unit/test_resources/test_datasets.py b/extralit/tests/unit/test_resources/test_datasets.py index a4902ce7f..6429deaa3 100644 --- a/extralit/tests/unit/test_resources/test_datasets.py +++ b/extralit/tests/unit/test_resources/test_datasets.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -33,7 +33,7 @@ @pytest.fixture def dataset(httpx_mock: HTTPXMock) -> rg.Dataset: api_url = "http://test_url" - client = rg.Argilla(api_url) + client = rg.Extralit(api_url) workspace_id = uuid.uuid4() workspace_name = "workspace-01" mock_workspace = { @@ -274,7 +274,7 @@ def test_delete_dataset(self, httpx_mock: HTTPXMock): status_code=200, ) with httpx.Client() as client: - client = rg.Argilla("http://test_url") + client = rg.Extralit("http://test_url") client.api.datasets.delete(mock_dataset_id) pytest.raises(httpx.HTTPError, client.api.datasets.get, mock_dataset_id) @@ -302,7 +302,7 @@ def test_publish_dataset(self, httpx_mock: HTTPXMock): status_code=200, ) with httpx.Client() as client: - client = rg.Argilla("http://test_url") + client = rg.Extralit("http://test_url") client.api.datasets.publish(mock_dataset_id) dataset = client.api.datasets.get(mock_dataset_id) assert dataset.status == "ready" @@ -329,7 +329,7 @@ def test_get_by_name_and_workspace_id(self, httpx_mock: HTTPXMock): json=mock_return_value, url=f"{api_url}/api/v1/me/datasets", method="GET", status_code=200 ) with httpx.Client(): - client = rg.Argilla(api_url) + client = rg.Extralit(api_url) dataset = client.api.datasets.get_by_name_and_workspace_id("dataset-01", mock_workspace_id) assert mock_dataset_id.hex == mock_return_value["items"][0]["id"] assert dataset.name == mock_return_value["items"][0]["name"] diff --git a/extralit/tests/unit/test_resources/test_fields.py b/extralit/tests/unit/test_resources/test_fields.py index 6fa85bb6a..f95c61572 100644 --- a/extralit/tests/unit/test_resources/test_fields.py +++ b/extralit/tests/unit/test_resources/test_fields.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -116,5 +116,5 @@ def test_create_field(self, httpx_mock: HTTPXMock): status_code=200, ) with httpx.Client() as client: - client = rg.Argilla(api_url="http://test_url") + client = rg.Extralit(api_url="http://test_url") client.api.fields.create(mock_field) diff --git a/extralit/tests/unit/test_resources/test_questions.py b/extralit/tests/unit/test_resources/test_questions.py index 511eb6701..789e15b6c 100644 --- a/extralit/tests/unit/test_resources/test_questions.py +++ b/extralit/tests/unit/test_resources/test_questions.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -73,6 +73,6 @@ def test_create_span_question(self, httpx_mock: HTTPXMock): }, ) - client = rg.Argilla(api_url="http://test_url") + client = rg.Extralit(api_url="http://test_url") created_question = client.api.questions.create(question=question) assert created_question.model_dump(exclude_unset=True) == mock_return_value diff --git a/extralit/tests/unit/test_resources/test_users.py b/extralit/tests/unit/test_resources/test_users.py index 66bbe0512..24989c5e9 100644 --- a/extralit/tests/unit/test_resources/test_users.py +++ b/extralit/tests/unit/test_resources/test_users.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -102,7 +102,7 @@ def test_create_user(self, httpx_mock: HTTPXMock, status_code, expected_exceptio json=mock_return_value, url=f"{api_url}/api/v1/users", method="POST", status_code=status_code ) with httpx.Client(): - client = rg.Argilla(api_url=api_url, api_key="admin.apikey") + client = rg.Extralit(api_url=api_url, api_key="admin.apikey") user = rg.User( username="test-user", client=client, @@ -150,7 +150,7 @@ def test_get_user(self, httpx_mock: HTTPXMock, status_code, expected_exception, json=mock_return_value, url=f"{api_url}/api/v1/users", method="POST", status_code=status_code ) with httpx.Client(): - client = rg.Argilla(api_url=api_url, api_key="admin.apikey") + client = rg.Extralit(api_url=api_url, api_key="admin.apikey") user = rg.User( username="test-user", client=client, @@ -194,7 +194,7 @@ def test_list_users(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/users") with httpx.Client(): - client = rg.Argilla(api_url="http://test_url", api_key="admin.apikey") + client = rg.Extralit(api_url="http://test_url", api_key="admin.apikey") users = client.users assert len(users) == 2 for i in range(len(users)): @@ -222,7 +222,7 @@ def test_get_me(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/me") with httpx.Client(): - client = rg.Argilla(api_url=api_url, api_key="admin.apikey") + client = rg.Extralit(api_url=api_url, api_key="admin.apikey") user = client.api.users.get_me() assert user.username == mock_return_value["username"] assert user.id == uuid.UUID(mock_return_value["id"]) @@ -250,14 +250,14 @@ def test_remove_user_from_workspace(self, httpx_mock: HTTPXMock): json=mock_return_value, ) with httpx.Client(): - client = rg.Argilla(api_url="http://test_url", api_key="admin.apikey") + client = rg.Extralit(api_url="http://test_url", api_key="admin.apikey") client.api.users.delete_from_workspace(workspace_id, user_id) def test_delete_user(self, httpx_mock: HTTPXMock): user_id = uuid.uuid4() httpx_mock.add_response(url=f"http://test_url/api/v1/users/{user_id}", method="DELETE") with httpx.Client(): - client = rg.Argilla(api_url="http://test_url", api_key="admin.apikey") + client = rg.Extralit(api_url="http://test_url", api_key="admin.apikey") client.api.users.delete(user_id) def test_list_workspace_users(self, httpx_mock: HTTPXMock): @@ -288,7 +288,7 @@ def test_list_workspace_users(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/workspaces/{workspace_id}/users") with httpx.Client(): - client = rg.Argilla(api_url=api_url, api_key="admin.apikey") + client = rg.Extralit(api_url=api_url, api_key="admin.apikey") users = client.api.users.list_by_workspace_id(workspace_id) assert len(users) == 2 for i in range(len(users)): @@ -316,7 +316,7 @@ def test_create_user(self, httpx_mock: HTTPXMock): httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/users", method="POST", status_code=200) with httpx.Client(): - client = rg.Argilla(api_url=api_url, api_key="admin.apikey") + client = rg.Extralit(api_url=api_url, api_key="admin.apikey") user_create = UserModel(username="test-user", password="test-password") user = client.api.users.create(user_create) assert user.id == user_id diff --git a/extralit/tests/unit/test_resources/test_workspaces.py b/extralit/tests/unit/test_resources/test_workspaces.py index 105a8197b..0587250f7 100644 --- a/extralit/tests/unit/test_resources/test_workspaces.py +++ b/extralit/tests/unit/test_resources/test_workspaces.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -73,7 +73,7 @@ def test_create_workspace(self, httpx_mock: HTTPXMock, status_code, expected_exc api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/workspaces", status_code=status_code) with httpx.Client(): - client = rg.Argilla(api_url=api_url, api_key="admin.apikey") + client = rg.Extralit(api_url=api_url, api_key="admin.apikey") if expected_exception: with pytest.raises(expected_exception, match=expected_message): ws = rg.Workspace(name="test-workspace", id=uuid.uuid4(), client=client) @@ -111,7 +111,7 @@ def test_get_workspace(self, httpx_mock: HTTPXMock, status_code, expected_except json=mock_return_value, url=f"{api_url}/api/v1/workspaces/{workspace_id}", status_code=status_code ) with httpx.Client(): - client = rg.Argilla(api_url="http://test_url", api_key="admin.apikey") + client = rg.Extralit(api_url="http://test_url", api_key="admin.apikey") if expected_exception: with pytest.raises(expected_exception, match=expected_message): @@ -143,7 +143,7 @@ def test_list_workspaces(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/me/workspaces") with httpx.Client(): - client = rg.Argilla(api_url="http://test_url", api_key="admin.apikey") + client = rg.Extralit(api_url="http://test_url", api_key="admin.apikey") workspaces = client.workspaces assert len(workspaces) == 2 for i in range(len(workspaces)): @@ -174,7 +174,7 @@ def test_get_workspace_by_name(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/me/workspaces") with httpx.Client(): - client = rg.Argilla(api_url=api_url, api_key="admin.apikey") + client = rg.Extralit(api_url=api_url, api_key="admin.apikey") ws = client.api.workspaces.get_by_name("test-workspace") assert ws is not None assert ws.name == "test-workspace" @@ -200,8 +200,8 @@ def test_multiple_clients_create_workspace(self, httpx_mock: HTTPXMock): json=mock_return, ) with httpx.Client(): - local_client = rg.Argilla(api_url="http://localhost:6900", api_key="admin.apikey") - remote_client = rg.Argilla(api_url="http://argilla.production.net", api_key="admin.apikey") + local_client = rg.Extralit(api_url="http://localhost:6900", api_key="admin.apikey") + remote_client = rg.Extralit(api_url="http://argilla.production.net", api_key="admin.apikey") assert local_client.api_url == "http://localhost:6900" assert remote_client.api_url == "http://argilla.production.net" local_workspace = rg.Workspace(name="local-test-workspace", client=local_client) @@ -214,7 +214,7 @@ def test_delete_workspace(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(url=f"{api_url}/api/v1/workspaces/{workspace_id}", status_code=204) with httpx.Client(): - client = rg.Argilla(api_url=api_url, api_key="admin.apikey") + client = rg.Extralit(api_url=api_url, api_key="admin.apikey") client.api.workspaces.delete(workspace_id) def test_list_workspace_datasets(self, httpx_mock: HTTPXMock): @@ -246,7 +246,7 @@ def test_list_workspace_datasets(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/me/datasets") with httpx.Client(): - client = rg.Argilla(api_url=api_url, api_key="admin.apikey") + client = rg.Extralit(api_url=api_url, api_key="admin.apikey") datasets = client.api.datasets.list(workspace_id) assert len(datasets) == 2 for i in range(len(datasets)): From b18a80381dd2755b7d4b7c346d12d567e0ab5945 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 09:41:10 -0700 Subject: [PATCH 10/23] replaced ArgillaAPI to ExtralitAPI --- .../src/extralit_server/alembic/env.py | 22 ++++++++-------- .../api/schemas/v1/settings.py | 4 +-- .../src/extralit_server/contexts/settings.py | 26 +++++++++---------- .../use_markdown_to_format_rich_content.md | 10 +++---- extralit/docs/admin_guide/webhooks.md | 4 +-- extralit/docs/community/developer.md | 6 ++--- extralit/docs/reference/argilla/webhooks.md | 2 +- extralit/docs/reference/argilla/workspaces.md | 2 +- extralit/src/extralit/_api/_client.py | 8 +++--- extralit/src/extralit/_exceptions/_client.py | 4 +-- extralit/src/extralit/cli/app.py | 4 +-- extralit/src/extralit/cli/callback.py | 6 ++--- .../src/extralit/cli/documents/__main__.py | 4 +-- extralit/src/extralit/cli/files/__main__.py | 4 +-- extralit/src/extralit/cli/logout/__main__.py | 9 +++---- extralit/src/extralit/cli/typer_ext.py | 4 +-- extralit/src/extralit/client/core.py | 20 +++++++------- extralit/src/extralit/client/login.py | 6 ++--- 18 files changed, 72 insertions(+), 73 deletions(-) diff --git a/extralit-server/src/extralit_server/alembic/env.py b/extralit-server/src/extralit_server/alembic/env.py index 2d8acfada..577e771fe 100644 --- a/extralit-server/src/extralit_server/alembic/env.py +++ b/extralit-server/src/extralit_server/alembic/env.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from logging.config import fileConfig @@ -24,7 +24,7 @@ # access to the values within the .ini file in use. config = context.config -# Overwrites the SQLAlchemy URL getting it from argilla database_url settings +# Overwrites the SQLAlchemy URL getting it from extralit database_url settings config.set_main_option("sqlalchemy.url", database_url_sync()) # Interpret the config file for Python logging. diff --git a/extralit-server/src/extralit_server/api/schemas/v1/settings.py b/extralit-server/src/extralit_server/api/schemas/v1/settings.py index 8ccf2947d..d8fe73413 100644 --- a/extralit-server/src/extralit_server/api/schemas/v1/settings.py +++ b/extralit-server/src/extralit_server/api/schemas/v1/settings.py @@ -29,11 +29,11 @@ class HuggingfaceSettings(BaseModel): model_config = ConfigDict(from_attributes=True) -class ArgillaSettings(BaseModel): +class ExtralitSettings(BaseModel): show_huggingface_space_persistent_storage_warning: Optional[bool] = None share_your_progress_enabled: bool = False class Settings(BaseModel): - argilla: ArgillaSettings + argilla: ExtralitSettings huggingface: Optional[HuggingfaceSettings] = None diff --git a/extralit-server/src/extralit_server/contexts/settings.py b/extralit-server/src/extralit_server/contexts/settings.py index 4a3575384..5fb16ed00 100644 --- a/extralit-server/src/extralit_server/contexts/settings.py +++ b/extralit-server/src/extralit_server/contexts/settings.py @@ -1,20 +1,20 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typing import Union -from extralit_server.api.schemas.v1.settings import ArgillaSettings, Settings, HuggingfaceSettings +from extralit_server.api.schemas.v1.settings import ExtralitSettings, Settings, HuggingfaceSettings from extralit_server.integrations.huggingface.spaces import HUGGINGFACE_SETTINGS from extralit_server.settings import settings @@ -26,8 +26,8 @@ def get_settings() -> Settings: ) -def _get_argilla_settings() -> ArgillaSettings: - argilla_settings = ArgillaSettings(share_your_progress_enabled=settings.enable_share_your_progress) +def _get_argilla_settings() -> ExtralitSettings: + argilla_settings = ExtralitSettings(share_your_progress_enabled=settings.enable_share_your_progress) if _get_huggingface_settings(): argilla_settings.show_huggingface_space_persistent_storage_warning = ( diff --git a/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md b/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md index e5eece830..338d22bb8 100644 --- a/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md +++ b/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md @@ -50,7 +50,7 @@ A DataURL is a scheme that allows data to be encoded into a base64-encoded strin === "Image" ```python - from argilla.markdown import image_to_html + from extralit.markdown import image_to_html html = image_to_html( "local_image_file.png", @@ -66,7 +66,7 @@ A DataURL is a scheme that allows data to be encoded into a base64-encoded strin === "Audio" ```python - from argilla.markdown import audio_to_html + from extralit.markdown import audio_to_html html = audio_to_html( "local_audio_file.mp3", @@ -84,7 +84,7 @@ A DataURL is a scheme that allows data to be encoded into a base64-encoded strin === "Video" ```python - from argilla.markdown import video_to_thml + from extralit.markdown import video_to_thml html = video_to_html( "local_video_file.mp4", @@ -102,7 +102,7 @@ A DataURL is a scheme that allows data to be encoded into a base64-encoded strin === "PDF" ```python - from argilla.markdown import pdf_to_html + from extralit.markdown import pdf_to_html html = pdf_to_html( "local_pdf_file.pdf", @@ -185,7 +185,7 @@ When working with chat data from multi-turn interaction with a Large Language Mo ```python -from argilla.markdown import chat_to_html +from extralit.markdown import chat_to_html messages = [ {"role": "user", "content": "Hello! How are you?"}, diff --git a/extralit/docs/admin_guide/webhooks.md b/extralit/docs/admin_guide/webhooks.md index 0b0ea0f21..015f26311 100644 --- a/extralit/docs/admin_guide/webhooks.md +++ b/extralit/docs/admin_guide/webhooks.md @@ -16,7 +16,7 @@ The python SDK provides a simple way to create a webhook in Argilla. It allows y import argilla as rg from datetime import datetime -from argilla import webhook_listener +from extralit import webhook_listener @webhook_listener(events="dataset.created") async def my_webhook_handler(dataset: rg.Dataset, type: str, timestamp: datetime): @@ -38,7 +38,7 @@ To run the webhook, you need to define the webhook server in your code and start ```python # my_webhook.py file -from argilla import get_webhook_server +from extralit import get_webhook_server server = get_webhook_server() ``` diff --git a/extralit/docs/community/developer.md b/extralit/docs/community/developer.md index 27c4aaee5..7ed67e224 100644 --- a/extralit/docs/community/developer.md +++ b/extralit/docs/community/developer.md @@ -252,8 +252,8 @@ The CLI uses [Typer](https://typer.tiangolo.com/) for creating the command-line ```python # src/argilla/cli/mycommand/__main__.py import typer -from argilla.cli.callback import init_callback -from argilla.cli.rich import get_argilla_themed_panel +from extralit.cli.callback import init_callback +from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console app = typer.Typer(help="My command description") @@ -273,7 +273,7 @@ def my_subcommand(param: str = typer.Argument(..., help="Parameter description") 2. Register your command in `app.py`: ```python -from argilla.cli import mycommand +from extralit.cli import mycommand app.add_typer(mycommand.app, name="mycommand") ``` diff --git a/extralit/docs/reference/argilla/webhooks.md b/extralit/docs/reference/argilla/webhooks.md index 3f71a4fb3..e894fdba5 100644 --- a/extralit/docs/reference/argilla/webhooks.md +++ b/extralit/docs/reference/argilla/webhooks.md @@ -13,7 +13,7 @@ To listen for incoming webhooks, you can use the `webhook_listener` decorator fu when a webhook is received: ```python -from argilla.webhooks import webhook_listener +from extralit.webhooks import webhook_listener @webhook_listener(events="dataset.created") async def my_webhook_listener(dataset): diff --git a/extralit/docs/reference/argilla/workspaces.md b/extralit/docs/reference/argilla/workspaces.md index 54c94aeca..6e95648b3 100644 --- a/extralit/docs/reference/argilla/workspaces.md +++ b/extralit/docs/reference/argilla/workspaces.md @@ -154,7 +154,7 @@ Update schemas in a workspace. ```python import pandera as pa -from argilla._models._schema import SchemaStructure +from extralit._models._schema import SchemaStructure # Create schemas schema1 = pa.DataFrameSchema( diff --git a/extralit/src/extralit/_api/_client.py b/extralit/src/extralit/_api/_client.py index 6b07ffdd7..8387d20c2 100644 --- a/extralit/src/extralit/_api/_client.py +++ b/extralit/src/extralit/_api/_client.py @@ -19,7 +19,7 @@ from extralit._api._webhooks import WebhooksAPI from extralit._exceptions._api import UnauthorizedError -from extralit._exceptions._client import ArgillaCredentialsError +from extralit._exceptions._client import ExtralitCredentialsError from extralit._api import HTTPClientConfig, create_http_client from extralit._api._datasets import DatasetsAPI @@ -44,7 +44,7 @@ DEFAULT_HTTP_CONFIG = HTTPClientConfig(api_url=ARGILLA_API_URL, api_key=ARGILLA_API_KEY) -class ArgillaAPI: +class ExtralitAPI: """Argilla API access object.""" def __init__(self, http_client: httpx.Client): @@ -146,12 +146,12 @@ def __init__( **http_client_args, ) - self.api = ArgillaAPI(self.http_client) + self.api = ExtralitAPI(self.http_client) try: self._validate_connection() except UnauthorizedError as e: - raise ArgillaCredentialsError() from e + raise ExtralitCredentialsError() from e ############################## # Utility methods diff --git a/extralit/src/extralit/_exceptions/_client.py b/extralit/src/extralit/_exceptions/_client.py index e8f4c5a4d..c1450179e 100644 --- a/extralit/src/extralit/_exceptions/_client.py +++ b/extralit/src/extralit/_exceptions/_client.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,6 +15,6 @@ from extralit._exceptions._base import ArgillaError -class ArgillaCredentialsError(ArgillaError): +class ExtralitCredentialsError(ArgillaError): def __init__(self, message: str = "Credentials (api_key and/or api_url) are invalid") -> None: super().__init__(message) diff --git a/extralit/src/extralit/cli/app.py b/extralit/src/extralit/cli/app.py index bad1aee11..199366526 100644 --- a/extralit/src/extralit/cli/app.py +++ b/extralit/src/extralit/cli/app.py @@ -14,7 +14,7 @@ import warnings -from extralit.cli.typer_ext import ArgillaTyper +from extralit.cli.typer_ext import ExtralitTyper # Import all CLI modules that will be registered with the app from extralit.cli import ( @@ -34,7 +34,7 @@ warnings.simplefilter("ignore", UserWarning) -app = ArgillaTyper(help="Extralit CLI", no_args_is_help=True) +app = ExtralitTyper(help="Extralit CLI", no_args_is_help=True) @app.error_handler(PermissionError) diff --git a/extralit/src/extralit/cli/callback.py b/extralit/src/extralit/cli/callback.py index 0e3cd00fe..5df722762 100644 --- a/extralit/src/extralit/cli/callback.py +++ b/extralit/src/extralit/cli/callback.py @@ -35,9 +35,9 @@ def echo_in_panel(text, title=None, title_align="center", success=True): def init_callback() -> "Extralit": """Initialize Argilla client if user is logged in, otherwise exit.""" - from extralit.client.login import ArgillaCredentials + from extralit.client.login import ExtralitCredentials - if not ArgillaCredentials.exists(): + if not ExtralitCredentials.exists(): echo_in_panel( "You are not logged in. Please run 'extralit login' to login to the Extralit server.", title="Not logged in", @@ -53,7 +53,7 @@ def init_callback() -> "Extralit": return client except Exception as e: echo_in_panel( - f"The Extralit server ({ArgillaCredentials.load().api_url}) you are logged in is not available or not responding. Please make sure it's running and try again.\n{e}", + f"The Extralit server ({ExtralitCredentials.load().api_url}) you are logged in is not available or not responding. Please make sure it's running and try again.\n{e}", title="Server not available", title_align="left", success=False, diff --git a/extralit/src/extralit/cli/documents/__main__.py b/extralit/src/extralit/cli/documents/__main__.py index bdd1b5d5b..a37cddb99 100644 --- a/extralit/src/extralit/cli/documents/__main__.py +++ b/extralit/src/extralit/cli/documents/__main__.py @@ -14,7 +14,7 @@ """Documents CLI commands.""" -from extralit.cli.typer_ext import ArgillaTyper +from extralit.cli.typer_ext import ExtralitTyper from extralit.cli.documents.list import list_documents from extralit.cli.documents.add import add_document @@ -22,7 +22,7 @@ from extralit.cli.documents.delete import delete_document from extralit.cli.documents.import_history import list_import_histories -app = ArgillaTyper(help="Manage documents in workspaces", no_args_is_help=True) +app = ExtralitTyper(help="Manage documents in workspaces", no_args_is_help=True) # Register all commands app.command(name="list")(list_documents) diff --git a/extralit/src/extralit/cli/files/__main__.py b/extralit/src/extralit/cli/files/__main__.py index 01bc84d54..c6f30b00d 100644 --- a/extralit/src/extralit/cli/files/__main__.py +++ b/extralit/src/extralit/cli/files/__main__.py @@ -12,14 +12,14 @@ # See the License for the specific language governing permissions and # limitations under the License. -from extralit.cli.typer_ext import ArgillaTyper +from extralit.cli.typer_ext import ExtralitTyper from extralit.cli.files.list import list_files from extralit.cli.files.upload import upload_file from extralit.cli.files.download import download_file from extralit.cli.files.delete import delete_file -app = ArgillaTyper(help="Manage files in workspaces", no_args_is_help=True) +app = ExtralitTyper(help="Manage files in workspaces", no_args_is_help=True) # Register all commands app.command(name="list")(list_files) diff --git a/extralit/src/extralit/cli/logout/__main__.py b/extralit/src/extralit/cli/logout/__main__.py index 0ce75cf13..8e4a703b0 100644 --- a/extralit/src/extralit/cli/logout/__main__.py +++ b/extralit/src/extralit/cli/logout/__main__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -19,10 +19,10 @@ def remove_credentials(): """Remove stored credentials.""" - from extralit.client.login import ArgillaCredentials + from extralit.client.login import ExtralitCredentials try: - ArgillaCredentials.remove() + ExtralitCredentials.remove() except FileNotFoundError: # If credentials don't exist, that's fine pass @@ -36,7 +36,6 @@ def logout(force: bool = typer.Option(False, help="Force the logout even if the from extralit.cli.callback import init_callback from extralit.cli.rich import get_argilla_themed_panel from rich.console import Console - from extralit.client.login import ArgillaCredentials if not force: try: @@ -64,4 +63,4 @@ def logout(force: bool = typer.Option(False, help="Force the logout even if the if __name__ == "__main__": - app() \ No newline at end of file + app() diff --git a/extralit/src/extralit/cli/typer_ext.py b/extralit/src/extralit/cli/typer_ext.py index 143da8e7e..593ffd37c 100644 --- a/extralit/src/extralit/cli/typer_ext.py +++ b/extralit/src/extralit/cli/typer_ext.py @@ -44,7 +44,7 @@ def make_metavar(self, ctx=None): HandleErrorFunc = Callable[[Exception], None] -class ArgillaTyper(typer.Typer): +class ExtralitTyper(typer.Typer): error_handlers: Dict[Type[Exception], HandleErrorFunc] = {} def command( @@ -87,6 +87,6 @@ def __call__(self, *args: Any, **kwargs: Any) -> Any: def run(function: Callable[..., Coroutine[Any, Any, Any]]) -> None: - app = ArgillaTyper(add_completion=False) + app = ExtralitTyper(add_completion=False) app.command()(function) app() diff --git a/extralit/src/extralit/client/core.py b/extralit/src/extralit/client/core.py index 79dfc3d1c..b14851092 100644 --- a/extralit/src/extralit/client/core.py +++ b/extralit/src/extralit/client/core.py @@ -25,10 +25,10 @@ from extralit.client.resources import Datasets, Users, Webhooks, Workspaces from extralit.users import User -__all__ = ["Argilla"] +__all__ = ["Extralit"] -class Argilla(_api.APIClient, SpacesDeploymentMixin, NotebookHTMLReprMixin): +class Extralit(_api.APIClient, SpacesDeploymentMixin, NotebookHTMLReprMixin): """Argilla API client. This is the main entry point to interact with the API. Attributes: @@ -39,7 +39,7 @@ class Argilla(_api.APIClient, SpacesDeploymentMixin, NotebookHTMLReprMixin): """ # Default instance of Argilla - _default_client: Optional["Argilla"] = None + _default_client: Optional["Extralit"] = None def __init__( self, @@ -75,7 +75,7 @@ def from_credentials( workspace: Optional[str] = None, extra_headers: Optional[dict] = None, **kwargs, - ) -> "Argilla": + ) -> "Extralit": """Create client from stored credentials. If api_url and api_key are not provided, they will be loaded from environment variables @@ -91,14 +91,14 @@ def from_credentials( Returns: Argilla: An initialized Argilla client. """ - from extralit.client.login import ArgillaCredentials + from extralit.client.login import ExtralitCredentials api_url = api_url or os.environ.get("ARGILLA_API_URL") api_key = api_key or os.environ.get("ARGILLA_API_KEY") workspace = workspace or os.environ.get("EXTRALIT_WORKSPACE") - if (not api_url or not api_key) and ArgillaCredentials.exists(): - credentials = ArgillaCredentials.load() + if (not api_url or not api_key) and ExtralitCredentials.exists(): + credentials = ExtralitCredentials.load() api_url = api_url or credentials.api_url api_key = api_key or credentials.api_key workspace = workspace or credentials.workspace @@ -151,13 +151,13 @@ def me(self) -> "User": ############################ @classmethod - def _set_default(cls, client: "Argilla") -> None: + def _set_default(cls, client: "Extralit") -> None: """Set the default instance of Argilla.""" cls._default_client = client @classmethod - def _get_default(cls) -> "Argilla": + def _get_default(cls) -> "Extralit": """Get the default instance of Argilla. If it doesn't exist, create a new one.""" if cls._default_client is None: - cls._default_client = Argilla() + cls._default_client = Extralit() return cls._default_client diff --git a/extralit/src/extralit/client/login.py b/extralit/src/extralit/client/login.py index 0a32890fe..788ca4eb2 100644 --- a/extralit/src/extralit/client/login.py +++ b/extralit/src/extralit/client/login.py @@ -27,7 +27,7 @@ EXTRALIT_CREDENTIALS_FILE = EXTRALIT_CACHE_DIR / "credentials.json" -class ArgillaCredentials: +class ExtralitCredentials: def __init__( self, api_url: str, @@ -65,7 +65,7 @@ def save(self) -> None: ) @classmethod - def load(cls) -> "ArgillaCredentials": + def load(cls) -> "ExtralitCredentials": """Load credentials from file. Returns: @@ -136,7 +136,7 @@ def login( # If we get here, the credentials are valid # Save credentials - ArgillaCredentials(api_url=api_url, api_key=api_key, workspace=workspace, extra_headers=extra_headers).save() + ExtralitCredentials(api_url=api_url, api_key=api_key, workspace=workspace, extra_headers=extra_headers).save() except Exception as e: # Authentication failed raise ValueError(f"Failed to authenticate with the provided credentials: {str(e)}") From 041fba42fdd04966c9cc9a8971cd2ce191263945 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 09:52:45 -0700 Subject: [PATCH 11/23] replaced `rg.` to `ex.` --- .github/copilot-instructions.md | 2 +- .../home/sidebar/useImportFromPython.ts | 10 +- argilla-frontend/docs/snippets/start_page.md | 14 +- .../v1/domain/entities/dataset/Dataset.ts | 2 +- examples/custom_field/custom_field.ipynb | 554 +- examples/custom_field/table_field.ipynb | 1548 +- .../document_extraction/LLM_extractions.ipynb | 38322 ++++++++-------- .../PDF_preprocessing.ipynb | 5812 +-- .../document_extraction/setup_workspace.ipynb | 1156 +- examples/webhooks/basic-webhooks/main.py | 18 +- extralit-server/.env.dev | 2 +- .../docker/extralit-hf-spaces/README.md | 2 +- extralit-server/docker/server/README.md | 2 +- .../extralit_server/api/handlers/v1/files.py | 2 +- .../contexts/hub_templates/README.md.jinja2 | 4 +- .../src/extralit_server/settings.py | 2 +- .../tests/unit/commons/test_settings.py | 22 +- extralit-server/tests/unit/conftest.py | 2 +- extralit/README.md | 2 +- extralit/docs/admin_guide/custom_fields.md | 20 +- extralit/docs/admin_guide/dataset.md | 172 +- extralit/docs/admin_guide/distribution.md | 16 +- extralit/docs/admin_guide/import_export.md | 88 +- .../migrate_from_legacy_datasets.md | 82 +- extralit/docs/admin_guide/query.md | 72 +- extralit/docs/admin_guide/record.md | 60 +- .../use_markdown_to_format_rich_content.md | 20 +- extralit/docs/admin_guide/user.md | 26 +- extralit/docs/admin_guide/webhooks.md | 16 +- extralit/docs/admin_guide/workspace.md | 22 +- extralit/docs/community/adding_language.md | 26 +- .../docs/getting_started/development_setup.md | 4 +- ...how-to-configure-argilla-on-huggingface.md | 4 +- extralit/docs/getting_started/installation.md | 2 +- extralit/docs/getting_started/quickstart.md | 4 +- .../reference/argilla-server/configuration.md | 2 +- extralit/docs/reference/argilla/SUMMARY.md | 26 +- extralit/docs/reference/argilla/client.md | 6 +- .../argilla/datasets/dataset_records.md | 12 +- .../reference/argilla/datasets/datasets.md | 10 +- extralit/docs/reference/argilla/markdown.md | 2 +- .../reference/argilla/records/metadata.md | 10 +- .../docs/reference/argilla/records/records.md | 8 +- .../reference/argilla/records/responses.md | 20 +- .../reference/argilla/records/suggestions.md | 20 +- .../docs/reference/argilla/records/vectors.md | 10 +- extralit/docs/reference/argilla/search.md | 6 +- .../docs/reference/argilla/settings/fields.md | 14 +- .../argilla/settings/metadata_property.md | 18 +- .../reference/argilla/settings/questions.md | 18 +- .../reference/argilla/settings/settings.md | 48 +- .../argilla/settings/task_distribution.md | 10 +- .../reference/argilla/settings/vectors.md | 8 +- extralit/docs/reference/argilla/users.md | 6 +- extralit/docs/reference/argilla/webhooks.md | 2 +- extralit/docs/reference/argilla/workspaces.md | 4 +- .../docs/tutorials/image_classification.ipynb | 12 +- .../docs/tutorials/image_preference.ipynb | 24 +- .../docs/tutorials/text_classification.ipynb | 12 +- .../docs/tutorials/token_classification.ipynb | 14 +- extralit/src/extralit/_helpers/_deploy.py | 4 +- .../datasets/_io/card/argilla_template.md | 28 +- extralit/src/extralit/datasets/_resource.py | 4 +- .../src/extralit/records/_dataset_records.py | 2 +- extralit/src/extralit/responses.py | 2 +- extralit/src/extralit/settings/_io/_hub.py | 16 +- extralit/src/extralit/webhooks/_helpers.py | 4 +- extralit/tests/integration/conftest.py | 10 +- .../tests/integration/test_add_records.py | 208 +- .../integration/test_dataset_workspace.py | 70 +- .../tests/integration/test_delete_records.py | 20 +- .../tests/integration/test_export_dataset.py | 70 +- .../tests/integration/test_export_records.py | 38 +- .../tests/integration/test_import_features.py | 28 +- .../tests/integration/test_manage_metadata.py | 14 +- .../tests/integration/test_query_records.py | 12 +- .../integration/test_ranking_questions.py | 18 +- .../tests/integration/test_update_records.py | 26 +- extralit/tests/integration/test_vectors.py | 20 +- ...est_record_export_import_compatibillity.py | 14 +- ...t_settings_export_import_compatibillity.py | 22 +- .../tests/unit/helpers/test_resource_repr.py | 14 +- extralit/tests/unit/test_io/test_generic.py | 20 +- .../tests/unit/test_io/test_hf_datasets.py | 38 +- extralit/tests/unit/test_record_ingestion.py | 30 +- .../unit/test_resources/test_datasets.py | 20 +- .../tests/unit/test_resources/test_fields.py | 4 +- .../unit/test_resources/test_questions.py | 4 +- .../tests/unit/test_resources/test_users.py | 28 +- .../unit/test_resources/test_workspaces.py | 34 +- .../tests/unit/test_settings/test_metadata.py | 16 +- .../test_multi_label_question.py | 10 +- .../tests/unit/test_settings/test_settings.py | 130 +- .../test_settings/test_settings_fields.py | 20 +- .../test_settings_from_features.py | 28 +- .../test_settings_mapping_record_ingestion.py | 22 +- .../test_settings/test_settings_questions.py | 20 +- .../unit/test_settings/test_span_question.py | 12 +- 98 files changed, 24757 insertions(+), 24757 deletions(-) diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 7259e7a61..55e55413e 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -297,7 +297,7 @@ This section describes how extracted data from documents is structured, stored, ### 2. Data Normalization into Argilla Records -Data from `PaperExtraction` is normalized into multiple `rg.Record` objects in Argilla datasets, separating document metadata from specific extractions: +Data from `PaperExtraction` is normalized into multiple `ex.Record` objects in Argilla datasets, separating document metadata from specific extractions: - **Document-Level Record**: (`extralit/src/extralit/pipeline/export/record.py:create_publication_records()`) - Single "publication" record per document diff --git a/argilla-frontend/components/features/home/sidebar/useImportFromPython.ts b/argilla-frontend/components/features/home/sidebar/useImportFromPython.ts index 2e2668b84..04deeed0d 100644 --- a/argilla-frontend/components/features/home/sidebar/useImportFromPython.ts +++ b/argilla-frontend/components/features/home/sidebar/useImportFromPython.ts @@ -14,27 +14,27 @@ export const useImportFromPython = () => { import argilla as rg -client = rg.Argilla( +client = ex.Extralit( api_url="${window.location.origin}", api_key="${user.apiKey}", ) -settings = rg.Settings( +settings = ex.Settings( guidelines="These are some guidelines.", fields=[ - rg.TextField( + ex.TextField( name="text", ), ], questions=[ - rg.LabelQuestion( + ex.LabelQuestion( name="label", labels=["yes", "no"] ), ], ) -dataset = rg.Dataset( +dataset = ex.Dataset( name="my_dataset", settings=settings, ) diff --git a/argilla-frontend/docs/snippets/start_page.md b/argilla-frontend/docs/snippets/start_page.md index a974e5c2d..f53f4c6c2 100644 --- a/argilla-frontend/docs/snippets/start_page.md +++ b/argilla-frontend/docs/snippets/start_page.md @@ -27,7 +27,7 @@ pip install extralit ```python import argilla as rg -client = rg.Argilla( +client = ex.Extralit( [local_]api_url="[LOCAL_HOST]", [hf_]api_url="https://[HF_HOST]", api_key="[USER_API_KEY]" @@ -41,24 +41,24 @@ Specify a workspace where the dataset will be created. Check your workspaces in Here, we are defining a creating a dataset with a text field and a label question ("positive" and "negative"), check the docs to [create a fully custom dataset](https://docs.extralit.ai/latest/admin_guide/dataset/). Don't forget to replace "". ```python -settings = rg.Settings( +settings = ex.Settings( guidelines="Classify the reviews as positive or negative.", fields=[ - rg.TextField( + ex.TextField( name="review", title="Text from the review", use_markdown=False, ), ], questions=[ - rg.LabelQuestion( + ex.LabelQuestion( name="my_label", title="In which category does this article fit?", labels=["positive", "negative"], ) ], ) -dataset = rg.Dataset( +dataset = ex.Dataset( name=f"my_first_dataset", workspace="default", # change this to your workspace settings=settings, @@ -75,12 +75,12 @@ You can also use `pandas` or `datasets.load_dataset` to [read an existing datase ```python records = [ - rg.Record( + ex.Record( fields={ "review": "This is a great product.", }, ), - rg.Record( + ex.Record( fields={ "review": "This is a bad product.", }, diff --git a/argilla-frontend/v1/domain/entities/dataset/Dataset.ts b/argilla-frontend/v1/domain/entities/dataset/Dataset.ts index 2a58f17ff..6eca740de 100644 --- a/argilla-frontend/v1/domain/entities/dataset/Dataset.ts +++ b/argilla-frontend/v1/domain/entities/dataset/Dataset.ts @@ -154,7 +154,7 @@ export class Dataset { import argilla as rg from datasets import load_dataset - client = rg.Argilla( + client = ex.Extralit( api_url="${window.location.origin}", api_key="${user.apiKey}" ) diff --git a/examples/custom_field/custom_field.ipynb b/examples/custom_field/custom_field.ipynb index bb20ea42f..a54eefe50 100644 --- a/examples/custom_field/custom_field.ipynb +++ b/examples/custom_field/custom_field.ipynb @@ -1,279 +1,279 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "ImportError", - "evalue": "cannot import name 'field_serializer' from 'pydantic' (/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/pydantic/__init__.cpython-39-darwin.so)", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[4], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdatetime\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m datetime\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mrg\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdatasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m load_dataset\n\u001b[1;32m 6\u001b[0m client \u001b[38;5;241m=\u001b[39m rg\u001b[38;5;241m.\u001b[39mArgilla()\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/__init__.py:15\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Argilla, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# See the License for the specific language governing permissions and\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m# limitations under the License.\u001b[39;00m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_version\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m __version__ \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclient\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdatasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mworkspaces\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/client.py:22\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtyping\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m TYPE_CHECKING, List, Optional, Union, overload\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01muuid\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UUID\n\u001b[0;32m---> 22\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _api\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_base\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ResourceAPI\n\u001b[1;32m 24\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_client\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m DEFAULT_HTTP_CONFIG\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/__init__.py:15\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Argilla, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# See the License for the specific language governing permissions and\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m# limitations under the License.\u001b[39;00m\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_datasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_http\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_workspaces\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_datasets.py:21\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_base\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ResourceAPI\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_exceptions\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m api_error_handler\n\u001b[0;32m---> 21\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m DatasetModel\n\u001b[1;32m 23\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDatasetsAPI\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_dataset_progress\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UserProgressModel, DatasetProgressModel\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_models/__init__.py:17\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Argilla, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m# We skip the flake8 check because we are importing all the models and the import order is important\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# flake8: noqa\u001b[39;00m\n\u001b[0;32m---> 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_resource\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ResourceModel\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_workspace\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m WorkspaceModel\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_user\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UserModel, Role\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_models/_resource.py:19\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtyping\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Optional\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01muuid\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UUID\n\u001b[0;32m---> 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpydantic\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m BaseModel, field_serializer\n\u001b[1;32m 22\u001b[0m \u001b[38;5;28;01mclass\u001b[39;00m \u001b[38;5;21;01mResourceModel\u001b[39;00m(BaseModel):\n\u001b[1;32m 23\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Base model for all resources (DatasetModel, WorkspaceModel, UserModel, etc.)\"\"\"\u001b[39;00m\n", - "\u001b[0;31mImportError\u001b[0m: cannot import name 'field_serializer' from 'pydantic' (/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/pydantic/__init__.cpython-39-darwin.so)" - ] - } - ], - "source": [ - "from datetime import datetime\n", - "\n", - "import argilla as rg\n", - "from datasets import load_dataset\n", - "\n", - "client = rg.Argilla()" - ] - }, - { - "cell_type": "code", - "execution_count": 106, - "metadata": {}, - "outputs": [], - "source": [ - "for dataset in client.datasets.list():\n", - " dataset.delete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Chat Field\n" - ] - }, - { - "cell_type": "code", - "execution_count": 108, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/ben/code/argilla/argilla/src/argilla/datasets/_resource.py:203: UserWarning: Workspace not provided. Using default workspace: argilla id: 735cae0d-eb08-45c3-ad79-0a11ad4dd2c2\n", - " warnings.warn(f\"Workspace not provided. Using default workspace: {workspace.name} id: {workspace.id}\")\n" - ] + "cells": [ + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "ImportError", + "evalue": "cannot import name 'field_serializer' from 'pydantic' (/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/pydantic/__init__.cpython-39-darwin.so)", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[4], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdatetime\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m datetime\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mrg\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdatasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m load_dataset\n\u001b[1;32m 6\u001b[0m client \u001b[38;5;241m=\u001b[39m rg\u001b[38;5;241m.\u001b[39mArgilla()\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/__init__.py:15\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Argilla, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# See the License for the specific language governing permissions and\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m# limitations under the License.\u001b[39;00m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_version\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m __version__ \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclient\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdatasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mworkspaces\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/client.py:22\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtyping\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m TYPE_CHECKING, List, Optional, Union, overload\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01muuid\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UUID\n\u001b[0;32m---> 22\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _api\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_base\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ResourceAPI\n\u001b[1;32m 24\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_client\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m DEFAULT_HTTP_CONFIG\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/__init__.py:15\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Argilla, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# See the License for the specific language governing permissions and\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m# limitations under the License.\u001b[39;00m\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_datasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_http\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_workspaces\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_datasets.py:21\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_base\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ResourceAPI\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_exceptions\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m api_error_handler\n\u001b[0;32m---> 21\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m DatasetModel\n\u001b[1;32m 23\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDatasetsAPI\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_dataset_progress\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UserProgressModel, DatasetProgressModel\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_models/__init__.py:17\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Argilla, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m# We skip the flake8 check because we are importing all the models and the import order is important\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# flake8: noqa\u001b[39;00m\n\u001b[0;32m---> 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_resource\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ResourceModel\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_workspace\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m WorkspaceModel\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_user\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UserModel, Role\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_models/_resource.py:19\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtyping\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Optional\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01muuid\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UUID\n\u001b[0;32m---> 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpydantic\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m BaseModel, field_serializer\n\u001b[1;32m 22\u001b[0m \u001b[38;5;28;01mclass\u001b[39;00m \u001b[38;5;21;01mResourceModel\u001b[39;00m(BaseModel):\n\u001b[1;32m 23\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Base model for all resources (DatasetModel, WorkspaceModel, UserModel, etc.)\"\"\"\u001b[39;00m\n", + "\u001b[0;31mImportError\u001b[0m: cannot import name 'field_serializer' from 'pydantic' (/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/pydantic/__init__.cpython-39-darwin.so)" + ] + } + ], + "source": [ + "from datetime import datetime\n", + "\n", + "import argilla as rg\n", + "from datasets import load_dataset\n", + "\n", + "client = ex.Extralit()" + ] + }, + { + "cell_type": "code", + "execution_count": 106, + "metadata": {}, + "outputs": [], + "source": [ + "for dataset in client.datasets.list():\n", + " dataset.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chat Field\n" + ] + }, + { + "cell_type": "code", + "execution_count": 108, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/ben/code/argilla/argilla/src/argilla/datasets/_resource.py:203: UserWarning: Workspace not provided. Using default workspace: argilla id: 735cae0d-eb08-45c3-ad79-0a11ad4dd2c2\n", + " warnings.warn(f\"Workspace not provided. Using default workspace: {workspace.name} id: {workspace.id}\")\n" + ] + }, + { + "data": { + "text/plain": [ + "Dataset(id=UUID('ee5fc998-b475-45a8-86e7-7ff427d43268') inserted_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 148167) updated_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 291527) name='static_chat_20240823124650' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('735cae0d-eb08-45c3-ad79-0a11ad4dd2c2') last_activity_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 291527))" + ] + }, + "execution_count": 108, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "settings = ex.Settings(\n", + " fields=[\n", + " ex.ChatField(\n", + " name=\"chosen\",\n", + " ),\n", + " ex.ChatField(\n", + " name=\"rejected\",\n", + " ),\n", + " ],\n", + " questions=[\n", + " ex.RatingQuestion(\"rating\", title=\"How would you rate the conversation?\", required=True, values=[1, 2, 3, 4, 5]),\n", + " ex.TextQuestion(\"improved_chosen\", title=\"Rewrite the chosen conversation\", required=False),\n", + " ],\n", + ")\n", + "\n", + "dataset = ex.Dataset(\n", + " settings=settings,\n", + " name=f\"static_chat_{datetime.now().strftime('%Y%m%d%H%M%S')}\",\n", + ")\n", + "\n", + "dataset.create()" + ] + }, + { + "cell_type": "code", + "execution_count": 109, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/ben/code/argilla/argilla/src/argilla/records/_mapping/_mapper.py:89: UserWarning: Keys ['source', 'chosen_rating', 'chosen_model', 'rejected_rating', 'rejected_model'] in data are not present in the mapping and will be ignored.\n", + " warnings.warn(f\"Keys {unknown_keys} in data are not present in the mapping and will be ignored.\")\n" + ] + }, + { + "data": { + "text/html": [ + "
DatasetRecords: The provided batch size 256 was normalized. Using value 100.\n",
+                            "
\n" + ], + "text/plain": [ + "DatasetRecords: The provided batch size \u001b[1;36m256\u001b[0m was normalized. Using value \u001b[1;36m100\u001b[0m.\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Sending records...: 100%|██████████| 1/1 [00:00<00:00, 3.45batch/s]\n" + ] + }, + { + "data": { + "text/plain": [ + "DatasetRecords(Dataset(id=UUID('ee5fc998-b475-45a8-86e7-7ff427d43268') inserted_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 148167) updated_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 291527) name='static_chat_20240823124650' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('735cae0d-eb08-45c3-ad79-0a11ad4dd2c2') last_activity_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 291527)))" + ] + }, + "execution_count": 109, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ds = load_dataset(\"argilla/Capybara-Preferences\", split=\"train[:100]\")\n", + "dataset.records.log(ds)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Custom Field" + ] + }, + { + "cell_type": "code", + "execution_count": 110, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Dataset(id=UUID('620fb219-73cb-42c6-bad0-456880a93ab9') inserted_at=datetime.datetime(2024, 8, 23, 10, 46, 58, 842638) updated_at=datetime.datetime(2024, 8, 23, 10, 46, 59, 10418) name='interactive_chat_20240823124658' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('735cae0d-eb08-45c3-ad79-0a11ad4dd2c2') last_activity_at=datetime.datetime(2024, 8, 23, 10, 46, 59, 10418))" + ] + }, + "execution_count": 110, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "html_template_path = \"interactive_chat.html\"\n", + "\n", + "settings = ex.Settings(\n", + " fields=[\n", + " ex.CustomField(name=\"chosen\", template=html_template_path, required=False),\n", + " ex.ChatField(\n", + " name=\"rejected\",\n", + " ),\n", + " ],\n", + " questions=[\n", + " ex.RatingQuestion(\n", + " \"rating\", title=\"How would you rate the conversation?\", required=True, values=[1, 2, 3, 4, 5]\n", + " ),\n", + " ex.TextQuestion(\n", + " \"improved_chosen\", title=\"Rewrite the chosen conversation\", required=True\n", + " ),\n", + " ],\n", + ")\n", + "\n", + "dataset = ex.Dataset(\n", + " settings=settings,\n", + " name=f\"interactive_chat_{datetime.now().strftime('%Y%m%d%H%M%S')}\",\n", + ")\n", + "\n", + "dataset.create()" + ] + }, + { + "cell_type": "code", + "execution_count": 111, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/ben/code/argilla/argilla/src/argilla/records/_mapping/_mapper.py:89: UserWarning: Keys ['source', 'chosen_rating', 'chosen_model', 'rejected_rating', 'rejected_model', 'messages'] in data are not present in the mapping and will be ignored.\n", + " warnings.warn(f\"Keys {unknown_keys} in data are not present in the mapping and will be ignored.\")\n" + ] + }, + { + "data": { + "text/html": [ + "
DatasetRecords: The provided batch size 256 was normalized. Using value 100.\n",
+                            "
\n" + ], + "text/plain": [ + "DatasetRecords: The provided batch size \u001b[1;36m256\u001b[0m was normalized. Using value \u001b[1;36m100\u001b[0m.\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Sending records...: 100%|██████████| 1/1 [00:00<00:00, 3.32batch/s]\n" + ] + }, + { + "data": { + "text/plain": [ + "DatasetRecords(Dataset(id=UUID('620fb219-73cb-42c6-bad0-456880a93ab9') inserted_at=datetime.datetime(2024, 8, 23, 10, 46, 58, 842638) updated_at=datetime.datetime(2024, 8, 23, 10, 46, 59, 10418) name='interactive_chat_20240823124658' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('735cae0d-eb08-45c3-ad79-0a11ad4dd2c2') last_activity_at=datetime.datetime(2024, 8, 23, 10, 46, 59, 10418)))" + ] + }, + "execution_count": 111, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ds = load_dataset(\"argilla/Capybara-Preferences\", split=\"train[:100]\")\n", + "ds = ds.map(lambda x: {\"messages\": x[\"chosen\"]})\n", + "dataset.records.log(ds)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.19" + } }, - { - "data": { - "text/plain": [ - "Dataset(id=UUID('ee5fc998-b475-45a8-86e7-7ff427d43268') inserted_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 148167) updated_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 291527) name='static_chat_20240823124650' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('735cae0d-eb08-45c3-ad79-0a11ad4dd2c2') last_activity_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 291527))" - ] - }, - "execution_count": 108, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "settings = rg.Settings(\n", - " fields=[\n", - " rg.ChatField(\n", - " name=\"chosen\",\n", - " ),\n", - " rg.ChatField(\n", - " name=\"rejected\",\n", - " ),\n", - " ],\n", - " questions=[\n", - " rg.RatingQuestion(\"rating\", title=\"How would you rate the conversation?\", required=True, values=[1, 2, 3, 4, 5]),\n", - " rg.TextQuestion(\"improved_chosen\", title=\"Rewrite the chosen conversation\", required=False),\n", - " ],\n", - ")\n", - "\n", - "dataset = rg.Dataset(\n", - " settings=settings,\n", - " name=f\"static_chat_{datetime.now().strftime('%Y%m%d%H%M%S')}\",\n", - ")\n", - "\n", - "dataset.create()" - ] - }, - { - "cell_type": "code", - "execution_count": 109, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/ben/code/argilla/argilla/src/argilla/records/_mapping/_mapper.py:89: UserWarning: Keys ['source', 'chosen_rating', 'chosen_model', 'rejected_rating', 'rejected_model'] in data are not present in the mapping and will be ignored.\n", - " warnings.warn(f\"Keys {unknown_keys} in data are not present in the mapping and will be ignored.\")\n" - ] - }, - { - "data": { - "text/html": [ - "
DatasetRecords: The provided batch size 256 was normalized. Using value 100.\n",
-       "
\n" - ], - "text/plain": [ - "DatasetRecords: The provided batch size \u001b[1;36m256\u001b[0m was normalized. Using value \u001b[1;36m100\u001b[0m.\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Sending records...: 100%|██████████| 1/1 [00:00<00:00, 3.45batch/s]\n" - ] - }, - { - "data": { - "text/plain": [ - "DatasetRecords(Dataset(id=UUID('ee5fc998-b475-45a8-86e7-7ff427d43268') inserted_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 148167) updated_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 291527) name='static_chat_20240823124650' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('735cae0d-eb08-45c3-ad79-0a11ad4dd2c2') last_activity_at=datetime.datetime(2024, 8, 23, 10, 46, 50, 291527)))" - ] - }, - "execution_count": 109, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ds = load_dataset(\"argilla/Capybara-Preferences\", split=\"train[:100]\")\n", - "dataset.records.log(ds)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Custom Field" - ] - }, - { - "cell_type": "code", - "execution_count": 110, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Dataset(id=UUID('620fb219-73cb-42c6-bad0-456880a93ab9') inserted_at=datetime.datetime(2024, 8, 23, 10, 46, 58, 842638) updated_at=datetime.datetime(2024, 8, 23, 10, 46, 59, 10418) name='interactive_chat_20240823124658' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('735cae0d-eb08-45c3-ad79-0a11ad4dd2c2') last_activity_at=datetime.datetime(2024, 8, 23, 10, 46, 59, 10418))" - ] - }, - "execution_count": 110, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "html_template_path = \"interactive_chat.html\"\n", - "\n", - "settings = rg.Settings(\n", - " fields=[\n", - " rg.CustomField(name=\"chosen\", template=html_template_path, required=False),\n", - " rg.ChatField(\n", - " name=\"rejected\",\n", - " ),\n", - " ],\n", - " questions=[\n", - " rg.RatingQuestion(\n", - " \"rating\", title=\"How would you rate the conversation?\", required=True, values=[1, 2, 3, 4, 5]\n", - " ),\n", - " rg.TextQuestion(\n", - " \"improved_chosen\", title=\"Rewrite the chosen conversation\", required=True\n", - " ),\n", - " ],\n", - ")\n", - "\n", - "dataset = rg.Dataset(\n", - " settings=settings,\n", - " name=f\"interactive_chat_{datetime.now().strftime('%Y%m%d%H%M%S')}\",\n", - ")\n", - "\n", - "dataset.create()" - ] - }, - { - "cell_type": "code", - "execution_count": 111, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/ben/code/argilla/argilla/src/argilla/records/_mapping/_mapper.py:89: UserWarning: Keys ['source', 'chosen_rating', 'chosen_model', 'rejected_rating', 'rejected_model', 'messages'] in data are not present in the mapping and will be ignored.\n", - " warnings.warn(f\"Keys {unknown_keys} in data are not present in the mapping and will be ignored.\")\n" - ] - }, - { - "data": { - "text/html": [ - "
DatasetRecords: The provided batch size 256 was normalized. Using value 100.\n",
-       "
\n" - ], - "text/plain": [ - "DatasetRecords: The provided batch size \u001b[1;36m256\u001b[0m was normalized. Using value \u001b[1;36m100\u001b[0m.\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Sending records...: 100%|██████████| 1/1 [00:00<00:00, 3.32batch/s]\n" - ] - }, - { - "data": { - "text/plain": [ - "DatasetRecords(Dataset(id=UUID('620fb219-73cb-42c6-bad0-456880a93ab9') inserted_at=datetime.datetime(2024, 8, 23, 10, 46, 58, 842638) updated_at=datetime.datetime(2024, 8, 23, 10, 46, 59, 10418) name='interactive_chat_20240823124658' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('735cae0d-eb08-45c3-ad79-0a11ad4dd2c2') last_activity_at=datetime.datetime(2024, 8, 23, 10, 46, 59, 10418)))" - ] - }, - "execution_count": 111, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "ds = load_dataset(\"argilla/Capybara-Preferences\", split=\"train[:100]\")\n", - "ds = ds.map(lambda x: {\"messages\": x[\"chosen\"]})\n", - "dataset.records.log(ds)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.19" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} + "nbformat": 4, + "nbformat_minor": 2 +} \ No newline at end of file diff --git a/examples/custom_field/table_field.ipynb b/examples/custom_field/table_field.ipynb index f927f587d..c3e19f437 100644 --- a/examples/custom_field/table_field.ipynb +++ b/examples/custom_field/table_field.ipynb @@ -1,776 +1,776 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/opt/conda/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] - } - ], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - " \n", - "from datetime import datetime\n", - "import json\n", - "\n", - "import argilla as rg\n", - "from datasets import load_dataset\n", - "\n", - "client = rg.Argilla(api_url=\"http://localhost:6900/\", api_key='argilla.apikey')" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "for dataset in client.datasets.list():\n", - " print(dataset.name)\n", - " # dataset.delete()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Load extraction dataset" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Dataset(id=UUID('3a7abf40-a6b7-4cf6-ac09-d89a8b33ac67') inserted_at=datetime.datetime(2024, 4, 4, 5, 23, 44, 562080) updated_at=datetime.datetime(2024, 11, 15, 0, 35, 14, 753190) name='2-Data-Extractions' status='ready' guidelines=None allow_extra_metadata=True distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('e9e4e699-a6f9-4482-b5dd-e45874bd87eb') last_activity_at=datetime.datetime(2024, 12, 1, 5, 55, 8, 469548))" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataset = client.datasets(\n", - " name=\"2-Data-Extractions\",\n", - " workspace=\"itn-recalibration\"\n", - ")\n", - "dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, - "source": [ - "## Update field" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'reference': 'mosqueira2015pilot', 'pmid': '25959771', 'doc_id': '276c32ef-26d2-40cb-b808-b764018cd2ea', 'type': 'Observation'}\n", - "\n", - "\n", - "{'reference': 'mosqueira2015pilot', 'pmid': '25959771', 'doc_id': '276c32ef-26d2-40cb-b808-b764018cd2ea', 'type': 'ITNCondition'}\n", - "\n", - "\n", - "{'reference': 'mosqueira2015pilot', 'pmid': '25959771', 'doc_id': '276c32ef-26d2-40cb-b808-b764018cd2ea', 'type': 'EntomologicalOutcome'}\n", - "\n", - "\n", - "{'reference': 'mosqueira2015pilot', 'pmid': '25959771', 'doc_id': '276c32ef-26d2-40cb-b808-b764018cd2ea', 'type': 'ClinicalOutcome'}\n", - "\n", - "\n" - ] + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/opt/conda/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + } + ], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + " \n", + "from datetime import datetime\n", + "import json\n", + "\n", + "import argilla as rg\n", + "from datasets import load_dataset\n", + "\n", + "client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='argilla.apikey')" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "for dataset in client.datasets.list():\n", + " print(dataset.name)\n", + " # dataset.delete()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Load extraction dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Dataset(id=UUID('3a7abf40-a6b7-4cf6-ac09-d89a8b33ac67') inserted_at=datetime.datetime(2024, 4, 4, 5, 23, 44, 562080) updated_at=datetime.datetime(2024, 11, 15, 0, 35, 14, 753190) name='2-Data-Extractions' status='ready' guidelines=None allow_extra_metadata=True distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('e9e4e699-a6f9-4482-b5dd-e45874bd87eb') last_activity_at=datetime.datetime(2024, 12, 1, 5, 55, 8, 469548))" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset = client.datasets(\n", + " name=\"2-Data-Extractions\",\n", + " workspace=\"itn-recalibration\"\n", + ")\n", + "dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "source": [ + "## Update field" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'reference': 'mosqueira2015pilot', 'pmid': '25959771', 'doc_id': '276c32ef-26d2-40cb-b808-b764018cd2ea', 'type': 'Observation'}\n", + "\n", + "\n", + "{'reference': 'mosqueira2015pilot', 'pmid': '25959771', 'doc_id': '276c32ef-26d2-40cb-b808-b764018cd2ea', 'type': 'ITNCondition'}\n", + "\n", + "\n", + "{'reference': 'mosqueira2015pilot', 'pmid': '25959771', 'doc_id': '276c32ef-26d2-40cb-b808-b764018cd2ea', 'type': 'EntomologicalOutcome'}\n", + "\n", + "\n", + "{'reference': 'mosqueira2015pilot', 'pmid': '25959771', 'doc_id': '276c32ef-26d2-40cb-b808-b764018cd2ea', 'type': 'ClinicalOutcome'}\n", + "\n", + "\n" + ] + }, + { + "data": { + "text/plain": [ + "4" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Find the record with the specific metadata\n", + "records = dataset.records(query=ex.Query(filter=(\"metadata.reference\", \"==\", \"mosqueira2015pilot\")))\n", + "\n", + "# Update the record's extraction field\n", + "updated_records = []\n", + "for record in records:\n", + " print(record.metadata)\n", + " print(type(record.fields[\"extraction\"]))\n", + " record.fields[\"extraction\"] = json.loads(record.fields[\"extraction\"])\n", + " print(type(record.fields[\"extraction\"]))\n", + " updated_records.append(record)\n", + "\n", + "len(updated_records)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
DatasetRecords: The provided batch size 256 was normalized. Using value 4.\n",
+                            "
\n" + ], + "text/plain": [ + "DatasetRecords: The provided batch size \u001b[1;36m256\u001b[0m was normalized. Using value \u001b[1;36m4\u001b[0m.\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Sending records...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:04<00:00, 4.41s/batch]\n" + ] + }, + { + "data": { + "text/plain": [ + "DatasetRecords(Dataset(id=UUID('3a7abf40-a6b7-4cf6-ac09-d89a8b33ac67') inserted_at=datetime.datetime(2024, 4, 4, 5, 23, 44, 562080) updated_at=datetime.datetime(2024, 11, 15, 0, 35, 14, 753190) name='2-Data-Extractions' status='ready' guidelines=None allow_extra_metadata=True distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('e9e4e699-a6f9-4482-b5dd-e45874bd87eb') last_activity_at=datetime.datetime(2024, 11, 21, 18, 7, 47, 105497)))" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset.records.log(updated_records)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'reference': 'mosqueira2015pilot',\n", + " 'schema': {'fields': [{'name': 'observation_ref',\n", + " 'type': 'any',\n", + " 'extDtype': 'string'},\n", + " {'name': 'itncondition_ref', 'type': 'any', 'extDtype': 'string'},\n", + " {'name': 'N_people', 'type': 'integer'},\n", + " {'name': 'Age_lower', 'type': 'number'},\n", + " {'name': 'Age_upper', 'type': 'number'}],\n", + " 'primaryKey': ['observation_ref', 'itncondition_ref'],\n", + " 'pandas_version': '1.4.0'},\n", + " 'data': [{'observation_ref': 'S01',\n", + " 'itncondition_ref': 'N01',\n", + " 'N_people': 3903,\n", + " 'Age_lower': 0.5,\n", + " 'Age_upper': 14.0},\n", + " {'observation_ref': 'S02',\n", + " 'itncondition_ref': 'N01',\n", + " 'N_people': 3903,\n", + " 'Age_lower': 0.5,\n", + " 'Age_upper': 14.0}],\n", + " 'validation': {'schema_type': 'dataframe',\n", + " 'version': '0.18.3',\n", + " 'columns': {'N_people': {'title': None,\n", + " 'description': 'Number of people in the study arm of the net in question',\n", + " 'dtype': 'int64',\n", + " 'nullable': True,\n", + " 'checks': None,\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'Age_lower': {'title': None,\n", + " 'description': 'Lower limit of age group in years. For children <1, enter age as a decimal.',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'Age_upper': {'title': None,\n", + " 'description': 'Upper limit of age group in years. For children <1, enter age as a decimal.',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'N_pos': {'title': None,\n", + " 'description': 'Number of people tested to be parasite positive',\n", + " 'dtype': 'int64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'PR': {'title': None,\n", + " 'description': 'Definition: (N_pos/N_people)*100',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'PR_rate_lower': {'title': None,\n", + " 'description': 'Lower bound of parasite positivity rate',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'PR_rate_upper': {'title': None,\n", + " 'description': 'Upper bound of parasite positivity rate',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'CM': {'title': None,\n", + " 'description': 'Number of people with clinical malaria',\n", + " 'dtype': 'int64',\n", + " 'nullable': True,\n", + " 'checks': None,\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'CM_rate': {'title': None,\n", + " 'description': 'Definition: (CM/N_people)*100',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'CM_rate_lower': {'title': None,\n", + " 'description': 'Lower bound of clinical malaria rate',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'CM_rate_upper': {'title': None,\n", + " 'description': 'Upper bound of clinical malaria rate',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'Net_retention': {'title': None,\n", + " 'description': 'Number of nets still owned divided by a number of nets previously distributed',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'N_nets': {'title': None,\n", + " 'description': 'Number of nets found in household or community study arm',\n", + " 'dtype': 'int64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'N_sleep_nets': {'title': None,\n", + " 'description': 'Number of people that slept under a net the previous night',\n", + " 'dtype': 'int64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'Perc_sleep_nets': {'title': None,\n", + " 'description': 'Percent of people that slept under a net the previous night',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False}},\n", + " 'checks': {'check_less_than': {'columns_a': ['Age_lower'],\n", + " 'columns_b': ['Age_upper'],\n", + " 'or_equal': True},\n", + " 'check_greater_than': {'columns_a': 'N_people',\n", + " 'columns_b': ['N_pos', 'CM', 'N_sleep_nets'],\n", + " 'or_equal': True},\n", + " 'check_between': {'columns_target': ['PR', 'CM_rate'],\n", + " 'columns_lower': ['PR_rate_lower', 'CM_rate_lower'],\n", + " 'columns_upper': ['PR_rate_upper', 'CM_rate_upper'],\n", + " 'or_equal': True}},\n", + " 'index': [{'title': 'Observation reference',\n", + " 'description': None,\n", + " 'dtype': 'str',\n", + " 'nullable': False,\n", + " 'checks': {'str_startswith': 'S'},\n", + " 'name': 'observation_ref',\n", + " 'unique': False,\n", + " 'coerce': False},\n", + " {'title': 'ITNCondition reference',\n", + " 'description': None,\n", + " 'dtype': 'str',\n", + " 'nullable': False,\n", + " 'checks': {'str_startswith': 'N'},\n", + " 'name': 'itncondition_ref',\n", + " 'unique': False,\n", + " 'coerce': False}],\n", + " 'dtype': None,\n", + " 'coerce': True,\n", + " 'strict': True,\n", + " 'name': 'ClinicalOutcome',\n", + " 'ordered': False,\n", + " 'unique': None,\n", + " 'report_duplicates': 'all',\n", + " 'unique_column_names': False,\n", + " 'add_missing_columns': False,\n", + " 'title': None,\n", + " 'description': '\\nEpidemiological and clinical outcomes on humans collected from a clinical trial or village trial, if reported in the study.\\nEach clinical outcome should have unique `observation_ref`, `itn_condition_ref`, `Group`, `Age_lower`, and `Age_upper` (if reported).\\n '}}" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "json.loads(record.fields[\"extraction\"])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Test dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Custom Field" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonny/Projects/extralit/argilla/src/argilla/client.py:354: UserWarning: Dataset with name 'interactive_chat' not found in workspace 'itn-recalibration'\n", + " warnings.warn(f\"Dataset with name {name!r} not found in workspace {workspace.name!r}\")\n" + ] + }, + { + "ename": "AttributeError", + "evalue": "'NoneType' object has no attribute 'delete'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[5], line 5\u001b[0m\n\u001b[1;32m 1\u001b[0m dataset \u001b[38;5;241m=\u001b[39m client\u001b[38;5;241m.\u001b[39mdatasets(\n\u001b[1;32m 2\u001b[0m name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124minteractive_chat\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# workspace=\"itn-recalibration\"\u001b[39;00m\n\u001b[1;32m 4\u001b[0m )\n\u001b[0;32m----> 5\u001b[0m \u001b[43mdataset\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdelete\u001b[49m()\n", + "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'delete'" + ] + } + ], + "source": [ + "dataset = client.datasets(\n", + " name=\"interactive_chat\",\n", + " # workspace=\"itn-recalibration\"\n", + ")\n", + "dataset.delete()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Dataset(id=UUID('92b559e7-8eff-4d4c-85bf-817fd73570e4') inserted_at=datetime.datetime(2024, 12, 2, 21, 33, 33, 529345) updated_at=datetime.datetime(2024, 12, 2, 21, 33, 39, 111530) name='interactive_chat' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('e9e4e699-a6f9-4482-b5dd-e45874bd87eb') last_activity_at=datetime.datetime(2024, 12, 2, 21, 33, 39, 111530))" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "settings = ex.Settings(\n", + " fields=[\n", + " ex.TableField(name=\"chosen\", required=False),\n", + " ],\n", + " questions=[\n", + " ex.TableQuestion(\n", + " \"extraction\", title=\"Correct the table\", required=True\n", + " ),\n", + " ],\n", + ")\n", + "\n", + "dataset = ex.Dataset(\n", + " settings=settings,\n", + " name=f\"interactive_chat\",\n", + ")\n", + "\n", + "dataset.create()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{'reference': 'mosqueira2015pilot',\n", + " 'schema': {'fields': [{'name': 'observation_ref',\n", + " 'type': 'any',\n", + " 'extDtype': 'string'},\n", + " {'name': 'itncondition_ref', 'type': 'any', 'extDtype': 'string'},\n", + " {'name': 'N_people', 'type': 'integer'},\n", + " {'name': 'Age_lower', 'type': 'number'},\n", + " {'name': 'Age_upper', 'type': 'number'}],\n", + " 'primaryKey': ['observation_ref', 'itncondition_ref'],\n", + " 'pandas_version': '1.4.0'},\n", + " 'data': [{'observation_ref': 'S01',\n", + " 'itncondition_ref': 'N01',\n", + " 'N_people': 3903,\n", + " 'Age_lower': 0.5,\n", + " 'Age_upper': 14.0},\n", + " {'observation_ref': 'S02',\n", + " 'itncondition_ref': 'N01',\n", + " 'N_people': 3903,\n", + " 'Age_lower': 0.5,\n", + " 'Age_upper': 14.0}],\n", + " 'validation': {'schema_type': 'dataframe',\n", + " 'version': '0.18.3',\n", + " 'columns': {'N_people': {'title': None,\n", + " 'description': 'Number of people in the study arm of the net in question',\n", + " 'dtype': 'int64',\n", + " 'nullable': True,\n", + " 'checks': None,\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'Age_lower': {'title': None,\n", + " 'description': 'Lower limit of age group in years. For children <1, enter age as a decimal.',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'Age_upper': {'title': None,\n", + " 'description': 'Upper limit of age group in years. For children <1, enter age as a decimal.',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'N_pos': {'title': None,\n", + " 'description': 'Number of people tested to be parasite positive',\n", + " 'dtype': 'int64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'PR': {'title': None,\n", + " 'description': 'Definition: (N_pos/N_people)*100',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'PR_rate_lower': {'title': None,\n", + " 'description': 'Lower bound of parasite positivity rate',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'PR_rate_upper': {'title': None,\n", + " 'description': 'Upper bound of parasite positivity rate',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'CM': {'title': None,\n", + " 'description': 'Number of people with clinical malaria',\n", + " 'dtype': 'int64',\n", + " 'nullable': True,\n", + " 'checks': None,\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'CM_rate': {'title': None,\n", + " 'description': 'Definition: (CM/N_people)*100',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'CM_rate_lower': {'title': None,\n", + " 'description': 'Lower bound of clinical malaria rate',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'CM_rate_upper': {'title': None,\n", + " 'description': 'Upper bound of clinical malaria rate',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'Net_retention': {'title': None,\n", + " 'description': 'Number of nets still owned divided by a number of nets previously distributed',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'N_nets': {'title': None,\n", + " 'description': 'Number of nets found in household or community study arm',\n", + " 'dtype': 'int64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'N_sleep_nets': {'title': None,\n", + " 'description': 'Number of people that slept under a net the previous night',\n", + " 'dtype': 'int64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False},\n", + " 'Perc_sleep_nets': {'title': None,\n", + " 'description': 'Percent of people that slept under a net the previous night',\n", + " 'dtype': 'float64',\n", + " 'nullable': True,\n", + " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", + " 'unique': False,\n", + " 'coerce': False,\n", + " 'required': True,\n", + " 'regex': False}},\n", + " 'checks': {'check_less_than': {'columns_a': ['Age_lower'],\n", + " 'columns_b': ['Age_upper'],\n", + " 'or_equal': True},\n", + " 'check_greater_than': {'columns_a': 'N_people',\n", + " 'columns_b': ['N_pos', 'CM', 'N_sleep_nets'],\n", + " 'or_equal': True},\n", + " 'check_between': {'columns_target': ['PR', 'CM_rate'],\n", + " 'columns_lower': ['PR_rate_lower', 'CM_rate_lower'],\n", + " 'columns_upper': ['PR_rate_upper', 'CM_rate_upper'],\n", + " 'or_equal': True}},\n", + " 'index': [{'title': 'Observation reference',\n", + " 'description': None,\n", + " 'dtype': 'str',\n", + " 'nullable': False,\n", + " 'checks': {'str_startswith': 'S'},\n", + " 'name': 'observation_ref',\n", + " 'unique': False,\n", + " 'coerce': False},\n", + " {'title': 'ITNCondition reference',\n", + " 'description': None,\n", + " 'dtype': 'str',\n", + " 'nullable': False,\n", + " 'checks': {'str_startswith': 'N'},\n", + " 'name': 'itncondition_ref',\n", + " 'unique': False,\n", + " 'coerce': False}],\n", + " 'dtype': None,\n", + " 'coerce': True,\n", + " 'strict': True,\n", + " 'name': 'ClinicalOutcome',\n", + " 'ordered': False,\n", + " 'unique': None,\n", + " 'report_duplicates': 'all',\n", + " 'unique_column_names': False,\n", + " 'add_missing_columns': False,\n", + " 'title': None,\n", + " 'description': '\\nEpidemiological and clinical outcomes on humans collected from a clinical trial or village trial, if reported in the study.\\nEach clinical outcome should have unique `observation_ref`, `itn_condition_ref`, `Group`, `Age_lower`, and `Age_upper` (if reported).\\n '}}" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "sample_table = record.fields['extraction']\n", + "sample_table" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
DatasetRecords: The provided batch size 256 was normalized. Using value 4.\n",
+                            "
\n" + ], + "text/plain": [ + "DatasetRecords: The provided batch size \u001b[1;36m256\u001b[0m was normalized. Using value \u001b[1;36m4\u001b[0m.\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Sending records...: 100%|███████| 1/1 [00:02<00:00, 2.54s/batch]\n" + ] + }, + { + "data": { + "text/plain": [ + "DatasetRecords(Dataset(id=UUID('a64a827c-f962-417a-a771-ce53f61c0756') inserted_at=datetime.datetime(2024, 11, 29, 23, 9, 55, 104623) updated_at=datetime.datetime(2024, 11, 29, 23, 9, 58, 696913) name='interactive_chat' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('e9e4e699-a6f9-4482-b5dd-e45874bd87eb') last_activity_at=datetime.datetime(2024, 11, 29, 23, 9, 58, 696913)))" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dataset.records.log([\n", + " {'chosen': sample_table} \\\n", + " for r in updated_records\n", + "])" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# ds = load_dataset(\"argilla/Capybara-Preferences\", split=\"train[:100]\")\n", + "# ds = ds.map(lambda x: {\"messages\": x[\"chosen\"]})\n", + "# dataset.records.log(ds)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } }, - { - "data": { - "text/plain": [ - "4" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Find the record with the specific metadata\n", - "records = dataset.records(query=rg.Query(filter=(\"metadata.reference\", \"==\", \"mosqueira2015pilot\")))\n", - "\n", - "# Update the record's extraction field\n", - "updated_records = []\n", - "for record in records:\n", - " print(record.metadata)\n", - " print(type(record.fields[\"extraction\"]))\n", - " record.fields[\"extraction\"] = json.loads(record.fields[\"extraction\"])\n", - " print(type(record.fields[\"extraction\"]))\n", - " updated_records.append(record)\n", - "\n", - "len(updated_records)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
DatasetRecords: The provided batch size 256 was normalized. Using value 4.\n",
-       "
\n" - ], - "text/plain": [ - "DatasetRecords: The provided batch size \u001b[1;36m256\u001b[0m was normalized. Using value \u001b[1;36m4\u001b[0m.\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Sending records...: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:04<00:00, 4.41s/batch]\n" - ] - }, - { - "data": { - "text/plain": [ - "DatasetRecords(Dataset(id=UUID('3a7abf40-a6b7-4cf6-ac09-d89a8b33ac67') inserted_at=datetime.datetime(2024, 4, 4, 5, 23, 44, 562080) updated_at=datetime.datetime(2024, 11, 15, 0, 35, 14, 753190) name='2-Data-Extractions' status='ready' guidelines=None allow_extra_metadata=True distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('e9e4e699-a6f9-4482-b5dd-e45874bd87eb') last_activity_at=datetime.datetime(2024, 11, 21, 18, 7, 47, 105497)))" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataset.records.log(updated_records)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'reference': 'mosqueira2015pilot',\n", - " 'schema': {'fields': [{'name': 'observation_ref',\n", - " 'type': 'any',\n", - " 'extDtype': 'string'},\n", - " {'name': 'itncondition_ref', 'type': 'any', 'extDtype': 'string'},\n", - " {'name': 'N_people', 'type': 'integer'},\n", - " {'name': 'Age_lower', 'type': 'number'},\n", - " {'name': 'Age_upper', 'type': 'number'}],\n", - " 'primaryKey': ['observation_ref', 'itncondition_ref'],\n", - " 'pandas_version': '1.4.0'},\n", - " 'data': [{'observation_ref': 'S01',\n", - " 'itncondition_ref': 'N01',\n", - " 'N_people': 3903,\n", - " 'Age_lower': 0.5,\n", - " 'Age_upper': 14.0},\n", - " {'observation_ref': 'S02',\n", - " 'itncondition_ref': 'N01',\n", - " 'N_people': 3903,\n", - " 'Age_lower': 0.5,\n", - " 'Age_upper': 14.0}],\n", - " 'validation': {'schema_type': 'dataframe',\n", - " 'version': '0.18.3',\n", - " 'columns': {'N_people': {'title': None,\n", - " 'description': 'Number of people in the study arm of the net in question',\n", - " 'dtype': 'int64',\n", - " 'nullable': True,\n", - " 'checks': None,\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'Age_lower': {'title': None,\n", - " 'description': 'Lower limit of age group in years. For children <1, enter age as a decimal.',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'Age_upper': {'title': None,\n", - " 'description': 'Upper limit of age group in years. For children <1, enter age as a decimal.',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'N_pos': {'title': None,\n", - " 'description': 'Number of people tested to be parasite positive',\n", - " 'dtype': 'int64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'PR': {'title': None,\n", - " 'description': 'Definition: (N_pos/N_people)*100',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'PR_rate_lower': {'title': None,\n", - " 'description': 'Lower bound of parasite positivity rate',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'PR_rate_upper': {'title': None,\n", - " 'description': 'Upper bound of parasite positivity rate',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'CM': {'title': None,\n", - " 'description': 'Number of people with clinical malaria',\n", - " 'dtype': 'int64',\n", - " 'nullable': True,\n", - " 'checks': None,\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'CM_rate': {'title': None,\n", - " 'description': 'Definition: (CM/N_people)*100',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'CM_rate_lower': {'title': None,\n", - " 'description': 'Lower bound of clinical malaria rate',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'CM_rate_upper': {'title': None,\n", - " 'description': 'Upper bound of clinical malaria rate',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'Net_retention': {'title': None,\n", - " 'description': 'Number of nets still owned divided by a number of nets previously distributed',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'N_nets': {'title': None,\n", - " 'description': 'Number of nets found in household or community study arm',\n", - " 'dtype': 'int64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'N_sleep_nets': {'title': None,\n", - " 'description': 'Number of people that slept under a net the previous night',\n", - " 'dtype': 'int64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'Perc_sleep_nets': {'title': None,\n", - " 'description': 'Percent of people that slept under a net the previous night',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False}},\n", - " 'checks': {'check_less_than': {'columns_a': ['Age_lower'],\n", - " 'columns_b': ['Age_upper'],\n", - " 'or_equal': True},\n", - " 'check_greater_than': {'columns_a': 'N_people',\n", - " 'columns_b': ['N_pos', 'CM', 'N_sleep_nets'],\n", - " 'or_equal': True},\n", - " 'check_between': {'columns_target': ['PR', 'CM_rate'],\n", - " 'columns_lower': ['PR_rate_lower', 'CM_rate_lower'],\n", - " 'columns_upper': ['PR_rate_upper', 'CM_rate_upper'],\n", - " 'or_equal': True}},\n", - " 'index': [{'title': 'Observation reference',\n", - " 'description': None,\n", - " 'dtype': 'str',\n", - " 'nullable': False,\n", - " 'checks': {'str_startswith': 'S'},\n", - " 'name': 'observation_ref',\n", - " 'unique': False,\n", - " 'coerce': False},\n", - " {'title': 'ITNCondition reference',\n", - " 'description': None,\n", - " 'dtype': 'str',\n", - " 'nullable': False,\n", - " 'checks': {'str_startswith': 'N'},\n", - " 'name': 'itncondition_ref',\n", - " 'unique': False,\n", - " 'coerce': False}],\n", - " 'dtype': None,\n", - " 'coerce': True,\n", - " 'strict': True,\n", - " 'name': 'ClinicalOutcome',\n", - " 'ordered': False,\n", - " 'unique': None,\n", - " 'report_duplicates': 'all',\n", - " 'unique_column_names': False,\n", - " 'add_missing_columns': False,\n", - " 'title': None,\n", - " 'description': '\\nEpidemiological and clinical outcomes on humans collected from a clinical trial or village trial, if reported in the study.\\nEach clinical outcome should have unique `observation_ref`, `itn_condition_ref`, `Group`, `Age_lower`, and `Age_upper` (if reported).\\n '}}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "json.loads(record.fields[\"extraction\"])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Test dataset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Custom Field" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonny/Projects/extralit/argilla/src/argilla/client.py:354: UserWarning: Dataset with name 'interactive_chat' not found in workspace 'itn-recalibration'\n", - " warnings.warn(f\"Dataset with name {name!r} not found in workspace {workspace.name!r}\")\n" - ] - }, - { - "ename": "AttributeError", - "evalue": "'NoneType' object has no attribute 'delete'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[5], line 5\u001b[0m\n\u001b[1;32m 1\u001b[0m dataset \u001b[38;5;241m=\u001b[39m client\u001b[38;5;241m.\u001b[39mdatasets(\n\u001b[1;32m 2\u001b[0m name\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124minteractive_chat\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# workspace=\"itn-recalibration\"\u001b[39;00m\n\u001b[1;32m 4\u001b[0m )\n\u001b[0;32m----> 5\u001b[0m \u001b[43mdataset\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdelete\u001b[49m()\n", - "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'delete'" - ] - } - ], - "source": [ - "dataset = client.datasets(\n", - " name=\"interactive_chat\",\n", - " # workspace=\"itn-recalibration\"\n", - ")\n", - "dataset.delete()" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Dataset(id=UUID('92b559e7-8eff-4d4c-85bf-817fd73570e4') inserted_at=datetime.datetime(2024, 12, 2, 21, 33, 33, 529345) updated_at=datetime.datetime(2024, 12, 2, 21, 33, 39, 111530) name='interactive_chat' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('e9e4e699-a6f9-4482-b5dd-e45874bd87eb') last_activity_at=datetime.datetime(2024, 12, 2, 21, 33, 39, 111530))" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "settings = rg.Settings(\n", - " fields=[\n", - " rg.TableField(name=\"chosen\", required=False),\n", - " ],\n", - " questions=[\n", - " rg.TableQuestion(\n", - " \"extraction\", title=\"Correct the table\", required=True\n", - " ),\n", - " ],\n", - ")\n", - "\n", - "dataset = rg.Dataset(\n", - " settings=settings,\n", - " name=f\"interactive_chat\",\n", - ")\n", - "\n", - "dataset.create()" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "{'reference': 'mosqueira2015pilot',\n", - " 'schema': {'fields': [{'name': 'observation_ref',\n", - " 'type': 'any',\n", - " 'extDtype': 'string'},\n", - " {'name': 'itncondition_ref', 'type': 'any', 'extDtype': 'string'},\n", - " {'name': 'N_people', 'type': 'integer'},\n", - " {'name': 'Age_lower', 'type': 'number'},\n", - " {'name': 'Age_upper', 'type': 'number'}],\n", - " 'primaryKey': ['observation_ref', 'itncondition_ref'],\n", - " 'pandas_version': '1.4.0'},\n", - " 'data': [{'observation_ref': 'S01',\n", - " 'itncondition_ref': 'N01',\n", - " 'N_people': 3903,\n", - " 'Age_lower': 0.5,\n", - " 'Age_upper': 14.0},\n", - " {'observation_ref': 'S02',\n", - " 'itncondition_ref': 'N01',\n", - " 'N_people': 3903,\n", - " 'Age_lower': 0.5,\n", - " 'Age_upper': 14.0}],\n", - " 'validation': {'schema_type': 'dataframe',\n", - " 'version': '0.18.3',\n", - " 'columns': {'N_people': {'title': None,\n", - " 'description': 'Number of people in the study arm of the net in question',\n", - " 'dtype': 'int64',\n", - " 'nullable': True,\n", - " 'checks': None,\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'Age_lower': {'title': None,\n", - " 'description': 'Lower limit of age group in years. For children <1, enter age as a decimal.',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'Age_upper': {'title': None,\n", - " 'description': 'Upper limit of age group in years. For children <1, enter age as a decimal.',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'N_pos': {'title': None,\n", - " 'description': 'Number of people tested to be parasite positive',\n", - " 'dtype': 'int64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'PR': {'title': None,\n", - " 'description': 'Definition: (N_pos/N_people)*100',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'PR_rate_lower': {'title': None,\n", - " 'description': 'Lower bound of parasite positivity rate',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'PR_rate_upper': {'title': None,\n", - " 'description': 'Upper bound of parasite positivity rate',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'CM': {'title': None,\n", - " 'description': 'Number of people with clinical malaria',\n", - " 'dtype': 'int64',\n", - " 'nullable': True,\n", - " 'checks': None,\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'CM_rate': {'title': None,\n", - " 'description': 'Definition: (CM/N_people)*100',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'CM_rate_lower': {'title': None,\n", - " 'description': 'Lower bound of clinical malaria rate',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'CM_rate_upper': {'title': None,\n", - " 'description': 'Upper bound of clinical malaria rate',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'Net_retention': {'title': None,\n", - " 'description': 'Number of nets still owned divided by a number of nets previously distributed',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'N_nets': {'title': None,\n", - " 'description': 'Number of nets found in household or community study arm',\n", - " 'dtype': 'int64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'N_sleep_nets': {'title': None,\n", - " 'description': 'Number of people that slept under a net the previous night',\n", - " 'dtype': 'int64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False},\n", - " 'Perc_sleep_nets': {'title': None,\n", - " 'description': 'Percent of people that slept under a net the previous night',\n", - " 'dtype': 'float64',\n", - " 'nullable': True,\n", - " 'checks': {'greater_than_or_equal_to': 0, 'less_than_or_equal_to': 100},\n", - " 'unique': False,\n", - " 'coerce': False,\n", - " 'required': True,\n", - " 'regex': False}},\n", - " 'checks': {'check_less_than': {'columns_a': ['Age_lower'],\n", - " 'columns_b': ['Age_upper'],\n", - " 'or_equal': True},\n", - " 'check_greater_than': {'columns_a': 'N_people',\n", - " 'columns_b': ['N_pos', 'CM', 'N_sleep_nets'],\n", - " 'or_equal': True},\n", - " 'check_between': {'columns_target': ['PR', 'CM_rate'],\n", - " 'columns_lower': ['PR_rate_lower', 'CM_rate_lower'],\n", - " 'columns_upper': ['PR_rate_upper', 'CM_rate_upper'],\n", - " 'or_equal': True}},\n", - " 'index': [{'title': 'Observation reference',\n", - " 'description': None,\n", - " 'dtype': 'str',\n", - " 'nullable': False,\n", - " 'checks': {'str_startswith': 'S'},\n", - " 'name': 'observation_ref',\n", - " 'unique': False,\n", - " 'coerce': False},\n", - " {'title': 'ITNCondition reference',\n", - " 'description': None,\n", - " 'dtype': 'str',\n", - " 'nullable': False,\n", - " 'checks': {'str_startswith': 'N'},\n", - " 'name': 'itncondition_ref',\n", - " 'unique': False,\n", - " 'coerce': False}],\n", - " 'dtype': None,\n", - " 'coerce': True,\n", - " 'strict': True,\n", - " 'name': 'ClinicalOutcome',\n", - " 'ordered': False,\n", - " 'unique': None,\n", - " 'report_duplicates': 'all',\n", - " 'unique_column_names': False,\n", - " 'add_missing_columns': False,\n", - " 'title': None,\n", - " 'description': '\\nEpidemiological and clinical outcomes on humans collected from a clinical trial or village trial, if reported in the study.\\nEach clinical outcome should have unique `observation_ref`, `itn_condition_ref`, `Group`, `Age_lower`, and `Age_upper` (if reported).\\n '}}" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "sample_table = record.fields['extraction']\n", - "sample_table" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
DatasetRecords: The provided batch size 256 was normalized. Using value 4.\n",
-       "
\n" - ], - "text/plain": [ - "DatasetRecords: The provided batch size \u001b[1;36m256\u001b[0m was normalized. Using value \u001b[1;36m4\u001b[0m.\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Sending records...: 100%|███████| 1/1 [00:02<00:00, 2.54s/batch]\n" - ] - }, - { - "data": { - "text/plain": [ - "DatasetRecords(Dataset(id=UUID('a64a827c-f962-417a-a771-ce53f61c0756') inserted_at=datetime.datetime(2024, 11, 29, 23, 9, 55, 104623) updated_at=datetime.datetime(2024, 11, 29, 23, 9, 58, 696913) name='interactive_chat' status='ready' guidelines=None allow_extra_metadata=False distribution=OverlapTaskDistributionModel(strategy='overlap', min_submitted=1) workspace_id=UUID('e9e4e699-a6f9-4482-b5dd-e45874bd87eb') last_activity_at=datetime.datetime(2024, 11, 29, 23, 9, 58, 696913)))" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "dataset.records.log([\n", - " {'chosen': sample_table} \\\n", - " for r in updated_records\n", - "])" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# ds = load_dataset(\"argilla/Capybara-Preferences\", split=\"train[:100]\")\n", - "# ds = ds.map(lambda x: {\"messages\": x[\"chosen\"]})\n", - "# dataset.records.log(ds)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.10.14" - } - }, - "nbformat": 4, - "nbformat_minor": 4 -} + "nbformat": 4, + "nbformat_minor": 4 +} \ No newline at end of file diff --git a/examples/document_extraction/LLM_extractions.ipynb b/examples/document_extraction/LLM_extractions.ipynb index cb3408250..7e0f55e7e 100644 --- a/examples/document_extraction/LLM_extractions.ipynb +++ b/examples/document_extraction/LLM_extractions.ipynb @@ -1,19233 +1,19233 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "id": "25e3624f-beb0-4a8a-a02f-20d7525d9d5b", - "metadata": {}, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "# %load_ext heat" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "32c1921b-c936-4a0d-90d7-eb02cfcedc68", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/1_/cmltqwn11bqfmnz786mfyhgc0000gn/T/ipykernel_19247/3721118118.py:4: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from tqdm.autonotebook import tqdm\n", - "/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/pydantic/_internal/_config.py:295: PydanticDeprecatedSince20: Support for class-based `config` is deprecated, use ConfigDict instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.10/migration/\n", - " warnings.warn(DEPRECATION_MESSAGE, DeprecationWarning)\n" - ] - }, - { - "ename": "ModuleNotFoundError", - "evalue": "No module named 'argilla.client.feedback'; 'argilla.client' is not a package", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[3], line 14\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mrg\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mextralit\u001b[39;00m\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mextralit\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpipeline\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mingest\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpaper\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m get_paper_extractions\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# TEMP fix to use create_extraction_records from v0.2.3\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;66;03m# from extralit.pipeline.export.record import create_extraction_records\u001b[39;00m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpatch_pipeline_export_record\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m create_extraction_records\n", - "File \u001b[0;32m~/Projects/extralit/argilla-v1/src/extralit/pipeline/ingest/paper.py:6\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mrg\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpd\u001b[39;00m\n\u001b[0;32m----> 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclient\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mfeedback\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mschemas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mremote\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrecords\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m RemoteFeedbackRecord\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mextralit\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mconvert\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mjson_table\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m json_to_df, is_json_table\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mextralit\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mextraction\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmodels\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpaper\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m PaperExtraction\n", - "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'argilla.client.feedback'; 'argilla.client' is not a package" - ] - } - ], - "source": [ - "import uuid, sys, os, io, json, re, rich, glob, dill, itertools, ast\n", - "from IPython.display import HTML, JSON\n", - "from collections import Counter, defaultdict\n", - "from tqdm.autonotebook import tqdm\n", - "from dotenv import load_dotenv\n", - "load_dotenv(override=True)\n", - "# sys.path.insert(0, 'src')\n", - "\n", - "import pandas as pd\n", - "# import plotly.express as px\n", - "import argilla as rg\n", - "\n", - "import extralit\n", - "from extralit.pipeline.ingest.paper import get_paper_extractions\n", - "\n", - "# TEMP fix to use create_extraction_records from v0.2.3\n", - "# from extralit.pipeline.export.record import create_extraction_records\n", - "from patch_pipeline_export_record import create_extraction_records\n", - "\n", - "from extralit.pipeline.ingest.record import get_record_data\n", - "#from extralit.pipeline.ingest.trace import get_langfuse_traces\n", - "from extralit.pipeline.update import *\n", - "from extralit.metrics.extraction import grits_from_pandas, grits_from_batch, grits_paper, grits_multi_tables\n", - "from extralit.convert.json_table import df_to_json\n", - "from extralit.convert.markdown import read_markdown_table_to_df\n", - "from extralit.extraction.models import PaperExtraction, SchemaStructure\n", - "from extralit.convert.json_table import schema_to_json, json_to_df\n", - "\n", - "from extralit.extraction.schema import get_extraction_schema_model\n", - "from extralit.extraction.prompts import *\n", - "from extralit.extraction.extraction import *\n", - "from extralit.extraction.vector_index import *\n", - "\n", - "from extralit.server.models.extraction import ExtractionRequest\n", - "from extralit.server.context.datasets import get_argilla_dataset\n", - "from extralit.server.context.files import get_minio_client\n", - "from extralit.server.context.vectordb import get_weaviate_client\n", - "from extralit.server.context.llamaindex import get_langfuse_callback\n", - "\n", - "from llama_index.core.output_parsers import PydanticOutputParser\n", - "from llama_index.core.response.notebook_utils import display_source_node, display_response\n", - "from llama_index.core import set_global_handler, Settings, callbacks, PromptTemplate" - ] - }, - { - "cell_type": "markdown", - "id": "ec9a9f71-1b32-4f36-8f29-12ec428dcac9", - "metadata": {}, - "source": [ - "## Connect clients" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1a209a15", - "metadata": {}, - "outputs": [ - { - "ename": "KeyboardInterrupt", - "evalue": "", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mweaviate\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mvector_stores\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mweaviate\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m WeaviateVectorStore\n\u001b[1;32m 4\u001b[0m weaviate_client \u001b[38;5;241m=\u001b[39m get_weaviate_client()\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/vector_stores/weaviate/__init__.py:1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mvector_stores\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mweaviate\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbase\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m WeaviateVectorStore\n\u001b[1;32m 3\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWeaviateVectorStore\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/vector_stores/weaviate/base.py:11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mtyping\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Any, Dict, List, Optional, Union, cast\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01muuid\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m uuid4\n\u001b[0;32m---> 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbridge\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpydantic\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Field, PrivateAttr\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mschema\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BaseNode\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mvector_stores\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtypes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 14\u001b[0m BasePydanticVectorStore,\n\u001b[1;32m 15\u001b[0m MetadataFilters,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 18\u001b[0m VectorStoreQueryResult,\n\u001b[1;32m 19\u001b[0m )\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/core/__init__.py:10\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mtyping\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Callable, Optional\n\u001b[1;32m 9\u001b[0m \u001b[38;5;66;03m# response\u001b[39;00m\n\u001b[0;32m---> 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbase\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mresponse\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mschema\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Response\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# import global eval handler\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcallbacks\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mglobal_handlers\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m set_global_handler\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/core/base/response/schema.py:9\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01masync_utils\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m asyncio_run\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbridge\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpydantic\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BaseModel\n\u001b[0;32m----> 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mschema\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m NodeWithScore\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtypes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m TokenGen, TokenAsyncGen\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m truncate_text\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/core/schema.py:18\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbridge\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpydantic\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BaseModel, Field\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minstrumentation\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m DispatcherSpanMixin\n\u001b[0;32m---> 18\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m SAMPLE_TEXT, truncate_text\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mtyping_extensions\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Self\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m TYPE_CHECKING:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/core/utils.py:89\u001b[0m\n\u001b[1;32m 85\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopwords \u001b[38;5;241m=\u001b[39m stopwords\u001b[38;5;241m.\u001b[39mwords(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124menglish\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 86\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopwords\n\u001b[0;32m---> 89\u001b[0m globals_helper \u001b[38;5;241m=\u001b[39m \u001b[43mGlobalsHelper\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[38;5;66;03m# Global Tokenizer\u001b[39;00m\n\u001b[1;32m 93\u001b[0m \u001b[38;5;129m@runtime_checkable\u001b[39m\n\u001b[1;32m 94\u001b[0m \u001b[38;5;28;01mclass\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mTokenizer\u001b[39;00m(Protocol):\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/core/utils.py:45\u001b[0m, in \u001b[0;36mGlobalsHelper.__init__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 44\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Initialize NLTK stopwords and punkt.\"\"\"\u001b[39;00m\n\u001b[0;32m---> 45\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_nltk_data_dir \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39menviron\u001b[38;5;241m.\u001b[39mget(\n\u001b[1;32m 48\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNLTK_DATA\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 49\u001b[0m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 52\u001b[0m ),\n\u001b[1;32m 53\u001b[0m )\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_nltk_data_dir \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m nltk\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39mpath:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/__init__.py:146\u001b[0m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mjsontags\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;66;03m###########################################################\u001b[39;00m\n\u001b[1;32m 143\u001b[0m \u001b[38;5;66;03m# PACKAGES\u001b[39;00m\n\u001b[1;32m 144\u001b[0m \u001b[38;5;66;03m###########################################################\u001b[39;00m\n\u001b[0;32m--> 146\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchunk\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minference\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/chunk/__init__.py:155\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Natural Language Toolkit: Chunkers\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Copyright (C) 2001-2024 NLTK Project\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m# For license information, see LICENSE.TXT\u001b[39;00m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;124;03mClasses and interfaces for identifying non-overlapping linguistic\u001b[39;00m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;124;03mgroups (such as base noun phrases) in unrestricted text. This task is\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 152\u001b[0m \u001b[38;5;124;03m pattern is valid.\u001b[39;00m\n\u001b[1;32m 153\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m--> 155\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchunk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mapi\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m ChunkParserI\n\u001b[1;32m 156\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchunk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mnamed_entity\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Maxent_NE_Chunker\n\u001b[1;32m 157\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchunk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mregexp\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m RegexpChunkParser, RegexpParser\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/chunk/api.py:13\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Natural Language Toolkit: Chunk parsing API\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Copyright (C) 2001-2024 NLTK Project\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m## Chunk Parser Interface\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;66;03m##//////////////////////////////////////////////////////\u001b[39;00m\n\u001b[0;32m---> 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchunk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutil\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m ChunkScore\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minternals\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m deprecated\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mparse\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m ParserI\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/chunk/util.py:12\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mre\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmetrics\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m accuracy \u001b[38;5;28;01mas\u001b[39;00m _accuracy\n\u001b[0;32m---> 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmapping\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m map_tag\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutil\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m str2tuple\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtree\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Tree\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/tag/__init__.py:72\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mapi\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m TaggerI\n\u001b[1;32m 71\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutil\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m str2tuple, tuple2str, untag\n\u001b[0;32m---> 72\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01msequential\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 73\u001b[0m SequentialBackoffTagger,\n\u001b[1;32m 74\u001b[0m ContextTagger,\n\u001b[1;32m 75\u001b[0m DefaultTagger,\n\u001b[1;32m 76\u001b[0m NgramTagger,\n\u001b[1;32m 77\u001b[0m UnigramTagger,\n\u001b[1;32m 78\u001b[0m BigramTagger,\n\u001b[1;32m 79\u001b[0m TrigramTagger,\n\u001b[1;32m 80\u001b[0m AffixTagger,\n\u001b[1;32m 81\u001b[0m RegexpTagger,\n\u001b[1;32m 82\u001b[0m ClassifierBasedTagger,\n\u001b[1;32m 83\u001b[0m ClassifierBasedPOSTagger,\n\u001b[1;32m 84\u001b[0m )\n\u001b[1;32m 85\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbrill\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BrillTagger\n\u001b[1;32m 86\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbrill_trainer\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BrillTaggerTrainer\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/tag/sequential.py:26\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mtyping\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m List, Optional, Tuple\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m jsontags\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m NaiveBayesClassifier\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mprobability\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m ConditionalFreqDist\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mapi\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m FeaturesetTaggerI, TaggerI\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/classify/__init__.py:97\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpositivenaivebayes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m PositiveNaiveBayesClassifier\n\u001b[1;32m 96\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrte_classify\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m RTEFeatureExtractor, rte_classifier, rte_features\n\u001b[0;32m---> 97\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mscikitlearn\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m SklearnClassifier\n\u001b[1;32m 98\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01msenna\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Senna\n\u001b[1;32m 99\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtextcat\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m TextCat\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/classify/scikitlearn.py:38\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mprobability\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m DictionaryProbDist\n\u001b[1;32m 37\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 38\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01msklearn\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mfeature_extraction\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m DictVectorizer\n\u001b[1;32m 39\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01msklearn\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpreprocessing\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m LabelEncoder\n\u001b[1;32m 40\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/__init__.py:84\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[38;5;66;03m# We are not importing the rest of scikit-learn during the build\u001b[39;00m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;66;03m# process, as it may not be compiled yet\u001b[39;00m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 78\u001b[0m \u001b[38;5;66;03m# later is linked to the OpenMP runtime to make it possible to introspect\u001b[39;00m\n\u001b[1;32m 79\u001b[0m \u001b[38;5;66;03m# it and importing it first would fail if the OpenMP dll cannot be found.\u001b[39;00m\n\u001b[1;32m 80\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 81\u001b[0m __check_build, \u001b[38;5;66;03m# noqa: F401\u001b[39;00m\n\u001b[1;32m 82\u001b[0m _distributor_init, \u001b[38;5;66;03m# noqa: F401\u001b[39;00m\n\u001b[1;32m 83\u001b[0m )\n\u001b[0;32m---> 84\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbase\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m clone\n\u001b[1;32m 85\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_show_versions\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m show_versions\n\u001b[1;32m 87\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 88\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcalibration\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 89\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcluster\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshow_versions\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 131\u001b[0m ]\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/base.py:19\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m config_context, get_config\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mexceptions\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m InconsistentVersionWarning\n\u001b[0;32m---> 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_estimator_html_repr\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m _HTMLDocumentationLinkMixin, estimator_html_repr\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_metadata_requests\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m _MetadataRequester, _routing_enabled\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_param_validation\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m validate_parameter_constraints\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/__init__.py:11\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m _joblib, metadata_routing\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_bunch\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Bunch\n\u001b[0;32m---> 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_chunking\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m gen_batches, gen_even_slices\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_estimator_html_repr\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m estimator_html_repr\n\u001b[1;32m 14\u001b[0m \u001b[38;5;66;03m# Make _safe_indexing importable from here for backward compat as this particular\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m# helper is considered semi-private and typically very useful for third-party\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# libraries that want to comply with scikit-learn's estimator API. In particular,\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;66;03m# _safe_indexing was included in our public API documentation despite the leading\u001b[39;00m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;66;03m# `_` in its name.\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/_chunking.py:8\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnumpy\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m get_config\n\u001b[0;32m----> 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_param_validation\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Interval, validate_params\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mchunk_generator\u001b[39m(gen, chunksize):\n\u001b[1;32m 12\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Chunk generator, ``gen`` into lists of length ``chunksize``. The last\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;124;03m chunk may have a length less than ``chunksize``.\"\"\"\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/_param_validation.py:14\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01msparse\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m csr_matrix, issparse\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m config_context, get_config\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mvalidation\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m _is_arraylike_not_scalar\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mclass\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mInvalidParameterError\u001b[39;00m(\u001b[38;5;167;01mValueError\u001b[39;00m, \u001b[38;5;167;01mTypeError\u001b[39;00m):\n\u001b[1;32m 18\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Custom exception to be raised when the parameter of a class/method/function\u001b[39;00m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;124;03m does not have a valid type or value.\u001b[39;00m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/validation.py:26\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m get_config \u001b[38;5;28;01mas\u001b[39;00m _get_config\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mexceptions\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m DataConversionWarning, NotFittedError, PositiveSpectrumWarning\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_array_api\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m _asarray_with_order, _is_numpy_namespace, get_namespace\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mfixes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m ComplexWarning, _preserve_dia_indices_dtype\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_isfinite\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m FiniteStatus, cy_isfinite\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/_array_api.py:11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mspecial\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mspecial\u001b[39;00m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m get_config\n\u001b[0;32m---> 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mfixes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m parse_version\n\u001b[1;32m 13\u001b[0m _NUMPY_NAMESPACE_NAMES \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnumpy\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124marray_api_compat.numpy\u001b[39m\u001b[38;5;124m\"\u001b[39m}\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21myield_namespaces\u001b[39m(include_numpy_namespaces\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m):\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/fixes.py:24\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstats\u001b[39;00m\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 24\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpd\u001b[39;00m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m:\n\u001b[1;32m 26\u001b[0m pd \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/pandas/__init__.py:26\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m _hard_dependencies, _dependency, _missing_dependencies\n\u001b[1;32m 24\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 25\u001b[0m \u001b[38;5;66;03m# numpy compat\u001b[39;00m\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompat\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 27\u001b[0m is_numpy_dev \u001b[38;5;28;01mas\u001b[39;00m _is_numpy_dev, \u001b[38;5;66;03m# pyright: ignore[reportUnusedImport] # noqa: F401\u001b[39;00m\n\u001b[1;32m 28\u001b[0m )\n\u001b[1;32m 29\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m _err: \u001b[38;5;66;03m# pragma: no cover\u001b[39;00m\n\u001b[1;32m 30\u001b[0m _module \u001b[38;5;241m=\u001b[39m _err\u001b[38;5;241m.\u001b[39mname\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/pandas/compat/__init__.py:27\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompat\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompressors\u001b[39;00m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompat\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mnumpy\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m is_numpy_dev\n\u001b[0;32m---> 27\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompat\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpyarrow\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 28\u001b[0m pa_version_under10p1,\n\u001b[1;32m 29\u001b[0m pa_version_under11p0,\n\u001b[1;32m 30\u001b[0m pa_version_under13p0,\n\u001b[1;32m 31\u001b[0m pa_version_under14p0,\n\u001b[1;32m 32\u001b[0m pa_version_under14p1,\n\u001b[1;32m 33\u001b[0m pa_version_under16p0,\n\u001b[1;32m 34\u001b[0m pa_version_under17p0,\n\u001b[1;32m 35\u001b[0m )\n\u001b[1;32m 37\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m TYPE_CHECKING:\n\u001b[1;32m 38\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_typing\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m F\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/pandas/compat/pyarrow.py:8\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutil\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mversion\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Version\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m----> 8\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpyarrow\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpa\u001b[39;00m\n\u001b[1;32m 10\u001b[0m _palv \u001b[38;5;241m=\u001b[39m Version(Version(pa\u001b[38;5;241m.\u001b[39m__version__)\u001b[38;5;241m.\u001b[39mbase_version)\n\u001b[1;32m 11\u001b[0m pa_version_under10p1 \u001b[38;5;241m=\u001b[39m _palv \u001b[38;5;241m<\u001b[39m Version(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m10.0.1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/pyarrow/__init__.py:65\u001b[0m\n\u001b[1;32m 63\u001b[0m _gc_enabled \u001b[38;5;241m=\u001b[39m _gc\u001b[38;5;241m.\u001b[39misenabled()\n\u001b[1;32m 64\u001b[0m _gc\u001b[38;5;241m.\u001b[39mdisable()\n\u001b[0;32m---> 65\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpyarrow\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mlib\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m_lib\u001b[39;00m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _gc_enabled:\n\u001b[1;32m 67\u001b[0m _gc\u001b[38;5;241m.\u001b[39menable()\n", - "File \u001b[0;32m:398\u001b[0m, in \u001b[0;36mparent\u001b[0;34m(self)\u001b[0m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], - "source": [ - "import weaviate\n", - "from llama_index.vector_stores.weaviate import WeaviateVectorStore\n", - "\n", - "weaviate_client = get_weaviate_client()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d8998e65-c4f8-4af2-8ef7-a8d822288307", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['Extralit_itn_recalibration', 'LlamaIndexDocumentSections', 'Test_DSM_Embeddings'])" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Confirm weaviate connection and display available indexes\n", - "weaviate_client.is_connected()\n", - "collections = weaviate_client.collections.list_all(simple=False)\n", - "collections.keys()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3db50810-1602-4ad8-8b12-8c3ab04a68bf", - "metadata": { - "jupyter": { - "is_executing": true - } - }, - "outputs": [], - "source": [ - "#len(set([x['ref_doc_id'] for x in res.get['Extralit_itn_recalibration']]))\n", - "#res.get['Extralit_itn_recalibration']" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4dc7bb0d-18e4-4dc5-8671-2229e39d611d", - "metadata": {}, - "outputs": [], - "source": [ - "# minio_client = get_minio_client()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ba6e8fae-c005-40c4-92c8-a6b966fb60d8", - "metadata": {}, - "outputs": [], - "source": [ - "### comment out langfuse code \n", - "# import langfuse\n", - "# from langfuse.llama_index import LlamaIndexCallbackHandler\n", - "\n", - "# langfuse_callback_handler = LlamaIndexCallbackHandler(\n", - "# public_key=os.environ['LANGFUSE_PUBLIC_KEY'],\n", - "# secret_key=os.environ['LANGFUSE_SECRET_KEY'],\n", - "# host=os.environ['LANGFUSE_HOST'],\n", - "# )\n", - "# if not Settings.callback_manager.handlers:\n", - "# Settings.callback_manager.add_handler(langfuse_callback_handler)\n", - "# set_global_handler(\"langfuse\")\n", - "\n", - "# from llama_index.core import global_handler\n", - "# global_handler\n", - "\n", - "# Ensure the global handler is NOT set to langfuse\n", - "set_global_handler(\"simple\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "80fd1176-dfb1-4dfe-b318-94bce659b1a8", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "rg.init(\n", - " api_url='http://extralit-public-demo.hf.space/',\n", - " api_key=\"386a5806-0182-41f6-8076-f4b557818f0b\", #argilla\n", - " # api_key='9df5c40e-b5ce-4d19-ac07-50381a5c79aa', #abv \n", - " workspace='itn-recalibration',\n", - ")\n", - "papers_dataset = rg.FeedbackDataset.from_argilla(name=\"1-Master-Paper-List\", workspace=\"itn-recalibration\", )\n", - "extraction_dataset = rg.FeedbackDataset.from_argilla(name=\"2-Data-Extractions\", workspace=\"itn-recalibration\", )\n", - "preprocessing_dataset = rg.FeedbackDataset.from_argilla(name=\"Table-Preprocessing\", workspace=\"itn-recalibration\")" - ] - }, - { - "cell_type": "markdown", - "id": "054f734f-a69e-4d5d-8f1a-e4ffed74d18a", - "metadata": {}, - "source": [ - "## Load papers" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8ac5c2db-ea2c-44d6-bf4a-cf9e632df058", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "sys:1: ResourceWarning: unclosed \n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n" - ] - } - ], - "source": [ - "papers = pd.read_parquet('config/extraction_queue_197papers_2024-04-03.parquet')\n", - "\n", - "# papers_preprocessed = list({r.metadata['reference'] \\\n", - "# for r in preprocessing_dataset.filter_by(\n", - "# response_status=['submitted'], \n", - "# metadata_filters=rg.TermsMetadataFilter(name='type', values=['table', 'Table'])).records})\n", - "# papers_uploaded = list({r.metadata['reference'] \\\n", - "# for r in extraction_dataset.filter_by(response_status=['submitted', 'draft']).records})\n", - "\n", - "# papers_queue = papers_preprocessed\n", - "# len(papers_preprocessed), len(papers_uploaded)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a21a61ef-7ec3-437a-93fe-370a683d79c7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(91, 32)" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "papers_queue = papers.loc[papers.index.isin(papers_preprocessed)]\n", - "papers_queue.shape" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "28993312-b191-47a0-9fdd-a278853342f2", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Mendeley Reference KeyMeasured_outcomeApprox_num_rowsTables_countNotes_on_approx_num_rowsCheck_out_byCheck_in_byNeeds_digitizationNotes_on_extractiontitle...issnpmiddoicollectionsfile_idmime_typefile_namesizefilehashfile_path
reference
abdella2009doesAbdella2009Incidence (u5)42NoneCBCBFalseNoneDoes Insecticide Treated Mosquito Nets (ITNs) ......1573-3610 (Electronic)1895860710.1007/s10900-008-9132-6[Human Health Outcomes]6428579b-3ee9-2f91-2ec9-66250ba74834application/pdfAdbella_et_al_2009_J_Community_Health.pdf213444cada6d5613eff1204416c1e2a63038931eff40f2data/pdf/Adbella_et_al_2009_J_Community_Health...
abdulla2001impactAbdulla2001Parasitemia (u2)43NoneJSJSFalseNoneImpact on malaria morbidity of a programme sup......0959-8138 (Print)1115752710.1136/bmj.322.7281.270[Human Health Outcomes]177972f6-b129-e7c1-220d-03e95856f758application/pdfAbdulla_et_al___2001___Impact_on_malaria_morbi...285528ed77ef48bf6ca690b635d080eb3e1f38b8438fa5data/pdf/Abdulla_et_al___2001___Impact_on_mala...
abilio2015bioAbilio2015Vector susceptibility201-3, 5, 6NoneKBKBFalseNoneBio-efficacy of new long-lasting insecticide-t......NoneNone10.1186/s12936-015-0885-y[Entomological Outcomes]54ede4f1-a9e8-5e79-6cab-5b66c556bf18application/pdf12936_2015_Article_885_pdf.pdf2577795a507d55efd4cb88d2ebaf5cf8508a12dd92b1332data/pdf/12936_2015_Article_885_pdf.pdf
agossa2014laboratoryAgossa2014Vector susceptibility371-4Large row count due to repetition of experieme...KBKBTruedigitization updatedLaboratory and field evaluation of the impact ......1475-2875 (Electronic)2488450210.1186/1475-2875-13-193[Entomological Outcomes]64a054f4-66a9-8885-2345-13b33b3671c0application/pdfAgossa_et_al_2014_Mal_J.pdf6161758b4d0a6f39dc33ec547170e3c2629501a6960d64data/pdf/Agossa_et_al_2014_Mal_J.pdf
agossa2015impactAgossa2015Vector susceptibility231-4Maybe need to digitize/extract from fig 3KBKBFalseNoneImpact of Insecticide Resistance on the Effect......1932-6203 (Electronic)2667464310.1371/journal.pone.0145207[Entomological Outcomes]0aa9c155-7306-a71f-52fe-944db8e633a4application/pdf2015-Impact_of_Insecticide_Resistance_on_the_E...764912d4b9abf675a1604a02dd66231b62816d790b533adata/pdf/2015-Impact_of_Insecticide_Resistance...
..................................................................
lindblade2005evaluationLindblade2005Net durabilityNoneNoneNoneNoneNoneNoneNoneEvaluation of long-lasting insecticidal nets a......1360-2276None10.1111/j.1365-3156.2005.01501.x[Entomological Outcomes]15294800-a4a4-d26d-14b4-99c8b396e948application/pdflindblade2005evaluation.pdf1211405cfed926ae656cc33fb366423a257059585a1e4bdata/pdf/lindblade2005evaluation.pdf
norris2011efficacyNorris2011Vector susceptibilityNoneNoneNoneNoneNoneNoneNoneEfficacy of long-lasting insecticidal nets in ......1475-2875 (Electronic)2188014310.1186/1475-2875-10-254[Entomological Outcomes]11ea9233-51f9-4cff-377d-b585d8267094application/pdfEfficacy_of_long_lasting_insecticidal_nets_in_...143974296a5f52cd8d7ec1aba424a881c5d01aa940ca5fbdata/pdf/Efficacy_of_long_lasting_insecticidal...
ohashi2012efficacyOhashi2012Vector susceptibilityNoneNoneNoneNoneNoneNoneNoneEfficacy of pyriproxyfen-treated nets in steri......0022-2585 (Print)2302518610.1603/me12006[Entomological Outcomes]37e8cc37-85fa-6c5b-3e5d-ed37d0566158application/pdfEfficacy_of_pyriproxyfen_treated_nets_in_steri...284647a30942a6ef6ce47354e34ab23d4a0a22e6cdb179data/pdf/Efficacy_of_pyriproxyfen_treated_nets...
okumu2012implicationsOkumu2012Vector susceptibilityNoneNoneNoneNoneNoneNoneNoneImplications of bio-efficacy and persistence o......1475-2875 (Electronic)2316406210.1186/1475-2875-11-378[Entomological Outcomes]2525cc93-97af-6ef1-0860-3cd04be66be4application/pdfImplications_of_bio_efficacy_and_persistence_o...1032638e452bf88ce21236d63599f701156fab11520b304data/pdf/Implications_of_bio_efficacy_and_pers...
riveron2018highRiveron2018Vector susceptibilityNoneNoneNoneNoneNoneNoneNoneHigh Plasmodium Infection Rate and Reduced Bed......1537-6613 (Electronic)2908748410.1093/infdis/jix570[Entomological Outcomes]7ce097cb-884a-6401-3dc1-e552dee6a424application/pdfHigh_Plasmodium_Infection_Rate_and_Reduced_Bed...1131111cb0a6a5a59693e4406af3defddb2d223878592dedata/pdf/High_Plasmodium_Infection_Rate_and_Re...
\n", - "

111 rows × 32 columns

\n", - "
" - ], - "text/plain": [ - " Mendeley Reference Key Measured_outcome \\\n", - "reference \n", - "abdella2009does Abdella2009 Incidence (u5) \n", - "abdulla2001impact Abdulla2001 Parasitemia (u2) \n", - "abilio2015bio Abilio2015 Vector susceptibility \n", - "agossa2014laboratory Agossa2014 Vector susceptibility \n", - "agossa2015impact Agossa2015 Vector susceptibility \n", - "... ... ... \n", - "lindblade2005evaluation Lindblade2005 Net durability \n", - "norris2011efficacy Norris2011 Vector susceptibility \n", - "ohashi2012efficacy Ohashi2012 Vector susceptibility \n", - "okumu2012implications Okumu2012 Vector susceptibility \n", - "riveron2018high Riveron2018 Vector susceptibility \n", - "\n", - " Approx_num_rows Tables_count \\\n", - "reference \n", - "abdella2009does 4 2 \n", - "abdulla2001impact 4 3 \n", - "abilio2015bio 20 1-3, 5, 6 \n", - "agossa2014laboratory 37 1-4 \n", - "agossa2015impact 23 1-4 \n", - "... ... ... \n", - "lindblade2005evaluation None None \n", - "norris2011efficacy None None \n", - "ohashi2012efficacy None None \n", - "okumu2012implications None None \n", - "riveron2018high None None \n", - "\n", - " Notes_on_approx_num_rows \\\n", - "reference \n", - "abdella2009does None \n", - "abdulla2001impact None \n", - "abilio2015bio None \n", - "agossa2014laboratory Large row count due to repetition of experieme... \n", - "agossa2015impact Maybe need to digitize/extract from fig 3 \n", - "... ... \n", - "lindblade2005evaluation None \n", - "norris2011efficacy None \n", - "ohashi2012efficacy None \n", - "okumu2012implications None \n", - "riveron2018high None \n", - "\n", - " Check_out_by Check_in_by Needs_digitization \\\n", - "reference \n", - "abdella2009does CB CB False \n", - "abdulla2001impact JS JS False \n", - "abilio2015bio KB KB False \n", - "agossa2014laboratory KB KB True \n", - "agossa2015impact KB KB False \n", - "... ... ... ... \n", - "lindblade2005evaluation None None None \n", - "norris2011efficacy None None None \n", - "ohashi2012efficacy None None None \n", - "okumu2012implications None None None \n", - "riveron2018high None None None \n", - "\n", - " Notes_on_extraction \\\n", - "reference \n", - "abdella2009does None \n", - "abdulla2001impact None \n", - "abilio2015bio None \n", - "agossa2014laboratory digitization updated \n", - "agossa2015impact None \n", - "... ... \n", - "lindblade2005evaluation None \n", - "norris2011efficacy None \n", - "ohashi2012efficacy None \n", - "okumu2012implications None \n", - "riveron2018high None \n", - "\n", - " title \\\n", - "reference \n", - "abdella2009does Does Insecticide Treated Mosquito Nets (ITNs) ... \n", - "abdulla2001impact Impact on malaria morbidity of a programme sup... \n", - "abilio2015bio Bio-efficacy of new long-lasting insecticide-t... \n", - "agossa2014laboratory Laboratory and field evaluation of the impact ... \n", - "agossa2015impact Impact of Insecticide Resistance on the Effect... \n", - "... ... \n", - "lindblade2005evaluation Evaluation of long-lasting insecticidal nets a... \n", - "norris2011efficacy Efficacy of long-lasting insecticidal nets in ... \n", - "ohashi2012efficacy Efficacy of pyriproxyfen-treated nets in steri... \n", - "okumu2012implications Implications of bio-efficacy and persistence o... \n", - "riveron2018high High Plasmodium Infection Rate and Reduced Bed... \n", - "\n", - " ... issn pmid \\\n", - "reference ... \n", - "abdella2009does ... 1573-3610 (Electronic) 18958607 \n", - "abdulla2001impact ... 0959-8138 (Print) 11157527 \n", - "abilio2015bio ... None None \n", - "agossa2014laboratory ... 1475-2875 (Electronic) 24884502 \n", - "agossa2015impact ... 1932-6203 (Electronic) 26674643 \n", - "... ... ... ... \n", - "lindblade2005evaluation ... 1360-2276 None \n", - "norris2011efficacy ... 1475-2875 (Electronic) 21880143 \n", - "ohashi2012efficacy ... 0022-2585 (Print) 23025186 \n", - "okumu2012implications ... 1475-2875 (Electronic) 23164062 \n", - "riveron2018high ... 1537-6613 (Electronic) 29087484 \n", - "\n", - " doi \\\n", - "reference \n", - "abdella2009does 10.1007/s10900-008-9132-6 \n", - "abdulla2001impact 10.1136/bmj.322.7281.270 \n", - "abilio2015bio 10.1186/s12936-015-0885-y \n", - "agossa2014laboratory 10.1186/1475-2875-13-193 \n", - "agossa2015impact 10.1371/journal.pone.0145207 \n", - "... ... \n", - "lindblade2005evaluation 10.1111/j.1365-3156.2005.01501.x \n", - "norris2011efficacy 10.1186/1475-2875-10-254 \n", - "ohashi2012efficacy 10.1603/me12006 \n", - "okumu2012implications 10.1186/1475-2875-11-378 \n", - "riveron2018high 10.1093/infdis/jix570 \n", - "\n", - " collections \\\n", - "reference \n", - "abdella2009does [Human Health Outcomes] \n", - "abdulla2001impact [Human Health Outcomes] \n", - "abilio2015bio [Entomological Outcomes] \n", - "agossa2014laboratory [Entomological Outcomes] \n", - "agossa2015impact [Entomological Outcomes] \n", - "... ... \n", - "lindblade2005evaluation [Entomological Outcomes] \n", - "norris2011efficacy [Entomological Outcomes] \n", - "ohashi2012efficacy [Entomological Outcomes] \n", - "okumu2012implications [Entomological Outcomes] \n", - "riveron2018high [Entomological Outcomes] \n", - "\n", - " file_id \\\n", - "reference \n", - "abdella2009does 6428579b-3ee9-2f91-2ec9-66250ba74834 \n", - "abdulla2001impact 177972f6-b129-e7c1-220d-03e95856f758 \n", - "abilio2015bio 54ede4f1-a9e8-5e79-6cab-5b66c556bf18 \n", - "agossa2014laboratory 64a054f4-66a9-8885-2345-13b33b3671c0 \n", - "agossa2015impact 0aa9c155-7306-a71f-52fe-944db8e633a4 \n", - "... ... \n", - "lindblade2005evaluation 15294800-a4a4-d26d-14b4-99c8b396e948 \n", - "norris2011efficacy 11ea9233-51f9-4cff-377d-b585d8267094 \n", - "ohashi2012efficacy 37e8cc37-85fa-6c5b-3e5d-ed37d0566158 \n", - "okumu2012implications 2525cc93-97af-6ef1-0860-3cd04be66be4 \n", - "riveron2018high 7ce097cb-884a-6401-3dc1-e552dee6a424 \n", - "\n", - " mime_type \\\n", - "reference \n", - "abdella2009does application/pdf \n", - "abdulla2001impact application/pdf \n", - "abilio2015bio application/pdf \n", - "agossa2014laboratory application/pdf \n", - "agossa2015impact application/pdf \n", - "... ... \n", - "lindblade2005evaluation application/pdf \n", - "norris2011efficacy application/pdf \n", - "ohashi2012efficacy application/pdf \n", - "okumu2012implications application/pdf \n", - "riveron2018high application/pdf \n", - "\n", - " file_name \\\n", - "reference \n", - "abdella2009does Adbella_et_al_2009_J_Community_Health.pdf \n", - "abdulla2001impact Abdulla_et_al___2001___Impact_on_malaria_morbi... \n", - "abilio2015bio 12936_2015_Article_885_pdf.pdf \n", - "agossa2014laboratory Agossa_et_al_2014_Mal_J.pdf \n", - "agossa2015impact 2015-Impact_of_Insecticide_Resistance_on_the_E... \n", - "... ... \n", - "lindblade2005evaluation lindblade2005evaluation.pdf \n", - "norris2011efficacy Efficacy_of_long_lasting_insecticidal_nets_in_... \n", - "ohashi2012efficacy Efficacy_of_pyriproxyfen_treated_nets_in_steri... \n", - "okumu2012implications Implications_of_bio_efficacy_and_persistence_o... \n", - "riveron2018high High_Plasmodium_Infection_Rate_and_Reduced_Bed... \n", - "\n", - " size filehash \\\n", - "reference \n", - "abdella2009does 213444 cada6d5613eff1204416c1e2a63038931eff40f2 \n", - "abdulla2001impact 285528 ed77ef48bf6ca690b635d080eb3e1f38b8438fa5 \n", - "abilio2015bio 2577795 a507d55efd4cb88d2ebaf5cf8508a12dd92b1332 \n", - "agossa2014laboratory 616175 8b4d0a6f39dc33ec547170e3c2629501a6960d64 \n", - "agossa2015impact 764912 d4b9abf675a1604a02dd66231b62816d790b533a \n", - "... ... ... \n", - "lindblade2005evaluation 121140 5cfed926ae656cc33fb366423a257059585a1e4b \n", - "norris2011efficacy 1439742 96a5f52cd8d7ec1aba424a881c5d01aa940ca5fb \n", - "ohashi2012efficacy 284647 a30942a6ef6ce47354e34ab23d4a0a22e6cdb179 \n", - "okumu2012implications 1032638 e452bf88ce21236d63599f701156fab11520b304 \n", - "riveron2018high 1131111 cb0a6a5a59693e4406af3defddb2d223878592de \n", - "\n", - " file_path \n", - "reference \n", - "abdella2009does data/pdf/Adbella_et_al_2009_J_Community_Health... \n", - "abdulla2001impact data/pdf/Abdulla_et_al___2001___Impact_on_mala... \n", - "abilio2015bio data/pdf/12936_2015_Article_885_pdf.pdf \n", - "agossa2014laboratory data/pdf/Agossa_et_al_2014_Mal_J.pdf \n", - "agossa2015impact data/pdf/2015-Impact_of_Insecticide_Resistance... \n", - "... ... \n", - "lindblade2005evaluation data/pdf/lindblade2005evaluation.pdf \n", - "norris2011efficacy data/pdf/Efficacy_of_long_lasting_insecticidal... \n", - "ohashi2012efficacy data/pdf/Efficacy_of_pyriproxyfen_treated_nets... \n", - "okumu2012implications data/pdf/Implications_of_bio_efficacy_and_pers... \n", - "riveron2018high data/pdf/High_Plasmodium_Infection_Rate_and_Re... \n", - "\n", - "[111 rows x 32 columns]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# prejonny papers\n", - "references = ['abdella2009does','abdulla2001impact','abilio2015bio','agossa2014laboratory','agossa2015impact','akoton2018experimental','allossogbe2017who','alonso1993malaria','anshebo2014estimation','asale2014evaluation','asidi2004experimental','asidi2005experimental','asidi2012loss','atieli2010effect','awolola2014impact','badolo2012experimental','bayili2017evaluation','bayili2019experimental','birhanu2019bio','bobanga2013field','bogh1998permethrin','boussougou2017physical','camara2018efficacy','chandre2010field','chouaibou2006efficacy','corbel2010field','curtis2003insecticide','curtis1998comparison','dabire2006personal','dalessandro1995mortality','darriet2011combining','djenontin2009managing','djenontin2010indoor','djenontin2015insecticidal','djenontin2018field','etang2004reduced','etang2007preliminary','fadel2019combination','fane2012anopheles','glunt2015long','guillet2001combined','hassan2008retention','hassan2012bioassay','hauser2019ability','hawley2003community','henry2005protective','hougard2002useful','howard2000evidence','hughes2020anopheles','ibrahim2019high','jones2012aging','kilian2015field','kolaczinski2000experimental','koudou2011efficacy','kulkarni2007efficacy','kweka2011durability','kweka2017efficacy','kweka2019bio','lines1987experimental','magbity1997effects','mahande2018bio','malima2008experimental','malima2009behavioural','malima2013evaluation','masalu2018potential','massue2016durability','maxwell1999comparison','maxwell2002effect','maxwell2003variation','maxwell2006tests','mosha2008experimental','msangi2008effects','murray2020barrier','musa2020long','nguessan2007reduced','nguessan2016chlorfenapyr','ngufor2014olyset','ngufor2014combining','ngufor2017which','obi2020monitoring','ochomo2017insecticide','okoyo2015comparing','omondi2017quantifying','oumbouke2019evaluation','oxborough2013itn','oxborough2015new','pmi2019tanzania','pmi2017madagascar','randriamaherijaona2017durability','sheikhi2017wash','solomon2018bed','soremekun2004measuring','spitzen2017effect','tami2004evaluation','tiono2018efficacy','tungu2015evaluation','vatandoost2006comparative','vatandoost2013wash','pmi2018mozambique','winkler2012efficacy','zhou2016insecticide','duchon2009mixture','etang2013evaluation','etang2016when','kayedi2015entomological','kolaczinski2000comparison','lindblade2005evaluation','norris2011efficacy','ohashi2012efficacy','okumu2012implications','riveron2018high']\n", - "papers_queue = papers.loc[references]\n", - "papers_queue" - ] - }, - { - "cell_type": "markdown", - "id": "69e52c30-f07e-4341-976d-45e1c76725aa", - "metadata": {}, - "source": [ - "# Predict extractions" - ] - }, - { - "cell_type": "markdown", - "id": "7c611c47-8c41-4dbb-a30c-7861d7a37914", - "metadata": {}, - "source": [ - "## Load schemas" - ] - }, - { - "cell_type": "markdown", - "id": "c27c5844-09c4-410d-9704-4c50f3bf4f80", - "metadata": {}, - "source": [ - "### Fetch latest schema version\n", - "Loading schemas into `SchemaStructure` is needed so the LLM can extract a table for each schemas in `schemas` argument" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "84797356-25f1-429f-a302-017adf890643", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "# ignore this until fetching schemas from minio works\n", - "\n", - "# ss = SchemaStructure.from_s3(workspace='itn-recalibration', minio_client=get_minio_client())\n", - "# ss.ordering" - ] - }, - { - "cell_type": "markdown", - "id": "373baa81-6b3c-43f7-ac25-77100842faa2", - "metadata": {}, - "source": [ - "### How to update schemas\n", - "\n", - "These steps are to easily make versioned updates to *existing* schemas or to add new schemas:\n", - "1. Update the schema specs in the `pandera.DataFrameSchema` classes located in the `schemas/*.py` files, then import the classes to load the changes.\n", - "2. Apply the changes to the server using `.to_s3`, which uploads these schema .json files to a MinIO file object storage server. If a schema already exists, then it would create a new version of the schema file, while keeping the old versions intact.\n", - " - Make sures that the `workspace` argument matches the Argilla workspace name for your project.\n", - " - You may browse and manipulate all uploaded files in the MinIO Console, if connected to the K8s cluster\n", - "3. The extraction tables in the Extralit web UI will automatically fetch the latest version of the schemas that were uploaded, or allow you to update to a new schema version if the table was built with an older version." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "87394620-24db-478d-8ad1-3134b60ec29b", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['ITNCondition', 'Observation', 'ClinicalOutcome', 'EntomologicalOutcome']" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from schemas import Observation, ITNCondition, EntomologicalOutcome, ClinicalOutcome, Publication\n", - "\n", - "ss = SchemaStructure(schemas=[Observation, ITNCondition, EntomologicalOutcome, ClinicalOutcome])\n", - "ss.ordering" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b94adb50-694d-4b6c-8243-a8b62f09cf15", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# also ignore?\n", - "\n", - "# ss.to_s3(workspace='itn-recalibration', minio_client=minio_client)" - ] - }, - { - "cell_type": "markdown", - "id": "04c20e3d-a40d-42b3-ac0b-dbaff2a9a144", - "metadata": {}, - "source": [ - "## Select extraction references" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7b577217-8ff2-4b02-99e4-baff82c25eb1", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'pinder2015efficacy, terlouw2010impact, tokponnon2014impact'" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# references = ['Atieli2010effectgambiaeMalaria', 'Dabire2006personalpyrethroidsMalaria', 'Ochomo2017insecticidekenyaEmerging', 'Vatandoost2013washtestArthropod']\n", - "# references = ['apetogbo2022insecticide', 'azizi2022implementing', 'bamou2021increased', 'clegban2021evaluation',]\n", - "# references = ['padonou2012decreased', 'robert1991influence', 'curtis2000comparison', 'pwalia2019high', 'darriet2002experimental', 'mosqueira2015pilot']\n", - "# references = ['ketoh2018efficacy', 'darriet2005pyrethoid', 'magesa1991trial', 'quinones1998permethrin', 'kawada2014small', 'kawada2014preventive', 'randriamaherijaona2015do', 'kilian2011evidence',]\n", - "# references = ['mbogo1996impact', 'menze2020experimental', 'kitau2012species', 'kilian2008long', 'mnzava2001malaria', 'hougard2003efficacy', 'pennetier2013efficacy',]\n", - "# references = ['ngufor2016efficacy', 'okia2013bioefficacy', 'mosha2008comparative', 'quinones1997anopheles', 'ahoua2012status', 'sreehari2009wash', 'abdulla2005spatial', 'tan2016longitudinal',\n", - "# 'wills2013physical', 'marchant2002socially', 'nevill1996insecticide', 'msuya1991trial', 'tungu2021efficacy']\n", - "# references = ['hamel2011combination', 'ter2003impact', 'moiroux2014human', 'schellenberg2001effect', 'tamari2020protective', 'yewhalaw2022experimental', 'tungu2021field', 'sanou2021insecticide', 'kouassi2020susceptibility', 'mulatier2019prior', \n", - "# 'ngongang2022reduced', 'lorenz2020comparative', 'hien2021evidence', 'ngufor2020efficacy', 'sovi2022physical', 'adageba2022bio', 'githinji2020impact', 'grisales2021pyriproxyfen', 'tungu2021bio', 'tungu2021effectiveness',]\n", - "\n", - "references = ['pinder2015efficacy', 'terlouw2010impact', 'tokponnon2014impact']\n", - "\n", - "# references = [ 'accrombessi2023efficacy', 'mieguim2021insights', 'gebremariam2021evaluation', 'gichuki2021bioefficacy', 'syme2021which', 'zahouli2023small', 'diouf2022evaluation', 'ibrahim2020exploring', 'kibondo2022influence', 'meiwald2022association', 'menze2022experimental', 'syme2022pyrethroid', 'toe2018do', 'yewhalaw2022experimental', 'ngufor2022comparative' ]\n", - "\n", - "\n", - "', '.join(references)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9db560c2-f130-45d5-8b0e-46b5083d24d0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "15" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(references)" - ] - }, - { - "cell_type": "markdown", - "id": "508c3959-e4c9-44e8-a3bb-f8c258ebccf0", - "metadata": {}, - "source": [ - "## Run LLM extractions" - ] - }, - { - "cell_type": "markdown", - "id": "5143f215-378b-4ded-bee0-65366b7ca2ca", - "metadata": {}, - "source": [ - "### Select LLM and embedding models" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d2938dbc-a94e-47f3-8349-9f6ea9eca993", - "metadata": {}, - "outputs": [], - "source": [ - "# llm_model = 'gpt-3.5-turbo'\n", - "# llm_model = 'gpt-4-turbo'\n", - "llm_model = 'gpt-4o'\n", - "\n", - "embed_model = 'text-embedding-3-small'\n", - "# embed_model = 'text-embedding-3-large'\n", - "\n", - "pred_extractions = defaultdict(lambda: {})\n", - "indexes = {}\n", - "responses = {}" - ] - }, - { - "cell_type": "markdown", - "id": "8183742a-9082-47f0-b502-2f9daadccc3f", - "metadata": {}, - "source": [ - "### Add model segments to Weaviate vector db" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "24742f9a-efcf-4bb2-b54f-74b17e13d827", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "_RawGQLReturn(aggregate={'LlamaIndexDocumentSections': [{'meta': {'count': 3828}}]}, explore={}, get={}, errors=None)" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Verify the number of items in the index before\n", - "weaviate_client.graphql_raw_query(\"\"\"\n", - "{\n", - " Aggregate {\n", - " LlamaIndexDocumentSections {\n", - " meta {\n", - " count\n", - " }\n", - " }\n", - " }\n", - "}\n", - "\"\"\"\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0bc3ddf2-bd99-4423-964c-33fd1d262f76", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "a22619b907694ee79b5b0a0993f5b91a", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/15 [00:0037.5degC or reported fever in the previous 48 h, and positive malaria rapid diagnostic test) in children enrolled in the active case detection cohort in the 2 years after net distribution. Visits of children in the cohort at health facilities were monitored and the results of malaria rapid diagnostic tests and any treatment given were recorded. However, it was difficult to assess with certainty if malaria rapid diagnostic tests were used only if the child was symptomatic (as our protocol specified); therefore, the passive data was not included in the primary analyses.\n", - "\n", - "Secondary clinical outcomes were malaria infection prevalence in all age groups and anaemia (defined as haemoglobin concentration <10 g/dL) prevalence in children aged 5 years or younger at 6 months and 18 months after net distribution.\n", - "\n", - "Type and duration of adverse events related to usage of nets were recorded using a prespecified questionnaire at each cohort visit and during net usage and cross-sectional surveys. Data on hospitalisation and death in children in the cohort were collected by interviewing the child's guardian and reviewing the hospital record, following receipt of consent.\n", - "\n", - "The primary entomological outcome was entomological inoculation rate, measured as the mean number of _Plasmodium_ spp infective malaria vectors collected per person per night measured indoors and outdoors. Secondary entomological outcomes were vector density (number of mosquitoes caught per person per night), sporozoite rate, and species composition. Centers for Disease Control and Prevention bottle bioassays were performed by exposing adult female _An gambiae_, collected as larvae, to alpha-cypermethrin for 30 min (1, 2, 5, and 10 times the diagnostic dose), and to chlorfenrapy (100 mg/bottle) and pyriproxyfen (100 mg/bottle) for 60 min each year.(r) Mortality was recorded at 30 min for all four doses of alpha-cypermethrin (insectidic resistance intensity measurement), and at 24, 48, and 72 h after exposure for chlorfenapyr. The reduction in fecundity rate induced by pyriproxyfen relative to unexposed mosquitoes was assessed by ovarian dissection, 3 days after pyriproxyfen exposure. Other outcomes included in the protocol (parity, resting behaviour, survivorship, and other resistance measures) are still to be analysed and will be published elsewhere.\n", - "\n", - "header: Statistical analysis\n", - "\n", - "The sample size calculations for epidemiological data collection were calculated using the method of Hayes and Moulton.(r) The study was designed to detect a 30% difference in malaria case incidence, assuming a control group incidence of 1 malaria case per child-year and a coefficient of variation of 0-3 between clusters. This design required 20 clusters per group and 25 (20+5 allowing for loss to follow-up) children per cluster followed up for 2 years to give 80% power. Due to the delay in enrolment, which resulted in a shorter follow-up time, the number of children per cluster was increased to 30 (1800 children total). This sample size calculation includes adjustment for multiple testing (allowing for the three groups) using a Bonferroni-corrected two-sided a of 2.5%.\n", - "\n", - "For malaria infection prevalence, it was assumed that the prevalence in the reference group was 40%, with a coefficient of variation between clusters of 0-3. With 72 individuals per cluster, the study had 80% power to detect a 30% lower prevalence in the intervention groups compared with the reference group, using a Bonferroni-corrected a for multiple comparisons.\n", - "\n", - "The primary intention-to-treat analysis was a comparison of incidence of clinical malaria episodes between each dual active-ingredient LLIN group and the\n", - "\n", - "header: Abstract\n", - "\n", - "Efficacy of pyriproxyfen-pyrethroid long-lasting insecticidalnets (LLINs) and chlorfenapyr-pyrethroid LLINs compared with pyrethroid-only LLINs for malaria control in Benin: a cluster-randomised, superiority trial\n", - "\n", - "Manfred Accomphesi\n", - "\n", - "\n", - "Background New classes of long-lasting insecticidal nets (LLINs) combining mixtures of insecticides with different modes of action could put malaria control back on track after rebounds in transmission across sub-Saharan Africa. We evaluated the relative efficacy of pyriproxyfen-pyrethroid LLINs and chlorfenapyr-pyrethroid LLINs compared with standard LLINs against malaria transmission in an area of high pyrethroid resistance in Benin.\n", - "\n", - "header: Results\n", - "\n", - "Between May 23 and June 24, 2019, 53854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. The households were delineated into 61 clusters, with one subsequently excluded due to extensive seasonal flooding (figure). Baseline cross-sectional epidemiological and entomological surveys were conducted between October and November, 2019 (table 1). The malaria infection prevalence was 43 5% (1924 of 4428 participants, cluster range 15 1-72 796) and population self-reported LLIN usage was 95 7% (3913 of 4088 participants). Cluster demographics and malaria prevalence were similar between groups (table 1). Entomological inoculation rate was 0 68 _Plasmodium_ spp infective bites per person per night (cluster range 0 00-3 80) indoors and 0 26 per person per night (0 00-1 88) outdoors.\n", - "\n", - "Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54 300 households in an updated census, with 97 1% of households receiving at least one net per household. Active ingredients in the new nets were found to be within or higher than the acceptable target limits depending on LLIN brand (appendix p 4). Study net usage was highest (5532 [76 8%] of 7206 participants) at 9 months after distribution, following a second hang-up campaign, but had decreased by 24 months (4032 [60 6%] of 6654). Study net coverage and usage indicators were similar between study groups up to 18 months after net distribution. At 24 months, pyriproxyfen-pyrethroid LLIN usage and ownership was the lowest (appendix pp 5-6). Use of any type of LLIN (study LLINs and others) remained greater than 80% up to 24 months after distribution (appendix p 7).\n", - "\n", - "In the 2283 households that were randomly selected for post-intervention cohort follow-up, 3129 children were eligible, 1829 of whom were randomly selected, and consent was obtained for 1806 (figure). Among the 2849 and 2771 households randomly selected at 6 months and 18 months after LLIN distribution for the malaria prevalence cross-sectional surveys, 4781 (85 1%) of 5620 households consent, with a similar proportion in the two surveys. The remaining households were either not available during the visit (775 [13 8%] of) or declined to participate (64 [1 1%]; appendix p 8).\n", - "\n", - "Children aged 6 months-9 years enrolled for active case detection were monitored for 21 months, for a total follow-up time of 2645 4- child-years at risk. Loss to follow-up was similar between groups (figure). At enrolment, children were balanced on age, sex, and net usage. During the 21-month follow-up period, we detected 2135 malaria cases through active case detection (table 2). The mean malaria case incidence over 21 months of follow-up was 1 03 cases per child-year (95% CI 0 96-1 09) in the pyrethroid-only LLIN reference group, 0 84 cases per child-year (0 78-70 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 86, 95% CI 0 65-1 46; p = 0 - 28), and 0 56 cases per child-year (0 51-0 64) in the chlorfenapry-pyrethroid LLIN group (HR 0 54, 95% CI 0 - 42-0 70; p < 0 0001; table 2). The strongest effect was observed in the first year of follow-up in the chlorfenapry-pyrethroid group (HR 0 46, 95% CI 0 30-0 72; p = 0 - 0005; table 2). When combining active and passive visits, the number of cases detected nearly doubled; however, the effect size in comparison to the reference group was similar for both intervention nets (appendix p 9).\n", - "\n", - "Malaria infection prevalence was 23 5% (1037 of 4409 participants) at 6 months and 34 9% (1554 of 4450) at 18 months after net distribution (table 3). There was strong evidence for a reduction of malaria infection prevalence in the chlorfenapry-pyrethroid LLIN group at 6 months (15 7%; odds ratio [OR] 0 47, 95% CI 0 32-0 69; p = 0 0002) and at 18 months (27 9%; OR 0 60 - 60, 0 - 43-0 85; p = 0 004) compared with the reference group (28 - 0% at 6 months and 38 7% at 18 months; table 3). In the pyriproxyfen-pyrethroid group, there was no evidence for a reduction in malaria prevalence at 6 months (26 9%; OR 0 - 92, 95% CI 0 63-1 35; p = 0 - 67) or 18 months (38 2%; OR 0 97 0, 0 69-1 37; p = 0 87) compared with the reference group. Results were similar for the per-protocol analysis (appendix p 1). There was no evidence of a reduction in moderate to severe anaemia prevalence in either intervention group (table 3). The post-hoc analysis adjusting for covariates used in the randomisation did not change the interpretation of the results (appendix pp 12-13).\n", - "\n", - "\n", - "Adverse events related to study nets were reported in 528 (45-496) of 1162 participants surveyed at 1 month after net distribution. The highest proportion of adverse events was reported in the pyrethroid-only LLIN group (247 [63-8%] of 387 participants), followed by the pyriproyfen-pyrethroid LLIN group (212 [52-5%] of 404) and then the chlorfenapy-pyrethroid LLIN group (69 [18-6%] of 371). Facial burning (392 [33-7%] of 1162 participants), and skin irritation or itchiness (244 [20-9%]) were the most common adverse events in all groups. Adverse events were rare in all three groups at all later timepoints (appendix P 14-15). We recorded 44 serious adverse events (including three deaths) in the cohort children, with 32 (72-7%) documented as severe malaria (11 cases in the pyriproyfen-pyrethroid LLIN group, ten in the chlorfenapy-pyrethroid LLIN group, and 11 in the pyrethroid-only LLIN group). No serious adverse events related to net use were reported.\n", - "\n", - "A total of 259265 mosquitoes were collected over 3840 collection nights indoors and outdoors, of which 20-9% (29814 from indoors and 24436 from outdoors) were malaria vectors, with _An gambiae_ sensu that the most predominant. Overall, indoor entomological inoculation rate was lower in both intervention groups than in the reference group, with a mean entomological inoculation rate of 0-90 infectious bites per night per person in the chlorfenapy-pyrethroid LLIN group (rate ratio [RR] 0-34, 95% CI 0-18-0-62; p=0-0005), 0-12 in the pyriproyfen-pyrethroid LLIN group (RR 0-42, 0-2-3-0-74; p=0-0028), and 0-28 in the pyrethroid-only LLIN group (table 4). Mean indoor vector density appeared to be lower in the chlorfenapy-pyrethroid LLIN group (10-18 bites per person per night, density ratio 0-44, 95% CI 0-2-30-84; p=0-014), and in the pyriproyfen-pyrethroid LLIN group (13-6 bites per person per night, density ratio 0-58, 0-30-1-12; p=0-011) than in the reference group (23-0 bites per person per night, but the latter difference was not statistically significant (table 4). Adjusting for baseline vector density in the models gave similar results (appendix P 16). There was no significant difference in sporozoite rate in any of the intervention groups compared with the reference group (table 4).\n", - "\n", - "Reduction in outdoor entomological inoculation rate compared with the reference group was observed only in the chlorfenapy-pyrethroid LLIN group (RR 0-30, 95% CI 0-13-0-67; p=0-0035; appendix P 17). There was very weak evidence for a reduction in outdoor entomological inoculation rate in the pyriproyfen-pyrethroid LLIN group compared with the pyrethroid-only group (RR 0-58, 0-30-1-13; p=0-11). Similar effects were observed for outdoor vector density for both intervention nets (appendix P 17).\n", - "\n", - "Post-intervention pyrethrold resistance intensity was high across the study groups in _An gambiae_ sensu lato, with mean mortality of 85% or less after exposure to 10 times the diagnostic concentrations of alpha-cypentrohin in year 2 (appendix P 18). No resistance to chlorfenapy was observed during either year after net distribution (appendix P 18). Exposure of _An gambiae_ sensu lato to pyriproyfen led to a high reduction in fecundity rate relative to unexposed control mosquitoes over the 2 years after net distribution (73-2%, 95% CI 62-2-82-4 in year 1, and 76-6%, 66-6-84-9 in year 2).\n", - "\n", - "header: Implications of all the available evidence\n", - "\n", - "Given the positive findings, both in Benin and Tanzania, for chlorfenapyr-pyrethroid LLINs, they are likely to become the first WHO-recommended LLINs impregnated with an insecticide class other than pyrethroids. The absence of superior efficacy of pyrioxyfen-pyrethroid LLINs compared with standard pyrethroid-only LLINs is consistent with the results of the previous Tanzania study and calls into question the role of the current pyrioxyfen-pyrethroid LLINs in future malaria vector strategies.\n", - "\n", - "header: Role of the funding source\n", - "\n", - "The funders of the study had no role in study design, data collection, data analysis, data interpretation, writing of the report, or in the decision to submit for publication.\n", - "\n", - "header: Procedures\n", - "\n", - "The nets tested in the trial were: Royal Guard (Disease Control Technologies, Greer, SC, USA), polyethylene netting (I20 deniers incorporating 220 mg/m2 pyriproyfen and 220 mg/m2 alpha-cypermethrin); Interceptor G2 (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 chlorfenapyr and 100 mg/m2 alpha-cypermethrin); and the reference net, Interceptor (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 of alpha-cypermethrin). Nets were distributed in collaboration with the Benin National Malaria Control Program. Households were asked to collect their nets from a central point and received one net per every two residents in their household, rounded up for odd numbers. Nets already in houses were not removed but households were encouraged to use the new study nets. Additionally, net hang-up campaigns to encourage net use took place at 1 month and 7 months after distribution. Net coverage surveys to assess net ownership and usage were done at 1, 9, and 24 months after distribution. Throughout the follow-up period, children enrolled in the analysis cohort and participants enrolled in the cross-sectional surveys were also asked about their net use.\n", - "\n", - "Insecticide content at baseline was assessed on 30 randomly selected new nets per LLIN brand, by gas chromatography with Flame Ionisation Detection, at the\n", - "Centre Wallon de Recherches Agronomiques, Gembloux, Belgium. The insecticidal and physical durability of the study nets is being assessed in a separate study.\n", - "\n", - "Due to the COVID-19 pandemic, there was a 3-month gap between the distribution of the nets and the enrolment of children in the cohort. At enrolment and at 1 year after distribution (April, 2021), children were treated with antimalarial drugs (atremether-lumefantrinity to clear any underlying infection. The cohort was monitored from August, 2020, to April, 2022, a 21-month period, which encompassed the first 2 years after net distribution. Study nurses visited children every 2 weeks during the transmission season (April-October) and every 1 month in the dry season (November-March). At each visit, children were clinically examined and if they were febrile or had a history of fever in the past 48 h, they were tested for malaria using a malaria rapid diagnostic test. If the test was positive, the child was treated with artemether-lumefantrine, according to national guidelines.\n", - "\n", - "During cross-sectional surveys, all participants were tested for malaria using a malaria rapid diagnostic test and received treatment if the test was positive, and children younger than 5 years were tested for anaemia. Information regarding net ownership and usage, and other household-level indicators were collected at the same time.\n", - "\n", - "Entomological monitoring was also delayed and took place every 3 months between June, 2020, and April, 2022. Volunteers recruited from study clusters collected mosquitoes that landed on their legs between 1900 h and 0700 h for 1 night at four randomly selected houses in each cluster at each timepoint. Mosquitoes were morphologically identified to species and a subsample of _Anopheles_ spp was tested for molecular species using PCR.(r) A random sample of _Anopheles_ spp (up to 30% from each nightly catch in each cluster) were tested for sporozoites using the ELISA circumsporozoite protein technique.(r)\n", - "\n", - "header: Discussion\n", - "\n", - "This trial assessed the efficacy of two dual active-ingredient LLINs in an area of Benin with malaria vectors that are highly resistant to pyrethroids and found that chlorfenapy-pyrethroid LLINs provided significantly better protection against malaria for up to 2 years after net distribution compared with pyrethroid-only LLINs. Children aged 6 months-10 years living in clusters that received chlorfenapy-pyrethroid LLINs had a 46% lower incidence of malaria over 2 years after LLIN distribution;\n", - "\n", - "\\begin{table}\n", - "\\begin{tabular}{c c c c c c c c c c} & **Malaria infection** & \\multicolumn{6}{c}{**Anaemia in children younger than 5 years**} \\\\ \\hline n/N & Prevalence & OR & 95\\% CI & p valuea & n/N & Prevalence & OR & 95\\% CI & p valuea \\\\ \\hline\n", - "**6 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 412/1471 & 28\\(\\,\\)0\\% & 1 (ref) & – & – & 992/41 & 41\\(\\,\\)1\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 394/1463 & 26\\(\\,\\)9\\% & 0\\(\\,\\)92 & 0\\(\\,\\)\n", - "\n", - "63\\(\\,\\)45 & 0\\(\\,\\)67 & 117/250 & 46\\(\\,\\)8\\% & 124 & 0.71–218 & 0.45 \\\\ LLIN group & & & & & & & & & \\\\ Chlorfenapy-pyrethroid & 231/1475 & 157\\(\\,\\)\\% & 0\\(\\,\\)47 & 0\\(\\,\\)32\\(\\,\\)0\\(\\,\\)669 & 0\\(\\,\\)0002 & 82/241 & 34\\(\\,\\)0\\% & 0.71 & 0.40–126 & 0.24 \\\\ LLIN group & & & & & & & & & \\\\\n", - "**18 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 576/14/849 & 38\\(\\,\\)7\\% & 1 (ref) & – & – & 118/25 & 46\\(\\,\\)8\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 564/14/83 & 38\\(\\,\\)2\\% & 0\\(\\,\\)97 & 0\\(\\,\\)69\\(\\,\\)13\\(\\,\\)07 & 0\\(\\,\\)87 & 108/245 & 44\\(\\,\\)1\\% & 0.84 & 0.40–179\n", - "\n", - "\n", - "participants of any age had 53% lower odds of malaria infection at 6 months and 40% lower odds at 18 months after LLIN distribution, and were exposed to a 66% reduction in entomological inoculation rate compared with those living in clusters that received pyrethroid-only LLINs. Similar gains were not observed with the pyriproxyfen-pyrethroid LLIN, with a small reduction in malaria incidence in the first year of the study that was attenuated in year 2, and no effect on malaria infection prevalence in either year, compared with the pyrethroid-only reference group. However, a 58% reduction in indoor entomological inoculation rate was detected with the pyriproxyfen-pyrethroid LLIN. Both dual active-ingredient LLINs provided a similar safety profile compared with standard pyrethroid-only LLINs, with short-lasting skin irritation and facial burning (commonly associated with the pyrethroid alpha-Cybermethrin) most frequently reported in participants using pyrethroid-only LLINs and pyriproxyfen-pyrethroid LLINs. A similar observation has been reported in another randomised controlled trial evaluating the same LLINs, and this is likely to be associated with the high concentration of alpha-Cybermethrin in those nets compared with the chlorfenapy-pyrethroid LLINs.\n", - "\n", - "To our knowledge, this is the second cluster-randomised trial to provide strong evidence of increased efficacy of chlorfenapy-pyrethroid LLINs relative to pyrethroid-only LLINs for malaria control in areas with pyrethroid-resistant vectors. Chlorfenapyr insecticide on nets has already shown improved control of pyrethroid-resistant _An gambiae_ in laboratory and semi-field experimental huts against resistant malaria vectors.3- The previous trial in Tanzania reported a malaria case incidence reduction of 44%, a 55% decrease in odds of malaria prevalence, and 85% reduction in entomological inoculation rate compared with the pyrethroid-only group, consistent with these results, despite the differing malaria vector populations and intensity of pyrethroid resistance in the mosquitoes.4 In both trials, per-protocol analyses suggested that individuals living in the chlorfenapy-pyrethroid clusters benefited regardless of whether they were using a study net, suggesting a community effect of the net, which was likely to be obtained by the overall reduction of mosquito density, which remained considerably lower than in the pyrethroid-only group in both years of this trial after net distribution. Community effect is also indicated by the reduction in both indoor and outdoor entomological indices in the chlorfenapy-pyrethroid group in the present study.\n", - "\n", - "Similar to the trial in Tanzania,4 the pyriproxyfen-pyrethroid LLINs we tested did not provide additional protection against malaria infection or disease compared with pyrethroid-only LLINs. However, there was evidence of an effect on indoor transmission, with the strongest effect seen in the first year after net distribution. Tino and colleagues5 have previously reported a 12% reduction in malaria incidence and 49% reduction in entomological \n", - "inoculation rate with a pyriproxyfen-pyrethroid LLIN compared with pyrethroid-only LLINs over 18 months in a stepped-wedge randomised trial in Burkina Faso. The different study design, length of follow-up, and brand of net might explain the differences seen between the two studies. In Benin, laboratory and semi-field experimental hut studies have shown the superior efficacy of pyriproxyfen-pyrethroid nets on entomological indicators compared with standard pyrethroid-only LLINs,2,3 and are consistent with the decrease in indoor vector density observed in our trial. However, the decrease in indoor vector density did not translate into significant disease reduction, suggesting that a larger effect on malaria transmission (entomological inoculation rate) is crucial to provide community protection. Although lower net usage in the pyriproxyfen-pyrethroid LLIN group could have partially contributed to the lack of effect, we are also assessing textile durability, sterilisation effects, and chemical content of pyriproxyfen-pyrethroid LLINs to fully understand these results.\n", - "\n", - "With several trials now showing the superior efficacy of next-generation LLINs over pyrethroid-only nets, the importance of developing new active ingredients to use on nets in the future is brought to the fore. The distribution of next-generation LLINs across sub-Saharan Africa has already begun, with the development of the brands of chlorfenapry-pyrethroid nets underway,3 as well as the development of chlorfenapry product formulations for indoor residual spraying.3 Although chlorfenapry-pyrethroid nets offer a superior alternative to pyrethroid-only nets in areas of pyrethroid resistance, to preserve their effectiveness optimal resistance-management strategies should be used. There was no evidence of the development of resistance to chlorfenapry during the 2 years of this trial; however, the wide-scale deployment of one type of insecticide risks the rapid development of resistance, which could result in a similar situation to the current widespread resistance to pyrethroids. The nets should be deployed ideally alongside other insecticides as part of a strategy aimed to reduce selection pressure for development of resistance in mosquito vectors. Given the significant effect of the pyriproxyfen-pyrethroid LLINs on malaria transmission during the first year after net distribution, additional studies are necessary to evaluate the potential value of active ingredients such as pyriproxyfen, which are not primarily intended to kill resistant adult mosquitoes but rather to sterilise them. There might still be a role for these hormone growth-regulator insecticides in combination with other active ingredients for net treatment in long-term resistance management.\n", - "\n", - "If WHO policy recommendations are made on the basis of this trial's results, future chlorfenapry-pyrethroid nets might not have to undergo the rigorous trial testing that Interceptor G2 has. Caution should, however, be taken to assess the comparative efficacy, quality, and durability of the second-in-class chlorfenapry-pyrethroid nets as they might use different concentrations of chlorfenapry, different pyrethroids, or different net materials. Considering the time and resources required to generate evidence of epidemiological effect using randomised trials, non-inferiority experimental hut trials, recently proposed by WHO,3 might be a useful alternative for second-in-class chlorfenapry-pyrethroid LLINs. Further work to investigate the capacity of such entomological studies to predict the performance of the trial nets against clinical malaria is ongoing.3\n", - "\n", - "Footnote 3: endnote: [https://www.thelanct.com/Vol.401](https://www.thelanct.com/Vol.401). February 11, 2023\n", - "\n", - "Our study has some limitations. First, net ownership and use were high throughout the study; however, this did not always equate to study net use, which was approximately 60% at 2 years after net distribution, with overall usage of greater than 80%. Similar findings have been observed in other bednet trials, and probably indicate populations choosing to discard damaged nets when other nets are readily available. Second, the three types of nets were not completely identical and differences in textile material and size might have resulted in differential net usage between the groups. As our net use indicator was primarily self-reporting, it is also possible that net usage was overestimated. Third, our primary measure of incidence was based on active detection, involving visits every 2 weeks or every month. The passive data collected alongside the trial suggests that this frequency of visit resulted in some cases being missed, meaning the absolute effect of the nets might be greater than reported here. However, the relative effect of the nets remained similar when the active and passive data were combined. Finally, cost-effectiveness was not assessed; however, the trial in Tanzania' showed that dual active-ingredient LLINs can be highly cost-effective and even cost-saving compared with pyrethroid-only LLINs when providing sufficient protection.\n", - "\n", - "New classes of vector control interventions currently require clinical trial evaluation in two different geographical settings, after 24 months of community use.4 Currently, the only class of next-generation LLIN to receive a WHO recommendation are the PBO synergism nets. However, previous publications have shown concerns about the durability of these nets.5 This trial provides the second key evidence for the effectiveness of chlorfenapry-pyrethroid nets in an area with pyrethroid-resistant vectors and will therefore support a WHO policy recommendation. However, the effect of the nets was reduced in the second year of the trial, and there is no evidence for the efficacy of the nets in their third year of use. Many studies report that the durability of nets is much less than the 3 years required to be designated as long lasting.5 The next-generation LLINs might face the same problems of fabric integrity and durability of insecticidal content unless standards of manufacture are improved. Different channels of distribution (eg, school-based, antenatal care visits, or expanded programme immunisation visits) could play a key role in maintaining high levels of net use in communities.5\n", - "Although generating this evidence to support a WHO recommendation for another class of bednet is a key turning point in malaria control, without new insecticides and new ways to deploy them, we risk repeating the mistakes of the past. Now is the time for more innovation and less complacency.\n", - "\n", - "header: Study design and participants: Randomisation and masking\n", - "\n", - "We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (1:1:1), to receive nets containing either pyriproxyfen and alpha-cypermethrin (pyrethroid), chlorfenapyr and alpha-cypermethrin, or alpha-cypermethrin only (reference). Restricted randomisation was used to ensure balanced cluster allocation between study groups with respect to population size, malaria infection prevalence (measured in the baseline survey), district (n=3), and socioeconomic status.\n", - "\n", - "To mask the net types from the participants and the field workers, the nets were designed to look as similar as possible. Each net was rectangular, was requested to be the same size (1-8 m length, 1-9 m width, and 1-8 m height), and blue. To differentiate the nets in the field, a colour-coded loop was attached to the net. All data analyses were performed masked.\n", - "\n", - "header: Methods\n", - "\n", - "We conducted a cluster-randomised, superiority trial in Zou Department, Benin. Clusters were villages or groups of villages with a minimum of 100 houses. We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (I:1:1): to receive nets containing either pyriproxyfen and alpha-Cypermethrin (pyrethroid), chlorfenapyr and alpha-Cypermethrin only (reference). Households received one LLIN for every two people. The field team, laboratory staff, analyses team, and community members were masked to the group allocation. The primary outcome was malaria case incidence measured over 2 years after net distribution in a cohort of children aged 6 months-10 years, in the intention-to-treat population. This study is ongoing and is registered with ClinicalTrials.gov, NCT03931473.\n", - "\n", - "Findings Between May 23 and June 24, 2019, 53 854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54030 households in an updated census. A cross-sectional survey showed that study LLIN usage was highest 9 months after distribution (5532 [76 * 986] of 7206 participants), but decreased by 24 months (4032 [60 * 696] of 6654). Mean malaria incidence over 2 years after LLIN distribution was 1-03 cases per child-year (95% CI 0 * 96-1 * 09) in the pyrethroid-only LLIN reference group. 0 * 84 cases per child-year (0.78-0 * 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 * 86, 95% CI 0 * 65-1* 14; p=0 * 28), and 0 * 56 cases per child-year (0 * 51-0 * 61) in the chlorfenapyr-pyrethroid LLIN group (HR 0 * 54, 95% CI 0 * 42-0 * 70; p<0 * 0001).\n", - "\n", - "Interpretation Over 2 years, chlorfenapyr-pyrethroid LLINs provided greater protection from malaria than pyrethroid-only LLINs in an area with pyrethroid-resistant mosquitoes. Pyriproxyfen-pyrethroid LLINs conferred protection similar to pyrethroid-only LLINs. These findings provide crucial second-trial evidence to enable WHO to make policy recommendations on these new LLIN classes. This study confirms the importance of chlorfenapyr as an LLIN treatment to control malaria in areas with pyrethroid-resistant vectors. However, an arsenal of new active ingredients is required for successful long-term resistance management, and additional innovations, including pyriproxyfen, need to be further investigated for effective vector control strategies.\n", - "\n", - "header: Contributions\n", - "\n", - "NP, JC, and CN conceived and designed the study, with contributions from MR, IK, LAM, and MCA, JC and MA led the development of the analysis plan, with input from BA, Aso, and NP, MA, CA, JC, NP, FT, and MCA coordinated the trial implementation with local and national authorities, RA, and AO-H. MA, BF, HA, Aso, and LA led the data collection in the field with and Aso, and AP, each of them, MCA, JC, and NP and NP. Also, BC, BA, and KAB led the molecular laboratory work.\n", - "\n", - "header: Methods\n", - "\n", - "We conducted a three-group, cluster-randomised, superiority trial in three districts (Cove, Zagnanado, and Ouinhi) in Zou Department, central Benin. Malaria is highly endemic in the region, with a peak during the wet season (May-October). The main vector control strategy in the study area is use of pyrethroid-only LLINs distributed en masse once every 3 years, and through routine service delivery by antenatal clinics and vaccination programmes. The primary vectors in the setting are _Anopheles coluzzi_ and _Anopheles gambiae_. There is a high intensity of pyrethroid resistance in the main local vector populations.11\n", - "\n", - "A demographic census of all 123 villages in the study area was done in June, 2019. Clusters consisted of villages, or several villages. To reduce contamination between study groups, clusters consisted of a core (minimum 100 households) surrounded by a buffer, ensuring that core areas of neighbouring clusters were separated by at least 1000 m. Households in the buffer and core received the intervention, but measurement of outcomes only took place in core areas. A detailed description of the study protocol is published elsewhere.\"\n", - "\n", - "Ethics approval was obtained from the Benin Ministry of Health ethics committee (6/30/MS/DC/SGM/DRFMT/CNERS/SA), the London School of Hygiene & Tropical Medicine ethics committee (16237), and the WHO Research Ethics Review Committee (ERC.0003153). The trial was independently monitored by a data safety monitoring board and a trial steering committee.\n", - "\n", - "Epidemiological effect was estimated through measuring malaria case incidence in the 2 years after net distribution by active case detection in a cohort of children. A cohort of approximately 30 children aged 6 months-9 years randomly selected (by simple random sampling using a random number generator) from each cluster (1800 in total) was enrolled in July, 2020. Children were eligible for inclusion if they were permanent residents in the cluster, had no serious illnesses, and written informed consent was obtained from their guardians.\n", - "\n", - "Malaria infection prevalence (in all ages) was measured by cross-sectional surveys at 6 months and 18 months after net distribution. 72 individuals residing in the core of each cluster were randomly selected (using a random number generator) from the census for each cross-sectional survey. Each prevalence surveyed collected data on malaria infection, measured using malaria rapid diagnostic tests (CareStart malaria HRP2/PLDH [pf/pan] combo, DiaSy, UK), net ownership and use, sex, and household assets (as a proxy for socioeconomic status).\n", - "\n", - "Entomological effects were measured using human landing catches in four randomly selected houses every 3 months in each cluster. Insecticide resistance intensity was measured in two clusters per group (six clusters total) at baseline and in each follow-up year.\n", - "\n", - "Written informed consent was obtained from all participants, or from guardians for participants younger than 18 years. Assent was sought for children aged between 10 and 18 years. Written consent was also obtained from volunteer mosquito collectors who were all aged 18 years or older and who were vaccinated against yellow fever. All participation was voluntary, and participants could withdraw at any time. Study investigators sought consent in French or local languages.\n", - "\n", - "header: Table 1: Baseline characteristics\n", - "footer: Data are n or %; n/N unless otherwise stated. EIR=entomological inoculation rate. LLIN=long-lasting insecticidal net. *Proportion of households in the poorest tercile based on the wealth index of the entire study area. †Anaemia defined as haemoglobin concentration of <10 g/dL. ‡Malaria vectors included Anopheles gambiae, Anophelesfunestus, and Anopheles nili\n", - "columns: ['Unnamed: 0_level_0 - Clusters', 'Pyriproxyfen-pyrethroid LLIN group - Clusters', 'Chlorfenapyr-pyrethroid LLIN group - Clusters', 'Pyrethroid-only LLIN group - Clusters']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of clusters\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"20\",\"Pyrethroid-only LLIN group - Clusters\":\"20\"},\"1\":{\"Unnamed: 0_level_0 - Clusters\":\"Total population in core and buffer areas\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"74822\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"70989\",\"Pyrethroid-only LLIN group - Clusters\":\"69239\"},\"2\":{\"Unnamed: 0_level_0 - Clusters\":\"Mean population in core area of clusters (range)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"1096.1 (225-4524)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"1120.5 (243-5040)\",\"Pyrethroid-only LLIN group - Clusters\":\"1058.1 (252-5217)\"},\"3\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of people per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"4.0 (2.3)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"3.9 (2.3)\",\"Pyrethroid-only LLIN group - Clusters\":\"4.1 (2.4)\"},\"4\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of sleeping spaces per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"2.2 (1.2)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"2.1 (1.1)\",\"Pyrethroid-only LLIN group - Clusters\":\"2.2 (1.2)\"},\"5\":{\"Unnamed: 0_level_0 - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyrethroid-only LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\"},\"6\":{\"Unnamed: 0_level_0 - Clusters\":\"Low socioeconomic status*\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"35.8%; 529\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"36.2%; 533\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"29.0%; 431\\/1487\"},\"7\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN ownership (at least one LLIN in the household)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"96.4%; 1426\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"97.1%; 1431\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"95.1%; 1415\\/1488\"},\"8\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN usage in all age groups the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"95.8%; 1312\\/1370\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"94.9%; 1258\\/1326\",\"Pyrethroid-only LLIN group - Clusters\":\"96.5%; 1343\\/1392\"},\"9\":{\"Unnamed: 0_level_0 - Clusters\":\"Malaria infection prevalence in all age groups\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"43.1%; 636\\/1475\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"40.7%; 598\\/1468\",\"Pyrethroid-only LLIN group - Clusters\":\"46.5%; 690\\/1485\"},\"10\":{\"Unnamed: 0_level_0 - Clusters\":\"Anaemia prevalence in children aged 6 months-4 years\\u2020\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"53.3%; 136\\/255\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"53.3%; 131\\/246\",\"Pyrethroid-only LLIN group - Clusters\":\"50.2%; 122\\/243\"},\"11\":{\"Unnamed: 0_level_0 - Clusters\":\"Entomological characteristics\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Pyrethroid-only LLIN group - Clusters\":\"Entomological characteristics\"},\"12\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night indoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"32.9 (28.9)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"21.6 (21.0)\",\"Pyrethroid-only LLIN group - Clusters\":\"29.2 (25.3)\"},\"13\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night outdoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20.3 (17.6)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"16.4 (17.4)\",\"Pyrethroid-only LLIN group - Clusters\":\"20.6 (20.2)\"},\"14\":{\"Unnamed: 0_level_0 - Clusters\":\"Indoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.62 (0.93)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.48 (0.65)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.96 (1.18)\"},\"15\":{\"Unnamed: 0_level_0 - Clusters\":\"Outdoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.27 (0.45)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.17 (0.44)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.33 (0.45)\"},\"16\":{\"Unnamed: 0_level_0 - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyrethroid-only LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\"},\"17\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of children younger than 5 years\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"52.3%; 316\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"50.6%; 304\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"53.6%; 322\\/601\"},\"18\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of female children\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"47.2%; 285\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"48.4%; 291\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"48.8%; 293\\/601\"},\"19\":{\"Unnamed: 0_level_0 - Clusters\":\"Net usage the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"99.0%; 598\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"98.7%; 593\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"99.2%; 596\\/601\"}}\n", - "\n", - "header: Methods\n", - "\n", - "Data collected for the study, including deidentified participant data and data dictionaries, might be made available at the end of the third year of trial follow-up upon reasonable request to the corresponding author.\n", - "\n", - "header: Funding UNITAID, The Global Fund.\n", - "\n", - "Pyrethroid-treated long-lasting insecticidal nets (LLINs) are the main malaria prevention intervention in sub-Saharan Africa and have been the major contributor to the estimated 1 * 5 billion malaria cases and 7 * 6 million malaria deaths averted in the past two decades. However, since 2015, the decline in malaria cases has stalled, and between 2019 and 2020, a rebound in malaria transmission was reported in some areas of sub-Saharan Africa.1 This rebound is likely to be a consequence of the continued spread of resistance to pyrethroid insecticides in malaria-transmitting mosquitoes, coinciding with a plateau in malaria control investment, leading to suboptimal coverage of interventions. Urgent actions are needed to prevent malaria resurgences, which were previously observed in sub-Saharan Africa in the 1980s after malaria control measures were scaled down.2\n", - "In the past 10 years, new insecticide-treated nets containing non-pyrethroid insecticides and insecticide synergists, in combination with pyrethroids, have been shown to be safe and efficacious against malaria mosquito vectors.14 The first net combined a pyrethroid insecticide and the synergistic piperonyl butoxide (PBO) and, following a randomised controlled trial,1 received a WHO policy recommendation in 2017. Other next-generation LLINs have shown encouraging results against resistant vectors in laboratory and small-scale entomological studies.47 One of these nets is a dual active-ingredient LLIN combining a pyrethroid and a pyrrole (chlorfenapyr). Both insecticides lead to mosquito mortality, with chlorfenapyr disrupting the production of cellular energy rather than targeting the nervous system, as pyrethroids do. Another dual active-ingredient LLIN combines a pyrethroid with an insect growth regulator (pyriprosyfen), which leads to sterility in exposed adult mosquitoes.\n", - "\n", - "The first randomised trial of these two products was conducted in Tanzania and showed that the chlorfenapyr-pyrethroid LLINs nearly halved malaria infection over 2 years in villages that received chlorfenapyr-pyrethroid LLINs compared with villages that received pyrethroid-only LLINs. PBO-pyrethroid LLINs were consistently found to be more effective than pyrethroid-only LLINs; however, the duration of the superior effect varied from 12 months to 21 months according to the different trials.\n", - "\n", - "header: Table 2: Malaria case incidence in children aged 6 months–10 years per year of follow-up and overall (including active visits only)\n", - "footer: Each intervention was compared with the pyrethroid-only LLIN group for the same timepoint. LLIN=long-lasting insecticidal net. *A p value of <0·025 was considered significant after Bonferroni correction\n", - "columns: ['Unnamed: 0_level_0 - Overall', 'Number of clinical malaria episodes - Overall', 'Child- years of follow-up - Overall', 'Incidence, cases per child-year (95% Cl) - Overall', 'Hazard ratio - Overall', '95%Cl - Overall', 'p value* - Overall']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"897\",\"Child- years of follow-up - Overall\":\"874.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.03 (0.96-1.09)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"1\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"744\",\"Child- years of follow-up - Overall\":\"883.8\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.84 (0.78-0.90)\",\"Hazard ratio - Overall\":\"0.86\",\"95%Cl - Overall\":\"0.65-1.14\",\"p value* - Overall\":\"0.28\"},\"2\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"494\",\"Child- years of follow-up - Overall\":\"887.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.56 (0.51-0.61)\",\"Hazard ratio - Overall\":\"0.54\",\"95%Cl - Overall\":\"0.42-0.70\",\"p value* - Overall\":\"<0.0001\"},\"3\":{\"Unnamed: 0_level_0 - Overall\":\"Year 1\",\"Number of clinical malaria episodes - Overall\":\"Year 1\",\"Child- years of follow-up - Overall\":\"Year 1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 1\",\"Hazard ratio - Overall\":\"Year 1\",\"95%Cl - Overall\":\"Year 1\",\"p value* - Overall\":\"Year 1\"},\"4\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"267\",\"Child- years of follow-up - Overall\":\"344.4\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.77 (0.69-0.87)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"5\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"211\",\"Child- years of follow-up - Overall\":\"342.7\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.62 (0.54-0.70)\",\"Hazard ratio - Overall\":\"0.83\",\"95%Cl - Overall\":\"0.51-1.35\",\"p value* - Overall\":\"0.46\"},\"6\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"124\",\"Child- years of follow-up - Overall\":\"349.2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.36 (0.30-0.42)\",\"Hazard ratio - Overall\":\"0.46\",\"95%Cl - Overall\":\"0.30-0.72\",\"p value* - Overall\":\"0.0005\"},\"7\":{\"Unnamed: 0_level_0 - Overall\":\"Year 2\",\"Number of clinical malaria episodes - Overall\":\"Year 2\",\"Child- years of follow-up - Overall\":\"Year 2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 2\",\"Hazard ratio - Overall\":\"Year 2\",\"95%Cl - Overall\":\"Year 2\",\"p value* - Overall\":\"Year 2\"},\"8\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"630\",\"Child- years of follow-up - Overall\":\"529.9\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.19 (1.10-1.29)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"9\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"533\",\"Child- years of follow-up - Overall\":\"541.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.98 (0.90-1.07)\",\"Hazard ratio - Overall\":\"0.88\",\"95%Cl - Overall\":\"0.68-1.13\",\"p value* - Overall\":\"0.31\"},\"10\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"370\",\"Child- years of follow-up - Overall\":\"538.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.69 (0.62-0.76)\",\"Hazard ratio - Overall\":\"0.57\",\"95%Cl - Overall\":\"0.45-0.73\",\"p value* - Overall\":\"<0.0001\"}}\n", - "\n", - "header: Table 3: Malaria infection and anaemia prevalence in the study population at 6 months and 18 months after net distribution (intention-to-treat analysis)\n", - "footer: Anaemia was defined as a haemogloblin concentration of <10 g/dL. LLIN=long-lasting insecticidal net. OR=odds ratio. *A p value of <0·025 was considered significant after Bonferroni correction\n", - "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution', 'Malaria infection - n/N - 6 months after net distribution', 'Malaria infection - Prevalence - 6 months after net distribution', 'Malaria infection - OR - 6 months after net distribution', 'Malaria infection - 95% Cl - 6 months after net distribution', 'Malaria infection - p value* - 6 months after net distribution', 'Anaemia in children younger than 5 years - n/N - 6 months after net distribution', 'Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution', 'Anaemia in children younger than 5 years - OR - 6 months after net distribution', 'Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution', 'Anaemia in children younger than 5 years - p value* - 6 months after net distribution']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"412\\/1471\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"28.0%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"99\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"41.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"394\\/1463\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"26.9 %\",\"Malaria infection - OR - 6 months after net distribution\":\"0.92\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.63-1.35\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.67\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"117\\/250\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.24\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.71-2.18\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.45\"},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"231\\/1475\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"15.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.47\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.32-0.69\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0002\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"82\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"34.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.71\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.26\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0-24\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - p value* - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"18 months after net distribution\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"576\\/1489\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/252\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"564\\/1478\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.2%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.97\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.69-1.37.\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.87\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"108\\/245\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"44.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.84\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.79\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.65\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"414\\/1483\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"27.9%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.60\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.43-0.85\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0041\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/246\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"48.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.08\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.51-2.28\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.84\"}}\n", - "\n", - "header: Introduction: Added value of this study\n", - "\n", - "To our knowledge, this is the second study aiming to compare the efficacy of the next generation of LLINs combining _p_iprosyfen or chlorfenapyr and pyrethroid versus standard pyrethroid-only LLINs, and the first of its kind to be conducted in west Africa. This trial confirmed the superior efficacy of chlorfenapyr-pyrethroid LLINs, in terms of malaria case incidence, prevalence, and transmission in children, over 2 years of use in the community, in an area of moderate malaria transmission and with high insecticide resistance intensity in malaria vectors, in Benin. However, pyrioxyfen-pyrethroid LLINs did not offer additional protection against malaria outcomes compared with pyrethroid-only LLINs.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Data sharing: Acknowledgments\n", - "\n", - "This trial was funded by a grant to the London School of Hygiene & Tropical Medicine from UNITAD and The Global Fund via the Innovative Vector Control Consortium. This trial is part of a larger project. The New Nets project: We thank the communities from the three study districts (Cow, Zagnanado, Ouinhi), particularly the participants, children and their parents, community health workers, staff in health clinics, and the regional study team. We thank colleagues and staff at the Centre de Recherche Entomologique de Cotonou and those at the National Malaria Control Program. We also thank the trial system committee, the data safety monitoring board, and Charles Dickinson (School of Epidemiology and Public Health, University of Ottawa, Ottawa, ON, Canada) for supporting the mapping and cluster delineation.\n", - "\n", - "header: Methods\n", - "\n", - "Data collected for the study, including deidentified participant data and data dictionaries, might be made available at the end of the third year of trial follow-up upon reasonable request to the corresponding author.\n", - "\n", - "header: Outcomes\n", - "\n", - "The primary outcome was malaria case incidence (infrared frontal temperature >37.5degC or reported fever in the previous 48 h, and positive malaria rapid diagnostic test) in children enrolled in the active case detection cohort in the 2 years after net distribution. Visits of children in the cohort at health facilities were monitored and the results of malaria rapid diagnostic tests and any treatment given were recorded. However, it was difficult to assess with certainty if malaria rapid diagnostic tests were used only if the child was symptomatic (as our protocol specified); therefore, the passive data was not included in the primary analyses.\n", - "\n", - "Secondary clinical outcomes were malaria infection prevalence in all age groups and anaemia (defined as haemoglobin concentration <10 g/dL) prevalence in children aged 5 years or younger at 6 months and 18 months after net distribution.\n", - "\n", - "Type and duration of adverse events related to usage of nets were recorded using a prespecified questionnaire at each cohort visit and during net usage and cross-sectional surveys. Data on hospitalisation and death in children in the cohort were collected by interviewing the child's guardian and reviewing the hospital record, following receipt of consent.\n", - "\n", - "The primary entomological outcome was entomological inoculation rate, measured as the mean number of _Plasmodium_ spp infective malaria vectors collected per person per night measured indoors and outdoors. Secondary entomological outcomes were vector density (number of mosquitoes caught per person per night), sporozoite rate, and species composition. Centers for Disease Control and Prevention bottle bioassays were performed by exposing adult female _An gambiae_, collected as larvae, to alpha-cypermethrin for 30 min (1, 2, 5, and 10 times the diagnostic dose), and to chlorfenrapy (100 mg/bottle) and pyriproxyfen (100 mg/bottle) for 60 min each year.(r) Mortality was recorded at 30 min for all four doses of alpha-cypermethrin (insectidic resistance intensity measurement), and at 24, 48, and 72 h after exposure for chlorfenapyr. The reduction in fecundity rate induced by pyriproxyfen relative to unexposed mosquitoes was assessed by ovarian dissection, 3 days after pyriproxyfen exposure. Other outcomes included in the protocol (parity, resting behaviour, survivorship, and other resistance measures) are still to be analysed and will be published elsewhere.\n", - "\n", - "header: Statistical analysis\n", - "\n", - "The sample size calculations for epidemiological data collection were calculated using the method of Hayes and Moulton.(r) The study was designed to detect a 30% difference in malaria case incidence, assuming a control group incidence of 1 malaria case per child-year and a coefficient of variation of 0-3 between clusters. This design required 20 clusters per group and 25 (20+5 allowing for loss to follow-up) children per cluster followed up for 2 years to give 80% power. Due to the delay in enrolment, which resulted in a shorter follow-up time, the number of children per cluster was increased to 30 (1800 children total). This sample size calculation includes adjustment for multiple testing (allowing for the three groups) using a Bonferroni-corrected two-sided a of 2.5%.\n", - "\n", - "For malaria infection prevalence, it was assumed that the prevalence in the reference group was 40%, with a coefficient of variation between clusters of 0-3. With 72 individuals per cluster, the study had 80% power to detect a 30% lower prevalence in the intervention groups compared with the reference group, using a Bonferroni-corrected a for multiple comparisons.\n", - "\n", - "The primary intention-to-treat analysis was a comparison of incidence of clinical malaria episodes between each dual active-ingredient LLIN group and the\n", - "\n", - "header: Abstract\n", - "\n", - "Efficacy of pyriproxyfen-pyrethroid long-lasting insecticidalnets (LLINs) and chlorfenapyr-pyrethroid LLINs compared with pyrethroid-only LLINs for malaria control in Benin: a cluster-randomised, superiority trial\n", - "\n", - "Manfred Accomphesi\n", - "\n", - "\n", - "Background New classes of long-lasting insecticidal nets (LLINs) combining mixtures of insecticides with different modes of action could put malaria control back on track after rebounds in transmission across sub-Saharan Africa. We evaluated the relative efficacy of pyriproxyfen-pyrethroid LLINs and chlorfenapyr-pyrethroid LLINs compared with standard LLINs against malaria transmission in an area of high pyrethroid resistance in Benin.\n", - "\n", - "header: Implications of all the available evidence\n", - "\n", - "Given the positive findings, both in Benin and Tanzania, for chlorfenapyr-pyrethroid LLINs, they are likely to become the first WHO-recommended LLINs impregnated with an insecticide class other than pyrethroids. The absence of superior efficacy of pyrioxyfen-pyrethroid LLINs compared with standard pyrethroid-only LLINs is consistent with the results of the previous Tanzania study and calls into question the role of the current pyrioxyfen-pyrethroid LLINs in future malaria vector strategies.\n", - "\n", - "header: Study design and participants: Randomisation and masking\n", - "\n", - "We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (1:1:1), to receive nets containing either pyriproxyfen and alpha-cypermethrin (pyrethroid), chlorfenapyr and alpha-cypermethrin, or alpha-cypermethrin only (reference). Restricted randomisation was used to ensure balanced cluster allocation between study groups with respect to population size, malaria infection prevalence (measured in the baseline survey), district (n=3), and socioeconomic status.\n", - "\n", - "To mask the net types from the participants and the field workers, the nets were designed to look as similar as possible. Each net was rectangular, was requested to be the same size (1-8 m length, 1-9 m width, and 1-8 m height), and blue. To differentiate the nets in the field, a colour-coded loop was attached to the net. All data analyses were performed masked.\n", - "\n", - "header: Role of the funding source\n", - "\n", - "The funders of the study had no role in study design, data collection, data analysis, data interpretation, writing of the report, or in the decision to submit for publication.\n", - "\n", - "header: Results\n", - "\n", - "Between May 23 and June 24, 2019, 53854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. The households were delineated into 61 clusters, with one subsequently excluded due to extensive seasonal flooding (figure). Baseline cross-sectional epidemiological and entomological surveys were conducted between October and November, 2019 (table 1). The malaria infection prevalence was 43 5% (1924 of 4428 participants, cluster range 15 1-72 796) and population self-reported LLIN usage was 95 7% (3913 of 4088 participants). Cluster demographics and malaria prevalence were similar between groups (table 1). Entomological inoculation rate was 0 68 _Plasmodium_ spp infective bites per person per night (cluster range 0 00-3 80) indoors and 0 26 per person per night (0 00-1 88) outdoors.\n", - "\n", - "Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54 300 households in an updated census, with 97 1% of households receiving at least one net per household. Active ingredients in the new nets were found to be within or higher than the acceptable target limits depending on LLIN brand (appendix p 4). Study net usage was highest (5532 [76 8%] of 7206 participants) at 9 months after distribution, following a second hang-up campaign, but had decreased by 24 months (4032 [60 6%] of 6654). Study net coverage and usage indicators were similar between study groups up to 18 months after net distribution. At 24 months, pyriproxyfen-pyrethroid LLIN usage and ownership was the lowest (appendix pp 5-6). Use of any type of LLIN (study LLINs and others) remained greater than 80% up to 24 months after distribution (appendix p 7).\n", - "\n", - "In the 2283 households that were randomly selected for post-intervention cohort follow-up, 3129 children were eligible, 1829 of whom were randomly selected, and consent was obtained for 1806 (figure). Among the 2849 and 2771 households randomly selected at 6 months and 18 months after LLIN distribution for the malaria prevalence cross-sectional surveys, 4781 (85 1%) of 5620 households consent, with a similar proportion in the two surveys. The remaining households were either not available during the visit (775 [13 8%] of) or declined to participate (64 [1 1%]; appendix p 8).\n", - "\n", - "Children aged 6 months-9 years enrolled for active case detection were monitored for 21 months, for a total follow-up time of 2645 4- child-years at risk. Loss to follow-up was similar between groups (figure). At enrolment, children were balanced on age, sex, and net usage. During the 21-month follow-up period, we detected 2135 malaria cases through active case detection (table 2). The mean malaria case incidence over 21 months of follow-up was 1 03 cases per child-year (95% CI 0 96-1 09) in the pyrethroid-only LLIN reference group, 0 84 cases per child-year (0 78-70 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 86, 95% CI 0 65-1 46; p = 0 - 28), and 0 56 cases per child-year (0 51-0 64) in the chlorfenapry-pyrethroid LLIN group (HR 0 54, 95% CI 0 - 42-0 70; p < 0 0001; table 2). The strongest effect was observed in the first year of follow-up in the chlorfenapry-pyrethroid group (HR 0 46, 95% CI 0 30-0 72; p = 0 - 0005; table 2). When combining active and passive visits, the number of cases detected nearly doubled; however, the effect size in comparison to the reference group was similar for both intervention nets (appendix p 9).\n", - "\n", - "Malaria infection prevalence was 23 5% (1037 of 4409 participants) at 6 months and 34 9% (1554 of 4450) at 18 months after net distribution (table 3). There was strong evidence for a reduction of malaria infection prevalence in the chlorfenapry-pyrethroid LLIN group at 6 months (15 7%; odds ratio [OR] 0 47, 95% CI 0 32-0 69; p = 0 0002) and at 18 months (27 9%; OR 0 60 - 60, 0 - 43-0 85; p = 0 004) compared with the reference group (28 - 0% at 6 months and 38 7% at 18 months; table 3). In the pyriproxyfen-pyrethroid group, there was no evidence for a reduction in malaria prevalence at 6 months (26 9%; OR 0 - 92, 95% CI 0 63-1 35; p = 0 - 67) or 18 months (38 2%; OR 0 97 0, 0 69-1 37; p = 0 87) compared with the reference group. Results were similar for the per-protocol analysis (appendix p 1). There was no evidence of a reduction in moderate to severe anaemia prevalence in either intervention group (table 3). The post-hoc analysis adjusting for covariates used in the randomisation did not change the interpretation of the results (appendix pp 12-13).\n", - "\n", - "\n", - "Adverse events related to study nets were reported in 528 (45-496) of 1162 participants surveyed at 1 month after net distribution. The highest proportion of adverse events was reported in the pyrethroid-only LLIN group (247 [63-8%] of 387 participants), followed by the pyriproyfen-pyrethroid LLIN group (212 [52-5%] of 404) and then the chlorfenapy-pyrethroid LLIN group (69 [18-6%] of 371). Facial burning (392 [33-7%] of 1162 participants), and skin irritation or itchiness (244 [20-9%]) were the most common adverse events in all groups. Adverse events were rare in all three groups at all later timepoints (appendix P 14-15). We recorded 44 serious adverse events (including three deaths) in the cohort children, with 32 (72-7%) documented as severe malaria (11 cases in the pyriproyfen-pyrethroid LLIN group, ten in the chlorfenapy-pyrethroid LLIN group, and 11 in the pyrethroid-only LLIN group). No serious adverse events related to net use were reported.\n", - "\n", - "A total of 259265 mosquitoes were collected over 3840 collection nights indoors and outdoors, of which 20-9% (29814 from indoors and 24436 from outdoors) were malaria vectors, with _An gambiae_ sensu that the most predominant. Overall, indoor entomological inoculation rate was lower in both intervention groups than in the reference group, with a mean entomological inoculation rate of 0-90 infectious bites per night per person in the chlorfenapy-pyrethroid LLIN group (rate ratio [RR] 0-34, 95% CI 0-18-0-62; p=0-0005), 0-12 in the pyriproyfen-pyrethroid LLIN group (RR 0-42, 0-2-3-0-74; p=0-0028), and 0-28 in the pyrethroid-only LLIN group (table 4). Mean indoor vector density appeared to be lower in the chlorfenapy-pyrethroid LLIN group (10-18 bites per person per night, density ratio 0-44, 95% CI 0-2-30-84; p=0-014), and in the pyriproyfen-pyrethroid LLIN group (13-6 bites per person per night, density ratio 0-58, 0-30-1-12; p=0-011) than in the reference group (23-0 bites per person per night, but the latter difference was not statistically significant (table 4). Adjusting for baseline vector density in the models gave similar results (appendix P 16). There was no significant difference in sporozoite rate in any of the intervention groups compared with the reference group (table 4).\n", - "\n", - "Reduction in outdoor entomological inoculation rate compared with the reference group was observed only in the chlorfenapy-pyrethroid LLIN group (RR 0-30, 95% CI 0-13-0-67; p=0-0035; appendix P 17). There was very weak evidence for a reduction in outdoor entomological inoculation rate in the pyriproyfen-pyrethroid LLIN group compared with the pyrethroid-only group (RR 0-58, 0-30-1-13; p=0-11). Similar effects were observed for outdoor vector density for both intervention nets (appendix P 17).\n", - "\n", - "Post-intervention pyrethrold resistance intensity was high across the study groups in _An gambiae_ sensu lato, with mean mortality of 85% or less after exposure to 10 times the diagnostic concentrations of alpha-cypentrohin in year 2 (appendix P 18). No resistance to chlorfenapy was observed during either year after net distribution (appendix P 18). Exposure of _An gambiae_ sensu lato to pyriproyfen led to a high reduction in fecundity rate relative to unexposed control mosquitoes over the 2 years after net distribution (73-2%, 95% CI 62-2-82-4 in year 1, and 76-6%, 66-6-84-9 in year 2).\n", - "\n", - "header: Discussion\n", - "\n", - "This trial assessed the efficacy of two dual active-ingredient LLINs in an area of Benin with malaria vectors that are highly resistant to pyrethroids and found that chlorfenapy-pyrethroid LLINs provided significantly better protection against malaria for up to 2 years after net distribution compared with pyrethroid-only LLINs. Children aged 6 months-10 years living in clusters that received chlorfenapy-pyrethroid LLINs had a 46% lower incidence of malaria over 2 years after LLIN distribution;\n", - "\n", - "\\begin{table}\n", - "\\begin{tabular}{c c c c c c c c c c} & **Malaria infection** & \\multicolumn{6}{c}{**Anaemia in children younger than 5 years**} \\\\ \\hline n/N & Prevalence & OR & 95\\% CI & p valuea & n/N & Prevalence & OR & 95\\% CI & p valuea \\\\ \\hline\n", - "**6 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 412/1471 & 28\\(\\,\\)0\\% & 1 (ref) & – & – & 992/41 & 41\\(\\,\\)1\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 394/1463 & 26\\(\\,\\)9\\% & 0\\(\\,\\)92 & 0\\(\\,\\)\n", - "\n", - "63\\(\\,\\)45 & 0\\(\\,\\)67 & 117/250 & 46\\(\\,\\)8\\% & 124 & 0.71–218 & 0.45 \\\\ LLIN group & & & & & & & & & \\\\ Chlorfenapy-pyrethroid & 231/1475 & 157\\(\\,\\)\\% & 0\\(\\,\\)47 & 0\\(\\,\\)32\\(\\,\\)0\\(\\,\\)669 & 0\\(\\,\\)0002 & 82/241 & 34\\(\\,\\)0\\% & 0.71 & 0.40–126 & 0.24 \\\\ LLIN group & & & & & & & & & \\\\\n", - "**18 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 576/14/849 & 38\\(\\,\\)7\\% & 1 (ref) & – & – & 118/25 & 46\\(\\,\\)8\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 564/14/83 & 38\\(\\,\\)2\\% & 0\\(\\,\\)97 & 0\\(\\,\\)69\\(\\,\\)13\\(\\,\\)07 & 0\\(\\,\\)87 & 108/245 & 44\\(\\,\\)1\\% & 0.84 & 0.40–179\n", - "\n", - "\n", - "participants of any age had 53% lower odds of malaria infection at 6 months and 40% lower odds at 18 months after LLIN distribution, and were exposed to a 66% reduction in entomological inoculation rate compared with those living in clusters that received pyrethroid-only LLINs. Similar gains were not observed with the pyriproxyfen-pyrethroid LLIN, with a small reduction in malaria incidence in the first year of the study that was attenuated in year 2, and no effect on malaria infection prevalence in either year, compared with the pyrethroid-only reference group. However, a 58% reduction in indoor entomological inoculation rate was detected with the pyriproxyfen-pyrethroid LLIN. Both dual active-ingredient LLINs provided a similar safety profile compared with standard pyrethroid-only LLINs, with short-lasting skin irritation and facial burning (commonly associated with the pyrethroid alpha-Cybermethrin) most frequently reported in participants using pyrethroid-only LLINs and pyriproxyfen-pyrethroid LLINs. A similar observation has been reported in another randomised controlled trial evaluating the same LLINs, and this is likely to be associated with the high concentration of alpha-Cybermethrin in those nets compared with the chlorfenapy-pyrethroid LLINs.\n", - "\n", - "To our knowledge, this is the second cluster-randomised trial to provide strong evidence of increased efficacy of chlorfenapy-pyrethroid LLINs relative to pyrethroid-only LLINs for malaria control in areas with pyrethroid-resistant vectors. Chlorfenapyr insecticide on nets has already shown improved control of pyrethroid-resistant _An gambiae_ in laboratory and semi-field experimental huts against resistant malaria vectors.3- The previous trial in Tanzania reported a malaria case incidence reduction of 44%, a 55% decrease in odds of malaria prevalence, and 85% reduction in entomological inoculation rate compared with the pyrethroid-only group, consistent with these results, despite the differing malaria vector populations and intensity of pyrethroid resistance in the mosquitoes.4 In both trials, per-protocol analyses suggested that individuals living in the chlorfenapy-pyrethroid clusters benefited regardless of whether they were using a study net, suggesting a community effect of the net, which was likely to be obtained by the overall reduction of mosquito density, which remained considerably lower than in the pyrethroid-only group in both years of this trial after net distribution. Community effect is also indicated by the reduction in both indoor and outdoor entomological indices in the chlorfenapy-pyrethroid group in the present study.\n", - "\n", - "Similar to the trial in Tanzania,4 the pyriproxyfen-pyrethroid LLINs we tested did not provide additional protection against malaria infection or disease compared with pyrethroid-only LLINs. However, there was evidence of an effect on indoor transmission, with the strongest effect seen in the first year after net distribution. Tino and colleagues5 have previously reported a 12% reduction in malaria incidence and 49% reduction in entomological \n", - "inoculation rate with a pyriproxyfen-pyrethroid LLIN compared with pyrethroid-only LLINs over 18 months in a stepped-wedge randomised trial in Burkina Faso. The different study design, length of follow-up, and brand of net might explain the differences seen between the two studies. In Benin, laboratory and semi-field experimental hut studies have shown the superior efficacy of pyriproxyfen-pyrethroid nets on entomological indicators compared with standard pyrethroid-only LLINs,2,3 and are consistent with the decrease in indoor vector density observed in our trial. However, the decrease in indoor vector density did not translate into significant disease reduction, suggesting that a larger effect on malaria transmission (entomological inoculation rate) is crucial to provide community protection. Although lower net usage in the pyriproxyfen-pyrethroid LLIN group could have partially contributed to the lack of effect, we are also assessing textile durability, sterilisation effects, and chemical content of pyriproxyfen-pyrethroid LLINs to fully understand these results.\n", - "\n", - "With several trials now showing the superior efficacy of next-generation LLINs over pyrethroid-only nets, the importance of developing new active ingredients to use on nets in the future is brought to the fore. The distribution of next-generation LLINs across sub-Saharan Africa has already begun, with the development of the brands of chlorfenapry-pyrethroid nets underway,3 as well as the development of chlorfenapry product formulations for indoor residual spraying.3 Although chlorfenapry-pyrethroid nets offer a superior alternative to pyrethroid-only nets in areas of pyrethroid resistance, to preserve their effectiveness optimal resistance-management strategies should be used. There was no evidence of the development of resistance to chlorfenapry during the 2 years of this trial; however, the wide-scale deployment of one type of insecticide risks the rapid development of resistance, which could result in a similar situation to the current widespread resistance to pyrethroids. The nets should be deployed ideally alongside other insecticides as part of a strategy aimed to reduce selection pressure for development of resistance in mosquito vectors. Given the significant effect of the pyriproxyfen-pyrethroid LLINs on malaria transmission during the first year after net distribution, additional studies are necessary to evaluate the potential value of active ingredients such as pyriproxyfen, which are not primarily intended to kill resistant adult mosquitoes but rather to sterilise them. There might still be a role for these hormone growth-regulator insecticides in combination with other active ingredients for net treatment in long-term resistance management.\n", - "\n", - "If WHO policy recommendations are made on the basis of this trial's results, future chlorfenapry-pyrethroid nets might not have to undergo the rigorous trial testing that Interceptor G2 has. Caution should, however, be taken to assess the comparative efficacy, quality, and durability of the second-in-class chlorfenapry-pyrethroid nets as they might use different concentrations of chlorfenapry, different pyrethroids, or different net materials. Considering the time and resources required to generate evidence of epidemiological effect using randomised trials, non-inferiority experimental hut trials, recently proposed by WHO,3 might be a useful alternative for second-in-class chlorfenapry-pyrethroid LLINs. Further work to investigate the capacity of such entomological studies to predict the performance of the trial nets against clinical malaria is ongoing.3\n", - "\n", - "Footnote 3: endnote: [https://www.thelanct.com/Vol.401](https://www.thelanct.com/Vol.401). February 11, 2023\n", - "\n", - "Our study has some limitations. First, net ownership and use were high throughout the study; however, this did not always equate to study net use, which was approximately 60% at 2 years after net distribution, with overall usage of greater than 80%. Similar findings have been observed in other bednet trials, and probably indicate populations choosing to discard damaged nets when other nets are readily available. Second, the three types of nets were not completely identical and differences in textile material and size might have resulted in differential net usage between the groups. As our net use indicator was primarily self-reporting, it is also possible that net usage was overestimated. Third, our primary measure of incidence was based on active detection, involving visits every 2 weeks or every month. The passive data collected alongside the trial suggests that this frequency of visit resulted in some cases being missed, meaning the absolute effect of the nets might be greater than reported here. However, the relative effect of the nets remained similar when the active and passive data were combined. Finally, cost-effectiveness was not assessed; however, the trial in Tanzania' showed that dual active-ingredient LLINs can be highly cost-effective and even cost-saving compared with pyrethroid-only LLINs when providing sufficient protection.\n", - "\n", - "New classes of vector control interventions currently require clinical trial evaluation in two different geographical settings, after 24 months of community use.4 Currently, the only class of next-generation LLIN to receive a WHO recommendation are the PBO synergism nets. However, previous publications have shown concerns about the durability of these nets.5 This trial provides the second key evidence for the effectiveness of chlorfenapry-pyrethroid nets in an area with pyrethroid-resistant vectors and will therefore support a WHO policy recommendation. However, the effect of the nets was reduced in the second year of the trial, and there is no evidence for the efficacy of the nets in their third year of use. Many studies report that the durability of nets is much less than the 3 years required to be designated as long lasting.5 The next-generation LLINs might face the same problems of fabric integrity and durability of insecticidal content unless standards of manufacture are improved. Different channels of distribution (eg, school-based, antenatal care visits, or expanded programme immunisation visits) could play a key role in maintaining high levels of net use in communities.5\n", - "Although generating this evidence to support a WHO recommendation for another class of bednet is a key turning point in malaria control, without new insecticides and new ways to deploy them, we risk repeating the mistakes of the past. Now is the time for more innovation and less complacency.\n", - "\n", - "header: Methods\n", - "\n", - "We conducted a cluster-randomised, superiority trial in Zou Department, Benin. Clusters were villages or groups of villages with a minimum of 100 houses. We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (I:1:1): to receive nets containing either pyriproxyfen and alpha-Cypermethrin (pyrethroid), chlorfenapyr and alpha-Cypermethrin only (reference). Households received one LLIN for every two people. The field team, laboratory staff, analyses team, and community members were masked to the group allocation. The primary outcome was malaria case incidence measured over 2 years after net distribution in a cohort of children aged 6 months-10 years, in the intention-to-treat population. This study is ongoing and is registered with ClinicalTrials.gov, NCT03931473.\n", - "\n", - "Findings Between May 23 and June 24, 2019, 53 854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54030 households in an updated census. A cross-sectional survey showed that study LLIN usage was highest 9 months after distribution (5532 [76 * 986] of 7206 participants), but decreased by 24 months (4032 [60 * 696] of 6654). Mean malaria incidence over 2 years after LLIN distribution was 1-03 cases per child-year (95% CI 0 * 96-1 * 09) in the pyrethroid-only LLIN reference group. 0 * 84 cases per child-year (0.78-0 * 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 * 86, 95% CI 0 * 65-1* 14; p=0 * 28), and 0 * 56 cases per child-year (0 * 51-0 * 61) in the chlorfenapyr-pyrethroid LLIN group (HR 0 * 54, 95% CI 0 * 42-0 * 70; p<0 * 0001).\n", - "\n", - "Interpretation Over 2 years, chlorfenapyr-pyrethroid LLINs provided greater protection from malaria than pyrethroid-only LLINs in an area with pyrethroid-resistant mosquitoes. Pyriproxyfen-pyrethroid LLINs conferred protection similar to pyrethroid-only LLINs. These findings provide crucial second-trial evidence to enable WHO to make policy recommendations on these new LLIN classes. This study confirms the importance of chlorfenapyr as an LLIN treatment to control malaria in areas with pyrethroid-resistant vectors. However, an arsenal of new active ingredients is required for successful long-term resistance management, and additional innovations, including pyriproxyfen, need to be further investigated for effective vector control strategies.\n", - "\n", - "header: Contributions\n", - "\n", - "NP, JC, and CN conceived and designed the study, with contributions from MR, IK, LAM, and MCA, JC and MA led the development of the analysis plan, with input from BA, Aso, and NP, MA, CA, JC, NP, FT, and MCA coordinated the trial implementation with local and national authorities, RA, and AO-H. MA, BF, HA, Aso, and LA led the data collection in the field with and Aso, and AP, each of them, MCA, JC, and NP and NP. Also, BC, BA, and KAB led the molecular laboratory work.\n", - "\n", - "header: Funding UNITAID, The Global Fund.\n", - "\n", - "Pyrethroid-treated long-lasting insecticidal nets (LLINs) are the main malaria prevention intervention in sub-Saharan Africa and have been the major contributor to the estimated 1 * 5 billion malaria cases and 7 * 6 million malaria deaths averted in the past two decades. However, since 2015, the decline in malaria cases has stalled, and between 2019 and 2020, a rebound in malaria transmission was reported in some areas of sub-Saharan Africa.1 This rebound is likely to be a consequence of the continued spread of resistance to pyrethroid insecticides in malaria-transmitting mosquitoes, coinciding with a plateau in malaria control investment, leading to suboptimal coverage of interventions. Urgent actions are needed to prevent malaria resurgences, which were previously observed in sub-Saharan Africa in the 1980s after malaria control measures were scaled down.2\n", - "In the past 10 years, new insecticide-treated nets containing non-pyrethroid insecticides and insecticide synergists, in combination with pyrethroids, have been shown to be safe and efficacious against malaria mosquito vectors.14 The first net combined a pyrethroid insecticide and the synergistic piperonyl butoxide (PBO) and, following a randomised controlled trial,1 received a WHO policy recommendation in 2017. Other next-generation LLINs have shown encouraging results against resistant vectors in laboratory and small-scale entomological studies.47 One of these nets is a dual active-ingredient LLIN combining a pyrethroid and a pyrrole (chlorfenapyr). Both insecticides lead to mosquito mortality, with chlorfenapyr disrupting the production of cellular energy rather than targeting the nervous system, as pyrethroids do. Another dual active-ingredient LLIN combines a pyrethroid with an insect growth regulator (pyriprosyfen), which leads to sterility in exposed adult mosquitoes.\n", - "\n", - "The first randomised trial of these two products was conducted in Tanzania and showed that the chlorfenapyr-pyrethroid LLINs nearly halved malaria infection over 2 years in villages that received chlorfenapyr-pyrethroid LLINs compared with villages that received pyrethroid-only LLINs. PBO-pyrethroid LLINs were consistently found to be more effective than pyrethroid-only LLINs; however, the duration of the superior effect varied from 12 months to 21 months according to the different trials.\n", - "\n", - "header: Procedures\n", - "\n", - "The nets tested in the trial were: Royal Guard (Disease Control Technologies, Greer, SC, USA), polyethylene netting (I20 deniers incorporating 220 mg/m2 pyriproyfen and 220 mg/m2 alpha-cypermethrin); Interceptor G2 (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 chlorfenapyr and 100 mg/m2 alpha-cypermethrin); and the reference net, Interceptor (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 of alpha-cypermethrin). Nets were distributed in collaboration with the Benin National Malaria Control Program. Households were asked to collect their nets from a central point and received one net per every two residents in their household, rounded up for odd numbers. Nets already in houses were not removed but households were encouraged to use the new study nets. Additionally, net hang-up campaigns to encourage net use took place at 1 month and 7 months after distribution. Net coverage surveys to assess net ownership and usage were done at 1, 9, and 24 months after distribution. Throughout the follow-up period, children enrolled in the analysis cohort and participants enrolled in the cross-sectional surveys were also asked about their net use.\n", - "\n", - "Insecticide content at baseline was assessed on 30 randomly selected new nets per LLIN brand, by gas chromatography with Flame Ionisation Detection, at the\n", - "Centre Wallon de Recherches Agronomiques, Gembloux, Belgium. The insecticidal and physical durability of the study nets is being assessed in a separate study.\n", - "\n", - "Due to the COVID-19 pandemic, there was a 3-month gap between the distribution of the nets and the enrolment of children in the cohort. At enrolment and at 1 year after distribution (April, 2021), children were treated with antimalarial drugs (atremether-lumefantrinity to clear any underlying infection. The cohort was monitored from August, 2020, to April, 2022, a 21-month period, which encompassed the first 2 years after net distribution. Study nurses visited children every 2 weeks during the transmission season (April-October) and every 1 month in the dry season (November-March). At each visit, children were clinically examined and if they were febrile or had a history of fever in the past 48 h, they were tested for malaria using a malaria rapid diagnostic test. If the test was positive, the child was treated with artemether-lumefantrine, according to national guidelines.\n", - "\n", - "During cross-sectional surveys, all participants were tested for malaria using a malaria rapid diagnostic test and received treatment if the test was positive, and children younger than 5 years were tested for anaemia. Information regarding net ownership and usage, and other household-level indicators were collected at the same time.\n", - "\n", - "Entomological monitoring was also delayed and took place every 3 months between June, 2020, and April, 2022. Volunteers recruited from study clusters collected mosquitoes that landed on their legs between 1900 h and 0700 h for 1 night at four randomly selected houses in each cluster at each timepoint. Mosquitoes were morphologically identified to species and a subsample of _Anopheles_ spp was tested for molecular species using PCR.(r) A random sample of _Anopheles_ spp (up to 30% from each nightly catch in each cluster) were tested for sporozoites using the ELISA circumsporozoite protein technique.(r)\n", - "\n", - "header: Methods\n", - "\n", - "We conducted a three-group, cluster-randomised, superiority trial in three districts (Cove, Zagnanado, and Ouinhi) in Zou Department, central Benin. Malaria is highly endemic in the region, with a peak during the wet season (May-October). The main vector control strategy in the study area is use of pyrethroid-only LLINs distributed en masse once every 3 years, and through routine service delivery by antenatal clinics and vaccination programmes. The primary vectors in the setting are _Anopheles coluzzi_ and _Anopheles gambiae_. There is a high intensity of pyrethroid resistance in the main local vector populations.11\n", - "\n", - "A demographic census of all 123 villages in the study area was done in June, 2019. Clusters consisted of villages, or several villages. To reduce contamination between study groups, clusters consisted of a core (minimum 100 households) surrounded by a buffer, ensuring that core areas of neighbouring clusters were separated by at least 1000 m. Households in the buffer and core received the intervention, but measurement of outcomes only took place in core areas. A detailed description of the study protocol is published elsewhere.\"\n", - "\n", - "Ethics approval was obtained from the Benin Ministry of Health ethics committee (6/30/MS/DC/SGM/DRFMT/CNERS/SA), the London School of Hygiene & Tropical Medicine ethics committee (16237), and the WHO Research Ethics Review Committee (ERC.0003153). The trial was independently monitored by a data safety monitoring board and a trial steering committee.\n", - "\n", - "Epidemiological effect was estimated through measuring malaria case incidence in the 2 years after net distribution by active case detection in a cohort of children. A cohort of approximately 30 children aged 6 months-9 years randomly selected (by simple random sampling using a random number generator) from each cluster (1800 in total) was enrolled in July, 2020. Children were eligible for inclusion if they were permanent residents in the cluster, had no serious illnesses, and written informed consent was obtained from their guardians.\n", - "\n", - "Malaria infection prevalence (in all ages) was measured by cross-sectional surveys at 6 months and 18 months after net distribution. 72 individuals residing in the core of each cluster were randomly selected (using a random number generator) from the census for each cross-sectional survey. Each prevalence surveyed collected data on malaria infection, measured using malaria rapid diagnostic tests (CareStart malaria HRP2/PLDH [pf/pan] combo, DiaSy, UK), net ownership and use, sex, and household assets (as a proxy for socioeconomic status).\n", - "\n", - "Entomological effects were measured using human landing catches in four randomly selected houses every 3 months in each cluster. Insecticide resistance intensity was measured in two clusters per group (six clusters total) at baseline and in each follow-up year.\n", - "\n", - "Written informed consent was obtained from all participants, or from guardians for participants younger than 18 years. Assent was sought for children aged between 10 and 18 years. Written consent was also obtained from volunteer mosquito collectors who were all aged 18 years or older and who were vaccinated against yellow fever. All participation was voluntary, and participants could withdraw at any time. Study investigators sought consent in French or local languages.\n", - "\n", - "header: Table 2: Malaria case incidence in children aged 6 months–10 years per year of follow-up and overall (including active visits only)\n", - "footer: Each intervention was compared with the pyrethroid-only LLIN group for the same timepoint. LLIN=long-lasting insecticidal net. *A p value of <0·025 was considered significant after Bonferroni correction\n", - "columns: ['Unnamed: 0_level_0 - Overall', 'Number of clinical malaria episodes - Overall', 'Child- years of follow-up - Overall', 'Incidence, cases per child-year (95% Cl) - Overall', 'Hazard ratio - Overall', '95%Cl - Overall', 'p value* - Overall']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"897\",\"Child- years of follow-up - Overall\":\"874.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.03 (0.96-1.09)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"1\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"744\",\"Child- years of follow-up - Overall\":\"883.8\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.84 (0.78-0.90)\",\"Hazard ratio - Overall\":\"0.86\",\"95%Cl - Overall\":\"0.65-1.14\",\"p value* - Overall\":\"0.28\"},\"2\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"494\",\"Child- years of follow-up - Overall\":\"887.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.56 (0.51-0.61)\",\"Hazard ratio - Overall\":\"0.54\",\"95%Cl - Overall\":\"0.42-0.70\",\"p value* - Overall\":\"<0.0001\"},\"3\":{\"Unnamed: 0_level_0 - Overall\":\"Year 1\",\"Number of clinical malaria episodes - Overall\":\"Year 1\",\"Child- years of follow-up - Overall\":\"Year 1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 1\",\"Hazard ratio - Overall\":\"Year 1\",\"95%Cl - Overall\":\"Year 1\",\"p value* - Overall\":\"Year 1\"},\"4\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"267\",\"Child- years of follow-up - Overall\":\"344.4\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.77 (0.69-0.87)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"5\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"211\",\"Child- years of follow-up - Overall\":\"342.7\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.62 (0.54-0.70)\",\"Hazard ratio - Overall\":\"0.83\",\"95%Cl - Overall\":\"0.51-1.35\",\"p value* - Overall\":\"0.46\"},\"6\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"124\",\"Child- years of follow-up - Overall\":\"349.2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.36 (0.30-0.42)\",\"Hazard ratio - Overall\":\"0.46\",\"95%Cl - Overall\":\"0.30-0.72\",\"p value* - Overall\":\"0.0005\"},\"7\":{\"Unnamed: 0_level_0 - Overall\":\"Year 2\",\"Number of clinical malaria episodes - Overall\":\"Year 2\",\"Child- years of follow-up - Overall\":\"Year 2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 2\",\"Hazard ratio - Overall\":\"Year 2\",\"95%Cl - Overall\":\"Year 2\",\"p value* - Overall\":\"Year 2\"},\"8\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"630\",\"Child- years of follow-up - Overall\":\"529.9\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.19 (1.10-1.29)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"9\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"533\",\"Child- years of follow-up - Overall\":\"541.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.98 (0.90-1.07)\",\"Hazard ratio - Overall\":\"0.88\",\"95%Cl - Overall\":\"0.68-1.13\",\"p value* - Overall\":\"0.31\"},\"10\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"370\",\"Child- years of follow-up - Overall\":\"538.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.69 (0.62-0.76)\",\"Hazard ratio - Overall\":\"0.57\",\"95%Cl - Overall\":\"0.45-0.73\",\"p value* - Overall\":\"<0.0001\"}}\n", - "\n", - "header: Table 1: Baseline characteristics\n", - "footer: Data are n or %; n/N unless otherwise stated. EIR=entomological inoculation rate. LLIN=long-lasting insecticidal net. *Proportion of households in the poorest tercile based on the wealth index of the entire study area. †Anaemia defined as haemoglobin concentration of <10 g/dL. ‡Malaria vectors included Anopheles gambiae, Anophelesfunestus, and Anopheles nili\n", - "columns: ['Unnamed: 0_level_0 - Clusters', 'Pyriproxyfen-pyrethroid LLIN group - Clusters', 'Chlorfenapyr-pyrethroid LLIN group - Clusters', 'Pyrethroid-only LLIN group - Clusters']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of clusters\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"20\",\"Pyrethroid-only LLIN group - Clusters\":\"20\"},\"1\":{\"Unnamed: 0_level_0 - Clusters\":\"Total population in core and buffer areas\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"74822\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"70989\",\"Pyrethroid-only LLIN group - Clusters\":\"69239\"},\"2\":{\"Unnamed: 0_level_0 - Clusters\":\"Mean population in core area of clusters (range)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"1096.1 (225-4524)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"1120.5 (243-5040)\",\"Pyrethroid-only LLIN group - Clusters\":\"1058.1 (252-5217)\"},\"3\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of people per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"4.0 (2.3)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"3.9 (2.3)\",\"Pyrethroid-only LLIN group - Clusters\":\"4.1 (2.4)\"},\"4\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of sleeping spaces per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"2.2 (1.2)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"2.1 (1.1)\",\"Pyrethroid-only LLIN group - Clusters\":\"2.2 (1.2)\"},\"5\":{\"Unnamed: 0_level_0 - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyrethroid-only LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\"},\"6\":{\"Unnamed: 0_level_0 - Clusters\":\"Low socioeconomic status*\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"35.8%; 529\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"36.2%; 533\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"29.0%; 431\\/1487\"},\"7\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN ownership (at least one LLIN in the household)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"96.4%; 1426\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"97.1%; 1431\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"95.1%; 1415\\/1488\"},\"8\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN usage in all age groups the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"95.8%; 1312\\/1370\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"94.9%; 1258\\/1326\",\"Pyrethroid-only LLIN group - Clusters\":\"96.5%; 1343\\/1392\"},\"9\":{\"Unnamed: 0_level_0 - Clusters\":\"Malaria infection prevalence in all age groups\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"43.1%; 636\\/1475\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"40.7%; 598\\/1468\",\"Pyrethroid-only LLIN group - Clusters\":\"46.5%; 690\\/1485\"},\"10\":{\"Unnamed: 0_level_0 - Clusters\":\"Anaemia prevalence in children aged 6 months-4 years\\u2020\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"53.3%; 136\\/255\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"53.3%; 131\\/246\",\"Pyrethroid-only LLIN group - Clusters\":\"50.2%; 122\\/243\"},\"11\":{\"Unnamed: 0_level_0 - Clusters\":\"Entomological characteristics\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Pyrethroid-only LLIN group - Clusters\":\"Entomological characteristics\"},\"12\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night indoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"32.9 (28.9)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"21.6 (21.0)\",\"Pyrethroid-only LLIN group - Clusters\":\"29.2 (25.3)\"},\"13\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night outdoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20.3 (17.6)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"16.4 (17.4)\",\"Pyrethroid-only LLIN group - Clusters\":\"20.6 (20.2)\"},\"14\":{\"Unnamed: 0_level_0 - Clusters\":\"Indoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.62 (0.93)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.48 (0.65)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.96 (1.18)\"},\"15\":{\"Unnamed: 0_level_0 - Clusters\":\"Outdoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.27 (0.45)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.17 (0.44)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.33 (0.45)\"},\"16\":{\"Unnamed: 0_level_0 - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyrethroid-only LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\"},\"17\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of children younger than 5 years\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"52.3%; 316\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"50.6%; 304\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"53.6%; 322\\/601\"},\"18\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of female children\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"47.2%; 285\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"48.4%; 291\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"48.8%; 293\\/601\"},\"19\":{\"Unnamed: 0_level_0 - Clusters\":\"Net usage the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"99.0%; 598\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"98.7%; 593\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"99.2%; 596\\/601\"}}\n", - "\n", - "header: Introduction: Added value of this study\n", - "\n", - "To our knowledge, this is the second study aiming to compare the efficacy of the next generation of LLINs combining _p_iprosyfen or chlorfenapyr and pyrethroid versus standard pyrethroid-only LLINs, and the first of its kind to be conducted in west Africa. This trial confirmed the superior efficacy of chlorfenapyr-pyrethroid LLINs, in terms of malaria case incidence, prevalence, and transmission in children, over 2 years of use in the community, in an area of moderate malaria transmission and with high insecticide resistance intensity in malaria vectors, in Benin. However, pyrioxyfen-pyrethroid LLINs did not offer additional protection against malaria outcomes compared with pyrethroid-only LLINs.\n", - "\n", - "header: Table 3: Malaria infection and anaemia prevalence in the study population at 6 months and 18 months after net distribution (intention-to-treat analysis)\n", - "footer: Anaemia was defined as a haemogloblin concentration of <10 g/dL. LLIN=long-lasting insecticidal net. OR=odds ratio. *A p value of <0·025 was considered significant after Bonferroni correction\n", - "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution', 'Malaria infection - n/N - 6 months after net distribution', 'Malaria infection - Prevalence - 6 months after net distribution', 'Malaria infection - OR - 6 months after net distribution', 'Malaria infection - 95% Cl - 6 months after net distribution', 'Malaria infection - p value* - 6 months after net distribution', 'Anaemia in children younger than 5 years - n/N - 6 months after net distribution', 'Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution', 'Anaemia in children younger than 5 years - OR - 6 months after net distribution', 'Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution', 'Anaemia in children younger than 5 years - p value* - 6 months after net distribution']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"412\\/1471\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"28.0%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"99\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"41.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"394\\/1463\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"26.9 %\",\"Malaria infection - OR - 6 months after net distribution\":\"0.92\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.63-1.35\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.67\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"117\\/250\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.24\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.71-2.18\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.45\"},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"231\\/1475\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"15.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.47\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.32-0.69\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0002\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"82\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"34.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.71\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.26\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0-24\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - p value* - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"18 months after net distribution\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"576\\/1489\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/252\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"564\\/1478\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.2%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.97\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.69-1.37.\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.87\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"108\\/245\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"44.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.84\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.79\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.65\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"414\\/1483\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"27.9%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.60\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.43-0.85\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0041\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/246\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"48.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.08\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.51-2.28\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.84\"}}\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Data sharing: Acknowledgments\n", - "\n", - "This trial was funded by a grant to the London School of Hygiene & Tropical Medicine from UNITAD and The Global Fund via the Innovative Vector Control Consortium. This trial is part of a larger project. The New Nets project: We thank the communities from the three study districts (Cow, Zagnanado, Ouinhi), particularly the participants, children and their parents, community health workers, staff in health clinics, and the regional study team. We thank colleagues and staff at the Centre de Recherche Entomologique de Cotonou and those at the National Malaria Control Program. We also thank the trial system committee, the data safety monitoring board, and Charles Dickinson (School of Epidemiology and Public Health, University of Ottawa, Ottawa, ON, Canada) for supporting the mapping and cluster delineation.\n", - "\n", - "header: Role of the funding source\n", - "\n", - "The funders of the study had no role in study design, data collection, data analysis, data interpretation, writing of the report, or in the decision to submit for publication.\n", - "\n", - "header: Outcomes\n", - "\n", - "The primary outcome was malaria case incidence (infrared frontal temperature >37.5degC or reported fever in the previous 48 h, and positive malaria rapid diagnostic test) in children enrolled in the active case detection cohort in the 2 years after net distribution. Visits of children in the cohort at health facilities were monitored and the results of malaria rapid diagnostic tests and any treatment given were recorded. However, it was difficult to assess with certainty if malaria rapid diagnostic tests were used only if the child was symptomatic (as our protocol specified); therefore, the passive data was not included in the primary analyses.\n", - "\n", - "Secondary clinical outcomes were malaria infection prevalence in all age groups and anaemia (defined as haemoglobin concentration <10 g/dL) prevalence in children aged 5 years or younger at 6 months and 18 months after net distribution.\n", - "\n", - "Type and duration of adverse events related to usage of nets were recorded using a prespecified questionnaire at each cohort visit and during net usage and cross-sectional surveys. Data on hospitalisation and death in children in the cohort were collected by interviewing the child's guardian and reviewing the hospital record, following receipt of consent.\n", - "\n", - "The primary entomological outcome was entomological inoculation rate, measured as the mean number of _Plasmodium_ spp infective malaria vectors collected per person per night measured indoors and outdoors. Secondary entomological outcomes were vector density (number of mosquitoes caught per person per night), sporozoite rate, and species composition. Centers for Disease Control and Prevention bottle bioassays were performed by exposing adult female _An gambiae_, collected as larvae, to alpha-cypermethrin for 30 min (1, 2, 5, and 10 times the diagnostic dose), and to chlorfenrapy (100 mg/bottle) and pyriproxyfen (100 mg/bottle) for 60 min each year.(r) Mortality was recorded at 30 min for all four doses of alpha-cypermethrin (insectidic resistance intensity measurement), and at 24, 48, and 72 h after exposure for chlorfenapyr. The reduction in fecundity rate induced by pyriproxyfen relative to unexposed mosquitoes was assessed by ovarian dissection, 3 days after pyriproxyfen exposure. Other outcomes included in the protocol (parity, resting behaviour, survivorship, and other resistance measures) are still to be analysed and will be published elsewhere.\n", - "\n", - "header: Statistical analysis\n", - "\n", - "The sample size calculations for epidemiological data collection were calculated using the method of Hayes and Moulton.(r) The study was designed to detect a 30% difference in malaria case incidence, assuming a control group incidence of 1 malaria case per child-year and a coefficient of variation of 0-3 between clusters. This design required 20 clusters per group and 25 (20+5 allowing for loss to follow-up) children per cluster followed up for 2 years to give 80% power. Due to the delay in enrolment, which resulted in a shorter follow-up time, the number of children per cluster was increased to 30 (1800 children total). This sample size calculation includes adjustment for multiple testing (allowing for the three groups) using a Bonferroni-corrected two-sided a of 2.5%.\n", - "\n", - "For malaria infection prevalence, it was assumed that the prevalence in the reference group was 40%, with a coefficient of variation between clusters of 0-3. With 72 individuals per cluster, the study had 80% power to detect a 30% lower prevalence in the intervention groups compared with the reference group, using a Bonferroni-corrected a for multiple comparisons.\n", - "\n", - "The primary intention-to-treat analysis was a comparison of incidence of clinical malaria episodes between each dual active-ingredient LLIN group and the\n", - "\n", - "header: Implications of all the available evidence\n", - "\n", - "Given the positive findings, both in Benin and Tanzania, for chlorfenapyr-pyrethroid LLINs, they are likely to become the first WHO-recommended LLINs impregnated with an insecticide class other than pyrethroids. The absence of superior efficacy of pyrioxyfen-pyrethroid LLINs compared with standard pyrethroid-only LLINs is consistent with the results of the previous Tanzania study and calls into question the role of the current pyrioxyfen-pyrethroid LLINs in future malaria vector strategies.\n", - "\n", - "header: Methods\n", - "\n", - "Data collected for the study, including deidentified participant data and data dictionaries, might be made available at the end of the third year of trial follow-up upon reasonable request to the corresponding author.\n", - "\n", - "header: Results\n", - "\n", - "Between May 23 and June 24, 2019, 53854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. The households were delineated into 61 clusters, with one subsequently excluded due to extensive seasonal flooding (figure). Baseline cross-sectional epidemiological and entomological surveys were conducted between October and November, 2019 (table 1). The malaria infection prevalence was 43 5% (1924 of 4428 participants, cluster range 15 1-72 796) and population self-reported LLIN usage was 95 7% (3913 of 4088 participants). Cluster demographics and malaria prevalence were similar between groups (table 1). Entomological inoculation rate was 0 68 _Plasmodium_ spp infective bites per person per night (cluster range 0 00-3 80) indoors and 0 26 per person per night (0 00-1 88) outdoors.\n", - "\n", - "Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54 300 households in an updated census, with 97 1% of households receiving at least one net per household. Active ingredients in the new nets were found to be within or higher than the acceptable target limits depending on LLIN brand (appendix p 4). Study net usage was highest (5532 [76 8%] of 7206 participants) at 9 months after distribution, following a second hang-up campaign, but had decreased by 24 months (4032 [60 6%] of 6654). Study net coverage and usage indicators were similar between study groups up to 18 months after net distribution. At 24 months, pyriproxyfen-pyrethroid LLIN usage and ownership was the lowest (appendix pp 5-6). Use of any type of LLIN (study LLINs and others) remained greater than 80% up to 24 months after distribution (appendix p 7).\n", - "\n", - "In the 2283 households that were randomly selected for post-intervention cohort follow-up, 3129 children were eligible, 1829 of whom were randomly selected, and consent was obtained for 1806 (figure). Among the 2849 and 2771 households randomly selected at 6 months and 18 months after LLIN distribution for the malaria prevalence cross-sectional surveys, 4781 (85 1%) of 5620 households consent, with a similar proportion in the two surveys. The remaining households were either not available during the visit (775 [13 8%] of) or declined to participate (64 [1 1%]; appendix p 8).\n", - "\n", - "Children aged 6 months-9 years enrolled for active case detection were monitored for 21 months, for a total follow-up time of 2645 4- child-years at risk. Loss to follow-up was similar between groups (figure). At enrolment, children were balanced on age, sex, and net usage. During the 21-month follow-up period, we detected 2135 malaria cases through active case detection (table 2). The mean malaria case incidence over 21 months of follow-up was 1 03 cases per child-year (95% CI 0 96-1 09) in the pyrethroid-only LLIN reference group, 0 84 cases per child-year (0 78-70 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 86, 95% CI 0 65-1 46; p = 0 - 28), and 0 56 cases per child-year (0 51-0 64) in the chlorfenapry-pyrethroid LLIN group (HR 0 54, 95% CI 0 - 42-0 70; p < 0 0001; table 2). The strongest effect was observed in the first year of follow-up in the chlorfenapry-pyrethroid group (HR 0 46, 95% CI 0 30-0 72; p = 0 - 0005; table 2). When combining active and passive visits, the number of cases detected nearly doubled; however, the effect size in comparison to the reference group was similar for both intervention nets (appendix p 9).\n", - "\n", - "Malaria infection prevalence was 23 5% (1037 of 4409 participants) at 6 months and 34 9% (1554 of 4450) at 18 months after net distribution (table 3). There was strong evidence for a reduction of malaria infection prevalence in the chlorfenapry-pyrethroid LLIN group at 6 months (15 7%; odds ratio [OR] 0 47, 95% CI 0 32-0 69; p = 0 0002) and at 18 months (27 9%; OR 0 60 - 60, 0 - 43-0 85; p = 0 004) compared with the reference group (28 - 0% at 6 months and 38 7% at 18 months; table 3). In the pyriproxyfen-pyrethroid group, there was no evidence for a reduction in malaria prevalence at 6 months (26 9%; OR 0 - 92, 95% CI 0 63-1 35; p = 0 - 67) or 18 months (38 2%; OR 0 97 0, 0 69-1 37; p = 0 87) compared with the reference group. Results were similar for the per-protocol analysis (appendix p 1). There was no evidence of a reduction in moderate to severe anaemia prevalence in either intervention group (table 3). The post-hoc analysis adjusting for covariates used in the randomisation did not change the interpretation of the results (appendix pp 12-13).\n", - "\n", - "\n", - "Adverse events related to study nets were reported in 528 (45-496) of 1162 participants surveyed at 1 month after net distribution. The highest proportion of adverse events was reported in the pyrethroid-only LLIN group (247 [63-8%] of 387 participants), followed by the pyriproyfen-pyrethroid LLIN group (212 [52-5%] of 404) and then the chlorfenapy-pyrethroid LLIN group (69 [18-6%] of 371). Facial burning (392 [33-7%] of 1162 participants), and skin irritation or itchiness (244 [20-9%]) were the most common adverse events in all groups. Adverse events were rare in all three groups at all later timepoints (appendix P 14-15). We recorded 44 serious adverse events (including three deaths) in the cohort children, with 32 (72-7%) documented as severe malaria (11 cases in the pyriproyfen-pyrethroid LLIN group, ten in the chlorfenapy-pyrethroid LLIN group, and 11 in the pyrethroid-only LLIN group). No serious adverse events related to net use were reported.\n", - "\n", - "A total of 259265 mosquitoes were collected over 3840 collection nights indoors and outdoors, of which 20-9% (29814 from indoors and 24436 from outdoors) were malaria vectors, with _An gambiae_ sensu that the most predominant. Overall, indoor entomological inoculation rate was lower in both intervention groups than in the reference group, with a mean entomological inoculation rate of 0-90 infectious bites per night per person in the chlorfenapy-pyrethroid LLIN group (rate ratio [RR] 0-34, 95% CI 0-18-0-62; p=0-0005), 0-12 in the pyriproyfen-pyrethroid LLIN group (RR 0-42, 0-2-3-0-74; p=0-0028), and 0-28 in the pyrethroid-only LLIN group (table 4). Mean indoor vector density appeared to be lower in the chlorfenapy-pyrethroid LLIN group (10-18 bites per person per night, density ratio 0-44, 95% CI 0-2-30-84; p=0-014), and in the pyriproyfen-pyrethroid LLIN group (13-6 bites per person per night, density ratio 0-58, 0-30-1-12; p=0-011) than in the reference group (23-0 bites per person per night, but the latter difference was not statistically significant (table 4). Adjusting for baseline vector density in the models gave similar results (appendix P 16). There was no significant difference in sporozoite rate in any of the intervention groups compared with the reference group (table 4).\n", - "\n", - "Reduction in outdoor entomological inoculation rate compared with the reference group was observed only in the chlorfenapy-pyrethroid LLIN group (RR 0-30, 95% CI 0-13-0-67; p=0-0035; appendix P 17). There was very weak evidence for a reduction in outdoor entomological inoculation rate in the pyriproyfen-pyrethroid LLIN group compared with the pyrethroid-only group (RR 0-58, 0-30-1-13; p=0-11). Similar effects were observed for outdoor vector density for both intervention nets (appendix P 17).\n", - "\n", - "Post-intervention pyrethrold resistance intensity was high across the study groups in _An gambiae_ sensu lato, with mean mortality of 85% or less after exposure to 10 times the diagnostic concentrations of alpha-cypentrohin in year 2 (appendix P 18). No resistance to chlorfenapy was observed during either year after net distribution (appendix P 18). Exposure of _An gambiae_ sensu lato to pyriproyfen led to a high reduction in fecundity rate relative to unexposed control mosquitoes over the 2 years after net distribution (73-2%, 95% CI 62-2-82-4 in year 1, and 76-6%, 66-6-84-9 in year 2).\n", - "\n", - "header: Discussion\n", - "\n", - "This trial assessed the efficacy of two dual active-ingredient LLINs in an area of Benin with malaria vectors that are highly resistant to pyrethroids and found that chlorfenapy-pyrethroid LLINs provided significantly better protection against malaria for up to 2 years after net distribution compared with pyrethroid-only LLINs. Children aged 6 months-10 years living in clusters that received chlorfenapy-pyrethroid LLINs had a 46% lower incidence of malaria over 2 years after LLIN distribution;\n", - "\n", - "\\begin{table}\n", - "\\begin{tabular}{c c c c c c c c c c} & **Malaria infection** & \\multicolumn{6}{c}{**Anaemia in children younger than 5 years**} \\\\ \\hline n/N & Prevalence & OR & 95\\% CI & p valuea & n/N & Prevalence & OR & 95\\% CI & p valuea \\\\ \\hline\n", - "**6 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 412/1471 & 28\\(\\,\\)0\\% & 1 (ref) & – & – & 992/41 & 41\\(\\,\\)1\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 394/1463 & 26\\(\\,\\)9\\% & 0\\(\\,\\)92 & 0\\(\\,\\)\n", - "\n", - "63\\(\\,\\)45 & 0\\(\\,\\)67 & 117/250 & 46\\(\\,\\)8\\% & 124 & 0.71–218 & 0.45 \\\\ LLIN group & & & & & & & & & \\\\ Chlorfenapy-pyrethroid & 231/1475 & 157\\(\\,\\)\\% & 0\\(\\,\\)47 & 0\\(\\,\\)32\\(\\,\\)0\\(\\,\\)669 & 0\\(\\,\\)0002 & 82/241 & 34\\(\\,\\)0\\% & 0.71 & 0.40–126 & 0.24 \\\\ LLIN group & & & & & & & & & \\\\\n", - "**18 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 576/14/849 & 38\\(\\,\\)7\\% & 1 (ref) & – & – & 118/25 & 46\\(\\,\\)8\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 564/14/83 & 38\\(\\,\\)2\\% & 0\\(\\,\\)97 & 0\\(\\,\\)69\\(\\,\\)13\\(\\,\\)07 & 0\\(\\,\\)87 & 108/245 & 44\\(\\,\\)1\\% & 0.84 & 0.40–179\n", - "\n", - "\n", - "participants of any age had 53% lower odds of malaria infection at 6 months and 40% lower odds at 18 months after LLIN distribution, and were exposed to a 66% reduction in entomological inoculation rate compared with those living in clusters that received pyrethroid-only LLINs. Similar gains were not observed with the pyriproxyfen-pyrethroid LLIN, with a small reduction in malaria incidence in the first year of the study that was attenuated in year 2, and no effect on malaria infection prevalence in either year, compared with the pyrethroid-only reference group. However, a 58% reduction in indoor entomological inoculation rate was detected with the pyriproxyfen-pyrethroid LLIN. Both dual active-ingredient LLINs provided a similar safety profile compared with standard pyrethroid-only LLINs, with short-lasting skin irritation and facial burning (commonly associated with the pyrethroid alpha-Cybermethrin) most frequently reported in participants using pyrethroid-only LLINs and pyriproxyfen-pyrethroid LLINs. A similar observation has been reported in another randomised controlled trial evaluating the same LLINs, and this is likely to be associated with the high concentration of alpha-Cybermethrin in those nets compared with the chlorfenapy-pyrethroid LLINs.\n", - "\n", - "To our knowledge, this is the second cluster-randomised trial to provide strong evidence of increased efficacy of chlorfenapy-pyrethroid LLINs relative to pyrethroid-only LLINs for malaria control in areas with pyrethroid-resistant vectors. Chlorfenapyr insecticide on nets has already shown improved control of pyrethroid-resistant _An gambiae_ in laboratory and semi-field experimental huts against resistant malaria vectors.3- The previous trial in Tanzania reported a malaria case incidence reduction of 44%, a 55% decrease in odds of malaria prevalence, and 85% reduction in entomological inoculation rate compared with the pyrethroid-only group, consistent with these results, despite the differing malaria vector populations and intensity of pyrethroid resistance in the mosquitoes.4 In both trials, per-protocol analyses suggested that individuals living in the chlorfenapy-pyrethroid clusters benefited regardless of whether they were using a study net, suggesting a community effect of the net, which was likely to be obtained by the overall reduction of mosquito density, which remained considerably lower than in the pyrethroid-only group in both years of this trial after net distribution. Community effect is also indicated by the reduction in both indoor and outdoor entomological indices in the chlorfenapy-pyrethroid group in the present study.\n", - "\n", - "Similar to the trial in Tanzania,4 the pyriproxyfen-pyrethroid LLINs we tested did not provide additional protection against malaria infection or disease compared with pyrethroid-only LLINs. However, there was evidence of an effect on indoor transmission, with the strongest effect seen in the first year after net distribution. Tino and colleagues5 have previously reported a 12% reduction in malaria incidence and 49% reduction in entomological \n", - "inoculation rate with a pyriproxyfen-pyrethroid LLIN compared with pyrethroid-only LLINs over 18 months in a stepped-wedge randomised trial in Burkina Faso. The different study design, length of follow-up, and brand of net might explain the differences seen between the two studies. In Benin, laboratory and semi-field experimental hut studies have shown the superior efficacy of pyriproxyfen-pyrethroid nets on entomological indicators compared with standard pyrethroid-only LLINs,2,3 and are consistent with the decrease in indoor vector density observed in our trial. However, the decrease in indoor vector density did not translate into significant disease reduction, suggesting that a larger effect on malaria transmission (entomological inoculation rate) is crucial to provide community protection. Although lower net usage in the pyriproxyfen-pyrethroid LLIN group could have partially contributed to the lack of effect, we are also assessing textile durability, sterilisation effects, and chemical content of pyriproxyfen-pyrethroid LLINs to fully understand these results.\n", - "\n", - "With several trials now showing the superior efficacy of next-generation LLINs over pyrethroid-only nets, the importance of developing new active ingredients to use on nets in the future is brought to the fore. The distribution of next-generation LLINs across sub-Saharan Africa has already begun, with the development of the brands of chlorfenapry-pyrethroid nets underway,3 as well as the development of chlorfenapry product formulations for indoor residual spraying.3 Although chlorfenapry-pyrethroid nets offer a superior alternative to pyrethroid-only nets in areas of pyrethroid resistance, to preserve their effectiveness optimal resistance-management strategies should be used. There was no evidence of the development of resistance to chlorfenapry during the 2 years of this trial; however, the wide-scale deployment of one type of insecticide risks the rapid development of resistance, which could result in a similar situation to the current widespread resistance to pyrethroids. The nets should be deployed ideally alongside other insecticides as part of a strategy aimed to reduce selection pressure for development of resistance in mosquito vectors. Given the significant effect of the pyriproxyfen-pyrethroid LLINs on malaria transmission during the first year after net distribution, additional studies are necessary to evaluate the potential value of active ingredients such as pyriproxyfen, which are not primarily intended to kill resistant adult mosquitoes but rather to sterilise them. There might still be a role for these hormone growth-regulator insecticides in combination with other active ingredients for net treatment in long-term resistance management.\n", - "\n", - "If WHO policy recommendations are made on the basis of this trial's results, future chlorfenapry-pyrethroid nets might not have to undergo the rigorous trial testing that Interceptor G2 has. Caution should, however, be taken to assess the comparative efficacy, quality, and durability of the second-in-class chlorfenapry-pyrethroid nets as they might use different concentrations of chlorfenapry, different pyrethroids, or different net materials. Considering the time and resources required to generate evidence of epidemiological effect using randomised trials, non-inferiority experimental hut trials, recently proposed by WHO,3 might be a useful alternative for second-in-class chlorfenapry-pyrethroid LLINs. Further work to investigate the capacity of such entomological studies to predict the performance of the trial nets against clinical malaria is ongoing.3\n", - "\n", - "Footnote 3: endnote: [https://www.thelanct.com/Vol.401](https://www.thelanct.com/Vol.401). February 11, 2023\n", - "\n", - "Our study has some limitations. First, net ownership and use were high throughout the study; however, this did not always equate to study net use, which was approximately 60% at 2 years after net distribution, with overall usage of greater than 80%. Similar findings have been observed in other bednet trials, and probably indicate populations choosing to discard damaged nets when other nets are readily available. Second, the three types of nets were not completely identical and differences in textile material and size might have resulted in differential net usage between the groups. As our net use indicator was primarily self-reporting, it is also possible that net usage was overestimated. Third, our primary measure of incidence was based on active detection, involving visits every 2 weeks or every month. The passive data collected alongside the trial suggests that this frequency of visit resulted in some cases being missed, meaning the absolute effect of the nets might be greater than reported here. However, the relative effect of the nets remained similar when the active and passive data were combined. Finally, cost-effectiveness was not assessed; however, the trial in Tanzania' showed that dual active-ingredient LLINs can be highly cost-effective and even cost-saving compared with pyrethroid-only LLINs when providing sufficient protection.\n", - "\n", - "New classes of vector control interventions currently require clinical trial evaluation in two different geographical settings, after 24 months of community use.4 Currently, the only class of next-generation LLIN to receive a WHO recommendation are the PBO synergism nets. However, previous publications have shown concerns about the durability of these nets.5 This trial provides the second key evidence for the effectiveness of chlorfenapry-pyrethroid nets in an area with pyrethroid-resistant vectors and will therefore support a WHO policy recommendation. However, the effect of the nets was reduced in the second year of the trial, and there is no evidence for the efficacy of the nets in their third year of use. Many studies report that the durability of nets is much less than the 3 years required to be designated as long lasting.5 The next-generation LLINs might face the same problems of fabric integrity and durability of insecticidal content unless standards of manufacture are improved. Different channels of distribution (eg, school-based, antenatal care visits, or expanded programme immunisation visits) could play a key role in maintaining high levels of net use in communities.5\n", - "Although generating this evidence to support a WHO recommendation for another class of bednet is a key turning point in malaria control, without new insecticides and new ways to deploy them, we risk repeating the mistakes of the past. Now is the time for more innovation and less complacency.\n", - "\n", - "header: Abstract\n", - "\n", - "Efficacy of pyriproxyfen-pyrethroid long-lasting insecticidalnets (LLINs) and chlorfenapyr-pyrethroid LLINs compared with pyrethroid-only LLINs for malaria control in Benin: a cluster-randomised, superiority trial\n", - "\n", - "Manfred Accomphesi\n", - "\n", - "\n", - "Background New classes of long-lasting insecticidal nets (LLINs) combining mixtures of insecticides with different modes of action could put malaria control back on track after rebounds in transmission across sub-Saharan Africa. We evaluated the relative efficacy of pyriproxyfen-pyrethroid LLINs and chlorfenapyr-pyrethroid LLINs compared with standard LLINs against malaria transmission in an area of high pyrethroid resistance in Benin.\n", - "\n", - "header: Procedures\n", - "\n", - "The nets tested in the trial were: Royal Guard (Disease Control Technologies, Greer, SC, USA), polyethylene netting (I20 deniers incorporating 220 mg/m2 pyriproyfen and 220 mg/m2 alpha-cypermethrin); Interceptor G2 (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 chlorfenapyr and 100 mg/m2 alpha-cypermethrin); and the reference net, Interceptor (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 of alpha-cypermethrin). Nets were distributed in collaboration with the Benin National Malaria Control Program. Households were asked to collect their nets from a central point and received one net per every two residents in their household, rounded up for odd numbers. Nets already in houses were not removed but households were encouraged to use the new study nets. Additionally, net hang-up campaigns to encourage net use took place at 1 month and 7 months after distribution. Net coverage surveys to assess net ownership and usage were done at 1, 9, and 24 months after distribution. Throughout the follow-up period, children enrolled in the analysis cohort and participants enrolled in the cross-sectional surveys were also asked about their net use.\n", - "\n", - "Insecticide content at baseline was assessed on 30 randomly selected new nets per LLIN brand, by gas chromatography with Flame Ionisation Detection, at the\n", - "Centre Wallon de Recherches Agronomiques, Gembloux, Belgium. The insecticidal and physical durability of the study nets is being assessed in a separate study.\n", - "\n", - "Due to the COVID-19 pandemic, there was a 3-month gap between the distribution of the nets and the enrolment of children in the cohort. At enrolment and at 1 year after distribution (April, 2021), children were treated with antimalarial drugs (atremether-lumefantrinity to clear any underlying infection. The cohort was monitored from August, 2020, to April, 2022, a 21-month period, which encompassed the first 2 years after net distribution. Study nurses visited children every 2 weeks during the transmission season (April-October) and every 1 month in the dry season (November-March). At each visit, children were clinically examined and if they were febrile or had a history of fever in the past 48 h, they were tested for malaria using a malaria rapid diagnostic test. If the test was positive, the child was treated with artemether-lumefantrine, according to national guidelines.\n", - "\n", - "During cross-sectional surveys, all participants were tested for malaria using a malaria rapid diagnostic test and received treatment if the test was positive, and children younger than 5 years were tested for anaemia. Information regarding net ownership and usage, and other household-level indicators were collected at the same time.\n", - "\n", - "Entomological monitoring was also delayed and took place every 3 months between June, 2020, and April, 2022. Volunteers recruited from study clusters collected mosquitoes that landed on their legs between 1900 h and 0700 h for 1 night at four randomly selected houses in each cluster at each timepoint. Mosquitoes were morphologically identified to species and a subsample of _Anopheles_ spp was tested for molecular species using PCR.(r) A random sample of _Anopheles_ spp (up to 30% from each nightly catch in each cluster) were tested for sporozoites using the ELISA circumsporozoite protein technique.(r)\n", - "\n", - "header: Contributions\n", - "\n", - "NP, JC, and CN conceived and designed the study, with contributions from MR, IK, LAM, and MCA, JC and MA led the development of the analysis plan, with input from BA, Aso, and NP, MA, CA, JC, NP, FT, and MCA coordinated the trial implementation with local and national authorities, RA, and AO-H. MA, BF, HA, Aso, and LA led the data collection in the field with and Aso, and AP, each of them, MCA, JC, and NP and NP. Also, BC, BA, and KAB led the molecular laboratory work.\n", - "\n", - "header: Methods\n", - "\n", - "We conducted a cluster-randomised, superiority trial in Zou Department, Benin. Clusters were villages or groups of villages with a minimum of 100 houses. We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (I:1:1): to receive nets containing either pyriproxyfen and alpha-Cypermethrin (pyrethroid), chlorfenapyr and alpha-Cypermethrin only (reference). Households received one LLIN for every two people. The field team, laboratory staff, analyses team, and community members were masked to the group allocation. The primary outcome was malaria case incidence measured over 2 years after net distribution in a cohort of children aged 6 months-10 years, in the intention-to-treat population. This study is ongoing and is registered with ClinicalTrials.gov, NCT03931473.\n", - "\n", - "Findings Between May 23 and June 24, 2019, 53 854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54030 households in an updated census. A cross-sectional survey showed that study LLIN usage was highest 9 months after distribution (5532 [76 * 986] of 7206 participants), but decreased by 24 months (4032 [60 * 696] of 6654). Mean malaria incidence over 2 years after LLIN distribution was 1-03 cases per child-year (95% CI 0 * 96-1 * 09) in the pyrethroid-only LLIN reference group. 0 * 84 cases per child-year (0.78-0 * 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 * 86, 95% CI 0 * 65-1* 14; p=0 * 28), and 0 * 56 cases per child-year (0 * 51-0 * 61) in the chlorfenapyr-pyrethroid LLIN group (HR 0 * 54, 95% CI 0 * 42-0 * 70; p<0 * 0001).\n", - "\n", - "Interpretation Over 2 years, chlorfenapyr-pyrethroid LLINs provided greater protection from malaria than pyrethroid-only LLINs in an area with pyrethroid-resistant mosquitoes. Pyriproxyfen-pyrethroid LLINs conferred protection similar to pyrethroid-only LLINs. These findings provide crucial second-trial evidence to enable WHO to make policy recommendations on these new LLIN classes. This study confirms the importance of chlorfenapyr as an LLIN treatment to control malaria in areas with pyrethroid-resistant vectors. However, an arsenal of new active ingredients is required for successful long-term resistance management, and additional innovations, including pyriproxyfen, need to be further investigated for effective vector control strategies.\n", - "\n", - "header: Methods\n", - "\n", - "We conducted a three-group, cluster-randomised, superiority trial in three districts (Cove, Zagnanado, and Ouinhi) in Zou Department, central Benin. Malaria is highly endemic in the region, with a peak during the wet season (May-October). The main vector control strategy in the study area is use of pyrethroid-only LLINs distributed en masse once every 3 years, and through routine service delivery by antenatal clinics and vaccination programmes. The primary vectors in the setting are _Anopheles coluzzi_ and _Anopheles gambiae_. There is a high intensity of pyrethroid resistance in the main local vector populations.11\n", - "\n", - "A demographic census of all 123 villages in the study area was done in June, 2019. Clusters consisted of villages, or several villages. To reduce contamination between study groups, clusters consisted of a core (minimum 100 households) surrounded by a buffer, ensuring that core areas of neighbouring clusters were separated by at least 1000 m. Households in the buffer and core received the intervention, but measurement of outcomes only took place in core areas. A detailed description of the study protocol is published elsewhere.\"\n", - "\n", - "Ethics approval was obtained from the Benin Ministry of Health ethics committee (6/30/MS/DC/SGM/DRFMT/CNERS/SA), the London School of Hygiene & Tropical Medicine ethics committee (16237), and the WHO Research Ethics Review Committee (ERC.0003153). The trial was independently monitored by a data safety monitoring board and a trial steering committee.\n", - "\n", - "Epidemiological effect was estimated through measuring malaria case incidence in the 2 years after net distribution by active case detection in a cohort of children. A cohort of approximately 30 children aged 6 months-9 years randomly selected (by simple random sampling using a random number generator) from each cluster (1800 in total) was enrolled in July, 2020. Children were eligible for inclusion if they were permanent residents in the cluster, had no serious illnesses, and written informed consent was obtained from their guardians.\n", - "\n", - "Malaria infection prevalence (in all ages) was measured by cross-sectional surveys at 6 months and 18 months after net distribution. 72 individuals residing in the core of each cluster were randomly selected (using a random number generator) from the census for each cross-sectional survey. Each prevalence surveyed collected data on malaria infection, measured using malaria rapid diagnostic tests (CareStart malaria HRP2/PLDH [pf/pan] combo, DiaSy, UK), net ownership and use, sex, and household assets (as a proxy for socioeconomic status).\n", - "\n", - "Entomological effects were measured using human landing catches in four randomly selected houses every 3 months in each cluster. Insecticide resistance intensity was measured in two clusters per group (six clusters total) at baseline and in each follow-up year.\n", - "\n", - "Written informed consent was obtained from all participants, or from guardians for participants younger than 18 years. Assent was sought for children aged between 10 and 18 years. Written consent was also obtained from volunteer mosquito collectors who were all aged 18 years or older and who were vaccinated against yellow fever. All participation was voluntary, and participants could withdraw at any time. Study investigators sought consent in French or local languages.\n", - "\n", - "header: Funding UNITAID, The Global Fund.\n", - "\n", - "Pyrethroid-treated long-lasting insecticidal nets (LLINs) are the main malaria prevention intervention in sub-Saharan Africa and have been the major contributor to the estimated 1 * 5 billion malaria cases and 7 * 6 million malaria deaths averted in the past two decades. However, since 2015, the decline in malaria cases has stalled, and between 2019 and 2020, a rebound in malaria transmission was reported in some areas of sub-Saharan Africa.1 This rebound is likely to be a consequence of the continued spread of resistance to pyrethroid insecticides in malaria-transmitting mosquitoes, coinciding with a plateau in malaria control investment, leading to suboptimal coverage of interventions. Urgent actions are needed to prevent malaria resurgences, which were previously observed in sub-Saharan Africa in the 1980s after malaria control measures were scaled down.2\n", - "In the past 10 years, new insecticide-treated nets containing non-pyrethroid insecticides and insecticide synergists, in combination with pyrethroids, have been shown to be safe and efficacious against malaria mosquito vectors.14 The first net combined a pyrethroid insecticide and the synergistic piperonyl butoxide (PBO) and, following a randomised controlled trial,1 received a WHO policy recommendation in 2017. Other next-generation LLINs have shown encouraging results against resistant vectors in laboratory and small-scale entomological studies.47 One of these nets is a dual active-ingredient LLIN combining a pyrethroid and a pyrrole (chlorfenapyr). Both insecticides lead to mosquito mortality, with chlorfenapyr disrupting the production of cellular energy rather than targeting the nervous system, as pyrethroids do. Another dual active-ingredient LLIN combines a pyrethroid with an insect growth regulator (pyriprosyfen), which leads to sterility in exposed adult mosquitoes.\n", - "\n", - "The first randomised trial of these two products was conducted in Tanzania and showed that the chlorfenapyr-pyrethroid LLINs nearly halved malaria infection over 2 years in villages that received chlorfenapyr-pyrethroid LLINs compared with villages that received pyrethroid-only LLINs. PBO-pyrethroid LLINs were consistently found to be more effective than pyrethroid-only LLINs; however, the duration of the superior effect varied from 12 months to 21 months according to the different trials.\n", - "\n", - "header: Table 1: Baseline characteristics\n", - "footer: Data are n or %; n/N unless otherwise stated. EIR=entomological inoculation rate. LLIN=long-lasting insecticidal net. *Proportion of households in the poorest tercile based on the wealth index of the entire study area. †Anaemia defined as haemoglobin concentration of <10 g/dL. ‡Malaria vectors included Anopheles gambiae, Anophelesfunestus, and Anopheles nili\n", - "columns: ['Unnamed: 0_level_0 - Clusters', 'Pyriproxyfen-pyrethroid LLIN group - Clusters', 'Chlorfenapyr-pyrethroid LLIN group - Clusters', 'Pyrethroid-only LLIN group - Clusters']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of clusters\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"20\",\"Pyrethroid-only LLIN group - Clusters\":\"20\"},\"1\":{\"Unnamed: 0_level_0 - Clusters\":\"Total population in core and buffer areas\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"74822\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"70989\",\"Pyrethroid-only LLIN group - Clusters\":\"69239\"},\"2\":{\"Unnamed: 0_level_0 - Clusters\":\"Mean population in core area of clusters (range)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"1096.1 (225-4524)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"1120.5 (243-5040)\",\"Pyrethroid-only LLIN group - Clusters\":\"1058.1 (252-5217)\"},\"3\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of people per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"4.0 (2.3)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"3.9 (2.3)\",\"Pyrethroid-only LLIN group - Clusters\":\"4.1 (2.4)\"},\"4\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of sleeping spaces per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"2.2 (1.2)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"2.1 (1.1)\",\"Pyrethroid-only LLIN group - Clusters\":\"2.2 (1.2)\"},\"5\":{\"Unnamed: 0_level_0 - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyrethroid-only LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\"},\"6\":{\"Unnamed: 0_level_0 - Clusters\":\"Low socioeconomic status*\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"35.8%; 529\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"36.2%; 533\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"29.0%; 431\\/1487\"},\"7\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN ownership (at least one LLIN in the household)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"96.4%; 1426\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"97.1%; 1431\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"95.1%; 1415\\/1488\"},\"8\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN usage in all age groups the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"95.8%; 1312\\/1370\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"94.9%; 1258\\/1326\",\"Pyrethroid-only LLIN group - Clusters\":\"96.5%; 1343\\/1392\"},\"9\":{\"Unnamed: 0_level_0 - Clusters\":\"Malaria infection prevalence in all age groups\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"43.1%; 636\\/1475\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"40.7%; 598\\/1468\",\"Pyrethroid-only LLIN group - Clusters\":\"46.5%; 690\\/1485\"},\"10\":{\"Unnamed: 0_level_0 - Clusters\":\"Anaemia prevalence in children aged 6 months-4 years\\u2020\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"53.3%; 136\\/255\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"53.3%; 131\\/246\",\"Pyrethroid-only LLIN group - Clusters\":\"50.2%; 122\\/243\"},\"11\":{\"Unnamed: 0_level_0 - Clusters\":\"Entomological characteristics\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Pyrethroid-only LLIN group - Clusters\":\"Entomological characteristics\"},\"12\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night indoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"32.9 (28.9)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"21.6 (21.0)\",\"Pyrethroid-only LLIN group - Clusters\":\"29.2 (25.3)\"},\"13\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night outdoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20.3 (17.6)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"16.4 (17.4)\",\"Pyrethroid-only LLIN group - Clusters\":\"20.6 (20.2)\"},\"14\":{\"Unnamed: 0_level_0 - Clusters\":\"Indoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.62 (0.93)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.48 (0.65)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.96 (1.18)\"},\"15\":{\"Unnamed: 0_level_0 - Clusters\":\"Outdoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.27 (0.45)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.17 (0.44)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.33 (0.45)\"},\"16\":{\"Unnamed: 0_level_0 - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyrethroid-only LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\"},\"17\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of children younger than 5 years\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"52.3%; 316\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"50.6%; 304\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"53.6%; 322\\/601\"},\"18\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of female children\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"47.2%; 285\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"48.4%; 291\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"48.8%; 293\\/601\"},\"19\":{\"Unnamed: 0_level_0 - Clusters\":\"Net usage the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"99.0%; 598\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"98.7%; 593\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"99.2%; 596\\/601\"}}\n", - "\n", - "header: Study design and participants: Randomisation and masking\n", - "\n", - "We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (1:1:1), to receive nets containing either pyriproxyfen and alpha-cypermethrin (pyrethroid), chlorfenapyr and alpha-cypermethrin, or alpha-cypermethrin only (reference). Restricted randomisation was used to ensure balanced cluster allocation between study groups with respect to population size, malaria infection prevalence (measured in the baseline survey), district (n=3), and socioeconomic status.\n", - "\n", - "To mask the net types from the participants and the field workers, the nets were designed to look as similar as possible. Each net was rectangular, was requested to be the same size (1-8 m length, 1-9 m width, and 1-8 m height), and blue. To differentiate the nets in the field, a colour-coded loop was attached to the net. All data analyses were performed masked.\n", - "\n", - "header: Table 2: Malaria case incidence in children aged 6 months–10 years per year of follow-up and overall (including active visits only)\n", - "footer: Each intervention was compared with the pyrethroid-only LLIN group for the same timepoint. LLIN=long-lasting insecticidal net. *A p value of <0·025 was considered significant after Bonferroni correction\n", - "columns: ['Unnamed: 0_level_0 - Overall', 'Number of clinical malaria episodes - Overall', 'Child- years of follow-up - Overall', 'Incidence, cases per child-year (95% Cl) - Overall', 'Hazard ratio - Overall', '95%Cl - Overall', 'p value* - Overall']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"897\",\"Child- years of follow-up - Overall\":\"874.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.03 (0.96-1.09)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"1\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"744\",\"Child- years of follow-up - Overall\":\"883.8\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.84 (0.78-0.90)\",\"Hazard ratio - Overall\":\"0.86\",\"95%Cl - Overall\":\"0.65-1.14\",\"p value* - Overall\":\"0.28\"},\"2\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"494\",\"Child- years of follow-up - Overall\":\"887.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.56 (0.51-0.61)\",\"Hazard ratio - Overall\":\"0.54\",\"95%Cl - Overall\":\"0.42-0.70\",\"p value* - Overall\":\"<0.0001\"},\"3\":{\"Unnamed: 0_level_0 - Overall\":\"Year 1\",\"Number of clinical malaria episodes - Overall\":\"Year 1\",\"Child- years of follow-up - Overall\":\"Year 1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 1\",\"Hazard ratio - Overall\":\"Year 1\",\"95%Cl - Overall\":\"Year 1\",\"p value* - Overall\":\"Year 1\"},\"4\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"267\",\"Child- years of follow-up - Overall\":\"344.4\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.77 (0.69-0.87)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"5\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"211\",\"Child- years of follow-up - Overall\":\"342.7\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.62 (0.54-0.70)\",\"Hazard ratio - Overall\":\"0.83\",\"95%Cl - Overall\":\"0.51-1.35\",\"p value* - Overall\":\"0.46\"},\"6\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"124\",\"Child- years of follow-up - Overall\":\"349.2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.36 (0.30-0.42)\",\"Hazard ratio - Overall\":\"0.46\",\"95%Cl - Overall\":\"0.30-0.72\",\"p value* - Overall\":\"0.0005\"},\"7\":{\"Unnamed: 0_level_0 - Overall\":\"Year 2\",\"Number of clinical malaria episodes - Overall\":\"Year 2\",\"Child- years of follow-up - Overall\":\"Year 2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 2\",\"Hazard ratio - Overall\":\"Year 2\",\"95%Cl - Overall\":\"Year 2\",\"p value* - Overall\":\"Year 2\"},\"8\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"630\",\"Child- years of follow-up - Overall\":\"529.9\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.19 (1.10-1.29)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"9\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"533\",\"Child- years of follow-up - Overall\":\"541.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.98 (0.90-1.07)\",\"Hazard ratio - Overall\":\"0.88\",\"95%Cl - Overall\":\"0.68-1.13\",\"p value* - Overall\":\"0.31\"},\"10\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"370\",\"Child- years of follow-up - Overall\":\"538.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.69 (0.62-0.76)\",\"Hazard ratio - Overall\":\"0.57\",\"95%Cl - Overall\":\"0.45-0.73\",\"p value* - Overall\":\"<0.0001\"}}\n", - "\n", - "header: Table 3: Malaria infection and anaemia prevalence in the study population at 6 months and 18 months after net distribution (intention-to-treat analysis)\n", - "footer: Anaemia was defined as a haemogloblin concentration of <10 g/dL. LLIN=long-lasting insecticidal net. OR=odds ratio. *A p value of <0·025 was considered significant after Bonferroni correction\n", - "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution', 'Malaria infection - n/N - 6 months after net distribution', 'Malaria infection - Prevalence - 6 months after net distribution', 'Malaria infection - OR - 6 months after net distribution', 'Malaria infection - 95% Cl - 6 months after net distribution', 'Malaria infection - p value* - 6 months after net distribution', 'Anaemia in children younger than 5 years - n/N - 6 months after net distribution', 'Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution', 'Anaemia in children younger than 5 years - OR - 6 months after net distribution', 'Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution', 'Anaemia in children younger than 5 years - p value* - 6 months after net distribution']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"412\\/1471\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"28.0%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"99\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"41.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"394\\/1463\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"26.9 %\",\"Malaria infection - OR - 6 months after net distribution\":\"0.92\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.63-1.35\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.67\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"117\\/250\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.24\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.71-2.18\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.45\"},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"231\\/1475\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"15.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.47\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.32-0.69\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0002\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"82\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"34.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.71\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.26\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0-24\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - p value* - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"18 months after net distribution\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"576\\/1489\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/252\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"564\\/1478\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.2%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.97\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.69-1.37.\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.87\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"108\\/245\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"44.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.84\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.79\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.65\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"414\\/1483\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"27.9%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.60\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.43-0.85\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0041\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/246\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"48.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.08\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.51-2.28\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.84\"}}\n", - "\n", - "header: Introduction: Added value of this study\n", - "\n", - "To our knowledge, this is the second study aiming to compare the efficacy of the next generation of LLINs combining _p_iprosyfen or chlorfenapyr and pyrethroid versus standard pyrethroid-only LLINs, and the first of its kind to be conducted in west Africa. This trial confirmed the superior efficacy of chlorfenapyr-pyrethroid LLINs, in terms of malaria case incidence, prevalence, and transmission in children, over 2 years of use in the community, in an area of moderate malaria transmission and with high insecticide resistance intensity in malaria vectors, in Benin. However, pyrioxyfen-pyrethroid LLINs did not offer additional protection against malaria outcomes compared with pyrethroid-only LLINs.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Cove\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019},\"S02\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Zagnanado\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019},\"S03\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Ouinhi\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Royal Guard\",\"Insecticide\":\"pyriproyfen, alpha-cypermethrin\",\"Concentration_initial\":\"220 mg\\/m2, 220 mg\\/m2\"},\"N02\":{\"Net_type\":\"Interceptor G2\",\"Insecticide\":\"chlorfenapyr, alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2, 100 mg\\/m2\"},\"N03\":{\"Net_type\":\"Interceptor\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Data sharing: Acknowledgments\n", - "\n", - "This trial was funded by a grant to the London School of Hygiene & Tropical Medicine from UNITAD and The Global Fund via the Innovative Vector Control Consortium. This trial is part of a larger project. The New Nets project: We thank the communities from the three study districts (Cow, Zagnanado, Ouinhi), particularly the participants, children and their parents, community health workers, staff in health clinics, and the regional study team. We thank colleagues and staff at the Centre de Recherche Entomologique de Cotonou and those at the National Malaria Control Program. We also thank the trial system committee, the data safety monitoring board, and Charles Dickinson (School of Epidemiology and Public Health, University of Ottawa, Ottawa, ON, Canada) for supporting the mapping and cluster delineation.\n", - "\n", - "header: Role of the funding source\n", - "\n", - "The funders of the study had no role in study design, data collection, data analysis, data interpretation, writing of the report, or in the decision to submit for publication.\n", - "\n", - "header: Outcomes\n", - "\n", - "The primary outcome was malaria case incidence (infrared frontal temperature >37.5degC or reported fever in the previous 48 h, and positive malaria rapid diagnostic test) in children enrolled in the active case detection cohort in the 2 years after net distribution. Visits of children in the cohort at health facilities were monitored and the results of malaria rapid diagnostic tests and any treatment given were recorded. However, it was difficult to assess with certainty if malaria rapid diagnostic tests were used only if the child was symptomatic (as our protocol specified); therefore, the passive data was not included in the primary analyses.\n", - "\n", - "Secondary clinical outcomes were malaria infection prevalence in all age groups and anaemia (defined as haemoglobin concentration <10 g/dL) prevalence in children aged 5 years or younger at 6 months and 18 months after net distribution.\n", - "\n", - "Type and duration of adverse events related to usage of nets were recorded using a prespecified questionnaire at each cohort visit and during net usage and cross-sectional surveys. Data on hospitalisation and death in children in the cohort were collected by interviewing the child's guardian and reviewing the hospital record, following receipt of consent.\n", - "\n", - "The primary entomological outcome was entomological inoculation rate, measured as the mean number of _Plasmodium_ spp infective malaria vectors collected per person per night measured indoors and outdoors. Secondary entomological outcomes were vector density (number of mosquitoes caught per person per night), sporozoite rate, and species composition. Centers for Disease Control and Prevention bottle bioassays were performed by exposing adult female _An gambiae_, collected as larvae, to alpha-cypermethrin for 30 min (1, 2, 5, and 10 times the diagnostic dose), and to chlorfenrapy (100 mg/bottle) and pyriproxyfen (100 mg/bottle) for 60 min each year.(r) Mortality was recorded at 30 min for all four doses of alpha-cypermethrin (insectidic resistance intensity measurement), and at 24, 48, and 72 h after exposure for chlorfenapyr. The reduction in fecundity rate induced by pyriproxyfen relative to unexposed mosquitoes was assessed by ovarian dissection, 3 days after pyriproxyfen exposure. Other outcomes included in the protocol (parity, resting behaviour, survivorship, and other resistance measures) are still to be analysed and will be published elsewhere.\n", - "\n", - "header: Methods\n", - "\n", - "Data collected for the study, including deidentified participant data and data dictionaries, might be made available at the end of the third year of trial follow-up upon reasonable request to the corresponding author.\n", - "\n", - "header: Statistical analysis\n", - "\n", - "The sample size calculations for epidemiological data collection were calculated using the method of Hayes and Moulton.(r) The study was designed to detect a 30% difference in malaria case incidence, assuming a control group incidence of 1 malaria case per child-year and a coefficient of variation of 0-3 between clusters. This design required 20 clusters per group and 25 (20+5 allowing for loss to follow-up) children per cluster followed up for 2 years to give 80% power. Due to the delay in enrolment, which resulted in a shorter follow-up time, the number of children per cluster was increased to 30 (1800 children total). This sample size calculation includes adjustment for multiple testing (allowing for the three groups) using a Bonferroni-corrected two-sided a of 2.5%.\n", - "\n", - "For malaria infection prevalence, it was assumed that the prevalence in the reference group was 40%, with a coefficient of variation between clusters of 0-3. With 72 individuals per cluster, the study had 80% power to detect a 30% lower prevalence in the intervention groups compared with the reference group, using a Bonferroni-corrected a for multiple comparisons.\n", - "\n", - "The primary intention-to-treat analysis was a comparison of incidence of clinical malaria episodes between each dual active-ingredient LLIN group and the\n", - "\n", - "header: Contributions\n", - "\n", - "NP, JC, and CN conceived and designed the study, with contributions from MR, IK, LAM, and MCA, JC and MA led the development of the analysis plan, with input from BA, Aso, and NP, MA, CA, JC, NP, FT, and MCA coordinated the trial implementation with local and national authorities, RA, and AO-H. MA, BF, HA, Aso, and LA led the data collection in the field with and Aso, and AP, each of them, MCA, JC, and NP and NP. Also, BC, BA, and KAB led the molecular laboratory work.\n", - "\n", - "header: Implications of all the available evidence\n", - "\n", - "Given the positive findings, both in Benin and Tanzania, for chlorfenapyr-pyrethroid LLINs, they are likely to become the first WHO-recommended LLINs impregnated with an insecticide class other than pyrethroids. The absence of superior efficacy of pyrioxyfen-pyrethroid LLINs compared with standard pyrethroid-only LLINs is consistent with the results of the previous Tanzania study and calls into question the role of the current pyrioxyfen-pyrethroid LLINs in future malaria vector strategies.\n", - "\n", - "header: Results\n", - "\n", - "Between May 23 and June 24, 2019, 53854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. The households were delineated into 61 clusters, with one subsequently excluded due to extensive seasonal flooding (figure). Baseline cross-sectional epidemiological and entomological surveys were conducted between October and November, 2019 (table 1). The malaria infection prevalence was 43 5% (1924 of 4428 participants, cluster range 15 1-72 796) and population self-reported LLIN usage was 95 7% (3913 of 4088 participants). Cluster demographics and malaria prevalence were similar between groups (table 1). Entomological inoculation rate was 0 68 _Plasmodium_ spp infective bites per person per night (cluster range 0 00-3 80) indoors and 0 26 per person per night (0 00-1 88) outdoors.\n", - "\n", - "Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54 300 households in an updated census, with 97 1% of households receiving at least one net per household. Active ingredients in the new nets were found to be within or higher than the acceptable target limits depending on LLIN brand (appendix p 4). Study net usage was highest (5532 [76 8%] of 7206 participants) at 9 months after distribution, following a second hang-up campaign, but had decreased by 24 months (4032 [60 6%] of 6654). Study net coverage and usage indicators were similar between study groups up to 18 months after net distribution. At 24 months, pyriproxyfen-pyrethroid LLIN usage and ownership was the lowest (appendix pp 5-6). Use of any type of LLIN (study LLINs and others) remained greater than 80% up to 24 months after distribution (appendix p 7).\n", - "\n", - "In the 2283 households that were randomly selected for post-intervention cohort follow-up, 3129 children were eligible, 1829 of whom were randomly selected, and consent was obtained for 1806 (figure). Among the 2849 and 2771 households randomly selected at 6 months and 18 months after LLIN distribution for the malaria prevalence cross-sectional surveys, 4781 (85 1%) of 5620 households consent, with a similar proportion in the two surveys. The remaining households were either not available during the visit (775 [13 8%] of) or declined to participate (64 [1 1%]; appendix p 8).\n", - "\n", - "Children aged 6 months-9 years enrolled for active case detection were monitored for 21 months, for a total follow-up time of 2645 4- child-years at risk. Loss to follow-up was similar between groups (figure). At enrolment, children were balanced on age, sex, and net usage. During the 21-month follow-up period, we detected 2135 malaria cases through active case detection (table 2). The mean malaria case incidence over 21 months of follow-up was 1 03 cases per child-year (95% CI 0 96-1 09) in the pyrethroid-only LLIN reference group, 0 84 cases per child-year (0 78-70 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 86, 95% CI 0 65-1 46; p = 0 - 28), and 0 56 cases per child-year (0 51-0 64) in the chlorfenapry-pyrethroid LLIN group (HR 0 54, 95% CI 0 - 42-0 70; p < 0 0001; table 2). The strongest effect was observed in the first year of follow-up in the chlorfenapry-pyrethroid group (HR 0 46, 95% CI 0 30-0 72; p = 0 - 0005; table 2). When combining active and passive visits, the number of cases detected nearly doubled; however, the effect size in comparison to the reference group was similar for both intervention nets (appendix p 9).\n", - "\n", - "Malaria infection prevalence was 23 5% (1037 of 4409 participants) at 6 months and 34 9% (1554 of 4450) at 18 months after net distribution (table 3). There was strong evidence for a reduction of malaria infection prevalence in the chlorfenapry-pyrethroid LLIN group at 6 months (15 7%; odds ratio [OR] 0 47, 95% CI 0 32-0 69; p = 0 0002) and at 18 months (27 9%; OR 0 60 - 60, 0 - 43-0 85; p = 0 004) compared with the reference group (28 - 0% at 6 months and 38 7% at 18 months; table 3). In the pyriproxyfen-pyrethroid group, there was no evidence for a reduction in malaria prevalence at 6 months (26 9%; OR 0 - 92, 95% CI 0 63-1 35; p = 0 - 67) or 18 months (38 2%; OR 0 97 0, 0 69-1 37; p = 0 87) compared with the reference group. Results were similar for the per-protocol analysis (appendix p 1). There was no evidence of a reduction in moderate to severe anaemia prevalence in either intervention group (table 3). The post-hoc analysis adjusting for covariates used in the randomisation did not change the interpretation of the results (appendix pp 12-13).\n", - "\n", - "\n", - "Adverse events related to study nets were reported in 528 (45-496) of 1162 participants surveyed at 1 month after net distribution. The highest proportion of adverse events was reported in the pyrethroid-only LLIN group (247 [63-8%] of 387 participants), followed by the pyriproyfen-pyrethroid LLIN group (212 [52-5%] of 404) and then the chlorfenapy-pyrethroid LLIN group (69 [18-6%] of 371). Facial burning (392 [33-7%] of 1162 participants), and skin irritation or itchiness (244 [20-9%]) were the most common adverse events in all groups. Adverse events were rare in all three groups at all later timepoints (appendix P 14-15). We recorded 44 serious adverse events (including three deaths) in the cohort children, with 32 (72-7%) documented as severe malaria (11 cases in the pyriproyfen-pyrethroid LLIN group, ten in the chlorfenapy-pyrethroid LLIN group, and 11 in the pyrethroid-only LLIN group). No serious adverse events related to net use were reported.\n", - "\n", - "A total of 259265 mosquitoes were collected over 3840 collection nights indoors and outdoors, of which 20-9% (29814 from indoors and 24436 from outdoors) were malaria vectors, with _An gambiae_ sensu that the most predominant. Overall, indoor entomological inoculation rate was lower in both intervention groups than in the reference group, with a mean entomological inoculation rate of 0-90 infectious bites per night per person in the chlorfenapy-pyrethroid LLIN group (rate ratio [RR] 0-34, 95% CI 0-18-0-62; p=0-0005), 0-12 in the pyriproyfen-pyrethroid LLIN group (RR 0-42, 0-2-3-0-74; p=0-0028), and 0-28 in the pyrethroid-only LLIN group (table 4). Mean indoor vector density appeared to be lower in the chlorfenapy-pyrethroid LLIN group (10-18 bites per person per night, density ratio 0-44, 95% CI 0-2-30-84; p=0-014), and in the pyriproyfen-pyrethroid LLIN group (13-6 bites per person per night, density ratio 0-58, 0-30-1-12; p=0-011) than in the reference group (23-0 bites per person per night, but the latter difference was not statistically significant (table 4). Adjusting for baseline vector density in the models gave similar results (appendix P 16). There was no significant difference in sporozoite rate in any of the intervention groups compared with the reference group (table 4).\n", - "\n", - "Reduction in outdoor entomological inoculation rate compared with the reference group was observed only in the chlorfenapy-pyrethroid LLIN group (RR 0-30, 95% CI 0-13-0-67; p=0-0035; appendix P 17). There was very weak evidence for a reduction in outdoor entomological inoculation rate in the pyriproyfen-pyrethroid LLIN group compared with the pyrethroid-only group (RR 0-58, 0-30-1-13; p=0-11). Similar effects were observed for outdoor vector density for both intervention nets (appendix P 17).\n", - "\n", - "Post-intervention pyrethrold resistance intensity was high across the study groups in _An gambiae_ sensu lato, with mean mortality of 85% or less after exposure to 10 times the diagnostic concentrations of alpha-cypentrohin in year 2 (appendix P 18). No resistance to chlorfenapy was observed during either year after net distribution (appendix P 18). Exposure of _An gambiae_ sensu lato to pyriproyfen led to a high reduction in fecundity rate relative to unexposed control mosquitoes over the 2 years after net distribution (73-2%, 95% CI 62-2-82-4 in year 1, and 76-6%, 66-6-84-9 in year 2).\n", - "\n", - "header: Discussion\n", - "\n", - "This trial assessed the efficacy of two dual active-ingredient LLINs in an area of Benin with malaria vectors that are highly resistant to pyrethroids and found that chlorfenapy-pyrethroid LLINs provided significantly better protection against malaria for up to 2 years after net distribution compared with pyrethroid-only LLINs. Children aged 6 months-10 years living in clusters that received chlorfenapy-pyrethroid LLINs had a 46% lower incidence of malaria over 2 years after LLIN distribution;\n", - "\n", - "\\begin{table}\n", - "\\begin{tabular}{c c c c c c c c c c} & **Malaria infection** & \\multicolumn{6}{c}{**Anaemia in children younger than 5 years**} \\\\ \\hline n/N & Prevalence & OR & 95\\% CI & p valuea & n/N & Prevalence & OR & 95\\% CI & p valuea \\\\ \\hline\n", - "**6 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 412/1471 & 28\\(\\,\\)0\\% & 1 (ref) & – & – & 992/41 & 41\\(\\,\\)1\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 394/1463 & 26\\(\\,\\)9\\% & 0\\(\\,\\)92 & 0\\(\\,\\)\n", - "\n", - "63\\(\\,\\)45 & 0\\(\\,\\)67 & 117/250 & 46\\(\\,\\)8\\% & 124 & 0.71–218 & 0.45 \\\\ LLIN group & & & & & & & & & \\\\ Chlorfenapy-pyrethroid & 231/1475 & 157\\(\\,\\)\\% & 0\\(\\,\\)47 & 0\\(\\,\\)32\\(\\,\\)0\\(\\,\\)669 & 0\\(\\,\\)0002 & 82/241 & 34\\(\\,\\)0\\% & 0.71 & 0.40–126 & 0.24 \\\\ LLIN group & & & & & & & & & \\\\\n", - "**18 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 576/14/849 & 38\\(\\,\\)7\\% & 1 (ref) & – & – & 118/25 & 46\\(\\,\\)8\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 564/14/83 & 38\\(\\,\\)2\\% & 0\\(\\,\\)97 & 0\\(\\,\\)69\\(\\,\\)13\\(\\,\\)07 & 0\\(\\,\\)87 & 108/245 & 44\\(\\,\\)1\\% & 0.84 & 0.40–179\n", - "\n", - "\n", - "participants of any age had 53% lower odds of malaria infection at 6 months and 40% lower odds at 18 months after LLIN distribution, and were exposed to a 66% reduction in entomological inoculation rate compared with those living in clusters that received pyrethroid-only LLINs. Similar gains were not observed with the pyriproxyfen-pyrethroid LLIN, with a small reduction in malaria incidence in the first year of the study that was attenuated in year 2, and no effect on malaria infection prevalence in either year, compared with the pyrethroid-only reference group. However, a 58% reduction in indoor entomological inoculation rate was detected with the pyriproxyfen-pyrethroid LLIN. Both dual active-ingredient LLINs provided a similar safety profile compared with standard pyrethroid-only LLINs, with short-lasting skin irritation and facial burning (commonly associated with the pyrethroid alpha-Cybermethrin) most frequently reported in participants using pyrethroid-only LLINs and pyriproxyfen-pyrethroid LLINs. A similar observation has been reported in another randomised controlled trial evaluating the same LLINs, and this is likely to be associated with the high concentration of alpha-Cybermethrin in those nets compared with the chlorfenapy-pyrethroid LLINs.\n", - "\n", - "To our knowledge, this is the second cluster-randomised trial to provide strong evidence of increased efficacy of chlorfenapy-pyrethroid LLINs relative to pyrethroid-only LLINs for malaria control in areas with pyrethroid-resistant vectors. Chlorfenapyr insecticide on nets has already shown improved control of pyrethroid-resistant _An gambiae_ in laboratory and semi-field experimental huts against resistant malaria vectors.3- The previous trial in Tanzania reported a malaria case incidence reduction of 44%, a 55% decrease in odds of malaria prevalence, and 85% reduction in entomological inoculation rate compared with the pyrethroid-only group, consistent with these results, despite the differing malaria vector populations and intensity of pyrethroid resistance in the mosquitoes.4 In both trials, per-protocol analyses suggested that individuals living in the chlorfenapy-pyrethroid clusters benefited regardless of whether they were using a study net, suggesting a community effect of the net, which was likely to be obtained by the overall reduction of mosquito density, which remained considerably lower than in the pyrethroid-only group in both years of this trial after net distribution. Community effect is also indicated by the reduction in both indoor and outdoor entomological indices in the chlorfenapy-pyrethroid group in the present study.\n", - "\n", - "Similar to the trial in Tanzania,4 the pyriproxyfen-pyrethroid LLINs we tested did not provide additional protection against malaria infection or disease compared with pyrethroid-only LLINs. However, there was evidence of an effect on indoor transmission, with the strongest effect seen in the first year after net distribution. Tino and colleagues5 have previously reported a 12% reduction in malaria incidence and 49% reduction in entomological \n", - "inoculation rate with a pyriproxyfen-pyrethroid LLIN compared with pyrethroid-only LLINs over 18 months in a stepped-wedge randomised trial in Burkina Faso. The different study design, length of follow-up, and brand of net might explain the differences seen between the two studies. In Benin, laboratory and semi-field experimental hut studies have shown the superior efficacy of pyriproxyfen-pyrethroid nets on entomological indicators compared with standard pyrethroid-only LLINs,2,3 and are consistent with the decrease in indoor vector density observed in our trial. However, the decrease in indoor vector density did not translate into significant disease reduction, suggesting that a larger effect on malaria transmission (entomological inoculation rate) is crucial to provide community protection. Although lower net usage in the pyriproxyfen-pyrethroid LLIN group could have partially contributed to the lack of effect, we are also assessing textile durability, sterilisation effects, and chemical content of pyriproxyfen-pyrethroid LLINs to fully understand these results.\n", - "\n", - "With several trials now showing the superior efficacy of next-generation LLINs over pyrethroid-only nets, the importance of developing new active ingredients to use on nets in the future is brought to the fore. The distribution of next-generation LLINs across sub-Saharan Africa has already begun, with the development of the brands of chlorfenapry-pyrethroid nets underway,3 as well as the development of chlorfenapry product formulations for indoor residual spraying.3 Although chlorfenapry-pyrethroid nets offer a superior alternative to pyrethroid-only nets in areas of pyrethroid resistance, to preserve their effectiveness optimal resistance-management strategies should be used. There was no evidence of the development of resistance to chlorfenapry during the 2 years of this trial; however, the wide-scale deployment of one type of insecticide risks the rapid development of resistance, which could result in a similar situation to the current widespread resistance to pyrethroids. The nets should be deployed ideally alongside other insecticides as part of a strategy aimed to reduce selection pressure for development of resistance in mosquito vectors. Given the significant effect of the pyriproxyfen-pyrethroid LLINs on malaria transmission during the first year after net distribution, additional studies are necessary to evaluate the potential value of active ingredients such as pyriproxyfen, which are not primarily intended to kill resistant adult mosquitoes but rather to sterilise them. There might still be a role for these hormone growth-regulator insecticides in combination with other active ingredients for net treatment in long-term resistance management.\n", - "\n", - "If WHO policy recommendations are made on the basis of this trial's results, future chlorfenapry-pyrethroid nets might not have to undergo the rigorous trial testing that Interceptor G2 has. Caution should, however, be taken to assess the comparative efficacy, quality, and durability of the second-in-class chlorfenapry-pyrethroid nets as they might use different concentrations of chlorfenapry, different pyrethroids, or different net materials. Considering the time and resources required to generate evidence of epidemiological effect using randomised trials, non-inferiority experimental hut trials, recently proposed by WHO,3 might be a useful alternative for second-in-class chlorfenapry-pyrethroid LLINs. Further work to investigate the capacity of such entomological studies to predict the performance of the trial nets against clinical malaria is ongoing.3\n", - "\n", - "Footnote 3: endnote: [https://www.thelanct.com/Vol.401](https://www.thelanct.com/Vol.401). February 11, 2023\n", - "\n", - "Our study has some limitations. First, net ownership and use were high throughout the study; however, this did not always equate to study net use, which was approximately 60% at 2 years after net distribution, with overall usage of greater than 80%. Similar findings have been observed in other bednet trials, and probably indicate populations choosing to discard damaged nets when other nets are readily available. Second, the three types of nets were not completely identical and differences in textile material and size might have resulted in differential net usage between the groups. As our net use indicator was primarily self-reporting, it is also possible that net usage was overestimated. Third, our primary measure of incidence was based on active detection, involving visits every 2 weeks or every month. The passive data collected alongside the trial suggests that this frequency of visit resulted in some cases being missed, meaning the absolute effect of the nets might be greater than reported here. However, the relative effect of the nets remained similar when the active and passive data were combined. Finally, cost-effectiveness was not assessed; however, the trial in Tanzania' showed that dual active-ingredient LLINs can be highly cost-effective and even cost-saving compared with pyrethroid-only LLINs when providing sufficient protection.\n", - "\n", - "New classes of vector control interventions currently require clinical trial evaluation in two different geographical settings, after 24 months of community use.4 Currently, the only class of next-generation LLIN to receive a WHO recommendation are the PBO synergism nets. However, previous publications have shown concerns about the durability of these nets.5 This trial provides the second key evidence for the effectiveness of chlorfenapry-pyrethroid nets in an area with pyrethroid-resistant vectors and will therefore support a WHO policy recommendation. However, the effect of the nets was reduced in the second year of the trial, and there is no evidence for the efficacy of the nets in their third year of use. Many studies report that the durability of nets is much less than the 3 years required to be designated as long lasting.5 The next-generation LLINs might face the same problems of fabric integrity and durability of insecticidal content unless standards of manufacture are improved. Different channels of distribution (eg, school-based, antenatal care visits, or expanded programme immunisation visits) could play a key role in maintaining high levels of net use in communities.5\n", - "Although generating this evidence to support a WHO recommendation for another class of bednet is a key turning point in malaria control, without new insecticides and new ways to deploy them, we risk repeating the mistakes of the past. Now is the time for more innovation and less complacency.\n", - "\n", - "header: Abstract\n", - "\n", - "Efficacy of pyriproxyfen-pyrethroid long-lasting insecticidalnets (LLINs) and chlorfenapyr-pyrethroid LLINs compared with pyrethroid-only LLINs for malaria control in Benin: a cluster-randomised, superiority trial\n", - "\n", - "Manfred Accomphesi\n", - "\n", - "\n", - "Background New classes of long-lasting insecticidal nets (LLINs) combining mixtures of insecticides with different modes of action could put malaria control back on track after rebounds in transmission across sub-Saharan Africa. We evaluated the relative efficacy of pyriproxyfen-pyrethroid LLINs and chlorfenapyr-pyrethroid LLINs compared with standard LLINs against malaria transmission in an area of high pyrethroid resistance in Benin.\n", - "\n", - "header: Procedures\n", - "\n", - "The nets tested in the trial were: Royal Guard (Disease Control Technologies, Greer, SC, USA), polyethylene netting (I20 deniers incorporating 220 mg/m2 pyriproyfen and 220 mg/m2 alpha-cypermethrin); Interceptor G2 (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 chlorfenapyr and 100 mg/m2 alpha-cypermethrin); and the reference net, Interceptor (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 of alpha-cypermethrin). Nets were distributed in collaboration with the Benin National Malaria Control Program. Households were asked to collect their nets from a central point and received one net per every two residents in their household, rounded up for odd numbers. Nets already in houses were not removed but households were encouraged to use the new study nets. Additionally, net hang-up campaigns to encourage net use took place at 1 month and 7 months after distribution. Net coverage surveys to assess net ownership and usage were done at 1, 9, and 24 months after distribution. Throughout the follow-up period, children enrolled in the analysis cohort and participants enrolled in the cross-sectional surveys were also asked about their net use.\n", - "\n", - "Insecticide content at baseline was assessed on 30 randomly selected new nets per LLIN brand, by gas chromatography with Flame Ionisation Detection, at the\n", - "Centre Wallon de Recherches Agronomiques, Gembloux, Belgium. The insecticidal and physical durability of the study nets is being assessed in a separate study.\n", - "\n", - "Due to the COVID-19 pandemic, there was a 3-month gap between the distribution of the nets and the enrolment of children in the cohort. At enrolment and at 1 year after distribution (April, 2021), children were treated with antimalarial drugs (atremether-lumefantrinity to clear any underlying infection. The cohort was monitored from August, 2020, to April, 2022, a 21-month period, which encompassed the first 2 years after net distribution. Study nurses visited children every 2 weeks during the transmission season (April-October) and every 1 month in the dry season (November-March). At each visit, children were clinically examined and if they were febrile or had a history of fever in the past 48 h, they were tested for malaria using a malaria rapid diagnostic test. If the test was positive, the child was treated with artemether-lumefantrine, according to national guidelines.\n", - "\n", - "During cross-sectional surveys, all participants were tested for malaria using a malaria rapid diagnostic test and received treatment if the test was positive, and children younger than 5 years were tested for anaemia. Information regarding net ownership and usage, and other household-level indicators were collected at the same time.\n", - "\n", - "Entomological monitoring was also delayed and took place every 3 months between June, 2020, and April, 2022. Volunteers recruited from study clusters collected mosquitoes that landed on their legs between 1900 h and 0700 h for 1 night at four randomly selected houses in each cluster at each timepoint. Mosquitoes were morphologically identified to species and a subsample of _Anopheles_ spp was tested for molecular species using PCR.(r) A random sample of _Anopheles_ spp (up to 30% from each nightly catch in each cluster) were tested for sporozoites using the ELISA circumsporozoite protein technique.(r)\n", - "\n", - "header: Methods\n", - "\n", - "We conducted a cluster-randomised, superiority trial in Zou Department, Benin. Clusters were villages or groups of villages with a minimum of 100 houses. We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (I:1:1): to receive nets containing either pyriproxyfen and alpha-Cypermethrin (pyrethroid), chlorfenapyr and alpha-Cypermethrin only (reference). Households received one LLIN for every two people. The field team, laboratory staff, analyses team, and community members were masked to the group allocation. The primary outcome was malaria case incidence measured over 2 years after net distribution in a cohort of children aged 6 months-10 years, in the intention-to-treat population. This study is ongoing and is registered with ClinicalTrials.gov, NCT03931473.\n", - "\n", - "Findings Between May 23 and June 24, 2019, 53 854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54030 households in an updated census. A cross-sectional survey showed that study LLIN usage was highest 9 months after distribution (5532 [76 * 986] of 7206 participants), but decreased by 24 months (4032 [60 * 696] of 6654). Mean malaria incidence over 2 years after LLIN distribution was 1-03 cases per child-year (95% CI 0 * 96-1 * 09) in the pyrethroid-only LLIN reference group. 0 * 84 cases per child-year (0.78-0 * 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 * 86, 95% CI 0 * 65-1* 14; p=0 * 28), and 0 * 56 cases per child-year (0 * 51-0 * 61) in the chlorfenapyr-pyrethroid LLIN group (HR 0 * 54, 95% CI 0 * 42-0 * 70; p<0 * 0001).\n", - "\n", - "Interpretation Over 2 years, chlorfenapyr-pyrethroid LLINs provided greater protection from malaria than pyrethroid-only LLINs in an area with pyrethroid-resistant mosquitoes. Pyriproxyfen-pyrethroid LLINs conferred protection similar to pyrethroid-only LLINs. These findings provide crucial second-trial evidence to enable WHO to make policy recommendations on these new LLIN classes. This study confirms the importance of chlorfenapyr as an LLIN treatment to control malaria in areas with pyrethroid-resistant vectors. However, an arsenal of new active ingredients is required for successful long-term resistance management, and additional innovations, including pyriproxyfen, need to be further investigated for effective vector control strategies.\n", - "\n", - "header: Funding UNITAID, The Global Fund.\n", - "\n", - "Pyrethroid-treated long-lasting insecticidal nets (LLINs) are the main malaria prevention intervention in sub-Saharan Africa and have been the major contributor to the estimated 1 * 5 billion malaria cases and 7 * 6 million malaria deaths averted in the past two decades. However, since 2015, the decline in malaria cases has stalled, and between 2019 and 2020, a rebound in malaria transmission was reported in some areas of sub-Saharan Africa.1 This rebound is likely to be a consequence of the continued spread of resistance to pyrethroid insecticides in malaria-transmitting mosquitoes, coinciding with a plateau in malaria control investment, leading to suboptimal coverage of interventions. Urgent actions are needed to prevent malaria resurgences, which were previously observed in sub-Saharan Africa in the 1980s after malaria control measures were scaled down.2\n", - "In the past 10 years, new insecticide-treated nets containing non-pyrethroid insecticides and insecticide synergists, in combination with pyrethroids, have been shown to be safe and efficacious against malaria mosquito vectors.14 The first net combined a pyrethroid insecticide and the synergistic piperonyl butoxide (PBO) and, following a randomised controlled trial,1 received a WHO policy recommendation in 2017. Other next-generation LLINs have shown encouraging results against resistant vectors in laboratory and small-scale entomological studies.47 One of these nets is a dual active-ingredient LLIN combining a pyrethroid and a pyrrole (chlorfenapyr). Both insecticides lead to mosquito mortality, with chlorfenapyr disrupting the production of cellular energy rather than targeting the nervous system, as pyrethroids do. Another dual active-ingredient LLIN combines a pyrethroid with an insect growth regulator (pyriprosyfen), which leads to sterility in exposed adult mosquitoes.\n", - "\n", - "The first randomised trial of these two products was conducted in Tanzania and showed that the chlorfenapyr-pyrethroid LLINs nearly halved malaria infection over 2 years in villages that received chlorfenapyr-pyrethroid LLINs compared with villages that received pyrethroid-only LLINs. PBO-pyrethroid LLINs were consistently found to be more effective than pyrethroid-only LLINs; however, the duration of the superior effect varied from 12 months to 21 months according to the different trials.\n", - "\n", - "header: Methods\n", - "\n", - "We conducted a three-group, cluster-randomised, superiority trial in three districts (Cove, Zagnanado, and Ouinhi) in Zou Department, central Benin. Malaria is highly endemic in the region, with a peak during the wet season (May-October). The main vector control strategy in the study area is use of pyrethroid-only LLINs distributed en masse once every 3 years, and through routine service delivery by antenatal clinics and vaccination programmes. The primary vectors in the setting are _Anopheles coluzzi_ and _Anopheles gambiae_. There is a high intensity of pyrethroid resistance in the main local vector populations.11\n", - "\n", - "A demographic census of all 123 villages in the study area was done in June, 2019. Clusters consisted of villages, or several villages. To reduce contamination between study groups, clusters consisted of a core (minimum 100 households) surrounded by a buffer, ensuring that core areas of neighbouring clusters were separated by at least 1000 m. Households in the buffer and core received the intervention, but measurement of outcomes only took place in core areas. A detailed description of the study protocol is published elsewhere.\"\n", - "\n", - "Ethics approval was obtained from the Benin Ministry of Health ethics committee (6/30/MS/DC/SGM/DRFMT/CNERS/SA), the London School of Hygiene & Tropical Medicine ethics committee (16237), and the WHO Research Ethics Review Committee (ERC.0003153). The trial was independently monitored by a data safety monitoring board and a trial steering committee.\n", - "\n", - "Epidemiological effect was estimated through measuring malaria case incidence in the 2 years after net distribution by active case detection in a cohort of children. A cohort of approximately 30 children aged 6 months-9 years randomly selected (by simple random sampling using a random number generator) from each cluster (1800 in total) was enrolled in July, 2020. Children were eligible for inclusion if they were permanent residents in the cluster, had no serious illnesses, and written informed consent was obtained from their guardians.\n", - "\n", - "Malaria infection prevalence (in all ages) was measured by cross-sectional surveys at 6 months and 18 months after net distribution. 72 individuals residing in the core of each cluster were randomly selected (using a random number generator) from the census for each cross-sectional survey. Each prevalence surveyed collected data on malaria infection, measured using malaria rapid diagnostic tests (CareStart malaria HRP2/PLDH [pf/pan] combo, DiaSy, UK), net ownership and use, sex, and household assets (as a proxy for socioeconomic status).\n", - "\n", - "Entomological effects were measured using human landing catches in four randomly selected houses every 3 months in each cluster. Insecticide resistance intensity was measured in two clusters per group (six clusters total) at baseline and in each follow-up year.\n", - "\n", - "Written informed consent was obtained from all participants, or from guardians for participants younger than 18 years. Assent was sought for children aged between 10 and 18 years. Written consent was also obtained from volunteer mosquito collectors who were all aged 18 years or older and who were vaccinated against yellow fever. All participation was voluntary, and participants could withdraw at any time. Study investigators sought consent in French or local languages.\n", - "\n", - "header: Study design and participants: Randomisation and masking\n", - "\n", - "We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (1:1:1), to receive nets containing either pyriproxyfen and alpha-cypermethrin (pyrethroid), chlorfenapyr and alpha-cypermethrin, or alpha-cypermethrin only (reference). Restricted randomisation was used to ensure balanced cluster allocation between study groups with respect to population size, malaria infection prevalence (measured in the baseline survey), district (n=3), and socioeconomic status.\n", - "\n", - "To mask the net types from the participants and the field workers, the nets were designed to look as similar as possible. Each net was rectangular, was requested to be the same size (1-8 m length, 1-9 m width, and 1-8 m height), and blue. To differentiate the nets in the field, a colour-coded loop was attached to the net. All data analyses were performed masked.\n", - "\n", - "header: Table 1: Baseline characteristics\n", - "footer: Data are n or %; n/N unless otherwise stated. EIR=entomological inoculation rate. LLIN=long-lasting insecticidal net. *Proportion of households in the poorest tercile based on the wealth index of the entire study area. †Anaemia defined as haemoglobin concentration of <10 g/dL. ‡Malaria vectors included Anopheles gambiae, Anophelesfunestus, and Anopheles nili\n", - "columns: ['Unnamed: 0_level_0 - Clusters', 'Pyriproxyfen-pyrethroid LLIN group - Clusters', 'Chlorfenapyr-pyrethroid LLIN group - Clusters', 'Pyrethroid-only LLIN group - Clusters']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of clusters\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"20\",\"Pyrethroid-only LLIN group - Clusters\":\"20\"},\"1\":{\"Unnamed: 0_level_0 - Clusters\":\"Total population in core and buffer areas\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"74822\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"70989\",\"Pyrethroid-only LLIN group - Clusters\":\"69239\"},\"2\":{\"Unnamed: 0_level_0 - Clusters\":\"Mean population in core area of clusters (range)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"1096.1 (225-4524)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"1120.5 (243-5040)\",\"Pyrethroid-only LLIN group - Clusters\":\"1058.1 (252-5217)\"},\"3\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of people per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"4.0 (2.3)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"3.9 (2.3)\",\"Pyrethroid-only LLIN group - Clusters\":\"4.1 (2.4)\"},\"4\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of sleeping spaces per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"2.2 (1.2)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"2.1 (1.1)\",\"Pyrethroid-only LLIN group - Clusters\":\"2.2 (1.2)\"},\"5\":{\"Unnamed: 0_level_0 - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyrethroid-only LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\"},\"6\":{\"Unnamed: 0_level_0 - Clusters\":\"Low socioeconomic status*\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"35.8%; 529\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"36.2%; 533\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"29.0%; 431\\/1487\"},\"7\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN ownership (at least one LLIN in the household)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"96.4%; 1426\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"97.1%; 1431\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"95.1%; 1415\\/1488\"},\"8\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN usage in all age groups the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"95.8%; 1312\\/1370\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"94.9%; 1258\\/1326\",\"Pyrethroid-only LLIN group - Clusters\":\"96.5%; 1343\\/1392\"},\"9\":{\"Unnamed: 0_level_0 - Clusters\":\"Malaria infection prevalence in all age groups\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"43.1%; 636\\/1475\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"40.7%; 598\\/1468\",\"Pyrethroid-only LLIN group - Clusters\":\"46.5%; 690\\/1485\"},\"10\":{\"Unnamed: 0_level_0 - Clusters\":\"Anaemia prevalence in children aged 6 months-4 years\\u2020\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"53.3%; 136\\/255\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"53.3%; 131\\/246\",\"Pyrethroid-only LLIN group - Clusters\":\"50.2%; 122\\/243\"},\"11\":{\"Unnamed: 0_level_0 - Clusters\":\"Entomological characteristics\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Pyrethroid-only LLIN group - Clusters\":\"Entomological characteristics\"},\"12\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night indoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"32.9 (28.9)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"21.6 (21.0)\",\"Pyrethroid-only LLIN group - Clusters\":\"29.2 (25.3)\"},\"13\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night outdoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20.3 (17.6)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"16.4 (17.4)\",\"Pyrethroid-only LLIN group - Clusters\":\"20.6 (20.2)\"},\"14\":{\"Unnamed: 0_level_0 - Clusters\":\"Indoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.62 (0.93)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.48 (0.65)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.96 (1.18)\"},\"15\":{\"Unnamed: 0_level_0 - Clusters\":\"Outdoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.27 (0.45)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.17 (0.44)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.33 (0.45)\"},\"16\":{\"Unnamed: 0_level_0 - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyrethroid-only LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\"},\"17\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of children younger than 5 years\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"52.3%; 316\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"50.6%; 304\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"53.6%; 322\\/601\"},\"18\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of female children\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"47.2%; 285\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"48.4%; 291\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"48.8%; 293\\/601\"},\"19\":{\"Unnamed: 0_level_0 - Clusters\":\"Net usage the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"99.0%; 598\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"98.7%; 593\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"99.2%; 596\\/601\"}}\n", - "\n", - "header: Table 2: Malaria case incidence in children aged 6 months–10 years per year of follow-up and overall (including active visits only)\n", - "footer: Each intervention was compared with the pyrethroid-only LLIN group for the same timepoint. LLIN=long-lasting insecticidal net. *A p value of <0·025 was considered significant after Bonferroni correction\n", - "columns: ['Unnamed: 0_level_0 - Overall', 'Number of clinical malaria episodes - Overall', 'Child- years of follow-up - Overall', 'Incidence, cases per child-year (95% Cl) - Overall', 'Hazard ratio - Overall', '95%Cl - Overall', 'p value* - Overall']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"897\",\"Child- years of follow-up - Overall\":\"874.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.03 (0.96-1.09)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"1\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"744\",\"Child- years of follow-up - Overall\":\"883.8\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.84 (0.78-0.90)\",\"Hazard ratio - Overall\":\"0.86\",\"95%Cl - Overall\":\"0.65-1.14\",\"p value* - Overall\":\"0.28\"},\"2\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"494\",\"Child- years of follow-up - Overall\":\"887.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.56 (0.51-0.61)\",\"Hazard ratio - Overall\":\"0.54\",\"95%Cl - Overall\":\"0.42-0.70\",\"p value* - Overall\":\"<0.0001\"},\"3\":{\"Unnamed: 0_level_0 - Overall\":\"Year 1\",\"Number of clinical malaria episodes - Overall\":\"Year 1\",\"Child- years of follow-up - Overall\":\"Year 1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 1\",\"Hazard ratio - Overall\":\"Year 1\",\"95%Cl - Overall\":\"Year 1\",\"p value* - Overall\":\"Year 1\"},\"4\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"267\",\"Child- years of follow-up - Overall\":\"344.4\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.77 (0.69-0.87)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"5\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"211\",\"Child- years of follow-up - Overall\":\"342.7\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.62 (0.54-0.70)\",\"Hazard ratio - Overall\":\"0.83\",\"95%Cl - Overall\":\"0.51-1.35\",\"p value* - Overall\":\"0.46\"},\"6\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"124\",\"Child- years of follow-up - Overall\":\"349.2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.36 (0.30-0.42)\",\"Hazard ratio - Overall\":\"0.46\",\"95%Cl - Overall\":\"0.30-0.72\",\"p value* - Overall\":\"0.0005\"},\"7\":{\"Unnamed: 0_level_0 - Overall\":\"Year 2\",\"Number of clinical malaria episodes - Overall\":\"Year 2\",\"Child- years of follow-up - Overall\":\"Year 2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 2\",\"Hazard ratio - Overall\":\"Year 2\",\"95%Cl - Overall\":\"Year 2\",\"p value* - Overall\":\"Year 2\"},\"8\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"630\",\"Child- years of follow-up - Overall\":\"529.9\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.19 (1.10-1.29)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"9\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"533\",\"Child- years of follow-up - Overall\":\"541.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.98 (0.90-1.07)\",\"Hazard ratio - Overall\":\"0.88\",\"95%Cl - Overall\":\"0.68-1.13\",\"p value* - Overall\":\"0.31\"},\"10\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"370\",\"Child- years of follow-up - Overall\":\"538.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.69 (0.62-0.76)\",\"Hazard ratio - Overall\":\"0.57\",\"95%Cl - Overall\":\"0.45-0.73\",\"p value* - Overall\":\"<0.0001\"}}\n", - "\n", - "header: Table 3: Malaria infection and anaemia prevalence in the study population at 6 months and 18 months after net distribution (intention-to-treat analysis)\n", - "footer: Anaemia was defined as a haemogloblin concentration of <10 g/dL. LLIN=long-lasting insecticidal net. OR=odds ratio. *A p value of <0·025 was considered significant after Bonferroni correction\n", - "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution', 'Malaria infection - n/N - 6 months after net distribution', 'Malaria infection - Prevalence - 6 months after net distribution', 'Malaria infection - OR - 6 months after net distribution', 'Malaria infection - 95% Cl - 6 months after net distribution', 'Malaria infection - p value* - 6 months after net distribution', 'Anaemia in children younger than 5 years - n/N - 6 months after net distribution', 'Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution', 'Anaemia in children younger than 5 years - OR - 6 months after net distribution', 'Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution', 'Anaemia in children younger than 5 years - p value* - 6 months after net distribution']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"412\\/1471\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"28.0%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"99\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"41.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"394\\/1463\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"26.9 %\",\"Malaria infection - OR - 6 months after net distribution\":\"0.92\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.63-1.35\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.67\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"117\\/250\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.24\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.71-2.18\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.45\"},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"231\\/1475\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"15.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.47\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.32-0.69\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0002\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"82\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"34.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.71\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.26\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0-24\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - p value* - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"18 months after net distribution\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"576\\/1489\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/252\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"564\\/1478\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.2%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.97\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.69-1.37.\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.87\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"108\\/245\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"44.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.84\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.79\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.65\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"414\\/1483\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"27.9%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.60\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.43-0.85\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0041\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/246\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"48.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.08\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.51-2.28\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.84\"}}\n", - "\n", - "header: Introduction: Added value of this study\n", - "\n", - "To our knowledge, this is the second study aiming to compare the efficacy of the next generation of LLINs combining _p_iprosyfen or chlorfenapyr and pyrethroid versus standard pyrethroid-only LLINs, and the first of its kind to be conducted in west Africa. This trial confirmed the superior efficacy of chlorfenapyr-pyrethroid LLINs, in terms of malaria case incidence, prevalence, and transmission in children, over 2 years of use in the community, in an area of moderate malaria transmission and with high insecticide resistance intensity in malaria vectors, in Benin. However, pyrioxyfen-pyrethroid LLINs did not offer additional protection against malaria outcomes compared with pyrethroid-only LLINs.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Cove\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019},\"S02\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Zagnanado\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019},\"S03\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Ouinhi\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Royal Guard\",\"Insecticide\":\"pyriproyfen, alpha-cypermethrin\",\"Concentration_initial\":\"220 mg\\/m2, 220 mg\\/m2\"},\"N02\":{\"Net_type\":\"Interceptor G2\",\"Insecticide\":\"chlorfenapyr, alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2, 100 mg\\/m2\"},\"N03\":{\"Net_type\":\"Interceptor\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Funding\n", - "\n", - "This research was funded by the Royal Society of Tropical Medicine and Hygiene (RSTM#) through a small grant awarded to DM and the Wellcome Trust through a Wellcome Trust Training fellowship in public health and tropical medicine to CN (102543/2/13/2). The RSTM# and the Wellcome Trust have no role in the design of the study and collection, analysis, and interpretation of data and in writing the manuscript.\n", - "\n", - "header: Author details\n", - "\n", - "1 Laboratory of Parasitology and Ecology, Faculty of Sciences, University of Yaoundet i P.O. Box 812, Yaoundet, Cameroon. 1 Institute for the Recherche de Yaoundet (FR), Organizing the Coordination pour la Tutte Contre les Endrines en Afrique Centrale (OCEAC), PO. Box 283, Yaoundet, Cameroon. 3 Department of Biological Sciences, Faculty of Medicine and Pharmaceutical Sciences, University of Ouala, PO. Box 2415, Ouala, Cameroon. 4 Department of Parasitology and Microbiology, Centre for Research in Infectious Diseases (RDI), PO. Box 13591, Yaounde, Cameroon. 5 Animal Organisms Laboratory, Faculty of Sciences, University of Ouala, PO. Box 24157, Douala, Cameroon.\n", - "\n", - "header: Bed net coverage, use and maintenance\n", - "\n", - "Bed net ownership was investigated in 80 of 97 the households that currently make up the village through visual inspection. The heads of these households or their representatives were questioned on their use of nets and their maintenance. The number of people living in each house was recorded to estimate net coverage. Household net ownership was defined as the percentage of households owning at least one LLIN. Net coverage defined as the percentage of households with at least one LLIN for every two people was also determined.\n", - "\n", - "header: Insecticide bioassays and knockdown resistance detection\n", - "\n", - "Larvae of _An. gambiae_ (_s.l._) were collected in stagnant pools of water and reared in the insectary of the medical entomology laboratory of OCEAC. F1 adults that emerged from those larvae were fed with 10% sucrose solution made by dissolving 100 g of ordinary white sugar in 1 L of water [22]. _Anopheles funestus_ was not tested due to the low number of adults obtained following larval collections and rearing. The susceptibility of the F1 adults to 0.75% permethrin and 0.05% deltamethrin, both pyrethroid pesticides, was assessed using a World Health Organization (WHO) standard test procedure [23]. Tests were performed at 25 +- 2 degC, 806 +- 10% relative humidity (RH). For each insecticide, four batches of 20-25 field F1 females, aged between 2 and 5 days, were exposed to insecticide-impregnated papers in WHO test-tube for 1 h. At the same time, two batches of the same number of mosquitoes were exposed to untreated papers as control. At the end of the insecticide exposure period, the number of knocked-down mosquitoes was recorded, following which the mosquitoes were transferred into holding tubes. Cotton balls that had first been soaked in a 10% sugar solution and then the moisture squeezed out were placed at the mouth of the tubes. The mortality was recorded 24 h later. Mortality rate in the tested samples was corrected using Abbott's formula [24], when the mortality in the control tubes varied between 5 to 20%. The knockdown resistance (_kdr_) mutation L1014F, which is responsible of cross resistance to DDT (dichlorodiphenyl-trichloroethane) and pyrethroids was genotyped using the protocol described by Martinez-Tores et al. [25].\n", - "\n", - "header: Abbreviations\n", - "\n", - "DDT: Dichlorodiphenyltrichloroethane; ER: Entomological inoculation rate; ELISA CSP: Enzyme-linked immunosorbent assay to detect the circumsporolite protein; HL: Human landing catch method; Adv: Knockdown resistance; LINK: long-lasting insecticidal net; pH: Proportionate hole index; WHORES: World Health Organization Pesticides Evaluation Scheme\n", - "\n", - "header: Possession, coverage and use of LLINs\n", - "\n", - "In general, 81.25% of the households inspected possessed at least one LLIN. Despite this high level of ownership, the proportion of households that met the ratio of one net for two persons was only 47.69%. Fortunately, 81.54% of the people interviewed affirmed they used their bed nets every night (Table 3). Of the LLINs available, 92.3% were acquired during the government free mass distribution campaigns of 2011-2012 and 2015-2016. Although almost 70% of the study population affirmed that they have been educated by the public health community agents during the distribution campaigns, only 10.52% knew bed nets should be dried in the shade before usage or after washing. Moreover, 56.46% of respondents had washed their bet nets at least once; 63.15% used water and ordinary soap while 36.85% used detergents soap and bleach (Table 3).\n", - "\n", - "header: Physical integrity and effectiveness of LLINs\n", - "\n", - "Ten LLINs aged 3-7 years old were sampled to assess their physical integrity and bio-efficacy. A total of 161 holes belonging to all the four different types described by WHOPES (the size of a person's thumb, fist or head, or larger than a head) were counted, with a mean of 17 holes per bed net. The proportion of these holes per type was 52.79% (thumb size), 32.29% (fist size), 9.93% (head size) and 4.96% (large than head size). Of the ten LLINs examined, seven (70%) were damaged and were found to be in poor condition (pHI > 300) (Table 4).\n", - "\n", - "A total of 2000 specimens of the _An. gambiae_ (_s.l._) susceptible Kisumu strain were exposed to the ten bed nets. Eight of these nets were effective against this strain, with mortality rates > 80%. Exposure of the same number of _An. gambiae_ (_s.l._) field F1 mosquitoes to these LLINs revealed that they were all ineffective, with mortalities ranging from 0 to 11.5% (Table 4).\n", - "\n", - "header: Bed net integrity and bio-efficacy\n", - "\n", - "Ten bed nets were randomly collected from ten selected houses and immediately replaced by new ones. The physical integrity of the nets collected was determined by counting, per category, the number of holes that were approximately the size of a person's thumb, fist or head, or larger than a head, on any of the four faces and the top of the bed net [26, 27]. The proportionate hole index (pH) was calculated using the WHO Pesticide Evaluation Scheme (WHOPES ) guidelines [11] and nets were classified into four classes accordingly [28, 29]. Nets with a pHI <25 were classified as \"good\"; those with a pH ranging between 25 and 174, as \"fair\"; those nets with a pHI ranging from 175 to 299, as \"mediocre\"; and those with a pHI > 300, as \"poor\".\n", - "\n", - "\n", - "Cone assays were performed on each net to test for its bio-efficacy as described in WHO guidelines [30]. Four cones were fixed by their widest opening onto four different parts of each face (4 sides and 1 roof) of each net. Ten unfed _An. gambiae_ (_s.l._) female mosquitoes aged 2-5 days were introduced into each cone using a mouth aspirator, for a total of 200 specimens per net. After 3 min of exposure, the mosquitoes were removed from the cones, then transferred into paper cups and fed with a 10% sugar solution. The assay was conducted at 25 +- 1 degC, 80% +- 5% RH, and the number of mosquitoes knocked-down and dead were recorded after 60 min and 24 h, respectively. An untreated net was used as the negative control.\n", - "\n", - "header: Table 3 Origin, use and maintenance of long‑lasting insecticidal nets\n", - "footer: LLIN, Long-lasting insecticidal net\n", - "columns: ['Variables related to LLIN', 'N', 'Frequency (%)']\n", - "\n", - "{\"0\":{\"Variables related to LLIN\":\"Possession\",\"N\":\"Possession\",\"Frequency (%)\":\"Possession\"},\"1\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"65\",\"Frequency (%)\":\"81.25\"},\"2\":{\"Variables related to LLIN\":\"No\",\"N\":\"15\",\"Frequency (%)\":\"18.75\"},\"3\":{\"Variables related to LLIN\":\"Origin\",\"N\":\"Origin\",\"Frequency (%)\":\"Origin\"},\"4\":{\"Variables related to LLIN\":\"Government\",\"N\":\"60\",\"Frequency (%)\":\"92.3\"},\"5\":{\"Variables related to LLIN\":\"Market\",\"N\":\"5\",\"Frequency (%)\":\"7.7\"},\"6\":{\"Variables related to LLIN\":\"Installed\",\"N\":\"Installed\",\"Frequency (%)\":\"Installed\"},\"7\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"59\",\"Frequency (%)\":\"90.76\"},\"8\":{\"Variables related to LLIN\":\"No\",\"N\":\"6\",\"Frequency (%)\":\"9.24\"},\"9\":{\"Variables related to LLIN\":\"Presence per 2 persons\",\"N\":\"Presence per 2 persons\",\"Frequency (%)\":\"Presence per 2 persons\"},\"10\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"31\",\"Frequency (%)\":\"47.7\"},\"11\":{\"Variables related to LLIN\":\"No\",\"N\":\"34\",\"Frequency (%)\":\"52.3\"},\"12\":{\"Variables related to LLIN\":\"Usage\",\"N\":\"Usage\",\"Frequency (%)\":\"Usage\"},\"13\":{\"Variables related to LLIN\":\"Every night\",\"N\":\"53\",\"Frequency (%)\":\"81.54\"},\"14\":{\"Variables related to LLIN\":\"Not every night\",\"N\":\"12\",\"Frequency (%)\":\"18.46\"},\"15\":{\"Variables related to LLIN\":\"Education received on LLINs during distribution\",\"N\":\"Education received on LLINs during distribution\",\"Frequency (%)\":\"Education received on LLINs during distribution\"},\"16\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"45\",\"Frequency (%)\":\"69.92\"},\"17\":{\"Variables related to LLIN\":\"No\",\"N\":\"20\",\"Frequency (%)\":\"30.78\"},\"18\":{\"Variables related to LLIN\":\"Had LLIN been washed\",\"N\":\"Had LLIN been washed\",\"Frequency (%)\":\"Had LLIN been washed\"},\"19\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"38\",\"Frequency (%)\":\"58.46\"},\"20\":{\"Variables related to LLIN\":\"No\",\"N\":\"27\",\"Frequency (%)\":\"41.54\"},\"21\":{\"Variables related to LLIN\":\"Substance used for washing\",\"N\":\"Substance used for washing\",\"Frequency (%)\":\"Substance used for washing\"},\"22\":{\"Variables related to LLIN\":\"Ordinary soap\",\"N\":\"24\",\"Frequency (%)\":\"63.15\"},\"23\":{\"Variables related to LLIN\":\"Detergent and bleach\",\"N\":\"14\",\"Frequency (%)\":\"36.85\"},\"24\":{\"Variables related to LLIN\":\"Drying place\",\"N\":\"Drying place\",\"Frequency (%)\":\"Drying place\"},\"25\":{\"Variables related to LLIN\":\"In sun\",\"N\":\"34\",\"Frequency (%)\":\"89.48\"},\"26\":{\"Variables related to LLIN\":\"In shade\",\"N\":\"4\",\"Frequency (%)\":\"10.52\"}}\n", - "\n", - "header: Table 1 Plasmodium circumsporozoite index, human biting rate and monthly entomological inoculation rate of Anopheles species in Mvoua between August 2018 and April 2019\n", - "footer: Human-biting rate (HBR) is the average number of bites received per person per night; (ii) Plasmodium circumsporozoite index (infection rate) is the proportion of mosquitoes found with Plasmodium circumsporozoite antigen in the heads and thoraces; entomological inoculation rate is the product of the HBR and circumsporozoite rateNC not calculated\n", - "columns: ['Anopheles species', 'Tested (N)', 'Positive (N)', 'Entomological parameters - Plasmodium circumsporozoite index (%)', 'Entomological parameters - Human biting rate', 'Entomological parameters - Human biting rate.1', 'Entomological parameters - Entomological inoculation rate/ month']\n", - "\n", - "{\"0\":{\"Anopheles species\":\"An. funestus (s.l.)\",\"Tested (N)\":65,\"Positive (N)\":7,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"10.77\",\"Entomological parameters - Human biting rate\":0.55,\"Entomological parameters - Human biting rate.1\":0.55,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.5\"},\"1\":{\"Anopheles species\":\"An. gambiae (s.l.)\",\"Tested (N)\":42,\"Positive (N)\":6,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"14.29\",\"Entomological parameters - Human biting rate\":0.35,\"Entomological parameters - Human biting rate.1\":0.35,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.2\"},\"2\":{\"Anopheles species\":\"An. ziemanii\",\"Tested (N)\":3,\"Positive (N)\":0,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"0\",\"Entomological parameters - Human biting rate\":0.02,\"Entomological parameters - Human biting rate.1\":0.02,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"NC\"},\"3\":{\"Anopheles species\":\"Total\",\"Tested (N)\":110,\"Positive (N)\":13,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"11.81%\",\"Entomological parameters - Human biting rate\":0.93,\"Entomological parameters - Human biting rate.1\":0.93,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"2.7\"}}\n", - "\n", - "header: Competing interests\n", - "\n", - "The authors declare they have no competing interests.\n", - "\n", - "header: Table 4 Hole index and mortality of An. gambiae (s.l.) after being exposed to the long‑lasting insecticidal nets\n", - "footer: Not eff., not e\u001d\n", - "fficient; PHI, proportionate hole index\n", - "columns: ['Nets', 'Date of impregnation', 'Brand', 'Physical integrity of LLIN - pHI', 'Physical integrity of LLIN - Status', 'Bio‑efficacy of LLIN (%) - Kisumu control strain', 'Bio‑efficacy of LLIN (%) - Field strain', 'Decision - Unnamed: 7_level_1']\n", - "\n", - "{\"0\":{\"Nets\":\"Net 1\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":0,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":83.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"1\":{\"Nets\":\"Net 2\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":916,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":80.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":0.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"2\":{\"Nets\":\"Net 3\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1939,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":69.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"3\":{\"Nets\":\"Net 4\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":581,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":88.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"4\":{\"Nets\":\"Net 5\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":13,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":99.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":8.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"5\":{\"Nets\":\"Net 6\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":651,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":85.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"6\":{\"Nets\":\"Net 7\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":2225,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":72.4,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"7\":{\"Nets\":\"Net 8\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":98.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":9.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"8\":{\"Nets\":\"Net 9\",\"Date of impregnation\":\"May 2014\",\"Brand\":\"Royal sentry\",\"Physical integrity of LLIN - pHI\":1180,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":95.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"9\":{\"Nets\":\"Net 10\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":1395,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":87.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"}}\n", - "\n", - "header: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Ethics approval and consent to participate\n", - "\n", - "The study was approved by the Carneroonian National Ethical Committee for Research on Human Health (Statement No 2018/07/20/CE/NIRER/SFD). One week before the beginning of field activities, the population received a notice of information explaining the objectives, methodology, expected benefits and possible risks of the study. A consent form was sought from the head of households and for participants aged > 18 years for mosquito collection. They were given the opportunity to ask questions and they were informed that they are free to withdraw from the study at any time, without penalty or loss of benefits. At the end of each sampling period, all mosquito collectors were given anti-malaria prophylaxis based on artesunate/amodiaquine according to the national guide for malaria treatment.\n", - "\n", - "header: Data analysis\n", - "\n", - "Data were analyzed using SPSS software version 25 (IBM Corp., Armonk, NY, USA). The entomological parameters that were considered were: (i) human-biting rate (HBR), i.e. the average number of bites received per person per night; (ii) infection rate, i.e. the proportion of mosquitoes found with _Plasmodium_ circumsporozoite antigen in the heads and thoraces; (iii) entomological inoculation rate (EIR), i.e. the product of the HBR and circumsporozoite rate. Chi-square statistics was used to compare mosquito densities between seasons while mosquitoes' seasonal aggressiveness (HBR) were compared by the Kruskal-Wallis test. Differences were considered statistically significant at \\(P\\) < 0.05.\n", - "\n", - "header: Abstract\n", - "\n", - "Insights into factors sustaining persistence of high malaria transmission in forested areas of sub-Saharan Africa: the case of Mvoua, South Cameroon\n", - "\n", - "Dominique Mieguim Ngninpogni\n", - "\n", - "\n", - "**Background:** In Mvoua, a village situated in a forested area of Cameroon, recent studies have reported high prevalence of _Plasmodium falciparum_ infection among the population. In order to understand factors that can sustain such a high malaria transmission, we investigated the biology of _Anopheles_ vectors and its susceptibility to insecticides, as well as long-lasting insecticidal net (LLIN) coverage, use and bio-efficacy.\n", - "\n", - "**Methods:** A longitudinal entomological survey was conducted from July 2018 to April 2019. Adult mosquitoes were collected using the human landing catch (HLC) method and identified using morphological and molecular techniques. _Anopheles gambiae (s.l)_ larvae were sampled from several stagnant water pools throughout the village and reared to generate F1 adults. The presence of _P. falciparum_ circumsporozoite antigen was detected in the heads and thoraces of mosquitoes collected as adults using an enzyme-linked immunosorbent assay. The insecticide susceptibility status of the local _An. gambiae (s.l)_ F1 population to the pyrethroid insecticides deltamethrin 0.5% and permethrin 0.75% was determined using World Health Organization-tube bioassays, while the frequency of the knockdown resistance (_kdt_) mutation was determined by PCR. Coverage, use and physical integrity of LLINs were assessed in households, then cone assays were used to test for their bio-efficacy on both the reference insecticide-susceptible Kisumu strain and on field F1 _An. gambiae (s.l)_\n", - "\n", - "**Results:** In total, 110 _Anopheles_ mosquitoes were collected, of which 59.1% were identified as _Anopheles funestus (s.l)_, 38.18% as _An. gambiae (s.l)_ and 2.72% as _An. Ziemanili. Anopheles funestus_ was the most abundant species except in the long rainy season, when _An. gambiae (s.l)_ predominated (65.8%). In the dry seasons, vectors were principally endophagous (76% of those collected indoors) while they tended to be esophagus (66% of those collected outdoors) in rainy seasons. High _Plasmodium_ infection was observed in _An. gambiae (s.l)_ and _An. funestus_, with a circumsporozoite rate of 14.29 and 10.77%, respectively. _Anopheles gambiae (s.l)_ was highly resistant to pyrethroid insecticides (mortality rates: 32% for permethrin and 5% for deltamethrin) and harbored the _kdt_-L1014F mutation at a high frequency (89.74%). Of the 80 households surveyed, only 47.69% had achieved universal coverage with LLINs. Around 70% of the LLINs\n", - "sampled were in poor physical condition, with a proportionate hole index > 300. Of the ten LLNs tested, eight were effective against the _An. gambiae_ reference insecticide-susceptible Kisumu strain, showing mortality rate of > 80%, while none of these LLINs were efficient against local _An. gamabie_ (\\(x_{l}\\)) populations (mortality rates < 11.5%).\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "The datasets generated and/or analysed during the current study are available from the corresponding author on reasonable request.\n", - "\n", - "header: Table 2 Anopheles gambiae complex species composition and the frequency of the knockdown resistance L1014F mutation\n", - "footer: kdr-L1014F, Knockdown resistance L1014F mutation; R resistance; S, susceptible\n", - "columns: ['Anopheles species - Unnamed: 0_level_1', 'Composition - N', 'Composition - %', 'kdr-L1014F genotypes - RR', 'kdr-L1014F genotypes - RS', 'kdr-L1014F genotypes - SS', 'kdr-L1014F alleles (%) - R', 'kdr-L1014F alleles (%) - S']\n", - "\n", - "{\"0\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. gambiae\",\"Composition - N\":28,\"Composition - %\":71.8,\"kdr-L1014F genotypes - RR\":27,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":0,\"kdr-L1014F alleles (%) - R\":98.21,\"kdr-L1014F alleles (%) - S\":1.79},\"1\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. coluzzii\",\"Composition - N\":11,\"Composition - %\":28.2,\"kdr-L1014F genotypes - RR\":8,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":77.27,\"kdr-L1014F alleles (%) - S\":22.73},\"2\":{\"Anopheles species - Unnamed: 0_level_1\":\"Total\",\"Composition - N\":39,\"Composition - %\":100.0,\"kdr-L1014F genotypes - RR\":35,\"kdr-L1014F genotypes - RS\":2,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":92.31,\"kdr-L1014F alleles (%) - S\":7.69}}\n", - "\n", - "header: Results\n", - "\n", - "In total, 129 adult mosquitoes were collected during eight nights. These belonged to four genera, of which _Anopheles_ (_N_ = 110; 85.27%) was the most prevalent, followed in decreasing order of prevalence by _Mansonia_ (_N_ = 11; 8.53%), _Aedes_ (_N_ = 6; 4.65%) and _Culex_ (_N_ = 2; 1.55%). Three _Anopheles_ species were collected namely _An. funestus_ (_s.l._) (59.1%), _An. gambiae_ (_s.l._) (38.18%) and _An. zienanii_ (2.72%). _Anopheles. sp_ were most abundant in the short dry season followed by the long rainy season (49.09% of the total _Anopheles_ collected) and the long rainy season (34.54%).\n", - "\n", - "In terms of seasonal species abundance, _An. funestus_ was the most abundant species collected (59.1%) over the period of study, with the exception of the long rainy season when _An. gambiae_ (_s.l._) predominated (Fig. 1).\n", - "\n", - "header: Study area: Adult mosquito collection\n", - "\n", - "Collections of adult host-seeking mosquitoes were undertaken employing both the CDC light trap (CDC-LT) and human landing catch (HLC) methods. Because no mosquito was collected using the CDC-LTs after two consecutive nights of sampling, this method was discarded.\n", - "\n", - "Sampling using the HLC method was performed in ten randomly selected houses situated at least 100 m apart. The method involved persons sitting with their lower legs exposed and then collecting mosquitoes that just landed on them [14]. Adult mosquitoes were sampled both indoors and outdoors during two consecutive nights, once per each of the four seasons. Mosquitoes collected each hour were placed into separate bags, labeled accordingly and brought back to the laboratory for further analysis. To avoid bias due to sleep and tiredness, one team of collectors worked from 18:00 h to midnight, and was replaced by another team which worked from midnight to 6:00 h.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Author details\n", - "\n", - "1 Laboratory of Parasitology and Ecology, Faculty of Sciences, University of Yaoundet i P.O. Box 812, Yaoundet, Cameroon. 1 Institute for the Recherche de Yaoundet (FR), Organizing the Coordination pour la Tutte Contre les Endrines en Afrique Centrale (OCEAC), PO. Box 283, Yaoundet, Cameroon. 3 Department of Biological Sciences, Faculty of Medicine and Pharmaceutical Sciences, University of Ouala, PO. Box 2415, Ouala, Cameroon. 4 Department of Parasitology and Microbiology, Centre for Research in Infectious Diseases (RDI), PO. Box 13591, Yaounde, Cameroon. 5 Animal Organisms Laboratory, Faculty of Sciences, University of Ouala, PO. Box 24157, Douala, Cameroon.\n", - "\n", - "header: Insecticide bioassays and knockdown resistance detection\n", - "\n", - "Larvae of _An. gambiae_ (_s.l._) were collected in stagnant pools of water and reared in the insectary of the medical entomology laboratory of OCEAC. F1 adults that emerged from those larvae were fed with 10% sucrose solution made by dissolving 100 g of ordinary white sugar in 1 L of water [22]. _Anopheles funestus_ was not tested due to the low number of adults obtained following larval collections and rearing. The susceptibility of the F1 adults to 0.75% permethrin and 0.05% deltamethrin, both pyrethroid pesticides, was assessed using a World Health Organization (WHO) standard test procedure [23]. Tests were performed at 25 +- 2 degC, 806 +- 10% relative humidity (RH). For each insecticide, four batches of 20-25 field F1 females, aged between 2 and 5 days, were exposed to insecticide-impregnated papers in WHO test-tube for 1 h. At the same time, two batches of the same number of mosquitoes were exposed to untreated papers as control. At the end of the insecticide exposure period, the number of knocked-down mosquitoes was recorded, following which the mosquitoes were transferred into holding tubes. Cotton balls that had first been soaked in a 10% sugar solution and then the moisture squeezed out were placed at the mouth of the tubes. The mortality was recorded 24 h later. Mortality rate in the tested samples was corrected using Abbott's formula [24], when the mortality in the control tubes varied between 5 to 20%. The knockdown resistance (_kdr_) mutation L1014F, which is responsible of cross resistance to DDT (dichlorodiphenyl-trichloroethane) and pyrethroids was genotyped using the protocol described by Martinez-Tores et al. [25].\n", - "\n", - "header: Funding\n", - "\n", - "This research was funded by the Royal Society of Tropical Medicine and Hygiene (RSTM#) through a small grant awarded to DM and the Wellcome Trust through a Wellcome Trust Training fellowship in public health and tropical medicine to CN (102543/2/13/2). The RSTM# and the Wellcome Trust have no role in the design of the study and collection, analysis, and interpretation of data and in writing the manuscript.\n", - "\n", - "header: Bed net coverage, use and maintenance\n", - "\n", - "Bed net ownership was investigated in 80 of 97 the households that currently make up the village through visual inspection. The heads of these households or their representatives were questioned on their use of nets and their maintenance. The number of people living in each house was recorded to estimate net coverage. Household net ownership was defined as the percentage of households owning at least one LLIN. Net coverage defined as the percentage of households with at least one LLIN for every two people was also determined.\n", - "\n", - "header: Abbreviations\n", - "\n", - "DDT: Dichlorodiphenyltrichloroethane; ER: Entomological inoculation rate; ELISA CSP: Enzyme-linked immunosorbent assay to detect the circumsporolite protein; HL: Human landing catch method; Adv: Knockdown resistance; LINK: long-lasting insecticidal net; pH: Proportionate hole index; WHORES: World Health Organization Pesticides Evaluation Scheme\n", - "\n", - "header: Conclusion\n", - "\n", - "A combination of elevated _P. falciparum_ infection in _Anopheles_ vector populations, insufficient coverage and loss of effectiveness of LLINs due to physical degradation, as well as high resistance to pyrethroid insecticides is responsible for the persistence of high malaria transmission in forested rural area of Mvoua, Cameroon.\n", - "\n", - "header: Physical integrity and effectiveness of LLINs\n", - "\n", - "Ten LLINs aged 3-7 years old were sampled to assess their physical integrity and bio-efficacy. A total of 161 holes belonging to all the four different types described by WHOPES (the size of a person's thumb, fist or head, or larger than a head) were counted, with a mean of 17 holes per bed net. The proportion of these holes per type was 52.79% (thumb size), 32.29% (fist size), 9.93% (head size) and 4.96% (large than head size). Of the ten LLINs examined, seven (70%) were damaged and were found to be in poor condition (pHI > 300) (Table 4).\n", - "\n", - "A total of 2000 specimens of the _An. gambiae_ (_s.l._) susceptible Kisumu strain were exposed to the ten bed nets. Eight of these nets were effective against this strain, with mortality rates > 80%. Exposure of the same number of _An. gambiae_ (_s.l._) field F1 mosquitoes to these LLINs revealed that they were all ineffective, with mortalities ranging from 0 to 11.5% (Table 4).\n", - "\n", - "header: Possession, coverage and use of LLINs\n", - "\n", - "In general, 81.25% of the households inspected possessed at least one LLIN. Despite this high level of ownership, the proportion of households that met the ratio of one net for two persons was only 47.69%. Fortunately, 81.54% of the people interviewed affirmed they used their bed nets every night (Table 3). Of the LLINs available, 92.3% were acquired during the government free mass distribution campaigns of 2011-2012 and 2015-2016. Although almost 70% of the study population affirmed that they have been educated by the public health community agents during the distribution campaigns, only 10.52% knew bed nets should be dried in the shade before usage or after washing. Moreover, 56.46% of respondents had washed their bet nets at least once; 63.15% used water and ordinary soap while 36.85% used detergents soap and bleach (Table 3).\n", - "\n", - "header: Bed net integrity and bio-efficacy\n", - "\n", - "Ten bed nets were randomly collected from ten selected houses and immediately replaced by new ones. The physical integrity of the nets collected was determined by counting, per category, the number of holes that were approximately the size of a person's thumb, fist or head, or larger than a head, on any of the four faces and the top of the bed net [26, 27]. The proportionate hole index (pH) was calculated using the WHO Pesticide Evaluation Scheme (WHOPES ) guidelines [11] and nets were classified into four classes accordingly [28, 29]. Nets with a pHI <25 were classified as \"good\"; those with a pH ranging between 25 and 174, as \"fair\"; those nets with a pHI ranging from 175 to 299, as \"mediocre\"; and those with a pHI > 300, as \"poor\".\n", - "\n", - "\n", - "Cone assays were performed on each net to test for its bio-efficacy as described in WHO guidelines [30]. Four cones were fixed by their widest opening onto four different parts of each face (4 sides and 1 roof) of each net. Ten unfed _An. gambiae_ (_s.l._) female mosquitoes aged 2-5 days were introduced into each cone using a mouth aspirator, for a total of 200 specimens per net. After 3 min of exposure, the mosquitoes were removed from the cones, then transferred into paper cups and fed with a 10% sugar solution. The assay was conducted at 25 +- 1 degC, 80% +- 5% RH, and the number of mosquitoes knocked-down and dead were recorded after 60 min and 24 h, respectively. An untreated net was used as the negative control.\n", - "\n", - "header: Data analysis\n", - "\n", - "Data were analyzed using SPSS software version 25 (IBM Corp., Armonk, NY, USA). The entomological parameters that were considered were: (i) human-biting rate (HBR), i.e. the average number of bites received per person per night; (ii) infection rate, i.e. the proportion of mosquitoes found with _Plasmodium_ circumsporozoite antigen in the heads and thoraces; (iii) entomological inoculation rate (EIR), i.e. the product of the HBR and circumsporozoite rate. Chi-square statistics was used to compare mosquito densities between seasons while mosquitoes' seasonal aggressiveness (HBR) were compared by the Kruskal-Wallis test. Differences were considered statistically significant at \\(P\\) < 0.05.\n", - "\n", - "header: Table 1 Plasmodium circumsporozoite index, human biting rate and monthly entomological inoculation rate of Anopheles species in Mvoua between August 2018 and April 2019\n", - "footer: Human-biting rate (HBR) is the average number of bites received per person per night; (ii) Plasmodium circumsporozoite index (infection rate) is the proportion of mosquitoes found with Plasmodium circumsporozoite antigen in the heads and thoraces; entomological inoculation rate is the product of the HBR and circumsporozoite rateNC not calculated\n", - "columns: ['Anopheles species', 'Tested (N)', 'Positive (N)', 'Entomological parameters - Plasmodium circumsporozoite index (%)', 'Entomological parameters - Human biting rate', 'Entomological parameters - Human biting rate.1', 'Entomological parameters - Entomological inoculation rate/ month']\n", - "\n", - "{\"0\":{\"Anopheles species\":\"An. funestus (s.l.)\",\"Tested (N)\":65,\"Positive (N)\":7,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"10.77\",\"Entomological parameters - Human biting rate\":0.55,\"Entomological parameters - Human biting rate.1\":0.55,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.5\"},\"1\":{\"Anopheles species\":\"An. gambiae (s.l.)\",\"Tested (N)\":42,\"Positive (N)\":6,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"14.29\",\"Entomological parameters - Human biting rate\":0.35,\"Entomological parameters - Human biting rate.1\":0.35,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.2\"},\"2\":{\"Anopheles species\":\"An. ziemanii\",\"Tested (N)\":3,\"Positive (N)\":0,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"0\",\"Entomological parameters - Human biting rate\":0.02,\"Entomological parameters - Human biting rate.1\":0.02,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"NC\"},\"3\":{\"Anopheles species\":\"Total\",\"Tested (N)\":110,\"Positive (N)\":13,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"11.81%\",\"Entomological parameters - Human biting rate\":0.93,\"Entomological parameters - Human biting rate.1\":0.93,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"2.7\"}}\n", - "\n", - "header: Competing interests\n", - "\n", - "The authors declare they have no competing interests.\n", - "\n", - "header: Ethics approval and consent to participate\n", - "\n", - "The study was approved by the Carneroonian National Ethical Committee for Research on Human Health (Statement No 2018/07/20/CE/NIRER/SFD). One week before the beginning of field activities, the population received a notice of information explaining the objectives, methodology, expected benefits and possible risks of the study. A consent form was sought from the head of households and for participants aged > 18 years for mosquito collection. They were given the opportunity to ask questions and they were informed that they are free to withdraw from the study at any time, without penalty or loss of benefits. At the end of each sampling period, all mosquito collectors were given anti-malaria prophylaxis based on artesunate/amodiaquine according to the national guide for malaria treatment.\n", - "\n", - "header: Conclusion\n", - "\n", - "The findings of this study highlight high and perennial malaria transmission in Mvoua, with the highest infection rate in _Anopheles_ vectors observed in the short dry season. Three major vectors, namely _An. funestus_, _An. coluzzizi_ and _An. gambiae_, were responsible for the transmission of the disease. This vector displayed a high level of resistance to pyrethroid insecticides due to the _kdr_ mutation, but also probably due to metabolic mechanisms. Although there was a high level of LLIN possession among the households, universal coverage was not reached and LLINs found in the locality were no longer effective against the local _An. gambiae_ (_s.l._) strain. The National Malaria Control Program should provide the locality with new LLINs every 3 years, as recommended by WHO. Preferably, to manage the high pyrethroid resistance observed, these LLINs should incorporate a synergism to block the action of detoxification enzymes. People should be educated on the use and maintenance of LLINs, with an emphasis on the importance of sleeping under LLINs irrespective of season, as well as on the damaging impact of detergents used for their washing.\n", - "\n", - "header: Table 2 Anopheles gambiae complex species composition and the frequency of the knockdown resistance L1014F mutation\n", - "footer: kdr-L1014F, Knockdown resistance L1014F mutation; R resistance; S, susceptible\n", - "columns: ['Anopheles species - Unnamed: 0_level_1', 'Composition - N', 'Composition - %', 'kdr-L1014F genotypes - RR', 'kdr-L1014F genotypes - RS', 'kdr-L1014F genotypes - SS', 'kdr-L1014F alleles (%) - R', 'kdr-L1014F alleles (%) - S']\n", - "\n", - "{\"0\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. gambiae\",\"Composition - N\":28,\"Composition - %\":71.8,\"kdr-L1014F genotypes - RR\":27,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":0,\"kdr-L1014F alleles (%) - R\":98.21,\"kdr-L1014F alleles (%) - S\":1.79},\"1\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. coluzzii\",\"Composition - N\":11,\"Composition - %\":28.2,\"kdr-L1014F genotypes - RR\":8,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":77.27,\"kdr-L1014F alleles (%) - S\":22.73},\"2\":{\"Anopheles species - Unnamed: 0_level_1\":\"Total\",\"Composition - N\":39,\"Composition - %\":100.0,\"kdr-L1014F genotypes - RR\":35,\"kdr-L1014F genotypes - RS\":2,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":92.31,\"kdr-L1014F alleles (%) - S\":7.69}}\n", - "\n", - "header: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Abstract\n", - "\n", - "Insights into factors sustaining persistence of high malaria transmission in forested areas of sub-Saharan Africa: the case of Mvoua, South Cameroon\n", - "\n", - "Dominique Mieguim Ngninpogni\n", - "\n", - "\n", - "**Background:** In Mvoua, a village situated in a forested area of Cameroon, recent studies have reported high prevalence of _Plasmodium falciparum_ infection among the population. In order to understand factors that can sustain such a high malaria transmission, we investigated the biology of _Anopheles_ vectors and its susceptibility to insecticides, as well as long-lasting insecticidal net (LLIN) coverage, use and bio-efficacy.\n", - "\n", - "**Methods:** A longitudinal entomological survey was conducted from July 2018 to April 2019. Adult mosquitoes were collected using the human landing catch (HLC) method and identified using morphological and molecular techniques. _Anopheles gambiae (s.l)_ larvae were sampled from several stagnant water pools throughout the village and reared to generate F1 adults. The presence of _P. falciparum_ circumsporozoite antigen was detected in the heads and thoraces of mosquitoes collected as adults using an enzyme-linked immunosorbent assay. The insecticide susceptibility status of the local _An. gambiae (s.l)_ F1 population to the pyrethroid insecticides deltamethrin 0.5% and permethrin 0.75% was determined using World Health Organization-tube bioassays, while the frequency of the knockdown resistance (_kdt_) mutation was determined by PCR. Coverage, use and physical integrity of LLINs were assessed in households, then cone assays were used to test for their bio-efficacy on both the reference insecticide-susceptible Kisumu strain and on field F1 _An. gambiae (s.l)_\n", - "\n", - "**Results:** In total, 110 _Anopheles_ mosquitoes were collected, of which 59.1% were identified as _Anopheles funestus (s.l)_, 38.18% as _An. gambiae (s.l)_ and 2.72% as _An. Ziemanili. Anopheles funestus_ was the most abundant species except in the long rainy season, when _An. gambiae (s.l)_ predominated (65.8%). In the dry seasons, vectors were principally endophagous (76% of those collected indoors) while they tended to be esophagus (66% of those collected outdoors) in rainy seasons. High _Plasmodium_ infection was observed in _An. gambiae (s.l)_ and _An. funestus_, with a circumsporozoite rate of 14.29 and 10.77%, respectively. _Anopheles gambiae (s.l)_ was highly resistant to pyrethroid insecticides (mortality rates: 32% for permethrin and 5% for deltamethrin) and harbored the _kdt_-L1014F mutation at a high frequency (89.74%). Of the 80 households surveyed, only 47.69% had achieved universal coverage with LLINs. Around 70% of the LLINs\n", - "sampled were in poor physical condition, with a proportionate hole index > 300. Of the ten LLNs tested, eight were effective against the _An. gambiae_ reference insecticide-susceptible Kisumu strain, showing mortality rate of > 80%, while none of these LLINs were efficient against local _An. gamabie_ (\\(x_{l}\\)) populations (mortality rates < 11.5%).\n", - "\n", - "header: Mosquito identification and detection of _Plasmodium infection_\n", - "\n", - "Adult mosquitoes collected using the HLC method were identified based on morphological criteria following the identification keys of Gillies and De Meillon [15] and Gillies and Coetzee [16]. Female _Anopheles_ mosquitoes were sorted from other _Culicinae_, stored in Eppendorf tubes with silica gel (desiccant) and taken to the medical entomology laboratory of OCEAC (Organisation de Coordination pour la lutte Contre les Endemies en Afrique Centrale) for subsequent analyses. Heads and thoraces were processed for detection of _P. falciparum_ circumsporozoite protein (CSP) using an enzyme-linked immunosorbent assay (ELISA) method as previously described [17, 18]. DNA extracted from the abdomen and legs [19] was used for the molecular identification of sibling species by PCR, as described previously [20, 21].\n", - "\n", - "header: Results\n", - "\n", - "In total, 129 adult mosquitoes were collected during eight nights. These belonged to four genera, of which _Anopheles_ (_N_ = 110; 85.27%) was the most prevalent, followed in decreasing order of prevalence by _Mansonia_ (_N_ = 11; 8.53%), _Aedes_ (_N_ = 6; 4.65%) and _Culex_ (_N_ = 2; 1.55%). Three _Anopheles_ species were collected namely _An. funestus_ (_s.l._) (59.1%), _An. gambiae_ (_s.l._) (38.18%) and _An. zienanii_ (2.72%). _Anopheles. sp_ were most abundant in the short dry season followed by the long rainy season (49.09% of the total _Anopheles_ collected) and the long rainy season (34.54%).\n", - "\n", - "In terms of seasonal species abundance, _An. funestus_ was the most abundant species collected (59.1%) over the period of study, with the exception of the long rainy season when _An. gambiae_ (_s.l._) predominated (Fig. 1).\n", - "\n", - "header: Table 4 Hole index and mortality of An. gambiae (s.l.) after being exposed to the long‑lasting insecticidal nets\n", - "footer: Not eff., not e\u001d\n", - "fficient; PHI, proportionate hole index\n", - "columns: ['Nets', 'Date of impregnation', 'Brand', 'Physical integrity of LLIN - pHI', 'Physical integrity of LLIN - Status', 'Bio‑efficacy of LLIN (%) - Kisumu control strain', 'Bio‑efficacy of LLIN (%) - Field strain', 'Decision - Unnamed: 7_level_1']\n", - "\n", - "{\"0\":{\"Nets\":\"Net 1\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":0,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":83.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"1\":{\"Nets\":\"Net 2\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":916,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":80.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":0.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"2\":{\"Nets\":\"Net 3\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1939,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":69.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"3\":{\"Nets\":\"Net 4\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":581,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":88.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"4\":{\"Nets\":\"Net 5\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":13,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":99.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":8.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"5\":{\"Nets\":\"Net 6\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":651,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":85.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"6\":{\"Nets\":\"Net 7\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":2225,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":72.4,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"7\":{\"Nets\":\"Net 8\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":98.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":9.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"8\":{\"Nets\":\"Net 9\",\"Date of impregnation\":\"May 2014\",\"Brand\":\"Royal sentry\",\"Physical integrity of LLIN - pHI\":1180,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":95.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"9\":{\"Nets\":\"Net 10\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":1395,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":87.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"}}\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Funding\n", - "\n", - "This research was funded by the Royal Society of Tropical Medicine and Hygiene (RSTM#) through a small grant awarded to DM and the Wellcome Trust through a Wellcome Trust Training fellowship in public health and tropical medicine to CN (102543/2/13/2). The RSTM# and the Wellcome Trust have no role in the design of the study and collection, analysis, and interpretation of data and in writing the manuscript.\n", - "\n", - "header: Abbreviations\n", - "\n", - "DDT: Dichlorodiphenyltrichloroethane; ER: Entomological inoculation rate; ELISA CSP: Enzyme-linked immunosorbent assay to detect the circumsporolite protein; HL: Human landing catch method; Adv: Knockdown resistance; LINK: long-lasting insecticidal net; pH: Proportionate hole index; WHORES: World Health Organization Pesticides Evaluation Scheme\n", - "\n", - "header: Author details\n", - "\n", - "1 Laboratory of Parasitology and Ecology, Faculty of Sciences, University of Yaoundet i P.O. Box 812, Yaoundet, Cameroon. 1 Institute for the Recherche de Yaoundet (FR), Organizing the Coordination pour la Tutte Contre les Endrines en Afrique Centrale (OCEAC), PO. Box 283, Yaoundet, Cameroon. 3 Department of Biological Sciences, Faculty of Medicine and Pharmaceutical Sciences, University of Ouala, PO. Box 2415, Ouala, Cameroon. 4 Department of Parasitology and Microbiology, Centre for Research in Infectious Diseases (RDI), PO. Box 13591, Yaounde, Cameroon. 5 Animal Organisms Laboratory, Faculty of Sciences, University of Ouala, PO. Box 24157, Douala, Cameroon.\n", - "\n", - "header: Insecticide bioassays and knockdown resistance detection\n", - "\n", - "Larvae of _An. gambiae_ (_s.l._) were collected in stagnant pools of water and reared in the insectary of the medical entomology laboratory of OCEAC. F1 adults that emerged from those larvae were fed with 10% sucrose solution made by dissolving 100 g of ordinary white sugar in 1 L of water [22]. _Anopheles funestus_ was not tested due to the low number of adults obtained following larval collections and rearing. The susceptibility of the F1 adults to 0.75% permethrin and 0.05% deltamethrin, both pyrethroid pesticides, was assessed using a World Health Organization (WHO) standard test procedure [23]. Tests were performed at 25 +- 2 degC, 806 +- 10% relative humidity (RH). For each insecticide, four batches of 20-25 field F1 females, aged between 2 and 5 days, were exposed to insecticide-impregnated papers in WHO test-tube for 1 h. At the same time, two batches of the same number of mosquitoes were exposed to untreated papers as control. At the end of the insecticide exposure period, the number of knocked-down mosquitoes was recorded, following which the mosquitoes were transferred into holding tubes. Cotton balls that had first been soaked in a 10% sugar solution and then the moisture squeezed out were placed at the mouth of the tubes. The mortality was recorded 24 h later. Mortality rate in the tested samples was corrected using Abbott's formula [24], when the mortality in the control tubes varied between 5 to 20%. The knockdown resistance (_kdr_) mutation L1014F, which is responsible of cross resistance to DDT (dichlorodiphenyl-trichloroethane) and pyrethroids was genotyped using the protocol described by Martinez-Tores et al. [25].\n", - "\n", - "header: Table 1 Plasmodium circumsporozoite index, human biting rate and monthly entomological inoculation rate of Anopheles species in Mvoua between August 2018 and April 2019\n", - "footer: Human-biting rate (HBR) is the average number of bites received per person per night; (ii) Plasmodium circumsporozoite index (infection rate) is the proportion of mosquitoes found with Plasmodium circumsporozoite antigen in the heads and thoraces; entomological inoculation rate is the product of the HBR and circumsporozoite rateNC not calculated\n", - "columns: ['Anopheles species', 'Tested (N)', 'Positive (N)', 'Entomological parameters - Plasmodium circumsporozoite index (%)', 'Entomological parameters - Human biting rate', 'Entomological parameters - Human biting rate.1', 'Entomological parameters - Entomological inoculation rate/ month']\n", - "\n", - "{\"0\":{\"Anopheles species\":\"An. funestus (s.l.)\",\"Tested (N)\":65,\"Positive (N)\":7,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"10.77\",\"Entomological parameters - Human biting rate\":0.55,\"Entomological parameters - Human biting rate.1\":0.55,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.5\"},\"1\":{\"Anopheles species\":\"An. gambiae (s.l.)\",\"Tested (N)\":42,\"Positive (N)\":6,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"14.29\",\"Entomological parameters - Human biting rate\":0.35,\"Entomological parameters - Human biting rate.1\":0.35,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.2\"},\"2\":{\"Anopheles species\":\"An. ziemanii\",\"Tested (N)\":3,\"Positive (N)\":0,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"0\",\"Entomological parameters - Human biting rate\":0.02,\"Entomological parameters - Human biting rate.1\":0.02,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"NC\"},\"3\":{\"Anopheles species\":\"Total\",\"Tested (N)\":110,\"Positive (N)\":13,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"11.81%\",\"Entomological parameters - Human biting rate\":0.93,\"Entomological parameters - Human biting rate.1\":0.93,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"2.7\"}}\n", - "\n", - "header: Bed net coverage, use and maintenance\n", - "\n", - "Bed net ownership was investigated in 80 of 97 the households that currently make up the village through visual inspection. The heads of these households or their representatives were questioned on their use of nets and their maintenance. The number of people living in each house was recorded to estimate net coverage. Household net ownership was defined as the percentage of households owning at least one LLIN. Net coverage defined as the percentage of households with at least one LLIN for every two people was also determined.\n", - "\n", - "header: Ethics approval and consent to participate\n", - "\n", - "The study was approved by the Carneroonian National Ethical Committee for Research on Human Health (Statement No 2018/07/20/CE/NIRER/SFD). One week before the beginning of field activities, the population received a notice of information explaining the objectives, methodology, expected benefits and possible risks of the study. A consent form was sought from the head of households and for participants aged > 18 years for mosquito collection. They were given the opportunity to ask questions and they were informed that they are free to withdraw from the study at any time, without penalty or loss of benefits. At the end of each sampling period, all mosquito collectors were given anti-malaria prophylaxis based on artesunate/amodiaquine according to the national guide for malaria treatment.\n", - "\n", - "header: Competing interests\n", - "\n", - "The authors declare they have no competing interests.\n", - "\n", - "header: Data analysis\n", - "\n", - "Data were analyzed using SPSS software version 25 (IBM Corp., Armonk, NY, USA). The entomological parameters that were considered were: (i) human-biting rate (HBR), i.e. the average number of bites received per person per night; (ii) infection rate, i.e. the proportion of mosquitoes found with _Plasmodium_ circumsporozoite antigen in the heads and thoraces; (iii) entomological inoculation rate (EIR), i.e. the product of the HBR and circumsporozoite rate. Chi-square statistics was used to compare mosquito densities between seasons while mosquitoes' seasonal aggressiveness (HBR) were compared by the Kruskal-Wallis test. Differences were considered statistically significant at \\(P\\) < 0.05.\n", - "\n", - "header: Possession, coverage and use of LLINs\n", - "\n", - "In general, 81.25% of the households inspected possessed at least one LLIN. Despite this high level of ownership, the proportion of households that met the ratio of one net for two persons was only 47.69%. Fortunately, 81.54% of the people interviewed affirmed they used their bed nets every night (Table 3). Of the LLINs available, 92.3% were acquired during the government free mass distribution campaigns of 2011-2012 and 2015-2016. Although almost 70% of the study population affirmed that they have been educated by the public health community agents during the distribution campaigns, only 10.52% knew bed nets should be dried in the shade before usage or after washing. Moreover, 56.46% of respondents had washed their bet nets at least once; 63.15% used water and ordinary soap while 36.85% used detergents soap and bleach (Table 3).\n", - "\n", - "header: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Table 2 Anopheles gambiae complex species composition and the frequency of the knockdown resistance L1014F mutation\n", - "footer: kdr-L1014F, Knockdown resistance L1014F mutation; R resistance; S, susceptible\n", - "columns: ['Anopheles species - Unnamed: 0_level_1', 'Composition - N', 'Composition - %', 'kdr-L1014F genotypes - RR', 'kdr-L1014F genotypes - RS', 'kdr-L1014F genotypes - SS', 'kdr-L1014F alleles (%) - R', 'kdr-L1014F alleles (%) - S']\n", - "\n", - "{\"0\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. gambiae\",\"Composition - N\":28,\"Composition - %\":71.8,\"kdr-L1014F genotypes - RR\":27,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":0,\"kdr-L1014F alleles (%) - R\":98.21,\"kdr-L1014F alleles (%) - S\":1.79},\"1\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. coluzzii\",\"Composition - N\":11,\"Composition - %\":28.2,\"kdr-L1014F genotypes - RR\":8,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":77.27,\"kdr-L1014F alleles (%) - S\":22.73},\"2\":{\"Anopheles species - Unnamed: 0_level_1\":\"Total\",\"Composition - N\":39,\"Composition - %\":100.0,\"kdr-L1014F genotypes - RR\":35,\"kdr-L1014F genotypes - RS\":2,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":92.31,\"kdr-L1014F alleles (%) - S\":7.69}}\n", - "\n", - "header: Bed net integrity and bio-efficacy\n", - "\n", - "Ten bed nets were randomly collected from ten selected houses and immediately replaced by new ones. The physical integrity of the nets collected was determined by counting, per category, the number of holes that were approximately the size of a person's thumb, fist or head, or larger than a head, on any of the four faces and the top of the bed net [26, 27]. The proportionate hole index (pH) was calculated using the WHO Pesticide Evaluation Scheme (WHOPES ) guidelines [11] and nets were classified into four classes accordingly [28, 29]. Nets with a pHI <25 were classified as \"good\"; those with a pH ranging between 25 and 174, as \"fair\"; those nets with a pHI ranging from 175 to 299, as \"mediocre\"; and those with a pHI > 300, as \"poor\".\n", - "\n", - "\n", - "Cone assays were performed on each net to test for its bio-efficacy as described in WHO guidelines [30]. Four cones were fixed by their widest opening onto four different parts of each face (4 sides and 1 roof) of each net. Ten unfed _An. gambiae_ (_s.l._) female mosquitoes aged 2-5 days were introduced into each cone using a mouth aspirator, for a total of 200 specimens per net. After 3 min of exposure, the mosquitoes were removed from the cones, then transferred into paper cups and fed with a 10% sugar solution. The assay was conducted at 25 +- 1 degC, 80% +- 5% RH, and the number of mosquitoes knocked-down and dead were recorded after 60 min and 24 h, respectively. An untreated net was used as the negative control.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "The datasets generated and/or analysed during the current study are available from the corresponding author on reasonable request.\n", - "\n", - "header: Physical integrity and effectiveness of LLINs\n", - "\n", - "Ten LLINs aged 3-7 years old were sampled to assess their physical integrity and bio-efficacy. A total of 161 holes belonging to all the four different types described by WHOPES (the size of a person's thumb, fist or head, or larger than a head) were counted, with a mean of 17 holes per bed net. The proportion of these holes per type was 52.79% (thumb size), 32.29% (fist size), 9.93% (head size) and 4.96% (large than head size). Of the ten LLINs examined, seven (70%) were damaged and were found to be in poor condition (pHI > 300) (Table 4).\n", - "\n", - "A total of 2000 specimens of the _An. gambiae_ (_s.l._) susceptible Kisumu strain were exposed to the ten bed nets. Eight of these nets were effective against this strain, with mortality rates > 80%. Exposure of the same number of _An. gambiae_ (_s.l._) field F1 mosquitoes to these LLINs revealed that they were all ineffective, with mortalities ranging from 0 to 11.5% (Table 4).\n", - "\n", - "header: Study area: Adult mosquito collection\n", - "\n", - "Collections of adult host-seeking mosquitoes were undertaken employing both the CDC light trap (CDC-LT) and human landing catch (HLC) methods. Because no mosquito was collected using the CDC-LTs after two consecutive nights of sampling, this method was discarded.\n", - "\n", - "Sampling using the HLC method was performed in ten randomly selected houses situated at least 100 m apart. The method involved persons sitting with their lower legs exposed and then collecting mosquitoes that just landed on them [14]. Adult mosquitoes were sampled both indoors and outdoors during two consecutive nights, once per each of the four seasons. Mosquitoes collected each hour were placed into separate bags, labeled accordingly and brought back to the laboratory for further analysis. To avoid bias due to sleep and tiredness, one team of collectors worked from 18:00 h to midnight, and was replaced by another team which worked from midnight to 6:00 h.\n", - "\n", - "header: Conclusion\n", - "\n", - "A combination of elevated _P. falciparum_ infection in _Anopheles_ vector populations, insufficient coverage and loss of effectiveness of LLINs due to physical degradation, as well as high resistance to pyrethroid insecticides is responsible for the persistence of high malaria transmission in forested rural area of Mvoua, Cameroon.\n", - "\n", - "header: Table 4 Hole index and mortality of An. gambiae (s.l.) after being exposed to the long‑lasting insecticidal nets\n", - "footer: Not eff., not e\u001d\n", - "fficient; PHI, proportionate hole index\n", - "columns: ['Nets', 'Date of impregnation', 'Brand', 'Physical integrity of LLIN - pHI', 'Physical integrity of LLIN - Status', 'Bio‑efficacy of LLIN (%) - Kisumu control strain', 'Bio‑efficacy of LLIN (%) - Field strain', 'Decision - Unnamed: 7_level_1']\n", - "\n", - "{\"0\":{\"Nets\":\"Net 1\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":0,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":83.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"1\":{\"Nets\":\"Net 2\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":916,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":80.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":0.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"2\":{\"Nets\":\"Net 3\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1939,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":69.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"3\":{\"Nets\":\"Net 4\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":581,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":88.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"4\":{\"Nets\":\"Net 5\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":13,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":99.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":8.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"5\":{\"Nets\":\"Net 6\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":651,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":85.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"6\":{\"Nets\":\"Net 7\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":2225,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":72.4,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"7\":{\"Nets\":\"Net 8\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":98.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":9.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"8\":{\"Nets\":\"Net 9\",\"Date of impregnation\":\"May 2014\",\"Brand\":\"Royal sentry\",\"Physical integrity of LLIN - pHI\":1180,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":95.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"9\":{\"Nets\":\"Net 10\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":1395,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":87.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"}}\n", - "\n", - "header: Results\n", - "\n", - "In total, 129 adult mosquitoes were collected during eight nights. These belonged to four genera, of which _Anopheles_ (_N_ = 110; 85.27%) was the most prevalent, followed in decreasing order of prevalence by _Mansonia_ (_N_ = 11; 8.53%), _Aedes_ (_N_ = 6; 4.65%) and _Culex_ (_N_ = 2; 1.55%). Three _Anopheles_ species were collected namely _An. funestus_ (_s.l._) (59.1%), _An. gambiae_ (_s.l._) (38.18%) and _An. zienanii_ (2.72%). _Anopheles. sp_ were most abundant in the short dry season followed by the long rainy season (49.09% of the total _Anopheles_ collected) and the long rainy season (34.54%).\n", - "\n", - "In terms of seasonal species abundance, _An. funestus_ was the most abundant species collected (59.1%) over the period of study, with the exception of the long rainy season when _An. gambiae_ (_s.l._) predominated (Fig. 1).\n", - "\n", - "header: Table 3 Origin, use and maintenance of long‑lasting insecticidal nets\n", - "footer: LLIN, Long-lasting insecticidal net\n", - "columns: ['Variables related to LLIN', 'N', 'Frequency (%)']\n", - "\n", - "{\"0\":{\"Variables related to LLIN\":\"Possession\",\"N\":\"Possession\",\"Frequency (%)\":\"Possession\"},\"1\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"65\",\"Frequency (%)\":\"81.25\"},\"2\":{\"Variables related to LLIN\":\"No\",\"N\":\"15\",\"Frequency (%)\":\"18.75\"},\"3\":{\"Variables related to LLIN\":\"Origin\",\"N\":\"Origin\",\"Frequency (%)\":\"Origin\"},\"4\":{\"Variables related to LLIN\":\"Government\",\"N\":\"60\",\"Frequency (%)\":\"92.3\"},\"5\":{\"Variables related to LLIN\":\"Market\",\"N\":\"5\",\"Frequency (%)\":\"7.7\"},\"6\":{\"Variables related to LLIN\":\"Installed\",\"N\":\"Installed\",\"Frequency (%)\":\"Installed\"},\"7\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"59\",\"Frequency (%)\":\"90.76\"},\"8\":{\"Variables related to LLIN\":\"No\",\"N\":\"6\",\"Frequency (%)\":\"9.24\"},\"9\":{\"Variables related to LLIN\":\"Presence per 2 persons\",\"N\":\"Presence per 2 persons\",\"Frequency (%)\":\"Presence per 2 persons\"},\"10\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"31\",\"Frequency (%)\":\"47.7\"},\"11\":{\"Variables related to LLIN\":\"No\",\"N\":\"34\",\"Frequency (%)\":\"52.3\"},\"12\":{\"Variables related to LLIN\":\"Usage\",\"N\":\"Usage\",\"Frequency (%)\":\"Usage\"},\"13\":{\"Variables related to LLIN\":\"Every night\",\"N\":\"53\",\"Frequency (%)\":\"81.54\"},\"14\":{\"Variables related to LLIN\":\"Not every night\",\"N\":\"12\",\"Frequency (%)\":\"18.46\"},\"15\":{\"Variables related to LLIN\":\"Education received on LLINs during distribution\",\"N\":\"Education received on LLINs during distribution\",\"Frequency (%)\":\"Education received on LLINs during distribution\"},\"16\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"45\",\"Frequency (%)\":\"69.92\"},\"17\":{\"Variables related to LLIN\":\"No\",\"N\":\"20\",\"Frequency (%)\":\"30.78\"},\"18\":{\"Variables related to LLIN\":\"Had LLIN been washed\",\"N\":\"Had LLIN been washed\",\"Frequency (%)\":\"Had LLIN been washed\"},\"19\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"38\",\"Frequency (%)\":\"58.46\"},\"20\":{\"Variables related to LLIN\":\"No\",\"N\":\"27\",\"Frequency (%)\":\"41.54\"},\"21\":{\"Variables related to LLIN\":\"Substance used for washing\",\"N\":\"Substance used for washing\",\"Frequency (%)\":\"Substance used for washing\"},\"22\":{\"Variables related to LLIN\":\"Ordinary soap\",\"N\":\"24\",\"Frequency (%)\":\"63.15\"},\"23\":{\"Variables related to LLIN\":\"Detergent and bleach\",\"N\":\"14\",\"Frequency (%)\":\"36.85\"},\"24\":{\"Variables related to LLIN\":\"Drying place\",\"N\":\"Drying place\",\"Frequency (%)\":\"Drying place\"},\"25\":{\"Variables related to LLIN\":\"In sun\",\"N\":\"34\",\"Frequency (%)\":\"89.48\"},\"26\":{\"Variables related to LLIN\":\"In shade\",\"N\":\"4\",\"Frequency (%)\":\"10.52\"}}\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Cameroon\",\"Site\":\"Mvoua\",\"Start_month\":7,\"Start_year\":2018,\"End_month\":4,\"End_year\":2019}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}, \"pHI_lower_bound\": {\"title\": \"Phi Lower Bound\", \"description\": \"lowest pHI detected.\"}, \"pHI_upper_bound\": {\"title\": \"Phi Upper Bound\", \"description\": \"lowest pHI detected.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":0.0,\"pHI_upper_bound\":916.0},\"N02\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":0.0,\"pHI_upper_bound\":916.0},\"N03\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":581.0,\"pHI_upper_bound\":1939.0},\"N05\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":13.0,\"pHI_upper_bound\":13.0},\"N06\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":651.0,\"pHI_upper_bound\":651.0},\"N07\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":2225.0,\"pHI_upper_bound\":2225.0},\"N08\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":1.0,\"pHI_upper_bound\":1.0},\"N09\":{\"Net_type\":\"Royal sentry\",\"Net_age\":9.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":1180.0,\"pHI_upper_bound\":1180.0},\"N10\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":1395.0,\"pHI_upper_bound\":1395.0}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Funding\n", - "\n", - "This research was funded by the Royal Society of Tropical Medicine and Hygiene (RSTM#) through a small grant awarded to DM and the Wellcome Trust through a Wellcome Trust Training fellowship in public health and tropical medicine to CN (102543/2/13/2). The RSTM# and the Wellcome Trust have no role in the design of the study and collection, analysis, and interpretation of data and in writing the manuscript.\n", - "\n", - "header: Abbreviations\n", - "\n", - "DDT: Dichlorodiphenyltrichloroethane; ER: Entomological inoculation rate; ELISA CSP: Enzyme-linked immunosorbent assay to detect the circumsporolite protein; HL: Human landing catch method; Adv: Knockdown resistance; LINK: long-lasting insecticidal net; pH: Proportionate hole index; WHORES: World Health Organization Pesticides Evaluation Scheme\n", - "\n", - "header: Insecticide bioassays and knockdown resistance detection\n", - "\n", - "Larvae of _An. gambiae_ (_s.l._) were collected in stagnant pools of water and reared in the insectary of the medical entomology laboratory of OCEAC. F1 adults that emerged from those larvae were fed with 10% sucrose solution made by dissolving 100 g of ordinary white sugar in 1 L of water [22]. _Anopheles funestus_ was not tested due to the low number of adults obtained following larval collections and rearing. The susceptibility of the F1 adults to 0.75% permethrin and 0.05% deltamethrin, both pyrethroid pesticides, was assessed using a World Health Organization (WHO) standard test procedure [23]. Tests were performed at 25 +- 2 degC, 806 +- 10% relative humidity (RH). For each insecticide, four batches of 20-25 field F1 females, aged between 2 and 5 days, were exposed to insecticide-impregnated papers in WHO test-tube for 1 h. At the same time, two batches of the same number of mosquitoes were exposed to untreated papers as control. At the end of the insecticide exposure period, the number of knocked-down mosquitoes was recorded, following which the mosquitoes were transferred into holding tubes. Cotton balls that had first been soaked in a 10% sugar solution and then the moisture squeezed out were placed at the mouth of the tubes. The mortality was recorded 24 h later. Mortality rate in the tested samples was corrected using Abbott's formula [24], when the mortality in the control tubes varied between 5 to 20%. The knockdown resistance (_kdr_) mutation L1014F, which is responsible of cross resistance to DDT (dichlorodiphenyl-trichloroethane) and pyrethroids was genotyped using the protocol described by Martinez-Tores et al. [25].\n", - "\n", - "header: Author details\n", - "\n", - "1 Laboratory of Parasitology and Ecology, Faculty of Sciences, University of Yaoundet i P.O. Box 812, Yaoundet, Cameroon. 1 Institute for the Recherche de Yaoundet (FR), Organizing the Coordination pour la Tutte Contre les Endrines en Afrique Centrale (OCEAC), PO. Box 283, Yaoundet, Cameroon. 3 Department of Biological Sciences, Faculty of Medicine and Pharmaceutical Sciences, University of Ouala, PO. Box 2415, Ouala, Cameroon. 4 Department of Parasitology and Microbiology, Centre for Research in Infectious Diseases (RDI), PO. Box 13591, Yaounde, Cameroon. 5 Animal Organisms Laboratory, Faculty of Sciences, University of Ouala, PO. Box 24157, Douala, Cameroon.\n", - "\n", - "header: Table 1 Plasmodium circumsporozoite index, human biting rate and monthly entomological inoculation rate of Anopheles species in Mvoua between August 2018 and April 2019\n", - "footer: Human-biting rate (HBR) is the average number of bites received per person per night; (ii) Plasmodium circumsporozoite index (infection rate) is the proportion of mosquitoes found with Plasmodium circumsporozoite antigen in the heads and thoraces; entomological inoculation rate is the product of the HBR and circumsporozoite rateNC not calculated\n", - "columns: ['Anopheles species', 'Tested (N)', 'Positive (N)', 'Entomological parameters - Plasmodium circumsporozoite index (%)', 'Entomological parameters - Human biting rate', 'Entomological parameters - Human biting rate.1', 'Entomological parameters - Entomological inoculation rate/ month']\n", - "\n", - "{\"0\":{\"Anopheles species\":\"An. funestus (s.l.)\",\"Tested (N)\":65,\"Positive (N)\":7,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"10.77\",\"Entomological parameters - Human biting rate\":0.55,\"Entomological parameters - Human biting rate.1\":0.55,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.5\"},\"1\":{\"Anopheles species\":\"An. gambiae (s.l.)\",\"Tested (N)\":42,\"Positive (N)\":6,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"14.29\",\"Entomological parameters - Human biting rate\":0.35,\"Entomological parameters - Human biting rate.1\":0.35,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.2\"},\"2\":{\"Anopheles species\":\"An. ziemanii\",\"Tested (N)\":3,\"Positive (N)\":0,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"0\",\"Entomological parameters - Human biting rate\":0.02,\"Entomological parameters - Human biting rate.1\":0.02,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"NC\"},\"3\":{\"Anopheles species\":\"Total\",\"Tested (N)\":110,\"Positive (N)\":13,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"11.81%\",\"Entomological parameters - Human biting rate\":0.93,\"Entomological parameters - Human biting rate.1\":0.93,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"2.7\"}}\n", - "\n", - "header: Bed net coverage, use and maintenance\n", - "\n", - "Bed net ownership was investigated in 80 of 97 the households that currently make up the village through visual inspection. The heads of these households or their representatives were questioned on their use of nets and their maintenance. The number of people living in each house was recorded to estimate net coverage. Household net ownership was defined as the percentage of households owning at least one LLIN. Net coverage defined as the percentage of households with at least one LLIN for every two people was also determined.\n", - "\n", - "header: Competing interests\n", - "\n", - "The authors declare they have no competing interests.\n", - "\n", - "header: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Ethics approval and consent to participate\n", - "\n", - "The study was approved by the Carneroonian National Ethical Committee for Research on Human Health (Statement No 2018/07/20/CE/NIRER/SFD). One week before the beginning of field activities, the population received a notice of information explaining the objectives, methodology, expected benefits and possible risks of the study. A consent form was sought from the head of households and for participants aged > 18 years for mosquito collection. They were given the opportunity to ask questions and they were informed that they are free to withdraw from the study at any time, without penalty or loss of benefits. At the end of each sampling period, all mosquito collectors were given anti-malaria prophylaxis based on artesunate/amodiaquine according to the national guide for malaria treatment.\n", - "\n", - "header: Possession, coverage and use of LLINs\n", - "\n", - "In general, 81.25% of the households inspected possessed at least one LLIN. Despite this high level of ownership, the proportion of households that met the ratio of one net for two persons was only 47.69%. Fortunately, 81.54% of the people interviewed affirmed they used their bed nets every night (Table 3). Of the LLINs available, 92.3% were acquired during the government free mass distribution campaigns of 2011-2012 and 2015-2016. Although almost 70% of the study population affirmed that they have been educated by the public health community agents during the distribution campaigns, only 10.52% knew bed nets should be dried in the shade before usage or after washing. Moreover, 56.46% of respondents had washed their bet nets at least once; 63.15% used water and ordinary soap while 36.85% used detergents soap and bleach (Table 3).\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "The datasets generated and/or analysed during the current study are available from the corresponding author on reasonable request.\n", - "\n", - "header: Data analysis\n", - "\n", - "Data were analyzed using SPSS software version 25 (IBM Corp., Armonk, NY, USA). The entomological parameters that were considered were: (i) human-biting rate (HBR), i.e. the average number of bites received per person per night; (ii) infection rate, i.e. the proportion of mosquitoes found with _Plasmodium_ circumsporozoite antigen in the heads and thoraces; (iii) entomological inoculation rate (EIR), i.e. the product of the HBR and circumsporozoite rate. Chi-square statistics was used to compare mosquito densities between seasons while mosquitoes' seasonal aggressiveness (HBR) were compared by the Kruskal-Wallis test. Differences were considered statistically significant at \\(P\\) < 0.05.\n", - "\n", - "header: Bed net integrity and bio-efficacy\n", - "\n", - "Ten bed nets were randomly collected from ten selected houses and immediately replaced by new ones. The physical integrity of the nets collected was determined by counting, per category, the number of holes that were approximately the size of a person's thumb, fist or head, or larger than a head, on any of the four faces and the top of the bed net [26, 27]. The proportionate hole index (pH) was calculated using the WHO Pesticide Evaluation Scheme (WHOPES ) guidelines [11] and nets were classified into four classes accordingly [28, 29]. Nets with a pHI <25 were classified as \"good\"; those with a pH ranging between 25 and 174, as \"fair\"; those nets with a pHI ranging from 175 to 299, as \"mediocre\"; and those with a pHI > 300, as \"poor\".\n", - "\n", - "\n", - "Cone assays were performed on each net to test for its bio-efficacy as described in WHO guidelines [30]. Four cones were fixed by their widest opening onto four different parts of each face (4 sides and 1 roof) of each net. Ten unfed _An. gambiae_ (_s.l._) female mosquitoes aged 2-5 days were introduced into each cone using a mouth aspirator, for a total of 200 specimens per net. After 3 min of exposure, the mosquitoes were removed from the cones, then transferred into paper cups and fed with a 10% sugar solution. The assay was conducted at 25 +- 1 degC, 80% +- 5% RH, and the number of mosquitoes knocked-down and dead were recorded after 60 min and 24 h, respectively. An untreated net was used as the negative control.\n", - "\n", - "header: Table 2 Anopheles gambiae complex species composition and the frequency of the knockdown resistance L1014F mutation\n", - "footer: kdr-L1014F, Knockdown resistance L1014F mutation; R resistance; S, susceptible\n", - "columns: ['Anopheles species - Unnamed: 0_level_1', 'Composition - N', 'Composition - %', 'kdr-L1014F genotypes - RR', 'kdr-L1014F genotypes - RS', 'kdr-L1014F genotypes - SS', 'kdr-L1014F alleles (%) - R', 'kdr-L1014F alleles (%) - S']\n", - "\n", - "{\"0\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. gambiae\",\"Composition - N\":28,\"Composition - %\":71.8,\"kdr-L1014F genotypes - RR\":27,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":0,\"kdr-L1014F alleles (%) - R\":98.21,\"kdr-L1014F alleles (%) - S\":1.79},\"1\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. coluzzii\",\"Composition - N\":11,\"Composition - %\":28.2,\"kdr-L1014F genotypes - RR\":8,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":77.27,\"kdr-L1014F alleles (%) - S\":22.73},\"2\":{\"Anopheles species - Unnamed: 0_level_1\":\"Total\",\"Composition - N\":39,\"Composition - %\":100.0,\"kdr-L1014F genotypes - RR\":35,\"kdr-L1014F genotypes - RS\":2,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":92.31,\"kdr-L1014F alleles (%) - S\":7.69}}\n", - "\n", - "header: Conclusion\n", - "\n", - "A combination of elevated _P. falciparum_ infection in _Anopheles_ vector populations, insufficient coverage and loss of effectiveness of LLINs due to physical degradation, as well as high resistance to pyrethroid insecticides is responsible for the persistence of high malaria transmission in forested rural area of Mvoua, Cameroon.\n", - "\n", - "header: Physical integrity and effectiveness of LLINs\n", - "\n", - "Ten LLINs aged 3-7 years old were sampled to assess their physical integrity and bio-efficacy. A total of 161 holes belonging to all the four different types described by WHOPES (the size of a person's thumb, fist or head, or larger than a head) were counted, with a mean of 17 holes per bed net. The proportion of these holes per type was 52.79% (thumb size), 32.29% (fist size), 9.93% (head size) and 4.96% (large than head size). Of the ten LLINs examined, seven (70%) were damaged and were found to be in poor condition (pHI > 300) (Table 4).\n", - "\n", - "A total of 2000 specimens of the _An. gambiae_ (_s.l._) susceptible Kisumu strain were exposed to the ten bed nets. Eight of these nets were effective against this strain, with mortality rates > 80%. Exposure of the same number of _An. gambiae_ (_s.l._) field F1 mosquitoes to these LLINs revealed that they were all ineffective, with mortalities ranging from 0 to 11.5% (Table 4).\n", - "\n", - "header: Table 4 Hole index and mortality of An. gambiae (s.l.) after being exposed to the long‑lasting insecticidal nets\n", - "footer: Not eff., not e\u001d\n", - "fficient; PHI, proportionate hole index\n", - "columns: ['Nets', 'Date of impregnation', 'Brand', 'Physical integrity of LLIN - pHI', 'Physical integrity of LLIN - Status', 'Bio‑efficacy of LLIN (%) - Kisumu control strain', 'Bio‑efficacy of LLIN (%) - Field strain', 'Decision - Unnamed: 7_level_1']\n", - "\n", - "{\"0\":{\"Nets\":\"Net 1\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":0,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":83.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"1\":{\"Nets\":\"Net 2\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":916,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":80.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":0.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"2\":{\"Nets\":\"Net 3\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1939,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":69.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"3\":{\"Nets\":\"Net 4\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":581,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":88.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"4\":{\"Nets\":\"Net 5\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":13,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":99.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":8.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"5\":{\"Nets\":\"Net 6\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":651,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":85.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"6\":{\"Nets\":\"Net 7\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":2225,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":72.4,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"7\":{\"Nets\":\"Net 8\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":98.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":9.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"8\":{\"Nets\":\"Net 9\",\"Date of impregnation\":\"May 2014\",\"Brand\":\"Royal sentry\",\"Physical integrity of LLIN - pHI\":1180,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":95.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"9\":{\"Nets\":\"Net 10\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":1395,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":87.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"}}\n", - "\n", - "header: Study area: Adult mosquito collection\n", - "\n", - "Collections of adult host-seeking mosquitoes were undertaken employing both the CDC light trap (CDC-LT) and human landing catch (HLC) methods. Because no mosquito was collected using the CDC-LTs after two consecutive nights of sampling, this method was discarded.\n", - "\n", - "Sampling using the HLC method was performed in ten randomly selected houses situated at least 100 m apart. The method involved persons sitting with their lower legs exposed and then collecting mosquitoes that just landed on them [14]. Adult mosquitoes were sampled both indoors and outdoors during two consecutive nights, once per each of the four seasons. Mosquitoes collected each hour were placed into separate bags, labeled accordingly and brought back to the laboratory for further analysis. To avoid bias due to sleep and tiredness, one team of collectors worked from 18:00 h to midnight, and was replaced by another team which worked from midnight to 6:00 h.\n", - "\n", - "header: Results\n", - "\n", - "In total, 129 adult mosquitoes were collected during eight nights. These belonged to four genera, of which _Anopheles_ (_N_ = 110; 85.27%) was the most prevalent, followed in decreasing order of prevalence by _Mansonia_ (_N_ = 11; 8.53%), _Aedes_ (_N_ = 6; 4.65%) and _Culex_ (_N_ = 2; 1.55%). Three _Anopheles_ species were collected namely _An. funestus_ (_s.l._) (59.1%), _An. gambiae_ (_s.l._) (38.18%) and _An. zienanii_ (2.72%). _Anopheles. sp_ were most abundant in the short dry season followed by the long rainy season (49.09% of the total _Anopheles_ collected) and the long rainy season (34.54%).\n", - "\n", - "In terms of seasonal species abundance, _An. funestus_ was the most abundant species collected (59.1%) over the period of study, with the exception of the long rainy season when _An. gambiae_ (_s.l._) predominated (Fig. 1).\n", - "\n", - "header: Conclusion\n", - "\n", - "The findings of this study highlight high and perennial malaria transmission in Mvoua, with the highest infection rate in _Anopheles_ vectors observed in the short dry season. Three major vectors, namely _An. funestus_, _An. coluzzizi_ and _An. gambiae_, were responsible for the transmission of the disease. This vector displayed a high level of resistance to pyrethroid insecticides due to the _kdr_ mutation, but also probably due to metabolic mechanisms. Although there was a high level of LLIN possession among the households, universal coverage was not reached and LLINs found in the locality were no longer effective against the local _An. gambiae_ (_s.l._) strain. The National Malaria Control Program should provide the locality with new LLINs every 3 years, as recommended by WHO. Preferably, to manage the high pyrethroid resistance observed, these LLINs should incorporate a synergism to block the action of detoxification enzymes. People should be educated on the use and maintenance of LLINs, with an emphasis on the importance of sleeping under LLINs irrespective of season, as well as on the damaging impact of detergents used for their washing.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Cameroon\",\"Site\":\"Mvoua\",\"Start_month\":7,\"Start_year\":2018,\"End_month\":4,\"End_year\":2019}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}, \"pHI_lower_bound\": {\"title\": \"Phi Lower Bound\", \"description\": \"lowest pHI detected.\"}, \"pHI_upper_bound\": {\"title\": \"Phi Upper Bound\", \"description\": \"lowest pHI detected.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":0.0,\"pHI_upper_bound\":916.0},\"N02\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":0.0,\"pHI_upper_bound\":916.0},\"N03\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":581.0,\"pHI_upper_bound\":1939.0},\"N05\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":13.0,\"pHI_upper_bound\":13.0},\"N06\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":651.0,\"pHI_upper_bound\":651.0},\"N07\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":2225.0,\"pHI_upper_bound\":2225.0},\"N08\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":1.0,\"pHI_upper_bound\":1.0},\"N09\":{\"Net_type\":\"Royal sentry\",\"Net_age\":9.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":1180.0,\"pHI_upper_bound\":1180.0},\"N10\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":1395.0,\"pHI_upper_bound\":1395.0}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Background: Methods\n", - "\n", - "A laboratory and a semi-field conditions experimental huts against _Anopheles_ Mosquitoes were conducted in southwestern Ethiopia from September 2015 to January 2016. The bio efficacy of DuraNet(r) was evaluated using the WHO cone bioassay test and then its field efficacy was evaluated using experimental huts against the malaria vector population.\n", - "\n", - "header: CONCLUSION\n", - "\n", - "Both DuraNet(r) and PermanNet 2.0 moderate efficacy against a pyrethroid-resistant population of _An. araabensis_ from Ethiopia. The bio efficacy of DuraNet(r) was found below the WHO recommendation. Therefore, the real impact of the observed insecticide resistance against DuraNet(r) to be further studied under phase-III trials, the need for new alternative vector control tools remains critical.\n", - "\n", - "header: Study area and period: Mosquito rearing and cone bioassay testing.\n", - "\n", - "Anopheles mosquito larvae were collected from field sites near Gilgel-Gibe hydroelectric power production reservoir and reared to adults under standard conditions (25 \\(\\pm\\) 20*C temperature,80 \\(\\pm\\) 4% relative humidity) in tropical and infectious diseases research institute, Sekoru campus, Jimma University, Ethiopia. For WHO cone bioassay test, five 2-5 days age unfed female _An. gambiae s.l._ (presumably _An. ankiensis_ according to Yewhalaw et al., (2009))\\(\\%\\) mosquitoes were used per cone. Twenty mosquitoes (5 mosquito\\({}^{\\text{\\textregistered}}\\) per-cone \\(\\times\\) 4 cone-per sub-sample net piece) were introduced into the cone facing net sample for 3 minutes and then moved to holding paper cups. Then mosquitoes were supplied with a 10% sucrose solution. The number of mosquitoes knocked down and the number of dead mosquitoes were recorded every 10 minute within 60 minutes and 24 hours, respectively. Mosquitoes exposed to untreated DuraNet\\({}^{*}\\) pieces were used as controls and experiment conditions were set to be 27 \\(\\pm\\) 2*C temperature and 75 \\(\\pm\\) 10% relative humidity (RH) throughout the study. Thus, a total of 1260 mosquitoes (63 net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used for complete bioassay testing and another 180 mosquitoes (9 untreated net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used as control.\n", - "\n", - "For net pieces washing each net sub-samples (25 cm \\(\\times\\) 25 cm) were introduced individually into 1-1 beakers containing 0.5 l deionized water, with 2 g/l WHO recommended soap (Savon de Marseille; pH 10-11) added and fully dissolved just before washing. The beakers were then introduced into a water-bath at 30*C and shaken for 10 min at 155 movements per minute. The samples were then removed, rinsed twice for 10 min in clean, deionized water under the same shaking conditions as above, dried at room temperature and stored at 30*C in the dark between washes.\n", - "\n", - "header: Limitation\n", - "\n", - "In this study, supplementary test like chemical assays were not conducted to measure the total insecticide content of the netting before and after wash resistance studies that support better interpretation of the results.\n", - "\n", - "header: Mosquito mortality, blood feeding and exit rates.\n", - "\n", - "Mosquito blood feeding rates, mortality rates and exit rates of the 5 treatments are presented in Table 1. The mean blood feeding rate was significantly lower (_P_ <.001) in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. However, there was no significance difference (_P_ >.05) in blood feeding rate among huts containing untreated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet*2.0. The mean mortality rate was significantly higher (_P_ <.001) among huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*. Higher mean number of mosquitoes were caught while exiting the huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*, however, there was no significant difference (_P_ >.05) among the treatments.\n", - "\n", - "header: Blood feeding inhibition and personal protection.\n", - "\n", - "Unwashed DuraNet* showed strong and better bio-efficacy in terms of blood feeding inhibition when compared to untreated DuraNet* and the rest of the treatment arms. The mean blood feeding rate of mosquitoes collected from a hut with unwashed DuraNet*, Unwashed PernaNet 2.0, twenty times washed DuraNet*, 20 times washed PernaNet 2.0 and Untreated DuraNet*, was 0.8/person-night, 4.1/person-night, 5.7/person-night, 6.0/person-night, and 7.0/person-night respectively. There was significant reduction (_P_ <.001) in blood feeding inhibition in all the treatment arms (hut with unwashed DuraNet*, but with 20 times washed DuraNet*, but with\n", - "\n", - "Figure 2: Mean percent knockdown and mortality of _An. arabiensis_ exposed in 3 minutes cone bioassay to DuraNet®, dimma, and southwestern Ethiopia.\n", - "\n", - "\n", - "unwashed PermaNet 2.0, hut with 20 times washed permanent 2.0) when compared to hut with untreated DuraNet*(control). Blood feeding inhibition can be also expressed as personal protection and unwashed DuraNet* showed the highest personal protection 88.7%, 100%, and 93.3% against _An. arabiensis, An. pbaroensis_, and _An. coustani_, respectively. Both PermaNet 2.0 twenty times washed and DuraNet* washed twenty times showed low to moderate personal protection (45.6% against _An. arabiensis_ to 83% against _An. pbaroensis_) when compared to untreated DuraNet* (Table 2).\n", - "\n", - "header: Discussion\n", - "\n", - "Insecticide resistance remains major threat against the efficacy of long-lasting insecticidal nets, which are key intervention tools in controlling malaria vector. In this study laboratory bioassay was initially conducted using field collected larvae raised to adult population of _An. arabiensis_ to assess the bio-efficacy of unwashed DuraNet* (candidate bed net) and untreated DuraNet* (negative control). Furthermore, field experimental study was conducted on bio-efficacy of unwashed DuraNet* and PermaNet 2.0 following WHOPES standard guidelines in order to corroborate the laboratory findings.5\n", - "\n", - "The cone bioassay tests indicated that exposure of population of _An. arabiensis_ mosquitoes from Gilgel-Gibe area, southwestern Ethiopia, to sections of DuraNet* LLIN resulted in mean knockdown and mean mortality of 93% and 78%, respectively. The mortality result is slightly lower than the range of WHO recommendation (>80%) for public health application. The knockdown effect also is slightly below the required WHOPES recommended levels of 95% and above. In contrast to the above results earlier bio efficacy tests conducted using unwashed DuraNet* in India (Sood et al10; Gunasekaran et al11) showed 100% efficacy when tested against populations of different species of _amopheles_. The slight decline in bio-efficacy of DuraNet* in this study may be due to resistance development of vector populations of _An. arabiensis_ in the study area.8,12 In Ethiopia, Previous studies indicate that populations of _An. Arabiensis_ have developed resistance against insecticides used for net impregnation.13-17\n", - "\n", - "Wash resistant long-lasting insecticidal nets treated with pyrethroids are viewed as an important device in the area of vector control that would lessen the difficulties related to retreating conventional insecticide treated nets.[18] DuraNet*, the alpha-cypermethrin treated net, has similar conditions as that of Interceptor* LLIN and PermaNet* 3.0, which had been given interim but full recommendation since June 2017 by WHOPES.[19]\n", - "\n", - "In current study, DuraNet* showed reduced washing resistance. This is reflected in continues decrease of both mean percent knockdown and mean percent mortality of population of _An. arabiensis_ on exposure to the DuraNet* washed 0 and 20 times, respectively. This is in contrast to the study done by Sood et al[10] which showed no significant difference in percent mortality and percent knockdown of population of _An. caliticiacis_ between unwashed and 20 times washed DuraNet* in India. However, in the same study by Sood et al,[10] DuraNet* showed 100% knockdown but only 45% mortality after 20 washes against _Anopheles gambiae_ which is also consistent with current results. Wash resistance technology is added to the LLIN's materials with the assumption of pyrethroid chemicals such as Alphacypermethrin should have a strong affinity to the polyester netting fibers so that even after forceful washing a thin layer of pyrethroid, practically undetectable by High Performance Liquid Chromatography yet adequately bio active to encourage knockdown and mortality should still continue bound to the fibers.\n", - "\n", - "Comparison of mosquito density collected from experimental huts with (unwashed DuraNet*, 20 times washed DuraNet*, unwashed PermaNet*2.0, 20 times washed PermaNet*2.0, and untreated DuraNet*) showed no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the unwashed DuraNet* compared to untreated DuraNet*. Likewise, a study carried out by Asale et al[8] using experimental huts in the study area showed the absence of significance variation in deterrence among huts containing unwashed PermaNet*2.0, untreated net and DDT sprayed hut. The possible explanation for the absence of significant variation in mosquito density among treatment arms could be accounted to low number of mosquito catches during the study period but the impact of insecticide resistance on the efficacy of the nets to be further studied in phase-III trials.\n", - "\n", - "In this study significant reduction in blood feeding rate was observed in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. Similarly, higher mean mosquito mortality rate was recorded among huts containing treatment arms when compared to hut containing control net (untreated DuraNet*). The results for DuraNet* are new report from Jimma area thus we could not corroborate but, Vector population of _An. arabiensis_ from the study area showed no significant reduction of mortality rate, exit pattern and blood feeding inhibition when tested against PermaNet 2.0.[8]\n", - "\n", - "In this study, DuraNet* and PermaNet 2.0 showed low to moderate killing efficacy against vector population of _An. arabiensis_. Moreover, both DuraNet* and PermaNet 2.0 showed no evidence of killing effect against _An. pbarensis_. According to Kitau et al[20] LLINs and ITNs treated with pyrethroids were more effective at killing _An. gambiae_ and _An. fintetus_ than _An. arabiensis_. Thus, the variations in the outcome variables of Anopheles shown above (DuraNet* and PermaNet 2.0) may be due to different susceptibility status and species differences.\n", - "\n", - "header: Table 1: Mean blood feeding, mortality and exit rates of populations of An. arabiensis exposed to different bed net types in field experimental huts in southwestern Ethiopia.\n", - "footer: Means within the same column and with different letters are signi\u001fcantly different using Tukey means separation test.**Significant at P<.001. *Significant at P<.05.\n", - "\n", - "\n", - "columns: ['TREATMENTS', 'BLOOD-FEEDING RATE MEAN ± SE', 'MORTALITY RATE MEAN ± SE', 'EXIT RATE MEAN ± SE']\n", - "\n", - "{\"0\":{\"TREATMENTS\":\"Untreated DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"77.70 \\u00b1 7.30\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"6.61 \\u00b1 3.80**\",\"EXIT RATE MEAN \\u00b1 SE\":\"26.77 \\u00b1 5.51\"},\"1\":{\"TREATMENTS\":\"Unwashed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"5.80 \\u00b1 2.32**\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"52.38 \\u00b1 5.62\",\"EXIT RATE MEAN \\u00b1 SE\":\"40.42 \\u00b1 5.22\"},\"2\":{\"TREATMENTS\":\"20\\u00d7 washed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"55.94 \\u00b1 6.78\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"28.17 \\u00b1 6.57*\",\"EXIT RATE MEAN \\u00b1 SE\":\"36.24 \\u00b1 5.50\"},\"3\":{\"TREATMENTS\":\"Unwashed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.39 \\u00b1 5.89\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"61.74 \\u00b1 6.09\",\"EXIT RATE MEAN \\u00b1 SE\":\"48.16 \\u00b1 5.53\"},\"4\":{\"TREATMENTS\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.35 \\u00b1 7.01\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"39.87 \\u00b1 6.34\",\"EXIT RATE MEAN \\u00b1 SE\":\"35.32 \\u00b1 5.78\"}}\n", - "\n", - "header: Abstract\n", - "\n", - "Evaluation of Long-Lasting Insecticidal Nets (DuraNet(r)) Under laboratory and Semi-Field Conditions Using Experimental Huts Against _Anopheles Mosquitoes_ in\n", - "\n", - "Jimma Zone\n", - "\n", - " Southwestern Ethiopia\n", - "\n", - "B. Gebremariam(r), W. Birke, W. Zeine, A. Ambelu\n", - "\n", - "\n", - "\n", - "Long-Lasting insecticidal Nets (LLINs) efficacy could be compromised due to a lot of influences together with user compliance and vector population insecticide resistance status. Thus, this study was to assess the biological efficacy of DuraNet(r) with the help of the World Health Organization cone bioassay and field experimental hut.\n", - "\n", - "header: Results\n", - "\n", - "World Health Organization cone bioassay tests against pyrethroid-resistant _An. araabensis_ led to mean percent mortality and knockdown of 78% and 93%, respectively. Washing of DuraNet(r) successively reduced its efficacy from 93% knockdown (0 wash) to 45% knockdown (20 washes). Similarly, mean mortality decreased from 84% (wash) to 47% (20 washes). A total of 1575 female mosquitoes were collected over 40 nights out of which 13738(87.8%) were _An. amabise._ Is Title (74%) were _An. amabensis_. The mean blood-feeding rate was significantly lower (_P_<.001) in hut containing unwashed DuraNet(r) when compared to hut containing untreated DuraNet(r). The mean mortality rate was significantly higher (_P_<.001) in hut containing DuraNet(r) when compared to hut containing untreated DuraNet(r). Unwashed DuraNet(r) showed the highest personal protection 88.7% and 100% against _An. araabensis_ and _An. araabensis_, respectively.\n", - "\n", - "header: The killing effect DuraNet*\n", - "\n", - "DuraNet* (both unwashed and 20 times washed) showed low to moderate killing efficacy (65.93% to 54.03%) against vector population of _An. arabiensis_. Whereas, against _An. pbaroensis_, both unwashed and washed DuraNet* showed no evidence of killing effect (0.00 to 9.0%). Similarly, PermaNet 2.0 (unwashed and washed) showed low to moderate killing effect against population of _An. arabiensis_ (Table 3).\n", - "\n", - "header: Experimental but establishment.: Treatment arms and sleepers rotation\n", - "\n", - "In this experiment, 5 different treatment arms were used. These include (1) Untreated unwashed DuraNet(Negative control) (2) Unwashed treated DuraNet(3) treated DuraNet(20 times washed (4) PermaNet(4) 2.0 20 times washed, and (5) unwashed PermaNet(4) 2.0 (positive control). All nets were 75 denier polyethylene and polyester nets respectively. To simulate wear and tear condition of nets under usage 6 (4 cm \\(\\times\\) 4 cm size) holes were cut in each net (2 holes on each of the sides and 1 hole at each end). The DuraNet(4) LLIN and PermaNet(4) 2.0 were washed according to World Health Organization Stage II washing procedure [5]. For washing, the nets were put in to aluminum bowl with 10 l of tap water and 2g/l of savon de Marseille soap. The nets were agitated for 3 minutes, then soaked for 4 minutes, and agitated again for 3 minutes. The nets were agitated manually by stirring them with a pole at 20 rotations per minute. Thus, each net was washed for a total of 10 minute and then rinsed with clean water by a similar procedure, dried horizontally in the shade and stored at ambient temperature between washes. WHO recognized PermaNet(4) 2.0 LLIN washed 20 times, was used as a positive control to assess DuraNet(4) LLIN performance.\n", - "\n", - "In each data collection night, 2 non-smoker male volunteers aged 20 to 25 were allowed to sleep in each experimental hut with its door remain closed between 19:00 and 07:00 hours. Each team was rotated between treatments on successive nights within a week to avoid possible bias which could arise due to individual attractiveness to mosquitoes. There were 5 successive collection nights (Monday to Friday) and 2 successive break nights for hut ventilation per week. Thus, there were 25 collection nights in order to complete the whole study. Informed written consent was obtained from each sleeper.\n", - "\n", - "header: Cone bioassay and washing resistance: Experimental but trial\n", - "\n", - "_Mosquito entry into the bus._ A total of 1575 Anopheles mosquitoes were entered and collected in the 40 nights during the trial. These consisted of 1373 (87.8%) _An. gambiae_ s.l. presumably _An. arabiensis_ (Yewhalaw et al., 2009), 116 (7.4%) _Angelo custani_ (Laveran), and 107 (6.8%) _An. phareensis_ (Theobald). The mean number of mosquitoes caught per night was 8.75 for _An. arabiensis_, 5.52 for _An. Coastani_, and 6.33 for _An. pharensis._ The mean mosquito entry is not significantly different among the treatment arms (F = 1.277, \\(P\\) >.05). There was no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the Unwashed DuraNet* compared to treated DuraNet* and PernaNet* 2.0 (Table 2).\n", - "\n", - "header: Table 2. Blood-feeding inhibition and personal protection due to DuraNet® LLIN in the experimental huts, southwestern Ethiopia.\n", - "footer: *Significant at P<.05. **Significant at P<.01.\n", - "columns: ['TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2', 'PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)']\n", - "\n", - "{\"0\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Untreated DuraNet\\u00ae (NC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"232 (0**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"43 (0**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"30 (0*)\"},\"1\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"24 (88.7**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"00 (100**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"2 (93.3*)\"},\"2\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"176 (42.4)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"27 (62.8)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"5 (83.3*)\"},\"3\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"131 (45.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"11 (83**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"16 (46.6)\"},\"4\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"192 (38.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"6 (75)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"33 (0*)\"}}\n", - "\n", - "header: Methods\n", - "\n", - "This study was conducted from September 2015 to January 2016 near the Gilgel-Gibe hydroelectric dam area, southwestern Ethiopia. The hydroelectric dam is one of the major hydroelectric dams in Ethiopia with artificial reservoir occupying an estimated area of 62 kmsq,6 It produces around 184 MWh and is located 260 km southwest of the capital Addis Ababa. It has been functional since 2004. The study area is located between latitudes 7*42*50*7N and 07*53*50*7N and longitudes 37*11*22*7E and 37*20*36*E with an altitude ranging from 1672-1864 m above sea level. The area has a sub-humid, warm to hot climate, obtains between 1300 and 1800 mm of rainfall annually and has a mean annual temperature of 19*C. Mostly, the 2 peak seasonal transmissions of malaria occur during the months of September to December and March to May in the study area.\n", - "\n", - "Bio-efficacy testing of LLIN (DuraNet\\({}^{\\text{\\text{\\textregistered}}}\\)) under laboratory setting\n", - "\n", - "\\(LLIN\\)_sample preparation and washing process._ DuraNet\\({}^{*}\\) LLINs (Karur, Tamil Nadu 639006, and India) is treated with alpha-cypermethrin at a target dose of 250 mg/m\\({}^{2}\\) of netting material. It contains 0.55% W/W \\(\\pm\\) 15% alpha-cypermethrin. The alpha-cypermethrin chemical is coated onto filaments at bursting strength of 450 kPa of netting material and of 145 \\(\\pm\\) 5% for seam sub-section per denier yarn. Prior to testing the production date and batch number of all nets were recorded. Seven sub-samples per net (1 from the roof, the rest from side of the net) were taken from each net and prepared for standard LLINs cone tests by cutting 25 cm \\(\\times\\) 25 cm pieces following WHO protocol.7 In this study, 9 candidate nets were used for bio-efficacy testing. Thus, a total of 63 sub-sample net pieces (7 sub-sample pieces from each net \\(\\times\\) 9 DuraNet\\({}^{*}\\)s) individually rolled up in aluminum foil, labeled (by net type, net number and sample area) and kept in a refrigerator prior to the assay. Concurrently 9 (1 sub-sample piece from each untreated DuraNet\\({}^{*}\\)\\(\\times\\) 9 untreated DuraNet\\({}^{*}\\)s) sub-samples (30 cm \\(\\times\\) 30 cm) were individually rolled up in aluminum foil, labeled and kept in a refrigerator prior to the assay.\n", - "\n", - "header: Results\n", - "\n", - "Exposure of wild population of _An. arabiensis_ mosquitoes to net sections of DuraNet* LLIN in WHO bioassay tests gives mean mortality rate of 78% as well as mean knockdown effect of 93%. Mean percent knockdown and percent mortality of DuraNet* LLIN showed significant relationship (\\(R^{2}\\) = 0.797, n = 260, \\(P\\) <.001). The wash resistance activity of DuraNet* LLINs, measured in terms of percent knockdown and mortality is presented in Figure 2. The mean percent knockdown of wild population of _An. arabiensis_ decreased from 93% to 45% up on exposure to the DuraNet* washed 0 and 20 times respectively. The mean percent mortality decreased from 84% to 47% on exposure to the DuraNet* washed 0 and 20 times, respectively. Wash resistance has negative correlation with percent knockdown and percent mortality which means as number of wash increase, percent knockdown and percent mortality declined (\\(r^{2}\\) = 0.333, 96KD = 89.16 \\(\\pm\\) 2.15, \\(P\\) <.001 and \\(r^{2}\\) = 0.236, 90Mt = 81.94 \\(\\pm\\) 1.68, \\(P\\) <.001), respectively.\n", - "\n", - "header: Introduction\n", - "\n", - "Malaria is still one of highest health risks in developing countries with high morbidity and mortality in under 5 children. Assessment of overall economic impact of the disease shows that it accounts for 40% of health cost spending, 30% to 50% of inpatient charges, and up to 50% of outpatient official visits in areas with great malaria.1 According to the world health organization, there were 216 million new incidents of malaria leading to 445 000 death, of which 90% occurred in African countries.2\n", - "\n", - "Footnote 1: [https://developers.com/en/article/](https://developers.com/en/article/)\n", - "\n", - "Long-Lasting insecticidal Nets (LLINs) are uppermost community health apparatuses and, when used by children and pregnant women, subsidize to improving motherly, neonatal, and infant health, with long-lasting reimbursements to the emerging child.3 These nets provide personal barrier from bite by mosquitoes in addition those nets lessen also the transmission of malaria and have excito-repellency effect.4 A total of 505 million insecticidal nets (ITNs) were distributed in developing countries between 2014 and 2016 with household ownership of at least 1 insecticidal net, improved from 50% in 2010 to 80% in 2016. Nevertheless, the ratio of houses with adequate bed nets (ie, 1 net for every 2 people) is very low (43%).2 Following the high demand of bed nets as key vector control intervention, companies are ramping up production and new brand nets are being introduced for public health utilization.\n", - "\n", - "Footnote 2: [https://developers.com/en/article/](https://developers.com/en/article/)\n", - "\n", - "In order for any new long-lasting insecticidal nets to be used in public health, it must gain WHOPES approval.5 The approval process passes through 3 stages of efficacy testing (laboratory, small-scale semi-field, and large-scale field trial). To be classified as a long-lasting insecticidal net, it must \n", - "maintain their effective biological activity for at least 20 World Health Organization recommended washes typical washes under laboratory conditions and 3 years of suggested use under semi-field and field condition.\n", - "\n", - "DuraNet\\({}^{*}\\) is an LLIN developed by the Shobikaa Impex pvt Ltd (Karur, Tamil Nadu 639006, and India). It contains 0.55% w/w \\(\\pm\\) 15% alpha-cypermethrin. The net is a polyethylene fiber coated with a proprietary polymer containing target dose of alpha-cypermethrin at 250 mg/m\\({}^{2}\\). The polymer binds to the fiber and can withstand multiple washings, the active ingredient diffusing in a controlled manner to the surface of the polymer coat to maintain insecticidal efficacy.\n", - "\n", - "Thus, this study was conducted to verify the intended efficacy of the product in the presence of pyrethroid resistance vector population of _An. gambiae_ s.l. using cone bioassay and semi-field experimental huts in southwestern Ethiopia. The cone bioassays were conducted in Tropical and Infectious diseases research institute, Jimma University. The experimental hut study trials were undertaken near the Gilgel-Gibe hydroelectric power dam-I.\n", - "\n", - "header: Mosquito collection, identification and key parameters measured in determination of LLINs efficacy\n", - "\n", - "Mosquitoes were collected from 6:00 to 7:00 each morning inside bed nets, floors, walls, ceilings, and verandas of each experimental hut by the help of mouth aspirators and torches. Then the collected mosquitoes were recorded as dead or alive. Live mosquitoes were held in paper cups and supplied with 10% sucrose solution. The collected mosquitoes were transported to Asendabo Vector Biology Laboratory, Jimma University, where mosquitoes were sorted by genus, sex and morphologically identified using taxonomic keys [9]. Mosquitoes were also scored for their physiological state as unfed, fed, half gravid and gravid. Delayed mortality was recorded after 24 hours. To evaluate the efficacy of DuraNet LLIN against the resistant populations of _An. arabiensis_, different entomological parameters (deterrence, exit, blood feeding inhibition, and mortality rates) were derived from basic measurements.\n", - "\n", - "The primary outcomes were:\n", - "\n", - "1. Deterrence--the reduction in entry in to treatment hut relative to the control hut (ie, huts holding untreated nets);\n", - "2. Mortality--the proportion of mosquitoes killed relative to the total catch size;\n", - "3. Killing effect--the numbers killed by a treatment relative to the untreated control, as derived from the formula; \\[\\text{Killing effect}\\left( \\% \\right) = \\left( \\frac{Kt-Ku}{Tu} \\right) \\ast 100\\]\n", - "\n", - "Where **Kt** is the number dead mosquitoes in the huts with treated nets, **Ku** is the number dead mosquitoes in the huts with untreated nets, and **Tu** is the total entering the huts with untreated nets.\n", - "\n", - "1. Blood Feeding Inhibition-The proportional reduction in blood feeding in huts with treated nets relative to controls with untreated nets.\n", - "\n", - "Figure 1: Experimental hut design of the study.\n", - "\n", - "\n", - "5. Personal Protection--The reduction in mosquito biting by treated nets relative to untreated nets, as derived from the formula \\[\\%\\text{personal protection} = (\\frac{Bu-Bt}{Bu})*100\\]\n", - "\n", - "Where Bu is the total number blood fed mosquitoes in the huts with untreated nets, and Bt is the total number blood fed in the huts with treated nets.\n", - "\n", - "header: Bio-efficacy testing of DuraNet\\({}^{*}\\) LLIN using experimental but\n", - "\n", - "Five experimental huts of West African style, each with 1 room and screened veranda trap were established approximately 500 m from Gilgel-Gibe reservoir shore, southwestern Ethiopia following world health protocol developed for field evaluation of long-lasting insecticidal nets.5 The huts were made from concrete bricks with a corrugated iron roof, a ceiling of white cotton sheeting and a concrete base surrounded by a water filled moat to prevent the entry of ants. Details of the dimensions of the hut, the Verenda trap and \n", - "materials from which the tukuls made were described elsewhere [8]. The slits were constructed from pieces of metal shutters, fixed at an angle of 45\\({}^{\\circ}\\) to create a funnel of 1 cm between slits. The design of window slit allows the inward flight of mosquitoes coming from filed but it will be hardly possible for them to escape once they entered the hut. A veranda trap made of iron mesh (22 mm diameter) was set at the back of each hut for trapping exophilic mosquitoes (Figure 1). It is presumed that some mosquitoes (inherently exophilic or mosquitoes repelled due to the exit-repellency effect of the chemicals impregnated into LLINs) will exit the hut once they enter and then after feeding on their host of choice. Thus, the verenda trap was designed to trap and quantify the proportion of mosquitoes exit the experimental hut and by virtue the efficacy of LLINs under test for its exito-repellent effect. Each night mosquitoes were allowed to enter into the hut via the window slits from the environment and freely move between the room and the verenda trap.\n", - "\n", - "header: Table 3. The overall killing effect of DuraNet® LLIN in experimental hut.\n", - "footer: None\n", - "columns: ['TREATMENT', 'OVERALL KILLING EFFECT (%) - AN. ARABIENSIS', 'OVERALL KILLING EFFECT (%) - AN. PHAROENSIS', 'OVERALL KILLING EFFECT (%) - AN. COUSTANI']\n", - "\n", - "{\"0\":{\"TREATMENT\":\"Unwashed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":65.93,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"0.0*\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":12.33},\"1\":{\"TREATMENT\":\"20\\u00d7washed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":54.03,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":13.4},\"2\":{\"TREATMENT\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":64.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"2.25\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":39.7},\"3\":{\"TREATMENT\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":39.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":20.0}}\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: CONCLUSION\n", - "\n", - "Both DuraNet(r) and PermanNet 2.0 moderate efficacy against a pyrethroid-resistant population of _An. araabensis_ from Ethiopia. The bio efficacy of DuraNet(r) was found below the WHO recommendation. Therefore, the real impact of the observed insecticide resistance against DuraNet(r) to be further studied under phase-III trials, the need for new alternative vector control tools remains critical.\n", - "\n", - "header: Background: Methods\n", - "\n", - "A laboratory and a semi-field conditions experimental huts against _Anopheles_ Mosquitoes were conducted in southwestern Ethiopia from September 2015 to January 2016. The bio efficacy of DuraNet(r) was evaluated using the WHO cone bioassay test and then its field efficacy was evaluated using experimental huts against the malaria vector population.\n", - "\n", - "header: Limitation\n", - "\n", - "In this study, supplementary test like chemical assays were not conducted to measure the total insecticide content of the netting before and after wash resistance studies that support better interpretation of the results.\n", - "\n", - "header: Mosquito mortality, blood feeding and exit rates.\n", - "\n", - "Mosquito blood feeding rates, mortality rates and exit rates of the 5 treatments are presented in Table 1. The mean blood feeding rate was significantly lower (_P_ <.001) in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. However, there was no significance difference (_P_ >.05) in blood feeding rate among huts containing untreated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet*2.0. The mean mortality rate was significantly higher (_P_ <.001) among huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*. Higher mean number of mosquitoes were caught while exiting the huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*, however, there was no significant difference (_P_ >.05) among the treatments.\n", - "\n", - "header: Blood feeding inhibition and personal protection.\n", - "\n", - "Unwashed DuraNet* showed strong and better bio-efficacy in terms of blood feeding inhibition when compared to untreated DuraNet* and the rest of the treatment arms. The mean blood feeding rate of mosquitoes collected from a hut with unwashed DuraNet*, Unwashed PernaNet 2.0, twenty times washed DuraNet*, 20 times washed PernaNet 2.0 and Untreated DuraNet*, was 0.8/person-night, 4.1/person-night, 5.7/person-night, 6.0/person-night, and 7.0/person-night respectively. There was significant reduction (_P_ <.001) in blood feeding inhibition in all the treatment arms (hut with unwashed DuraNet*, but with 20 times washed DuraNet*, but with\n", - "\n", - "Figure 2: Mean percent knockdown and mortality of _An. arabiensis_ exposed in 3 minutes cone bioassay to DuraNet®, dimma, and southwestern Ethiopia.\n", - "\n", - "\n", - "unwashed PermaNet 2.0, hut with 20 times washed permanent 2.0) when compared to hut with untreated DuraNet*(control). Blood feeding inhibition can be also expressed as personal protection and unwashed DuraNet* showed the highest personal protection 88.7%, 100%, and 93.3% against _An. arabiensis, An. pbaroensis_, and _An. coustani_, respectively. Both PermaNet 2.0 twenty times washed and DuraNet* washed twenty times showed low to moderate personal protection (45.6% against _An. arabiensis_ to 83% against _An. pbaroensis_) when compared to untreated DuraNet* (Table 2).\n", - "\n", - "header: Table 1: Mean blood feeding, mortality and exit rates of populations of An. arabiensis exposed to different bed net types in field experimental huts in southwestern Ethiopia.\n", - "footer: Means within the same column and with different letters are signi\u001fcantly different using Tukey means separation test.**Significant at P<.001. *Significant at P<.05.\n", - "\n", - "\n", - "columns: ['TREATMENTS', 'BLOOD-FEEDING RATE MEAN ± SE', 'MORTALITY RATE MEAN ± SE', 'EXIT RATE MEAN ± SE']\n", - "\n", - "{\"0\":{\"TREATMENTS\":\"Untreated DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"77.70 \\u00b1 7.30\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"6.61 \\u00b1 3.80**\",\"EXIT RATE MEAN \\u00b1 SE\":\"26.77 \\u00b1 5.51\"},\"1\":{\"TREATMENTS\":\"Unwashed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"5.80 \\u00b1 2.32**\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"52.38 \\u00b1 5.62\",\"EXIT RATE MEAN \\u00b1 SE\":\"40.42 \\u00b1 5.22\"},\"2\":{\"TREATMENTS\":\"20\\u00d7 washed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"55.94 \\u00b1 6.78\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"28.17 \\u00b1 6.57*\",\"EXIT RATE MEAN \\u00b1 SE\":\"36.24 \\u00b1 5.50\"},\"3\":{\"TREATMENTS\":\"Unwashed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.39 \\u00b1 5.89\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"61.74 \\u00b1 6.09\",\"EXIT RATE MEAN \\u00b1 SE\":\"48.16 \\u00b1 5.53\"},\"4\":{\"TREATMENTS\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.35 \\u00b1 7.01\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"39.87 \\u00b1 6.34\",\"EXIT RATE MEAN \\u00b1 SE\":\"35.32 \\u00b1 5.78\"}}\n", - "\n", - "header: Cone bioassay and washing resistance: Experimental but trial\n", - "\n", - "_Mosquito entry into the bus._ A total of 1575 Anopheles mosquitoes were entered and collected in the 40 nights during the trial. These consisted of 1373 (87.8%) _An. gambiae_ s.l. presumably _An. arabiensis_ (Yewhalaw et al., 2009), 116 (7.4%) _Angelo custani_ (Laveran), and 107 (6.8%) _An. phareensis_ (Theobald). The mean number of mosquitoes caught per night was 8.75 for _An. arabiensis_, 5.52 for _An. Coastani_, and 6.33 for _An. pharensis._ The mean mosquito entry is not significantly different among the treatment arms (F = 1.277, \\(P\\) >.05). There was no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the Unwashed DuraNet* compared to treated DuraNet* and PernaNet* 2.0 (Table 2).\n", - "\n", - "header: Results\n", - "\n", - "World Health Organization cone bioassay tests against pyrethroid-resistant _An. araabensis_ led to mean percent mortality and knockdown of 78% and 93%, respectively. Washing of DuraNet(r) successively reduced its efficacy from 93% knockdown (0 wash) to 45% knockdown (20 washes). Similarly, mean mortality decreased from 84% (wash) to 47% (20 washes). A total of 1575 female mosquitoes were collected over 40 nights out of which 13738(87.8%) were _An. amabise._ Is Title (74%) were _An. amabensis_. The mean blood-feeding rate was significantly lower (_P_<.001) in hut containing unwashed DuraNet(r) when compared to hut containing untreated DuraNet(r). The mean mortality rate was significantly higher (_P_<.001) in hut containing DuraNet(r) when compared to hut containing untreated DuraNet(r). Unwashed DuraNet(r) showed the highest personal protection 88.7% and 100% against _An. araabensis_ and _An. araabensis_, respectively.\n", - "\n", - "header: Discussion\n", - "\n", - "Insecticide resistance remains major threat against the efficacy of long-lasting insecticidal nets, which are key intervention tools in controlling malaria vector. In this study laboratory bioassay was initially conducted using field collected larvae raised to adult population of _An. arabiensis_ to assess the bio-efficacy of unwashed DuraNet* (candidate bed net) and untreated DuraNet* (negative control). Furthermore, field experimental study was conducted on bio-efficacy of unwashed DuraNet* and PermaNet 2.0 following WHOPES standard guidelines in order to corroborate the laboratory findings.5\n", - "\n", - "The cone bioassay tests indicated that exposure of population of _An. arabiensis_ mosquitoes from Gilgel-Gibe area, southwestern Ethiopia, to sections of DuraNet* LLIN resulted in mean knockdown and mean mortality of 93% and 78%, respectively. The mortality result is slightly lower than the range of WHO recommendation (>80%) for public health application. The knockdown effect also is slightly below the required WHOPES recommended levels of 95% and above. In contrast to the above results earlier bio efficacy tests conducted using unwashed DuraNet* in India (Sood et al10; Gunasekaran et al11) showed 100% efficacy when tested against populations of different species of _amopheles_. The slight decline in bio-efficacy of DuraNet* in this study may be due to resistance development of vector populations of _An. arabiensis_ in the study area.8,12 In Ethiopia, Previous studies indicate that populations of _An. Arabiensis_ have developed resistance against insecticides used for net impregnation.13-17\n", - "\n", - "Wash resistant long-lasting insecticidal nets treated with pyrethroids are viewed as an important device in the area of vector control that would lessen the difficulties related to retreating conventional insecticide treated nets.[18] DuraNet*, the alpha-cypermethrin treated net, has similar conditions as that of Interceptor* LLIN and PermaNet* 3.0, which had been given interim but full recommendation since June 2017 by WHOPES.[19]\n", - "\n", - "In current study, DuraNet* showed reduced washing resistance. This is reflected in continues decrease of both mean percent knockdown and mean percent mortality of population of _An. arabiensis_ on exposure to the DuraNet* washed 0 and 20 times, respectively. This is in contrast to the study done by Sood et al[10] which showed no significant difference in percent mortality and percent knockdown of population of _An. caliticiacis_ between unwashed and 20 times washed DuraNet* in India. However, in the same study by Sood et al,[10] DuraNet* showed 100% knockdown but only 45% mortality after 20 washes against _Anopheles gambiae_ which is also consistent with current results. Wash resistance technology is added to the LLIN's materials with the assumption of pyrethroid chemicals such as Alphacypermethrin should have a strong affinity to the polyester netting fibers so that even after forceful washing a thin layer of pyrethroid, practically undetectable by High Performance Liquid Chromatography yet adequately bio active to encourage knockdown and mortality should still continue bound to the fibers.\n", - "\n", - "Comparison of mosquito density collected from experimental huts with (unwashed DuraNet*, 20 times washed DuraNet*, unwashed PermaNet*2.0, 20 times washed PermaNet*2.0, and untreated DuraNet*) showed no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the unwashed DuraNet* compared to untreated DuraNet*. Likewise, a study carried out by Asale et al[8] using experimental huts in the study area showed the absence of significance variation in deterrence among huts containing unwashed PermaNet*2.0, untreated net and DDT sprayed hut. The possible explanation for the absence of significant variation in mosquito density among treatment arms could be accounted to low number of mosquito catches during the study period but the impact of insecticide resistance on the efficacy of the nets to be further studied in phase-III trials.\n", - "\n", - "In this study significant reduction in blood feeding rate was observed in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. Similarly, higher mean mosquito mortality rate was recorded among huts containing treatment arms when compared to hut containing control net (untreated DuraNet*). The results for DuraNet* are new report from Jimma area thus we could not corroborate but, Vector population of _An. arabiensis_ from the study area showed no significant reduction of mortality rate, exit pattern and blood feeding inhibition when tested against PermaNet 2.0.[8]\n", - "\n", - "In this study, DuraNet* and PermaNet 2.0 showed low to moderate killing efficacy against vector population of _An. arabiensis_. Moreover, both DuraNet* and PermaNet 2.0 showed no evidence of killing effect against _An. pbarensis_. According to Kitau et al[20] LLINs and ITNs treated with pyrethroids were more effective at killing _An. gambiae_ and _An. fintetus_ than _An. arabiensis_. Thus, the variations in the outcome variables of Anopheles shown above (DuraNet* and PermaNet 2.0) may be due to different susceptibility status and species differences.\n", - "\n", - "header: The killing effect DuraNet*\n", - "\n", - "DuraNet* (both unwashed and 20 times washed) showed low to moderate killing efficacy (65.93% to 54.03%) against vector population of _An. arabiensis_. Whereas, against _An. pbaroensis_, both unwashed and washed DuraNet* showed no evidence of killing effect (0.00 to 9.0%). Similarly, PermaNet 2.0 (unwashed and washed) showed low to moderate killing effect against population of _An. arabiensis_ (Table 3).\n", - "\n", - "header: Study area and period: Mosquito rearing and cone bioassay testing.\n", - "\n", - "Anopheles mosquito larvae were collected from field sites near Gilgel-Gibe hydroelectric power production reservoir and reared to adults under standard conditions (25 \\(\\pm\\) 20*C temperature,80 \\(\\pm\\) 4% relative humidity) in tropical and infectious diseases research institute, Sekoru campus, Jimma University, Ethiopia. For WHO cone bioassay test, five 2-5 days age unfed female _An. gambiae s.l._ (presumably _An. ankiensis_ according to Yewhalaw et al., (2009))\\(\\%\\) mosquitoes were used per cone. Twenty mosquitoes (5 mosquito\\({}^{\\text{\\textregistered}}\\) per-cone \\(\\times\\) 4 cone-per sub-sample net piece) were introduced into the cone facing net sample for 3 minutes and then moved to holding paper cups. Then mosquitoes were supplied with a 10% sucrose solution. The number of mosquitoes knocked down and the number of dead mosquitoes were recorded every 10 minute within 60 minutes and 24 hours, respectively. Mosquitoes exposed to untreated DuraNet\\({}^{*}\\) pieces were used as controls and experiment conditions were set to be 27 \\(\\pm\\) 2*C temperature and 75 \\(\\pm\\) 10% relative humidity (RH) throughout the study. Thus, a total of 1260 mosquitoes (63 net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used for complete bioassay testing and another 180 mosquitoes (9 untreated net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used as control.\n", - "\n", - "For net pieces washing each net sub-samples (25 cm \\(\\times\\) 25 cm) were introduced individually into 1-1 beakers containing 0.5 l deionized water, with 2 g/l WHO recommended soap (Savon de Marseille; pH 10-11) added and fully dissolved just before washing. The beakers were then introduced into a water-bath at 30*C and shaken for 10 min at 155 movements per minute. The samples were then removed, rinsed twice for 10 min in clean, deionized water under the same shaking conditions as above, dried at room temperature and stored at 30*C in the dark between washes.\n", - "\n", - "header: Abstract\n", - "\n", - "Evaluation of Long-Lasting Insecticidal Nets (DuraNet(r)) Under laboratory and Semi-Field Conditions Using Experimental Huts Against _Anopheles Mosquitoes_ in\n", - "\n", - "Jimma Zone\n", - "\n", - " Southwestern Ethiopia\n", - "\n", - "B. Gebremariam(r), W. Birke, W. Zeine, A. Ambelu\n", - "\n", - "\n", - "\n", - "Long-Lasting insecticidal Nets (LLINs) efficacy could be compromised due to a lot of influences together with user compliance and vector population insecticide resistance status. Thus, this study was to assess the biological efficacy of DuraNet(r) with the help of the World Health Organization cone bioassay and field experimental hut.\n", - "\n", - "header: ORCID iD\n", - "\n", - "Brhane Gebremariam (c) [https://orcid.org/0000-0002-0824-3221](https://orcid.org/0000-0002-0824-3221)\n", - "\n", - "header: Table 2. Blood-feeding inhibition and personal protection due to DuraNet® LLIN in the experimental huts, southwestern Ethiopia.\n", - "footer: *Significant at P<.05. **Significant at P<.01.\n", - "columns: ['TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2', 'PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)']\n", - "\n", - "{\"0\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Untreated DuraNet\\u00ae (NC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"232 (0**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"43 (0**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"30 (0*)\"},\"1\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"24 (88.7**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"00 (100**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"2 (93.3*)\"},\"2\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"176 (42.4)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"27 (62.8)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"5 (83.3*)\"},\"3\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"131 (45.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"11 (83**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"16 (46.6)\"},\"4\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"192 (38.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"6 (75)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"33 (0*)\"}}\n", - "\n", - "header: Results\n", - "\n", - "Exposure of wild population of _An. arabiensis_ mosquitoes to net sections of DuraNet* LLIN in WHO bioassay tests gives mean mortality rate of 78% as well as mean knockdown effect of 93%. Mean percent knockdown and percent mortality of DuraNet* LLIN showed significant relationship (\\(R^{2}\\) = 0.797, n = 260, \\(P\\) <.001). The wash resistance activity of DuraNet* LLINs, measured in terms of percent knockdown and mortality is presented in Figure 2. The mean percent knockdown of wild population of _An. arabiensis_ decreased from 93% to 45% up on exposure to the DuraNet* washed 0 and 20 times respectively. The mean percent mortality decreased from 84% to 47% on exposure to the DuraNet* washed 0 and 20 times, respectively. Wash resistance has negative correlation with percent knockdown and percent mortality which means as number of wash increase, percent knockdown and percent mortality declined (\\(r^{2}\\) = 0.333, 96KD = 89.16 \\(\\pm\\) 2.15, \\(P\\) <.001 and \\(r^{2}\\) = 0.236, 90Mt = 81.94 \\(\\pm\\) 1.68, \\(P\\) <.001), respectively.\n", - "\n", - "header: Experimental but establishment.: Treatment arms and sleepers rotation\n", - "\n", - "In this experiment, 5 different treatment arms were used. These include (1) Untreated unwashed DuraNet(Negative control) (2) Unwashed treated DuraNet(3) treated DuraNet(20 times washed (4) PermaNet(4) 2.0 20 times washed, and (5) unwashed PermaNet(4) 2.0 (positive control). All nets were 75 denier polyethylene and polyester nets respectively. To simulate wear and tear condition of nets under usage 6 (4 cm \\(\\times\\) 4 cm size) holes were cut in each net (2 holes on each of the sides and 1 hole at each end). The DuraNet(4) LLIN and PermaNet(4) 2.0 were washed according to World Health Organization Stage II washing procedure [5]. For washing, the nets were put in to aluminum bowl with 10 l of tap water and 2g/l of savon de Marseille soap. The nets were agitated for 3 minutes, then soaked for 4 minutes, and agitated again for 3 minutes. The nets were agitated manually by stirring them with a pole at 20 rotations per minute. Thus, each net was washed for a total of 10 minute and then rinsed with clean water by a similar procedure, dried horizontally in the shade and stored at ambient temperature between washes. WHO recognized PermaNet(4) 2.0 LLIN washed 20 times, was used as a positive control to assess DuraNet(4) LLIN performance.\n", - "\n", - "In each data collection night, 2 non-smoker male volunteers aged 20 to 25 were allowed to sleep in each experimental hut with its door remain closed between 19:00 and 07:00 hours. Each team was rotated between treatments on successive nights within a week to avoid possible bias which could arise due to individual attractiveness to mosquitoes. There were 5 successive collection nights (Monday to Friday) and 2 successive break nights for hut ventilation per week. Thus, there were 25 collection nights in order to complete the whole study. Informed written consent was obtained from each sleeper.\n", - "\n", - "header: Mosquito collection, identification and key parameters measured in determination of LLINs efficacy\n", - "\n", - "Mosquitoes were collected from 6:00 to 7:00 each morning inside bed nets, floors, walls, ceilings, and verandas of each experimental hut by the help of mouth aspirators and torches. Then the collected mosquitoes were recorded as dead or alive. Live mosquitoes were held in paper cups and supplied with 10% sucrose solution. The collected mosquitoes were transported to Asendabo Vector Biology Laboratory, Jimma University, where mosquitoes were sorted by genus, sex and morphologically identified using taxonomic keys [9]. Mosquitoes were also scored for their physiological state as unfed, fed, half gravid and gravid. Delayed mortality was recorded after 24 hours. To evaluate the efficacy of DuraNet LLIN against the resistant populations of _An. arabiensis_, different entomological parameters (deterrence, exit, blood feeding inhibition, and mortality rates) were derived from basic measurements.\n", - "\n", - "The primary outcomes were:\n", - "\n", - "1. Deterrence--the reduction in entry in to treatment hut relative to the control hut (ie, huts holding untreated nets);\n", - "2. Mortality--the proportion of mosquitoes killed relative to the total catch size;\n", - "3. Killing effect--the numbers killed by a treatment relative to the untreated control, as derived from the formula; \\[\\text{Killing effect}\\left( \\% \\right) = \\left( \\frac{Kt-Ku}{Tu} \\right) \\ast 100\\]\n", - "\n", - "Where **Kt** is the number dead mosquitoes in the huts with treated nets, **Ku** is the number dead mosquitoes in the huts with untreated nets, and **Tu** is the total entering the huts with untreated nets.\n", - "\n", - "1. Blood Feeding Inhibition-The proportional reduction in blood feeding in huts with treated nets relative to controls with untreated nets.\n", - "\n", - "Figure 1: Experimental hut design of the study.\n", - "\n", - "\n", - "5. Personal Protection--The reduction in mosquito biting by treated nets relative to untreated nets, as derived from the formula \\[\\%\\text{personal protection} = (\\frac{Bu-Bt}{Bu})*100\\]\n", - "\n", - "Where Bu is the total number blood fed mosquitoes in the huts with untreated nets, and Bt is the total number blood fed in the huts with treated nets.\n", - "\n", - "header: Table 3. The overall killing effect of DuraNet® LLIN in experimental hut.\n", - "footer: None\n", - "columns: ['TREATMENT', 'OVERALL KILLING EFFECT (%) - AN. ARABIENSIS', 'OVERALL KILLING EFFECT (%) - AN. PHAROENSIS', 'OVERALL KILLING EFFECT (%) - AN. COUSTANI']\n", - "\n", - "{\"0\":{\"TREATMENT\":\"Unwashed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":65.93,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"0.0*\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":12.33},\"1\":{\"TREATMENT\":\"20\\u00d7washed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":54.03,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":13.4},\"2\":{\"TREATMENT\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":64.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"2.25\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":39.7},\"3\":{\"TREATMENT\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":39.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":20.0}}\n", - "\n", - "header: Methods\n", - "\n", - "This study was conducted from September 2015 to January 2016 near the Gilgel-Gibe hydroelectric dam area, southwestern Ethiopia. The hydroelectric dam is one of the major hydroelectric dams in Ethiopia with artificial reservoir occupying an estimated area of 62 kmsq,6 It produces around 184 MWh and is located 260 km southwest of the capital Addis Ababa. It has been functional since 2004. The study area is located between latitudes 7*42*50*7N and 07*53*50*7N and longitudes 37*11*22*7E and 37*20*36*E with an altitude ranging from 1672-1864 m above sea level. The area has a sub-humid, warm to hot climate, obtains between 1300 and 1800 mm of rainfall annually and has a mean annual temperature of 19*C. Mostly, the 2 peak seasonal transmissions of malaria occur during the months of September to December and March to May in the study area.\n", - "\n", - "Bio-efficacy testing of LLIN (DuraNet\\({}^{\\text{\\text{\\textregistered}}}\\)) under laboratory setting\n", - "\n", - "\\(LLIN\\)_sample preparation and washing process._ DuraNet\\({}^{*}\\) LLINs (Karur, Tamil Nadu 639006, and India) is treated with alpha-cypermethrin at a target dose of 250 mg/m\\({}^{2}\\) of netting material. It contains 0.55% W/W \\(\\pm\\) 15% alpha-cypermethrin. The alpha-cypermethrin chemical is coated onto filaments at bursting strength of 450 kPa of netting material and of 145 \\(\\pm\\) 5% for seam sub-section per denier yarn. Prior to testing the production date and batch number of all nets were recorded. Seven sub-samples per net (1 from the roof, the rest from side of the net) were taken from each net and prepared for standard LLINs cone tests by cutting 25 cm \\(\\times\\) 25 cm pieces following WHO protocol.7 In this study, 9 candidate nets were used for bio-efficacy testing. Thus, a total of 63 sub-sample net pieces (7 sub-sample pieces from each net \\(\\times\\) 9 DuraNet\\({}^{*}\\)s) individually rolled up in aluminum foil, labeled (by net type, net number and sample area) and kept in a refrigerator prior to the assay. Concurrently 9 (1 sub-sample piece from each untreated DuraNet\\({}^{*}\\)\\(\\times\\) 9 untreated DuraNet\\({}^{*}\\)s) sub-samples (30 cm \\(\\times\\) 30 cm) were individually rolled up in aluminum foil, labeled and kept in a refrigerator prior to the assay.\n", - "\n", - "header: Introduction\n", - "\n", - "Malaria is still one of highest health risks in developing countries with high morbidity and mortality in under 5 children. Assessment of overall economic impact of the disease shows that it accounts for 40% of health cost spending, 30% to 50% of inpatient charges, and up to 50% of outpatient official visits in areas with great malaria.1 According to the world health organization, there were 216 million new incidents of malaria leading to 445 000 death, of which 90% occurred in African countries.2\n", - "\n", - "Footnote 1: [https://developers.com/en/article/](https://developers.com/en/article/)\n", - "\n", - "Long-Lasting insecticidal Nets (LLINs) are uppermost community health apparatuses and, when used by children and pregnant women, subsidize to improving motherly, neonatal, and infant health, with long-lasting reimbursements to the emerging child.3 These nets provide personal barrier from bite by mosquitoes in addition those nets lessen also the transmission of malaria and have excito-repellency effect.4 A total of 505 million insecticidal nets (ITNs) were distributed in developing countries between 2014 and 2016 with household ownership of at least 1 insecticidal net, improved from 50% in 2010 to 80% in 2016. Nevertheless, the ratio of houses with adequate bed nets (ie, 1 net for every 2 people) is very low (43%).2 Following the high demand of bed nets as key vector control intervention, companies are ramping up production and new brand nets are being introduced for public health utilization.\n", - "\n", - "Footnote 2: [https://developers.com/en/article/](https://developers.com/en/article/)\n", - "\n", - "In order for any new long-lasting insecticidal nets to be used in public health, it must gain WHOPES approval.5 The approval process passes through 3 stages of efficacy testing (laboratory, small-scale semi-field, and large-scale field trial). To be classified as a long-lasting insecticidal net, it must \n", - "maintain their effective biological activity for at least 20 World Health Organization recommended washes typical washes under laboratory conditions and 3 years of suggested use under semi-field and field condition.\n", - "\n", - "DuraNet\\({}^{*}\\) is an LLIN developed by the Shobikaa Impex pvt Ltd (Karur, Tamil Nadu 639006, and India). It contains 0.55% w/w \\(\\pm\\) 15% alpha-cypermethrin. The net is a polyethylene fiber coated with a proprietary polymer containing target dose of alpha-cypermethrin at 250 mg/m\\({}^{2}\\). The polymer binds to the fiber and can withstand multiple washings, the active ingredient diffusing in a controlled manner to the surface of the polymer coat to maintain insecticidal efficacy.\n", - "\n", - "Thus, this study was conducted to verify the intended efficacy of the product in the presence of pyrethroid resistance vector population of _An. gambiae_ s.l. using cone bioassay and semi-field experimental huts in southwestern Ethiopia. The cone bioassays were conducted in Tropical and Infectious diseases research institute, Jimma University. The experimental hut study trials were undertaken near the Gilgel-Gibe hydroelectric power dam-I.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Limitation\n", - "\n", - "In this study, supplementary test like chemical assays were not conducted to measure the total insecticide content of the netting before and after wash resistance studies that support better interpretation of the results.\n", - "\n", - "header: Blood feeding inhibition and personal protection.\n", - "\n", - "Unwashed DuraNet* showed strong and better bio-efficacy in terms of blood feeding inhibition when compared to untreated DuraNet* and the rest of the treatment arms. The mean blood feeding rate of mosquitoes collected from a hut with unwashed DuraNet*, Unwashed PernaNet 2.0, twenty times washed DuraNet*, 20 times washed PernaNet 2.0 and Untreated DuraNet*, was 0.8/person-night, 4.1/person-night, 5.7/person-night, 6.0/person-night, and 7.0/person-night respectively. There was significant reduction (_P_ <.001) in blood feeding inhibition in all the treatment arms (hut with unwashed DuraNet*, but with 20 times washed DuraNet*, but with\n", - "\n", - "Figure 2: Mean percent knockdown and mortality of _An. arabiensis_ exposed in 3 minutes cone bioassay to DuraNet®, dimma, and southwestern Ethiopia.\n", - "\n", - "\n", - "unwashed PermaNet 2.0, hut with 20 times washed permanent 2.0) when compared to hut with untreated DuraNet*(control). Blood feeding inhibition can be also expressed as personal protection and unwashed DuraNet* showed the highest personal protection 88.7%, 100%, and 93.3% against _An. arabiensis, An. pbaroensis_, and _An. coustani_, respectively. Both PermaNet 2.0 twenty times washed and DuraNet* washed twenty times showed low to moderate personal protection (45.6% against _An. arabiensis_ to 83% against _An. pbaroensis_) when compared to untreated DuraNet* (Table 2).\n", - "\n", - "header: Background: Methods\n", - "\n", - "A laboratory and a semi-field conditions experimental huts against _Anopheles_ Mosquitoes were conducted in southwestern Ethiopia from September 2015 to January 2016. The bio efficacy of DuraNet(r) was evaluated using the WHO cone bioassay test and then its field efficacy was evaluated using experimental huts against the malaria vector population.\n", - "\n", - "header: CONCLUSION\n", - "\n", - "Both DuraNet(r) and PermanNet 2.0 moderate efficacy against a pyrethroid-resistant population of _An. araabensis_ from Ethiopia. The bio efficacy of DuraNet(r) was found below the WHO recommendation. Therefore, the real impact of the observed insecticide resistance against DuraNet(r) to be further studied under phase-III trials, the need for new alternative vector control tools remains critical.\n", - "\n", - "header: The killing effect DuraNet*\n", - "\n", - "DuraNet* (both unwashed and 20 times washed) showed low to moderate killing efficacy (65.93% to 54.03%) against vector population of _An. arabiensis_. Whereas, against _An. pbaroensis_, both unwashed and washed DuraNet* showed no evidence of killing effect (0.00 to 9.0%). Similarly, PermaNet 2.0 (unwashed and washed) showed low to moderate killing effect against population of _An. arabiensis_ (Table 3).\n", - "\n", - "header: Results\n", - "\n", - "World Health Organization cone bioassay tests against pyrethroid-resistant _An. araabensis_ led to mean percent mortality and knockdown of 78% and 93%, respectively. Washing of DuraNet(r) successively reduced its efficacy from 93% knockdown (0 wash) to 45% knockdown (20 washes). Similarly, mean mortality decreased from 84% (wash) to 47% (20 washes). A total of 1575 female mosquitoes were collected over 40 nights out of which 13738(87.8%) were _An. amabise._ Is Title (74%) were _An. amabensis_. The mean blood-feeding rate was significantly lower (_P_<.001) in hut containing unwashed DuraNet(r) when compared to hut containing untreated DuraNet(r). The mean mortality rate was significantly higher (_P_<.001) in hut containing DuraNet(r) when compared to hut containing untreated DuraNet(r). Unwashed DuraNet(r) showed the highest personal protection 88.7% and 100% against _An. araabensis_ and _An. araabensis_, respectively.\n", - "\n", - "header: Mosquito mortality, blood feeding and exit rates.\n", - "\n", - "Mosquito blood feeding rates, mortality rates and exit rates of the 5 treatments are presented in Table 1. The mean blood feeding rate was significantly lower (_P_ <.001) in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. However, there was no significance difference (_P_ >.05) in blood feeding rate among huts containing untreated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet*2.0. The mean mortality rate was significantly higher (_P_ <.001) among huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*. Higher mean number of mosquitoes were caught while exiting the huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*, however, there was no significant difference (_P_ >.05) among the treatments.\n", - "\n", - "header: Discussion\n", - "\n", - "Insecticide resistance remains major threat against the efficacy of long-lasting insecticidal nets, which are key intervention tools in controlling malaria vector. In this study laboratory bioassay was initially conducted using field collected larvae raised to adult population of _An. arabiensis_ to assess the bio-efficacy of unwashed DuraNet* (candidate bed net) and untreated DuraNet* (negative control). Furthermore, field experimental study was conducted on bio-efficacy of unwashed DuraNet* and PermaNet 2.0 following WHOPES standard guidelines in order to corroborate the laboratory findings.5\n", - "\n", - "The cone bioassay tests indicated that exposure of population of _An. arabiensis_ mosquitoes from Gilgel-Gibe area, southwestern Ethiopia, to sections of DuraNet* LLIN resulted in mean knockdown and mean mortality of 93% and 78%, respectively. The mortality result is slightly lower than the range of WHO recommendation (>80%) for public health application. The knockdown effect also is slightly below the required WHOPES recommended levels of 95% and above. In contrast to the above results earlier bio efficacy tests conducted using unwashed DuraNet* in India (Sood et al10; Gunasekaran et al11) showed 100% efficacy when tested against populations of different species of _amopheles_. The slight decline in bio-efficacy of DuraNet* in this study may be due to resistance development of vector populations of _An. arabiensis_ in the study area.8,12 In Ethiopia, Previous studies indicate that populations of _An. Arabiensis_ have developed resistance against insecticides used for net impregnation.13-17\n", - "\n", - "Wash resistant long-lasting insecticidal nets treated with pyrethroids are viewed as an important device in the area of vector control that would lessen the difficulties related to retreating conventional insecticide treated nets.[18] DuraNet*, the alpha-cypermethrin treated net, has similar conditions as that of Interceptor* LLIN and PermaNet* 3.0, which had been given interim but full recommendation since June 2017 by WHOPES.[19]\n", - "\n", - "In current study, DuraNet* showed reduced washing resistance. This is reflected in continues decrease of both mean percent knockdown and mean percent mortality of population of _An. arabiensis_ on exposure to the DuraNet* washed 0 and 20 times, respectively. This is in contrast to the study done by Sood et al[10] which showed no significant difference in percent mortality and percent knockdown of population of _An. caliticiacis_ between unwashed and 20 times washed DuraNet* in India. However, in the same study by Sood et al,[10] DuraNet* showed 100% knockdown but only 45% mortality after 20 washes against _Anopheles gambiae_ which is also consistent with current results. Wash resistance technology is added to the LLIN's materials with the assumption of pyrethroid chemicals such as Alphacypermethrin should have a strong affinity to the polyester netting fibers so that even after forceful washing a thin layer of pyrethroid, practically undetectable by High Performance Liquid Chromatography yet adequately bio active to encourage knockdown and mortality should still continue bound to the fibers.\n", - "\n", - "Comparison of mosquito density collected from experimental huts with (unwashed DuraNet*, 20 times washed DuraNet*, unwashed PermaNet*2.0, 20 times washed PermaNet*2.0, and untreated DuraNet*) showed no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the unwashed DuraNet* compared to untreated DuraNet*. Likewise, a study carried out by Asale et al[8] using experimental huts in the study area showed the absence of significance variation in deterrence among huts containing unwashed PermaNet*2.0, untreated net and DDT sprayed hut. The possible explanation for the absence of significant variation in mosquito density among treatment arms could be accounted to low number of mosquito catches during the study period but the impact of insecticide resistance on the efficacy of the nets to be further studied in phase-III trials.\n", - "\n", - "In this study significant reduction in blood feeding rate was observed in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. Similarly, higher mean mosquito mortality rate was recorded among huts containing treatment arms when compared to hut containing control net (untreated DuraNet*). The results for DuraNet* are new report from Jimma area thus we could not corroborate but, Vector population of _An. arabiensis_ from the study area showed no significant reduction of mortality rate, exit pattern and blood feeding inhibition when tested against PermaNet 2.0.[8]\n", - "\n", - "In this study, DuraNet* and PermaNet 2.0 showed low to moderate killing efficacy against vector population of _An. arabiensis_. Moreover, both DuraNet* and PermaNet 2.0 showed no evidence of killing effect against _An. pbarensis_. According to Kitau et al[20] LLINs and ITNs treated with pyrethroids were more effective at killing _An. gambiae_ and _An. fintetus_ than _An. arabiensis_. Thus, the variations in the outcome variables of Anopheles shown above (DuraNet* and PermaNet 2.0) may be due to different susceptibility status and species differences.\n", - "\n", - "header: Study area and period: Mosquito rearing and cone bioassay testing.\n", - "\n", - "Anopheles mosquito larvae were collected from field sites near Gilgel-Gibe hydroelectric power production reservoir and reared to adults under standard conditions (25 \\(\\pm\\) 20*C temperature,80 \\(\\pm\\) 4% relative humidity) in tropical and infectious diseases research institute, Sekoru campus, Jimma University, Ethiopia. For WHO cone bioassay test, five 2-5 days age unfed female _An. gambiae s.l._ (presumably _An. ankiensis_ according to Yewhalaw et al., (2009))\\(\\%\\) mosquitoes were used per cone. Twenty mosquitoes (5 mosquito\\({}^{\\text{\\textregistered}}\\) per-cone \\(\\times\\) 4 cone-per sub-sample net piece) were introduced into the cone facing net sample for 3 minutes and then moved to holding paper cups. Then mosquitoes were supplied with a 10% sucrose solution. The number of mosquitoes knocked down and the number of dead mosquitoes were recorded every 10 minute within 60 minutes and 24 hours, respectively. Mosquitoes exposed to untreated DuraNet\\({}^{*}\\) pieces were used as controls and experiment conditions were set to be 27 \\(\\pm\\) 2*C temperature and 75 \\(\\pm\\) 10% relative humidity (RH) throughout the study. Thus, a total of 1260 mosquitoes (63 net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used for complete bioassay testing and another 180 mosquitoes (9 untreated net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used as control.\n", - "\n", - "For net pieces washing each net sub-samples (25 cm \\(\\times\\) 25 cm) were introduced individually into 1-1 beakers containing 0.5 l deionized water, with 2 g/l WHO recommended soap (Savon de Marseille; pH 10-11) added and fully dissolved just before washing. The beakers were then introduced into a water-bath at 30*C and shaken for 10 min at 155 movements per minute. The samples were then removed, rinsed twice for 10 min in clean, deionized water under the same shaking conditions as above, dried at room temperature and stored at 30*C in the dark between washes.\n", - "\n", - "header: Results\n", - "\n", - "Exposure of wild population of _An. arabiensis_ mosquitoes to net sections of DuraNet* LLIN in WHO bioassay tests gives mean mortality rate of 78% as well as mean knockdown effect of 93%. Mean percent knockdown and percent mortality of DuraNet* LLIN showed significant relationship (\\(R^{2}\\) = 0.797, n = 260, \\(P\\) <.001). The wash resistance activity of DuraNet* LLINs, measured in terms of percent knockdown and mortality is presented in Figure 2. The mean percent knockdown of wild population of _An. arabiensis_ decreased from 93% to 45% up on exposure to the DuraNet* washed 0 and 20 times respectively. The mean percent mortality decreased from 84% to 47% on exposure to the DuraNet* washed 0 and 20 times, respectively. Wash resistance has negative correlation with percent knockdown and percent mortality which means as number of wash increase, percent knockdown and percent mortality declined (\\(r^{2}\\) = 0.333, 96KD = 89.16 \\(\\pm\\) 2.15, \\(P\\) <.001 and \\(r^{2}\\) = 0.236, 90Mt = 81.94 \\(\\pm\\) 1.68, \\(P\\) <.001), respectively.\n", - "\n", - "header: Table 1: Mean blood feeding, mortality and exit rates of populations of An. arabiensis exposed to different bed net types in field experimental huts in southwestern Ethiopia.\n", - "footer: Means within the same column and with different letters are signi\u001fcantly different using Tukey means separation test.**Significant at P<.001. *Significant at P<.05.\n", - "\n", - "\n", - "columns: ['TREATMENTS', 'BLOOD-FEEDING RATE MEAN ± SE', 'MORTALITY RATE MEAN ± SE', 'EXIT RATE MEAN ± SE']\n", - "\n", - "{\"0\":{\"TREATMENTS\":\"Untreated DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"77.70 \\u00b1 7.30\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"6.61 \\u00b1 3.80**\",\"EXIT RATE MEAN \\u00b1 SE\":\"26.77 \\u00b1 5.51\"},\"1\":{\"TREATMENTS\":\"Unwashed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"5.80 \\u00b1 2.32**\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"52.38 \\u00b1 5.62\",\"EXIT RATE MEAN \\u00b1 SE\":\"40.42 \\u00b1 5.22\"},\"2\":{\"TREATMENTS\":\"20\\u00d7 washed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"55.94 \\u00b1 6.78\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"28.17 \\u00b1 6.57*\",\"EXIT RATE MEAN \\u00b1 SE\":\"36.24 \\u00b1 5.50\"},\"3\":{\"TREATMENTS\":\"Unwashed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.39 \\u00b1 5.89\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"61.74 \\u00b1 6.09\",\"EXIT RATE MEAN \\u00b1 SE\":\"48.16 \\u00b1 5.53\"},\"4\":{\"TREATMENTS\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.35 \\u00b1 7.01\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"39.87 \\u00b1 6.34\",\"EXIT RATE MEAN \\u00b1 SE\":\"35.32 \\u00b1 5.78\"}}\n", - "\n", - "header: Cone bioassay and washing resistance: Experimental but trial\n", - "\n", - "_Mosquito entry into the bus._ A total of 1575 Anopheles mosquitoes were entered and collected in the 40 nights during the trial. These consisted of 1373 (87.8%) _An. gambiae_ s.l. presumably _An. arabiensis_ (Yewhalaw et al., 2009), 116 (7.4%) _Angelo custani_ (Laveran), and 107 (6.8%) _An. phareensis_ (Theobald). The mean number of mosquitoes caught per night was 8.75 for _An. arabiensis_, 5.52 for _An. Coastani_, and 6.33 for _An. pharensis._ The mean mosquito entry is not significantly different among the treatment arms (F = 1.277, \\(P\\) >.05). There was no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the Unwashed DuraNet* compared to treated DuraNet* and PernaNet* 2.0 (Table 2).\n", - "\n", - "header: Table 2. Blood-feeding inhibition and personal protection due to DuraNet® LLIN in the experimental huts, southwestern Ethiopia.\n", - "footer: *Significant at P<.05. **Significant at P<.01.\n", - "columns: ['TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2', 'PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)']\n", - "\n", - "{\"0\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Untreated DuraNet\\u00ae (NC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"232 (0**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"43 (0**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"30 (0*)\"},\"1\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"24 (88.7**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"00 (100**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"2 (93.3*)\"},\"2\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"176 (42.4)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"27 (62.8)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"5 (83.3*)\"},\"3\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"131 (45.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"11 (83**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"16 (46.6)\"},\"4\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"192 (38.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"6 (75)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"33 (0*)\"}}\n", - "\n", - "header: Experimental but establishment.: Treatment arms and sleepers rotation\n", - "\n", - "In this experiment, 5 different treatment arms were used. These include (1) Untreated unwashed DuraNet(Negative control) (2) Unwashed treated DuraNet(3) treated DuraNet(20 times washed (4) PermaNet(4) 2.0 20 times washed, and (5) unwashed PermaNet(4) 2.0 (positive control). All nets were 75 denier polyethylene and polyester nets respectively. To simulate wear and tear condition of nets under usage 6 (4 cm \\(\\times\\) 4 cm size) holes were cut in each net (2 holes on each of the sides and 1 hole at each end). The DuraNet(4) LLIN and PermaNet(4) 2.0 were washed according to World Health Organization Stage II washing procedure [5]. For washing, the nets were put in to aluminum bowl with 10 l of tap water and 2g/l of savon de Marseille soap. The nets were agitated for 3 minutes, then soaked for 4 minutes, and agitated again for 3 minutes. The nets were agitated manually by stirring them with a pole at 20 rotations per minute. Thus, each net was washed for a total of 10 minute and then rinsed with clean water by a similar procedure, dried horizontally in the shade and stored at ambient temperature between washes. WHO recognized PermaNet(4) 2.0 LLIN washed 20 times, was used as a positive control to assess DuraNet(4) LLIN performance.\n", - "\n", - "In each data collection night, 2 non-smoker male volunteers aged 20 to 25 were allowed to sleep in each experimental hut with its door remain closed between 19:00 and 07:00 hours. Each team was rotated between treatments on successive nights within a week to avoid possible bias which could arise due to individual attractiveness to mosquitoes. There were 5 successive collection nights (Monday to Friday) and 2 successive break nights for hut ventilation per week. Thus, there were 25 collection nights in order to complete the whole study. Informed written consent was obtained from each sleeper.\n", - "\n", - "header: Table 3. The overall killing effect of DuraNet® LLIN in experimental hut.\n", - "footer: None\n", - "columns: ['TREATMENT', 'OVERALL KILLING EFFECT (%) - AN. ARABIENSIS', 'OVERALL KILLING EFFECT (%) - AN. PHAROENSIS', 'OVERALL KILLING EFFECT (%) - AN. COUSTANI']\n", - "\n", - "{\"0\":{\"TREATMENT\":\"Unwashed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":65.93,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"0.0*\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":12.33},\"1\":{\"TREATMENT\":\"20\\u00d7washed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":54.03,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":13.4},\"2\":{\"TREATMENT\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":64.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"2.25\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":39.7},\"3\":{\"TREATMENT\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":39.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":20.0}}\n", - "\n", - "header: Methods\n", - "\n", - "This study was conducted from September 2015 to January 2016 near the Gilgel-Gibe hydroelectric dam area, southwestern Ethiopia. The hydroelectric dam is one of the major hydroelectric dams in Ethiopia with artificial reservoir occupying an estimated area of 62 kmsq,6 It produces around 184 MWh and is located 260 km southwest of the capital Addis Ababa. It has been functional since 2004. The study area is located between latitudes 7*42*50*7N and 07*53*50*7N and longitudes 37*11*22*7E and 37*20*36*E with an altitude ranging from 1672-1864 m above sea level. The area has a sub-humid, warm to hot climate, obtains between 1300 and 1800 mm of rainfall annually and has a mean annual temperature of 19*C. Mostly, the 2 peak seasonal transmissions of malaria occur during the months of September to December and March to May in the study area.\n", - "\n", - "Bio-efficacy testing of LLIN (DuraNet\\({}^{\\text{\\text{\\textregistered}}}\\)) under laboratory setting\n", - "\n", - "\\(LLIN\\)_sample preparation and washing process._ DuraNet\\({}^{*}\\) LLINs (Karur, Tamil Nadu 639006, and India) is treated with alpha-cypermethrin at a target dose of 250 mg/m\\({}^{2}\\) of netting material. It contains 0.55% W/W \\(\\pm\\) 15% alpha-cypermethrin. The alpha-cypermethrin chemical is coated onto filaments at bursting strength of 450 kPa of netting material and of 145 \\(\\pm\\) 5% for seam sub-section per denier yarn. Prior to testing the production date and batch number of all nets were recorded. Seven sub-samples per net (1 from the roof, the rest from side of the net) were taken from each net and prepared for standard LLINs cone tests by cutting 25 cm \\(\\times\\) 25 cm pieces following WHO protocol.7 In this study, 9 candidate nets were used for bio-efficacy testing. Thus, a total of 63 sub-sample net pieces (7 sub-sample pieces from each net \\(\\times\\) 9 DuraNet\\({}^{*}\\)s) individually rolled up in aluminum foil, labeled (by net type, net number and sample area) and kept in a refrigerator prior to the assay. Concurrently 9 (1 sub-sample piece from each untreated DuraNet\\({}^{*}\\)\\(\\times\\) 9 untreated DuraNet\\({}^{*}\\)s) sub-samples (30 cm \\(\\times\\) 30 cm) were individually rolled up in aluminum foil, labeled and kept in a refrigerator prior to the assay.\n", - "\n", - "header: Abstract\n", - "\n", - "Evaluation of Long-Lasting Insecticidal Nets (DuraNet(r)) Under laboratory and Semi-Field Conditions Using Experimental Huts Against _Anopheles Mosquitoes_ in\n", - "\n", - "Jimma Zone\n", - "\n", - " Southwestern Ethiopia\n", - "\n", - "B. Gebremariam(r), W. Birke, W. Zeine, A. Ambelu\n", - "\n", - "\n", - "\n", - "Long-Lasting insecticidal Nets (LLINs) efficacy could be compromised due to a lot of influences together with user compliance and vector population insecticide resistance status. Thus, this study was to assess the biological efficacy of DuraNet(r) with the help of the World Health Organization cone bioassay and field experimental hut.\n", - "\n", - "header: Mosquito collection, identification and key parameters measured in determination of LLINs efficacy\n", - "\n", - "Mosquitoes were collected from 6:00 to 7:00 each morning inside bed nets, floors, walls, ceilings, and verandas of each experimental hut by the help of mouth aspirators and torches. Then the collected mosquitoes were recorded as dead or alive. Live mosquitoes were held in paper cups and supplied with 10% sucrose solution. The collected mosquitoes were transported to Asendabo Vector Biology Laboratory, Jimma University, where mosquitoes were sorted by genus, sex and morphologically identified using taxonomic keys [9]. Mosquitoes were also scored for their physiological state as unfed, fed, half gravid and gravid. Delayed mortality was recorded after 24 hours. To evaluate the efficacy of DuraNet LLIN against the resistant populations of _An. arabiensis_, different entomological parameters (deterrence, exit, blood feeding inhibition, and mortality rates) were derived from basic measurements.\n", - "\n", - "The primary outcomes were:\n", - "\n", - "1. Deterrence--the reduction in entry in to treatment hut relative to the control hut (ie, huts holding untreated nets);\n", - "2. Mortality--the proportion of mosquitoes killed relative to the total catch size;\n", - "3. Killing effect--the numbers killed by a treatment relative to the untreated control, as derived from the formula; \\[\\text{Killing effect}\\left( \\% \\right) = \\left( \\frac{Kt-Ku}{Tu} \\right) \\ast 100\\]\n", - "\n", - "Where **Kt** is the number dead mosquitoes in the huts with treated nets, **Ku** is the number dead mosquitoes in the huts with untreated nets, and **Tu** is the total entering the huts with untreated nets.\n", - "\n", - "1. Blood Feeding Inhibition-The proportional reduction in blood feeding in huts with treated nets relative to controls with untreated nets.\n", - "\n", - "Figure 1: Experimental hut design of the study.\n", - "\n", - "\n", - "5. Personal Protection--The reduction in mosquito biting by treated nets relative to untreated nets, as derived from the formula \\[\\%\\text{personal protection} = (\\frac{Bu-Bt}{Bu})*100\\]\n", - "\n", - "Where Bu is the total number blood fed mosquitoes in the huts with untreated nets, and Bt is the total number blood fed in the huts with treated nets.\n", - "\n", - "header: Introduction\n", - "\n", - "Malaria is still one of highest health risks in developing countries with high morbidity and mortality in under 5 children. Assessment of overall economic impact of the disease shows that it accounts for 40% of health cost spending, 30% to 50% of inpatient charges, and up to 50% of outpatient official visits in areas with great malaria.1 According to the world health organization, there were 216 million new incidents of malaria leading to 445 000 death, of which 90% occurred in African countries.2\n", - "\n", - "Footnote 1: [https://developers.com/en/article/](https://developers.com/en/article/)\n", - "\n", - "Long-Lasting insecticidal Nets (LLINs) are uppermost community health apparatuses and, when used by children and pregnant women, subsidize to improving motherly, neonatal, and infant health, with long-lasting reimbursements to the emerging child.3 These nets provide personal barrier from bite by mosquitoes in addition those nets lessen also the transmission of malaria and have excito-repellency effect.4 A total of 505 million insecticidal nets (ITNs) were distributed in developing countries between 2014 and 2016 with household ownership of at least 1 insecticidal net, improved from 50% in 2010 to 80% in 2016. Nevertheless, the ratio of houses with adequate bed nets (ie, 1 net for every 2 people) is very low (43%).2 Following the high demand of bed nets as key vector control intervention, companies are ramping up production and new brand nets are being introduced for public health utilization.\n", - "\n", - "Footnote 2: [https://developers.com/en/article/](https://developers.com/en/article/)\n", - "\n", - "In order for any new long-lasting insecticidal nets to be used in public health, it must gain WHOPES approval.5 The approval process passes through 3 stages of efficacy testing (laboratory, small-scale semi-field, and large-scale field trial). To be classified as a long-lasting insecticidal net, it must \n", - "maintain their effective biological activity for at least 20 World Health Organization recommended washes typical washes under laboratory conditions and 3 years of suggested use under semi-field and field condition.\n", - "\n", - "DuraNet\\({}^{*}\\) is an LLIN developed by the Shobikaa Impex pvt Ltd (Karur, Tamil Nadu 639006, and India). It contains 0.55% w/w \\(\\pm\\) 15% alpha-cypermethrin. The net is a polyethylene fiber coated with a proprietary polymer containing target dose of alpha-cypermethrin at 250 mg/m\\({}^{2}\\). The polymer binds to the fiber and can withstand multiple washings, the active ingredient diffusing in a controlled manner to the surface of the polymer coat to maintain insecticidal efficacy.\n", - "\n", - "Thus, this study was conducted to verify the intended efficacy of the product in the presence of pyrethroid resistance vector population of _An. gambiae_ s.l. using cone bioassay and semi-field experimental huts in southwestern Ethiopia. The cone bioassays were conducted in Tropical and Infectious diseases research institute, Jimma University. The experimental hut study trials were undertaken near the Gilgel-Gibe hydroelectric power dam-I.\n", - "\n", - "header: ORCID iD\n", - "\n", - "Brhane Gebremariam (c) [https://orcid.org/0000-0002-0824-3221](https://orcid.org/0000-0002-0824-3221)\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Ethiopia\",\"Site\":\"Southwestern Ethiopia\",\"Start_month\":9,\"Start_year\":2015,\"End_month\":1,\"End_year\":2016}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"0.55% W\\/W \\u00b1 15%\",\"Net_washed\":0.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N02\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"0.55% W\\/W \\u00b1 15%\",\"Net_washed\":20.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N03\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"pyrethroid\",\"Concentration_initial\":null,\"Net_washed\":0.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N04\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"pyrethroid\",\"Concentration_initial\":null,\"Net_washed\":20.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Background: Methods\n", - "\n", - "A laboratory and a semi-field conditions experimental huts against _Anopheles_ Mosquitoes were conducted in southwestern Ethiopia from September 2015 to January 2016. The bio efficacy of DuraNet(r) was evaluated using the WHO cone bioassay test and then its field efficacy was evaluated using experimental huts against the malaria vector population.\n", - "\n", - "header: Blood feeding inhibition and personal protection.\n", - "\n", - "Unwashed DuraNet* showed strong and better bio-efficacy in terms of blood feeding inhibition when compared to untreated DuraNet* and the rest of the treatment arms. The mean blood feeding rate of mosquitoes collected from a hut with unwashed DuraNet*, Unwashed PernaNet 2.0, twenty times washed DuraNet*, 20 times washed PernaNet 2.0 and Untreated DuraNet*, was 0.8/person-night, 4.1/person-night, 5.7/person-night, 6.0/person-night, and 7.0/person-night respectively. There was significant reduction (_P_ <.001) in blood feeding inhibition in all the treatment arms (hut with unwashed DuraNet*, but with 20 times washed DuraNet*, but with\n", - "\n", - "Figure 2: Mean percent knockdown and mortality of _An. arabiensis_ exposed in 3 minutes cone bioassay to DuraNet®, dimma, and southwestern Ethiopia.\n", - "\n", - "\n", - "unwashed PermaNet 2.0, hut with 20 times washed permanent 2.0) when compared to hut with untreated DuraNet*(control). Blood feeding inhibition can be also expressed as personal protection and unwashed DuraNet* showed the highest personal protection 88.7%, 100%, and 93.3% against _An. arabiensis, An. pbaroensis_, and _An. coustani_, respectively. Both PermaNet 2.0 twenty times washed and DuraNet* washed twenty times showed low to moderate personal protection (45.6% against _An. arabiensis_ to 83% against _An. pbaroensis_) when compared to untreated DuraNet* (Table 2).\n", - "\n", - "header: Limitation\n", - "\n", - "In this study, supplementary test like chemical assays were not conducted to measure the total insecticide content of the netting before and after wash resistance studies that support better interpretation of the results.\n", - "\n", - "header: CONCLUSION\n", - "\n", - "Both DuraNet(r) and PermanNet 2.0 moderate efficacy against a pyrethroid-resistant population of _An. araabensis_ from Ethiopia. The bio efficacy of DuraNet(r) was found below the WHO recommendation. Therefore, the real impact of the observed insecticide resistance against DuraNet(r) to be further studied under phase-III trials, the need for new alternative vector control tools remains critical.\n", - "\n", - "header: Mosquito mortality, blood feeding and exit rates.\n", - "\n", - "Mosquito blood feeding rates, mortality rates and exit rates of the 5 treatments are presented in Table 1. The mean blood feeding rate was significantly lower (_P_ <.001) in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. However, there was no significance difference (_P_ >.05) in blood feeding rate among huts containing untreated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet*2.0. The mean mortality rate was significantly higher (_P_ <.001) among huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*. Higher mean number of mosquitoes were caught while exiting the huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*, however, there was no significant difference (_P_ >.05) among the treatments.\n", - "\n", - "header: The killing effect DuraNet*\n", - "\n", - "DuraNet* (both unwashed and 20 times washed) showed low to moderate killing efficacy (65.93% to 54.03%) against vector population of _An. arabiensis_. Whereas, against _An. pbaroensis_, both unwashed and washed DuraNet* showed no evidence of killing effect (0.00 to 9.0%). Similarly, PermaNet 2.0 (unwashed and washed) showed low to moderate killing effect against population of _An. arabiensis_ (Table 3).\n", - "\n", - "header: Results\n", - "\n", - "World Health Organization cone bioassay tests against pyrethroid-resistant _An. araabensis_ led to mean percent mortality and knockdown of 78% and 93%, respectively. Washing of DuraNet(r) successively reduced its efficacy from 93% knockdown (0 wash) to 45% knockdown (20 washes). Similarly, mean mortality decreased from 84% (wash) to 47% (20 washes). A total of 1575 female mosquitoes were collected over 40 nights out of which 13738(87.8%) were _An. amabise._ Is Title (74%) were _An. amabensis_. The mean blood-feeding rate was significantly lower (_P_<.001) in hut containing unwashed DuraNet(r) when compared to hut containing untreated DuraNet(r). The mean mortality rate was significantly higher (_P_<.001) in hut containing DuraNet(r) when compared to hut containing untreated DuraNet(r). Unwashed DuraNet(r) showed the highest personal protection 88.7% and 100% against _An. araabensis_ and _An. araabensis_, respectively.\n", - "\n", - "header: Results\n", - "\n", - "Exposure of wild population of _An. arabiensis_ mosquitoes to net sections of DuraNet* LLIN in WHO bioassay tests gives mean mortality rate of 78% as well as mean knockdown effect of 93%. Mean percent knockdown and percent mortality of DuraNet* LLIN showed significant relationship (\\(R^{2}\\) = 0.797, n = 260, \\(P\\) <.001). The wash resistance activity of DuraNet* LLINs, measured in terms of percent knockdown and mortality is presented in Figure 2. The mean percent knockdown of wild population of _An. arabiensis_ decreased from 93% to 45% up on exposure to the DuraNet* washed 0 and 20 times respectively. The mean percent mortality decreased from 84% to 47% on exposure to the DuraNet* washed 0 and 20 times, respectively. Wash resistance has negative correlation with percent knockdown and percent mortality which means as number of wash increase, percent knockdown and percent mortality declined (\\(r^{2}\\) = 0.333, 96KD = 89.16 \\(\\pm\\) 2.15, \\(P\\) <.001 and \\(r^{2}\\) = 0.236, 90Mt = 81.94 \\(\\pm\\) 1.68, \\(P\\) <.001), respectively.\n", - "\n", - "header: Table 1: Mean blood feeding, mortality and exit rates of populations of An. arabiensis exposed to different bed net types in field experimental huts in southwestern Ethiopia.\n", - "footer: Means within the same column and with different letters are signi\u001fcantly different using Tukey means separation test.**Significant at P<.001. *Significant at P<.05.\n", - "\n", - "\n", - "columns: ['TREATMENTS', 'BLOOD-FEEDING RATE MEAN ± SE', 'MORTALITY RATE MEAN ± SE', 'EXIT RATE MEAN ± SE']\n", - "\n", - "{\"0\":{\"TREATMENTS\":\"Untreated DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"77.70 \\u00b1 7.30\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"6.61 \\u00b1 3.80**\",\"EXIT RATE MEAN \\u00b1 SE\":\"26.77 \\u00b1 5.51\"},\"1\":{\"TREATMENTS\":\"Unwashed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"5.80 \\u00b1 2.32**\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"52.38 \\u00b1 5.62\",\"EXIT RATE MEAN \\u00b1 SE\":\"40.42 \\u00b1 5.22\"},\"2\":{\"TREATMENTS\":\"20\\u00d7 washed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"55.94 \\u00b1 6.78\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"28.17 \\u00b1 6.57*\",\"EXIT RATE MEAN \\u00b1 SE\":\"36.24 \\u00b1 5.50\"},\"3\":{\"TREATMENTS\":\"Unwashed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.39 \\u00b1 5.89\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"61.74 \\u00b1 6.09\",\"EXIT RATE MEAN \\u00b1 SE\":\"48.16 \\u00b1 5.53\"},\"4\":{\"TREATMENTS\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.35 \\u00b1 7.01\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"39.87 \\u00b1 6.34\",\"EXIT RATE MEAN \\u00b1 SE\":\"35.32 \\u00b1 5.78\"}}\n", - "\n", - "header: Discussion\n", - "\n", - "Insecticide resistance remains major threat against the efficacy of long-lasting insecticidal nets, which are key intervention tools in controlling malaria vector. In this study laboratory bioassay was initially conducted using field collected larvae raised to adult population of _An. arabiensis_ to assess the bio-efficacy of unwashed DuraNet* (candidate bed net) and untreated DuraNet* (negative control). Furthermore, field experimental study was conducted on bio-efficacy of unwashed DuraNet* and PermaNet 2.0 following WHOPES standard guidelines in order to corroborate the laboratory findings.5\n", - "\n", - "The cone bioassay tests indicated that exposure of population of _An. arabiensis_ mosquitoes from Gilgel-Gibe area, southwestern Ethiopia, to sections of DuraNet* LLIN resulted in mean knockdown and mean mortality of 93% and 78%, respectively. The mortality result is slightly lower than the range of WHO recommendation (>80%) for public health application. The knockdown effect also is slightly below the required WHOPES recommended levels of 95% and above. In contrast to the above results earlier bio efficacy tests conducted using unwashed DuraNet* in India (Sood et al10; Gunasekaran et al11) showed 100% efficacy when tested against populations of different species of _amopheles_. The slight decline in bio-efficacy of DuraNet* in this study may be due to resistance development of vector populations of _An. arabiensis_ in the study area.8,12 In Ethiopia, Previous studies indicate that populations of _An. Arabiensis_ have developed resistance against insecticides used for net impregnation.13-17\n", - "\n", - "Wash resistant long-lasting insecticidal nets treated with pyrethroids are viewed as an important device in the area of vector control that would lessen the difficulties related to retreating conventional insecticide treated nets.[18] DuraNet*, the alpha-cypermethrin treated net, has similar conditions as that of Interceptor* LLIN and PermaNet* 3.0, which had been given interim but full recommendation since June 2017 by WHOPES.[19]\n", - "\n", - "In current study, DuraNet* showed reduced washing resistance. This is reflected in continues decrease of both mean percent knockdown and mean percent mortality of population of _An. arabiensis_ on exposure to the DuraNet* washed 0 and 20 times, respectively. This is in contrast to the study done by Sood et al[10] which showed no significant difference in percent mortality and percent knockdown of population of _An. caliticiacis_ between unwashed and 20 times washed DuraNet* in India. However, in the same study by Sood et al,[10] DuraNet* showed 100% knockdown but only 45% mortality after 20 washes against _Anopheles gambiae_ which is also consistent with current results. Wash resistance technology is added to the LLIN's materials with the assumption of pyrethroid chemicals such as Alphacypermethrin should have a strong affinity to the polyester netting fibers so that even after forceful washing a thin layer of pyrethroid, practically undetectable by High Performance Liquid Chromatography yet adequately bio active to encourage knockdown and mortality should still continue bound to the fibers.\n", - "\n", - "Comparison of mosquito density collected from experimental huts with (unwashed DuraNet*, 20 times washed DuraNet*, unwashed PermaNet*2.0, 20 times washed PermaNet*2.0, and untreated DuraNet*) showed no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the unwashed DuraNet* compared to untreated DuraNet*. Likewise, a study carried out by Asale et al[8] using experimental huts in the study area showed the absence of significance variation in deterrence among huts containing unwashed PermaNet*2.0, untreated net and DDT sprayed hut. The possible explanation for the absence of significant variation in mosquito density among treatment arms could be accounted to low number of mosquito catches during the study period but the impact of insecticide resistance on the efficacy of the nets to be further studied in phase-III trials.\n", - "\n", - "In this study significant reduction in blood feeding rate was observed in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. Similarly, higher mean mosquito mortality rate was recorded among huts containing treatment arms when compared to hut containing control net (untreated DuraNet*). The results for DuraNet* are new report from Jimma area thus we could not corroborate but, Vector population of _An. arabiensis_ from the study area showed no significant reduction of mortality rate, exit pattern and blood feeding inhibition when tested against PermaNet 2.0.[8]\n", - "\n", - "In this study, DuraNet* and PermaNet 2.0 showed low to moderate killing efficacy against vector population of _An. arabiensis_. Moreover, both DuraNet* and PermaNet 2.0 showed no evidence of killing effect against _An. pbarensis_. According to Kitau et al[20] LLINs and ITNs treated with pyrethroids were more effective at killing _An. gambiae_ and _An. fintetus_ than _An. arabiensis_. Thus, the variations in the outcome variables of Anopheles shown above (DuraNet* and PermaNet 2.0) may be due to different susceptibility status and species differences.\n", - "\n", - "header: Study area and period: Mosquito rearing and cone bioassay testing.\n", - "\n", - "Anopheles mosquito larvae were collected from field sites near Gilgel-Gibe hydroelectric power production reservoir and reared to adults under standard conditions (25 \\(\\pm\\) 20*C temperature,80 \\(\\pm\\) 4% relative humidity) in tropical and infectious diseases research institute, Sekoru campus, Jimma University, Ethiopia. For WHO cone bioassay test, five 2-5 days age unfed female _An. gambiae s.l._ (presumably _An. ankiensis_ according to Yewhalaw et al., (2009))\\(\\%\\) mosquitoes were used per cone. Twenty mosquitoes (5 mosquito\\({}^{\\text{\\textregistered}}\\) per-cone \\(\\times\\) 4 cone-per sub-sample net piece) were introduced into the cone facing net sample for 3 minutes and then moved to holding paper cups. Then mosquitoes were supplied with a 10% sucrose solution. The number of mosquitoes knocked down and the number of dead mosquitoes were recorded every 10 minute within 60 minutes and 24 hours, respectively. Mosquitoes exposed to untreated DuraNet\\({}^{*}\\) pieces were used as controls and experiment conditions were set to be 27 \\(\\pm\\) 2*C temperature and 75 \\(\\pm\\) 10% relative humidity (RH) throughout the study. Thus, a total of 1260 mosquitoes (63 net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used for complete bioassay testing and another 180 mosquitoes (9 untreated net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used as control.\n", - "\n", - "For net pieces washing each net sub-samples (25 cm \\(\\times\\) 25 cm) were introduced individually into 1-1 beakers containing 0.5 l deionized water, with 2 g/l WHO recommended soap (Savon de Marseille; pH 10-11) added and fully dissolved just before washing. The beakers were then introduced into a water-bath at 30*C and shaken for 10 min at 155 movements per minute. The samples were then removed, rinsed twice for 10 min in clean, deionized water under the same shaking conditions as above, dried at room temperature and stored at 30*C in the dark between washes.\n", - "\n", - "header: Table 2. Blood-feeding inhibition and personal protection due to DuraNet® LLIN in the experimental huts, southwestern Ethiopia.\n", - "footer: *Significant at P<.05. **Significant at P<.01.\n", - "columns: ['TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2', 'PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)']\n", - "\n", - "{\"0\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Untreated DuraNet\\u00ae (NC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"232 (0**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"43 (0**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"30 (0*)\"},\"1\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"24 (88.7**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"00 (100**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"2 (93.3*)\"},\"2\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"176 (42.4)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"27 (62.8)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"5 (83.3*)\"},\"3\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"131 (45.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"11 (83**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"16 (46.6)\"},\"4\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"192 (38.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"6 (75)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"33 (0*)\"}}\n", - "\n", - "header: Cone bioassay and washing resistance: Experimental but trial\n", - "\n", - "_Mosquito entry into the bus._ A total of 1575 Anopheles mosquitoes were entered and collected in the 40 nights during the trial. These consisted of 1373 (87.8%) _An. gambiae_ s.l. presumably _An. arabiensis_ (Yewhalaw et al., 2009), 116 (7.4%) _Angelo custani_ (Laveran), and 107 (6.8%) _An. phareensis_ (Theobald). The mean number of mosquitoes caught per night was 8.75 for _An. arabiensis_, 5.52 for _An. Coastani_, and 6.33 for _An. pharensis._ The mean mosquito entry is not significantly different among the treatment arms (F = 1.277, \\(P\\) >.05). There was no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the Unwashed DuraNet* compared to treated DuraNet* and PernaNet* 2.0 (Table 2).\n", - "\n", - "header: Experimental but establishment.: Treatment arms and sleepers rotation\n", - "\n", - "In this experiment, 5 different treatment arms were used. These include (1) Untreated unwashed DuraNet(Negative control) (2) Unwashed treated DuraNet(3) treated DuraNet(20 times washed (4) PermaNet(4) 2.0 20 times washed, and (5) unwashed PermaNet(4) 2.0 (positive control). All nets were 75 denier polyethylene and polyester nets respectively. To simulate wear and tear condition of nets under usage 6 (4 cm \\(\\times\\) 4 cm size) holes were cut in each net (2 holes on each of the sides and 1 hole at each end). The DuraNet(4) LLIN and PermaNet(4) 2.0 were washed according to World Health Organization Stage II washing procedure [5]. For washing, the nets were put in to aluminum bowl with 10 l of tap water and 2g/l of savon de Marseille soap. The nets were agitated for 3 minutes, then soaked for 4 minutes, and agitated again for 3 minutes. The nets were agitated manually by stirring them with a pole at 20 rotations per minute. Thus, each net was washed for a total of 10 minute and then rinsed with clean water by a similar procedure, dried horizontally in the shade and stored at ambient temperature between washes. WHO recognized PermaNet(4) 2.0 LLIN washed 20 times, was used as a positive control to assess DuraNet(4) LLIN performance.\n", - "\n", - "In each data collection night, 2 non-smoker male volunteers aged 20 to 25 were allowed to sleep in each experimental hut with its door remain closed between 19:00 and 07:00 hours. Each team was rotated between treatments on successive nights within a week to avoid possible bias which could arise due to individual attractiveness to mosquitoes. There were 5 successive collection nights (Monday to Friday) and 2 successive break nights for hut ventilation per week. Thus, there were 25 collection nights in order to complete the whole study. Informed written consent was obtained from each sleeper.\n", - "\n", - "header: ORCID iD\n", - "\n", - "Brhane Gebremariam (c) [https://orcid.org/0000-0002-0824-3221](https://orcid.org/0000-0002-0824-3221)\n", - "\n", - "header: Table 3. The overall killing effect of DuraNet® LLIN in experimental hut.\n", - "footer: None\n", - "columns: ['TREATMENT', 'OVERALL KILLING EFFECT (%) - AN. ARABIENSIS', 'OVERALL KILLING EFFECT (%) - AN. PHAROENSIS', 'OVERALL KILLING EFFECT (%) - AN. COUSTANI']\n", - "\n", - "{\"0\":{\"TREATMENT\":\"Unwashed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":65.93,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"0.0*\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":12.33},\"1\":{\"TREATMENT\":\"20\\u00d7washed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":54.03,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":13.4},\"2\":{\"TREATMENT\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":64.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"2.25\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":39.7},\"3\":{\"TREATMENT\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":39.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":20.0}}\n", - "\n", - "header: Methods\n", - "\n", - "This study was conducted from September 2015 to January 2016 near the Gilgel-Gibe hydroelectric dam area, southwestern Ethiopia. The hydroelectric dam is one of the major hydroelectric dams in Ethiopia with artificial reservoir occupying an estimated area of 62 kmsq,6 It produces around 184 MWh and is located 260 km southwest of the capital Addis Ababa. It has been functional since 2004. The study area is located between latitudes 7*42*50*7N and 07*53*50*7N and longitudes 37*11*22*7E and 37*20*36*E with an altitude ranging from 1672-1864 m above sea level. The area has a sub-humid, warm to hot climate, obtains between 1300 and 1800 mm of rainfall annually and has a mean annual temperature of 19*C. Mostly, the 2 peak seasonal transmissions of malaria occur during the months of September to December and March to May in the study area.\n", - "\n", - "Bio-efficacy testing of LLIN (DuraNet\\({}^{\\text{\\text{\\textregistered}}}\\)) under laboratory setting\n", - "\n", - "\\(LLIN\\)_sample preparation and washing process._ DuraNet\\({}^{*}\\) LLINs (Karur, Tamil Nadu 639006, and India) is treated with alpha-cypermethrin at a target dose of 250 mg/m\\({}^{2}\\) of netting material. It contains 0.55% W/W \\(\\pm\\) 15% alpha-cypermethrin. The alpha-cypermethrin chemical is coated onto filaments at bursting strength of 450 kPa of netting material and of 145 \\(\\pm\\) 5% for seam sub-section per denier yarn. Prior to testing the production date and batch number of all nets were recorded. Seven sub-samples per net (1 from the roof, the rest from side of the net) were taken from each net and prepared for standard LLINs cone tests by cutting 25 cm \\(\\times\\) 25 cm pieces following WHO protocol.7 In this study, 9 candidate nets were used for bio-efficacy testing. Thus, a total of 63 sub-sample net pieces (7 sub-sample pieces from each net \\(\\times\\) 9 DuraNet\\({}^{*}\\)s) individually rolled up in aluminum foil, labeled (by net type, net number and sample area) and kept in a refrigerator prior to the assay. Concurrently 9 (1 sub-sample piece from each untreated DuraNet\\({}^{*}\\)\\(\\times\\) 9 untreated DuraNet\\({}^{*}\\)s) sub-samples (30 cm \\(\\times\\) 30 cm) were individually rolled up in aluminum foil, labeled and kept in a refrigerator prior to the assay.\n", - "\n", - "header: Abstract\n", - "\n", - "Evaluation of Long-Lasting Insecticidal Nets (DuraNet(r)) Under laboratory and Semi-Field Conditions Using Experimental Huts Against _Anopheles Mosquitoes_ in\n", - "\n", - "Jimma Zone\n", - "\n", - " Southwestern Ethiopia\n", - "\n", - "B. Gebremariam(r), W. Birke, W. Zeine, A. Ambelu\n", - "\n", - "\n", - "\n", - "Long-Lasting insecticidal Nets (LLINs) efficacy could be compromised due to a lot of influences together with user compliance and vector population insecticide resistance status. Thus, this study was to assess the biological efficacy of DuraNet(r) with the help of the World Health Organization cone bioassay and field experimental hut.\n", - "\n", - "header: Introduction\n", - "\n", - "Malaria is still one of highest health risks in developing countries with high morbidity and mortality in under 5 children. Assessment of overall economic impact of the disease shows that it accounts for 40% of health cost spending, 30% to 50% of inpatient charges, and up to 50% of outpatient official visits in areas with great malaria.1 According to the world health organization, there were 216 million new incidents of malaria leading to 445 000 death, of which 90% occurred in African countries.2\n", - "\n", - "Footnote 1: [https://developers.com/en/article/](https://developers.com/en/article/)\n", - "\n", - "Long-Lasting insecticidal Nets (LLINs) are uppermost community health apparatuses and, when used by children and pregnant women, subsidize to improving motherly, neonatal, and infant health, with long-lasting reimbursements to the emerging child.3 These nets provide personal barrier from bite by mosquitoes in addition those nets lessen also the transmission of malaria and have excito-repellency effect.4 A total of 505 million insecticidal nets (ITNs) were distributed in developing countries between 2014 and 2016 with household ownership of at least 1 insecticidal net, improved from 50% in 2010 to 80% in 2016. Nevertheless, the ratio of houses with adequate bed nets (ie, 1 net for every 2 people) is very low (43%).2 Following the high demand of bed nets as key vector control intervention, companies are ramping up production and new brand nets are being introduced for public health utilization.\n", - "\n", - "Footnote 2: [https://developers.com/en/article/](https://developers.com/en/article/)\n", - "\n", - "In order for any new long-lasting insecticidal nets to be used in public health, it must gain WHOPES approval.5 The approval process passes through 3 stages of efficacy testing (laboratory, small-scale semi-field, and large-scale field trial). To be classified as a long-lasting insecticidal net, it must \n", - "maintain their effective biological activity for at least 20 World Health Organization recommended washes typical washes under laboratory conditions and 3 years of suggested use under semi-field and field condition.\n", - "\n", - "DuraNet\\({}^{*}\\) is an LLIN developed by the Shobikaa Impex pvt Ltd (Karur, Tamil Nadu 639006, and India). It contains 0.55% w/w \\(\\pm\\) 15% alpha-cypermethrin. The net is a polyethylene fiber coated with a proprietary polymer containing target dose of alpha-cypermethrin at 250 mg/m\\({}^{2}\\). The polymer binds to the fiber and can withstand multiple washings, the active ingredient diffusing in a controlled manner to the surface of the polymer coat to maintain insecticidal efficacy.\n", - "\n", - "Thus, this study was conducted to verify the intended efficacy of the product in the presence of pyrethroid resistance vector population of _An. gambiae_ s.l. using cone bioassay and semi-field experimental huts in southwestern Ethiopia. The cone bioassays were conducted in Tropical and Infectious diseases research institute, Jimma University. The experimental hut study trials were undertaken near the Gilgel-Gibe hydroelectric power dam-I.\n", - "\n", - "header: Mosquito collection, identification and key parameters measured in determination of LLINs efficacy\n", - "\n", - "Mosquitoes were collected from 6:00 to 7:00 each morning inside bed nets, floors, walls, ceilings, and verandas of each experimental hut by the help of mouth aspirators and torches. Then the collected mosquitoes were recorded as dead or alive. Live mosquitoes were held in paper cups and supplied with 10% sucrose solution. The collected mosquitoes were transported to Asendabo Vector Biology Laboratory, Jimma University, where mosquitoes were sorted by genus, sex and morphologically identified using taxonomic keys [9]. Mosquitoes were also scored for their physiological state as unfed, fed, half gravid and gravid. Delayed mortality was recorded after 24 hours. To evaluate the efficacy of DuraNet LLIN against the resistant populations of _An. arabiensis_, different entomological parameters (deterrence, exit, blood feeding inhibition, and mortality rates) were derived from basic measurements.\n", - "\n", - "The primary outcomes were:\n", - "\n", - "1. Deterrence--the reduction in entry in to treatment hut relative to the control hut (ie, huts holding untreated nets);\n", - "2. Mortality--the proportion of mosquitoes killed relative to the total catch size;\n", - "3. Killing effect--the numbers killed by a treatment relative to the untreated control, as derived from the formula; \\[\\text{Killing effect}\\left( \\% \\right) = \\left( \\frac{Kt-Ku}{Tu} \\right) \\ast 100\\]\n", - "\n", - "Where **Kt** is the number dead mosquitoes in the huts with treated nets, **Ku** is the number dead mosquitoes in the huts with untreated nets, and **Tu** is the total entering the huts with untreated nets.\n", - "\n", - "1. Blood Feeding Inhibition-The proportional reduction in blood feeding in huts with treated nets relative to controls with untreated nets.\n", - "\n", - "Figure 1: Experimental hut design of the study.\n", - "\n", - "\n", - "5. Personal Protection--The reduction in mosquito biting by treated nets relative to untreated nets, as derived from the formula \\[\\%\\text{personal protection} = (\\frac{Bu-Bt}{Bu})*100\\]\n", - "\n", - "Where Bu is the total number blood fed mosquitoes in the huts with untreated nets, and Bt is the total number blood fed in the huts with treated nets.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Ethiopia\",\"Site\":\"Southwestern Ethiopia\",\"Start_month\":9,\"Start_year\":2015,\"End_month\":1,\"End_year\":2016}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"0.55% W\\/W \\u00b1 15%\",\"Net_washed\":0.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N02\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"0.55% W\\/W \\u00b1 15%\",\"Net_washed\":20.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N03\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"pyrethroid\",\"Concentration_initial\":null,\"Net_washed\":0.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N04\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"pyrethroid\",\"Concentration_initial\":null,\"Net_washed\":20.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Results\n", - "\n", - "Among the 1784 participating homesteads with a population of 10 325, a total of 1551 households participated in the study (Table 1). Most of the heads of the households (age: 17-96 years) had received formal education and practiced farming (96.6%).\n", - "\n", - "Out of 100 heads of households with Olyset(r) Plus interviewed for adverse events, 44% reported itching, 4% eye irritation, and 7% unpleasant smell. Among the Olyset(r) Net users, 7% each reported nasal discharge and eye irritation. These were reported to be mild symptoms lasting for one or two days. To reduce these effects, 43% users of Olyset(r) Plus ventilated nets for a day in the open under the sun and 33% under the shade. Among Olyset(r) Net users, similar actions were taken by 44% and 39%, respectively.\n", - "\n", - "header: Table 7 Comparison of the estimates of the mean pHI and the mean hole area for O lyset® Plus and Olyset® Net\n", - "footer: pHI proportionate Hole Index\n", - "columns: ['Survey month', 'Olyset® Plus - No. of nets inspected', 'Olyset® Plus - Mean hole area in cm2 (± SD)', 'Olyset® Plus - Mean pHI (± SD)', 'Olyset® Net - No. of nets inspected', 'Olyset® Net - Mean hole area in cm2 (± SD)', 'Olyset® Net - Mean pHI (± SD)']\n", - "\n", - "{\"0\":{\"Survey month\":6,\"Olyset\\u00ae Plus - No. of nets inspected\":250,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"52.3 \\u00b1 230.5\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"93.3 \\u00b1 313.6\",\"Olyset\\u00ae Net - No. of nets inspected\":250,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"123.3 \\u00b1 272.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"110.5 \\u00b1 221.8\"},\"1\":{\"Survey month\":12,\"Olyset\\u00ae Plus - No. of nets inspected\":243,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"229.2 \\u00b1 574.2\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"153.6 \\u00b1 437.0\",\"Olyset\\u00ae Net - No. of nets inspected\":249,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"192.5 \\u00b1 376.2\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"156.8 \\u00b1 306.5\"},\"2\":{\"Survey month\":24,\"Olyset\\u00ae Plus - No. of nets inspected\":231,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"389.8 \\u00b1 975.4\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"317.6 \\u00b1 794.7\",\"Olyset\\u00ae Net - No. of nets inspected\":226,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"873.9 \\u00b1 353.4\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"279.4 \\u00b1 428.1\"},\"3\":{\"Survey month\":36,\"Olyset\\u00ae Plus - No. of nets inspected\":228,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"630.7 \\u00b1 1191.8\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"513.9 \\u00b1 970.9\",\"Olyset\\u00ae Net - No. of nets inspected\":216,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"621.5 \\u00b1 1710.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"506.4 \\u00b1 1393.2\"}}\n", - "\n", - "header: Table 5 Mean permethrin and PBO contents (relative standard deviation) in nets at baseline, and at 12, 24 and 36 months\n", - "footer: a Within net variation (relative standard deviation) in permethrin and PBO contents at baseline was 2.2% and 3.7%, respectively (Olyset® Plus). – not applicable, PBOpiperonyl butoxideb Within net variation (relative standard deviation) in permethrin content at baseline was 1.2% (Olyset® Net)\n", - "columns: ['Sampling month', 'Olyset® Plus - Mean permethrin content in g/kg (95% CI)', 'Olyset® Plus - Permethrin content lost (%)', 'Olyset® Plus - PBO content in g/ kg (95% CI)', 'Olyset® Plus - PBO content lost (%)', 'Olyset® Net - Mean permethrin content in g/kg (95% CI)', 'Olyset® Net - Permethrin content lost (%)']\n", - "\n", - "{\"0\":{\"Sampling month\":0,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"18.4 (18.3\\u201318.6)a\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"8.98 (8.86\\u20139.10)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"19.6 (19.5\\u201319.7)b\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"\\u2013\"},\"1\":{\"Sampling month\":12,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.7 (10.6\\u201312.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"36\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"3.01 (2.30\\u20133.80)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"66\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"16.5 (16.0\\u201317.0)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"16\"},\"2\":{\"Sampling month\":24,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.1 (10.2\\u201312.0)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"40\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.70 (1.20\\u20132.20)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"81\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"15.9 (15.1\\u201316.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"19\"},\"3\":{\"Sampling month\":36,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"8.8 (7.9\\u20139.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"52\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.16 (0.8\\u20131.5)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"87\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"14.8 (13.9\\u201315.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"24\"}}\n", - "\n", - "header: Net sampling scheme\n", - "\n", - "The scheme of sampling nets at different time points for bioassays and chemical assays is given in Table 2. The netting pieces were cut from the sampled nets from positions 1-9 for bioassays, and positions HP1-HP5 (at time 0) or positions HP2-HP5 (at time 12, 24 and 36 months) for chemical content assays (Fig. 1). All the nets which were sampled and retrieved at the given survey points were replaced with new ones.\n", - "\n", - "header: Chemical contents\n", - "\n", - "At time 0 (baseline), the contents of permethrin and PBO in Olyset(r) Plus were within the target tolerance limits of 20 +- 5 g/kg and 10 +- 2.5 g/kg, respectively; while the permethrin content in Olyset(r) Net was also within the target tolerance limit of 20 +- 3 g/kg (Table 5). The within net variation (relative standard deviation, RSD) in permethrin and PBO contents for Olyset(r) Plus at baseline were 2.2% and 3.7%, respectively, and were within the acceptable tolerance limits. The within net variation in the permethrin content in Olyset(r) Net at the baseline was 1.2% and was also within the acceptable tolerance limit. At the end of years 1, 2 and 3 of net usage, the permethrin content in Olyset(r) Plus decreased by 36%, 40% and 52%, and the PBO content showed a marked reduction of 66%, 81% and 87%, respectively. The loss of the permethrin in Olyset(r) Net\n", - "\n", - "\\begin{table}\n", - "\\begin{tabular}{c c c c c c c c} \\hline\n", - "**Survey month** & **No. of** & **Mean 1 h** & **Mean 24 h** & **\\% of nets passed by** & **\\% of nets passed by** & **No. of nets passed by** & **Overall pass rate in** \\\\\n", - "**nets** & **KD (\\%)** & **mortality** & **KD criteria alone(r)** & **mortality criteria** & **requiring tunnel** & **percentage (95\\% CI)(r)** \\\\\n", - "**Olyset(r) Plus** & & & & & & & \\\\\n", - "0 & 30 & 99.5 & 100 & 100 & 100 & 0 & 100 (80–100) \\\\\n", - "6 & 30 & 97.0 & 88.2 & 83.3 & 73.3 & 4 & 96.7 (82–99) \\\\\n", - "12 & 30 & 9\n", - "\n", - "4.2 & 74.3 & 76.7 & 43.3 & 6 & 93.3 (78–99) \\\\\n", - "18 & 30 & 82.9 & 65.9 & 36.7 & 36.7 & 16 & 86.7 (69–96) \\\\\n", - "24 & 30 & 77.4 & 75.3 & 0.0 & 46.7 & 15 & 76.7 (57–90) \\\\\n", - "30 & 30 & 60.4 & 56.9 & 0.0 & 10.0 & 27 & 70.0 (50–85) \\\\\n", - "**Olyset(r) Net** & & & & & & & \\\\\n", - "0 & 30 & 99.1 & 100 & 100 & 100 & 0 & 100 (88–100) \\\\\n", - "6 & 30 & 96.9 & 79.8 & 80.0 & 60.0 & 4 & 93.3 (77–99) \\\\\n", - "12 & 30 & 68.5 & 54.7 & 20.0 & 3.3 & 24 & 83.3 (65–94) \\\\\n", - "18 & 30 & 72.1 & 50.2 & 30.0 & 20.0 & 18 & 73.3 (54–87) \\\\\n", - "24 & 30 & 79.8 & 68.9 & 3.3 & 46.7 & 18 & 66.7 (47–83) \\\\\n", - "30 & 30 & 50.9 & 50.9 & 0.0 & 3.3 & 29 & 60.0\n", - "\n", - "\n", - "was 16% at year 1 and did not change much at year 2 and 3 (19 and 24%, respectively).\n", - "\n", - "header: Abstract\n", - "\n", - "Bioefficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide-treated insecticidal net in a 3-year long trial in Kenya\n", - "\n", - "Paul M. Gichuki, Anna Kamau, Kiambo Niagi, Solomon Karoki, Njoroge Muigai, Damaris Matoke-Muhia, Nabie Bayoh, Evan Mathenge\n", - "\n", - "\n", - "**Background:** Long-lasting insecticide nets (LLINs) are a core malaria intervention. LLINs should retain efficacy against mosquito vectors for a minimum of three years. Efficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide (PBO) treated LLIN, was evaluated versus permethrin treated Olyset(r) Net. In the absence of WHO guidelines of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated as a pyrethroid LILN.\n", - "\n", - "**Methods:** This was a household randomized controlled trial in a malaria endemic rice cultivation zone of Kirinyaga County, Kenya between 2014 and 2017. Cone bioassays and tunnel tests were done against _Anopheles gambiae_ Kisumu. The chemical content, fabric integrity and LLIN survivorship were monitored. Comparisons between nets were tested for significance using the Chi-square test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. The WHO efficacy criteria used were >= 95% knockdown and/or >= 80% mortality rate in cone bioassays and >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests.\n", - "\n", - "**Results:** At 36 months, Olyset(r) Plus lost 52% permethrin and 87% PBO content; Olyset(r) Net lost 24% permethrin. Over 80% of Olyset(r) Plus and Olyset(r) Net passed the WHO efficacy criteria for LLINs up to 18 and 12 months, respectively. At month 36, 91.2% Olyset(r) Plus and 86.4% Olyset(r) Net survived, while 72% and 63% developed at least one hole. The proportionate Hole Index (pHI) values representing nets in good, serviceable and torn condition were 49.6%, 27.1% and 23.2%, respectively for Olyset(r) Plus, and 44.9%, 32.8% and 22.2%, respectively for Olyset(r) Net but were not significantly different.\n", - "\n", - "**Conclusions:** Olyset(r) Plus retained efficacy above or close to the WHO efficacy criteria for about 2 years than Olyset(r) Net (1-1.5 years). Both nets did not meet the 3-year WHO efficacy criteria, and showed little attrition, comparable physical durability and survivorship, with 50% of Olyset(r) Plus having good and serviceable condition after 3 years. Better community education on appropriate use and upkeep of LLINs is essential to ensure effectiveness of LLIN based malaria interventions.\n", - "\n", - "**Keywords:**_Anopheles gambiae, Bioefficacy, Durability, Kenya, Long-lasting insecticidal net, Olyset(r) Net, Olyset(r) Plus, Permeability, Piperonyl butoxide_\n", - "\n", - "header: Assessment of durability of cohort nets\n", - "\n", - "To monitor durability of nets (i.e. survivorship and changes in physical integrity) during their routine use, 250 each of Olyset(r) Plus and Olyset(r) Net were distributed in separate households (2 nets per household) in the same villages by simple randomization. From these cohorts of nets, all nets available at the households at the time of surveys at 6, 12, 24 and 36 months were inspected for their presence and physical integrity. For this, the nets were retracted from the sleeping places, individually hung up on a rectangular frame held outside the house and inspected for presence of any holes on the side and roof panels. The holes were counted for each net, their diameter was measured, and they were classified in the following categories according to the WHO criteria for hole sizes [3, 11]:\n", - "\n", - "Size A1: 0.5-2 cm diameter, Size A2: 2-10 cm diameter, Size A3: 10-25 cm diameter, Size A4: 25 cm diameter.\n", - "\n", - "The parameters for assessing the integrity of nets included the proportions of Olyset(r) Plus and Olyset(r) Net with any size holes or tears, and the proportionate Hole Index (pHI) for each net, which was calculated as follows [11]:\n", - "\n", - "\\[\\text{pH} = \\left( {1.23 \\times \\text{ No.~of~size~A1~holes}} \\right) + \\left( {28.28 \\times \\text{ No.~of~size~A2~holes}} \\right) + \\left( {240.56 \\times \\text{ No.~of~size~A3~holes}} \\right) + \\left( {706.95 \\times \\text{ No.~of~size~A4~holes}} \\right)\\]\n", - "\n", - "Using the pHI values, Olyset(r) Plus and Olyset(r) Net were categorized as those in 'good condition' (pHI: 0-64), nets in 'acceptable' condition (pHI: 65-642), and torn nets that were likely to provide no protective efficacy (pHI > 642) [15]. The number of nets in 'good' and\n", - "\n", - "Fig. 1: A rectangular net and its individual panels showing positions for cutting netting pieces (positions 1–9 for bioassays; HP1–HPS for chemical assays)\n", - "'acceptable condition' together were taken to estimate the survival of nets over time.\n", - "\n", - "The sampled nets were also inspected for any repairs of holes or tears done by the households. After inspection, the nets were returned to the same sleeping place in the same household.\n", - "\n", - "header: Net survivorship and fabric integrity\n", - "\n", - "At the end of year 1, Olyset(r) Plus reported survivorship rates of 97.2% (_n_ = 243), with Olyset(r) Net recording 99.6% (_n_ = 249). At year 2, there were 92.4% (_n_ = 231) Olyset(r) Plus and 90.4% (_n_ = 226) of Olyset(r) Nets still surviving. At the end of the 3 years of study, the survivorship rates for Olyset(r) Plus and Olyset(r) Net were at 91.2% (_n_ = 228) and 86.4% (_n_ = 216), respectively.\n", - "\n", - "The pH values of the nets showed that 87.6% of Olyset(r) Plus were in good condition at 6 months, 7.6% were in acceptable/serviceable condition, and 4.8% were too torn (Table 6). These proportions increased gradually during the study and at 36 months, 49.6% were in good condition, 27.1% in acceptable/serviceable condition, and 23.2% were too torn. A similar trend of attrition was seen for Olyset(r) Net, with 44.9%, 32.8% and 22.2% nets being in good condition, acceptable condition or too torn at 36 months, respectively.\n", - "\n", - "Data on the comparison of estimates of the mean pH values and the mean hole area for Olyset(r) Plus and Olyset(r) Net are given in Table 7.\n", - "\n", - "The proportion of Olyset(r) Plus nets having been repaired by households increased from 6% (95% CI: 3.4-9.7) at month 6 to 17.9% (95% CI: 13.2-23.6) at months\n", - "\n", - "36, while that of Olyset(r) Net increased from 5% (95% CI: 2.8-8.7) to 12% (95% CI: 8.0-17.1) in the same period.\n", - "\n", - "\n", - "Olyset(r) Net incorporated with permethrin alone was included in the trial as a positive control net. A net was considered to have passed the WHO efficacy criteria if it caused >= 80% mortality and/or >= 95% knockdown in cone bioassays or >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests [3]. Most of the Olyset(r) Plus and Olyset(r) Net lost the knockdown effect during the 24-36 months follow-up. Overall, neither Olyset(r) Plus nor Olyset(r) Net performed as they should even after 2 years and did not meet the WHO efficacy criteria of a 3-year LLIN.\n", - "\n", - "Previous studies have demonstrated enhanced efficacy of Olyset(r) Plus against resistant _An. gambiae_ attributable to PBO [16-18]. A recent randomised controlled field trial in Tanzania with high levels of pyrethroid resistance in malaria vectors _An. gambiae_ and _An. arabiensis_ also attributed higher impact on malaria of Olyset(r) Plus over Olyset(r) Net to the presence of PBO that was sustained after 21 months of the trial [19]. However, there is a view that these two nets are not comparable and that the higher efficacy of Olyset(r) Plus was due to much more bleed rate of permethrin into its surface and not due to PBO that was incorporated in small amount and dwindled rapidly over time [20]. In this trial, Olyset(r) Plus was evaluated as a pyrethroid LLIN since there were no guidelines published by WHO of how to evaluate PBO nets at the time of this trial, and considering the manufacturer's product claim.\n", - "\n", - "While, it was reported that high intensity insecticide resistance will reduce the level of personal and community protection of pyrethroid LLINs [21] and PBO nets could be effective against malaria in some resistance scenarios [22], a recent WHO multi-country study found no evidence of an association between insecticide resistance and malaria infection prevalence or incidence [23]. There is also a view that at present there is limited evidence that recent reduction in the impact on malaria in sub-Saharan Africa was due to increasing resistance in malaria vectors to the pyrethroid insecticides used in treating nets [24].\n", - "\n", - "The initial permethrin content in both nets was more or less similar but the enhanced efficacy of Olyset(r) Plus was mainly due to the higher release of permethrin into the surface fibres and presence of PBO than Olyset(r) Net. The gradual decline in efficacy of both nets is consistent with the loss of permethrin and PBO in Olyset(r) Plus and of permethrin in Olyset(r) Net over time during their routine usage by the community. The decline in permethrin content was more rapid in Olyset(r) Plus than Olyset(r) Net. This explains why Olyset(r) Plus having permethrin and PBO was relatively superior than Olyset(r) Net initially, i.e., until 18 months, but after that their performance was below the WHO efficacy cut off. While the PBO content in Olyset(r) Plus at the baseline was within the target tolerance limits, 66% of the PBO content was lost within one year of net usage, and the loss increased to 81% at year 2 and 87% at year 3. Previous studies have reported that the insecticidal content in LLINs decay over time [6]. While permethrin and PBO contents may be lost due to natural decay and evaporation, washing of nets frequently and drying them under direct sunlight are known to contribute to such losses [25, 26]. In this study, despite manufacturer's label recommendation not to expose nets to direct sunlight, a good proportion of both type of nets were exposed to bright sunlight before use and left to dry in the sun after washing. This would have reduced both permethrin and PBO contents and consequently reduced the biological efficacy of these nets and should be borne in mind when considering these results. Even though Kisumu strain was tested, the loss of PBO would have affected efficacy of Olyset Plus as PBO can improve net performance even against susceptible strains, which too have P450s, and PBO is also known to act as a good solvent that can aid cuticular penetration and help improve insecticidal activity. The operational implication of rapid loss of PBO is that Olyset(r) Plus was unlikely to remain effective even against pyrethroid resistant mosquitoes for 2 or 3 years of use.\n", - "\n", - "Community net wash practices were comparable between the two nets. During the first 6 months, no net was reported to have been washed. At 1 year, 7% of Olyset(r) Plus and 7% of Olyset(r) Net were reported to have been washed at least once. At month 36 months, about 17% and 21% of Olyset(r) Plus and Olyset(r) Net\n", - "respectfully had been washed at least once. LLINs are usually recommended to be washed at most every 3 months [5], although this frequency depends on local cultural practices and water availability. Different net washing frequencies have been reported in other studies spanning from a high of 8 washes per month in Mali [27] to 4-7 times in Tanzania [28] to a low average of 1.5 washes per year in Uganda [29]. In coastal Kenya, on average nets were washed twice in 6 months, with blue colour nets least often washed than white or green colour nets, and older nets washed more frequently [30]. In western Kenya lowlands, three quarter of nets were washed once within 3 months and a third of them were dried under the sun [31]. The main reasons for low reported wash rates during the annual surveys in our study could be attributed to net users' poor recall of the net washing frequencies, and people's apprehension that washing of nets reduce net efficacy, although there was no water scarcity in the trial area being located in a rice irrigation area.\n", - "\n", - "The study participants reported experiencing certain transient adverse effects during the first two days of use of nets, but these could be prompted reactions since the community members had been informed about the possibility of such effects at the time of net distribution. The higher side effects from use of Olyset(r) Plus is in line with the higher release of permethrin as mentioned above. Users resorted to ventilating their nets in direct sunlight to reduce the effects although our project team had advised to dry up and keep the nets under shade. Ventilating new nets or drying washed nets under direct sunlight might have contributed to a significant reduction in active ingredient content and bio-efficacy of nets.\n", - "\n", - "At the end of the 3-year period, among the two cohorts of 250 nets each, only about 9% Olyset(r) Plus and about 14% Olyset(r) Net were reported to have been lost showing a high net survivorship. These results are in line with the expected 75% net survivorship rate reported by the NetCALC 3-year serviceable prediction model [32]. Previous studies have reported varying rate of net survivorship in African countries, such as 58% nets were lost within two years in Rwanda [33], only 39% of distributed nets remained both present and in serviceable physical condition 2-4 years after a mass campaign in Tanzania [34], but in Western Uganda an estimated attrition rate of just 12% after three years of use was observed for a polyester net [35]. In four African countries of Mozambique, Nigeria, DRC and Zanzibar, Tanzania, survival in serviceable condition of polyethylene and polyester LLINs after 31-37 months of use varied between different sites from 17 to 80% with median survival from 1.6 to 5.3 years [36]. In our study, the observed low attrition rate of nets appears to be also due to the 'Hawthorne effect' as the households included in the two cohorts of nets were visited every 6 or 12 months to inspect the nets. So, the awareness among study participants that the nets were regularly being followed could have modified their behaviour in favour of more careful upkeep and maintenance of the nets and as such may have been a limitation in this study.\n", - "\n", - "Studies have shown that despite small to medium size holes (64 < PHI < 642), LLINs are still protective against mosquito bites due to the excito-repellent effects of insecticides [35]. However, the nets may become ineffective when the overall hole area in nets reaches a certain threshold [37]. In our study, both Olyset(r) Plus and Olyset(r) Net recorded high fabric integrity up to the 3-year trial period. At 12 months after distribution, 78.1% of Olyset Plus and 63.8% of Olyset(r) Net were in good/acceptable condition, 12.3% Olyset(r) Plus and 30.5% Olyset(r) Net were in serviceable condition, while 9.4% Olyset(r) Plus and 5.6% Olyset(r) Net were completely torn and required to be replaced. At the end of the 3-year trial period, 49.5% of Olyset(r) Plus and 44.9% of Olyset(r) Net were in good/acceptable condition, 27.1% Olyset(r) Plus and 32.8% Olyset(r) Net in serviceable condition, while 23.2% Olyset(r) Plus and 22.2% Olyset(r) Net were completely torn and required replacement.\n", - "\n", - "Although Olyset(r) Net retained a higher permethrin content that Olyset(r) Plus, the latter showed longer duration of efficacy than the former, i.e., 18 months compared with 12 months above the WHO efficacy cut off, and higher efficacy thereafter i.e., the efficacy of Olyset(r) Plus declined to 42% at the end of 3-year trial period and that of Olyset(r) Net to 36% over the same period. This could be attributed to higher release of permethrin into the netting surface, and also because PBO can make nets perform better even against susceptible mosquitoes. Pyrethroid-PBO nets have previously been associated with higher mosquito mortality and lower blood-feeding rates in areas of high-level insecticide resistance than were non-PBO LLINs [38, 39]. Although in our study we did not test nets with a pyrethroid resistant mosquito strain, it is likely that the fast decline of PBO in Olyset(r) Plus was caused by the inappropriate exposure to sunlight, as well as the normal loss through washing would have reduced efficacy against resistant mosquitoes in the same way that it reduced efficacy against the susceptible mosquitoes tested here.\n", - "\n", - "Appropriate testing guidelines and field studies are thus required to evaluate the operational effectiveness of PBO nets against pyrethroid resistant mosquitoes and considering the PBO retention and release properties. The revised WHO LLIN guidelines should clarify for how long PBO nets should be effective and if the \n", - "current WHO efficacy criteria for a 3-year LLIN should be reduced to fit the chemistry.\n", - "\n", - "A limitation of our trial was that we did not evaluate efficacy of Olysset(r) Plus against resistant _An. gambling_ mosquitoes. Instead, we tested its efficacy for the presence of permethrin alone using a susceptible malaria vector strain, although inclusion of PBO in nets has the potential of increasing insecticidal efficacy due to increased cuticular penetration and presence of P450s in susceptible insects. There is thus a need for suitable testing guidelines and a much more validation of the impact of PBO in pyrethroid-PBO nets.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "All the relevant datasets supporting the conclusions of this article are included within the article.\n", - "\n", - "header: Table 6 Progression of hole formation and proportionate Hole Index (pHI) values for Olyset® Plus and Olyset® Net\n", - "footer: None\n", - "columns: ['Net brand', 'Follow up months', 'No. of nets sampled', 'Number of nets with any size holes (%; 95% CI)', 'No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)', 'No. of nets by pHI values (%; 95% CI) - pHI 65–642 (in acceptable condition)', 'No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)']\n", - "\n", - "{\"0\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":6,\"No. of nets sampled\":250,\"Number of nets with any size holes (%; 95% CI)\":\"115 (46.0; 39.9\\u201352.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"219 (87.6; 82.9\\u201391.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"19 (7.6; 4.9\\u201311.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"12 (4.8; 2.8\\u20138.2)\"},\"1\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":12,\"No. of nets sampled\":243,\"Number of nets with any size holes (%; 95% CI)\":\"131 (54.0; 47.6\\u201360.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"190 (78.2; 72.6\\u201382.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"30 (12.4; 8.8\\u201317.0)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"23 (9.5; 6.3\\u201313.8)\"},\"2\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":24,\"No. of nets sampled\":231,\"Number of nets with any size holes (%; 95% CI)\":\"120 (52.0; 45.5\\u201358.3)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"145 (62.8; 56.7\\u201368.7)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"58 (25.1; 19.9\\u201331.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"28 (12.0; 8.5\\u201316.9)\"},\"3\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":36,\"No. of nets sampled\":228,\"Number of nets with any size holes (%; 95% CI)\":\"144 (63.0; 56.7\\u201369.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"113 (49.6; 43.1\\u201356.0)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"62 (27.1; 21.8\\u201333.3)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"53 (23.2; 18.2\\u201329.2)\"},\"4\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":6,\"No. of nets sampled\":250,\"Number of nets with any size holes (%; 95% CI)\":\"157 (63.0; 56.7\\u201368.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"186 (74.4; 68.7\\u201379.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"57 (22.8; 18.1\\u201328.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"7 (2.8; 1.3\\u20135.7)\"},\"5\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":12,\"No. of nets sampled\":249,\"Number of nets with any size holes (%; 95% CI)\":\"169 (68.0; 61.8\\u201373.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"159 (63.9; 57.7\\u201369.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"76 (30.5; 25.1\\u201336.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"14 (5.6; 3.4\\u20139.2)\"},\"6\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":24,\"No. of nets sampled\":226,\"Number of nets with any size holes (%; 95% CI)\":\"147 (65.0; 58.6\\u201370.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"120 (53.1; 46.6\\u201359.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"71 (31.4; 25.7\\u201337.7)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"35 (15.5; 11.4\\u201320.8)\"},\"7\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":36,\"No. of nets sampled\":216,\"Number of nets with any size holes (%; 95% CI)\":\"156 (72.0; 65.9\\u201377.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"97 (44.9; 38.4\\u201351.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"71 (32.8; 26.9\\u201339.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"48 (22.2; 17.2\\u201328.2)\"}}\n", - "\n", - "header: Statistical analysis\n", - "\n", - "The data collected were entered in excel spreadsheets and cross-checked for accuracy. Data were analyzed using STATA version 14.0 (Stata Corporation, College Station, TX, USA). Comparisons between the two types of nets were tested for significance using the Chi-square (kh2) test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. For continuous variables, the arithmetic mean was used depending on the distribution of values compared to a normal distribution.\n", - "\n", - "The nets were considered to have passed the WHO efficacy criteria if the mosquito knockdown rate was found to be >= 95% and/or mortality rate >= 80% in cone bioassays. For the tunnel tests, nets were considered to have passed the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90% [3]. The procedure for calculation of proportionate Hole Index (pHI) for nets is already described above.\n", - "\n", - "header: Bioassays\n", - "\n", - "The insecticidal effect of the nets was evaluated using cone bioassays and where required tunnel tests, as per the WHO guidelines [3]. The bioassays were done at time zero (baseline) and then at every 6 months up to 36 months. On each of the netting pieces cut for bioassays, standard WHO plastic cones were held in place using a plastic manifold and a total of 50 laboratory bred, susceptible Kisumu strain _Anopheles gambiae_ (non-blood fed, 2-5 day old) were exposed for 3 min (5 pieces per net x 5 mosquitoes per test x 2 replicates). After the exposure, the mosquitoes were removed gently from\n", - "the cones and kept separately in plastic cups provided with cotton-wool moistened with 10% glucose solution. Knockdown (KD) was recorded at 60 min and mortality at 24 h after exposure. Mosquitoes exposed to untreated polyester net pieces were used as untreated controls. The bioassays were carried out at 27 +- 2 degC temperature and 80% +- 10% relative humidity. When the mosquito knockdown rate was < 95% and mortality < 80%, the mortality and blood-feeding inhibition effect of such nets was assessed in a tunnel test according to the WHO guidelines [3].\n", - "\n", - "For each net, only one netting piece with which mosquito mortality was found closest to the average mortality in the cone test was tested in the tunnel test [3]. One hundred, non-blood fed female _An. gambiae_ Kisumu mosquitoes, aged 5-8 days were released at the longer end of a tunnel equipment made of glass. At each end of the tunnel, a 25 cm square cage covered with a polyester netting was fitted. At the shorter end of the tunnel, a rabbit which could not move but was available for mosquito biting was placed. The mosquitoes were released at 18:00 and mosquitoes recovered at 09:00 on the following morning. During the test, the tunnel was kept in a place maintained at 27 +- 2 degC and 80% +- 10% relative humidity in full darkness. Another tunnel with untreated netting was used as control. The mean mortality rate and percentage blood-feeding inhibition were recorded, as follows:\n", - "\n", - "1. Mortality = this was measured by pooling the mortality rates of mosquitoes from the two sections of the tunnel. If mortalities in the control recorded more than 10%, the test was considered invalid.\n", - "\n", - "\\[\\text{Blood} - \\text{feeding\\,inhibition}(\\%) = \\left[ {100 \\times \\left( {\\text{Bfc} - \\text{Bfc}} \\right)} \\right]/\\text{Bfc}\\]\n", - "\n", - "where, Bfc is the proportion of blood-fed mosquitoes in the control tunnel and Bft is the proportion of blood-fed mosquitoes in the tunnel with the treated net. The treated net was considered to have met the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90%.\n", - "\n", - "header: Chemical content analysis\n", - "\n", - "The chemical contents in the nets were determined at the beginning and at years 1, 2 and 3 by samplings nets according to the scheme described earlier. The netting pieces cut for determination of active ingredient content were individually rolled up and placed in new, clean and labeled aluminum foils and sent to the Phyto-pharmacy Department of the Walloon Agricultural Research Centre, Gembloux, Belgium, a WHO Collaborating Centre, for chemical analysis.\n", - "\n", - "header: Funding\n", - "\n", - "The work was funded as a collaborative project by the WHO Pesticide Evaluation Scheme, Geneva, Switzerland.\n", - "\n", - "header: Conclusions\n", - "\n", - "Olysset(r) Plus did not meet the WHO criteria for efficacy of LLINs in this 3-year Phase III study, which could have resulted from faster loss of permethrin and PBO and users not following the manufacturer's recommendations to not leave the nets under direct sunlight. Better community education is therefore essential to ensure appropriate use and upkeep of nets in areas with LLIN-based interventions in order to maximize their operational impact on the prevention, control and elimination of malaria. Failure to do this would result in operational implications requiring early replenishment with new nets to ensure that such an LLIN based malaria intervention remains effective.\n", - "\n", - "header: Trial design and study area\n", - "\n", - "We did a prospective, household randomized controlled, large-scale 3-year field trial in a rice irrigation area of Kirinyaga County, Kenya from 2014 to 2017. The area is located about 100 km northeast of Nairobi at the base of Mt Kenya at an altitude of about 1200 m above sea level [14]. It receives mean annual rainfall of 1200-1600 mm with long rains in March-June and short rains in October-December. Due to high densities of mosquitoes year-round, many local people use mosquito nets. Several bed net trials have previously been conducted here for national product registration. Over 80% of the inhabitants of the area have only primary level education. Most of the houses in the area are made of mud walls with roofs of corrugated iron sheets [14].\n", - "\n", - "Four villages of Maendeleo, Huruma, Kiratina and Kasarani were selected by a simple randomization, of which the first two villages were randomly allocated Olyset(r) Plus and the other two villages received Olyset(r) Net (Table 1). In each of the selected village, households were randomly selected.\n", - "\n", - "header: Table 3 Frequency of washing nets by the users at different time points\n", - "footer: The reported wash rate was zero at 6 months\n", - "columns: ['Period (months)', 'Olyset® Plus - No. of nets sampled', 'Olyset® Plus - No. of nets washed once (%)', 'Olyset® Plus - No. of nets washed twice (%)', 'Olyset® Plus - No. of nets washed > 2 times (%)', 'Olyset® Net - No. of nets sampled', 'Olyset® Net - No. of nets washed at once (%)', 'Olyset® Net - No. of nets washed twice (%)', 'Olyset® Net - No. of nets washed > 2 times (%)']\n", - "\n", - "{\"0\":{\"Period (months)\":6,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"\\u2013\"},\"1\":{\"Period (months)\":12,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"1 (3)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"2\":{\"Period (months)\":24,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"4 (12)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"1 (3)\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"3 (11)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"3\":{\"Period (months)\":36,\"Olyset\\u00ae Plus - No. of nets sampled\":50,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"9 (17)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"5 (10)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"3 (6)\",\"Olyset\\u00ae Net - No. of nets sampled\":50,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"11 (21)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"8 (6)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"3 (6)\"}}\n", - "\n", - "header: Background\n", - "\n", - "Insecticide-treated nets reduce child mortality, number of _Plasmodium falciparum_ cases and probably the number of _P. vivax_ cases per person/year [1]. Factory-produced long-lasting insecticide nets (LLINs) are a core malaria intervention for the global elimination of malaria led by the World Health Organization (WHO) [2]. According to the WHO definition, LLINs should retain efficacy against mosquito vectors for a minimum of 20 standard washes under laboratory conditions and a minimum of 3 years of use under field conditions [3]. When used by most of the people in a population, insecticide-treated nets can protect all people in the community, including those who do not sleep under nets [4]. Currently, the National Malaria Control Programme (NMCP) in Kenya has been scaling up the use of LLINs in malaria endemic and high-risk areas to achieve universal coverage, which is defined by WHO as access to one LLIN for every 1.8 persons in each household [2, 5].\n", - "\n", - "Pyrethroid LLINs were the first brands of treated nets recommended by WHO for malaria control. However, it was believed that insecticide resistance was worsening in Africa and would present a major threat to malaria control [6-8], and that pyrethroid-LLINs were becoming less effective at killing mosquitoes in household conditions when pyrethroid resistance develops [9, 10]. Consequently, piperonyl butoxide (PBO) was incorporated in nets with the intension to improve their efficacy against pyrethroid resistant mosquitoes by acting as a metabolic enzyme inhibitor targeting the P450 cytochrome or mixed function oxidases that metabolise pyrethroids and enhance the efficacy of pyrethroid treated nets. Olyset(r) Plus has been prequalified by WHO as the first in class PBO net.\n", - "\n", - "However, at the time of beginning the trial due to the absence of guidelines published by WHO of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated only as a pyrethroid LLIN against a pyrethroid susceptible mosquito strain rather than against a resistant strain. This paper presents results of a 3-year long-term (Phase III) field trial of the candidate product, Olyset(r) Plus, along with a positive control product Olyset(r) Net, in a malaria endemic rice cultivation area of Kirinyaga County, Kenya.\n", - "\n", - "header: Test products\n", - "\n", - "Bioefficacy and physical durability of the Olyset(r) Plus and Olyset(r) Net both manufactured by Sumitomo Chemical were evaluated. The former is a polyethylene mono-filament net incorporated with 2% permethrin corresponding to 20 g permethrin active ingredient (AI)/kg or 800 mg permethrin AI/m\\({}^{2}\\) and 1% PBO (corresponding to 10 g PBO AI/kg or 400 mg PBO AI/m\\({}^{2}\\)). The latter is a polyethylene mono-filament net incorporated with 2% permethrin (w/w) (corresponding to 800 mg permethrin AI/m\\({}^{2}\\)). Olyset(r) Net was recommended in 2009 by the WHO Pesticide Evaluation Scheme (WHOPES) for use in malaria control [12], while Olyset(r) Plus was given interim recommendation by WHO in 2012 with the requirement to evaluate the product in a 3-year long-term trial to confirm its long-lasting efficacy in field [13].\n", - "\n", - "header: Table 4 Bioefficacy of Olyset® Plus and Olyset® Net against Anopheles. gambiae Kisumu in cone and tunnel tests\n", - "footer: a KD, knockdown≥95%; b mortality≥80%; c taking into account the KD and mortality rates in cone bioassays, and blood-feeding inhibition and mortality rates in tunnel tests\n", - "columns: ['Survey month', 'No. of nets tested', 'Mean 1 h KD (%)', 'Mean 24 h mortality (%)', '% of nets passed by KD criteria alonea', '% of nets passed mortality criteria aloneb', 'No. of nets requiring tunnel test', 'Overall pass rate in percentage (95% CI)c']\n", - "\n", - "{\"0\":{\"Survey month\":\"Olyset\\u00ae Plus\",\"No. of nets tested\":\"Olyset\\u00ae Plus\",\"Mean 1 h KD (%)\":\"Olyset\\u00ae Plus\",\"Mean 24 h mortality (%)\":\"Olyset\\u00ae Plus\",\"% of nets passed by KD criteria alonea\":\"Olyset\\u00ae Plus\",\"% of nets passed mortality criteria aloneb\":\"Olyset\\u00ae Plus\",\"No. of nets requiring tunnel test\":\"Olyset\\u00ae Plus\",\"Overall pass rate in percentage (95% CI)c\":\"Olyset\\u00ae Plus\"},\"1\":{\"Survey month\":\"0\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"99.5\",\"Mean 24 h mortality (%)\":\"100\",\"% of nets passed by KD criteria alonea\":\"100\",\"% of nets passed mortality criteria aloneb\":\"100\",\"No. of nets requiring tunnel test\":\"0\",\"Overall pass rate in percentage (95% CI)c\":\"100 (80\\u2013100)\"},\"2\":{\"Survey month\":\"6\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"97.0\",\"Mean 24 h mortality (%)\":\"88.2\",\"% of nets passed by KD criteria alonea\":\"83.3\",\"% of nets passed mortality criteria aloneb\":\"73.3\",\"No. of nets requiring tunnel test\":\"4\",\"Overall pass rate in percentage (95% CI)c\":\"96.7 (82\\u201399)\"},\"3\":{\"Survey month\":\"12\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"94.2\",\"Mean 24 h mortality (%)\":\"74.3\",\"% of nets passed by KD criteria alonea\":\"76.7\",\"% of nets passed mortality criteria aloneb\":\"43.3\",\"No. of nets requiring tunnel test\":\"6\",\"Overall pass rate in percentage (95% CI)c\":\"93.3 (78\\u201399)\"},\"4\":{\"Survey month\":\"18\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"82.9\",\"Mean 24 h mortality (%)\":\"65.9\",\"% of nets passed by KD criteria alonea\":\"36.7\",\"% of nets passed mortality criteria aloneb\":\"36.7\",\"No. of nets requiring tunnel test\":\"16\",\"Overall pass rate in percentage (95% CI)c\":\"86.7 (69\\u201396)\"},\"5\":{\"Survey month\":\"24\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"77.4\",\"Mean 24 h mortality (%)\":\"75.3\",\"% of nets passed by KD criteria alonea\":\"0.0\",\"% of nets passed mortality criteria aloneb\":\"46.7\",\"No. of nets requiring tunnel test\":\"15\",\"Overall pass rate in percentage (95% CI)c\":\"76.7 (57\\u201390)\"},\"6\":{\"Survey month\":\"30\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"60.4\",\"Mean 24 h mortality (%)\":\"56.9\",\"% of nets passed by KD criteria alonea\":\"0.0\",\"% of nets passed mortality criteria aloneb\":\"10.0\",\"No. of nets requiring tunnel test\":\"27\",\"Overall pass rate in percentage (95% CI)c\":\"70.0 (50\\u201385)\"},\"7\":{\"Survey month\":\"36\",\"No. of nets tested\":\"50\",\"Mean 1 h KD (%)\":\"66.4\",\"Mean 24 h mortality (%)\":\"51.5\",\"% of nets passed by KD criteria alonea\":\"2.0\",\"% of nets passed mortality criteria aloneb\":\"8.0\",\"No. of nets requiring tunnel test\":\"24\",\"Overall pass rate in percentage (95% CI)c\":\"42.0 (28\\u201356)\"},\"8\":{\"Survey month\":\"Olyset\\u00ae Net\",\"No. of nets tested\":\"Olyset\\u00ae Net\",\"Mean 1 h KD (%)\":\"Olyset\\u00ae Net\",\"Mean 24 h mortality (%)\":\"Olyset\\u00ae Net\",\"% of nets passed by KD criteria alonea\":\"Olyset\\u00ae Net\",\"% of nets passed mortality criteria aloneb\":\"Olyset\\u00ae Net\",\"No. of nets requiring tunnel test\":\"Olyset\\u00ae Net\",\"Overall pass rate in percentage (95% CI)c\":\"Olyset\\u00ae Net\"},\"9\":{\"Survey month\":\"0\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"99.1\",\"Mean 24 h mortality (%)\":\"100\",\"% of nets passed by KD criteria alonea\":\"100\",\"% of nets passed mortality criteria aloneb\":\"100\",\"No. of nets requiring tunnel test\":\"0\",\"Overall pass rate in percentage (95% CI)c\":\"100 (88\\u2013100)\"},\"10\":{\"Survey month\":\"6\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"96.9\",\"Mean 24 h mortality (%)\":\"79.8\",\"% of nets passed by KD criteria alonea\":\"80.0\",\"% of nets passed mortality criteria aloneb\":\"60.0\",\"No. of nets requiring tunnel test\":\"4\",\"Overall pass rate in percentage (95% CI)c\":\"93.3 (77\\u201399)\"},\"11\":{\"Survey month\":\"12\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"68.5\",\"Mean 24 h mortality (%)\":\"54.7\",\"% of nets passed by KD criteria alonea\":\"20.0\",\"% of nets passed mortality criteria aloneb\":\"3.3\",\"No. of nets requiring tunnel test\":\"24\",\"Overall pass rate in percentage (95% CI)c\":\"83.3 (65\\u201394)\"},\"12\":{\"Survey month\":\"18\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"72.1\",\"Mean 24 h mortality (%)\":\"50.2\",\"% of nets passed by KD criteria alonea\":\"30.0\",\"% of nets passed mortality criteria aloneb\":\"20.0\",\"No. of nets requiring tunnel test\":\"18\",\"Overall pass rate in percentage (95% CI)c\":\"73.3 (54\\u201387)\"},\"13\":{\"Survey month\":\"24\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"79.8\",\"Mean 24 h mortality (%)\":\"68.9\",\"% of nets passed by KD criteria alonea\":\"3.3\",\"% of nets passed mortality criteria aloneb\":\"46.7\",\"No. of nets requiring tunnel test\":\"18\",\"Overall pass rate in percentage (95% CI)c\":\"66.7 (47\\u201383)\"},\"14\":{\"Survey month\":\"30\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"50.9\",\"Mean 24 h mortality (%)\":\"50.9\",\"% of nets passed by KD criteria alonea\":\"0.0\",\"% of nets passed mortality criteria aloneb\":\"3.3\",\"No. of nets requiring tunnel test\":\"29\",\"Overall pass rate in percentage (95% CI)c\":\"60.0 (40\\u201377)\"},\"15\":{\"Survey month\":\"36\",\"No. of nets tested\":\"50\",\"Mean 1 h KD (%)\":\"66.3\",\"Mean 24 h mortality (%)\":\"51.9\",\"% of nets passed by KD criteria alonea\":\"0.0\",\"% of nets passed mortality criteria aloneb\":\"8.0\",\"No. of nets requiring tunnel test\":\"26\",\"Overall pass rate in percentage (95% CI)c\":\"36.0 (23\\u201350)\"}}\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Results\n", - "\n", - "Among the 1784 participating homesteads with a population of 10 325, a total of 1551 households participated in the study (Table 1). Most of the heads of the households (age: 17-96 years) had received formal education and practiced farming (96.6%).\n", - "\n", - "Out of 100 heads of households with Olyset(r) Plus interviewed for adverse events, 44% reported itching, 4% eye irritation, and 7% unpleasant smell. Among the Olyset(r) Net users, 7% each reported nasal discharge and eye irritation. These were reported to be mild symptoms lasting for one or two days. To reduce these effects, 43% users of Olyset(r) Plus ventilated nets for a day in the open under the sun and 33% under the shade. Among Olyset(r) Net users, similar actions were taken by 44% and 39%, respectively.\n", - "\n", - "header: Abstract\n", - "\n", - "Bioefficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide-treated insecticidal net in a 3-year long trial in Kenya\n", - "\n", - "Paul M. Gichuki, Anna Kamau, Kiambo Niagi, Solomon Karoki, Njoroge Muigai, Damaris Matoke-Muhia, Nabie Bayoh, Evan Mathenge\n", - "\n", - "\n", - "**Background:** Long-lasting insecticide nets (LLINs) are a core malaria intervention. LLINs should retain efficacy against mosquito vectors for a minimum of three years. Efficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide (PBO) treated LLIN, was evaluated versus permethrin treated Olyset(r) Net. In the absence of WHO guidelines of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated as a pyrethroid LILN.\n", - "\n", - "**Methods:** This was a household randomized controlled trial in a malaria endemic rice cultivation zone of Kirinyaga County, Kenya between 2014 and 2017. Cone bioassays and tunnel tests were done against _Anopheles gambiae_ Kisumu. The chemical content, fabric integrity and LLIN survivorship were monitored. Comparisons between nets were tested for significance using the Chi-square test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. The WHO efficacy criteria used were >= 95% knockdown and/or >= 80% mortality rate in cone bioassays and >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests.\n", - "\n", - "**Results:** At 36 months, Olyset(r) Plus lost 52% permethrin and 87% PBO content; Olyset(r) Net lost 24% permethrin. Over 80% of Olyset(r) Plus and Olyset(r) Net passed the WHO efficacy criteria for LLINs up to 18 and 12 months, respectively. At month 36, 91.2% Olyset(r) Plus and 86.4% Olyset(r) Net survived, while 72% and 63% developed at least one hole. The proportionate Hole Index (pHI) values representing nets in good, serviceable and torn condition were 49.6%, 27.1% and 23.2%, respectively for Olyset(r) Plus, and 44.9%, 32.8% and 22.2%, respectively for Olyset(r) Net but were not significantly different.\n", - "\n", - "**Conclusions:** Olyset(r) Plus retained efficacy above or close to the WHO efficacy criteria for about 2 years than Olyset(r) Net (1-1.5 years). Both nets did not meet the 3-year WHO efficacy criteria, and showed little attrition, comparable physical durability and survivorship, with 50% of Olyset(r) Plus having good and serviceable condition after 3 years. Better community education on appropriate use and upkeep of LLINs is essential to ensure effectiveness of LLIN based malaria interventions.\n", - "\n", - "**Keywords:**_Anopheles gambiae, Bioefficacy, Durability, Kenya, Long-lasting insecticidal net, Olyset(r) Net, Olyset(r) Plus, Permeability, Piperonyl butoxide_\n", - "\n", - "header: Conclusions\n", - "\n", - "Olysset(r) Plus did not meet the WHO criteria for efficacy of LLINs in this 3-year Phase III study, which could have resulted from faster loss of permethrin and PBO and users not following the manufacturer's recommendations to not leave the nets under direct sunlight. Better community education is therefore essential to ensure appropriate use and upkeep of nets in areas with LLIN-based interventions in order to maximize their operational impact on the prevention, control and elimination of malaria. Failure to do this would result in operational implications requiring early replenishment with new nets to ensure that such an LLIN based malaria intervention remains effective.\n", - "\n", - "header: Chemical contents\n", - "\n", - "At time 0 (baseline), the contents of permethrin and PBO in Olyset(r) Plus were within the target tolerance limits of 20 +- 5 g/kg and 10 +- 2.5 g/kg, respectively; while the permethrin content in Olyset(r) Net was also within the target tolerance limit of 20 +- 3 g/kg (Table 5). The within net variation (relative standard deviation, RSD) in permethrin and PBO contents for Olyset(r) Plus at baseline were 2.2% and 3.7%, respectively, and were within the acceptable tolerance limits. The within net variation in the permethrin content in Olyset(r) Net at the baseline was 1.2% and was also within the acceptable tolerance limit. At the end of years 1, 2 and 3 of net usage, the permethrin content in Olyset(r) Plus decreased by 36%, 40% and 52%, and the PBO content showed a marked reduction of 66%, 81% and 87%, respectively. The loss of the permethrin in Olyset(r) Net\n", - "\n", - "\\begin{table}\n", - "\\begin{tabular}{c c c c c c c c} \\hline\n", - "**Survey month** & **No. of** & **Mean 1 h** & **Mean 24 h** & **\\% of nets passed by** & **\\% of nets passed by** & **No. of nets passed by** & **Overall pass rate in** \\\\\n", - "**nets** & **KD (\\%)** & **mortality** & **KD criteria alone(r)** & **mortality criteria** & **requiring tunnel** & **percentage (95\\% CI)(r)** \\\\\n", - "**Olyset(r) Plus** & & & & & & & \\\\\n", - "0 & 30 & 99.5 & 100 & 100 & 100 & 0 & 100 (80–100) \\\\\n", - "6 & 30 & 97.0 & 88.2 & 83.3 & 73.3 & 4 & 96.7 (82–99) \\\\\n", - "12 & 30 & 9\n", - "\n", - "4.2 & 74.3 & 76.7 & 43.3 & 6 & 93.3 (78–99) \\\\\n", - "18 & 30 & 82.9 & 65.9 & 36.7 & 36.7 & 16 & 86.7 (69–96) \\\\\n", - "24 & 30 & 77.4 & 75.3 & 0.0 & 46.7 & 15 & 76.7 (57–90) \\\\\n", - "30 & 30 & 60.4 & 56.9 & 0.0 & 10.0 & 27 & 70.0 (50–85) \\\\\n", - "**Olyset(r) Net** & & & & & & & \\\\\n", - "0 & 30 & 99.1 & 100 & 100 & 100 & 0 & 100 (88–100) \\\\\n", - "6 & 30 & 96.9 & 79.8 & 80.0 & 60.0 & 4 & 93.3 (77–99) \\\\\n", - "12 & 30 & 68.5 & 54.7 & 20.0 & 3.3 & 24 & 83.3 (65–94) \\\\\n", - "18 & 30 & 72.1 & 50.2 & 30.0 & 20.0 & 18 & 73.3 (54–87) \\\\\n", - "24 & 30 & 79.8 & 68.9 & 3.3 & 46.7 & 18 & 66.7 (47–83) \\\\\n", - "30 & 30 & 50.9 & 50.9 & 0.0 & 3.3 & 29 & 60.0\n", - "\n", - "\n", - "was 16% at year 1 and did not change much at year 2 and 3 (19 and 24%, respectively).\n", - "\n", - "header: Table 5 Mean permethrin and PBO contents (relative standard deviation) in nets at baseline, and at 12, 24 and 36 months\n", - "footer: a Within net variation (relative standard deviation) in permethrin and PBO contents at baseline was 2.2% and 3.7%, respectively (Olyset® Plus). – not applicable, PBOpiperonyl butoxideb Within net variation (relative standard deviation) in permethrin content at baseline was 1.2% (Olyset® Net)\n", - "columns: ['Sampling month', 'Olyset® Plus - Mean permethrin content in g/kg (95% CI)', 'Olyset® Plus - Permethrin content lost (%)', 'Olyset® Plus - PBO content in g/ kg (95% CI)', 'Olyset® Plus - PBO content lost (%)', 'Olyset® Net - Mean permethrin content in g/kg (95% CI)', 'Olyset® Net - Permethrin content lost (%)']\n", - "\n", - "{\"0\":{\"Sampling month\":0,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"18.4 (18.3\\u201318.6)a\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"8.98 (8.86\\u20139.10)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"19.6 (19.5\\u201319.7)b\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"\\u2013\"},\"1\":{\"Sampling month\":12,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.7 (10.6\\u201312.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"36\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"3.01 (2.30\\u20133.80)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"66\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"16.5 (16.0\\u201317.0)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"16\"},\"2\":{\"Sampling month\":24,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.1 (10.2\\u201312.0)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"40\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.70 (1.20\\u20132.20)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"81\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"15.9 (15.1\\u201316.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"19\"},\"3\":{\"Sampling month\":36,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"8.8 (7.9\\u20139.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"52\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.16 (0.8\\u20131.5)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"87\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"14.8 (13.9\\u201315.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"24\"}}\n", - "\n", - "header: Net survivorship and fabric integrity\n", - "\n", - "At the end of year 1, Olyset(r) Plus reported survivorship rates of 97.2% (_n_ = 243), with Olyset(r) Net recording 99.6% (_n_ = 249). At year 2, there were 92.4% (_n_ = 231) Olyset(r) Plus and 90.4% (_n_ = 226) of Olyset(r) Nets still surviving. At the end of the 3 years of study, the survivorship rates for Olyset(r) Plus and Olyset(r) Net were at 91.2% (_n_ = 228) and 86.4% (_n_ = 216), respectively.\n", - "\n", - "The pH values of the nets showed that 87.6% of Olyset(r) Plus were in good condition at 6 months, 7.6% were in acceptable/serviceable condition, and 4.8% were too torn (Table 6). These proportions increased gradually during the study and at 36 months, 49.6% were in good condition, 27.1% in acceptable/serviceable condition, and 23.2% were too torn. A similar trend of attrition was seen for Olyset(r) Net, with 44.9%, 32.8% and 22.2% nets being in good condition, acceptable condition or too torn at 36 months, respectively.\n", - "\n", - "Data on the comparison of estimates of the mean pH values and the mean hole area for Olyset(r) Plus and Olyset(r) Net are given in Table 7.\n", - "\n", - "The proportion of Olyset(r) Plus nets having been repaired by households increased from 6% (95% CI: 3.4-9.7) at month 6 to 17.9% (95% CI: 13.2-23.6) at months\n", - "\n", - "36, while that of Olyset(r) Net increased from 5% (95% CI: 2.8-8.7) to 12% (95% CI: 8.0-17.1) in the same period.\n", - "\n", - "\n", - "Olyset(r) Net incorporated with permethrin alone was included in the trial as a positive control net. A net was considered to have passed the WHO efficacy criteria if it caused >= 80% mortality and/or >= 95% knockdown in cone bioassays or >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests [3]. Most of the Olyset(r) Plus and Olyset(r) Net lost the knockdown effect during the 24-36 months follow-up. Overall, neither Olyset(r) Plus nor Olyset(r) Net performed as they should even after 2 years and did not meet the WHO efficacy criteria of a 3-year LLIN.\n", - "\n", - "Previous studies have demonstrated enhanced efficacy of Olyset(r) Plus against resistant _An. gambiae_ attributable to PBO [16-18]. A recent randomised controlled field trial in Tanzania with high levels of pyrethroid resistance in malaria vectors _An. gambiae_ and _An. arabiensis_ also attributed higher impact on malaria of Olyset(r) Plus over Olyset(r) Net to the presence of PBO that was sustained after 21 months of the trial [19]. However, there is a view that these two nets are not comparable and that the higher efficacy of Olyset(r) Plus was due to much more bleed rate of permethrin into its surface and not due to PBO that was incorporated in small amount and dwindled rapidly over time [20]. In this trial, Olyset(r) Plus was evaluated as a pyrethroid LLIN since there were no guidelines published by WHO of how to evaluate PBO nets at the time of this trial, and considering the manufacturer's product claim.\n", - "\n", - "While, it was reported that high intensity insecticide resistance will reduce the level of personal and community protection of pyrethroid LLINs [21] and PBO nets could be effective against malaria in some resistance scenarios [22], a recent WHO multi-country study found no evidence of an association between insecticide resistance and malaria infection prevalence or incidence [23]. There is also a view that at present there is limited evidence that recent reduction in the impact on malaria in sub-Saharan Africa was due to increasing resistance in malaria vectors to the pyrethroid insecticides used in treating nets [24].\n", - "\n", - "The initial permethrin content in both nets was more or less similar but the enhanced efficacy of Olyset(r) Plus was mainly due to the higher release of permethrin into the surface fibres and presence of PBO than Olyset(r) Net. The gradual decline in efficacy of both nets is consistent with the loss of permethrin and PBO in Olyset(r) Plus and of permethrin in Olyset(r) Net over time during their routine usage by the community. The decline in permethrin content was more rapid in Olyset(r) Plus than Olyset(r) Net. This explains why Olyset(r) Plus having permethrin and PBO was relatively superior than Olyset(r) Net initially, i.e., until 18 months, but after that their performance was below the WHO efficacy cut off. While the PBO content in Olyset(r) Plus at the baseline was within the target tolerance limits, 66% of the PBO content was lost within one year of net usage, and the loss increased to 81% at year 2 and 87% at year 3. Previous studies have reported that the insecticidal content in LLINs decay over time [6]. While permethrin and PBO contents may be lost due to natural decay and evaporation, washing of nets frequently and drying them under direct sunlight are known to contribute to such losses [25, 26]. In this study, despite manufacturer's label recommendation not to expose nets to direct sunlight, a good proportion of both type of nets were exposed to bright sunlight before use and left to dry in the sun after washing. This would have reduced both permethrin and PBO contents and consequently reduced the biological efficacy of these nets and should be borne in mind when considering these results. Even though Kisumu strain was tested, the loss of PBO would have affected efficacy of Olyset Plus as PBO can improve net performance even against susceptible strains, which too have P450s, and PBO is also known to act as a good solvent that can aid cuticular penetration and help improve insecticidal activity. The operational implication of rapid loss of PBO is that Olyset(r) Plus was unlikely to remain effective even against pyrethroid resistant mosquitoes for 2 or 3 years of use.\n", - "\n", - "Community net wash practices were comparable between the two nets. During the first 6 months, no net was reported to have been washed. At 1 year, 7% of Olyset(r) Plus and 7% of Olyset(r) Net were reported to have been washed at least once. At month 36 months, about 17% and 21% of Olyset(r) Plus and Olyset(r) Net\n", - "respectfully had been washed at least once. LLINs are usually recommended to be washed at most every 3 months [5], although this frequency depends on local cultural practices and water availability. Different net washing frequencies have been reported in other studies spanning from a high of 8 washes per month in Mali [27] to 4-7 times in Tanzania [28] to a low average of 1.5 washes per year in Uganda [29]. In coastal Kenya, on average nets were washed twice in 6 months, with blue colour nets least often washed than white or green colour nets, and older nets washed more frequently [30]. In western Kenya lowlands, three quarter of nets were washed once within 3 months and a third of them were dried under the sun [31]. The main reasons for low reported wash rates during the annual surveys in our study could be attributed to net users' poor recall of the net washing frequencies, and people's apprehension that washing of nets reduce net efficacy, although there was no water scarcity in the trial area being located in a rice irrigation area.\n", - "\n", - "The study participants reported experiencing certain transient adverse effects during the first two days of use of nets, but these could be prompted reactions since the community members had been informed about the possibility of such effects at the time of net distribution. The higher side effects from use of Olyset(r) Plus is in line with the higher release of permethrin as mentioned above. Users resorted to ventilating their nets in direct sunlight to reduce the effects although our project team had advised to dry up and keep the nets under shade. Ventilating new nets or drying washed nets under direct sunlight might have contributed to a significant reduction in active ingredient content and bio-efficacy of nets.\n", - "\n", - "At the end of the 3-year period, among the two cohorts of 250 nets each, only about 9% Olyset(r) Plus and about 14% Olyset(r) Net were reported to have been lost showing a high net survivorship. These results are in line with the expected 75% net survivorship rate reported by the NetCALC 3-year serviceable prediction model [32]. Previous studies have reported varying rate of net survivorship in African countries, such as 58% nets were lost within two years in Rwanda [33], only 39% of distributed nets remained both present and in serviceable physical condition 2-4 years after a mass campaign in Tanzania [34], but in Western Uganda an estimated attrition rate of just 12% after three years of use was observed for a polyester net [35]. In four African countries of Mozambique, Nigeria, DRC and Zanzibar, Tanzania, survival in serviceable condition of polyethylene and polyester LLINs after 31-37 months of use varied between different sites from 17 to 80% with median survival from 1.6 to 5.3 years [36]. In our study, the observed low attrition rate of nets appears to be also due to the 'Hawthorne effect' as the households included in the two cohorts of nets were visited every 6 or 12 months to inspect the nets. So, the awareness among study participants that the nets were regularly being followed could have modified their behaviour in favour of more careful upkeep and maintenance of the nets and as such may have been a limitation in this study.\n", - "\n", - "Studies have shown that despite small to medium size holes (64 < PHI < 642), LLINs are still protective against mosquito bites due to the excito-repellent effects of insecticides [35]. However, the nets may become ineffective when the overall hole area in nets reaches a certain threshold [37]. In our study, both Olyset(r) Plus and Olyset(r) Net recorded high fabric integrity up to the 3-year trial period. At 12 months after distribution, 78.1% of Olyset Plus and 63.8% of Olyset(r) Net were in good/acceptable condition, 12.3% Olyset(r) Plus and 30.5% Olyset(r) Net were in serviceable condition, while 9.4% Olyset(r) Plus and 5.6% Olyset(r) Net were completely torn and required to be replaced. At the end of the 3-year trial period, 49.5% of Olyset(r) Plus and 44.9% of Olyset(r) Net were in good/acceptable condition, 27.1% Olyset(r) Plus and 32.8% Olyset(r) Net in serviceable condition, while 23.2% Olyset(r) Plus and 22.2% Olyset(r) Net were completely torn and required replacement.\n", - "\n", - "Although Olyset(r) Net retained a higher permethrin content that Olyset(r) Plus, the latter showed longer duration of efficacy than the former, i.e., 18 months compared with 12 months above the WHO efficacy cut off, and higher efficacy thereafter i.e., the efficacy of Olyset(r) Plus declined to 42% at the end of 3-year trial period and that of Olyset(r) Net to 36% over the same period. This could be attributed to higher release of permethrin into the netting surface, and also because PBO can make nets perform better even against susceptible mosquitoes. Pyrethroid-PBO nets have previously been associated with higher mosquito mortality and lower blood-feeding rates in areas of high-level insecticide resistance than were non-PBO LLINs [38, 39]. Although in our study we did not test nets with a pyrethroid resistant mosquito strain, it is likely that the fast decline of PBO in Olyset(r) Plus was caused by the inappropriate exposure to sunlight, as well as the normal loss through washing would have reduced efficacy against resistant mosquitoes in the same way that it reduced efficacy against the susceptible mosquitoes tested here.\n", - "\n", - "Appropriate testing guidelines and field studies are thus required to evaluate the operational effectiveness of PBO nets against pyrethroid resistant mosquitoes and considering the PBO retention and release properties. The revised WHO LLIN guidelines should clarify for how long PBO nets should be effective and if the \n", - "current WHO efficacy criteria for a 3-year LLIN should be reduced to fit the chemistry.\n", - "\n", - "A limitation of our trial was that we did not evaluate efficacy of Olysset(r) Plus against resistant _An. gambling_ mosquitoes. Instead, we tested its efficacy for the presence of permethrin alone using a susceptible malaria vector strain, although inclusion of PBO in nets has the potential of increasing insecticidal efficacy due to increased cuticular penetration and presence of P450s in susceptible insects. There is thus a need for suitable testing guidelines and a much more validation of the impact of PBO in pyrethroid-PBO nets.\n", - "\n", - "header: Bioassays\n", - "\n", - "The insecticidal effect of the nets was evaluated using cone bioassays and where required tunnel tests, as per the WHO guidelines [3]. The bioassays were done at time zero (baseline) and then at every 6 months up to 36 months. On each of the netting pieces cut for bioassays, standard WHO plastic cones were held in place using a plastic manifold and a total of 50 laboratory bred, susceptible Kisumu strain _Anopheles gambiae_ (non-blood fed, 2-5 day old) were exposed for 3 min (5 pieces per net x 5 mosquitoes per test x 2 replicates). After the exposure, the mosquitoes were removed gently from\n", - "the cones and kept separately in plastic cups provided with cotton-wool moistened with 10% glucose solution. Knockdown (KD) was recorded at 60 min and mortality at 24 h after exposure. Mosquitoes exposed to untreated polyester net pieces were used as untreated controls. The bioassays were carried out at 27 +- 2 degC temperature and 80% +- 10% relative humidity. When the mosquito knockdown rate was < 95% and mortality < 80%, the mortality and blood-feeding inhibition effect of such nets was assessed in a tunnel test according to the WHO guidelines [3].\n", - "\n", - "For each net, only one netting piece with which mosquito mortality was found closest to the average mortality in the cone test was tested in the tunnel test [3]. One hundred, non-blood fed female _An. gambiae_ Kisumu mosquitoes, aged 5-8 days were released at the longer end of a tunnel equipment made of glass. At each end of the tunnel, a 25 cm square cage covered with a polyester netting was fitted. At the shorter end of the tunnel, a rabbit which could not move but was available for mosquito biting was placed. The mosquitoes were released at 18:00 and mosquitoes recovered at 09:00 on the following morning. During the test, the tunnel was kept in a place maintained at 27 +- 2 degC and 80% +- 10% relative humidity in full darkness. Another tunnel with untreated netting was used as control. The mean mortality rate and percentage blood-feeding inhibition were recorded, as follows:\n", - "\n", - "1. Mortality = this was measured by pooling the mortality rates of mosquitoes from the two sections of the tunnel. If mortalities in the control recorded more than 10%, the test was considered invalid.\n", - "\n", - "\\[\\text{Blood} - \\text{feeding\\,inhibition}(\\%) = \\left[ {100 \\times \\left( {\\text{Bfc} - \\text{Bfc}} \\right)} \\right]/\\text{Bfc}\\]\n", - "\n", - "where, Bfc is the proportion of blood-fed mosquitoes in the control tunnel and Bft is the proportion of blood-fed mosquitoes in the tunnel with the treated net. The treated net was considered to have met the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90%.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "All the relevant datasets supporting the conclusions of this article are included within the article.\n", - "\n", - "header: Table 7 Comparison of the estimates of the mean pHI and the mean hole area for O lyset® Plus and Olyset® Net\n", - "footer: pHI proportionate Hole Index\n", - "columns: ['Survey month', 'Olyset® Plus - No. of nets inspected', 'Olyset® Plus - Mean hole area in cm2 (± SD)', 'Olyset® Plus - Mean pHI (± SD)', 'Olyset® Net - No. of nets inspected', 'Olyset® Net - Mean hole area in cm2 (± SD)', 'Olyset® Net - Mean pHI (± SD)']\n", - "\n", - "{\"0\":{\"Survey month\":6,\"Olyset\\u00ae Plus - No. of nets inspected\":250,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"52.3 \\u00b1 230.5\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"93.3 \\u00b1 313.6\",\"Olyset\\u00ae Net - No. of nets inspected\":250,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"123.3 \\u00b1 272.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"110.5 \\u00b1 221.8\"},\"1\":{\"Survey month\":12,\"Olyset\\u00ae Plus - No. of nets inspected\":243,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"229.2 \\u00b1 574.2\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"153.6 \\u00b1 437.0\",\"Olyset\\u00ae Net - No. of nets inspected\":249,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"192.5 \\u00b1 376.2\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"156.8 \\u00b1 306.5\"},\"2\":{\"Survey month\":24,\"Olyset\\u00ae Plus - No. of nets inspected\":231,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"389.8 \\u00b1 975.4\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"317.6 \\u00b1 794.7\",\"Olyset\\u00ae Net - No. of nets inspected\":226,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"873.9 \\u00b1 353.4\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"279.4 \\u00b1 428.1\"},\"3\":{\"Survey month\":36,\"Olyset\\u00ae Plus - No. of nets inspected\":228,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"630.7 \\u00b1 1191.8\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"513.9 \\u00b1 970.9\",\"Olyset\\u00ae Net - No. of nets inspected\":216,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"621.5 \\u00b1 1710.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"506.4 \\u00b1 1393.2\"}}\n", - "\n", - "header: Chemical content analysis\n", - "\n", - "The chemical contents in the nets were determined at the beginning and at years 1, 2 and 3 by samplings nets according to the scheme described earlier. The netting pieces cut for determination of active ingredient content were individually rolled up and placed in new, clean and labeled aluminum foils and sent to the Phyto-pharmacy Department of the Walloon Agricultural Research Centre, Gembloux, Belgium, a WHO Collaborating Centre, for chemical analysis.\n", - "\n", - "header: Trial design and study area\n", - "\n", - "We did a prospective, household randomized controlled, large-scale 3-year field trial in a rice irrigation area of Kirinyaga County, Kenya from 2014 to 2017. The area is located about 100 km northeast of Nairobi at the base of Mt Kenya at an altitude of about 1200 m above sea level [14]. It receives mean annual rainfall of 1200-1600 mm with long rains in March-June and short rains in October-December. Due to high densities of mosquitoes year-round, many local people use mosquito nets. Several bed net trials have previously been conducted here for national product registration. Over 80% of the inhabitants of the area have only primary level education. Most of the houses in the area are made of mud walls with roofs of corrugated iron sheets [14].\n", - "\n", - "Four villages of Maendeleo, Huruma, Kiratina and Kasarani were selected by a simple randomization, of which the first two villages were randomly allocated Olyset(r) Plus and the other two villages received Olyset(r) Net (Table 1). In each of the selected village, households were randomly selected.\n", - "\n", - "header: Methods\n", - "\n", - "The field trial was conducted according to the WHO guidelines [3, 11]. The description of the test products and trial procedures are described below.\n", - "\n", - "header: Statistical analysis\n", - "\n", - "The data collected were entered in excel spreadsheets and cross-checked for accuracy. Data were analyzed using STATA version 14.0 (Stata Corporation, College Station, TX, USA). Comparisons between the two types of nets were tested for significance using the Chi-square (kh2) test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. For continuous variables, the arithmetic mean was used depending on the distribution of values compared to a normal distribution.\n", - "\n", - "The nets were considered to have passed the WHO efficacy criteria if the mosquito knockdown rate was found to be >= 95% and/or mortality rate >= 80% in cone bioassays. For the tunnel tests, nets were considered to have passed the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90% [3]. The procedure for calculation of proportionate Hole Index (pHI) for nets is already described above.\n", - "\n", - "header: Abbreviations\n", - "\n", - "_Cl_ Confidence interval; CHW: Community Health Workers; KD: Knockdown; LINK: long-lasting insecticidal nets; NMD: National Malaria Control Programme; pH: proportionate Hole Index; PBO: Papernot by duakoc. Relative standard deviation; SD: Standard deviation; WHO: World Health Organization.\n", - "\n", - "header: Table 6 Progression of hole formation and proportionate Hole Index (pHI) values for Olyset® Plus and Olyset® Net\n", - "footer: None\n", - "columns: ['Net brand', 'Follow up months', 'No. of nets sampled', 'Number of nets with any size holes (%; 95% CI)', 'No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)', 'No. of nets by pHI values (%; 95% CI) - pHI 65–642 (in acceptable condition)', 'No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)']\n", - "\n", - "{\"0\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":6,\"No. of nets sampled\":250,\"Number of nets with any size holes (%; 95% CI)\":\"115 (46.0; 39.9\\u201352.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"219 (87.6; 82.9\\u201391.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"19 (7.6; 4.9\\u201311.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"12 (4.8; 2.8\\u20138.2)\"},\"1\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":12,\"No. of nets sampled\":243,\"Number of nets with any size holes (%; 95% CI)\":\"131 (54.0; 47.6\\u201360.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"190 (78.2; 72.6\\u201382.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"30 (12.4; 8.8\\u201317.0)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"23 (9.5; 6.3\\u201313.8)\"},\"2\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":24,\"No. of nets sampled\":231,\"Number of nets with any size holes (%; 95% CI)\":\"120 (52.0; 45.5\\u201358.3)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"145 (62.8; 56.7\\u201368.7)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"58 (25.1; 19.9\\u201331.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"28 (12.0; 8.5\\u201316.9)\"},\"3\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":36,\"No. of nets sampled\":228,\"Number of nets with any size holes (%; 95% CI)\":\"144 (63.0; 56.7\\u201369.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"113 (49.6; 43.1\\u201356.0)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"62 (27.1; 21.8\\u201333.3)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"53 (23.2; 18.2\\u201329.2)\"},\"4\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":6,\"No. of nets sampled\":250,\"Number of nets with any size holes (%; 95% CI)\":\"157 (63.0; 56.7\\u201368.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"186 (74.4; 68.7\\u201379.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"57 (22.8; 18.1\\u201328.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"7 (2.8; 1.3\\u20135.7)\"},\"5\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":12,\"No. of nets sampled\":249,\"Number of nets with any size holes (%; 95% CI)\":\"169 (68.0; 61.8\\u201373.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"159 (63.9; 57.7\\u201369.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"76 (30.5; 25.1\\u201336.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"14 (5.6; 3.4\\u20139.2)\"},\"6\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":24,\"No. of nets sampled\":226,\"Number of nets with any size holes (%; 95% CI)\":\"147 (65.0; 58.6\\u201370.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"120 (53.1; 46.6\\u201359.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"71 (31.4; 25.7\\u201337.7)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"35 (15.5; 11.4\\u201320.8)\"},\"7\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":36,\"No. of nets sampled\":216,\"Number of nets with any size holes (%; 95% CI)\":\"156 (72.0; 65.9\\u201377.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"97 (44.9; 38.4\\u201351.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"71 (32.8; 26.9\\u201339.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"48 (22.2; 17.2\\u201328.2)\"}}\n", - "\n", - "header: Net sampling scheme\n", - "\n", - "The scheme of sampling nets at different time points for bioassays and chemical assays is given in Table 2. The netting pieces were cut from the sampled nets from positions 1-9 for bioassays, and positions HP1-HP5 (at time 0) or positions HP2-HP5 (at time 12, 24 and 36 months) for chemical content assays (Fig. 1). All the nets which were sampled and retrieved at the given survey points were replaced with new ones.\n", - "\n", - "header: Ethics approval and consent to participate: Consent to publication\n", - "\n", - "This paper is published with the authority from the Director General, Kenya Medical Research Institute (KEMR).\n", - "\n", - "header: Background\n", - "\n", - "Insecticide-treated nets reduce child mortality, number of _Plasmodium falciparum_ cases and probably the number of _P. vivax_ cases per person/year [1]. Factory-produced long-lasting insecticide nets (LLINs) are a core malaria intervention for the global elimination of malaria led by the World Health Organization (WHO) [2]. According to the WHO definition, LLINs should retain efficacy against mosquito vectors for a minimum of 20 standard washes under laboratory conditions and a minimum of 3 years of use under field conditions [3]. When used by most of the people in a population, insecticide-treated nets can protect all people in the community, including those who do not sleep under nets [4]. Currently, the National Malaria Control Programme (NMCP) in Kenya has been scaling up the use of LLINs in malaria endemic and high-risk areas to achieve universal coverage, which is defined by WHO as access to one LLIN for every 1.8 persons in each household [2, 5].\n", - "\n", - "Pyrethroid LLINs were the first brands of treated nets recommended by WHO for malaria control. However, it was believed that insecticide resistance was worsening in Africa and would present a major threat to malaria control [6-8], and that pyrethroid-LLINs were becoming less effective at killing mosquitoes in household conditions when pyrethroid resistance develops [9, 10]. Consequently, piperonyl butoxide (PBO) was incorporated in nets with the intension to improve their efficacy against pyrethroid resistant mosquitoes by acting as a metabolic enzyme inhibitor targeting the P450 cytochrome or mixed function oxidases that metabolise pyrethroids and enhance the efficacy of pyrethroid treated nets. Olyset(r) Plus has been prequalified by WHO as the first in class PBO net.\n", - "\n", - "However, at the time of beginning the trial due to the absence of guidelines published by WHO of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated only as a pyrethroid LLIN against a pyrethroid susceptible mosquito strain rather than against a resistant strain. This paper presents results of a 3-year long-term (Phase III) field trial of the candidate product, Olyset(r) Plus, along with a positive control product Olyset(r) Net, in a malaria endemic rice cultivation area of Kirinyaga County, Kenya.\n", - "\n", - "header: Test products\n", - "\n", - "Bioefficacy and physical durability of the Olyset(r) Plus and Olyset(r) Net both manufactured by Sumitomo Chemical were evaluated. The former is a polyethylene mono-filament net incorporated with 2% permethrin corresponding to 20 g permethrin active ingredient (AI)/kg or 800 mg permethrin AI/m\\({}^{2}\\) and 1% PBO (corresponding to 10 g PBO AI/kg or 400 mg PBO AI/m\\({}^{2}\\)). The latter is a polyethylene mono-filament net incorporated with 2% permethrin (w/w) (corresponding to 800 mg permethrin AI/m\\({}^{2}\\)). Olyset(r) Net was recommended in 2009 by the WHO Pesticide Evaluation Scheme (WHOPES) for use in malaria control [12], while Olyset(r) Plus was given interim recommendation by WHO in 2012 with the requirement to evaluate the product in a 3-year long-term trial to confirm its long-lasting efficacy in field [13].\n", - "\n", - "header: Assessment of durability of cohort nets\n", - "\n", - "To monitor durability of nets (i.e. survivorship and changes in physical integrity) during their routine use, 250 each of Olyset(r) Plus and Olyset(r) Net were distributed in separate households (2 nets per household) in the same villages by simple randomization. From these cohorts of nets, all nets available at the households at the time of surveys at 6, 12, 24 and 36 months were inspected for their presence and physical integrity. For this, the nets were retracted from the sleeping places, individually hung up on a rectangular frame held outside the house and inspected for presence of any holes on the side and roof panels. The holes were counted for each net, their diameter was measured, and they were classified in the following categories according to the WHO criteria for hole sizes [3, 11]:\n", - "\n", - "Size A1: 0.5-2 cm diameter, Size A2: 2-10 cm diameter, Size A3: 10-25 cm diameter, Size A4: 25 cm diameter.\n", - "\n", - "The parameters for assessing the integrity of nets included the proportions of Olyset(r) Plus and Olyset(r) Net with any size holes or tears, and the proportionate Hole Index (pHI) for each net, which was calculated as follows [11]:\n", - "\n", - "\\[\\text{pH} = \\left( {1.23 \\times \\text{ No.~of~size~A1~holes}} \\right) + \\left( {28.28 \\times \\text{ No.~of~size~A2~holes}} \\right) + \\left( {240.56 \\times \\text{ No.~of~size~A3~holes}} \\right) + \\left( {706.95 \\times \\text{ No.~of~size~A4~holes}} \\right)\\]\n", - "\n", - "Using the pHI values, Olyset(r) Plus and Olyset(r) Net were categorized as those in 'good condition' (pHI: 0-64), nets in 'acceptable' condition (pHI: 65-642), and torn nets that were likely to provide no protective efficacy (pHI > 642) [15]. The number of nets in 'good' and\n", - "\n", - "Fig. 1: A rectangular net and its individual panels showing positions for cutting netting pieces (positions 1–9 for bioassays; HP1–HPS for chemical assays)\n", - "'acceptable condition' together were taken to estimate the survival of nets over time.\n", - "\n", - "The sampled nets were also inspected for any repairs of holes or tears done by the households. After inspection, the nets were returned to the same sleeping place in the same household.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Results\n", - "\n", - "Among the 1784 participating homesteads with a population of 10 325, a total of 1551 households participated in the study (Table 1). Most of the heads of the households (age: 17-96 years) had received formal education and practiced farming (96.6%).\n", - "\n", - "Out of 100 heads of households with Olyset(r) Plus interviewed for adverse events, 44% reported itching, 4% eye irritation, and 7% unpleasant smell. Among the Olyset(r) Net users, 7% each reported nasal discharge and eye irritation. These were reported to be mild symptoms lasting for one or two days. To reduce these effects, 43% users of Olyset(r) Plus ventilated nets for a day in the open under the sun and 33% under the shade. Among Olyset(r) Net users, similar actions were taken by 44% and 39%, respectively.\n", - "\n", - "header: Funding\n", - "\n", - "The work was funded as a collaborative project by the WHO Pesticide Evaluation Scheme, Geneva, Switzerland.\n", - "\n", - "header: Chemical contents\n", - "\n", - "At time 0 (baseline), the contents of permethrin and PBO in Olyset(r) Plus were within the target tolerance limits of 20 +- 5 g/kg and 10 +- 2.5 g/kg, respectively; while the permethrin content in Olyset(r) Net was also within the target tolerance limit of 20 +- 3 g/kg (Table 5). The within net variation (relative standard deviation, RSD) in permethrin and PBO contents for Olyset(r) Plus at baseline were 2.2% and 3.7%, respectively, and were within the acceptable tolerance limits. The within net variation in the permethrin content in Olyset(r) Net at the baseline was 1.2% and was also within the acceptable tolerance limit. At the end of years 1, 2 and 3 of net usage, the permethrin content in Olyset(r) Plus decreased by 36%, 40% and 52%, and the PBO content showed a marked reduction of 66%, 81% and 87%, respectively. The loss of the permethrin in Olyset(r) Net\n", - "\n", - "\\begin{table}\n", - "\\begin{tabular}{c c c c c c c c} \\hline\n", - "**Survey month** & **No. of** & **Mean 1 h** & **Mean 24 h** & **\\% of nets passed by** & **\\% of nets passed by** & **No. of nets passed by** & **Overall pass rate in** \\\\\n", - "**nets** & **KD (\\%)** & **mortality** & **KD criteria alone(r)** & **mortality criteria** & **requiring tunnel** & **percentage (95\\% CI)(r)** \\\\\n", - "**Olyset(r) Plus** & & & & & & & \\\\\n", - "0 & 30 & 99.5 & 100 & 100 & 100 & 0 & 100 (80–100) \\\\\n", - "6 & 30 & 97.0 & 88.2 & 83.3 & 73.3 & 4 & 96.7 (82–99) \\\\\n", - "12 & 30 & 9\n", - "\n", - "4.2 & 74.3 & 76.7 & 43.3 & 6 & 93.3 (78–99) \\\\\n", - "18 & 30 & 82.9 & 65.9 & 36.7 & 36.7 & 16 & 86.7 (69–96) \\\\\n", - "24 & 30 & 77.4 & 75.3 & 0.0 & 46.7 & 15 & 76.7 (57–90) \\\\\n", - "30 & 30 & 60.4 & 56.9 & 0.0 & 10.0 & 27 & 70.0 (50–85) \\\\\n", - "**Olyset(r) Net** & & & & & & & \\\\\n", - "0 & 30 & 99.1 & 100 & 100 & 100 & 0 & 100 (88–100) \\\\\n", - "6 & 30 & 96.9 & 79.8 & 80.0 & 60.0 & 4 & 93.3 (77–99) \\\\\n", - "12 & 30 & 68.5 & 54.7 & 20.0 & 3.3 & 24 & 83.3 (65–94) \\\\\n", - "18 & 30 & 72.1 & 50.2 & 30.0 & 20.0 & 18 & 73.3 (54–87) \\\\\n", - "24 & 30 & 79.8 & 68.9 & 3.3 & 46.7 & 18 & 66.7 (47–83) \\\\\n", - "30 & 30 & 50.9 & 50.9 & 0.0 & 3.3 & 29 & 60.0\n", - "\n", - "\n", - "was 16% at year 1 and did not change much at year 2 and 3 (19 and 24%, respectively).\n", - "\n", - "header: Abbreviations\n", - "\n", - "_Cl_ Confidence interval; CHW: Community Health Workers; KD: Knockdown; LINK: long-lasting insecticidal nets; NMD: National Malaria Control Programme; pH: proportionate Hole Index; PBO: Papernot by duakoc. Relative standard deviation; SD: Standard deviation; WHO: World Health Organization.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "All the relevant datasets supporting the conclusions of this article are included within the article.\n", - "\n", - "header: Net sampling scheme\n", - "\n", - "The scheme of sampling nets at different time points for bioassays and chemical assays is given in Table 2. The netting pieces were cut from the sampled nets from positions 1-9 for bioassays, and positions HP1-HP5 (at time 0) or positions HP2-HP5 (at time 12, 24 and 36 months) for chemical content assays (Fig. 1). All the nets which were sampled and retrieved at the given survey points were replaced with new ones.\n", - "\n", - "header: Conclusions\n", - "\n", - "Olysset(r) Plus did not meet the WHO criteria for efficacy of LLINs in this 3-year Phase III study, which could have resulted from faster loss of permethrin and PBO and users not following the manufacturer's recommendations to not leave the nets under direct sunlight. Better community education is therefore essential to ensure appropriate use and upkeep of nets in areas with LLIN-based interventions in order to maximize their operational impact on the prevention, control and elimination of malaria. Failure to do this would result in operational implications requiring early replenishment with new nets to ensure that such an LLIN based malaria intervention remains effective.\n", - "\n", - "header: Table 5 Mean permethrin and PBO contents (relative standard deviation) in nets at baseline, and at 12, 24 and 36 months\n", - "footer: a Within net variation (relative standard deviation) in permethrin and PBO contents at baseline was 2.2% and 3.7%, respectively (Olyset® Plus). – not applicable, PBOpiperonyl butoxideb Within net variation (relative standard deviation) in permethrin content at baseline was 1.2% (Olyset® Net)\n", - "columns: ['Sampling month', 'Olyset® Plus - Mean permethrin content in g/kg (95% CI)', 'Olyset® Plus - Permethrin content lost (%)', 'Olyset® Plus - PBO content in g/ kg (95% CI)', 'Olyset® Plus - PBO content lost (%)', 'Olyset® Net - Mean permethrin content in g/kg (95% CI)', 'Olyset® Net - Permethrin content lost (%)']\n", - "\n", - "{\"0\":{\"Sampling month\":0,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"18.4 (18.3\\u201318.6)a\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"8.98 (8.86\\u20139.10)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"19.6 (19.5\\u201319.7)b\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"\\u2013\"},\"1\":{\"Sampling month\":12,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.7 (10.6\\u201312.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"36\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"3.01 (2.30\\u20133.80)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"66\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"16.5 (16.0\\u201317.0)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"16\"},\"2\":{\"Sampling month\":24,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.1 (10.2\\u201312.0)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"40\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.70 (1.20\\u20132.20)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"81\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"15.9 (15.1\\u201316.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"19\"},\"3\":{\"Sampling month\":36,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"8.8 (7.9\\u20139.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"52\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.16 (0.8\\u20131.5)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"87\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"14.8 (13.9\\u201315.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"24\"}}\n", - "\n", - "header: Methods\n", - "\n", - "The field trial was conducted according to the WHO guidelines [3, 11]. The description of the test products and trial procedures are described below.\n", - "\n", - "header: Recording of adverse events\n", - "\n", - "One month after net distribution, a survey was carried out to record adverse events reported by net users, and overall experiences of net usage. A pre-tested questionnaire adapted from the WHO guidelines [11] was administered to the heads or an adult person of the households after obtaining informed consent.\n", - "\n", - "header: Chemical content analysis\n", - "\n", - "The chemical contents in the nets were determined at the beginning and at years 1, 2 and 3 by samplings nets according to the scheme described earlier. The netting pieces cut for determination of active ingredient content were individually rolled up and placed in new, clean and labeled aluminum foils and sent to the Phyto-pharmacy Department of the Walloon Agricultural Research Centre, Gembloux, Belgium, a WHO Collaborating Centre, for chemical analysis.\n", - "\n", - "header: Statistical analysis\n", - "\n", - "The data collected were entered in excel spreadsheets and cross-checked for accuracy. Data were analyzed using STATA version 14.0 (Stata Corporation, College Station, TX, USA). Comparisons between the two types of nets were tested for significance using the Chi-square (kh2) test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. For continuous variables, the arithmetic mean was used depending on the distribution of values compared to a normal distribution.\n", - "\n", - "The nets were considered to have passed the WHO efficacy criteria if the mosquito knockdown rate was found to be >= 95% and/or mortality rate >= 80% in cone bioassays. For the tunnel tests, nets were considered to have passed the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90% [3]. The procedure for calculation of proportionate Hole Index (pHI) for nets is already described above.\n", - "\n", - "header: Table 3 Frequency of washing nets by the users at different time points\n", - "footer: The reported wash rate was zero at 6 months\n", - "columns: ['Period (months)', 'Olyset® Plus - No. of nets sampled', 'Olyset® Plus - No. of nets washed once (%)', 'Olyset® Plus - No. of nets washed twice (%)', 'Olyset® Plus - No. of nets washed > 2 times (%)', 'Olyset® Net - No. of nets sampled', 'Olyset® Net - No. of nets washed at once (%)', 'Olyset® Net - No. of nets washed twice (%)', 'Olyset® Net - No. of nets washed > 2 times (%)']\n", - "\n", - "{\"0\":{\"Period (months)\":6,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"\\u2013\"},\"1\":{\"Period (months)\":12,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"1 (3)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"2\":{\"Period (months)\":24,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"4 (12)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"1 (3)\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"3 (11)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"3\":{\"Period (months)\":36,\"Olyset\\u00ae Plus - No. of nets sampled\":50,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"9 (17)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"5 (10)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"3 (6)\",\"Olyset\\u00ae Net - No. of nets sampled\":50,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"11 (21)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"8 (6)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"3 (6)\"}}\n", - "\n", - "header: Household net washing practices\n", - "\n", - "The net washing practices by households were evaluated using a questionnaire at 6, 12, 24 and 36 months after net distribution.\n", - "\n", - "header: Bioassays\n", - "\n", - "The insecticidal effect of the nets was evaluated using cone bioassays and where required tunnel tests, as per the WHO guidelines [3]. The bioassays were done at time zero (baseline) and then at every 6 months up to 36 months. On each of the netting pieces cut for bioassays, standard WHO plastic cones were held in place using a plastic manifold and a total of 50 laboratory bred, susceptible Kisumu strain _Anopheles gambiae_ (non-blood fed, 2-5 day old) were exposed for 3 min (5 pieces per net x 5 mosquitoes per test x 2 replicates). After the exposure, the mosquitoes were removed gently from\n", - "the cones and kept separately in plastic cups provided with cotton-wool moistened with 10% glucose solution. Knockdown (KD) was recorded at 60 min and mortality at 24 h after exposure. Mosquitoes exposed to untreated polyester net pieces were used as untreated controls. The bioassays were carried out at 27 +- 2 degC temperature and 80% +- 10% relative humidity. When the mosquito knockdown rate was < 95% and mortality < 80%, the mortality and blood-feeding inhibition effect of such nets was assessed in a tunnel test according to the WHO guidelines [3].\n", - "\n", - "For each net, only one netting piece with which mosquito mortality was found closest to the average mortality in the cone test was tested in the tunnel test [3]. One hundred, non-blood fed female _An. gambiae_ Kisumu mosquitoes, aged 5-8 days were released at the longer end of a tunnel equipment made of glass. At each end of the tunnel, a 25 cm square cage covered with a polyester netting was fitted. At the shorter end of the tunnel, a rabbit which could not move but was available for mosquito biting was placed. The mosquitoes were released at 18:00 and mosquitoes recovered at 09:00 on the following morning. During the test, the tunnel was kept in a place maintained at 27 +- 2 degC and 80% +- 10% relative humidity in full darkness. Another tunnel with untreated netting was used as control. The mean mortality rate and percentage blood-feeding inhibition were recorded, as follows:\n", - "\n", - "1. Mortality = this was measured by pooling the mortality rates of mosquitoes from the two sections of the tunnel. If mortalities in the control recorded more than 10%, the test was considered invalid.\n", - "\n", - "\\[\\text{Blood} - \\text{feeding\\,inhibition}(\\%) = \\left[ {100 \\times \\left( {\\text{Bfc} - \\text{Bfc}} \\right)} \\right]/\\text{Bfc}\\]\n", - "\n", - "where, Bfc is the proportion of blood-fed mosquitoes in the control tunnel and Bft is the proportion of blood-fed mosquitoes in the tunnel with the treated net. The treated net was considered to have met the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90%.\n", - "\n", - "header: Competing interests\n", - "\n", - "The authors declare no competing interests. As a collaborative project, RSY, a WHO professional staff, reviewed and agreed with the study design and contributed to writing the manuscript.\n", - "\n", - "header: Net survivorship and fabric integrity\n", - "\n", - "At the end of year 1, Olyset(r) Plus reported survivorship rates of 97.2% (_n_ = 243), with Olyset(r) Net recording 99.6% (_n_ = 249). At year 2, there were 92.4% (_n_ = 231) Olyset(r) Plus and 90.4% (_n_ = 226) of Olyset(r) Nets still surviving. At the end of the 3 years of study, the survivorship rates for Olyset(r) Plus and Olyset(r) Net were at 91.2% (_n_ = 228) and 86.4% (_n_ = 216), respectively.\n", - "\n", - "The pH values of the nets showed that 87.6% of Olyset(r) Plus were in good condition at 6 months, 7.6% were in acceptable/serviceable condition, and 4.8% were too torn (Table 6). These proportions increased gradually during the study and at 36 months, 49.6% were in good condition, 27.1% in acceptable/serviceable condition, and 23.2% were too torn. A similar trend of attrition was seen for Olyset(r) Net, with 44.9%, 32.8% and 22.2% nets being in good condition, acceptable condition or too torn at 36 months, respectively.\n", - "\n", - "Data on the comparison of estimates of the mean pH values and the mean hole area for Olyset(r) Plus and Olyset(r) Net are given in Table 7.\n", - "\n", - "The proportion of Olyset(r) Plus nets having been repaired by households increased from 6% (95% CI: 3.4-9.7) at month 6 to 17.9% (95% CI: 13.2-23.6) at months\n", - "\n", - "36, while that of Olyset(r) Net increased from 5% (95% CI: 2.8-8.7) to 12% (95% CI: 8.0-17.1) in the same period.\n", - "\n", - "\n", - "Olyset(r) Net incorporated with permethrin alone was included in the trial as a positive control net. A net was considered to have passed the WHO efficacy criteria if it caused >= 80% mortality and/or >= 95% knockdown in cone bioassays or >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests [3]. Most of the Olyset(r) Plus and Olyset(r) Net lost the knockdown effect during the 24-36 months follow-up. Overall, neither Olyset(r) Plus nor Olyset(r) Net performed as they should even after 2 years and did not meet the WHO efficacy criteria of a 3-year LLIN.\n", - "\n", - "Previous studies have demonstrated enhanced efficacy of Olyset(r) Plus against resistant _An. gambiae_ attributable to PBO [16-18]. A recent randomised controlled field trial in Tanzania with high levels of pyrethroid resistance in malaria vectors _An. gambiae_ and _An. arabiensis_ also attributed higher impact on malaria of Olyset(r) Plus over Olyset(r) Net to the presence of PBO that was sustained after 21 months of the trial [19]. However, there is a view that these two nets are not comparable and that the higher efficacy of Olyset(r) Plus was due to much more bleed rate of permethrin into its surface and not due to PBO that was incorporated in small amount and dwindled rapidly over time [20]. In this trial, Olyset(r) Plus was evaluated as a pyrethroid LLIN since there were no guidelines published by WHO of how to evaluate PBO nets at the time of this trial, and considering the manufacturer's product claim.\n", - "\n", - "While, it was reported that high intensity insecticide resistance will reduce the level of personal and community protection of pyrethroid LLINs [21] and PBO nets could be effective against malaria in some resistance scenarios [22], a recent WHO multi-country study found no evidence of an association between insecticide resistance and malaria infection prevalence or incidence [23]. There is also a view that at present there is limited evidence that recent reduction in the impact on malaria in sub-Saharan Africa was due to increasing resistance in malaria vectors to the pyrethroid insecticides used in treating nets [24].\n", - "\n", - "The initial permethrin content in both nets was more or less similar but the enhanced efficacy of Olyset(r) Plus was mainly due to the higher release of permethrin into the surface fibres and presence of PBO than Olyset(r) Net. The gradual decline in efficacy of both nets is consistent with the loss of permethrin and PBO in Olyset(r) Plus and of permethrin in Olyset(r) Net over time during their routine usage by the community. The decline in permethrin content was more rapid in Olyset(r) Plus than Olyset(r) Net. This explains why Olyset(r) Plus having permethrin and PBO was relatively superior than Olyset(r) Net initially, i.e., until 18 months, but after that their performance was below the WHO efficacy cut off. While the PBO content in Olyset(r) Plus at the baseline was within the target tolerance limits, 66% of the PBO content was lost within one year of net usage, and the loss increased to 81% at year 2 and 87% at year 3. Previous studies have reported that the insecticidal content in LLINs decay over time [6]. While permethrin and PBO contents may be lost due to natural decay and evaporation, washing of nets frequently and drying them under direct sunlight are known to contribute to such losses [25, 26]. In this study, despite manufacturer's label recommendation not to expose nets to direct sunlight, a good proportion of both type of nets were exposed to bright sunlight before use and left to dry in the sun after washing. This would have reduced both permethrin and PBO contents and consequently reduced the biological efficacy of these nets and should be borne in mind when considering these results. Even though Kisumu strain was tested, the loss of PBO would have affected efficacy of Olyset Plus as PBO can improve net performance even against susceptible strains, which too have P450s, and PBO is also known to act as a good solvent that can aid cuticular penetration and help improve insecticidal activity. The operational implication of rapid loss of PBO is that Olyset(r) Plus was unlikely to remain effective even against pyrethroid resistant mosquitoes for 2 or 3 years of use.\n", - "\n", - "Community net wash practices were comparable between the two nets. During the first 6 months, no net was reported to have been washed. At 1 year, 7% of Olyset(r) Plus and 7% of Olyset(r) Net were reported to have been washed at least once. At month 36 months, about 17% and 21% of Olyset(r) Plus and Olyset(r) Net\n", - "respectfully had been washed at least once. LLINs are usually recommended to be washed at most every 3 months [5], although this frequency depends on local cultural practices and water availability. Different net washing frequencies have been reported in other studies spanning from a high of 8 washes per month in Mali [27] to 4-7 times in Tanzania [28] to a low average of 1.5 washes per year in Uganda [29]. In coastal Kenya, on average nets were washed twice in 6 months, with blue colour nets least often washed than white or green colour nets, and older nets washed more frequently [30]. In western Kenya lowlands, three quarter of nets were washed once within 3 months and a third of them were dried under the sun [31]. The main reasons for low reported wash rates during the annual surveys in our study could be attributed to net users' poor recall of the net washing frequencies, and people's apprehension that washing of nets reduce net efficacy, although there was no water scarcity in the trial area being located in a rice irrigation area.\n", - "\n", - "The study participants reported experiencing certain transient adverse effects during the first two days of use of nets, but these could be prompted reactions since the community members had been informed about the possibility of such effects at the time of net distribution. The higher side effects from use of Olyset(r) Plus is in line with the higher release of permethrin as mentioned above. Users resorted to ventilating their nets in direct sunlight to reduce the effects although our project team had advised to dry up and keep the nets under shade. Ventilating new nets or drying washed nets under direct sunlight might have contributed to a significant reduction in active ingredient content and bio-efficacy of nets.\n", - "\n", - "At the end of the 3-year period, among the two cohorts of 250 nets each, only about 9% Olyset(r) Plus and about 14% Olyset(r) Net were reported to have been lost showing a high net survivorship. These results are in line with the expected 75% net survivorship rate reported by the NetCALC 3-year serviceable prediction model [32]. Previous studies have reported varying rate of net survivorship in African countries, such as 58% nets were lost within two years in Rwanda [33], only 39% of distributed nets remained both present and in serviceable physical condition 2-4 years after a mass campaign in Tanzania [34], but in Western Uganda an estimated attrition rate of just 12% after three years of use was observed for a polyester net [35]. In four African countries of Mozambique, Nigeria, DRC and Zanzibar, Tanzania, survival in serviceable condition of polyethylene and polyester LLINs after 31-37 months of use varied between different sites from 17 to 80% with median survival from 1.6 to 5.3 years [36]. In our study, the observed low attrition rate of nets appears to be also due to the 'Hawthorne effect' as the households included in the two cohorts of nets were visited every 6 or 12 months to inspect the nets. So, the awareness among study participants that the nets were regularly being followed could have modified their behaviour in favour of more careful upkeep and maintenance of the nets and as such may have been a limitation in this study.\n", - "\n", - "Studies have shown that despite small to medium size holes (64 < PHI < 642), LLINs are still protective against mosquito bites due to the excito-repellent effects of insecticides [35]. However, the nets may become ineffective when the overall hole area in nets reaches a certain threshold [37]. In our study, both Olyset(r) Plus and Olyset(r) Net recorded high fabric integrity up to the 3-year trial period. At 12 months after distribution, 78.1% of Olyset Plus and 63.8% of Olyset(r) Net were in good/acceptable condition, 12.3% Olyset(r) Plus and 30.5% Olyset(r) Net were in serviceable condition, while 9.4% Olyset(r) Plus and 5.6% Olyset(r) Net were completely torn and required to be replaced. At the end of the 3-year trial period, 49.5% of Olyset(r) Plus and 44.9% of Olyset(r) Net were in good/acceptable condition, 27.1% Olyset(r) Plus and 32.8% Olyset(r) Net in serviceable condition, while 23.2% Olyset(r) Plus and 22.2% Olyset(r) Net were completely torn and required replacement.\n", - "\n", - "Although Olyset(r) Net retained a higher permethrin content that Olyset(r) Plus, the latter showed longer duration of efficacy than the former, i.e., 18 months compared with 12 months above the WHO efficacy cut off, and higher efficacy thereafter i.e., the efficacy of Olyset(r) Plus declined to 42% at the end of 3-year trial period and that of Olyset(r) Net to 36% over the same period. This could be attributed to higher release of permethrin into the netting surface, and also because PBO can make nets perform better even against susceptible mosquitoes. Pyrethroid-PBO nets have previously been associated with higher mosquito mortality and lower blood-feeding rates in areas of high-level insecticide resistance than were non-PBO LLINs [38, 39]. Although in our study we did not test nets with a pyrethroid resistant mosquito strain, it is likely that the fast decline of PBO in Olyset(r) Plus was caused by the inappropriate exposure to sunlight, as well as the normal loss through washing would have reduced efficacy against resistant mosquitoes in the same way that it reduced efficacy against the susceptible mosquitoes tested here.\n", - "\n", - "Appropriate testing guidelines and field studies are thus required to evaluate the operational effectiveness of PBO nets against pyrethroid resistant mosquitoes and considering the PBO retention and release properties. The revised WHO LLIN guidelines should clarify for how long PBO nets should be effective and if the \n", - "current WHO efficacy criteria for a 3-year LLIN should be reduced to fit the chemistry.\n", - "\n", - "A limitation of our trial was that we did not evaluate efficacy of Olysset(r) Plus against resistant _An. gambling_ mosquitoes. Instead, we tested its efficacy for the presence of permethrin alone using a susceptible malaria vector strain, although inclusion of PBO in nets has the potential of increasing insecticidal efficacy due to increased cuticular penetration and presence of P450s in susceptible insects. There is thus a need for suitable testing guidelines and a much more validation of the impact of PBO in pyrethroid-PBO nets.\n", - "\n", - "header: Table 7 Comparison of the estimates of the mean pHI and the mean hole area for O lyset® Plus and Olyset® Net\n", - "footer: pHI proportionate Hole Index\n", - "columns: ['Survey month', 'Olyset® Plus - No. of nets inspected', 'Olyset® Plus - Mean hole area in cm2 (± SD)', 'Olyset® Plus - Mean pHI (± SD)', 'Olyset® Net - No. of nets inspected', 'Olyset® Net - Mean hole area in cm2 (± SD)', 'Olyset® Net - Mean pHI (± SD)']\n", - "\n", - "{\"0\":{\"Survey month\":6,\"Olyset\\u00ae Plus - No. of nets inspected\":250,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"52.3 \\u00b1 230.5\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"93.3 \\u00b1 313.6\",\"Olyset\\u00ae Net - No. of nets inspected\":250,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"123.3 \\u00b1 272.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"110.5 \\u00b1 221.8\"},\"1\":{\"Survey month\":12,\"Olyset\\u00ae Plus - No. of nets inspected\":243,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"229.2 \\u00b1 574.2\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"153.6 \\u00b1 437.0\",\"Olyset\\u00ae Net - No. of nets inspected\":249,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"192.5 \\u00b1 376.2\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"156.8 \\u00b1 306.5\"},\"2\":{\"Survey month\":24,\"Olyset\\u00ae Plus - No. of nets inspected\":231,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"389.8 \\u00b1 975.4\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"317.6 \\u00b1 794.7\",\"Olyset\\u00ae Net - No. of nets inspected\":226,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"873.9 \\u00b1 353.4\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"279.4 \\u00b1 428.1\"},\"3\":{\"Survey month\":36,\"Olyset\\u00ae Plus - No. of nets inspected\":228,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"630.7 \\u00b1 1191.8\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"513.9 \\u00b1 970.9\",\"Olyset\\u00ae Net - No. of nets inspected\":216,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"621.5 \\u00b1 1710.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"506.4 \\u00b1 1393.2\"}}\n", - "\n", - "header: Test products\n", - "\n", - "Bioefficacy and physical durability of the Olyset(r) Plus and Olyset(r) Net both manufactured by Sumitomo Chemical were evaluated. The former is a polyethylene mono-filament net incorporated with 2% permethrin corresponding to 20 g permethrin active ingredient (AI)/kg or 800 mg permethrin AI/m\\({}^{2}\\) and 1% PBO (corresponding to 10 g PBO AI/kg or 400 mg PBO AI/m\\({}^{2}\\)). The latter is a polyethylene mono-filament net incorporated with 2% permethrin (w/w) (corresponding to 800 mg permethrin AI/m\\({}^{2}\\)). Olyset(r) Net was recommended in 2009 by the WHO Pesticide Evaluation Scheme (WHOPES) for use in malaria control [12], while Olyset(r) Plus was given interim recommendation by WHO in 2012 with the requirement to evaluate the product in a 3-year long-term trial to confirm its long-lasting efficacy in field [13].\n", - "\n", - "header: Assessment of durability of cohort nets\n", - "\n", - "To monitor durability of nets (i.e. survivorship and changes in physical integrity) during their routine use, 250 each of Olyset(r) Plus and Olyset(r) Net were distributed in separate households (2 nets per household) in the same villages by simple randomization. From these cohorts of nets, all nets available at the households at the time of surveys at 6, 12, 24 and 36 months were inspected for their presence and physical integrity. For this, the nets were retracted from the sleeping places, individually hung up on a rectangular frame held outside the house and inspected for presence of any holes on the side and roof panels. The holes were counted for each net, their diameter was measured, and they were classified in the following categories according to the WHO criteria for hole sizes [3, 11]:\n", - "\n", - "Size A1: 0.5-2 cm diameter, Size A2: 2-10 cm diameter, Size A3: 10-25 cm diameter, Size A4: 25 cm diameter.\n", - "\n", - "The parameters for assessing the integrity of nets included the proportions of Olyset(r) Plus and Olyset(r) Net with any size holes or tears, and the proportionate Hole Index (pHI) for each net, which was calculated as follows [11]:\n", - "\n", - "\\[\\text{pH} = \\left( {1.23 \\times \\text{ No.~of~size~A1~holes}} \\right) + \\left( {28.28 \\times \\text{ No.~of~size~A2~holes}} \\right) + \\left( {240.56 \\times \\text{ No.~of~size~A3~holes}} \\right) + \\left( {706.95 \\times \\text{ No.~of~size~A4~holes}} \\right)\\]\n", - "\n", - "Using the pHI values, Olyset(r) Plus and Olyset(r) Net were categorized as those in 'good condition' (pHI: 0-64), nets in 'acceptable' condition (pHI: 65-642), and torn nets that were likely to provide no protective efficacy (pHI > 642) [15]. The number of nets in 'good' and\n", - "\n", - "Fig. 1: A rectangular net and its individual panels showing positions for cutting netting pieces (positions 1–9 for bioassays; HP1–HPS for chemical assays)\n", - "'acceptable condition' together were taken to estimate the survival of nets over time.\n", - "\n", - "The sampled nets were also inspected for any repairs of holes or tears done by the households. After inspection, the nets were returned to the same sleeping place in the same household.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Village trial\",\"Country\":\"Kenya\",\"Site\":\"Kirinyaga County\",\"Start_year\":2014,\"End_month\":12,\"End_year\":2017}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Concentration\": {\"title\": \"Insecticide concentration (measured mean)\", \"description\": \"Enter the measured concentration of the insecticide(s) for the active ingredient(s), in the net type.If multiple sides (e.g. roof or sides) of the net were tested, provide the mean value.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}, \"median_pHI\": {\"title\": \"Median Proportional hole index\", \"description\": \"Usually provided only for those nets with holes. This value should be provided in the text or a table of the paper. If it requires your own calculations, skip it. \\nDefinition: Numerator is total number of each LN product with at least one hole of size 1\\u20134; Denominator is Total number of each LN product found and assessed in surveyed households.\"}, \"pHI_lower_IQR\": {\"title\": \"pHI lower inter-quartile\", \"description\": \"Lower inter-quartile range of `pHI_median`.\"}, \"pHI_upper_IQR\": {\"title\": \"pHI upper inter-quartile\", \"description\": \"Upper inter-quartile range of `pHI_median`.\"}, \"pHI_upper_bound\": {\"title\": \"Phi Upper Bound\", \"description\": \"lowest pHI detected.\"}, \"median_hole_size\": {\"title\": \"Median hole surface area in cm^2\", \"description\": \"Usually provided only for those nets with holes. This value should be provided in the text or a table of the paper. If it requires your own calculations, skip it.\"}, \"hole_size_upper_IQR\": {\"title\": \"hole size upper inter-quartile\", \"description\": \"Upper inter-quartile range of `hole_size_median`.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Olyset\\u00ae Plus\",\"Insecticide\":\"Permethrin, Piperonyl Butoxide\",\"Concentration_initial\":\"18.4, 8.98\",\"Concentration\":\"8.8, 1.16\",\"pHI_category\":\"Good\",\"median_pHI\":49.6,\"pHI_lower_IQR\":43.1,\"pHI_upper_IQR\":56.0,\"pHI_upper_bound\":642.0,\"median_hole_size\":52.3,\"hole_size_upper_IQR\":230.5},\"N02\":{\"Net_type\":\"Olyset\\u00ae Net\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"19.6\",\"Concentration\":\"14.8\",\"pHI_category\":\"Good\",\"median_pHI\":44.9,\"pHI_lower_IQR\":38.4,\"pHI_upper_IQR\":51.6,\"pHI_upper_bound\":642.0,\"median_hole_size\":123.3,\"hole_size_upper_IQR\":272.3}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Results\n", - "\n", - "Among the 1784 participating homesteads with a population of 10 325, a total of 1551 households participated in the study (Table 1). Most of the heads of the households (age: 17-96 years) had received formal education and practiced farming (96.6%).\n", - "\n", - "Out of 100 heads of households with Olyset(r) Plus interviewed for adverse events, 44% reported itching, 4% eye irritation, and 7% unpleasant smell. Among the Olyset(r) Net users, 7% each reported nasal discharge and eye irritation. These were reported to be mild symptoms lasting for one or two days. To reduce these effects, 43% users of Olyset(r) Plus ventilated nets for a day in the open under the sun and 33% under the shade. Among Olyset(r) Net users, similar actions were taken by 44% and 39%, respectively.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "All the relevant datasets supporting the conclusions of this article are included within the article.\n", - "\n", - "header: Chemical contents\n", - "\n", - "At time 0 (baseline), the contents of permethrin and PBO in Olyset(r) Plus were within the target tolerance limits of 20 +- 5 g/kg and 10 +- 2.5 g/kg, respectively; while the permethrin content in Olyset(r) Net was also within the target tolerance limit of 20 +- 3 g/kg (Table 5). The within net variation (relative standard deviation, RSD) in permethrin and PBO contents for Olyset(r) Plus at baseline were 2.2% and 3.7%, respectively, and were within the acceptable tolerance limits. The within net variation in the permethrin content in Olyset(r) Net at the baseline was 1.2% and was also within the acceptable tolerance limit. At the end of years 1, 2 and 3 of net usage, the permethrin content in Olyset(r) Plus decreased by 36%, 40% and 52%, and the PBO content showed a marked reduction of 66%, 81% and 87%, respectively. The loss of the permethrin in Olyset(r) Net\n", - "\n", - "\\begin{table}\n", - "\\begin{tabular}{c c c c c c c c} \\hline\n", - "**Survey month** & **No. of** & **Mean 1 h** & **Mean 24 h** & **\\% of nets passed by** & **\\% of nets passed by** & **No. of nets passed by** & **Overall pass rate in** \\\\\n", - "**nets** & **KD (\\%)** & **mortality** & **KD criteria alone(r)** & **mortality criteria** & **requiring tunnel** & **percentage (95\\% CI)(r)** \\\\\n", - "**Olyset(r) Plus** & & & & & & & \\\\\n", - "0 & 30 & 99.5 & 100 & 100 & 100 & 0 & 100 (80–100) \\\\\n", - "6 & 30 & 97.0 & 88.2 & 83.3 & 73.3 & 4 & 96.7 (82–99) \\\\\n", - "12 & 30 & 9\n", - "\n", - "4.2 & 74.3 & 76.7 & 43.3 & 6 & 93.3 (78–99) \\\\\n", - "18 & 30 & 82.9 & 65.9 & 36.7 & 36.7 & 16 & 86.7 (69–96) \\\\\n", - "24 & 30 & 77.4 & 75.3 & 0.0 & 46.7 & 15 & 76.7 (57–90) \\\\\n", - "30 & 30 & 60.4 & 56.9 & 0.0 & 10.0 & 27 & 70.0 (50–85) \\\\\n", - "**Olyset(r) Net** & & & & & & & \\\\\n", - "0 & 30 & 99.1 & 100 & 100 & 100 & 0 & 100 (88–100) \\\\\n", - "6 & 30 & 96.9 & 79.8 & 80.0 & 60.0 & 4 & 93.3 (77–99) \\\\\n", - "12 & 30 & 68.5 & 54.7 & 20.0 & 3.3 & 24 & 83.3 (65–94) \\\\\n", - "18 & 30 & 72.1 & 50.2 & 30.0 & 20.0 & 18 & 73.3 (54–87) \\\\\n", - "24 & 30 & 79.8 & 68.9 & 3.3 & 46.7 & 18 & 66.7 (47–83) \\\\\n", - "30 & 30 & 50.9 & 50.9 & 0.0 & 3.3 & 29 & 60.0\n", - "\n", - "\n", - "was 16% at year 1 and did not change much at year 2 and 3 (19 and 24%, respectively).\n", - "\n", - "header: Conclusions\n", - "\n", - "Olysset(r) Plus did not meet the WHO criteria for efficacy of LLINs in this 3-year Phase III study, which could have resulted from faster loss of permethrin and PBO and users not following the manufacturer's recommendations to not leave the nets under direct sunlight. Better community education is therefore essential to ensure appropriate use and upkeep of nets in areas with LLIN-based interventions in order to maximize their operational impact on the prevention, control and elimination of malaria. Failure to do this would result in operational implications requiring early replenishment with new nets to ensure that such an LLIN based malaria intervention remains effective.\n", - "\n", - "header: Recording of adverse events\n", - "\n", - "One month after net distribution, a survey was carried out to record adverse events reported by net users, and overall experiences of net usage. A pre-tested questionnaire adapted from the WHO guidelines [11] was administered to the heads or an adult person of the households after obtaining informed consent.\n", - "\n", - "header: Funding\n", - "\n", - "The work was funded as a collaborative project by the WHO Pesticide Evaluation Scheme, Geneva, Switzerland.\n", - "\n", - "header: Table 5 Mean permethrin and PBO contents (relative standard deviation) in nets at baseline, and at 12, 24 and 36 months\n", - "footer: a Within net variation (relative standard deviation) in permethrin and PBO contents at baseline was 2.2% and 3.7%, respectively (Olyset® Plus). – not applicable, PBOpiperonyl butoxideb Within net variation (relative standard deviation) in permethrin content at baseline was 1.2% (Olyset® Net)\n", - "columns: ['Sampling month', 'Olyset® Plus - Mean permethrin content in g/kg (95% CI)', 'Olyset® Plus - Permethrin content lost (%)', 'Olyset® Plus - PBO content in g/ kg (95% CI)', 'Olyset® Plus - PBO content lost (%)', 'Olyset® Net - Mean permethrin content in g/kg (95% CI)', 'Olyset® Net - Permethrin content lost (%)']\n", - "\n", - "{\"0\":{\"Sampling month\":0,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"18.4 (18.3\\u201318.6)a\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"8.98 (8.86\\u20139.10)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"19.6 (19.5\\u201319.7)b\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"\\u2013\"},\"1\":{\"Sampling month\":12,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.7 (10.6\\u201312.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"36\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"3.01 (2.30\\u20133.80)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"66\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"16.5 (16.0\\u201317.0)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"16\"},\"2\":{\"Sampling month\":24,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.1 (10.2\\u201312.0)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"40\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.70 (1.20\\u20132.20)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"81\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"15.9 (15.1\\u201316.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"19\"},\"3\":{\"Sampling month\":36,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"8.8 (7.9\\u20139.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"52\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.16 (0.8\\u20131.5)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"87\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"14.8 (13.9\\u201315.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"24\"}}\n", - "\n", - "header: Net sampling scheme\n", - "\n", - "The scheme of sampling nets at different time points for bioassays and chemical assays is given in Table 2. The netting pieces were cut from the sampled nets from positions 1-9 for bioassays, and positions HP1-HP5 (at time 0) or positions HP2-HP5 (at time 12, 24 and 36 months) for chemical content assays (Fig. 1). All the nets which were sampled and retrieved at the given survey points were replaced with new ones.\n", - "\n", - "header: Bioassays\n", - "\n", - "The insecticidal effect of the nets was evaluated using cone bioassays and where required tunnel tests, as per the WHO guidelines [3]. The bioassays were done at time zero (baseline) and then at every 6 months up to 36 months. On each of the netting pieces cut for bioassays, standard WHO plastic cones were held in place using a plastic manifold and a total of 50 laboratory bred, susceptible Kisumu strain _Anopheles gambiae_ (non-blood fed, 2-5 day old) were exposed for 3 min (5 pieces per net x 5 mosquitoes per test x 2 replicates). After the exposure, the mosquitoes were removed gently from\n", - "the cones and kept separately in plastic cups provided with cotton-wool moistened with 10% glucose solution. Knockdown (KD) was recorded at 60 min and mortality at 24 h after exposure. Mosquitoes exposed to untreated polyester net pieces were used as untreated controls. The bioassays were carried out at 27 +- 2 degC temperature and 80% +- 10% relative humidity. When the mosquito knockdown rate was < 95% and mortality < 80%, the mortality and blood-feeding inhibition effect of such nets was assessed in a tunnel test according to the WHO guidelines [3].\n", - "\n", - "For each net, only one netting piece with which mosquito mortality was found closest to the average mortality in the cone test was tested in the tunnel test [3]. One hundred, non-blood fed female _An. gambiae_ Kisumu mosquitoes, aged 5-8 days were released at the longer end of a tunnel equipment made of glass. At each end of the tunnel, a 25 cm square cage covered with a polyester netting was fitted. At the shorter end of the tunnel, a rabbit which could not move but was available for mosquito biting was placed. The mosquitoes were released at 18:00 and mosquitoes recovered at 09:00 on the following morning. During the test, the tunnel was kept in a place maintained at 27 +- 2 degC and 80% +- 10% relative humidity in full darkness. Another tunnel with untreated netting was used as control. The mean mortality rate and percentage blood-feeding inhibition were recorded, as follows:\n", - "\n", - "1. Mortality = this was measured by pooling the mortality rates of mosquitoes from the two sections of the tunnel. If mortalities in the control recorded more than 10%, the test was considered invalid.\n", - "\n", - "\\[\\text{Blood} - \\text{feeding\\,inhibition}(\\%) = \\left[ {100 \\times \\left( {\\text{Bfc} - \\text{Bfc}} \\right)} \\right]/\\text{Bfc}\\]\n", - "\n", - "where, Bfc is the proportion of blood-fed mosquitoes in the control tunnel and Bft is the proportion of blood-fed mosquitoes in the tunnel with the treated net. The treated net was considered to have met the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90%.\n", - "\n", - "header: Table 3 Frequency of washing nets by the users at different time points\n", - "footer: The reported wash rate was zero at 6 months\n", - "columns: ['Period (months)', 'Olyset® Plus - No. of nets sampled', 'Olyset® Plus - No. of nets washed once (%)', 'Olyset® Plus - No. of nets washed twice (%)', 'Olyset® Plus - No. of nets washed > 2 times (%)', 'Olyset® Net - No. of nets sampled', 'Olyset® Net - No. of nets washed at once (%)', 'Olyset® Net - No. of nets washed twice (%)', 'Olyset® Net - No. of nets washed > 2 times (%)']\n", - "\n", - "{\"0\":{\"Period (months)\":6,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"\\u2013\"},\"1\":{\"Period (months)\":12,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"1 (3)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"2\":{\"Period (months)\":24,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"4 (12)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"1 (3)\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"3 (11)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"3\":{\"Period (months)\":36,\"Olyset\\u00ae Plus - No. of nets sampled\":50,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"9 (17)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"5 (10)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"3 (6)\",\"Olyset\\u00ae Net - No. of nets sampled\":50,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"11 (21)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"8 (6)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"3 (6)\"}}\n", - "\n", - "header: Statistical analysis\n", - "\n", - "The data collected were entered in excel spreadsheets and cross-checked for accuracy. Data were analyzed using STATA version 14.0 (Stata Corporation, College Station, TX, USA). Comparisons between the two types of nets were tested for significance using the Chi-square (kh2) test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. For continuous variables, the arithmetic mean was used depending on the distribution of values compared to a normal distribution.\n", - "\n", - "The nets were considered to have passed the WHO efficacy criteria if the mosquito knockdown rate was found to be >= 95% and/or mortality rate >= 80% in cone bioassays. For the tunnel tests, nets were considered to have passed the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90% [3]. The procedure for calculation of proportionate Hole Index (pHI) for nets is already described above.\n", - "\n", - "header: Abbreviations\n", - "\n", - "_Cl_ Confidence interval; CHW: Community Health Workers; KD: Knockdown; LINK: long-lasting insecticidal nets; NMD: National Malaria Control Programme; pH: proportionate Hole Index; PBO: Papernot by duakoc. Relative standard deviation; SD: Standard deviation; WHO: World Health Organization.\n", - "\n", - "header: Table 7 Comparison of the estimates of the mean pHI and the mean hole area for O lyset® Plus and Olyset® Net\n", - "footer: pHI proportionate Hole Index\n", - "columns: ['Survey month', 'Olyset® Plus - No. of nets inspected', 'Olyset® Plus - Mean hole area in cm2 (± SD)', 'Olyset® Plus - Mean pHI (± SD)', 'Olyset® Net - No. of nets inspected', 'Olyset® Net - Mean hole area in cm2 (± SD)', 'Olyset® Net - Mean pHI (± SD)']\n", - "\n", - "{\"0\":{\"Survey month\":6,\"Olyset\\u00ae Plus - No. of nets inspected\":250,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"52.3 \\u00b1 230.5\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"93.3 \\u00b1 313.6\",\"Olyset\\u00ae Net - No. of nets inspected\":250,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"123.3 \\u00b1 272.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"110.5 \\u00b1 221.8\"},\"1\":{\"Survey month\":12,\"Olyset\\u00ae Plus - No. of nets inspected\":243,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"229.2 \\u00b1 574.2\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"153.6 \\u00b1 437.0\",\"Olyset\\u00ae Net - No. of nets inspected\":249,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"192.5 \\u00b1 376.2\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"156.8 \\u00b1 306.5\"},\"2\":{\"Survey month\":24,\"Olyset\\u00ae Plus - No. of nets inspected\":231,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"389.8 \\u00b1 975.4\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"317.6 \\u00b1 794.7\",\"Olyset\\u00ae Net - No. of nets inspected\":226,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"873.9 \\u00b1 353.4\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"279.4 \\u00b1 428.1\"},\"3\":{\"Survey month\":36,\"Olyset\\u00ae Plus - No. of nets inspected\":228,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"630.7 \\u00b1 1191.8\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"513.9 \\u00b1 970.9\",\"Olyset\\u00ae Net - No. of nets inspected\":216,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"621.5 \\u00b1 1710.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"506.4 \\u00b1 1393.2\"}}\n", - "\n", - "header: Methods\n", - "\n", - "The field trial was conducted according to the WHO guidelines [3, 11]. The description of the test products and trial procedures are described below.\n", - "\n", - "header: Household net washing practices\n", - "\n", - "The net washing practices by households were evaluated using a questionnaire at 6, 12, 24 and 36 months after net distribution.\n", - "\n", - "header: Competing interests\n", - "\n", - "The authors declare no competing interests. As a collaborative project, RSY, a WHO professional staff, reviewed and agreed with the study design and contributed to writing the manuscript.\n", - "\n", - "header: Abstract\n", - "\n", - "Bioefficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide-treated insecticidal net in a 3-year long trial in Kenya\n", - "\n", - "Paul M. Gichuki, Anna Kamau, Kiambo Niagi, Solomon Karoki, Njoroge Muigai, Damaris Matoke-Muhia, Nabie Bayoh, Evan Mathenge\n", - "\n", - "\n", - "**Background:** Long-lasting insecticide nets (LLINs) are a core malaria intervention. LLINs should retain efficacy against mosquito vectors for a minimum of three years. Efficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide (PBO) treated LLIN, was evaluated versus permethrin treated Olyset(r) Net. In the absence of WHO guidelines of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated as a pyrethroid LILN.\n", - "\n", - "**Methods:** This was a household randomized controlled trial in a malaria endemic rice cultivation zone of Kirinyaga County, Kenya between 2014 and 2017. Cone bioassays and tunnel tests were done against _Anopheles gambiae_ Kisumu. The chemical content, fabric integrity and LLIN survivorship were monitored. Comparisons between nets were tested for significance using the Chi-square test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. The WHO efficacy criteria used were >= 95% knockdown and/or >= 80% mortality rate in cone bioassays and >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests.\n", - "\n", - "**Results:** At 36 months, Olyset(r) Plus lost 52% permethrin and 87% PBO content; Olyset(r) Net lost 24% permethrin. Over 80% of Olyset(r) Plus and Olyset(r) Net passed the WHO efficacy criteria for LLINs up to 18 and 12 months, respectively. At month 36, 91.2% Olyset(r) Plus and 86.4% Olyset(r) Net survived, while 72% and 63% developed at least one hole. The proportionate Hole Index (pHI) values representing nets in good, serviceable and torn condition were 49.6%, 27.1% and 23.2%, respectively for Olyset(r) Plus, and 44.9%, 32.8% and 22.2%, respectively for Olyset(r) Net but were not significantly different.\n", - "\n", - "**Conclusions:** Olyset(r) Plus retained efficacy above or close to the WHO efficacy criteria for about 2 years than Olyset(r) Net (1-1.5 years). Both nets did not meet the 3-year WHO efficacy criteria, and showed little attrition, comparable physical durability and survivorship, with 50% of Olyset(r) Plus having good and serviceable condition after 3 years. Better community education on appropriate use and upkeep of LLINs is essential to ensure effectiveness of LLIN based malaria interventions.\n", - "\n", - "**Keywords:**_Anopheles gambiae, Bioefficacy, Durability, Kenya, Long-lasting insecticidal net, Olyset(r) Net, Olyset(r) Plus, Permeability, Piperonyl butoxide_\n", - "\n", - "header: Net survivorship and fabric integrity\n", - "\n", - "At the end of year 1, Olyset(r) Plus reported survivorship rates of 97.2% (_n_ = 243), with Olyset(r) Net recording 99.6% (_n_ = 249). At year 2, there were 92.4% (_n_ = 231) Olyset(r) Plus and 90.4% (_n_ = 226) of Olyset(r) Nets still surviving. At the end of the 3 years of study, the survivorship rates for Olyset(r) Plus and Olyset(r) Net were at 91.2% (_n_ = 228) and 86.4% (_n_ = 216), respectively.\n", - "\n", - "The pH values of the nets showed that 87.6% of Olyset(r) Plus were in good condition at 6 months, 7.6% were in acceptable/serviceable condition, and 4.8% were too torn (Table 6). These proportions increased gradually during the study and at 36 months, 49.6% were in good condition, 27.1% in acceptable/serviceable condition, and 23.2% were too torn. A similar trend of attrition was seen for Olyset(r) Net, with 44.9%, 32.8% and 22.2% nets being in good condition, acceptable condition or too torn at 36 months, respectively.\n", - "\n", - "Data on the comparison of estimates of the mean pH values and the mean hole area for Olyset(r) Plus and Olyset(r) Net are given in Table 7.\n", - "\n", - "The proportion of Olyset(r) Plus nets having been repaired by households increased from 6% (95% CI: 3.4-9.7) at month 6 to 17.9% (95% CI: 13.2-23.6) at months\n", - "\n", - "36, while that of Olyset(r) Net increased from 5% (95% CI: 2.8-8.7) to 12% (95% CI: 8.0-17.1) in the same period.\n", - "\n", - "\n", - "Olyset(r) Net incorporated with permethrin alone was included in the trial as a positive control net. A net was considered to have passed the WHO efficacy criteria if it caused >= 80% mortality and/or >= 95% knockdown in cone bioassays or >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests [3]. Most of the Olyset(r) Plus and Olyset(r) Net lost the knockdown effect during the 24-36 months follow-up. Overall, neither Olyset(r) Plus nor Olyset(r) Net performed as they should even after 2 years and did not meet the WHO efficacy criteria of a 3-year LLIN.\n", - "\n", - "Previous studies have demonstrated enhanced efficacy of Olyset(r) Plus against resistant _An. gambiae_ attributable to PBO [16-18]. A recent randomised controlled field trial in Tanzania with high levels of pyrethroid resistance in malaria vectors _An. gambiae_ and _An. arabiensis_ also attributed higher impact on malaria of Olyset(r) Plus over Olyset(r) Net to the presence of PBO that was sustained after 21 months of the trial [19]. However, there is a view that these two nets are not comparable and that the higher efficacy of Olyset(r) Plus was due to much more bleed rate of permethrin into its surface and not due to PBO that was incorporated in small amount and dwindled rapidly over time [20]. In this trial, Olyset(r) Plus was evaluated as a pyrethroid LLIN since there were no guidelines published by WHO of how to evaluate PBO nets at the time of this trial, and considering the manufacturer's product claim.\n", - "\n", - "While, it was reported that high intensity insecticide resistance will reduce the level of personal and community protection of pyrethroid LLINs [21] and PBO nets could be effective against malaria in some resistance scenarios [22], a recent WHO multi-country study found no evidence of an association between insecticide resistance and malaria infection prevalence or incidence [23]. There is also a view that at present there is limited evidence that recent reduction in the impact on malaria in sub-Saharan Africa was due to increasing resistance in malaria vectors to the pyrethroid insecticides used in treating nets [24].\n", - "\n", - "The initial permethrin content in both nets was more or less similar but the enhanced efficacy of Olyset(r) Plus was mainly due to the higher release of permethrin into the surface fibres and presence of PBO than Olyset(r) Net. The gradual decline in efficacy of both nets is consistent with the loss of permethrin and PBO in Olyset(r) Plus and of permethrin in Olyset(r) Net over time during their routine usage by the community. The decline in permethrin content was more rapid in Olyset(r) Plus than Olyset(r) Net. This explains why Olyset(r) Plus having permethrin and PBO was relatively superior than Olyset(r) Net initially, i.e., until 18 months, but after that their performance was below the WHO efficacy cut off. While the PBO content in Olyset(r) Plus at the baseline was within the target tolerance limits, 66% of the PBO content was lost within one year of net usage, and the loss increased to 81% at year 2 and 87% at year 3. Previous studies have reported that the insecticidal content in LLINs decay over time [6]. While permethrin and PBO contents may be lost due to natural decay and evaporation, washing of nets frequently and drying them under direct sunlight are known to contribute to such losses [25, 26]. In this study, despite manufacturer's label recommendation not to expose nets to direct sunlight, a good proportion of both type of nets were exposed to bright sunlight before use and left to dry in the sun after washing. This would have reduced both permethrin and PBO contents and consequently reduced the biological efficacy of these nets and should be borne in mind when considering these results. Even though Kisumu strain was tested, the loss of PBO would have affected efficacy of Olyset Plus as PBO can improve net performance even against susceptible strains, which too have P450s, and PBO is also known to act as a good solvent that can aid cuticular penetration and help improve insecticidal activity. The operational implication of rapid loss of PBO is that Olyset(r) Plus was unlikely to remain effective even against pyrethroid resistant mosquitoes for 2 or 3 years of use.\n", - "\n", - "Community net wash practices were comparable between the two nets. During the first 6 months, no net was reported to have been washed. At 1 year, 7% of Olyset(r) Plus and 7% of Olyset(r) Net were reported to have been washed at least once. At month 36 months, about 17% and 21% of Olyset(r) Plus and Olyset(r) Net\n", - "respectfully had been washed at least once. LLINs are usually recommended to be washed at most every 3 months [5], although this frequency depends on local cultural practices and water availability. Different net washing frequencies have been reported in other studies spanning from a high of 8 washes per month in Mali [27] to 4-7 times in Tanzania [28] to a low average of 1.5 washes per year in Uganda [29]. In coastal Kenya, on average nets were washed twice in 6 months, with blue colour nets least often washed than white or green colour nets, and older nets washed more frequently [30]. In western Kenya lowlands, three quarter of nets were washed once within 3 months and a third of them were dried under the sun [31]. The main reasons for low reported wash rates during the annual surveys in our study could be attributed to net users' poor recall of the net washing frequencies, and people's apprehension that washing of nets reduce net efficacy, although there was no water scarcity in the trial area being located in a rice irrigation area.\n", - "\n", - "The study participants reported experiencing certain transient adverse effects during the first two days of use of nets, but these could be prompted reactions since the community members had been informed about the possibility of such effects at the time of net distribution. The higher side effects from use of Olyset(r) Plus is in line with the higher release of permethrin as mentioned above. Users resorted to ventilating their nets in direct sunlight to reduce the effects although our project team had advised to dry up and keep the nets under shade. Ventilating new nets or drying washed nets under direct sunlight might have contributed to a significant reduction in active ingredient content and bio-efficacy of nets.\n", - "\n", - "At the end of the 3-year period, among the two cohorts of 250 nets each, only about 9% Olyset(r) Plus and about 14% Olyset(r) Net were reported to have been lost showing a high net survivorship. These results are in line with the expected 75% net survivorship rate reported by the NetCALC 3-year serviceable prediction model [32]. Previous studies have reported varying rate of net survivorship in African countries, such as 58% nets were lost within two years in Rwanda [33], only 39% of distributed nets remained both present and in serviceable physical condition 2-4 years after a mass campaign in Tanzania [34], but in Western Uganda an estimated attrition rate of just 12% after three years of use was observed for a polyester net [35]. In four African countries of Mozambique, Nigeria, DRC and Zanzibar, Tanzania, survival in serviceable condition of polyethylene and polyester LLINs after 31-37 months of use varied between different sites from 17 to 80% with median survival from 1.6 to 5.3 years [36]. In our study, the observed low attrition rate of nets appears to be also due to the 'Hawthorne effect' as the households included in the two cohorts of nets were visited every 6 or 12 months to inspect the nets. So, the awareness among study participants that the nets were regularly being followed could have modified their behaviour in favour of more careful upkeep and maintenance of the nets and as such may have been a limitation in this study.\n", - "\n", - "Studies have shown that despite small to medium size holes (64 < PHI < 642), LLINs are still protective against mosquito bites due to the excito-repellent effects of insecticides [35]. However, the nets may become ineffective when the overall hole area in nets reaches a certain threshold [37]. In our study, both Olyset(r) Plus and Olyset(r) Net recorded high fabric integrity up to the 3-year trial period. At 12 months after distribution, 78.1% of Olyset Plus and 63.8% of Olyset(r) Net were in good/acceptable condition, 12.3% Olyset(r) Plus and 30.5% Olyset(r) Net were in serviceable condition, while 9.4% Olyset(r) Plus and 5.6% Olyset(r) Net were completely torn and required to be replaced. At the end of the 3-year trial period, 49.5% of Olyset(r) Plus and 44.9% of Olyset(r) Net were in good/acceptable condition, 27.1% Olyset(r) Plus and 32.8% Olyset(r) Net in serviceable condition, while 23.2% Olyset(r) Plus and 22.2% Olyset(r) Net were completely torn and required replacement.\n", - "\n", - "Although Olyset(r) Net retained a higher permethrin content that Olyset(r) Plus, the latter showed longer duration of efficacy than the former, i.e., 18 months compared with 12 months above the WHO efficacy cut off, and higher efficacy thereafter i.e., the efficacy of Olyset(r) Plus declined to 42% at the end of 3-year trial period and that of Olyset(r) Net to 36% over the same period. This could be attributed to higher release of permethrin into the netting surface, and also because PBO can make nets perform better even against susceptible mosquitoes. Pyrethroid-PBO nets have previously been associated with higher mosquito mortality and lower blood-feeding rates in areas of high-level insecticide resistance than were non-PBO LLINs [38, 39]. Although in our study we did not test nets with a pyrethroid resistant mosquito strain, it is likely that the fast decline of PBO in Olyset(r) Plus was caused by the inappropriate exposure to sunlight, as well as the normal loss through washing would have reduced efficacy against resistant mosquitoes in the same way that it reduced efficacy against the susceptible mosquitoes tested here.\n", - "\n", - "Appropriate testing guidelines and field studies are thus required to evaluate the operational effectiveness of PBO nets against pyrethroid resistant mosquitoes and considering the PBO retention and release properties. The revised WHO LLIN guidelines should clarify for how long PBO nets should be effective and if the \n", - "current WHO efficacy criteria for a 3-year LLIN should be reduced to fit the chemistry.\n", - "\n", - "A limitation of our trial was that we did not evaluate efficacy of Olysset(r) Plus against resistant _An. gambling_ mosquitoes. Instead, we tested its efficacy for the presence of permethrin alone using a susceptible malaria vector strain, although inclusion of PBO in nets has the potential of increasing insecticidal efficacy due to increased cuticular penetration and presence of P450s in susceptible insects. There is thus a need for suitable testing guidelines and a much more validation of the impact of PBO in pyrethroid-PBO nets.\n", - "\n", - "header: Test products\n", - "\n", - "Bioefficacy and physical durability of the Olyset(r) Plus and Olyset(r) Net both manufactured by Sumitomo Chemical were evaluated. The former is a polyethylene mono-filament net incorporated with 2% permethrin corresponding to 20 g permethrin active ingredient (AI)/kg or 800 mg permethrin AI/m\\({}^{2}\\) and 1% PBO (corresponding to 10 g PBO AI/kg or 400 mg PBO AI/m\\({}^{2}\\)). The latter is a polyethylene mono-filament net incorporated with 2% permethrin (w/w) (corresponding to 800 mg permethrin AI/m\\({}^{2}\\)). Olyset(r) Net was recommended in 2009 by the WHO Pesticide Evaluation Scheme (WHOPES) for use in malaria control [12], while Olyset(r) Plus was given interim recommendation by WHO in 2012 with the requirement to evaluate the product in a 3-year long-term trial to confirm its long-lasting efficacy in field [13].\n", - "\n", - "header: Background\n", - "\n", - "Insecticide-treated nets reduce child mortality, number of _Plasmodium falciparum_ cases and probably the number of _P. vivax_ cases per person/year [1]. Factory-produced long-lasting insecticide nets (LLINs) are a core malaria intervention for the global elimination of malaria led by the World Health Organization (WHO) [2]. According to the WHO definition, LLINs should retain efficacy against mosquito vectors for a minimum of 20 standard washes under laboratory conditions and a minimum of 3 years of use under field conditions [3]. When used by most of the people in a population, insecticide-treated nets can protect all people in the community, including those who do not sleep under nets [4]. Currently, the National Malaria Control Programme (NMCP) in Kenya has been scaling up the use of LLINs in malaria endemic and high-risk areas to achieve universal coverage, which is defined by WHO as access to one LLIN for every 1.8 persons in each household [2, 5].\n", - "\n", - "Pyrethroid LLINs were the first brands of treated nets recommended by WHO for malaria control. However, it was believed that insecticide resistance was worsening in Africa and would present a major threat to malaria control [6-8], and that pyrethroid-LLINs were becoming less effective at killing mosquitoes in household conditions when pyrethroid resistance develops [9, 10]. Consequently, piperonyl butoxide (PBO) was incorporated in nets with the intension to improve their efficacy against pyrethroid resistant mosquitoes by acting as a metabolic enzyme inhibitor targeting the P450 cytochrome or mixed function oxidases that metabolise pyrethroids and enhance the efficacy of pyrethroid treated nets. Olyset(r) Plus has been prequalified by WHO as the first in class PBO net.\n", - "\n", - "However, at the time of beginning the trial due to the absence of guidelines published by WHO of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated only as a pyrethroid LLIN against a pyrethroid susceptible mosquito strain rather than against a resistant strain. This paper presents results of a 3-year long-term (Phase III) field trial of the candidate product, Olyset(r) Plus, along with a positive control product Olyset(r) Net, in a malaria endemic rice cultivation area of Kirinyaga County, Kenya.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Village trial\",\"Country\":\"Kenya\",\"Site\":\"Kirinyaga County\",\"Start_year\":2014,\"End_month\":12,\"End_year\":2017}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Concentration\": {\"title\": \"Insecticide concentration (measured mean)\", \"description\": \"Enter the measured concentration of the insecticide(s) for the active ingredient(s), in the net type.If multiple sides (e.g. roof or sides) of the net were tested, provide the mean value.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}, \"median_pHI\": {\"title\": \"Median Proportional hole index\", \"description\": \"Usually provided only for those nets with holes. This value should be provided in the text or a table of the paper. If it requires your own calculations, skip it. \\nDefinition: Numerator is total number of each LN product with at least one hole of size 1\\u20134; Denominator is Total number of each LN product found and assessed in surveyed households.\"}, \"pHI_lower_IQR\": {\"title\": \"pHI lower inter-quartile\", \"description\": \"Lower inter-quartile range of `pHI_median`.\"}, \"pHI_upper_IQR\": {\"title\": \"pHI upper inter-quartile\", \"description\": \"Upper inter-quartile range of `pHI_median`.\"}, \"pHI_upper_bound\": {\"title\": \"Phi Upper Bound\", \"description\": \"lowest pHI detected.\"}, \"median_hole_size\": {\"title\": \"Median hole surface area in cm^2\", \"description\": \"Usually provided only for those nets with holes. This value should be provided in the text or a table of the paper. If it requires your own calculations, skip it.\"}, \"hole_size_upper_IQR\": {\"title\": \"hole size upper inter-quartile\", \"description\": \"Upper inter-quartile range of `hole_size_median`.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Olyset\\u00ae Plus\",\"Insecticide\":\"Permethrin, Piperonyl Butoxide\",\"Concentration_initial\":\"18.4, 8.98\",\"Concentration\":\"8.8, 1.16\",\"pHI_category\":\"Good\",\"median_pHI\":49.6,\"pHI_lower_IQR\":43.1,\"pHI_upper_IQR\":56.0,\"pHI_upper_bound\":642.0,\"median_hole_size\":52.3,\"hole_size_upper_IQR\":230.5},\"N02\":{\"Net_type\":\"Olyset\\u00ae Net\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"19.6\",\"Concentration\":\"14.8\",\"pHI_category\":\"Good\",\"median_pHI\":44.9,\"pHI_lower_IQR\":38.4,\"pHI_upper_IQR\":51.6,\"pHI_upper_bound\":642.0,\"median_hole_size\":123.3,\"hole_size_upper_IQR\":272.3}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Acknowledgments\n", - "\n", - "We thank BASF and Bayer for providing the insecticides. We also thank the technical staff of CREC (Abibath Odojo, Estelle Vigninou, Josias Fagbohoun, Edwige Kpanou etc) for their assistance. We are grateful to the rice farmers at Cove for their support in the hut study.\n", - "\n", - "header: Background: Methods\n", - "\n", - "The efficacy of combining a standard pyrethroid LLIN (DuraNet(r)) with IRS insecticides from three chemical classes (bendicocarb, chlorfenapyr and pirimiphos-methyl CS) was evaluated in an experimental hut trial against wild pyrethroid-resistant _Anopheles gambiae_ s.l. in Cove, Benin. The combinations were also compared to each intervention alone. WHO cylinder and CDC bottle bioassays were performed to assess susceptibility of the local _An. gambiae_ s.l. vector population at the Cove hut site to insecticides used in the combinations.\n", - "\n", - "header: Results\n", - "\n", - "Susceptibility bioassays revealed that the vector population at Cove, was resistant to pyrethroids (<20% mortality) but susceptible to carbamates, chlorfenapyr and organophosphates (>=98% mortality). Mortality of wild free-flying pyrethroid resistant _An. gambiae_ s.l. entering the hut with the untreated net control (4%) did not differ significantly from DuraNet(r) alone (8%, p = 0.169). Pirimiphos-methyl CS IRS induced the highest mortality both on its own (85%) and in combination with DuraNet(r) (81%). Mortality with the DuraNet(r) + chlorfenapyr IRS combination was significantly higher than each intervention alone (46% vs. 33% and 8%, p<0.05) demonstrating an additive effect. The DuraNet(r) + bendicocarb IRS combination induced significantly lower mortality compared to the other combinations (32%, p<0.05). Blood-feeding inhibition was very low with the IRS treatments alone (3-5%) but \n", - "increased significantly when they were combined with DuraNet(r) (61% - 71%, p<0.05). Blood-feeding rates in the combinations were similar to the net alone. Adding bendicorarb IRS to DuraNet(r) induced significantly lower levels of mosquito feeding compared to adding chlorfenapyr IRS (28% vs. 37%, p = 0.015).\n", - "\n", - "header: Susceptibility bioassays\n", - "\n", - "WHO susceptibility cylinder bioassays [20] and CDC bottle bioassays [21] were performed in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove experimental hut site to the constituent insecticides in the hut treatments. Adult F1 progeny of field-collected _An. gambiae_ s.l. were exposed to filter papers treated with discriminating doses of alpha-cypermethrin (0.05%), permethrin (0.75%), bendiocarb (0.1%) and fenitrothion (1.0%) in WHO cylinders and CDC bottles impregnated with 100 mg of chlorfenapyr. Comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu colony. For each insecticide and strain, 100 adult female mosquitoes aged 2-3 days were introduced to four insecticide-treated cylinders/bottles in batches of 25. In the control arms, mosquitoes were exposed to silicone oil-treated filter papers and acetone-treated bottles. After 1 h exposure, mosquitoes were transferred to holding tubes and observation cups and provided access to 10% glucose solution (w/v). Mortality was recorded after 24 h for mosquitoes exposed to permethrin, alpha-cypermethrin, bendiocarb and fenitrothion in WHO cylinder bioassays and every 24 h up to 72 h for mosquitoes exposed to chlorfenapyr in CDC bottles. The insecticide treated filter papers used for the WHO cylinder bioassays were obtained from Universiti Sains Malaysia.\n", - "\n", - "header: Table 2: Susceptibility of field-collected Anopheles gambiae sensu late from Cove to chlorfenapyr in CDC bottle bioassays.\n", - "footer: None\n", - "columns: ['Treatment', 'Strain', 'N exposed', 'N dead', '% Mortality�', '95% CI']\n", - "\n", - "{\"0\":{\"Treatment\":\"Control\",\"Strain\":\"Kisumu\",\"N exposed\":101,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"1\":{\"Treatment\":\"Control\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":100,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"2\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Kisumu\",\"N exposed\":103,\"N dead\":103,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"},\"3\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":102,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"}}\n", - "\n", - "header: Table 4. Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", - "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", - "columns: ['Treatment', 'Total blood-fed', '% Blood-fed*', '95% CI', '% Blood-feeding inhibition', '% Personal protection']\n", - "\n", - "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total blood-fed\":675,\"% Blood-fed*\":\"95a\",\"95% CI\":\"93\\u201397\",\"% Blood-feeding inhibition\":\"\\u2013\",\"% Personal protection\":\"\\u2013\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total blood-fed\":231,\"% Blood-fed*\":\"55b\",\"95% CI\":\"50\\u201360\",\"% Blood-feeding inhibition\":\"42\",\"% Personal protection\":\"66\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total blood-fed\":202,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201336\",\"% Blood-feeding inhibition\":\"66\",\"% Personal protection\":\"70\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total blood-fed\":460,\"% Blood-fed*\":\"91e\",\"95% CI\":\"88\\u201393\",\"% Blood-feeding inhibition\":\"5\",\"% Personal protection\":\"32\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total blood-fed\":150,\"% Blood-fed*\":\"28c\",\"95% CI\":\"24\\u201332\",\"% Blood-feeding inhibition\":\"71\",\"% Personal protection\":\"78\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total blood-fed\":440,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201394\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"35\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total blood-fed\":153,\"% Blood-fed*\":\"37d\",\"95% CI\":\"33\\u201342\",\"% Blood-feeding inhibition\":\"61\",\"% Personal protection\":\"77\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total blood-fed\":488,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201395\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"28\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total blood-fed\":160,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201337\",\"% Blood-feeding inhibition\":\"65\",\"% Personal protection\":\"76\"}}\n", - "\n", - "header: Conclusions\n", - "\n", - "Adding non-pyrethroid IRS to standard pyrethroid-only LLINs against a pyrethroid-resistant vector population which is susceptible to the IRS insecticide, can provide higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone. Adding pirimphos-methyl CS IRS may provide substantial improvements in vector control while adding chlorfenapyr IRS can demonstrate an additive effect relative to both interventions alone. Adding bendicorarb IRS may show limited enhancements in vector control owing to its short residual effect.\n", - "\n", - "header: Results\n", - "\n", - "Mortality rates of wild _An. gambiae_ s.l. from Cove in WHO susceptibility and CDC bottle bioassays are presented in Tables 1 and 2 respectively. Low proportions of adult F1 progeny of field-collected _An. gambiae_ s.l. were killed following exposure to alpha-cypermethrin (11%) and permethrin (20%); demonstrating pyrethroid resistance in the vector population. In contrast, the vast majority if not all mosquitoes from Cove were killed following exposure to bendiocarb (98%), fenitrothion (100%) and chlorfenapyr (100%); demonstrating susceptibility to carbamates, organophosphates and chlorfenapyr. With the insecticide susceptible _An. gambiae_ s.s. Kisumu colony, mortality was 100% with all insecticides.\n", - "\n", - "header: Conclusions\n", - "\n", - "Adding non-pyrethroid IRS to standard pyrethroid-only nets against a pyrethroid-resistant vector population which was susceptible to the IRS insecticide, generally provided higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone; the IRS intervention was responsible for improved mosquito mortality while the pyrethroid net provided blood-feeding inhibition. The combination with pirimiphos-methyl CS IRS was the most efficacious. Adding chlorfenapyr IRS to the pyrethroid LLIN demonstrated an additive mortality effect relative to both interventions alone. The combination with benidocarb IRS provided the \n", - "lowest levels of mortality owing to its short residual effect but also induced lower levels of mosquito feeding compared to combinations with the other IRS insecticides.\n", - "\n", - "header: Study site and experimental huts: Experimental hut treatments\n", - "\n", - "The following treatments were assessed in 9 experimental huts:\n", - "\n", - "1. Control (untreated hut)\n", - "2. Control (untreated net)\n", - "3. DuraNet(r) (Alpha-cypermethrin LLIN, 261 mg/m2, Shobikaa Impex)\n", - "4. Bendiocarb IRS applied at 400 mg/m2 (Ficam(r) WP, Bayer)\n", - "5. DuraNet(r) + Bendiocarb IRS applied at 400 mg/m2\n", - "6. Chlorfenapyr IRS applied at 250 mg/m2 (Sylando(r) 240SC, BASF)\n", - "7. DuraNet(r) + Chlorfenapryr IRS applied at 250 mg/m2\n", - "8. Pirimiphos-methyl CS IRS applied at 1000 mg/m2 (Actellic(r) 300CS, Syngenta)\n", - "9. DuraNet(r) + Pirimiphos-methyl CS IRS applied at 1000 mg/m2\n", - "\n", - "Interior hut walls were sprayed from top to bottom with IRS insecticide solutions using a Hudson X-pert(r) compression sprayer equipped with a flat-fan nozzle. To improve spraying accuracy, spray swaths were pre-marked on hut walls and a guidance pole was attached to the end of the spray lance to maintain a fixed distance to the wall. After spraying each hut, the volume remaining in the spray tank was measured to assess the overall volume sprayed. All spray volumes were within 30% of the target. The palm match used on the ceiling was sprayed flat on the ground outside the experimental hut and allowed to dry for 2 hours prior to being fitted on the ceiling of the hut. Three replicate nets were used per LLIN treatment and these were rotated every 2 nights within the same hut. To simulate wear and tear from field use, 6 holes each measuring 16 cm2 were cut into each bed net (one per panel) used in the trial.\n", - "\n", - "header: Ethical considerations\n", - "\n", - "Ethical approval was obtained from the ethics review committees of the London School of Hygiene & Tropical Medicine (LSHTM) (Reference No. 15265) and the local Ministry of Health in Benin (Reference No. N'39/CEIC/CREC). All volunteers provided informed written consent and were offered a course of chemoprophylaxis (doxycycline) prior to their participation in the study and up to four weeks following its completion. A nurse was available throughout the study to assess any cases of fever. In the event a volunteer tested positive for malaria, they were immediately withdrawn from the trial and administered effective treatment.\n", - "\n", - "header: Background\n", - "\n", - "Insecticide-treated nets (ITNs) and indoor residual spraying (IRS) are core interventions for preventing and controlling malaria [1]. Both methods have independently proven to be highly effective in reducing the burden of disease in diverse epidemiological settings. The substantial reductions in malaria morbidity and mortality observed in endemic countries over the last two decades, has been attributed to a significant increase in the roll out of ITNs and IRS during this period [2]. Where resources are available, both interventions have been deployed together in the same geographical location, with the primary aim of reducing the disease burden to a greater extent than could be achieved with either method alone [3,4].\n", - "\n", - "The benefits of combining these interventions is, however, contentious. Some community-randomised controlled trials (RCTs) have compared epidemiological outcomes in communities receiving pyrethroid long-lasting insecticidal nets (LLINs) plus IRS versus LLINs alone, yielding conflicting results. Whilst trials in Tanzania [5] and Sudan [6] associated combined use of LLINs and IRS with significant reductions in malaria infection prevalence, similar studies in Benin [7], Eritrea [8], Ethiopia [9] and The Gambla [10] reported no such effect. Based on a Cochrane review demonstrating the inconsistencies in epidemiological evidence [4], the World Health Organisation (WHO) has recently issued a provisional recommendation against combining LLINs and IRS as a means of reducing malaria-associated morbidity and mortality [1]. National Malaria Control Programmes are encouraged to prioritise delivering either ITNs or IRS at high coverage and to a high standard, rather than introducing the second intervention as a means to compensate for deficiencies in the implementation of the first. However, this should not be interpreted to mean that the combined IRS and ITN approach is redundant in all settings. Considering the recent stall in progress against malaria [11] and increasing prevalence of pyrethroid resistance in malaria vector populations across Africa [12], combining interventions may be vital for high transmission settings and insecticide resistance management. Vector control programmes are expected to be guided by local evidence to decide when, where and how to combine IRS with ITNs for different epidemiological settings [1].\n", - "\n", - "Evidence from RCTs and operational studies suggests that the impact of co-implementing LLINs and IRS may depend on a number of location-specific factors including: intervention coverage, transmission intensity, vector behaviour, choice of IRS insecticide and insecticide resistance [13,14]. The choice of IRS insecticide for a specific geographical setting whether deployed alone or together with LLINs will be influenced largely by the susceptibility of the target vector population to the insecticide, its mode of action, chemical properties and residual \n", - "activity on wall substrates. To maximise the impact of the combined intervention approach, it is important to consider the interactions that may occur between the insecticide in the LLIN and the chosen IRS insecticide. Where the mode of action of the IRS insecticides is not complementary to the insecticide on the net, the combination might be redundant or result in lower levels of vector control than what is achievable with either intervention alone. Although pyrethroids are not recommended for IRS, the redundancy of combining pyrethroid IRS or wall linings with pyrethroid LLINs has been clearly demonstrated in experimental but studies against pyrethroid-resistant malaria vectors in West Africa [15,16].\n", - "\n", - "Insecticides belonging to four classes of compounds have been approved by the WHO for IRS against malaria vectors; pyrethroids, organophosphates, carbamates and more recently, the neonicotinoid clothianidin [1,17]. While RCTs are the most robust method for generating evidence on the impact of combining vector control interventions, they are often time-consuming, expensive and unrealistic in some settings. Evidence from experimental but trials may provide some insights on what to expect when different types IRS insecticides are deployed to complement pyrethroid-only nets. In this study, we compared the impact of combining pyrethroid LLINs with IRS insecticides from three distinct chemical classes in experimental huts against wild free-flying pyrethroid-resistant malaria vectors in southern Benin.\n", - "\n", - "header: Trial procedure\n", - "\n", - "The trial began three days after IRS application and continued for 4 months, between July and October 2018 and followed WHO guidelines [19]. Nine (9) consenting human volunteers kept in experimental huts each trial night to attract mosquitoes. To account for bias due to differential attractiveness to mosquitoes, volunteers were rotated through experimental huts daily in accordance with a predetermined Latin square design. To mitigate the effect of hut position on mosquito entry, bed nets were rotated through experimental huts on a weekly basis. IRS treatments could not be rotated thus remained fixed throughout the trial. At dawn, sleepers collected all mosquitoes from under the net, the sleeping room and the veranda using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were subsequently transferred to the laboratory for morphological identification and scoring of blood-feeding and mortality. To account for the slow-action of chlorfenapyr, delayed mortality was recorded every 24 h up to 72 h after collection for all treatments. All alive _An. gambiae_ s.l. were held at 27 +- 2deg C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution.\n", - "\n", - "header: Table 3. Overall entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", - "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", - "columns: ['Treatment', 'Total females caught', 'Average catch per night', '% Deterrence', 'Total exiting', '% Exophily�', '95% CI']\n", - "\n", - "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total females caught\":711,\"Average catch per night\":7,\"% Deterrence\":\"\\u2013\",\"Total exiting\":322,\"% Exophily\\ufffd\":\"45a\",\"95% CI\":\"42\\u201349\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total females caught\":420,\"Average catch per night\":4,\"% Deterrence\":\"41\",\"Total exiting\":165,\"% Exophily\\ufffd\":\"39a\",\"95% CI\":\"35\\u201344\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total females caught\":619,\"Average catch per night\":6,\"% Deterrence\":\"13\",\"Total exiting\":350,\"% Exophily\\ufffd\":\"57b\",\"95% CI\":\"53\\u201361\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":508,\"Average catch per night\":5,\"% Deterrence\":\"29\",\"Total exiting\":389,\"% Exophily\\ufffd\":\"77c\",\"95% CI\":\"73\\u201380\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total females caught\":537,\"Average catch per night\":6,\"% Deterrence\":\"25\",\"Total exiting\":373,\"% Exophily\\ufffd\":\"70cd\",\"95% CI\":\"66\\u201373\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total females caught\":478,\"Average catch per night\":5,\"% Deterrence\":\"33\",\"Total exiting\":297,\"% Exophily\\ufffd\":\"62bd\",\"95% CI\":\"58\\u201367\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total females caught\":411,\"Average catch per night\":4,\"% Deterrence\":\"42\",\"Total exiting\":241,\"% Exophily\\ufffd\":\"59b\",\"95% CI\":\"54\\u201363\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total females caught\":528,\"Average catch per night\":6,\"% Deterrence\":\"26\",\"Total exiting\":356,\"% Exophily\\ufffd\":\"67d\",\"95% CI\":\"63\\u201371\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total females caught\":486,\"Average catch per night\":5,\"% Deterrence\":\"32\",\"Total exiting\":298,\"% Exophily\\ufffd\":\"61bd\",\"95% CI\":\"57\\u201366\"}}\n", - "\n", - "header: Outcome measures\n", - "\n", - "The efficacy of each experimental hut treatment was expressed in terms of the following outcome measures:\n", - "\n", - "* Exophily-exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda\n", - "* Deterrence-defined as the percentage reduction in numbers of mosquitoes collected in a treated hut relative to the untreated control\n", - "* Blood-feeding-proportion of blood-fed mosquitoes at the time of collection\n", - "\n", - "Where _B__\\({}_{\\mu}\\)_ is the proportion of blood-fed mosquitoes in the untreated control and _B__\\({}_{\\beta}\\)_ is the proportion of blood-fed mosquitoes in the treated hut.\n", - "\n", - "\n", - "- B_{i})}{B_{u}}\\] Where \\(B_{u}\\) is the number of blood-fed mosquitoes in the untreated control and \\(B_{i}\\) is the number of blood-fed mosquitoes in the huts with insecticide treatments.\n", - "* Mortality-proportion of dead mosquitoes after a 72 h holding period Mosquito deterrence, blood-feeding inhibition and personal protection were calculated relative to the untreated net control hut for treatments which involved the LLIN and relative to the untreated hut control for IRS-only treatments.\n", - "\n", - "header: Abstract\n", - "\n", - "Which indoor residual spraying insecticide best complements standard pyrethroid long-lasting insecticidal nets for improved control of pyrethroid resistant malaria vectors?\n", - "\n", - "Thomas Syme, Augustin Fongnikin, Damien Todjinou, Renaud Goveetchan, Mark Rowland, Martin Akogbeto, Corine Nguforo\n", - "\n", - "\n", - "\n", - "Where resources are available, non-pyrethroid IRS can be deployed to complement standard pyrethroid LLINs with the aim of achieving improved vector control and managing insecticide resistance. The impact of the combination may however depend on the type of IRS insecticide deployed. Studies comparing combinations of pyrethroid LLINs with different types of non-pyrethroid IRS products will be necessary for decision making.\n", - "\n", - "header: Methods\n", - "\n", - "The study was conducted at the CREC/LSHTM experimental hut station located in Cove, southern Benin (7deg14degN2deg18degE). The experimental huts are situated in a vast area of rice irrigation, which provide extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzeii_ and _An. gambiae_ sensu stricto (s.s.) occur in sympatry, with the latter present at lower densities and predominantly in the dry season [18]. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold) [18]. Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (>90%) and overexpression of the cytochrome P450, CYP6P3, associated with pyrethroid detoxification [18]. The experimental huts used were of the West African design [19], made from concrete bricks with a corrugated iron roof and a ceiling with palm-thatch mats. Interior walls were cement plastered and each hut was constructed on a concrete base containing a water-filled moat to preclude predators. Entry of mosquitoes occurred via four window slits, 1 cm wide and 30 cm long, positioned on two sides of the hut. A wooden framed veranda made of polyethylene sheeting and screening mesh projected from the rear wall of each hut to capture exiting mosquitoes.\n", - "\n", - "header: Data analysis\n", - "\n", - "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental hut treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to differential attractiveness of the volunteer sleepers and huts.\n", - "\n", - "\n", - "Mortality in susceptibility bioassays was interpreted according to WHO criteria. All analyses were performed in Stata version 15.1.\n", - "\n", - "header: Susceptibility bioassay results: Experimental hut results\n", - "\n", - "A total of 4,698 female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trial period (Tables 3 and S1). Due to the inability to\n", - "\n", - "rotate IRS, it was not possible to distinguish treatment-induced deterrence for the IRS treatments from differential attractiveness due to hut position. The proportion of mosquitoes exiting into the veranda for the untreated hut and untreated net controls were 45% and 39% respectively. Exiting was significantly higher in all experimental hut treatments relative to both controls (p<0.01), suggesting the insecticide treatments induced an irritant response which caused mosquitoes to seek refuge in the veranda. The highest level of mosquito exiting was achieved with beniodicarb IRS alone (77%). Adding beniodicarb IRS to DuraNet(r) also induced significantly higher levels of mosquito exiting compared to DuraNet(r) alone (57% with DuraNet(r) vs. 70% with DuraNet(r) + beniodicarb IRS, p = 0.001). This effect was, however, not observed with chlorfenapyr IRS and pirimiphos-methyl CS IRS; exiting rates were similar between the combinations with these IRS insecticides and DuraNet(r) alone, (59% - 61% vs 57%, p>0.05).\n", - "\n", - "**Blood-feeding and personal protection.** Blood-feeding and personal protection results of wild, pyrethroid-resistant _An. gambiae_ s.l. in the experimental huts are presented in Table 4. Blood-feeding rates with the untreated hut and untreated net controls were 95% and 55% respectively. DuraNet(r) induced significantly lower blood-feeding rates than the control untreated net (33% with DuraNet(r) vs. 55% with untreated net, p<0.001). Meanwhile, blood-feeding was high across all IRS treatments (91-92%) thus providing very limited blood-feeding inhibition (3% - 5%) compared to the untreated hut control (Table 4). All three combinations provided significantly higher levels of blood-feeding inhibition relative to the IRS treatments\n", - "\n", - "alone (60% - 71% vs. 3% - 5%, p<0.001). Between the combinations, DuraNet(r) + bendiocarb IRS induced the lowest blood-feeding rate (28%) and offered personal protection of 78% while DuraNet(r) + chlorfenapyr IRS induced a higher blood-feeding rate (37%, p = 0.015) though providing about the same levels of personal protection (77%).\n", - "\n", - "**Mortality rates in experimental huts.** Overall mortality rates of wild, pyrethroid-resistant _An. gambiae_ s.l. in the untreated hut and untreated net controls were 2% and 4% respectively (Table 5). Mortality with DuraNet(r) was low and did not differ significantly from the untreated net control (8% vs. 4%, p = 0.169). The IRS treatments alone and the combinations induced significantly higher mortality than DuraNet(r) and the untreated controls (p < 0.001); adding any IRS treatment onto DuraNet(r) therefore always significantly improved vector mortality compared to DuraNet(r) alone. Between the IRS only treatments, the highest mortality was achieved with pirimiphos-methyl CS (85%, p < 0.001) while chlorfenapyr and bendiocarb induced fairly similar mortality rates (34% and 28%, p = 0.09). Combining DuraNet(r) with bendiocarb and pirimiphos-methyl CS IRS treatments did not improve mortality compared to the corresponding IRS alone (bendiocarb: 28% vs. 32%, p = 0.265 and pirimiphos-methyl CS: 85% vs. 81%, p = 0.129) (Table 5). With chlorfenapyr IRS, mortality was significantly higher in the combination compared to chlorfenapyr IRS alone over the 4-month trial (34% vs. 46%, p < 0.001) (Fig 3). Between the combinations, the highest mortality was achieved with DuraNet(r) + pirimiphos-methyl CS IRS (81%). Mortality was significantly higher with the DuraNet(r) + chlorfenapyr IRS combination compared to DuraNet(r) + bendiocarb IRS (46% vs. 32%, p < 0.001) (Table 5).\n", - "\n", - "Initial monthly wild mosquito mortality with pirimiphos-methyl CS IRS and chlorfenapyr IRS was steady and did not decline substantially over the course of the 4 months trial both when applied alone and in combination with DuraNet(r) (Figs 1 and 2). By contrast, wild mosquito mortality with bendiocarb IRS declined sharply from ~55% to about 28-32% by the last month of the trial both when applied alone and in combination with DuraNet(r) (Fig 3).\n", - "\n", - "**Wall cone bioassay results.** Mortality rates of the laboratory maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu colony following exposure to IRS-treated walls in monthly, 30 mins wall cone bioassays are presented in Fig 4 with more details in supporting information (S2 Table). On pirimiphos-methyl CS-treated surfaces, cone bioassay mortality was very high (> 85%) throughout all 4 months of the trial. As observed with wild free-flying mosquitoes, a progressive decline in cone bioassay mortality with increasing months elapsed from spraying was observed with bendiocarb, beginning at 63% in month 1 and decreasing to 19% by month 4. Cone bioassay mortality with chlorfenapyr IRS was consistently low throughout the trial,\n", - "ranging from 11-31%. Cone bioassay mortality on untreated control walls did not exceed 10% in any month of the trial (Fig 4).\n", - "\n", - "header: Mosquito entry and exiting.: Discussion\n", - "\n", - "The ultimate purpose of combining IRS with LLINs is to achieve greater levels of vector control through the differential effects of the interventions and modes of action of the insecticides involved than what is achievable with a single intervention on its own. Transmission dynamics models have suggested that the levels of vector mosquito mortality and blood-feeding inhibition observed in an experimental hut setting could be predictive of the capacity of an indoor vector control intervention or a combination of these to control vector populations, reduce vector biting and improve public health impact when deployed on a large scale [22,23]. In this study, we demonstrate that where vectors are resistant to pyrethroids but susceptible to a given non-pyrethroid IRS insecticide, it should be possible to achieve substantially improved vector control by adding the non-pyrethroid IRS to a standard pyrethroid-only LLIN to boost\n", - "\n", - "Fig 1: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pirimphos-methyl CS IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", - "\n", - "Fig 2: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with chlorfenapyr IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", - "\n", - "\n", - "mortality rates through the IRS intervention, while benefiting from the blood-feeding inhibition provided by the LLIN.\n", - "\n", - "The level of improved mortality achieved in the pyrethroid-only LLIN plus non-pyrethroid IRS combinations relative to the pyrethroid LLIN alone was clearly dependent on the type of non-pyrethroid IRS insecticide used. The combination with pirimiphos-methyl CS IRS induced the highest mortality rate (81%) and this can be attributed to the high and prolonged activity of the pirimiphos-methyl CS IRS formulation on cement walls as demonstrated in this study and previous studies in Benin [24]. This substantiates findings from community trials and operational studies demonstrating significant reductions in transmission of malaria by pyrethroid-resistant vector populations when a single round of pirimiphos-methyl CS IRS was deployed against a background of moderate to high coverage with standard pyrethroid nets [25-27]. By contrast the levels of mortality achieved in the combination with bendiocarb IRS was much lower (32%); attributable to the fast decline in efficacy with the insecticide as observed monthly in the experimental huts and in cone bioassays. The poor residual effect of\n", - "\n", - "Fig 4: **Mortality (72 h) of laboratory maintained, insecticide-susceptible _Anopheles gambiae_ sensu stricto Kisumu colony exposed to IRS-treated hut walls in monthly, 30 mins wall cone bioassays in experimental huts in Cove, southern Benin. Error bars represent 95% CI. Approximately fifty (50) 2–3 days old mosquitoes were exposed for 30 mins to each IRS treated hut in batches of 10 per cone and mortality recorded after 72 h.**\n", - "\n", - "Fig 3: **Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato entering experimental huts with bendiocarb IRS applied alone and in combination with DuraNet® in Cove, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.**\n", - "bendiocarb for IRS is well documented [28, 29, 30]. The failure of a combination of bendiocarb treated walls and pyrethroid nets to provide improved control of clinical malaria compared to either intervention alone in a previous RCT in Benin [7] was also largely attributed to the short-lived efficacy of bendiocarb on the treated walls [13, 14]. Multiple IRS campaign rounds may be necessary to achieve sustained levels of improved vector control when bendiocarb IRS is deployed to complement standard pyrethroid LLINs. Given the significant costs associated with running IRS campaigns, these findings raise questions over the suitability of currently available formulations of bendiocarb for IRS and the cost-effectiveness of its combination with pyrethroid nets. Considering the high initial mortality rates usually achieved with the insecticide, reformulation chemistry may help address the short residual efficacy of bendiocarb and improve the utility of this insecticide for vector control.\n", - "\n", - "While mortality in the combinations with pirimiphos-methyl CS IRS and bendiocarb IRS were similar to each IRS alone, the combination with chlorfenapyr IRS induced significantly higher levels of mortality compared to chlorfenapyr IRS alone. This demonstrates an additive effect of the chlorfenapyr IRS plus pyrethroid LLINs combination which was not observed with the other IRS insecticides tested. This trend is consistent with previous experimental hut studies in Benin [31, 32] though the levels of mortality achieved with the combination were substantially higher (73%-83% vs. 46%). The difference in mortality could be due to changes in the composition of the vector population and/or increasing pyrethroid resistance levels over time. Chlorfenapyr is a new repurposed pyrrole insecticide with a unique mode of action that has shown potential for IRS but often inducing moderate mortality rates when applied alone in experimental huts against pyrethroid-resistant malaria vectors [29, 33]. It acts on the oxidative/metabolic pathway of insects hence its action can be enhanced by physical activity in the insect [34]. The additive mortality observed in the chlorfenapyr IRS plus pyrethroid net combination may therefore be attributed to the irritant effect of the pyrethroid in the LLIN on mosquitoes as they alight on the chlorfenapyr-treated wall after failed attempts to feed on the sleeper under the net. In addition, owing to the non-neurotoxic and non-irritant effect of chlorfenapyr [35], mosquitoes may have alighted on chlorfenapyr-treated walls for longer, leading to increased insecticide pick-up, potentially contributing to the additional mortality observed with this combination. The inability of the WHO 30-min cone bioassays to predict wild mosquito mortality with chlorfenapyr IRS in experimental huts [29, 34] is further demonstrated in this study; while cone bioassay mortality of the susceptible Kisumu strain was very low, wild mosquito mortality was higher and consistent throughout the trial confirming previous findings [29]. Considering the prolonged effect of chlorfenapyr IRS on wild mosquitoes [29], substantial and sustained improvements in the control of pyrethroid-resistant vector populations can be expected if the IRS insecticide is deployed to complement pyrethroid LLINs.\n", - "\n", - "IRS is highly effective for malaria vector control when deployed on its own but provides limited personal protection from mosquito biting and this is evident from the high blood-feeding rates observed with the IRS treatments alone. In the absence of a bed net, mosquitoes will usually feed on the human occupants in an IRS treated home before resting on the wall where they pick up the insecticide, consequently, direct blood-feeding inhibition is not expected when the intervention is applied independently. By contrast, pyrethroid LLINs reduce mosquito biting and provide substantial levels of personal protection for the user; an effect which is attributable to the physical barrier of the net and the excito-repellent effect of the pyrethroid insecticide. The findings from this study demonstrate that this effect can persist even against a vector population that has developed intense resistance to pyrethroids as observed in Cove [18]. By combining the IRS treatments with a pyrethroid LLIN, it was possible to achieve substantially improved levels of blood-feeding inhibition and personal protection compared to \n", - "the IRS alone. The reduced exposure to infective bites constitutes a crucial advantage of the combination strategy over IRS alone. The blood-feeding rate in the combination appeared to depend on the type of IRS insecticide used albeit to a lesser extent than the levels of mortality achieved; lower blood-feeding rates and thus higher levels of blood-feeding inhibition were achieved in the combination with benidocarb IRS compared to the combination with chlorfenapyr IRS. This can be due to differences in the mode of action of both IRS insecticides; in contrast to chlorfenapyr, benidocarb acts on the insect's nervous system eliciting an irritant rapid knockdown effect on mosquitoes [35] and this together with the excito-repellent effect of the pyrethroid in the standard pyrethroid LLIN could have contributed to the high levels of early exiting and reduced blood-feeding rates observed when both interventions were combined in a hut.\n", - "\n", - "Overall, the results demonstrate the superiority of the organophosphate, pirimiphos-methyl CS for IRS on its own and in combination with pyrethroid LLINs over benidocarb and the pyrrole, chlorfenapyr. However, this finding may not be generalisable to areas where vectors are resistant to organophosphates. Indeed, previous experimental hut studies in Cote d'Ivoire failed to demonstrate improved vector control with the combination compared to the net alone when standard pyrethroid LLINs were combined with pirimiphos-methyl CS-treated wall linings against a vector population that was resistant to pyrethroids and organophosphates [36]. Resistance to organophosphates and carbamates is unfortunately increasing in malaria vector populations especially in West Africa [37, 38, 39, 40]. To mitigate its impact, vector control programmes are encouraged to rotate between IRS insecticides with different modes of action [41]. Considering that most IRS campaigns will usually be deployed against a background of high LLIN coverage, effective IRS rotation plans should prioritise IRS insecticides which in addition to providing improved and prolonged vector control, can efficiently complement LLINs. Based on the findings of this study, chlorfenapyr IRS shows some potential to be a useful addition to such IRS rotation plans in pyrethroid-resistant areas with high pyrethroid LLIN coverage. It will be interesting to investigate the impact of combining pyrethroid LLINs with other newly approved IRS formulations containing clothianidin [17].\n", - "\n", - "The low mortality rates achieved with the standard pyrethroid net in this study (8%), further demonstrates the threat of pyrethroid resistance on the efficacy of standard pyrethroids. Pyrethroid resistance is widespread in malaria vectors across Africa and increasing in intensity the more they are used [12]. A new generation of LLINs treated with a pyrethroid and non-pyrethroid insecticide are now in advanced development. Studies have demonstrated the potential of some of these nets to provide improved control of clinical malaria transmitted by pyrethroid-resistant malaria vectors compared to standard pyrethroid nets [42, 43, 44]. As next generation nets come into the market, and are rolled out in endemic countries, it will be essential to explore any possible interactions with the different types of IRS insecticides that could be deployed together with them in a combined intervention approach.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Background: Methods\n", - "\n", - "The efficacy of combining a standard pyrethroid LLIN (DuraNet(r)) with IRS insecticides from three chemical classes (bendicocarb, chlorfenapyr and pirimiphos-methyl CS) was evaluated in an experimental hut trial against wild pyrethroid-resistant _Anopheles gambiae_ s.l. in Cove, Benin. The combinations were also compared to each intervention alone. WHO cylinder and CDC bottle bioassays were performed to assess susceptibility of the local _An. gambiae_ s.l. vector population at the Cove hut site to insecticides used in the combinations.\n", - "\n", - "header: Acknowledgments\n", - "\n", - "We thank BASF and Bayer for providing the insecticides. We also thank the technical staff of CREC (Abibath Odojo, Estelle Vigninou, Josias Fagbohoun, Edwige Kpanou etc) for their assistance. We are grateful to the rice farmers at Cove for their support in the hut study.\n", - "\n", - "header: Results\n", - "\n", - "Mortality rates of wild _An. gambiae_ s.l. from Cove in WHO susceptibility and CDC bottle bioassays are presented in Tables 1 and 2 respectively. Low proportions of adult F1 progeny of field-collected _An. gambiae_ s.l. were killed following exposure to alpha-cypermethrin (11%) and permethrin (20%); demonstrating pyrethroid resistance in the vector population. In contrast, the vast majority if not all mosquitoes from Cove were killed following exposure to bendiocarb (98%), fenitrothion (100%) and chlorfenapyr (100%); demonstrating susceptibility to carbamates, organophosphates and chlorfenapyr. With the insecticide susceptible _An. gambiae_ s.s. Kisumu colony, mortality was 100% with all insecticides.\n", - "\n", - "header: Table 2: Susceptibility of field-collected Anopheles gambiae sensu late from Cove to chlorfenapyr in CDC bottle bioassays.\n", - "footer: None\n", - "columns: ['Treatment', 'Strain', 'N exposed', 'N dead', '% Mortality�', '95% CI']\n", - "\n", - "{\"0\":{\"Treatment\":\"Control\",\"Strain\":\"Kisumu\",\"N exposed\":101,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"1\":{\"Treatment\":\"Control\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":100,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"2\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Kisumu\",\"N exposed\":103,\"N dead\":103,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"},\"3\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":102,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"}}\n", - "\n", - "header: Susceptibility bioassays\n", - "\n", - "WHO susceptibility cylinder bioassays [20] and CDC bottle bioassays [21] were performed in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove experimental hut site to the constituent insecticides in the hut treatments. Adult F1 progeny of field-collected _An. gambiae_ s.l. were exposed to filter papers treated with discriminating doses of alpha-cypermethrin (0.05%), permethrin (0.75%), bendiocarb (0.1%) and fenitrothion (1.0%) in WHO cylinders and CDC bottles impregnated with 100 mg of chlorfenapyr. Comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu colony. For each insecticide and strain, 100 adult female mosquitoes aged 2-3 days were introduced to four insecticide-treated cylinders/bottles in batches of 25. In the control arms, mosquitoes were exposed to silicone oil-treated filter papers and acetone-treated bottles. After 1 h exposure, mosquitoes were transferred to holding tubes and observation cups and provided access to 10% glucose solution (w/v). Mortality was recorded after 24 h for mosquitoes exposed to permethrin, alpha-cypermethrin, bendiocarb and fenitrothion in WHO cylinder bioassays and every 24 h up to 72 h for mosquitoes exposed to chlorfenapyr in CDC bottles. The insecticide treated filter papers used for the WHO cylinder bioassays were obtained from Universiti Sains Malaysia.\n", - "\n", - "header: Results\n", - "\n", - "Susceptibility bioassays revealed that the vector population at Cove, was resistant to pyrethroids (<20% mortality) but susceptible to carbamates, chlorfenapyr and organophosphates (>=98% mortality). Mortality of wild free-flying pyrethroid resistant _An. gambiae_ s.l. entering the hut with the untreated net control (4%) did not differ significantly from DuraNet(r) alone (8%, p = 0.169). Pirimiphos-methyl CS IRS induced the highest mortality both on its own (85%) and in combination with DuraNet(r) (81%). Mortality with the DuraNet(r) + chlorfenapyr IRS combination was significantly higher than each intervention alone (46% vs. 33% and 8%, p<0.05) demonstrating an additive effect. The DuraNet(r) + bendicocarb IRS combination induced significantly lower mortality compared to the other combinations (32%, p<0.05). Blood-feeding inhibition was very low with the IRS treatments alone (3-5%) but \n", - "increased significantly when they were combined with DuraNet(r) (61% - 71%, p<0.05). Blood-feeding rates in the combinations were similar to the net alone. Adding bendicorarb IRS to DuraNet(r) induced significantly lower levels of mosquito feeding compared to adding chlorfenapyr IRS (28% vs. 37%, p = 0.015).\n", - "\n", - "header: Conclusions\n", - "\n", - "Adding non-pyrethroid IRS to standard pyrethroid-only LLINs against a pyrethroid-resistant vector population which is susceptible to the IRS insecticide, can provide higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone. Adding pirimphos-methyl CS IRS may provide substantial improvements in vector control while adding chlorfenapyr IRS can demonstrate an additive effect relative to both interventions alone. Adding bendicorarb IRS may show limited enhancements in vector control owing to its short residual effect.\n", - "\n", - "header: Table 4. Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", - "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", - "columns: ['Treatment', 'Total blood-fed', '% Blood-fed*', '95% CI', '% Blood-feeding inhibition', '% Personal protection']\n", - "\n", - "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total blood-fed\":675,\"% Blood-fed*\":\"95a\",\"95% CI\":\"93\\u201397\",\"% Blood-feeding inhibition\":\"\\u2013\",\"% Personal protection\":\"\\u2013\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total blood-fed\":231,\"% Blood-fed*\":\"55b\",\"95% CI\":\"50\\u201360\",\"% Blood-feeding inhibition\":\"42\",\"% Personal protection\":\"66\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total blood-fed\":202,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201336\",\"% Blood-feeding inhibition\":\"66\",\"% Personal protection\":\"70\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total blood-fed\":460,\"% Blood-fed*\":\"91e\",\"95% CI\":\"88\\u201393\",\"% Blood-feeding inhibition\":\"5\",\"% Personal protection\":\"32\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total blood-fed\":150,\"% Blood-fed*\":\"28c\",\"95% CI\":\"24\\u201332\",\"% Blood-feeding inhibition\":\"71\",\"% Personal protection\":\"78\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total blood-fed\":440,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201394\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"35\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total blood-fed\":153,\"% Blood-fed*\":\"37d\",\"95% CI\":\"33\\u201342\",\"% Blood-feeding inhibition\":\"61\",\"% Personal protection\":\"77\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total blood-fed\":488,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201395\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"28\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total blood-fed\":160,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201337\",\"% Blood-feeding inhibition\":\"65\",\"% Personal protection\":\"76\"}}\n", - "\n", - "header: Conclusions\n", - "\n", - "Adding non-pyrethroid IRS to standard pyrethroid-only nets against a pyrethroid-resistant vector population which was susceptible to the IRS insecticide, generally provided higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone; the IRS intervention was responsible for improved mosquito mortality while the pyrethroid net provided blood-feeding inhibition. The combination with pirimiphos-methyl CS IRS was the most efficacious. Adding chlorfenapyr IRS to the pyrethroid LLIN demonstrated an additive mortality effect relative to both interventions alone. The combination with benidocarb IRS provided the \n", - "lowest levels of mortality owing to its short residual effect but also induced lower levels of mosquito feeding compared to combinations with the other IRS insecticides.\n", - "\n", - "header: Ethical considerations\n", - "\n", - "Ethical approval was obtained from the ethics review committees of the London School of Hygiene & Tropical Medicine (LSHTM) (Reference No. 15265) and the local Ministry of Health in Benin (Reference No. N'39/CEIC/CREC). All volunteers provided informed written consent and were offered a course of chemoprophylaxis (doxycycline) prior to their participation in the study and up to four weeks following its completion. A nurse was available throughout the study to assess any cases of fever. In the event a volunteer tested positive for malaria, they were immediately withdrawn from the trial and administered effective treatment.\n", - "\n", - "header: Outcome measures\n", - "\n", - "The efficacy of each experimental hut treatment was expressed in terms of the following outcome measures:\n", - "\n", - "* Exophily-exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda\n", - "* Deterrence-defined as the percentage reduction in numbers of mosquitoes collected in a treated hut relative to the untreated control\n", - "* Blood-feeding-proportion of blood-fed mosquitoes at the time of collection\n", - "\n", - "Where _B__\\({}_{\\mu}\\)_ is the proportion of blood-fed mosquitoes in the untreated control and _B__\\({}_{\\beta}\\)_ is the proportion of blood-fed mosquitoes in the treated hut.\n", - "\n", - "\n", - "- B_{i})}{B_{u}}\\] Where \\(B_{u}\\) is the number of blood-fed mosquitoes in the untreated control and \\(B_{i}\\) is the number of blood-fed mosquitoes in the huts with insecticide treatments.\n", - "* Mortality-proportion of dead mosquitoes after a 72 h holding period Mosquito deterrence, blood-feeding inhibition and personal protection were calculated relative to the untreated net control hut for treatments which involved the LLIN and relative to the untreated hut control for IRS-only treatments.\n", - "\n", - "header: Background\n", - "\n", - "Insecticide-treated nets (ITNs) and indoor residual spraying (IRS) are core interventions for preventing and controlling malaria [1]. Both methods have independently proven to be highly effective in reducing the burden of disease in diverse epidemiological settings. The substantial reductions in malaria morbidity and mortality observed in endemic countries over the last two decades, has been attributed to a significant increase in the roll out of ITNs and IRS during this period [2]. Where resources are available, both interventions have been deployed together in the same geographical location, with the primary aim of reducing the disease burden to a greater extent than could be achieved with either method alone [3,4].\n", - "\n", - "The benefits of combining these interventions is, however, contentious. Some community-randomised controlled trials (RCTs) have compared epidemiological outcomes in communities receiving pyrethroid long-lasting insecticidal nets (LLINs) plus IRS versus LLINs alone, yielding conflicting results. Whilst trials in Tanzania [5] and Sudan [6] associated combined use of LLINs and IRS with significant reductions in malaria infection prevalence, similar studies in Benin [7], Eritrea [8], Ethiopia [9] and The Gambla [10] reported no such effect. Based on a Cochrane review demonstrating the inconsistencies in epidemiological evidence [4], the World Health Organisation (WHO) has recently issued a provisional recommendation against combining LLINs and IRS as a means of reducing malaria-associated morbidity and mortality [1]. National Malaria Control Programmes are encouraged to prioritise delivering either ITNs or IRS at high coverage and to a high standard, rather than introducing the second intervention as a means to compensate for deficiencies in the implementation of the first. However, this should not be interpreted to mean that the combined IRS and ITN approach is redundant in all settings. Considering the recent stall in progress against malaria [11] and increasing prevalence of pyrethroid resistance in malaria vector populations across Africa [12], combining interventions may be vital for high transmission settings and insecticide resistance management. Vector control programmes are expected to be guided by local evidence to decide when, where and how to combine IRS with ITNs for different epidemiological settings [1].\n", - "\n", - "Evidence from RCTs and operational studies suggests that the impact of co-implementing LLINs and IRS may depend on a number of location-specific factors including: intervention coverage, transmission intensity, vector behaviour, choice of IRS insecticide and insecticide resistance [13,14]. The choice of IRS insecticide for a specific geographical setting whether deployed alone or together with LLINs will be influenced largely by the susceptibility of the target vector population to the insecticide, its mode of action, chemical properties and residual \n", - "activity on wall substrates. To maximise the impact of the combined intervention approach, it is important to consider the interactions that may occur between the insecticide in the LLIN and the chosen IRS insecticide. Where the mode of action of the IRS insecticides is not complementary to the insecticide on the net, the combination might be redundant or result in lower levels of vector control than what is achievable with either intervention alone. Although pyrethroids are not recommended for IRS, the redundancy of combining pyrethroid IRS or wall linings with pyrethroid LLINs has been clearly demonstrated in experimental but studies against pyrethroid-resistant malaria vectors in West Africa [15,16].\n", - "\n", - "Insecticides belonging to four classes of compounds have been approved by the WHO for IRS against malaria vectors; pyrethroids, organophosphates, carbamates and more recently, the neonicotinoid clothianidin [1,17]. While RCTs are the most robust method for generating evidence on the impact of combining vector control interventions, they are often time-consuming, expensive and unrealistic in some settings. Evidence from experimental but trials may provide some insights on what to expect when different types IRS insecticides are deployed to complement pyrethroid-only nets. In this study, we compared the impact of combining pyrethroid LLINs with IRS insecticides from three distinct chemical classes in experimental huts against wild free-flying pyrethroid-resistant malaria vectors in southern Benin.\n", - "\n", - "header: Study site and experimental huts: Experimental hut treatments\n", - "\n", - "The following treatments were assessed in 9 experimental huts:\n", - "\n", - "1. Control (untreated hut)\n", - "2. Control (untreated net)\n", - "3. DuraNet(r) (Alpha-cypermethrin LLIN, 261 mg/m2, Shobikaa Impex)\n", - "4. Bendiocarb IRS applied at 400 mg/m2 (Ficam(r) WP, Bayer)\n", - "5. DuraNet(r) + Bendiocarb IRS applied at 400 mg/m2\n", - "6. Chlorfenapyr IRS applied at 250 mg/m2 (Sylando(r) 240SC, BASF)\n", - "7. DuraNet(r) + Chlorfenapryr IRS applied at 250 mg/m2\n", - "8. Pirimiphos-methyl CS IRS applied at 1000 mg/m2 (Actellic(r) 300CS, Syngenta)\n", - "9. DuraNet(r) + Pirimiphos-methyl CS IRS applied at 1000 mg/m2\n", - "\n", - "Interior hut walls were sprayed from top to bottom with IRS insecticide solutions using a Hudson X-pert(r) compression sprayer equipped with a flat-fan nozzle. To improve spraying accuracy, spray swaths were pre-marked on hut walls and a guidance pole was attached to the end of the spray lance to maintain a fixed distance to the wall. After spraying each hut, the volume remaining in the spray tank was measured to assess the overall volume sprayed. All spray volumes were within 30% of the target. The palm match used on the ceiling was sprayed flat on the ground outside the experimental hut and allowed to dry for 2 hours prior to being fitted on the ceiling of the hut. Three replicate nets were used per LLIN treatment and these were rotated every 2 nights within the same hut. To simulate wear and tear from field use, 6 holes each measuring 16 cm2 were cut into each bed net (one per panel) used in the trial.\n", - "\n", - "header: Data analysis\n", - "\n", - "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental hut treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to differential attractiveness of the volunteer sleepers and huts.\n", - "\n", - "\n", - "Mortality in susceptibility bioassays was interpreted according to WHO criteria. All analyses were performed in Stata version 15.1.\n", - "\n", - "header: Trial procedure\n", - "\n", - "The trial began three days after IRS application and continued for 4 months, between July and October 2018 and followed WHO guidelines [19]. Nine (9) consenting human volunteers kept in experimental huts each trial night to attract mosquitoes. To account for bias due to differential attractiveness to mosquitoes, volunteers were rotated through experimental huts daily in accordance with a predetermined Latin square design. To mitigate the effect of hut position on mosquito entry, bed nets were rotated through experimental huts on a weekly basis. IRS treatments could not be rotated thus remained fixed throughout the trial. At dawn, sleepers collected all mosquitoes from under the net, the sleeping room and the veranda using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were subsequently transferred to the laboratory for morphological identification and scoring of blood-feeding and mortality. To account for the slow-action of chlorfenapyr, delayed mortality was recorded every 24 h up to 72 h after collection for all treatments. All alive _An. gambiae_ s.l. were held at 27 +- 2deg C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution.\n", - "\n", - "header: Susceptibility bioassay results: Experimental hut results\n", - "\n", - "A total of 4,698 female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trial period (Tables 3 and S1). Due to the inability to\n", - "\n", - "rotate IRS, it was not possible to distinguish treatment-induced deterrence for the IRS treatments from differential attractiveness due to hut position. The proportion of mosquitoes exiting into the veranda for the untreated hut and untreated net controls were 45% and 39% respectively. Exiting was significantly higher in all experimental hut treatments relative to both controls (p<0.01), suggesting the insecticide treatments induced an irritant response which caused mosquitoes to seek refuge in the veranda. The highest level of mosquito exiting was achieved with beniodicarb IRS alone (77%). Adding beniodicarb IRS to DuraNet(r) also induced significantly higher levels of mosquito exiting compared to DuraNet(r) alone (57% with DuraNet(r) vs. 70% with DuraNet(r) + beniodicarb IRS, p = 0.001). This effect was, however, not observed with chlorfenapyr IRS and pirimiphos-methyl CS IRS; exiting rates were similar between the combinations with these IRS insecticides and DuraNet(r) alone, (59% - 61% vs 57%, p>0.05).\n", - "\n", - "**Blood-feeding and personal protection.** Blood-feeding and personal protection results of wild, pyrethroid-resistant _An. gambiae_ s.l. in the experimental huts are presented in Table 4. Blood-feeding rates with the untreated hut and untreated net controls were 95% and 55% respectively. DuraNet(r) induced significantly lower blood-feeding rates than the control untreated net (33% with DuraNet(r) vs. 55% with untreated net, p<0.001). Meanwhile, blood-feeding was high across all IRS treatments (91-92%) thus providing very limited blood-feeding inhibition (3% - 5%) compared to the untreated hut control (Table 4). All three combinations provided significantly higher levels of blood-feeding inhibition relative to the IRS treatments\n", - "\n", - "alone (60% - 71% vs. 3% - 5%, p<0.001). Between the combinations, DuraNet(r) + bendiocarb IRS induced the lowest blood-feeding rate (28%) and offered personal protection of 78% while DuraNet(r) + chlorfenapyr IRS induced a higher blood-feeding rate (37%, p = 0.015) though providing about the same levels of personal protection (77%).\n", - "\n", - "**Mortality rates in experimental huts.** Overall mortality rates of wild, pyrethroid-resistant _An. gambiae_ s.l. in the untreated hut and untreated net controls were 2% and 4% respectively (Table 5). Mortality with DuraNet(r) was low and did not differ significantly from the untreated net control (8% vs. 4%, p = 0.169). The IRS treatments alone and the combinations induced significantly higher mortality than DuraNet(r) and the untreated controls (p < 0.001); adding any IRS treatment onto DuraNet(r) therefore always significantly improved vector mortality compared to DuraNet(r) alone. Between the IRS only treatments, the highest mortality was achieved with pirimiphos-methyl CS (85%, p < 0.001) while chlorfenapyr and bendiocarb induced fairly similar mortality rates (34% and 28%, p = 0.09). Combining DuraNet(r) with bendiocarb and pirimiphos-methyl CS IRS treatments did not improve mortality compared to the corresponding IRS alone (bendiocarb: 28% vs. 32%, p = 0.265 and pirimiphos-methyl CS: 85% vs. 81%, p = 0.129) (Table 5). With chlorfenapyr IRS, mortality was significantly higher in the combination compared to chlorfenapyr IRS alone over the 4-month trial (34% vs. 46%, p < 0.001) (Fig 3). Between the combinations, the highest mortality was achieved with DuraNet(r) + pirimiphos-methyl CS IRS (81%). Mortality was significantly higher with the DuraNet(r) + chlorfenapyr IRS combination compared to DuraNet(r) + bendiocarb IRS (46% vs. 32%, p < 0.001) (Table 5).\n", - "\n", - "Initial monthly wild mosquito mortality with pirimiphos-methyl CS IRS and chlorfenapyr IRS was steady and did not decline substantially over the course of the 4 months trial both when applied alone and in combination with DuraNet(r) (Figs 1 and 2). By contrast, wild mosquito mortality with bendiocarb IRS declined sharply from ~55% to about 28-32% by the last month of the trial both when applied alone and in combination with DuraNet(r) (Fig 3).\n", - "\n", - "**Wall cone bioassay results.** Mortality rates of the laboratory maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu colony following exposure to IRS-treated walls in monthly, 30 mins wall cone bioassays are presented in Fig 4 with more details in supporting information (S2 Table). On pirimiphos-methyl CS-treated surfaces, cone bioassay mortality was very high (> 85%) throughout all 4 months of the trial. As observed with wild free-flying mosquitoes, a progressive decline in cone bioassay mortality with increasing months elapsed from spraying was observed with bendiocarb, beginning at 63% in month 1 and decreasing to 19% by month 4. Cone bioassay mortality with chlorfenapyr IRS was consistently low throughout the trial,\n", - "ranging from 11-31%. Cone bioassay mortality on untreated control walls did not exceed 10% in any month of the trial (Fig 4).\n", - "\n", - "header: Abstract\n", - "\n", - "Which indoor residual spraying insecticide best complements standard pyrethroid long-lasting insecticidal nets for improved control of pyrethroid resistant malaria vectors?\n", - "\n", - "Thomas Syme, Augustin Fongnikin, Damien Todjinou, Renaud Goveetchan, Mark Rowland, Martin Akogbeto, Corine Nguforo\n", - "\n", - "\n", - "\n", - "Where resources are available, non-pyrethroid IRS can be deployed to complement standard pyrethroid LLINs with the aim of achieving improved vector control and managing insecticide resistance. The impact of the combination may however depend on the type of IRS insecticide deployed. Studies comparing combinations of pyrethroid LLINs with different types of non-pyrethroid IRS products will be necessary for decision making.\n", - "\n", - "header: Table 1: WHO susceptibility cylinder bioassay results with Anopheles gambiae sensu late from Cove.\n", - "footer: None\n", - "columns: ['Treatment', 'Strain', 'N exposed', 'N dead', '% Mortality', '95% CI']\n", - "\n", - "{\"0\":{\"Treatment\":\"Control\",\"Strain\":\"Kisumu\",\"N exposed\":102,\"N dead\":0,\"% Mortality\":0,\"95% CI\":\"\\u2013\"},\"1\":{\"Treatment\":null,\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":0,\"% Mortality\":0,\"95% CI\":\"\\u2013\"},\"2\":{\"Treatment\":\"Alpha-cypermethrin (0.05%)\",\"Strain\":\"Kisumu\",\"N exposed\":102,\"N dead\":102,\"% Mortality\":100,\"95% CI\":\"\\u2013\"},\"3\":{\"Treatment\":null,\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":11,\"% Mortality\":11,\"95% CI\":\"5\\u201317\"},\"4\":{\"Treatment\":\"Permethrin (0.75%)\",\"Strain\":\"Kisumu\",\"N exposed\":104,\"N dead\":104,\"% Mortality\":100,\"95% CI\":\"\\u2013\"},\"5\":{\"Treatment\":null,\"Strain\":\"Cov\\u00e8\",\"N exposed\":105,\"N dead\":21,\"% Mortality\":20,\"95% CI\":\"12\\u201328\"},\"6\":{\"Treatment\":\"Bendiocarb (0.1%)\",\"Strain\":\"Kisumu\",\"N exposed\":104,\"N dead\":104,\"% Mortality\":100,\"95% CI\":\"\\u2013\"},\"7\":{\"Treatment\":null,\"Strain\":\"Cov\\u00e8\",\"N exposed\":100,\"N dead\":96,\"% Mortality\":98,\"95% CI\":\"96\\u2013100\"},\"8\":{\"Treatment\":\"Fenitrothion (1%)\",\"Strain\":\"Kisumu\",\"N exposed\":103,\"N dead\":103,\"% Mortality\":100,\"95% CI\":\"\\u2013\"},\"9\":{\"Treatment\":null,\"Strain\":\"Cov\\u00e8\",\"N exposed\":101,\"N dead\":101,\"% Mortality\":100,\"95% CI\":\"\\u2013\"}}\n", - "\n", - "header: Table 3. Overall entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", - "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", - "columns: ['Treatment', 'Total females caught', 'Average catch per night', '% Deterrence', 'Total exiting', '% Exophily�', '95% CI']\n", - "\n", - "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total females caught\":711,\"Average catch per night\":7,\"% Deterrence\":\"\\u2013\",\"Total exiting\":322,\"% Exophily\\ufffd\":\"45a\",\"95% CI\":\"42\\u201349\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total females caught\":420,\"Average catch per night\":4,\"% Deterrence\":\"41\",\"Total exiting\":165,\"% Exophily\\ufffd\":\"39a\",\"95% CI\":\"35\\u201344\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total females caught\":619,\"Average catch per night\":6,\"% Deterrence\":\"13\",\"Total exiting\":350,\"% Exophily\\ufffd\":\"57b\",\"95% CI\":\"53\\u201361\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":508,\"Average catch per night\":5,\"% Deterrence\":\"29\",\"Total exiting\":389,\"% Exophily\\ufffd\":\"77c\",\"95% CI\":\"73\\u201380\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total females caught\":537,\"Average catch per night\":6,\"% Deterrence\":\"25\",\"Total exiting\":373,\"% Exophily\\ufffd\":\"70cd\",\"95% CI\":\"66\\u201373\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total females caught\":478,\"Average catch per night\":5,\"% Deterrence\":\"33\",\"Total exiting\":297,\"% Exophily\\ufffd\":\"62bd\",\"95% CI\":\"58\\u201367\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total females caught\":411,\"Average catch per night\":4,\"% Deterrence\":\"42\",\"Total exiting\":241,\"% Exophily\\ufffd\":\"59b\",\"95% CI\":\"54\\u201363\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total females caught\":528,\"Average catch per night\":6,\"% Deterrence\":\"26\",\"Total exiting\":356,\"% Exophily\\ufffd\":\"67d\",\"95% CI\":\"63\\u201371\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total females caught\":486,\"Average catch per night\":5,\"% Deterrence\":\"32\",\"Total exiting\":298,\"% Exophily\\ufffd\":\"61bd\",\"95% CI\":\"57\\u201366\"}}\n", - "\n", - "header: Methods\n", - "\n", - "The study was conducted at the CREC/LSHTM experimental hut station located in Cove, southern Benin (7deg14degN2deg18degE). The experimental huts are situated in a vast area of rice irrigation, which provide extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzeii_ and _An. gambiae_ sensu stricto (s.s.) occur in sympatry, with the latter present at lower densities and predominantly in the dry season [18]. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold) [18]. Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (>90%) and overexpression of the cytochrome P450, CYP6P3, associated with pyrethroid detoxification [18]. The experimental huts used were of the West African design [19], made from concrete bricks with a corrugated iron roof and a ceiling with palm-thatch mats. Interior walls were cement plastered and each hut was constructed on a concrete base containing a water-filled moat to preclude predators. Entry of mosquitoes occurred via four window slits, 1 cm wide and 30 cm long, positioned on two sides of the hut. A wooden framed veranda made of polyethylene sheeting and screening mesh projected from the rear wall of each hut to capture exiting mosquitoes.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Acknowledgments\n", - "\n", - "We thank BASF and Bayer for providing the insecticides. We also thank the technical staff of CREC (Abibath Odojo, Estelle Vigninou, Josias Fagbohoun, Edwige Kpanou etc) for their assistance. We are grateful to the rice farmers at Cove for their support in the hut study.\n", - "\n", - "header: Background: Methods\n", - "\n", - "The efficacy of combining a standard pyrethroid LLIN (DuraNet(r)) with IRS insecticides from three chemical classes (bendicocarb, chlorfenapyr and pirimiphos-methyl CS) was evaluated in an experimental hut trial against wild pyrethroid-resistant _Anopheles gambiae_ s.l. in Cove, Benin. The combinations were also compared to each intervention alone. WHO cylinder and CDC bottle bioassays were performed to assess susceptibility of the local _An. gambiae_ s.l. vector population at the Cove hut site to insecticides used in the combinations.\n", - "\n", - "header: Results\n", - "\n", - "Susceptibility bioassays revealed that the vector population at Cove, was resistant to pyrethroids (<20% mortality) but susceptible to carbamates, chlorfenapyr and organophosphates (>=98% mortality). Mortality of wild free-flying pyrethroid resistant _An. gambiae_ s.l. entering the hut with the untreated net control (4%) did not differ significantly from DuraNet(r) alone (8%, p = 0.169). Pirimiphos-methyl CS IRS induced the highest mortality both on its own (85%) and in combination with DuraNet(r) (81%). Mortality with the DuraNet(r) + chlorfenapyr IRS combination was significantly higher than each intervention alone (46% vs. 33% and 8%, p<0.05) demonstrating an additive effect. The DuraNet(r) + bendicocarb IRS combination induced significantly lower mortality compared to the other combinations (32%, p<0.05). Blood-feeding inhibition was very low with the IRS treatments alone (3-5%) but \n", - "increased significantly when they were combined with DuraNet(r) (61% - 71%, p<0.05). Blood-feeding rates in the combinations were similar to the net alone. Adding bendicorarb IRS to DuraNet(r) induced significantly lower levels of mosquito feeding compared to adding chlorfenapyr IRS (28% vs. 37%, p = 0.015).\n", - "\n", - "header: Results\n", - "\n", - "Mortality rates of wild _An. gambiae_ s.l. from Cove in WHO susceptibility and CDC bottle bioassays are presented in Tables 1 and 2 respectively. Low proportions of adult F1 progeny of field-collected _An. gambiae_ s.l. were killed following exposure to alpha-cypermethrin (11%) and permethrin (20%); demonstrating pyrethroid resistance in the vector population. In contrast, the vast majority if not all mosquitoes from Cove were killed following exposure to bendiocarb (98%), fenitrothion (100%) and chlorfenapyr (100%); demonstrating susceptibility to carbamates, organophosphates and chlorfenapyr. With the insecticide susceptible _An. gambiae_ s.s. Kisumu colony, mortality was 100% with all insecticides.\n", - "\n", - "header: Conclusions\n", - "\n", - "Adding non-pyrethroid IRS to standard pyrethroid-only LLINs against a pyrethroid-resistant vector population which is susceptible to the IRS insecticide, can provide higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone. Adding pirimphos-methyl CS IRS may provide substantial improvements in vector control while adding chlorfenapyr IRS can demonstrate an additive effect relative to both interventions alone. Adding bendicorarb IRS may show limited enhancements in vector control owing to its short residual effect.\n", - "\n", - "header: Conclusions\n", - "\n", - "Adding non-pyrethroid IRS to standard pyrethroid-only nets against a pyrethroid-resistant vector population which was susceptible to the IRS insecticide, generally provided higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone; the IRS intervention was responsible for improved mosquito mortality while the pyrethroid net provided blood-feeding inhibition. The combination with pirimiphos-methyl CS IRS was the most efficacious. Adding chlorfenapyr IRS to the pyrethroid LLIN demonstrated an additive mortality effect relative to both interventions alone. The combination with benidocarb IRS provided the \n", - "lowest levels of mortality owing to its short residual effect but also induced lower levels of mosquito feeding compared to combinations with the other IRS insecticides.\n", - "\n", - "header: Susceptibility bioassays\n", - "\n", - "WHO susceptibility cylinder bioassays [20] and CDC bottle bioassays [21] were performed in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove experimental hut site to the constituent insecticides in the hut treatments. Adult F1 progeny of field-collected _An. gambiae_ s.l. were exposed to filter papers treated with discriminating doses of alpha-cypermethrin (0.05%), permethrin (0.75%), bendiocarb (0.1%) and fenitrothion (1.0%) in WHO cylinders and CDC bottles impregnated with 100 mg of chlorfenapyr. Comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu colony. For each insecticide and strain, 100 adult female mosquitoes aged 2-3 days were introduced to four insecticide-treated cylinders/bottles in batches of 25. In the control arms, mosquitoes were exposed to silicone oil-treated filter papers and acetone-treated bottles. After 1 h exposure, mosquitoes were transferred to holding tubes and observation cups and provided access to 10% glucose solution (w/v). Mortality was recorded after 24 h for mosquitoes exposed to permethrin, alpha-cypermethrin, bendiocarb and fenitrothion in WHO cylinder bioassays and every 24 h up to 72 h for mosquitoes exposed to chlorfenapyr in CDC bottles. The insecticide treated filter papers used for the WHO cylinder bioassays were obtained from Universiti Sains Malaysia.\n", - "\n", - "header: Table 4. Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", - "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", - "columns: ['Treatment', 'Total blood-fed', '% Blood-fed*', '95% CI', '% Blood-feeding inhibition', '% Personal protection']\n", - "\n", - "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total blood-fed\":675,\"% Blood-fed*\":\"95a\",\"95% CI\":\"93\\u201397\",\"% Blood-feeding inhibition\":\"\\u2013\",\"% Personal protection\":\"\\u2013\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total blood-fed\":231,\"% Blood-fed*\":\"55b\",\"95% CI\":\"50\\u201360\",\"% Blood-feeding inhibition\":\"42\",\"% Personal protection\":\"66\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total blood-fed\":202,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201336\",\"% Blood-feeding inhibition\":\"66\",\"% Personal protection\":\"70\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total blood-fed\":460,\"% Blood-fed*\":\"91e\",\"95% CI\":\"88\\u201393\",\"% Blood-feeding inhibition\":\"5\",\"% Personal protection\":\"32\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total blood-fed\":150,\"% Blood-fed*\":\"28c\",\"95% CI\":\"24\\u201332\",\"% Blood-feeding inhibition\":\"71\",\"% Personal protection\":\"78\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total blood-fed\":440,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201394\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"35\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total blood-fed\":153,\"% Blood-fed*\":\"37d\",\"95% CI\":\"33\\u201342\",\"% Blood-feeding inhibition\":\"61\",\"% Personal protection\":\"77\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total blood-fed\":488,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201395\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"28\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total blood-fed\":160,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201337\",\"% Blood-feeding inhibition\":\"65\",\"% Personal protection\":\"76\"}}\n", - "\n", - "header: Ethical considerations\n", - "\n", - "Ethical approval was obtained from the ethics review committees of the London School of Hygiene & Tropical Medicine (LSHTM) (Reference No. 15265) and the local Ministry of Health in Benin (Reference No. N'39/CEIC/CREC). All volunteers provided informed written consent and were offered a course of chemoprophylaxis (doxycycline) prior to their participation in the study and up to four weeks following its completion. A nurse was available throughout the study to assess any cases of fever. In the event a volunteer tested positive for malaria, they were immediately withdrawn from the trial and administered effective treatment.\n", - "\n", - "header: Outcome measures\n", - "\n", - "The efficacy of each experimental hut treatment was expressed in terms of the following outcome measures:\n", - "\n", - "* Exophily-exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda\n", - "* Deterrence-defined as the percentage reduction in numbers of mosquitoes collected in a treated hut relative to the untreated control\n", - "* Blood-feeding-proportion of blood-fed mosquitoes at the time of collection\n", - "\n", - "Where _B__\\({}_{\\mu}\\)_ is the proportion of blood-fed mosquitoes in the untreated control and _B__\\({}_{\\beta}\\)_ is the proportion of blood-fed mosquitoes in the treated hut.\n", - "\n", - "\n", - "- B_{i})}{B_{u}}\\] Where \\(B_{u}\\) is the number of blood-fed mosquitoes in the untreated control and \\(B_{i}\\) is the number of blood-fed mosquitoes in the huts with insecticide treatments.\n", - "* Mortality-proportion of dead mosquitoes after a 72 h holding period Mosquito deterrence, blood-feeding inhibition and personal protection were calculated relative to the untreated net control hut for treatments which involved the LLIN and relative to the untreated hut control for IRS-only treatments.\n", - "\n", - "header: Table 2: Susceptibility of field-collected Anopheles gambiae sensu late from Cove to chlorfenapyr in CDC bottle bioassays.\n", - "footer: None\n", - "columns: ['Treatment', 'Strain', 'N exposed', 'N dead', '% Mortality�', '95% CI']\n", - "\n", - "{\"0\":{\"Treatment\":\"Control\",\"Strain\":\"Kisumu\",\"N exposed\":101,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"1\":{\"Treatment\":\"Control\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":100,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"2\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Kisumu\",\"N exposed\":103,\"N dead\":103,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"},\"3\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":102,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"}}\n", - "\n", - "header: Study site and experimental huts: Experimental hut treatments\n", - "\n", - "The following treatments were assessed in 9 experimental huts:\n", - "\n", - "1. Control (untreated hut)\n", - "2. Control (untreated net)\n", - "3. DuraNet(r) (Alpha-cypermethrin LLIN, 261 mg/m2, Shobikaa Impex)\n", - "4. Bendiocarb IRS applied at 400 mg/m2 (Ficam(r) WP, Bayer)\n", - "5. DuraNet(r) + Bendiocarb IRS applied at 400 mg/m2\n", - "6. Chlorfenapyr IRS applied at 250 mg/m2 (Sylando(r) 240SC, BASF)\n", - "7. DuraNet(r) + Chlorfenapryr IRS applied at 250 mg/m2\n", - "8. Pirimiphos-methyl CS IRS applied at 1000 mg/m2 (Actellic(r) 300CS, Syngenta)\n", - "9. DuraNet(r) + Pirimiphos-methyl CS IRS applied at 1000 mg/m2\n", - "\n", - "Interior hut walls were sprayed from top to bottom with IRS insecticide solutions using a Hudson X-pert(r) compression sprayer equipped with a flat-fan nozzle. To improve spraying accuracy, spray swaths were pre-marked on hut walls and a guidance pole was attached to the end of the spray lance to maintain a fixed distance to the wall. After spraying each hut, the volume remaining in the spray tank was measured to assess the overall volume sprayed. All spray volumes were within 30% of the target. The palm match used on the ceiling was sprayed flat on the ground outside the experimental hut and allowed to dry for 2 hours prior to being fitted on the ceiling of the hut. Three replicate nets were used per LLIN treatment and these were rotated every 2 nights within the same hut. To simulate wear and tear from field use, 6 holes each measuring 16 cm2 were cut into each bed net (one per panel) used in the trial.\n", - "\n", - "header: Susceptibility bioassay results: Experimental hut results\n", - "\n", - "A total of 4,698 female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trial period (Tables 3 and S1). Due to the inability to\n", - "\n", - "rotate IRS, it was not possible to distinguish treatment-induced deterrence for the IRS treatments from differential attractiveness due to hut position. The proportion of mosquitoes exiting into the veranda for the untreated hut and untreated net controls were 45% and 39% respectively. Exiting was significantly higher in all experimental hut treatments relative to both controls (p<0.01), suggesting the insecticide treatments induced an irritant response which caused mosquitoes to seek refuge in the veranda. The highest level of mosquito exiting was achieved with beniodicarb IRS alone (77%). Adding beniodicarb IRS to DuraNet(r) also induced significantly higher levels of mosquito exiting compared to DuraNet(r) alone (57% with DuraNet(r) vs. 70% with DuraNet(r) + beniodicarb IRS, p = 0.001). This effect was, however, not observed with chlorfenapyr IRS and pirimiphos-methyl CS IRS; exiting rates were similar between the combinations with these IRS insecticides and DuraNet(r) alone, (59% - 61% vs 57%, p>0.05).\n", - "\n", - "**Blood-feeding and personal protection.** Blood-feeding and personal protection results of wild, pyrethroid-resistant _An. gambiae_ s.l. in the experimental huts are presented in Table 4. Blood-feeding rates with the untreated hut and untreated net controls were 95% and 55% respectively. DuraNet(r) induced significantly lower blood-feeding rates than the control untreated net (33% with DuraNet(r) vs. 55% with untreated net, p<0.001). Meanwhile, blood-feeding was high across all IRS treatments (91-92%) thus providing very limited blood-feeding inhibition (3% - 5%) compared to the untreated hut control (Table 4). All three combinations provided significantly higher levels of blood-feeding inhibition relative to the IRS treatments\n", - "\n", - "alone (60% - 71% vs. 3% - 5%, p<0.001). Between the combinations, DuraNet(r) + bendiocarb IRS induced the lowest blood-feeding rate (28%) and offered personal protection of 78% while DuraNet(r) + chlorfenapyr IRS induced a higher blood-feeding rate (37%, p = 0.015) though providing about the same levels of personal protection (77%).\n", - "\n", - "**Mortality rates in experimental huts.** Overall mortality rates of wild, pyrethroid-resistant _An. gambiae_ s.l. in the untreated hut and untreated net controls were 2% and 4% respectively (Table 5). Mortality with DuraNet(r) was low and did not differ significantly from the untreated net control (8% vs. 4%, p = 0.169). The IRS treatments alone and the combinations induced significantly higher mortality than DuraNet(r) and the untreated controls (p < 0.001); adding any IRS treatment onto DuraNet(r) therefore always significantly improved vector mortality compared to DuraNet(r) alone. Between the IRS only treatments, the highest mortality was achieved with pirimiphos-methyl CS (85%, p < 0.001) while chlorfenapyr and bendiocarb induced fairly similar mortality rates (34% and 28%, p = 0.09). Combining DuraNet(r) with bendiocarb and pirimiphos-methyl CS IRS treatments did not improve mortality compared to the corresponding IRS alone (bendiocarb: 28% vs. 32%, p = 0.265 and pirimiphos-methyl CS: 85% vs. 81%, p = 0.129) (Table 5). With chlorfenapyr IRS, mortality was significantly higher in the combination compared to chlorfenapyr IRS alone over the 4-month trial (34% vs. 46%, p < 0.001) (Fig 3). Between the combinations, the highest mortality was achieved with DuraNet(r) + pirimiphos-methyl CS IRS (81%). Mortality was significantly higher with the DuraNet(r) + chlorfenapyr IRS combination compared to DuraNet(r) + bendiocarb IRS (46% vs. 32%, p < 0.001) (Table 5).\n", - "\n", - "Initial monthly wild mosquito mortality with pirimiphos-methyl CS IRS and chlorfenapyr IRS was steady and did not decline substantially over the course of the 4 months trial both when applied alone and in combination with DuraNet(r) (Figs 1 and 2). By contrast, wild mosquito mortality with bendiocarb IRS declined sharply from ~55% to about 28-32% by the last month of the trial both when applied alone and in combination with DuraNet(r) (Fig 3).\n", - "\n", - "**Wall cone bioassay results.** Mortality rates of the laboratory maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu colony following exposure to IRS-treated walls in monthly, 30 mins wall cone bioassays are presented in Fig 4 with more details in supporting information (S2 Table). On pirimiphos-methyl CS-treated surfaces, cone bioassay mortality was very high (> 85%) throughout all 4 months of the trial. As observed with wild free-flying mosquitoes, a progressive decline in cone bioassay mortality with increasing months elapsed from spraying was observed with bendiocarb, beginning at 63% in month 1 and decreasing to 19% by month 4. Cone bioassay mortality with chlorfenapyr IRS was consistently low throughout the trial,\n", - "ranging from 11-31%. Cone bioassay mortality on untreated control walls did not exceed 10% in any month of the trial (Fig 4).\n", - "\n", - "header: Background\n", - "\n", - "Insecticide-treated nets (ITNs) and indoor residual spraying (IRS) are core interventions for preventing and controlling malaria [1]. Both methods have independently proven to be highly effective in reducing the burden of disease in diverse epidemiological settings. The substantial reductions in malaria morbidity and mortality observed in endemic countries over the last two decades, has been attributed to a significant increase in the roll out of ITNs and IRS during this period [2]. Where resources are available, both interventions have been deployed together in the same geographical location, with the primary aim of reducing the disease burden to a greater extent than could be achieved with either method alone [3,4].\n", - "\n", - "The benefits of combining these interventions is, however, contentious. Some community-randomised controlled trials (RCTs) have compared epidemiological outcomes in communities receiving pyrethroid long-lasting insecticidal nets (LLINs) plus IRS versus LLINs alone, yielding conflicting results. Whilst trials in Tanzania [5] and Sudan [6] associated combined use of LLINs and IRS with significant reductions in malaria infection prevalence, similar studies in Benin [7], Eritrea [8], Ethiopia [9] and The Gambla [10] reported no such effect. Based on a Cochrane review demonstrating the inconsistencies in epidemiological evidence [4], the World Health Organisation (WHO) has recently issued a provisional recommendation against combining LLINs and IRS as a means of reducing malaria-associated morbidity and mortality [1]. National Malaria Control Programmes are encouraged to prioritise delivering either ITNs or IRS at high coverage and to a high standard, rather than introducing the second intervention as a means to compensate for deficiencies in the implementation of the first. However, this should not be interpreted to mean that the combined IRS and ITN approach is redundant in all settings. Considering the recent stall in progress against malaria [11] and increasing prevalence of pyrethroid resistance in malaria vector populations across Africa [12], combining interventions may be vital for high transmission settings and insecticide resistance management. Vector control programmes are expected to be guided by local evidence to decide when, where and how to combine IRS with ITNs for different epidemiological settings [1].\n", - "\n", - "Evidence from RCTs and operational studies suggests that the impact of co-implementing LLINs and IRS may depend on a number of location-specific factors including: intervention coverage, transmission intensity, vector behaviour, choice of IRS insecticide and insecticide resistance [13,14]. The choice of IRS insecticide for a specific geographical setting whether deployed alone or together with LLINs will be influenced largely by the susceptibility of the target vector population to the insecticide, its mode of action, chemical properties and residual \n", - "activity on wall substrates. To maximise the impact of the combined intervention approach, it is important to consider the interactions that may occur between the insecticide in the LLIN and the chosen IRS insecticide. Where the mode of action of the IRS insecticides is not complementary to the insecticide on the net, the combination might be redundant or result in lower levels of vector control than what is achievable with either intervention alone. Although pyrethroids are not recommended for IRS, the redundancy of combining pyrethroid IRS or wall linings with pyrethroid LLINs has been clearly demonstrated in experimental but studies against pyrethroid-resistant malaria vectors in West Africa [15,16].\n", - "\n", - "Insecticides belonging to four classes of compounds have been approved by the WHO for IRS against malaria vectors; pyrethroids, organophosphates, carbamates and more recently, the neonicotinoid clothianidin [1,17]. While RCTs are the most robust method for generating evidence on the impact of combining vector control interventions, they are often time-consuming, expensive and unrealistic in some settings. Evidence from experimental but trials may provide some insights on what to expect when different types IRS insecticides are deployed to complement pyrethroid-only nets. In this study, we compared the impact of combining pyrethroid LLINs with IRS insecticides from three distinct chemical classes in experimental huts against wild free-flying pyrethroid-resistant malaria vectors in southern Benin.\n", - "\n", - "header: Data analysis\n", - "\n", - "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental hut treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to differential attractiveness of the volunteer sleepers and huts.\n", - "\n", - "\n", - "Mortality in susceptibility bioassays was interpreted according to WHO criteria. All analyses were performed in Stata version 15.1.\n", - "\n", - "header: Trial procedure\n", - "\n", - "The trial began three days after IRS application and continued for 4 months, between July and October 2018 and followed WHO guidelines [19]. Nine (9) consenting human volunteers kept in experimental huts each trial night to attract mosquitoes. To account for bias due to differential attractiveness to mosquitoes, volunteers were rotated through experimental huts daily in accordance with a predetermined Latin square design. To mitigate the effect of hut position on mosquito entry, bed nets were rotated through experimental huts on a weekly basis. IRS treatments could not be rotated thus remained fixed throughout the trial. At dawn, sleepers collected all mosquitoes from under the net, the sleeping room and the veranda using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were subsequently transferred to the laboratory for morphological identification and scoring of blood-feeding and mortality. To account for the slow-action of chlorfenapyr, delayed mortality was recorded every 24 h up to 72 h after collection for all treatments. All alive _An. gambiae_ s.l. were held at 27 +- 2deg C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution.\n", - "\n", - "header: Table 3. Overall entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", - "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", - "columns: ['Treatment', 'Total females caught', 'Average catch per night', '% Deterrence', 'Total exiting', '% Exophily�', '95% CI']\n", - "\n", - "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total females caught\":711,\"Average catch per night\":7,\"% Deterrence\":\"\\u2013\",\"Total exiting\":322,\"% Exophily\\ufffd\":\"45a\",\"95% CI\":\"42\\u201349\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total females caught\":420,\"Average catch per night\":4,\"% Deterrence\":\"41\",\"Total exiting\":165,\"% Exophily\\ufffd\":\"39a\",\"95% CI\":\"35\\u201344\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total females caught\":619,\"Average catch per night\":6,\"% Deterrence\":\"13\",\"Total exiting\":350,\"% Exophily\\ufffd\":\"57b\",\"95% CI\":\"53\\u201361\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":508,\"Average catch per night\":5,\"% Deterrence\":\"29\",\"Total exiting\":389,\"% Exophily\\ufffd\":\"77c\",\"95% CI\":\"73\\u201380\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total females caught\":537,\"Average catch per night\":6,\"% Deterrence\":\"25\",\"Total exiting\":373,\"% Exophily\\ufffd\":\"70cd\",\"95% CI\":\"66\\u201373\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total females caught\":478,\"Average catch per night\":5,\"% Deterrence\":\"33\",\"Total exiting\":297,\"% Exophily\\ufffd\":\"62bd\",\"95% CI\":\"58\\u201367\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total females caught\":411,\"Average catch per night\":4,\"% Deterrence\":\"42\",\"Total exiting\":241,\"% Exophily\\ufffd\":\"59b\",\"95% CI\":\"54\\u201363\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total females caught\":528,\"Average catch per night\":6,\"% Deterrence\":\"26\",\"Total exiting\":356,\"% Exophily\\ufffd\":\"67d\",\"95% CI\":\"63\\u201371\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total females caught\":486,\"Average catch per night\":5,\"% Deterrence\":\"32\",\"Total exiting\":298,\"% Exophily\\ufffd\":\"61bd\",\"95% CI\":\"57\\u201366\"}}\n", - "\n", - "header: Residual activity of IRS treatments\n", - "\n", - "Cone bioassays were performed at monthly intervals after spraying to assess the residual activity of IRS treatments on hut walls following WHO guidelines [19]. Laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu mosquitoes were used for this purpose. In each IRS-treated hut, 50, 3-5-day old adult female mosquitoes were transferred to five cones attached to the walls and ceiling in batches of 10. As a control, mosquitoes were introduced into cones attached to an unsprayed wall. Mosquitoes were exposed to the surfaces for 30 mins before being transferred to netted cups. Mosquitoes were held at 27 +- 2' C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution. Knockdown was recorded 1 h post-exposure and delayed mortality every 24 h up to 72 h thereafter.\n", - "\n", - "header: Mosquito entry and exiting.: Discussion\n", - "\n", - "The ultimate purpose of combining IRS with LLINs is to achieve greater levels of vector control through the differential effects of the interventions and modes of action of the insecticides involved than what is achievable with a single intervention on its own. Transmission dynamics models have suggested that the levels of vector mosquito mortality and blood-feeding inhibition observed in an experimental hut setting could be predictive of the capacity of an indoor vector control intervention or a combination of these to control vector populations, reduce vector biting and improve public health impact when deployed on a large scale [22,23]. In this study, we demonstrate that where vectors are resistant to pyrethroids but susceptible to a given non-pyrethroid IRS insecticide, it should be possible to achieve substantially improved vector control by adding the non-pyrethroid IRS to a standard pyrethroid-only LLIN to boost\n", - "\n", - "Fig 1: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pirimphos-methyl CS IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", - "\n", - "Fig 2: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with chlorfenapyr IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", - "\n", - "\n", - "mortality rates through the IRS intervention, while benefiting from the blood-feeding inhibition provided by the LLIN.\n", - "\n", - "The level of improved mortality achieved in the pyrethroid-only LLIN plus non-pyrethroid IRS combinations relative to the pyrethroid LLIN alone was clearly dependent on the type of non-pyrethroid IRS insecticide used. The combination with pirimiphos-methyl CS IRS induced the highest mortality rate (81%) and this can be attributed to the high and prolonged activity of the pirimiphos-methyl CS IRS formulation on cement walls as demonstrated in this study and previous studies in Benin [24]. This substantiates findings from community trials and operational studies demonstrating significant reductions in transmission of malaria by pyrethroid-resistant vector populations when a single round of pirimiphos-methyl CS IRS was deployed against a background of moderate to high coverage with standard pyrethroid nets [25-27]. By contrast the levels of mortality achieved in the combination with bendiocarb IRS was much lower (32%); attributable to the fast decline in efficacy with the insecticide as observed monthly in the experimental huts and in cone bioassays. The poor residual effect of\n", - "\n", - "Fig 4: **Mortality (72 h) of laboratory maintained, insecticide-susceptible _Anopheles gambiae_ sensu stricto Kisumu colony exposed to IRS-treated hut walls in monthly, 30 mins wall cone bioassays in experimental huts in Cove, southern Benin. Error bars represent 95% CI. Approximately fifty (50) 2–3 days old mosquitoes were exposed for 30 mins to each IRS treated hut in batches of 10 per cone and mortality recorded after 72 h.**\n", - "\n", - "Fig 3: **Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato entering experimental huts with bendiocarb IRS applied alone and in combination with DuraNet® in Cove, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.**\n", - "bendiocarb for IRS is well documented [28, 29, 30]. The failure of a combination of bendiocarb treated walls and pyrethroid nets to provide improved control of clinical malaria compared to either intervention alone in a previous RCT in Benin [7] was also largely attributed to the short-lived efficacy of bendiocarb on the treated walls [13, 14]. Multiple IRS campaign rounds may be necessary to achieve sustained levels of improved vector control when bendiocarb IRS is deployed to complement standard pyrethroid LLINs. Given the significant costs associated with running IRS campaigns, these findings raise questions over the suitability of currently available formulations of bendiocarb for IRS and the cost-effectiveness of its combination with pyrethroid nets. Considering the high initial mortality rates usually achieved with the insecticide, reformulation chemistry may help address the short residual efficacy of bendiocarb and improve the utility of this insecticide for vector control.\n", - "\n", - "While mortality in the combinations with pirimiphos-methyl CS IRS and bendiocarb IRS were similar to each IRS alone, the combination with chlorfenapyr IRS induced significantly higher levels of mortality compared to chlorfenapyr IRS alone. This demonstrates an additive effect of the chlorfenapyr IRS plus pyrethroid LLINs combination which was not observed with the other IRS insecticides tested. This trend is consistent with previous experimental hut studies in Benin [31, 32] though the levels of mortality achieved with the combination were substantially higher (73%-83% vs. 46%). The difference in mortality could be due to changes in the composition of the vector population and/or increasing pyrethroid resistance levels over time. Chlorfenapyr is a new repurposed pyrrole insecticide with a unique mode of action that has shown potential for IRS but often inducing moderate mortality rates when applied alone in experimental huts against pyrethroid-resistant malaria vectors [29, 33]. It acts on the oxidative/metabolic pathway of insects hence its action can be enhanced by physical activity in the insect [34]. The additive mortality observed in the chlorfenapyr IRS plus pyrethroid net combination may therefore be attributed to the irritant effect of the pyrethroid in the LLIN on mosquitoes as they alight on the chlorfenapyr-treated wall after failed attempts to feed on the sleeper under the net. In addition, owing to the non-neurotoxic and non-irritant effect of chlorfenapyr [35], mosquitoes may have alighted on chlorfenapyr-treated walls for longer, leading to increased insecticide pick-up, potentially contributing to the additional mortality observed with this combination. The inability of the WHO 30-min cone bioassays to predict wild mosquito mortality with chlorfenapyr IRS in experimental huts [29, 34] is further demonstrated in this study; while cone bioassay mortality of the susceptible Kisumu strain was very low, wild mosquito mortality was higher and consistent throughout the trial confirming previous findings [29]. Considering the prolonged effect of chlorfenapyr IRS on wild mosquitoes [29], substantial and sustained improvements in the control of pyrethroid-resistant vector populations can be expected if the IRS insecticide is deployed to complement pyrethroid LLINs.\n", - "\n", - "IRS is highly effective for malaria vector control when deployed on its own but provides limited personal protection from mosquito biting and this is evident from the high blood-feeding rates observed with the IRS treatments alone. In the absence of a bed net, mosquitoes will usually feed on the human occupants in an IRS treated home before resting on the wall where they pick up the insecticide, consequently, direct blood-feeding inhibition is not expected when the intervention is applied independently. By contrast, pyrethroid LLINs reduce mosquito biting and provide substantial levels of personal protection for the user; an effect which is attributable to the physical barrier of the net and the excito-repellent effect of the pyrethroid insecticide. The findings from this study demonstrate that this effect can persist even against a vector population that has developed intense resistance to pyrethroids as observed in Cove [18]. By combining the IRS treatments with a pyrethroid LLIN, it was possible to achieve substantially improved levels of blood-feeding inhibition and personal protection compared to \n", - "the IRS alone. The reduced exposure to infective bites constitutes a crucial advantage of the combination strategy over IRS alone. The blood-feeding rate in the combination appeared to depend on the type of IRS insecticide used albeit to a lesser extent than the levels of mortality achieved; lower blood-feeding rates and thus higher levels of blood-feeding inhibition were achieved in the combination with benidocarb IRS compared to the combination with chlorfenapyr IRS. This can be due to differences in the mode of action of both IRS insecticides; in contrast to chlorfenapyr, benidocarb acts on the insect's nervous system eliciting an irritant rapid knockdown effect on mosquitoes [35] and this together with the excito-repellent effect of the pyrethroid in the standard pyrethroid LLIN could have contributed to the high levels of early exiting and reduced blood-feeding rates observed when both interventions were combined in a hut.\n", - "\n", - "Overall, the results demonstrate the superiority of the organophosphate, pirimiphos-methyl CS for IRS on its own and in combination with pyrethroid LLINs over benidocarb and the pyrrole, chlorfenapyr. However, this finding may not be generalisable to areas where vectors are resistant to organophosphates. Indeed, previous experimental hut studies in Cote d'Ivoire failed to demonstrate improved vector control with the combination compared to the net alone when standard pyrethroid LLINs were combined with pirimiphos-methyl CS-treated wall linings against a vector population that was resistant to pyrethroids and organophosphates [36]. Resistance to organophosphates and carbamates is unfortunately increasing in malaria vector populations especially in West Africa [37, 38, 39, 40]. To mitigate its impact, vector control programmes are encouraged to rotate between IRS insecticides with different modes of action [41]. Considering that most IRS campaigns will usually be deployed against a background of high LLIN coverage, effective IRS rotation plans should prioritise IRS insecticides which in addition to providing improved and prolonged vector control, can efficiently complement LLINs. Based on the findings of this study, chlorfenapyr IRS shows some potential to be a useful addition to such IRS rotation plans in pyrethroid-resistant areas with high pyrethroid LLIN coverage. It will be interesting to investigate the impact of combining pyrethroid LLINs with other newly approved IRS formulations containing clothianidin [17].\n", - "\n", - "The low mortality rates achieved with the standard pyrethroid net in this study (8%), further demonstrates the threat of pyrethroid resistance on the efficacy of standard pyrethroids. Pyrethroid resistance is widespread in malaria vectors across Africa and increasing in intensity the more they are used [12]. A new generation of LLINs treated with a pyrethroid and non-pyrethroid insecticide are now in advanced development. Studies have demonstrated the potential of some of these nets to provide improved control of clinical malaria transmitted by pyrethroid-resistant malaria vectors compared to standard pyrethroid nets [42, 43, 44]. As next generation nets come into the market, and are rolled out in endemic countries, it will be essential to explore any possible interactions with the different types of IRS insecticides that could be deployed together with them in a combined intervention approach.\n", - "\n", - "header: Abstract\n", - "\n", - "Which indoor residual spraying insecticide best complements standard pyrethroid long-lasting insecticidal nets for improved control of pyrethroid resistant malaria vectors?\n", - "\n", - "Thomas Syme, Augustin Fongnikin, Damien Todjinou, Renaud Goveetchan, Mark Rowland, Martin Akogbeto, Corine Nguforo\n", - "\n", - "\n", - "\n", - "Where resources are available, non-pyrethroid IRS can be deployed to complement standard pyrethroid LLINs with the aim of achieving improved vector control and managing insecticide resistance. The impact of the combination may however depend on the type of IRS insecticide deployed. Studies comparing combinations of pyrethroid LLINs with different types of non-pyrethroid IRS products will be necessary for decision making.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cove\",\"Start_month\":7,\"Start_year\":2018,\"End_month\":10,\"End_year\":2018}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"Alpha-cypermethrin\",\"Concentration_initial\":\"261 mg\\/m2\",\"Net_holed\":6.0}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Acknowledgments\n", - "\n", - "We thank BASF and Bayer for providing the insecticides. We also thank the technical staff of CREC (Abibath Odojo, Estelle Vigninou, Josias Fagbohoun, Edwige Kpanou etc) for their assistance. We are grateful to the rice farmers at Cove for their support in the hut study.\n", - "\n", - "header: Results\n", - "\n", - "Susceptibility bioassays revealed that the vector population at Cove, was resistant to pyrethroids (<20% mortality) but susceptible to carbamates, chlorfenapyr and organophosphates (>=98% mortality). Mortality of wild free-flying pyrethroid resistant _An. gambiae_ s.l. entering the hut with the untreated net control (4%) did not differ significantly from DuraNet(r) alone (8%, p = 0.169). Pirimiphos-methyl CS IRS induced the highest mortality both on its own (85%) and in combination with DuraNet(r) (81%). Mortality with the DuraNet(r) + chlorfenapyr IRS combination was significantly higher than each intervention alone (46% vs. 33% and 8%, p<0.05) demonstrating an additive effect. The DuraNet(r) + bendicocarb IRS combination induced significantly lower mortality compared to the other combinations (32%, p<0.05). Blood-feeding inhibition was very low with the IRS treatments alone (3-5%) but \n", - "increased significantly when they were combined with DuraNet(r) (61% - 71%, p<0.05). Blood-feeding rates in the combinations were similar to the net alone. Adding bendicorarb IRS to DuraNet(r) induced significantly lower levels of mosquito feeding compared to adding chlorfenapyr IRS (28% vs. 37%, p = 0.015).\n", - "\n", - "header: Conclusions\n", - "\n", - "Adding non-pyrethroid IRS to standard pyrethroid-only LLINs against a pyrethroid-resistant vector population which is susceptible to the IRS insecticide, can provide higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone. Adding pirimphos-methyl CS IRS may provide substantial improvements in vector control while adding chlorfenapyr IRS can demonstrate an additive effect relative to both interventions alone. Adding bendicorarb IRS may show limited enhancements in vector control owing to its short residual effect.\n", - "\n", - "header: Background: Methods\n", - "\n", - "The efficacy of combining a standard pyrethroid LLIN (DuraNet(r)) with IRS insecticides from three chemical classes (bendicocarb, chlorfenapyr and pirimiphos-methyl CS) was evaluated in an experimental hut trial against wild pyrethroid-resistant _Anopheles gambiae_ s.l. in Cove, Benin. The combinations were also compared to each intervention alone. WHO cylinder and CDC bottle bioassays were performed to assess susceptibility of the local _An. gambiae_ s.l. vector population at the Cove hut site to insecticides used in the combinations.\n", - "\n", - "header: Conclusions\n", - "\n", - "Adding non-pyrethroid IRS to standard pyrethroid-only nets against a pyrethroid-resistant vector population which was susceptible to the IRS insecticide, generally provided higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone; the IRS intervention was responsible for improved mosquito mortality while the pyrethroid net provided blood-feeding inhibition. The combination with pirimiphos-methyl CS IRS was the most efficacious. Adding chlorfenapyr IRS to the pyrethroid LLIN demonstrated an additive mortality effect relative to both interventions alone. The combination with benidocarb IRS provided the \n", - "lowest levels of mortality owing to its short residual effect but also induced lower levels of mosquito feeding compared to combinations with the other IRS insecticides.\n", - "\n", - "header: Results\n", - "\n", - "Mortality rates of wild _An. gambiae_ s.l. from Cove in WHO susceptibility and CDC bottle bioassays are presented in Tables 1 and 2 respectively. Low proportions of adult F1 progeny of field-collected _An. gambiae_ s.l. were killed following exposure to alpha-cypermethrin (11%) and permethrin (20%); demonstrating pyrethroid resistance in the vector population. In contrast, the vast majority if not all mosquitoes from Cove were killed following exposure to bendiocarb (98%), fenitrothion (100%) and chlorfenapyr (100%); demonstrating susceptibility to carbamates, organophosphates and chlorfenapyr. With the insecticide susceptible _An. gambiae_ s.s. Kisumu colony, mortality was 100% with all insecticides.\n", - "\n", - "header: Ethical considerations\n", - "\n", - "Ethical approval was obtained from the ethics review committees of the London School of Hygiene & Tropical Medicine (LSHTM) (Reference No. 15265) and the local Ministry of Health in Benin (Reference No. N'39/CEIC/CREC). All volunteers provided informed written consent and were offered a course of chemoprophylaxis (doxycycline) prior to their participation in the study and up to four weeks following its completion. A nurse was available throughout the study to assess any cases of fever. In the event a volunteer tested positive for malaria, they were immediately withdrawn from the trial and administered effective treatment.\n", - "\n", - "header: Table 4. Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", - "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", - "columns: ['Treatment', 'Total blood-fed', '% Blood-fed*', '95% CI', '% Blood-feeding inhibition', '% Personal protection']\n", - "\n", - "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total blood-fed\":675,\"% Blood-fed*\":\"95a\",\"95% CI\":\"93\\u201397\",\"% Blood-feeding inhibition\":\"\\u2013\",\"% Personal protection\":\"\\u2013\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total blood-fed\":231,\"% Blood-fed*\":\"55b\",\"95% CI\":\"50\\u201360\",\"% Blood-feeding inhibition\":\"42\",\"% Personal protection\":\"66\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total blood-fed\":202,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201336\",\"% Blood-feeding inhibition\":\"66\",\"% Personal protection\":\"70\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total blood-fed\":460,\"% Blood-fed*\":\"91e\",\"95% CI\":\"88\\u201393\",\"% Blood-feeding inhibition\":\"5\",\"% Personal protection\":\"32\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total blood-fed\":150,\"% Blood-fed*\":\"28c\",\"95% CI\":\"24\\u201332\",\"% Blood-feeding inhibition\":\"71\",\"% Personal protection\":\"78\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total blood-fed\":440,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201394\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"35\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total blood-fed\":153,\"% Blood-fed*\":\"37d\",\"95% CI\":\"33\\u201342\",\"% Blood-feeding inhibition\":\"61\",\"% Personal protection\":\"77\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total blood-fed\":488,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201395\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"28\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total blood-fed\":160,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201337\",\"% Blood-feeding inhibition\":\"65\",\"% Personal protection\":\"76\"}}\n", - "\n", - "header: Susceptibility bioassays\n", - "\n", - "WHO susceptibility cylinder bioassays [20] and CDC bottle bioassays [21] were performed in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove experimental hut site to the constituent insecticides in the hut treatments. Adult F1 progeny of field-collected _An. gambiae_ s.l. were exposed to filter papers treated with discriminating doses of alpha-cypermethrin (0.05%), permethrin (0.75%), bendiocarb (0.1%) and fenitrothion (1.0%) in WHO cylinders and CDC bottles impregnated with 100 mg of chlorfenapyr. Comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu colony. For each insecticide and strain, 100 adult female mosquitoes aged 2-3 days were introduced to four insecticide-treated cylinders/bottles in batches of 25. In the control arms, mosquitoes were exposed to silicone oil-treated filter papers and acetone-treated bottles. After 1 h exposure, mosquitoes were transferred to holding tubes and observation cups and provided access to 10% glucose solution (w/v). Mortality was recorded after 24 h for mosquitoes exposed to permethrin, alpha-cypermethrin, bendiocarb and fenitrothion in WHO cylinder bioassays and every 24 h up to 72 h for mosquitoes exposed to chlorfenapyr in CDC bottles. The insecticide treated filter papers used for the WHO cylinder bioassays were obtained from Universiti Sains Malaysia.\n", - "\n", - "header: Outcome measures\n", - "\n", - "The efficacy of each experimental hut treatment was expressed in terms of the following outcome measures:\n", - "\n", - "* Exophily-exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda\n", - "* Deterrence-defined as the percentage reduction in numbers of mosquitoes collected in a treated hut relative to the untreated control\n", - "* Blood-feeding-proportion of blood-fed mosquitoes at the time of collection\n", - "\n", - "Where _B__\\({}_{\\mu}\\)_ is the proportion of blood-fed mosquitoes in the untreated control and _B__\\({}_{\\beta}\\)_ is the proportion of blood-fed mosquitoes in the treated hut.\n", - "\n", - "\n", - "- B_{i})}{B_{u}}\\] Where \\(B_{u}\\) is the number of blood-fed mosquitoes in the untreated control and \\(B_{i}\\) is the number of blood-fed mosquitoes in the huts with insecticide treatments.\n", - "* Mortality-proportion of dead mosquitoes after a 72 h holding period Mosquito deterrence, blood-feeding inhibition and personal protection were calculated relative to the untreated net control hut for treatments which involved the LLIN and relative to the untreated hut control for IRS-only treatments.\n", - "\n", - "header: Susceptibility bioassay results: Experimental hut results\n", - "\n", - "A total of 4,698 female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trial period (Tables 3 and S1). Due to the inability to\n", - "\n", - "rotate IRS, it was not possible to distinguish treatment-induced deterrence for the IRS treatments from differential attractiveness due to hut position. The proportion of mosquitoes exiting into the veranda for the untreated hut and untreated net controls were 45% and 39% respectively. Exiting was significantly higher in all experimental hut treatments relative to both controls (p<0.01), suggesting the insecticide treatments induced an irritant response which caused mosquitoes to seek refuge in the veranda. The highest level of mosquito exiting was achieved with beniodicarb IRS alone (77%). Adding beniodicarb IRS to DuraNet(r) also induced significantly higher levels of mosquito exiting compared to DuraNet(r) alone (57% with DuraNet(r) vs. 70% with DuraNet(r) + beniodicarb IRS, p = 0.001). This effect was, however, not observed with chlorfenapyr IRS and pirimiphos-methyl CS IRS; exiting rates were similar between the combinations with these IRS insecticides and DuraNet(r) alone, (59% - 61% vs 57%, p>0.05).\n", - "\n", - "**Blood-feeding and personal protection.** Blood-feeding and personal protection results of wild, pyrethroid-resistant _An. gambiae_ s.l. in the experimental huts are presented in Table 4. Blood-feeding rates with the untreated hut and untreated net controls were 95% and 55% respectively. DuraNet(r) induced significantly lower blood-feeding rates than the control untreated net (33% with DuraNet(r) vs. 55% with untreated net, p<0.001). Meanwhile, blood-feeding was high across all IRS treatments (91-92%) thus providing very limited blood-feeding inhibition (3% - 5%) compared to the untreated hut control (Table 4). All three combinations provided significantly higher levels of blood-feeding inhibition relative to the IRS treatments\n", - "\n", - "alone (60% - 71% vs. 3% - 5%, p<0.001). Between the combinations, DuraNet(r) + bendiocarb IRS induced the lowest blood-feeding rate (28%) and offered personal protection of 78% while DuraNet(r) + chlorfenapyr IRS induced a higher blood-feeding rate (37%, p = 0.015) though providing about the same levels of personal protection (77%).\n", - "\n", - "**Mortality rates in experimental huts.** Overall mortality rates of wild, pyrethroid-resistant _An. gambiae_ s.l. in the untreated hut and untreated net controls were 2% and 4% respectively (Table 5). Mortality with DuraNet(r) was low and did not differ significantly from the untreated net control (8% vs. 4%, p = 0.169). The IRS treatments alone and the combinations induced significantly higher mortality than DuraNet(r) and the untreated controls (p < 0.001); adding any IRS treatment onto DuraNet(r) therefore always significantly improved vector mortality compared to DuraNet(r) alone. Between the IRS only treatments, the highest mortality was achieved with pirimiphos-methyl CS (85%, p < 0.001) while chlorfenapyr and bendiocarb induced fairly similar mortality rates (34% and 28%, p = 0.09). Combining DuraNet(r) with bendiocarb and pirimiphos-methyl CS IRS treatments did not improve mortality compared to the corresponding IRS alone (bendiocarb: 28% vs. 32%, p = 0.265 and pirimiphos-methyl CS: 85% vs. 81%, p = 0.129) (Table 5). With chlorfenapyr IRS, mortality was significantly higher in the combination compared to chlorfenapyr IRS alone over the 4-month trial (34% vs. 46%, p < 0.001) (Fig 3). Between the combinations, the highest mortality was achieved with DuraNet(r) + pirimiphos-methyl CS IRS (81%). Mortality was significantly higher with the DuraNet(r) + chlorfenapyr IRS combination compared to DuraNet(r) + bendiocarb IRS (46% vs. 32%, p < 0.001) (Table 5).\n", - "\n", - "Initial monthly wild mosquito mortality with pirimiphos-methyl CS IRS and chlorfenapyr IRS was steady and did not decline substantially over the course of the 4 months trial both when applied alone and in combination with DuraNet(r) (Figs 1 and 2). By contrast, wild mosquito mortality with bendiocarb IRS declined sharply from ~55% to about 28-32% by the last month of the trial both when applied alone and in combination with DuraNet(r) (Fig 3).\n", - "\n", - "**Wall cone bioassay results.** Mortality rates of the laboratory maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu colony following exposure to IRS-treated walls in monthly, 30 mins wall cone bioassays are presented in Fig 4 with more details in supporting information (S2 Table). On pirimiphos-methyl CS-treated surfaces, cone bioassay mortality was very high (> 85%) throughout all 4 months of the trial. As observed with wild free-flying mosquitoes, a progressive decline in cone bioassay mortality with increasing months elapsed from spraying was observed with bendiocarb, beginning at 63% in month 1 and decreasing to 19% by month 4. Cone bioassay mortality with chlorfenapyr IRS was consistently low throughout the trial,\n", - "ranging from 11-31%. Cone bioassay mortality on untreated control walls did not exceed 10% in any month of the trial (Fig 4).\n", - "\n", - "header: Table 2: Susceptibility of field-collected Anopheles gambiae sensu late from Cove to chlorfenapyr in CDC bottle bioassays.\n", - "footer: None\n", - "columns: ['Treatment', 'Strain', 'N exposed', 'N dead', '% Mortality�', '95% CI']\n", - "\n", - "{\"0\":{\"Treatment\":\"Control\",\"Strain\":\"Kisumu\",\"N exposed\":101,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"1\":{\"Treatment\":\"Control\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":100,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"2\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Kisumu\",\"N exposed\":103,\"N dead\":103,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"},\"3\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":102,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"}}\n", - "\n", - "header: Study site and experimental huts: Experimental hut treatments\n", - "\n", - "The following treatments were assessed in 9 experimental huts:\n", - "\n", - "1. Control (untreated hut)\n", - "2. Control (untreated net)\n", - "3. DuraNet(r) (Alpha-cypermethrin LLIN, 261 mg/m2, Shobikaa Impex)\n", - "4. Bendiocarb IRS applied at 400 mg/m2 (Ficam(r) WP, Bayer)\n", - "5. DuraNet(r) + Bendiocarb IRS applied at 400 mg/m2\n", - "6. Chlorfenapyr IRS applied at 250 mg/m2 (Sylando(r) 240SC, BASF)\n", - "7. DuraNet(r) + Chlorfenapryr IRS applied at 250 mg/m2\n", - "8. Pirimiphos-methyl CS IRS applied at 1000 mg/m2 (Actellic(r) 300CS, Syngenta)\n", - "9. DuraNet(r) + Pirimiphos-methyl CS IRS applied at 1000 mg/m2\n", - "\n", - "Interior hut walls were sprayed from top to bottom with IRS insecticide solutions using a Hudson X-pert(r) compression sprayer equipped with a flat-fan nozzle. To improve spraying accuracy, spray swaths were pre-marked on hut walls and a guidance pole was attached to the end of the spray lance to maintain a fixed distance to the wall. After spraying each hut, the volume remaining in the spray tank was measured to assess the overall volume sprayed. All spray volumes were within 30% of the target. The palm match used on the ceiling was sprayed flat on the ground outside the experimental hut and allowed to dry for 2 hours prior to being fitted on the ceiling of the hut. Three replicate nets were used per LLIN treatment and these were rotated every 2 nights within the same hut. To simulate wear and tear from field use, 6 holes each measuring 16 cm2 were cut into each bed net (one per panel) used in the trial.\n", - "\n", - "header: Background\n", - "\n", - "Insecticide-treated nets (ITNs) and indoor residual spraying (IRS) are core interventions for preventing and controlling malaria [1]. Both methods have independently proven to be highly effective in reducing the burden of disease in diverse epidemiological settings. The substantial reductions in malaria morbidity and mortality observed in endemic countries over the last two decades, has been attributed to a significant increase in the roll out of ITNs and IRS during this period [2]. Where resources are available, both interventions have been deployed together in the same geographical location, with the primary aim of reducing the disease burden to a greater extent than could be achieved with either method alone [3,4].\n", - "\n", - "The benefits of combining these interventions is, however, contentious. Some community-randomised controlled trials (RCTs) have compared epidemiological outcomes in communities receiving pyrethroid long-lasting insecticidal nets (LLINs) plus IRS versus LLINs alone, yielding conflicting results. Whilst trials in Tanzania [5] and Sudan [6] associated combined use of LLINs and IRS with significant reductions in malaria infection prevalence, similar studies in Benin [7], Eritrea [8], Ethiopia [9] and The Gambla [10] reported no such effect. Based on a Cochrane review demonstrating the inconsistencies in epidemiological evidence [4], the World Health Organisation (WHO) has recently issued a provisional recommendation against combining LLINs and IRS as a means of reducing malaria-associated morbidity and mortality [1]. National Malaria Control Programmes are encouraged to prioritise delivering either ITNs or IRS at high coverage and to a high standard, rather than introducing the second intervention as a means to compensate for deficiencies in the implementation of the first. However, this should not be interpreted to mean that the combined IRS and ITN approach is redundant in all settings. Considering the recent stall in progress against malaria [11] and increasing prevalence of pyrethroid resistance in malaria vector populations across Africa [12], combining interventions may be vital for high transmission settings and insecticide resistance management. Vector control programmes are expected to be guided by local evidence to decide when, where and how to combine IRS with ITNs for different epidemiological settings [1].\n", - "\n", - "Evidence from RCTs and operational studies suggests that the impact of co-implementing LLINs and IRS may depend on a number of location-specific factors including: intervention coverage, transmission intensity, vector behaviour, choice of IRS insecticide and insecticide resistance [13,14]. The choice of IRS insecticide for a specific geographical setting whether deployed alone or together with LLINs will be influenced largely by the susceptibility of the target vector population to the insecticide, its mode of action, chemical properties and residual \n", - "activity on wall substrates. To maximise the impact of the combined intervention approach, it is important to consider the interactions that may occur between the insecticide in the LLIN and the chosen IRS insecticide. Where the mode of action of the IRS insecticides is not complementary to the insecticide on the net, the combination might be redundant or result in lower levels of vector control than what is achievable with either intervention alone. Although pyrethroids are not recommended for IRS, the redundancy of combining pyrethroid IRS or wall linings with pyrethroid LLINs has been clearly demonstrated in experimental but studies against pyrethroid-resistant malaria vectors in West Africa [15,16].\n", - "\n", - "Insecticides belonging to four classes of compounds have been approved by the WHO for IRS against malaria vectors; pyrethroids, organophosphates, carbamates and more recently, the neonicotinoid clothianidin [1,17]. While RCTs are the most robust method for generating evidence on the impact of combining vector control interventions, they are often time-consuming, expensive and unrealistic in some settings. Evidence from experimental but trials may provide some insights on what to expect when different types IRS insecticides are deployed to complement pyrethroid-only nets. In this study, we compared the impact of combining pyrethroid LLINs with IRS insecticides from three distinct chemical classes in experimental huts against wild free-flying pyrethroid-resistant malaria vectors in southern Benin.\n", - "\n", - "header: Trial procedure\n", - "\n", - "The trial began three days after IRS application and continued for 4 months, between July and October 2018 and followed WHO guidelines [19]. Nine (9) consenting human volunteers kept in experimental huts each trial night to attract mosquitoes. To account for bias due to differential attractiveness to mosquitoes, volunteers were rotated through experimental huts daily in accordance with a predetermined Latin square design. To mitigate the effect of hut position on mosquito entry, bed nets were rotated through experimental huts on a weekly basis. IRS treatments could not be rotated thus remained fixed throughout the trial. At dawn, sleepers collected all mosquitoes from under the net, the sleeping room and the veranda using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were subsequently transferred to the laboratory for morphological identification and scoring of blood-feeding and mortality. To account for the slow-action of chlorfenapyr, delayed mortality was recorded every 24 h up to 72 h after collection for all treatments. All alive _An. gambiae_ s.l. were held at 27 +- 2deg C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution.\n", - "\n", - "header: Residual activity of IRS treatments\n", - "\n", - "Cone bioassays were performed at monthly intervals after spraying to assess the residual activity of IRS treatments on hut walls following WHO guidelines [19]. Laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu mosquitoes were used for this purpose. In each IRS-treated hut, 50, 3-5-day old adult female mosquitoes were transferred to five cones attached to the walls and ceiling in batches of 10. As a control, mosquitoes were introduced into cones attached to an unsprayed wall. Mosquitoes were exposed to the surfaces for 30 mins before being transferred to netted cups. Mosquitoes were held at 27 +- 2' C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution. Knockdown was recorded 1 h post-exposure and delayed mortality every 24 h up to 72 h thereafter.\n", - "\n", - "header: Abstract\n", - "\n", - "Which indoor residual spraying insecticide best complements standard pyrethroid long-lasting insecticidal nets for improved control of pyrethroid resistant malaria vectors?\n", - "\n", - "Thomas Syme, Augustin Fongnikin, Damien Todjinou, Renaud Goveetchan, Mark Rowland, Martin Akogbeto, Corine Nguforo\n", - "\n", - "\n", - "\n", - "Where resources are available, non-pyrethroid IRS can be deployed to complement standard pyrethroid LLINs with the aim of achieving improved vector control and managing insecticide resistance. The impact of the combination may however depend on the type of IRS insecticide deployed. Studies comparing combinations of pyrethroid LLINs with different types of non-pyrethroid IRS products will be necessary for decision making.\n", - "\n", - "header: Mosquito entry and exiting.: Discussion\n", - "\n", - "The ultimate purpose of combining IRS with LLINs is to achieve greater levels of vector control through the differential effects of the interventions and modes of action of the insecticides involved than what is achievable with a single intervention on its own. Transmission dynamics models have suggested that the levels of vector mosquito mortality and blood-feeding inhibition observed in an experimental hut setting could be predictive of the capacity of an indoor vector control intervention or a combination of these to control vector populations, reduce vector biting and improve public health impact when deployed on a large scale [22,23]. In this study, we demonstrate that where vectors are resistant to pyrethroids but susceptible to a given non-pyrethroid IRS insecticide, it should be possible to achieve substantially improved vector control by adding the non-pyrethroid IRS to a standard pyrethroid-only LLIN to boost\n", - "\n", - "Fig 1: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pirimphos-methyl CS IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", - "\n", - "Fig 2: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with chlorfenapyr IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", - "\n", - "\n", - "mortality rates through the IRS intervention, while benefiting from the blood-feeding inhibition provided by the LLIN.\n", - "\n", - "The level of improved mortality achieved in the pyrethroid-only LLIN plus non-pyrethroid IRS combinations relative to the pyrethroid LLIN alone was clearly dependent on the type of non-pyrethroid IRS insecticide used. The combination with pirimiphos-methyl CS IRS induced the highest mortality rate (81%) and this can be attributed to the high and prolonged activity of the pirimiphos-methyl CS IRS formulation on cement walls as demonstrated in this study and previous studies in Benin [24]. This substantiates findings from community trials and operational studies demonstrating significant reductions in transmission of malaria by pyrethroid-resistant vector populations when a single round of pirimiphos-methyl CS IRS was deployed against a background of moderate to high coverage with standard pyrethroid nets [25-27]. By contrast the levels of mortality achieved in the combination with bendiocarb IRS was much lower (32%); attributable to the fast decline in efficacy with the insecticide as observed monthly in the experimental huts and in cone bioassays. The poor residual effect of\n", - "\n", - "Fig 4: **Mortality (72 h) of laboratory maintained, insecticide-susceptible _Anopheles gambiae_ sensu stricto Kisumu colony exposed to IRS-treated hut walls in monthly, 30 mins wall cone bioassays in experimental huts in Cove, southern Benin. Error bars represent 95% CI. Approximately fifty (50) 2–3 days old mosquitoes were exposed for 30 mins to each IRS treated hut in batches of 10 per cone and mortality recorded after 72 h.**\n", - "\n", - "Fig 3: **Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato entering experimental huts with bendiocarb IRS applied alone and in combination with DuraNet® in Cove, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.**\n", - "bendiocarb for IRS is well documented [28, 29, 30]. The failure of a combination of bendiocarb treated walls and pyrethroid nets to provide improved control of clinical malaria compared to either intervention alone in a previous RCT in Benin [7] was also largely attributed to the short-lived efficacy of bendiocarb on the treated walls [13, 14]. Multiple IRS campaign rounds may be necessary to achieve sustained levels of improved vector control when bendiocarb IRS is deployed to complement standard pyrethroid LLINs. Given the significant costs associated with running IRS campaigns, these findings raise questions over the suitability of currently available formulations of bendiocarb for IRS and the cost-effectiveness of its combination with pyrethroid nets. Considering the high initial mortality rates usually achieved with the insecticide, reformulation chemistry may help address the short residual efficacy of bendiocarb and improve the utility of this insecticide for vector control.\n", - "\n", - "While mortality in the combinations with pirimiphos-methyl CS IRS and bendiocarb IRS were similar to each IRS alone, the combination with chlorfenapyr IRS induced significantly higher levels of mortality compared to chlorfenapyr IRS alone. This demonstrates an additive effect of the chlorfenapyr IRS plus pyrethroid LLINs combination which was not observed with the other IRS insecticides tested. This trend is consistent with previous experimental hut studies in Benin [31, 32] though the levels of mortality achieved with the combination were substantially higher (73%-83% vs. 46%). The difference in mortality could be due to changes in the composition of the vector population and/or increasing pyrethroid resistance levels over time. Chlorfenapyr is a new repurposed pyrrole insecticide with a unique mode of action that has shown potential for IRS but often inducing moderate mortality rates when applied alone in experimental huts against pyrethroid-resistant malaria vectors [29, 33]. It acts on the oxidative/metabolic pathway of insects hence its action can be enhanced by physical activity in the insect [34]. The additive mortality observed in the chlorfenapyr IRS plus pyrethroid net combination may therefore be attributed to the irritant effect of the pyrethroid in the LLIN on mosquitoes as they alight on the chlorfenapyr-treated wall after failed attempts to feed on the sleeper under the net. In addition, owing to the non-neurotoxic and non-irritant effect of chlorfenapyr [35], mosquitoes may have alighted on chlorfenapyr-treated walls for longer, leading to increased insecticide pick-up, potentially contributing to the additional mortality observed with this combination. The inability of the WHO 30-min cone bioassays to predict wild mosquito mortality with chlorfenapyr IRS in experimental huts [29, 34] is further demonstrated in this study; while cone bioassay mortality of the susceptible Kisumu strain was very low, wild mosquito mortality was higher and consistent throughout the trial confirming previous findings [29]. Considering the prolonged effect of chlorfenapyr IRS on wild mosquitoes [29], substantial and sustained improvements in the control of pyrethroid-resistant vector populations can be expected if the IRS insecticide is deployed to complement pyrethroid LLINs.\n", - "\n", - "IRS is highly effective for malaria vector control when deployed on its own but provides limited personal protection from mosquito biting and this is evident from the high blood-feeding rates observed with the IRS treatments alone. In the absence of a bed net, mosquitoes will usually feed on the human occupants in an IRS treated home before resting on the wall where they pick up the insecticide, consequently, direct blood-feeding inhibition is not expected when the intervention is applied independently. By contrast, pyrethroid LLINs reduce mosquito biting and provide substantial levels of personal protection for the user; an effect which is attributable to the physical barrier of the net and the excito-repellent effect of the pyrethroid insecticide. The findings from this study demonstrate that this effect can persist even against a vector population that has developed intense resistance to pyrethroids as observed in Cove [18]. By combining the IRS treatments with a pyrethroid LLIN, it was possible to achieve substantially improved levels of blood-feeding inhibition and personal protection compared to \n", - "the IRS alone. The reduced exposure to infective bites constitutes a crucial advantage of the combination strategy over IRS alone. The blood-feeding rate in the combination appeared to depend on the type of IRS insecticide used albeit to a lesser extent than the levels of mortality achieved; lower blood-feeding rates and thus higher levels of blood-feeding inhibition were achieved in the combination with benidocarb IRS compared to the combination with chlorfenapyr IRS. This can be due to differences in the mode of action of both IRS insecticides; in contrast to chlorfenapyr, benidocarb acts on the insect's nervous system eliciting an irritant rapid knockdown effect on mosquitoes [35] and this together with the excito-repellent effect of the pyrethroid in the standard pyrethroid LLIN could have contributed to the high levels of early exiting and reduced blood-feeding rates observed when both interventions were combined in a hut.\n", - "\n", - "Overall, the results demonstrate the superiority of the organophosphate, pirimiphos-methyl CS for IRS on its own and in combination with pyrethroid LLINs over benidocarb and the pyrrole, chlorfenapyr. However, this finding may not be generalisable to areas where vectors are resistant to organophosphates. Indeed, previous experimental hut studies in Cote d'Ivoire failed to demonstrate improved vector control with the combination compared to the net alone when standard pyrethroid LLINs were combined with pirimiphos-methyl CS-treated wall linings against a vector population that was resistant to pyrethroids and organophosphates [36]. Resistance to organophosphates and carbamates is unfortunately increasing in malaria vector populations especially in West Africa [37, 38, 39, 40]. To mitigate its impact, vector control programmes are encouraged to rotate between IRS insecticides with different modes of action [41]. Considering that most IRS campaigns will usually be deployed against a background of high LLIN coverage, effective IRS rotation plans should prioritise IRS insecticides which in addition to providing improved and prolonged vector control, can efficiently complement LLINs. Based on the findings of this study, chlorfenapyr IRS shows some potential to be a useful addition to such IRS rotation plans in pyrethroid-resistant areas with high pyrethroid LLIN coverage. It will be interesting to investigate the impact of combining pyrethroid LLINs with other newly approved IRS formulations containing clothianidin [17].\n", - "\n", - "The low mortality rates achieved with the standard pyrethroid net in this study (8%), further demonstrates the threat of pyrethroid resistance on the efficacy of standard pyrethroids. Pyrethroid resistance is widespread in malaria vectors across Africa and increasing in intensity the more they are used [12]. A new generation of LLINs treated with a pyrethroid and non-pyrethroid insecticide are now in advanced development. Studies have demonstrated the potential of some of these nets to provide improved control of clinical malaria transmitted by pyrethroid-resistant malaria vectors compared to standard pyrethroid nets [42, 43, 44]. As next generation nets come into the market, and are rolled out in endemic countries, it will be essential to explore any possible interactions with the different types of IRS insecticides that could be deployed together with them in a combined intervention approach.\n", - "\n", - "header: Data analysis\n", - "\n", - "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental hut treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to differential attractiveness of the volunteer sleepers and huts.\n", - "\n", - "\n", - "Mortality in susceptibility bioassays was interpreted according to WHO criteria. All analyses were performed in Stata version 15.1.\n", - "\n", - "header: Table 3. Overall entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", - "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", - "columns: ['Treatment', 'Total females caught', 'Average catch per night', '% Deterrence', 'Total exiting', '% Exophily�', '95% CI']\n", - "\n", - "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total females caught\":711,\"Average catch per night\":7,\"% Deterrence\":\"\\u2013\",\"Total exiting\":322,\"% Exophily\\ufffd\":\"45a\",\"95% CI\":\"42\\u201349\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total females caught\":420,\"Average catch per night\":4,\"% Deterrence\":\"41\",\"Total exiting\":165,\"% Exophily\\ufffd\":\"39a\",\"95% CI\":\"35\\u201344\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total females caught\":619,\"Average catch per night\":6,\"% Deterrence\":\"13\",\"Total exiting\":350,\"% Exophily\\ufffd\":\"57b\",\"95% CI\":\"53\\u201361\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":508,\"Average catch per night\":5,\"% Deterrence\":\"29\",\"Total exiting\":389,\"% Exophily\\ufffd\":\"77c\",\"95% CI\":\"73\\u201380\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total females caught\":537,\"Average catch per night\":6,\"% Deterrence\":\"25\",\"Total exiting\":373,\"% Exophily\\ufffd\":\"70cd\",\"95% CI\":\"66\\u201373\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total females caught\":478,\"Average catch per night\":5,\"% Deterrence\":\"33\",\"Total exiting\":297,\"% Exophily\\ufffd\":\"62bd\",\"95% CI\":\"58\\u201367\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total females caught\":411,\"Average catch per night\":4,\"% Deterrence\":\"42\",\"Total exiting\":241,\"% Exophily\\ufffd\":\"59b\",\"95% CI\":\"54\\u201363\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total females caught\":528,\"Average catch per night\":6,\"% Deterrence\":\"26\",\"Total exiting\":356,\"% Exophily\\ufffd\":\"67d\",\"95% CI\":\"63\\u201371\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total females caught\":486,\"Average catch per night\":5,\"% Deterrence\":\"32\",\"Total exiting\":298,\"% Exophily\\ufffd\":\"61bd\",\"95% CI\":\"57\\u201366\"}}\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cove\",\"Start_month\":7,\"Start_year\":2018,\"End_month\":10,\"End_year\":2018}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"Alpha-cypermethrin\",\"Concentration_initial\":\"261 mg\\/m2\",\"Net_holed\":6.0}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Tunnel test\n", - "\n", - "The tunnel test outcomes confirmed the cone bioassay results for the susceptible _An. gambiae s.s._ Kisumu strain, with strong blood-feeding inhibition and high mortality in all nets being above the WHO tunnel test thresholds (>= 90% blood-feeding inhibition or >= 80% mortality) (Fig. 4). The blood-feeding inhibition was high only in unwashed and used samples of PermaNet(r) Dual (A) (92.4%), PermaNet(r) Dual (B) (91.6%) and PermaNet(r) 3.0 (92.3%) (Fig. 4A). The mortality was very high (100%) in unwashed or washed and unused or used samples of all nets (PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0) (Fig. 4B), thus showing their good efficacy against this pyrethroid-susceptible _An. gambiae_ Kisumu strain. Additional file shows the Kisumu strain mortality with tunnel tests in more detail (see Additional file 4: Table S4). For the pyrethroid-resistant _An. gambiae s.l._, only washed and unused PermaNet(r) Dual (A) induced a strong blood-feeding inhibition (91.3%) being above the WHO tunnel cut-off of 90% (Fig. 5A). However, the mortality with all samples (unwashed or washed and unused) of PermaNet(r) Dual (85.2-94.9%) were higher compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 5B), and consistent with the higher efficacy of PermaNet(r) Dual against the free-flying pyrethroid-resistant _An. gambiae s.l._ Tiassale strain populations observed in the concurrent experimental hut trials. Additional file shows the pyrethroid-resistant Tiassale strain mortality with tunnel tests in more detail (see Additional file 5: Table S5).\n", - "\n", - "header: Background: Methods\n", - "\n", - "PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0, unwashed and washed (20 washes), were tested against free-flying pyrethroid-resistant _An. gambiae s.l._ in the experimental huts in Tiassale, Cote d'lvoire from March to August 2020. Complementary laboratory cone bioassays (daytime and 3-min exposure) and tunnel tests (nightly and 15-h exposure) were performed against pyrethroid-susceptible _An. gambiae_ sensu stricto (_S.S._) (Kisumu strain) and pyrethroid-resistant _An. gambiae s.l._ (Tiassale strain).\n", - "\n", - "header: Small-scale field evaluation of PermaNet(r): Abstract\n", - "\n", - "Dual (a long-lasting net coated with a mixture of chlorfenapyr and deltamethrin) against pyrethroid-resistant _Anopheles gambiae_ mosquitoes from Tiassale, Cote d'lvoire\n", - "\n", - "Julien Z. B. Zahouli\n", - "\n", - "Julien Z. B. Zahouli\n", - "\n", - "Julien.zahouli@crsrs.ci\n", - "\n", - "Constant A. V. Edi\n", - "\n", - "1Laurence A. Yao\n", - "\n", - "1Emmanuelle G. Lisro\n", - "\n", - "1Marc Adou\n", - "\n", - "1Inza Kone\n", - "\n", - "1Graham Small\n", - "\n", - "2Leanore D. Sternberg\n", - "\n", - "28Benjamin G. Koudou\n", - "\n", - "\n", - "\n", - "Due to the rapid expansion of pyrethroid-resistance in malaria vectors in Africa, Global Plan for insecticide Resistance Management (GIPRM) has recommended the development of long-lasting insecticidal nets (LLINs), containing insecticide mixtures of active ingredients with different modes of action to mitigate resistance and improve LLIN efficacy. This good laboratory practice (GLP) study evaluated the efficacy of the chlorfenapyr and deltamethrin-coated PermaNet(r) Dual, in comparison with the deltamethrin and synergismt piperonyl butoxide (PBO)-treated PermaNet(r) 3.0 and the deltamethrin-coated PermaNet(r) 2.0, against wild free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato (_S.I._), in experimental huts in Tiassale, Cote d'lvoire (West Africa).\n", - "\n", - "header: Comparison of laboratory bioassay results with hut trial results\n", - "\n", - "Comparing the laboratory cone bioassay and tunnel test results with the experimental hut trial results with the same pyrethroid-resistant _An. gambiae s.l._ strain showed that these laboratory bioassays predicted the response in the huts for PermaNet(r) 3.0 and PermaNet(r) 2.0. Indeed, the unwashed and washed PermaNet(r) 3.0 and PermaNet(r) 2.0 induced relatively lower mortality in the pyrethroid-resistant _An. gambiae_ strain with the cone bioassays, the tunnel test and the hut trial. Focussing on the bioefficacy of PermaNet(r) Dual, the respective mortality rates in the cone, tunnel and hut were 14.0%, 84.5% and 94.9% for unwashed PermaNet(r) Dual (A), 24.0%, 86.5% and 90.2% for unwashed PermaNet(r) Dual (B), and 10.0%, 87.5% and 90.4% for washed PermaNet(r) Dual (B). This suggests that laboratory tunnel tests are more predictive of the performance of PermaNet(r) Dual in experimental huts. Additionally, there were correlations in the blood-feeding rates and blood-feeding inhibition between the tunnel test results and the hut trial results. The high mortality and strong blood-feeding inhibition of PermaNet(r) Dual in tunnel tests with the pyrethroid-resistant _An. gambiae_ Tiassale strain shows that the chlorfenapyr component of PermaNet(r) Dual provided good efficacy against pyrethroid-resistant _Anopheles_.\n", - "\n", - "header: Chemical analysis\n", - "\n", - "Pieces of netting were sampled from unwashed and washed PermaNet(r) Dual (A and B), PermaNet(r) 3.0 and PermaNet(r) 2.0 LLINs before and after being used in the hut trial, in accordance with the WHO protocol for chemical analysis [25]. All sampled net pieces were labelled and stored individually in aluminium foil at 3.7-4.2 degC. The net pieces were then shipped to the Vestergaard's ISO IEC17025 laboratory in Vietnam for chemical analysis of chlorfenapyr and deltamethrin. Deltamethrin and PBO contents were determined following the Collaborative International Pesticides Analytical Council Ltd (CIPAC) (i.e. ClPAC 33/LN/(M2)/3) methods [26]. Briefly, chlorfenapyr content was analysed using in-house method VCL-098-20 that was undergoing ClIPAC validation and was still to be published. Chlorfenapyr content was extracted from the PermaNet(r) Dual net using a mixture of n-hexane and 1,4-dioxane (95:5, v:v) solvents with an internal standard of dibutylphthalate added. The mixture was shaken by shaking machine to extract chlorfenapyr. Extracted solution was filtered through 0.45 mm Teflon membrane and analysed by a normal phase high performance liquid chromatography for chlorfenapyr concentration, detector UV 236 nm.\n", - "\n", - "header: Supporting laboratory testing of net samples\n", - "\n", - "Standard WHO cone bioassays and tunnel tests were conducted with unwashed and washed nets under laboratory conditions, to predict their responses in the field experimental huts. The insecticide susceptible Kisumu strains and field-collected F0 generation of pyrethroid-resistant Tiassale strain of _An. gambiae_ were tested with samples (25 cm x 25 cm) cut from each of the eight net \n", - "types (unwashed and washed net samples) before and after their inclusion into the hut trial [23]. For the tunnel tests, tunnels were divided into two sections by netting samples held in a frame. Nine holes of 1 cm in diameter were cut in each net sample (with one hole located at the centre of the square, and the other eight equidistant and located 5 cm from the border), and the surface of netting available to the mosquitoes was 400 cm\\({}^{2}\\) (20 cm \\(\\times\\) 20 cm).\n", - "\n", - "For each type of net and wash status, 100 non-blood-fed, 2-5-day-old females per strain were subjected to 3-min exposure in cone bioassays in replicates of five mosquitoes per cone according to the WHO guidelines [22]. For the tunnel tests, 100 non-blood-fed, 5-8-day-old mosquito females per strain were subjected to a 15-h exposure overnight using guinea pig as host, following the WHO guidelines [23]. Testing and holding conditions were 27 +- 2 degC and 80 +- 10% relative humidity. The 60-min knockdown for cone bioassays, blood-feeding status for tunnel tests and 24, 48 and 72-h mortality for both methods were recorded.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "All relevant data are within the manuscript.\n", - "\n", - "header: Conclusion\n", - "\n", - "The deltamethrin-chlorfenapyr-coated PermaNet(r) Dual induced a high efficacy and performed better than the deltamethrin-PBO PermaNet(r) 3.0 and the deltamethrin-only PermaNet(r) 2.0, testing both unwashed and 20 times washed samples against the pyrethroid-susceptible and resistant strains of _An. gambiae s.l._ The inclusion of chlorfenapyr with deltamethrin in PermaNet(r) Dual net greatly improved protection and control of pyrethroid-resistant _An. gambiae_ populations. PermaNet(r) Dual thus represents a promising tool, with a high potential to reduce malaria transmission and provide community protection in areas compromised by mosquito vector resistance to pyrethroids.\n", - "\n", - "header: Blood-feeding and personal protection\n", - "\n", - "The blood-feeding effect of the nets in wild pyrethroid-resistant _An. gambiae_ that entered the trial huts and personal protection are presented in Fig. 1A and Table 1. Before washing, the percentage blood-feeding with PernaNet(r) Dual (A) (36.7 +- 4.0%) did not differ significantly from PernaNet(r) Dual (B) (37.5 +- 4.4%) and PernaNet(r) 2.0 (55.7 +- 3.7%), but was significantly higher than PernaNet(r) 2.0 (31.3 +- 4.4%) (z = - 2.17; p = 0.030). The percentage blood-feeding for unwashed PernaNet(r) Dual (B) was similar to unwashed samples of PernaNet(r) 2.0 (z = 1.74; p = 0.081) and PernaNet(r) 3.0 (z = - 1.49; p = 0.136). Washing 20 times did not influence significantly the percentage blood-feeding in PernaNet(r) Dual (B) (z = 0.10; p = 0.921). After washing,\n", - "the percentage blood-feeding of PermaNet(r) Dual (B) (36.0 +- 3.7%) was substantially lower, but without significant differences when compared with PermaNet(r) 3.0 (57.7 +- 3.7%) (z = 1.71; p = 0.087), PermaNet(r) 2.0 (72.3 +- 3.2%) (z = 1.78; p = 0.076) and the untreated control net (z = 1.72; p = 0.085). For blood-feeding inhibition, unwashed PermaNet(r) Dual (A) (42.5 +- 6.8%) was similar to unwashed PermaNet(r) Dual (B) (41.4 +- 6.9%) (z = 0.25; p = 0.802) and washed PermaNet(r) Dual (B) (43.7 +- 4.8%) that was not affected by washing (z = - 0.41; p = 0.682). Compared with PermaNet(r) 3.0, the blood-feeding inhibition of PermaNet(r) Dual (B) was significantly higher before washing (z = - 0.72; p = 0.469), and significantly lower after washing (z = - 1.92; p = 0.045). However, both unwashed and washed PermaNet(r) Dual (B) provided, respectively, significantly higher blood-feeding inhibition than unwashed and washed PermaNet(r) 2.0 (all p < 0.05). The personal protection was similar between unwashed samples of PermaNet(r) Dual (A) (58.8 +- 3.5%) and PermaNet(r) Dual (B) (60.8 +- 3.8%) (z = - 0.04; p = 0.968). Unwashed PermaNet(r) Dual (B) resulted in a personal protection that was similar to unwashed PermaNet(r) 3.0 (62.9 +- 4.2%) (z = 0.21; p = 0.738), and significantly different from unwashed PermaNet(r) 2.0 (28.8 +- 1.9%) (z = 3.21; p = 0.001). With 20 washes, the personal protection with PermaNet(r) Dual (B) declined significantly from 60.8 +- 3.8% to 20.2 +- 1.1% (z = - 2.96; p = 0.003). However, washed PermaNet(r) Dual (B) provided significantly higher personal protection compared with their washed counterparts of PermaNet(r) 3.0 (9.8 +- 0.7%) (z = 2.89; p = 0.004) and PermaNet(r) 2.0 (- 32.6 +- 2.2%) (z = 2.93; p = 0.003).\n", - "\n", - "header: Background\n", - "\n", - "According to the latest World Malaria Report 2022 of the World Health Organization (WHO), there were 247 million malaria cases and 619,000 malaria deaths in 84 malaria endemic countries worldwide in 2021 [1, 2]. This represents about 13.4 million more cases in 2021 compared to 2019 attributable to disruptions to essential malaria services during the COVID-18 pandemic [1]. The WHO African Region, with an estimated 234 million cases in 2021, accounted for about 95% of global cases malaria [1]. The recent decline of malaria burden from 2000 to 2019 was largely due to the massive distribution and use of long-lasting insecticidal nets (LLINs) (2.5 billion LLINs were delivered from 2004 to 2021) for _Anopheles_ mosquito vector control [1]. The malaria burden reduction is now slowing down and is threatened by the spread of resistance to pyrethroids (78 of 88 endemic countries have detected resistance to at least one insecticide class reported to the WHO from 2010 to 2020) [1]. The WHO Global Plan for Insecticide Resistance Management (GPIRM) has recommended the development of LLINs with insecticide mixtures of active ingredients with different modes of action to mitigate resistance [3]. The WHO Global Technical Strategy (GTS) aims for a reduction of malaria case incidence and mortality rate of at least 40% by 2020, 75% by 2025 and 90% by 2030 from the 2015 baseline [1, 4]. To meet these targets, GTS has called for the development of new tools, with combined or more effective insecticide molecules to control insecticide-resistant _Anopheles_ vectors [4]. These new vector control tools must incorporate new insecticide molecules and/or insecticide mixtures containing at least two active ingredients with different modes of action for the management of malaria vector resistance to insecticides [1, 3].\n", - "\n", - "Malaria is endemic throughout Cote d'Ivoire and represents the leading cause of mortality and morbidity in the country. Several studies have shown a wide spread resistance in local _Anopheles_ to most of the insecticide classes currently used in malaria vector control (e.g. pyrethroids, DDT and carbamates) [5-8]. The existence of multiple mechanisms of resistance in the main vector, _Anopheles gambiae_ sensu lato (_s.l._) threatens the efficacy of vector control tools currently used in Cote d'Ivoire, including LLINs [9-11]. Meiwald et al. [11] found that pyrethroid resistance is associated with significant overexpression of _CYP6P4, CYP6P3,_ and _CYP6Z1_ in _Anopheles coluzzii_ in Cote d'Ivoire. High allelic frequencies of knock-down resistance (_kdr_) _L1014F_ mutation (range: 0.46-1), relatively low frequencies of the _ace-1R_ mutation in the acetylcholinesterase gene associated with target-site insensitivity to carbamates and organophosphates (<0.5), and elevated activity of insecticide detoxifying enzymes (mainly mixed function oxidases (MFOs), esterase and glutathione S-transferase (GST)), have been reported in Cote d'Ivoire [5, 7, 10]. Recent laboratory (WHO tube and CDC bottle) bioassays against local pyrethroid-resistant _An. gambiae_ from Cote d'Ivoire have shown that pyrethroids induce low mortality, whilst pre-exposure to the synergist piperonyl butoxide (PBO) increases the mortality but does not restore fully the susceptibility due to resistance [9]. However, the pyrrole insecticide chlorfenapyr induces higher mortality in resistant _An. gambiae_ compared with pyrethroids alone or combined with PBO in Cote d'Ivoire [9].\n", - "\n", - "The present good laboratory practice (GLP) study evaluated the bio-efficacy of a new candidate LLIN, PermaNet(r) Dual, against pyrethroid-resistant _An. gambiae s.l._ in comparison with the WHO Prequalification Unit, Vector Control Product Assessment Team (PQT/VCP) listed standard LLINs, PermaNet(r) 2.0 and PermaNet(r) 3.0, through the conduct of an experimental hut trial and laboratory bioassays in Tiassale, Cote d'Ivoire. PermaNet(r) Dual has a mixture of the pyrrole chlorfenapyr and the pyrethroid deltamethrin coated onto a polyester fabric. PermaNet(r) 3.0 is treated with deltamethrin and PBO, and PermaNet(r) 2.0 is treated with deltamethrin only. Chlorfenapyr is a pro-insecticide activated by the oxygenase function of cytochrome P450s and oxidative removal of the N-ethoxymethyl\n", - "group leads to a toxic form identified as CL 303,268. The toxic form uncouples oxidative phosphorylation in the mitochondria, resulting in disruption of the production of adenosine triphosphate and loss of energy, leading to cell dysfunction and ultimately death of the insect [12]. The WHO has received some resistance monitoring data for chlorfenapyr, but these data are insufficient to assess the potential presence of resistance to this insecticide [1]. Deltamethrin is a neurotoxic insecticide and has excito-repellent effects on mosquitoes. PBO, used on PermaNet(r) 3.0, is a synergist which inhibits mixed function oxidases, blocking the detoxification of pyrethroids and at least partially restoring pyrethroid susceptibility [1, 13]. Pyrethroid-resistant strains of _Anopheles_ have so far been found to be susceptible to chlorfenapyr [9, 14-18]. Thus, the hypothesis of the current study was that chlorfenapyr would kill the pyrethroid-resistant _An. gambiae_ population in Tiassale, and PermaNet(r) Dual would induce higher mortality compared to both PermaNet(r) 3.0 and PermaNet(r) 2.0 in the experimental huts, and the supplementary laboratory cone and tunnel bioassays could predict these hut trial outcomes.\n", - "\n", - "header: Supplementary Information\n", - "\n", - "The online version contains supplementary material available at [https://doi.org/10.11016/s12936-023-04455-z](https://doi.org/10.11016/s12936-023-04455-z).\n", - "\n", - "header: Funding\n", - "\n", - "This study was funded by a Grant from Vestergaard Sarl, Lausanne, Switzerland.\n", - "\n", - "header: Results\n", - "\n", - "The outcomes of the current experimental hut trial showed that the parameters of the net efficacy against the pyrethroid-resistant _An. gambiae s.l._ Tiassale population varied as a function of net type and wash status, with the performance of PermaNet(r) Dual being better overall compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 1 and Table 1).\n", - "\n", - "header: Experimental huts and mosquitoes: Net treatments and treatment arms\n", - "\n", - "This study included the PermaNet(r) Dual (candidate net), PermaNet(r) 3.0 and PermaNet(r) 2.0 (reference nets) and untreated net (negative control). All mosquito nets were new and unwashed nets supplied by Vestergaard Sarl (Lausanne, Switzerland). The untreated nets were made of polyester fabric without any insecticide. PermaNet(r) Dual was made of polyester fabric coated with chlorfenapyr at 5.0 g/kg +- 25% and deltamethrin at 2.1 g/kg +- 25%. The unwashed PermaNet(r) Dual arm was replicated using nets from two different production batches (referred to as A and B). PermaNet(r) 3.0 was made of polyester fabric coated with 2.1 g/kg +- 25% of deltamethrin on the sides, and polyethylene incorporated with 4.0 g/kg +- 25% of deltamethrin and 25.0 g/kg +- 25% of PBO on the roof. PermaNet(r) 2.0 was made of polyester fabric coated with 1.4 g/kg +- 25% of deltamethrin.\n", - "\n", - "Eight treatment arms were compared in the experimental huts and laboratory: PermaNet(r) Dual (A) unwashed; PermaNet(r) Dual (B) unwashed and washed 20 times; PermaNet(r) 3.0 unwashed and washed 20 times; PermaNet(r) 2.0 unwashed and washed 20 times; and untreated control net. The nets were prepared and washed using a soap called \"Savon de Marseille\" and according to the WHO guidelines on small-scale field hut trials and laboratory testing [23]. The interval of time between two consecutive washes was one day, corresponding to the regeneration time of all the nets. The regeneration time of the PermaNet(r) Dual (i.e. 1 day) was supplied by Vestergaard. The nets were washed 20 times. Before testing them in the experimental huts, all the unwashed, washed and untreated control nets were deliberately holed with six holes of 4 cm in diameter to stimulate the conditions of torn nets according to the WHO guidelines [23].\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Additional file 3: Table 53.\n", - "\n", - "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (Tissale strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", - "\n", - "header: Conclusion\n", - "\n", - "The present small-scale GLP experimental hut study demonstrated that the deltamethrin- chlorfenapyr PermaNet(r) Dual net has high bio-efficacy, inducing significantly higher mortality and blood-feeding inhibition effects in the wild insecticide-resistant _An. gambiae s.l._ when compared with the deltamethrin-PBO PermaNet(r) 3.0 and deltamethrin-only PermaNet(r) 2.0. The inclusion of chlorfenapyr with pyrethroid in PermaNet(r) Dual net has greatly improved protection and control of free-flying wild pyrethroid-resistant _An. gambiae_ populations. The chlorfenapyr-deltamethrin-coated PermaNet(r) Dual net has great potential to reduce malaria transmission, particularly in areas compromised by high level of pyrethroid resistance in _Anopheles_ mosquitoes. Further validations in large-scale field trials are required to assess the effectiveness, the durability and the acceptability of this new tool for malaria vector control.\n", - "\n", - "header: Discussion\n", - "\n", - "The current study evaluated the efficacy of PermaNet(r) Dual, a new candidate net coated with a mixture of chlorfenapyr and deltamethrin, against _An. gambiae_ in a small-scale GLP but study in Tiassale, Cote d'Ivoire, with supporting exploratory laboratory cone and tunnel\n", - "\n", - "Fig. 4: Mean blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the susceptible _Anopheles gambiae_ s.s. Kisumu strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassale, Côte d’Ivoire. Error bars show the standard error of the mean\n", - "bioassays. WHO-prequalified PermaNet(r) 3.0 (co-treated with deltamethrin and PBO) and PermaNet(r) 2.0 (treated with deltamethrin only) were used as the reference nets. In this GLP but study, PermaNet(r) Dual performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0, in terms of mortality and blood-feeding inhibition, for both unwashed and unstressed cases, respectively.\n", - "\n", - "Fig. 5: Mean of blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the pyrethroid-resistant _Anopheles gambiae s1_. Tassale strain exposed to net samples using tunnel tests before and after experimental hut trial in Tassale, Côte d’thovie. Error bars show the standard error of the mean \n", - "and washed samples. Unlike the cone bioassays, the tunnel tests successfully confirmed the field efficacy of the nets. Briefly, this hut trial showed the benefit of mixing deltamethrin and chlorfenapyr together in a long-lasting net, PermaNet(r) Dual, for an effective control of pyrethroid-resistant _Anopheles._\n", - "\n", - "The current experimental hut study demonstrated that PermaNet(r) Dual had increased efficacy against highly pyrethroid-resistant _An. gambiae._ Indeed, hut mortality of _An. gambiae_ Tiassale strain was significantly higher with PermaNet(r) Dual (>83%) in comparison with PermaNet(r) 3.0 (<38%) and PermaNet(r) 2.0 (<12%), for both unwashed and 20 times washed samples (Fig. 1B and Table 1). This PermaNet(r) Dual efficacy was similar to chlorfenapyr and alpha-cypermethrin mixture-coated Intercept G2 in West and East Africa [16, 17, 27, 28, 29, 30, 31, 32]. The good performance of PermaNet(r) Dual might be attributed to the susceptibility of the highly pyrethroid-resistant _An. gambiae_ s.l. to chlorfenapyr [9, 11]. Due to the novel mode of action of chlorfenapyr, the present pyrethroid-resistance mechanisms did not provide any cross-resistance to this insecticide [12]. Indeed, chlorfenapyr-treated tool has been shown to control a number of different multiple-insecticide-resistant _Anopheles_ populations [14, 15, 27, 28, 29, 30, 31, 32].\n", - "\n", - "This hut study showed that the percentage blood-feeding in wild pyrethroid-resistant _An. gambiae_ population was lower for PermaNet(r) Dual (unwashed and washed) compared with PermaNet(r) 2.0 (unwashed and washed) and washed PermaNet(r) 3.0, but slightly higher than\n", - "unwashed PermaNet(r) 3.0 (Fig. 1A and Table 1). Likewise, blood-feeding inhibition with PermaNet(r) Dual was comparable or stronger than with PermaNet(r) 2.0 and washed PermaNet(r) 3.0. This PermaNet(r) Dual blood-feeding inhibition outcome is consistent with that caused by Intercept G2 in earlier hut trials in West Africa [27-31], and may be explained by the irritant effects of the deltamethrin [32-35]. While unwashed PermaNet(r) Dual and PermaNet(r) 3.0 produced similar levels of blood-feeding inhibition, the 20 times washed PermaNet(r) Dual induced a statistically greater blood-feeding inhibition in comparison with both PermaNet(r) 3.0 and PermaNet(r) 2.0 washed 20 times. This suggests that PermaNet(r) Dual may have performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0 over time. PermaNet(r) Dual effectiveness for inhibiting blood-feeding could imply its good potential for reducing the human-biting and blood-feeding, adding value into its killing effects in malaria vectors.\n", - "\n", - "In the present hut study, unwashed PermaNet(r) Dual deterrence effect against the wild pyrethroid-resistant _An. gambiae_ population was comparable to that recorded in PermaNet(r) 2.0 and PermaNet(r) 3.0. The deltamethrin component of PermaNet(r) Dual has a deterrence effect and may have induced exiting in mosquitoes. However, the 20 times washed PermaNet(r) Dual did not have a deterrence effect (Table 1), probably due to a reduction of the chemical contents (Table 2). A dipped chlorfenapyr net did seem to have a deterrence effect, but did not have a significant effect on exiting rates in West Africa [15, 16, 26-31]. The higher deterrence effect may be due to both the chlorfenapyr and deltamethrin components, but higher exiting rate would likely be due only to the deltamethrin component. Thus, PermaNet(r) Dual may have both deterrent and excito-repellency effects, providing personal protection against pyrethroid-resistant _An. gambiae_ mosquitoes, and reducing human-vector contacts, which may, in turn, lead to an increased user acceptance [36].\n", - "\n", - "While standard laboratory cone bioassays failed to predict PermaNet(r) Dual efficacy against pyrethroid-resistant _An. gambiae s.l.,_ tunnel tests successfully predicted its efficacy against the same strain in the semi-field experimental huts. Both cone and tunnel bioassays met the WHO criteria [44], with the susceptible _An. gambiae s.s._ Kisumu strain. However, _An. gambiae s.s._ Kisumu strain mortality against unwashed and used PermaNet(r) Dual (A) was lower (34%) with cone bioassay (Fig. 2B) probably due to the reduction of the chemical bioavailability on netting fibre surface of net samples tested, or the inappropriateness of cone bioassay method for evaluation of the chlorfenapyr-coated PermaNet(r) Dual as the mortality was higher (100%) with tunnel test (Fig. 4B). With the wild pyrethroid-resistant _An. gambiae s.l._ Tiassale strain, only the tunnel tests achieved high efficacy that was consistent with that observed in the huts with PermaNet(r) Dual. The difference in PermaNet(r) Dual efficacy between both _Anopheles_ Kiumu and Tiassale strains may be explained by the difference in the levels of their resistance to insecticides. However, the lower efficacy of PermaNet(r) Dual against pyrethroid-resistant _An. gambiae s.l._ with cone bioassays (daytime and 3-min exposure) compared with tunnel tests (night-time and 15-h exposure) may be attributable to the slow mode of action of chlorfenapyr and that mosquitoes need to be metabolically active for the activation of the chlorfenapyr pro-insecticide [12, 13, 37]. Indeed, chlorfenapyr has a previously been observed to have a slower action and delayed toxic activity of 2-3 days post-exposure compared to other insecticides (pyrethroids and organophosphates) used in mosquito vector control [14, 28, 29]. The cone bioassay method was developed to assess the bioefficacy of pyrethroid-only LLINs, and the use of this method to test LLINs containing non-neurotoxic insecticides, such as chlorfenapyr, may not necessarily be predictive of field impact, even with increased exposure time of mosquitoes inside the cones [16, 27]. In contrast, the tunnel test results with pyrethroid-resistant _An. gambiae s.l._ Tiassale strain (field-collected F0 generation) were more predictive of PermaNet(r) Dual efficacy in huts, as observed for other chlorfenapyr-coated nets, such as Interceptor(r) G2 [16, 27, 28]. Tunnel tests provide an increased exposure time of mosquitoes to the LLIN samples being tested, and being an overnight exposure. As the female mosquitoes in the tunnel tests are also exhibiting host-seeking behaviour and are, therefore, metabolically active, the activation of chlorfenapyr following tarsal pickup by mosquitoes may be more effective. The tunnel test was a better predictor of PermaNet(r) Dual field efficacy because exposure occurred at night when host-seeking mosquitoes are more vulnerable to chlorfenapyr. Tunnel test thus is a more reliable technique to assess the efficacy of a chlorfenapyr-treated net prior to field trials against free-flying mosquitoes [16, 38, 39].\n", - "\n", - "In PermaNet(r) Dual, deltamethrin and chlorfenapyr contents varied slightly, but complied with the dose interval limits of target specification [23]. This revealed a good homogeneity of the active ingredients' distribution over and a good retention of these active ingredients in PermaNet(r) Dual, thus resulting in high and similar mortality and blood-feeding inhibition between unwashed samples of PermaNet(r) Dual (A) and PermaNet(r) Dual (B). The reduction of chemical contents due to the loss of chlorfenapyr and deltamethrin with 20 washes had no apparent effect on PermaNet(r) Dual efficacy as the washed samples were still producing high mortality against the pyrethroid-resistant mosquitoes. Overall,\n", - "PernaNet(r) Dual chemical bioavailability was sufficient and produced high mortality in pyrethroid-resistant _Anopheles_ mosquitoes after 20 standardized washes (corresponding to a 3-year use) and over the hut trial.\n", - "\n", - "The high vector mortality and personal protection effect of the PernaNet(r) Dual found in this study are the desired outcomes of any vector control tool. The high mortality effects and the additive blood-feeding inhibition impacts induced by PernaNet(r) Dual in this hut trial are expected to substantially diminish the malaria vector density and biting rates in the field, and hence the transmission of malaria in the areas where vectors are resistant to insecticides [40-47]. Additionally, PernaNet(r) Dual performed better than the reference PernaNet(r) 3.0 and PernaNet(r) 2.0 nets, when washed 20 times, thus meeting the WHO hut trial criteria [23].\n", - "\n", - "However, these results need to be further validated in a large-scale field trial to assess the durability and acceptability of this new tool for malaria vector control [48-50]. A community trial would be the best way to evaluate the community level effect of this promising candidate net (i.e. PernaNet(r) Dual) against malaria transmission, by monitoring entomological infection rate, _Plasmodium_ prevalence and disease incidence [48-50]. Such a community trial could be a randomized controlled trial as with dual-active-ingredient LLINs (e.g. Interceptor G2) in Tanzania [49], soon in Benin [48, 50], and the pilot deployments that are part of the New Nets Project led by PATH [51]. Furthermore, PernaNet(r) Dual should be tested against wild populations of _Anopheles funestus_[32], or other main or secondary vectors of malaria in Africa [52-56]. Ultimately, in the present study, the series of hut and laboratory tests demonstrated that the chlorfenapyr component of PernaNet(r) Dual could make a major contribution to controlling the pyrethroid-resistant _An. gambiae_ populations. Furthermore, there were no adverse effects reported among hut sleepers and mosquito collectors during the trial in the huts where PernaNet(r) Dual were used, and this may possibly increase the rate of future user acceptability and improve the usage of this net for malaria vector control.\n", - "\n", - "header: Outcomes measures\n", - "\n", - "The following entomological outcomes were used to evaluate the efficacy of each treatment arm in the current experimental hut trial [23]:\n", - "\n", - "1. Deterrence: proportional reduction in the number of mosquitoes caught in treated hut relative to the number caught in the control hut.\n", - "2. Exiting rate: percentage of the mosquitoes collected from the veranda trap out of all mosquitoes collected.\n", - "3. Induced exophily: proportional reduction of mosquitoes found in the exit and veranda traps relative to control hut.\n", - "4. Blood-feeding: percentage of blood-fed mosquitoes relative to the total collected.\n", - "5. Blood-feeding inhibition: proportional reduction in blood feeding percentage in treated huts relative to the control hut.\n", - "6. Mortality: percentage of dead mosquitoes found dead in hut in the morning (immediate mortality) or after being caught alive and dead during holding (delayed mortality) in treatment huts out of mosquitoes collected, and corrected for control mortality.\n", - "7. Personal protection: the proportional reduction in the number of blood-fed mosquitoes in the treated huts relative to the number of blood-fed mosquitoes in the untreated control.\n", - "8. Killing effect: the proportional reduction in the number of mosquitoes killed in the treated huts relative to the number of mosquitoes killed in the untreated control.\n", - "\n", - "The formulas of key entomological outcomes measured in this study are [23]:\n", - "\n", - "\\[\\text{Deterrence}(\\%) = \\frac{\\text{Nc} - \\text{Nt}}{\\text{Nc}} \\times 100 = \\left( 1 - \\frac{\\text{Nt}}{\\text{Nc}} \\right) \\times 100,\\]\n", - "\n", - "where Nt the total number of mosquitoes collected in the treatment hut and veranda/exit traps and Nc the total number of mosquitoes in the control hut and veranda/exit traps.\n", - "\n", - "\\[\\text{Exiting}\\,\\text{rate}(\\%) = \\frac{\\text{n}}{\\text{N}} \\times 100,\\]\n", - "\n", - "where n is the number of mosquitoes from veranda and window traps, while N is the total number of mosquitoes collected in the hut.\n", - "\n", - "\\[\\text{Induced}\\,\\text{exophily}(\\%) = \\frac{\\text{Pt} - \\text{Pc}}{\\text{Pc}} \\times 100\\] \\[= \\left( \\frac{\\text{Pt}}{\\text{Pc}} - 1 \\right) \\times 100,\\]\n", - "\n", - "where Pt is the proportion of mosquitoes from veranda and window traps of treated hut while Pc is the number of mosquitoes from veranda and window traps of untreated control hut.\n", - "\n", - "\\[\\text{Blood} - \\text{feeding}\\,\\text{inhibition}(\\%) = \\frac{\\text{Pc} - \\text{Pt}}{\\text{Pc}} \\times 100,\\]\n", - "\n", - "where Pt the proportion of blood-fed mosquitoes in the treatment hut, and Pc the proportion of blood-fed mosquitoes in the control hut.\n", - "\n", - "\\[\\text{Personal}\\,\\text{protection}(\\%) = \\frac{\\text{Bc} - \\text{Bt}}{\\text{Bc}} \\times 100\\] \\[= \\left( 1 - \\frac{\\text{Bt}}{\\text{Bc}} \\right) \\times 100,\\]\n", - "\n", - "where Bt the number of blood-fed mosquitoes in the treatment hut and Bc the number of blood-fed mosquitoes in the control hut.\n", - "\n", - "\\[\\text{Killing}\\,\\text{effect}(\\%) = \\frac{\\text{Kt} - \\text{Kc}}{\\text{Tc}} \\times 100,\\]\n", - "\n", - "where Kt is the number of mosquitoes killed in the treatment huts, Kc is the number of mosquitoes killed in the control huts, and Tc is the total number of mosquitoes collected from the control.\n", - "\n", - "header: Results\n", - "\n", - "PermaNet(r) Dual demonstrated significantly improved efficacy, compared to PermaNet(r) 3.0 and PermaNet(r) 2.0, against the pyrethroid-resistant _An. gambiae s.l._ Indeed, the experimental hut trial data showed that the mortality and blood-feeding inhibition in the wild pyrethroid-resistant _An. gambiae s.l._ were overall significantly higher with PermaNet(r) Dual compared with PermaNet(r) 3.0 and PermaNet(r) 2.0, for both unwashed and washed samples. The mortality with unwashed and washed samples were 93.6 +- 0.2% and 83.2 +- 0.9% for PermaNet(r) Dual, 37.5 +- 2.9% and 14.4 +- 3.3% for PermaNet(r) 3.0, and 7.4 +- 5.1% and 11.7 +- 3.4% for PermaNet(r) 2.0, respectively. Moreover, unwashed and washed samples produced the respective percentage blood-feeding inhibition of 41.4 +- 6.9% and 43.7 +- 4.8% with PermaNet(r) Dual, 51.0 +- 5.7% and 9.8 +- 3.6% with PermaNet(r) 3.0, and 12.8 +- 4.3% and - 13.0 +- 3.6% with PermaNet(r) 2.0. Overall, PermaNet(r) Dual also induced higher or similar deterrence, exophily and personal protection when compared with the standard PermaNet(r) 3.0 and PermaNet(r) 2.0 reference nets, with both unwashed and\n", - "washed net samples. In contrast to cone bioassays, tunnel tests predicted the efficacy of PermaNet(r) Dual seen in the current experimental hut trial.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Tunnel test\n", - "\n", - "The tunnel test outcomes confirmed the cone bioassay results for the susceptible _An. gambiae s.s._ Kisumu strain, with strong blood-feeding inhibition and high mortality in all nets being above the WHO tunnel test thresholds (>= 90% blood-feeding inhibition or >= 80% mortality) (Fig. 4). The blood-feeding inhibition was high only in unwashed and used samples of PermaNet(r) Dual (A) (92.4%), PermaNet(r) Dual (B) (91.6%) and PermaNet(r) 3.0 (92.3%) (Fig. 4A). The mortality was very high (100%) in unwashed or washed and unused or used samples of all nets (PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0) (Fig. 4B), thus showing their good efficacy against this pyrethroid-susceptible _An. gambiae_ Kisumu strain. Additional file shows the Kisumu strain mortality with tunnel tests in more detail (see Additional file 4: Table S4). For the pyrethroid-resistant _An. gambiae s.l._, only washed and unused PermaNet(r) Dual (A) induced a strong blood-feeding inhibition (91.3%) being above the WHO tunnel cut-off of 90% (Fig. 5A). However, the mortality with all samples (unwashed or washed and unused) of PermaNet(r) Dual (85.2-94.9%) were higher compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 5B), and consistent with the higher efficacy of PermaNet(r) Dual against the free-flying pyrethroid-resistant _An. gambiae s.l._ Tiassale strain populations observed in the concurrent experimental hut trials. Additional file shows the pyrethroid-resistant Tiassale strain mortality with tunnel tests in more detail (see Additional file 5: Table S5).\n", - "\n", - "header: Background: Methods\n", - "\n", - "PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0, unwashed and washed (20 washes), were tested against free-flying pyrethroid-resistant _An. gambiae s.l._ in the experimental huts in Tiassale, Cote d'lvoire from March to August 2020. Complementary laboratory cone bioassays (daytime and 3-min exposure) and tunnel tests (nightly and 15-h exposure) were performed against pyrethroid-susceptible _An. gambiae_ sensu stricto (_S.S._) (Kisumu strain) and pyrethroid-resistant _An. gambiae s.l._ (Tiassale strain).\n", - "\n", - "header: Comparison of laboratory bioassay results with hut trial results\n", - "\n", - "Comparing the laboratory cone bioassay and tunnel test results with the experimental hut trial results with the same pyrethroid-resistant _An. gambiae s.l._ strain showed that these laboratory bioassays predicted the response in the huts for PermaNet(r) 3.0 and PermaNet(r) 2.0. Indeed, the unwashed and washed PermaNet(r) 3.0 and PermaNet(r) 2.0 induced relatively lower mortality in the pyrethroid-resistant _An. gambiae_ strain with the cone bioassays, the tunnel test and the hut trial. Focussing on the bioefficacy of PermaNet(r) Dual, the respective mortality rates in the cone, tunnel and hut were 14.0%, 84.5% and 94.9% for unwashed PermaNet(r) Dual (A), 24.0%, 86.5% and 90.2% for unwashed PermaNet(r) Dual (B), and 10.0%, 87.5% and 90.4% for washed PermaNet(r) Dual (B). This suggests that laboratory tunnel tests are more predictive of the performance of PermaNet(r) Dual in experimental huts. Additionally, there were correlations in the blood-feeding rates and blood-feeding inhibition between the tunnel test results and the hut trial results. The high mortality and strong blood-feeding inhibition of PermaNet(r) Dual in tunnel tests with the pyrethroid-resistant _An. gambiae_ Tiassale strain shows that the chlorfenapyr component of PermaNet(r) Dual provided good efficacy against pyrethroid-resistant _Anopheles_.\n", - "\n", - "header: Conclusion\n", - "\n", - "The deltamethrin-chlorfenapyr-coated PermaNet(r) Dual induced a high efficacy and performed better than the deltamethrin-PBO PermaNet(r) 3.0 and the deltamethrin-only PermaNet(r) 2.0, testing both unwashed and 20 times washed samples against the pyrethroid-susceptible and resistant strains of _An. gambiae s.l._ The inclusion of chlorfenapyr with deltamethrin in PermaNet(r) Dual net greatly improved protection and control of pyrethroid-resistant _An. gambiae_ populations. PermaNet(r) Dual thus represents a promising tool, with a high potential to reduce malaria transmission and provide community protection in areas compromised by mosquito vector resistance to pyrethroids.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "All relevant data are within the manuscript.\n", - "\n", - "header: Small-scale field evaluation of PermaNet(r): Abstract\n", - "\n", - "Dual (a long-lasting net coated with a mixture of chlorfenapyr and deltamethrin) against pyrethroid-resistant _Anopheles gambiae_ mosquitoes from Tiassale, Cote d'lvoire\n", - "\n", - "Julien Z. B. Zahouli\n", - "\n", - "Julien Z. B. Zahouli\n", - "\n", - "Julien.zahouli@crsrs.ci\n", - "\n", - "Constant A. V. Edi\n", - "\n", - "1Laurence A. Yao\n", - "\n", - "1Emmanuelle G. Lisro\n", - "\n", - "1Marc Adou\n", - "\n", - "1Inza Kone\n", - "\n", - "1Graham Small\n", - "\n", - "2Leanore D. Sternberg\n", - "\n", - "28Benjamin G. Koudou\n", - "\n", - "\n", - "\n", - "Due to the rapid expansion of pyrethroid-resistance in malaria vectors in Africa, Global Plan for insecticide Resistance Management (GIPRM) has recommended the development of long-lasting insecticidal nets (LLINs), containing insecticide mixtures of active ingredients with different modes of action to mitigate resistance and improve LLIN efficacy. This good laboratory practice (GLP) study evaluated the efficacy of the chlorfenapyr and deltamethrin-coated PermaNet(r) Dual, in comparison with the deltamethrin and synergismt piperonyl butoxide (PBO)-treated PermaNet(r) 3.0 and the deltamethrin-coated PermaNet(r) 2.0, against wild free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato (_S.I._), in experimental huts in Tiassale, Cote d'lvoire (West Africa).\n", - "\n", - "header: Supplementary Information\n", - "\n", - "The online version contains supplementary material available at [https://doi.org/10.11016/s12936-023-04455-z](https://doi.org/10.11016/s12936-023-04455-z).\n", - "\n", - "header: Background\n", - "\n", - "According to the latest World Malaria Report 2022 of the World Health Organization (WHO), there were 247 million malaria cases and 619,000 malaria deaths in 84 malaria endemic countries worldwide in 2021 [1, 2]. This represents about 13.4 million more cases in 2021 compared to 2019 attributable to disruptions to essential malaria services during the COVID-18 pandemic [1]. The WHO African Region, with an estimated 234 million cases in 2021, accounted for about 95% of global cases malaria [1]. The recent decline of malaria burden from 2000 to 2019 was largely due to the massive distribution and use of long-lasting insecticidal nets (LLINs) (2.5 billion LLINs were delivered from 2004 to 2021) for _Anopheles_ mosquito vector control [1]. The malaria burden reduction is now slowing down and is threatened by the spread of resistance to pyrethroids (78 of 88 endemic countries have detected resistance to at least one insecticide class reported to the WHO from 2010 to 2020) [1]. The WHO Global Plan for Insecticide Resistance Management (GPIRM) has recommended the development of LLINs with insecticide mixtures of active ingredients with different modes of action to mitigate resistance [3]. The WHO Global Technical Strategy (GTS) aims for a reduction of malaria case incidence and mortality rate of at least 40% by 2020, 75% by 2025 and 90% by 2030 from the 2015 baseline [1, 4]. To meet these targets, GTS has called for the development of new tools, with combined or more effective insecticide molecules to control insecticide-resistant _Anopheles_ vectors [4]. These new vector control tools must incorporate new insecticide molecules and/or insecticide mixtures containing at least two active ingredients with different modes of action for the management of malaria vector resistance to insecticides [1, 3].\n", - "\n", - "Malaria is endemic throughout Cote d'Ivoire and represents the leading cause of mortality and morbidity in the country. Several studies have shown a wide spread resistance in local _Anopheles_ to most of the insecticide classes currently used in malaria vector control (e.g. pyrethroids, DDT and carbamates) [5-8]. The existence of multiple mechanisms of resistance in the main vector, _Anopheles gambiae_ sensu lato (_s.l._) threatens the efficacy of vector control tools currently used in Cote d'Ivoire, including LLINs [9-11]. Meiwald et al. [11] found that pyrethroid resistance is associated with significant overexpression of _CYP6P4, CYP6P3,_ and _CYP6Z1_ in _Anopheles coluzzii_ in Cote d'Ivoire. High allelic frequencies of knock-down resistance (_kdr_) _L1014F_ mutation (range: 0.46-1), relatively low frequencies of the _ace-1R_ mutation in the acetylcholinesterase gene associated with target-site insensitivity to carbamates and organophosphates (<0.5), and elevated activity of insecticide detoxifying enzymes (mainly mixed function oxidases (MFOs), esterase and glutathione S-transferase (GST)), have been reported in Cote d'Ivoire [5, 7, 10]. Recent laboratory (WHO tube and CDC bottle) bioassays against local pyrethroid-resistant _An. gambiae_ from Cote d'Ivoire have shown that pyrethroids induce low mortality, whilst pre-exposure to the synergist piperonyl butoxide (PBO) increases the mortality but does not restore fully the susceptibility due to resistance [9]. However, the pyrrole insecticide chlorfenapyr induces higher mortality in resistant _An. gambiae_ compared with pyrethroids alone or combined with PBO in Cote d'Ivoire [9].\n", - "\n", - "The present good laboratory practice (GLP) study evaluated the bio-efficacy of a new candidate LLIN, PermaNet(r) Dual, against pyrethroid-resistant _An. gambiae s.l._ in comparison with the WHO Prequalification Unit, Vector Control Product Assessment Team (PQT/VCP) listed standard LLINs, PermaNet(r) 2.0 and PermaNet(r) 3.0, through the conduct of an experimental hut trial and laboratory bioassays in Tiassale, Cote d'Ivoire. PermaNet(r) Dual has a mixture of the pyrrole chlorfenapyr and the pyrethroid deltamethrin coated onto a polyester fabric. PermaNet(r) 3.0 is treated with deltamethrin and PBO, and PermaNet(r) 2.0 is treated with deltamethrin only. Chlorfenapyr is a pro-insecticide activated by the oxygenase function of cytochrome P450s and oxidative removal of the N-ethoxymethyl\n", - "group leads to a toxic form identified as CL 303,268. The toxic form uncouples oxidative phosphorylation in the mitochondria, resulting in disruption of the production of adenosine triphosphate and loss of energy, leading to cell dysfunction and ultimately death of the insect [12]. The WHO has received some resistance monitoring data for chlorfenapyr, but these data are insufficient to assess the potential presence of resistance to this insecticide [1]. Deltamethrin is a neurotoxic insecticide and has excito-repellent effects on mosquitoes. PBO, used on PermaNet(r) 3.0, is a synergist which inhibits mixed function oxidases, blocking the detoxification of pyrethroids and at least partially restoring pyrethroid susceptibility [1, 13]. Pyrethroid-resistant strains of _Anopheles_ have so far been found to be susceptible to chlorfenapyr [9, 14-18]. Thus, the hypothesis of the current study was that chlorfenapyr would kill the pyrethroid-resistant _An. gambiae_ population in Tiassale, and PermaNet(r) Dual would induce higher mortality compared to both PermaNet(r) 3.0 and PermaNet(r) 2.0 in the experimental huts, and the supplementary laboratory cone and tunnel bioassays could predict these hut trial outcomes.\n", - "\n", - "header: Supporting laboratory testing of net samples\n", - "\n", - "Standard WHO cone bioassays and tunnel tests were conducted with unwashed and washed nets under laboratory conditions, to predict their responses in the field experimental huts. The insecticide susceptible Kisumu strains and field-collected F0 generation of pyrethroid-resistant Tiassale strain of _An. gambiae_ were tested with samples (25 cm x 25 cm) cut from each of the eight net \n", - "types (unwashed and washed net samples) before and after their inclusion into the hut trial [23]. For the tunnel tests, tunnels were divided into two sections by netting samples held in a frame. Nine holes of 1 cm in diameter were cut in each net sample (with one hole located at the centre of the square, and the other eight equidistant and located 5 cm from the border), and the surface of netting available to the mosquitoes was 400 cm\\({}^{2}\\) (20 cm \\(\\times\\) 20 cm).\n", - "\n", - "For each type of net and wash status, 100 non-blood-fed, 2-5-day-old females per strain were subjected to 3-min exposure in cone bioassays in replicates of five mosquitoes per cone according to the WHO guidelines [22]. For the tunnel tests, 100 non-blood-fed, 5-8-day-old mosquito females per strain were subjected to a 15-h exposure overnight using guinea pig as host, following the WHO guidelines [23]. Testing and holding conditions were 27 +- 2 degC and 80 +- 10% relative humidity. The 60-min knockdown for cone bioassays, blood-feeding status for tunnel tests and 24, 48 and 72-h mortality for both methods were recorded.\n", - "\n", - "header: Results\n", - "\n", - "The outcomes of the current experimental hut trial showed that the parameters of the net efficacy against the pyrethroid-resistant _An. gambiae s.l._ Tiassale population varied as a function of net type and wash status, with the performance of PermaNet(r) Dual being better overall compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 1 and Table 1).\n", - "\n", - "header: Additional file 3: Table 53.\n", - "\n", - "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (Tissale strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", - "\n", - "header: Chemical analysis\n", - "\n", - "Pieces of netting were sampled from unwashed and washed PermaNet(r) Dual (A and B), PermaNet(r) 3.0 and PermaNet(r) 2.0 LLINs before and after being used in the hut trial, in accordance with the WHO protocol for chemical analysis [25]. All sampled net pieces were labelled and stored individually in aluminium foil at 3.7-4.2 degC. The net pieces were then shipped to the Vestergaard's ISO IEC17025 laboratory in Vietnam for chemical analysis of chlorfenapyr and deltamethrin. Deltamethrin and PBO contents were determined following the Collaborative International Pesticides Analytical Council Ltd (CIPAC) (i.e. ClPAC 33/LN/(M2)/3) methods [26]. Briefly, chlorfenapyr content was analysed using in-house method VCL-098-20 that was undergoing ClIPAC validation and was still to be published. Chlorfenapyr content was extracted from the PermaNet(r) Dual net using a mixture of n-hexane and 1,4-dioxane (95:5, v:v) solvents with an internal standard of dibutylphthalate added. The mixture was shaken by shaking machine to extract chlorfenapyr. Extracted solution was filtered through 0.45 mm Teflon membrane and analysed by a normal phase high performance liquid chromatography for chlorfenapyr concentration, detector UV 236 nm.\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Blood-feeding and personal protection\n", - "\n", - "The blood-feeding effect of the nets in wild pyrethroid-resistant _An. gambiae_ that entered the trial huts and personal protection are presented in Fig. 1A and Table 1. Before washing, the percentage blood-feeding with PernaNet(r) Dual (A) (36.7 +- 4.0%) did not differ significantly from PernaNet(r) Dual (B) (37.5 +- 4.4%) and PernaNet(r) 2.0 (55.7 +- 3.7%), but was significantly higher than PernaNet(r) 2.0 (31.3 +- 4.4%) (z = - 2.17; p = 0.030). The percentage blood-feeding for unwashed PernaNet(r) Dual (B) was similar to unwashed samples of PernaNet(r) 2.0 (z = 1.74; p = 0.081) and PernaNet(r) 3.0 (z = - 1.49; p = 0.136). Washing 20 times did not influence significantly the percentage blood-feeding in PernaNet(r) Dual (B) (z = 0.10; p = 0.921). After washing,\n", - "the percentage blood-feeding of PermaNet(r) Dual (B) (36.0 +- 3.7%) was substantially lower, but without significant differences when compared with PermaNet(r) 3.0 (57.7 +- 3.7%) (z = 1.71; p = 0.087), PermaNet(r) 2.0 (72.3 +- 3.2%) (z = 1.78; p = 0.076) and the untreated control net (z = 1.72; p = 0.085). For blood-feeding inhibition, unwashed PermaNet(r) Dual (A) (42.5 +- 6.8%) was similar to unwashed PermaNet(r) Dual (B) (41.4 +- 6.9%) (z = 0.25; p = 0.802) and washed PermaNet(r) Dual (B) (43.7 +- 4.8%) that was not affected by washing (z = - 0.41; p = 0.682). Compared with PermaNet(r) 3.0, the blood-feeding inhibition of PermaNet(r) Dual (B) was significantly higher before washing (z = - 0.72; p = 0.469), and significantly lower after washing (z = - 1.92; p = 0.045). However, both unwashed and washed PermaNet(r) Dual (B) provided, respectively, significantly higher blood-feeding inhibition than unwashed and washed PermaNet(r) 2.0 (all p < 0.05). The personal protection was similar between unwashed samples of PermaNet(r) Dual (A) (58.8 +- 3.5%) and PermaNet(r) Dual (B) (60.8 +- 3.8%) (z = - 0.04; p = 0.968). Unwashed PermaNet(r) Dual (B) resulted in a personal protection that was similar to unwashed PermaNet(r) 3.0 (62.9 +- 4.2%) (z = 0.21; p = 0.738), and significantly different from unwashed PermaNet(r) 2.0 (28.8 +- 1.9%) (z = 3.21; p = 0.001). With 20 washes, the personal protection with PermaNet(r) Dual (B) declined significantly from 60.8 +- 3.8% to 20.2 +- 1.1% (z = - 2.96; p = 0.003). However, washed PermaNet(r) Dual (B) provided significantly higher personal protection compared with their washed counterparts of PermaNet(r) 3.0 (9.8 +- 0.7%) (z = 2.89; p = 0.004) and PermaNet(r) 2.0 (- 32.6 +- 2.2%) (z = 2.93; p = 0.003).\n", - "\n", - "header: Additional file 2: Table 52.\n", - "\n", - "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (bisumu strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", - "\n", - "header: Conclusion\n", - "\n", - "The present small-scale GLP experimental hut study demonstrated that the deltamethrin- chlorfenapyr PermaNet(r) Dual net has high bio-efficacy, inducing significantly higher mortality and blood-feeding inhibition effects in the wild insecticide-resistant _An. gambiae s.l._ when compared with the deltamethrin-PBO PermaNet(r) 3.0 and deltamethrin-only PermaNet(r) 2.0. The inclusion of chlorfenapyr with pyrethroid in PermaNet(r) Dual net has greatly improved protection and control of free-flying wild pyrethroid-resistant _An. gambiae_ populations. The chlorfenapyr-deltamethrin-coated PermaNet(r) Dual net has great potential to reduce malaria transmission, particularly in areas compromised by high level of pyrethroid resistance in _Anopheles_ mosquitoes. Further validations in large-scale field trials are required to assess the effectiveness, the durability and the acceptability of this new tool for malaria vector control.\n", - "\n", - "header: Results\n", - "\n", - "PermaNet(r) Dual demonstrated significantly improved efficacy, compared to PermaNet(r) 3.0 and PermaNet(r) 2.0, against the pyrethroid-resistant _An. gambiae s.l._ Indeed, the experimental hut trial data showed that the mortality and blood-feeding inhibition in the wild pyrethroid-resistant _An. gambiae s.l._ were overall significantly higher with PermaNet(r) Dual compared with PermaNet(r) 3.0 and PermaNet(r) 2.0, for both unwashed and washed samples. The mortality with unwashed and washed samples were 93.6 +- 0.2% and 83.2 +- 0.9% for PermaNet(r) Dual, 37.5 +- 2.9% and 14.4 +- 3.3% for PermaNet(r) 3.0, and 7.4 +- 5.1% and 11.7 +- 3.4% for PermaNet(r) 2.0, respectively. Moreover, unwashed and washed samples produced the respective percentage blood-feeding inhibition of 41.4 +- 6.9% and 43.7 +- 4.8% with PermaNet(r) Dual, 51.0 +- 5.7% and 9.8 +- 3.6% with PermaNet(r) 3.0, and 12.8 +- 4.3% and - 13.0 +- 3.6% with PermaNet(r) 2.0. Overall, PermaNet(r) Dual also induced higher or similar deterrence, exophily and personal protection when compared with the standard PermaNet(r) 3.0 and PermaNet(r) 2.0 reference nets, with both unwashed and\n", - "washed net samples. In contrast to cone bioassays, tunnel tests predicted the efficacy of PermaNet(r) Dual seen in the current experimental hut trial.\n", - "\n", - "header: Outcomes measures\n", - "\n", - "The following entomological outcomes were used to evaluate the efficacy of each treatment arm in the current experimental hut trial [23]:\n", - "\n", - "1. Deterrence: proportional reduction in the number of mosquitoes caught in treated hut relative to the number caught in the control hut.\n", - "2. Exiting rate: percentage of the mosquitoes collected from the veranda trap out of all mosquitoes collected.\n", - "3. Induced exophily: proportional reduction of mosquitoes found in the exit and veranda traps relative to control hut.\n", - "4. Blood-feeding: percentage of blood-fed mosquitoes relative to the total collected.\n", - "5. Blood-feeding inhibition: proportional reduction in blood feeding percentage in treated huts relative to the control hut.\n", - "6. Mortality: percentage of dead mosquitoes found dead in hut in the morning (immediate mortality) or after being caught alive and dead during holding (delayed mortality) in treatment huts out of mosquitoes collected, and corrected for control mortality.\n", - "7. Personal protection: the proportional reduction in the number of blood-fed mosquitoes in the treated huts relative to the number of blood-fed mosquitoes in the untreated control.\n", - "8. Killing effect: the proportional reduction in the number of mosquitoes killed in the treated huts relative to the number of mosquitoes killed in the untreated control.\n", - "\n", - "The formulas of key entomological outcomes measured in this study are [23]:\n", - "\n", - "\\[\\text{Deterrence}(\\%) = \\frac{\\text{Nc} - \\text{Nt}}{\\text{Nc}} \\times 100 = \\left( 1 - \\frac{\\text{Nt}}{\\text{Nc}} \\right) \\times 100,\\]\n", - "\n", - "where Nt the total number of mosquitoes collected in the treatment hut and veranda/exit traps and Nc the total number of mosquitoes in the control hut and veranda/exit traps.\n", - "\n", - "\\[\\text{Exiting}\\,\\text{rate}(\\%) = \\frac{\\text{n}}{\\text{N}} \\times 100,\\]\n", - "\n", - "where n is the number of mosquitoes from veranda and window traps, while N is the total number of mosquitoes collected in the hut.\n", - "\n", - "\\[\\text{Induced}\\,\\text{exophily}(\\%) = \\frac{\\text{Pt} - \\text{Pc}}{\\text{Pc}} \\times 100\\] \\[= \\left( \\frac{\\text{Pt}}{\\text{Pc}} - 1 \\right) \\times 100,\\]\n", - "\n", - "where Pt is the proportion of mosquitoes from veranda and window traps of treated hut while Pc is the number of mosquitoes from veranda and window traps of untreated control hut.\n", - "\n", - "\\[\\text{Blood} - \\text{feeding}\\,\\text{inhibition}(\\%) = \\frac{\\text{Pc} - \\text{Pt}}{\\text{Pc}} \\times 100,\\]\n", - "\n", - "where Pt the proportion of blood-fed mosquitoes in the treatment hut, and Pc the proportion of blood-fed mosquitoes in the control hut.\n", - "\n", - "\\[\\text{Personal}\\,\\text{protection}(\\%) = \\frac{\\text{Bc} - \\text{Bt}}{\\text{Bc}} \\times 100\\] \\[= \\left( 1 - \\frac{\\text{Bt}}{\\text{Bc}} \\right) \\times 100,\\]\n", - "\n", - "where Bt the number of blood-fed mosquitoes in the treatment hut and Bc the number of blood-fed mosquitoes in the control hut.\n", - "\n", - "\\[\\text{Killing}\\,\\text{effect}(\\%) = \\frac{\\text{Kt} - \\text{Kc}}{\\text{Tc}} \\times 100,\\]\n", - "\n", - "where Kt is the number of mosquitoes killed in the treatment huts, Kc is the number of mosquitoes killed in the control huts, and Tc is the total number of mosquitoes collected from the control.\n", - "\n", - "header: Discussion\n", - "\n", - "The current study evaluated the efficacy of PermaNet(r) Dual, a new candidate net coated with a mixture of chlorfenapyr and deltamethrin, against _An. gambiae_ in a small-scale GLP but study in Tiassale, Cote d'Ivoire, with supporting exploratory laboratory cone and tunnel\n", - "\n", - "Fig. 4: Mean blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the susceptible _Anopheles gambiae_ s.s. Kisumu strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassale, Côte d’Ivoire. Error bars show the standard error of the mean\n", - "bioassays. WHO-prequalified PermaNet(r) 3.0 (co-treated with deltamethrin and PBO) and PermaNet(r) 2.0 (treated with deltamethrin only) were used as the reference nets. In this GLP but study, PermaNet(r) Dual performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0, in terms of mortality and blood-feeding inhibition, for both unwashed and unstressed cases, respectively.\n", - "\n", - "Fig. 5: Mean of blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the pyrethroid-resistant _Anopheles gambiae s1_. Tassale strain exposed to net samples using tunnel tests before and after experimental hut trial in Tassale, Côte d’thovie. Error bars show the standard error of the mean \n", - "and washed samples. Unlike the cone bioassays, the tunnel tests successfully confirmed the field efficacy of the nets. Briefly, this hut trial showed the benefit of mixing deltamethrin and chlorfenapyr together in a long-lasting net, PermaNet(r) Dual, for an effective control of pyrethroid-resistant _Anopheles._\n", - "\n", - "The current experimental hut study demonstrated that PermaNet(r) Dual had increased efficacy against highly pyrethroid-resistant _An. gambiae._ Indeed, hut mortality of _An. gambiae_ Tiassale strain was significantly higher with PermaNet(r) Dual (>83%) in comparison with PermaNet(r) 3.0 (<38%) and PermaNet(r) 2.0 (<12%), for both unwashed and 20 times washed samples (Fig. 1B and Table 1). This PermaNet(r) Dual efficacy was similar to chlorfenapyr and alpha-cypermethrin mixture-coated Intercept G2 in West and East Africa [16, 17, 27, 28, 29, 30, 31, 32]. The good performance of PermaNet(r) Dual might be attributed to the susceptibility of the highly pyrethroid-resistant _An. gambiae_ s.l. to chlorfenapyr [9, 11]. Due to the novel mode of action of chlorfenapyr, the present pyrethroid-resistance mechanisms did not provide any cross-resistance to this insecticide [12]. Indeed, chlorfenapyr-treated tool has been shown to control a number of different multiple-insecticide-resistant _Anopheles_ populations [14, 15, 27, 28, 29, 30, 31, 32].\n", - "\n", - "This hut study showed that the percentage blood-feeding in wild pyrethroid-resistant _An. gambiae_ population was lower for PermaNet(r) Dual (unwashed and washed) compared with PermaNet(r) 2.0 (unwashed and washed) and washed PermaNet(r) 3.0, but slightly higher than\n", - "unwashed PermaNet(r) 3.0 (Fig. 1A and Table 1). Likewise, blood-feeding inhibition with PermaNet(r) Dual was comparable or stronger than with PermaNet(r) 2.0 and washed PermaNet(r) 3.0. This PermaNet(r) Dual blood-feeding inhibition outcome is consistent with that caused by Intercept G2 in earlier hut trials in West Africa [27-31], and may be explained by the irritant effects of the deltamethrin [32-35]. While unwashed PermaNet(r) Dual and PermaNet(r) 3.0 produced similar levels of blood-feeding inhibition, the 20 times washed PermaNet(r) Dual induced a statistically greater blood-feeding inhibition in comparison with both PermaNet(r) 3.0 and PermaNet(r) 2.0 washed 20 times. This suggests that PermaNet(r) Dual may have performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0 over time. PermaNet(r) Dual effectiveness for inhibiting blood-feeding could imply its good potential for reducing the human-biting and blood-feeding, adding value into its killing effects in malaria vectors.\n", - "\n", - "In the present hut study, unwashed PermaNet(r) Dual deterrence effect against the wild pyrethroid-resistant _An. gambiae_ population was comparable to that recorded in PermaNet(r) 2.0 and PermaNet(r) 3.0. The deltamethrin component of PermaNet(r) Dual has a deterrence effect and may have induced exiting in mosquitoes. However, the 20 times washed PermaNet(r) Dual did not have a deterrence effect (Table 1), probably due to a reduction of the chemical contents (Table 2). A dipped chlorfenapyr net did seem to have a deterrence effect, but did not have a significant effect on exiting rates in West Africa [15, 16, 26-31]. The higher deterrence effect may be due to both the chlorfenapyr and deltamethrin components, but higher exiting rate would likely be due only to the deltamethrin component. Thus, PermaNet(r) Dual may have both deterrent and excito-repellency effects, providing personal protection against pyrethroid-resistant _An. gambiae_ mosquitoes, and reducing human-vector contacts, which may, in turn, lead to an increased user acceptance [36].\n", - "\n", - "While standard laboratory cone bioassays failed to predict PermaNet(r) Dual efficacy against pyrethroid-resistant _An. gambiae s.l.,_ tunnel tests successfully predicted its efficacy against the same strain in the semi-field experimental huts. Both cone and tunnel bioassays met the WHO criteria [44], with the susceptible _An. gambiae s.s._ Kisumu strain. However, _An. gambiae s.s._ Kisumu strain mortality against unwashed and used PermaNet(r) Dual (A) was lower (34%) with cone bioassay (Fig. 2B) probably due to the reduction of the chemical bioavailability on netting fibre surface of net samples tested, or the inappropriateness of cone bioassay method for evaluation of the chlorfenapyr-coated PermaNet(r) Dual as the mortality was higher (100%) with tunnel test (Fig. 4B). With the wild pyrethroid-resistant _An. gambiae s.l._ Tiassale strain, only the tunnel tests achieved high efficacy that was consistent with that observed in the huts with PermaNet(r) Dual. The difference in PermaNet(r) Dual efficacy between both _Anopheles_ Kiumu and Tiassale strains may be explained by the difference in the levels of their resistance to insecticides. However, the lower efficacy of PermaNet(r) Dual against pyrethroid-resistant _An. gambiae s.l._ with cone bioassays (daytime and 3-min exposure) compared with tunnel tests (night-time and 15-h exposure) may be attributable to the slow mode of action of chlorfenapyr and that mosquitoes need to be metabolically active for the activation of the chlorfenapyr pro-insecticide [12, 13, 37]. Indeed, chlorfenapyr has a previously been observed to have a slower action and delayed toxic activity of 2-3 days post-exposure compared to other insecticides (pyrethroids and organophosphates) used in mosquito vector control [14, 28, 29]. The cone bioassay method was developed to assess the bioefficacy of pyrethroid-only LLINs, and the use of this method to test LLINs containing non-neurotoxic insecticides, such as chlorfenapyr, may not necessarily be predictive of field impact, even with increased exposure time of mosquitoes inside the cones [16, 27]. In contrast, the tunnel test results with pyrethroid-resistant _An. gambiae s.l._ Tiassale strain (field-collected F0 generation) were more predictive of PermaNet(r) Dual efficacy in huts, as observed for other chlorfenapyr-coated nets, such as Interceptor(r) G2 [16, 27, 28]. Tunnel tests provide an increased exposure time of mosquitoes to the LLIN samples being tested, and being an overnight exposure. As the female mosquitoes in the tunnel tests are also exhibiting host-seeking behaviour and are, therefore, metabolically active, the activation of chlorfenapyr following tarsal pickup by mosquitoes may be more effective. The tunnel test was a better predictor of PermaNet(r) Dual field efficacy because exposure occurred at night when host-seeking mosquitoes are more vulnerable to chlorfenapyr. Tunnel test thus is a more reliable technique to assess the efficacy of a chlorfenapyr-treated net prior to field trials against free-flying mosquitoes [16, 38, 39].\n", - "\n", - "In PermaNet(r) Dual, deltamethrin and chlorfenapyr contents varied slightly, but complied with the dose interval limits of target specification [23]. This revealed a good homogeneity of the active ingredients' distribution over and a good retention of these active ingredients in PermaNet(r) Dual, thus resulting in high and similar mortality and blood-feeding inhibition between unwashed samples of PermaNet(r) Dual (A) and PermaNet(r) Dual (B). The reduction of chemical contents due to the loss of chlorfenapyr and deltamethrin with 20 washes had no apparent effect on PermaNet(r) Dual efficacy as the washed samples were still producing high mortality against the pyrethroid-resistant mosquitoes. Overall,\n", - "PernaNet(r) Dual chemical bioavailability was sufficient and produced high mortality in pyrethroid-resistant _Anopheles_ mosquitoes after 20 standardized washes (corresponding to a 3-year use) and over the hut trial.\n", - "\n", - "The high vector mortality and personal protection effect of the PernaNet(r) Dual found in this study are the desired outcomes of any vector control tool. The high mortality effects and the additive blood-feeding inhibition impacts induced by PernaNet(r) Dual in this hut trial are expected to substantially diminish the malaria vector density and biting rates in the field, and hence the transmission of malaria in the areas where vectors are resistant to insecticides [40-47]. Additionally, PernaNet(r) Dual performed better than the reference PernaNet(r) 3.0 and PernaNet(r) 2.0 nets, when washed 20 times, thus meeting the WHO hut trial criteria [23].\n", - "\n", - "However, these results need to be further validated in a large-scale field trial to assess the durability and acceptability of this new tool for malaria vector control [48-50]. A community trial would be the best way to evaluate the community level effect of this promising candidate net (i.e. PernaNet(r) Dual) against malaria transmission, by monitoring entomological infection rate, _Plasmodium_ prevalence and disease incidence [48-50]. Such a community trial could be a randomized controlled trial as with dual-active-ingredient LLINs (e.g. Interceptor G2) in Tanzania [49], soon in Benin [48, 50], and the pilot deployments that are part of the New Nets Project led by PATH [51]. Furthermore, PernaNet(r) Dual should be tested against wild populations of _Anopheles funestus_[32], or other main or secondary vectors of malaria in Africa [52-56]. Ultimately, in the present study, the series of hut and laboratory tests demonstrated that the chlorfenapyr component of PernaNet(r) Dual could make a major contribution to controlling the pyrethroid-resistant _An. gambiae_ populations. Furthermore, there were no adverse effects reported among hut sleepers and mosquito collectors during the trial in the huts where PernaNet(r) Dual were used, and this may possibly increase the rate of future user acceptability and improve the usage of this net for malaria vector control.\n", - "\n", - "header: Additional file 55.\n", - "\n", - "Up to 72-h mortality in multiple-resistant populations of _Anopheles gambiae s.l._ (Tissale strain) exposed to long-lasting insecticidal nets using tunnel tests before and after the experimental hut trial.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Tunnel test\n", - "\n", - "The tunnel test outcomes confirmed the cone bioassay results for the susceptible _An. gambiae s.s._ Kisumu strain, with strong blood-feeding inhibition and high mortality in all nets being above the WHO tunnel test thresholds (>= 90% blood-feeding inhibition or >= 80% mortality) (Fig. 4). The blood-feeding inhibition was high only in unwashed and used samples of PermaNet(r) Dual (A) (92.4%), PermaNet(r) Dual (B) (91.6%) and PermaNet(r) 3.0 (92.3%) (Fig. 4A). The mortality was very high (100%) in unwashed or washed and unused or used samples of all nets (PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0) (Fig. 4B), thus showing their good efficacy against this pyrethroid-susceptible _An. gambiae_ Kisumu strain. Additional file shows the Kisumu strain mortality with tunnel tests in more detail (see Additional file 4: Table S4). For the pyrethroid-resistant _An. gambiae s.l._, only washed and unused PermaNet(r) Dual (A) induced a strong blood-feeding inhibition (91.3%) being above the WHO tunnel cut-off of 90% (Fig. 5A). However, the mortality with all samples (unwashed or washed and unused) of PermaNet(r) Dual (85.2-94.9%) were higher compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 5B), and consistent with the higher efficacy of PermaNet(r) Dual against the free-flying pyrethroid-resistant _An. gambiae s.l._ Tiassale strain populations observed in the concurrent experimental hut trials. Additional file shows the pyrethroid-resistant Tiassale strain mortality with tunnel tests in more detail (see Additional file 5: Table S5).\n", - "\n", - "header: Comparison of laboratory bioassay results with hut trial results\n", - "\n", - "Comparing the laboratory cone bioassay and tunnel test results with the experimental hut trial results with the same pyrethroid-resistant _An. gambiae s.l._ strain showed that these laboratory bioassays predicted the response in the huts for PermaNet(r) 3.0 and PermaNet(r) 2.0. Indeed, the unwashed and washed PermaNet(r) 3.0 and PermaNet(r) 2.0 induced relatively lower mortality in the pyrethroid-resistant _An. gambiae_ strain with the cone bioassays, the tunnel test and the hut trial. Focussing on the bioefficacy of PermaNet(r) Dual, the respective mortality rates in the cone, tunnel and hut were 14.0%, 84.5% and 94.9% for unwashed PermaNet(r) Dual (A), 24.0%, 86.5% and 90.2% for unwashed PermaNet(r) Dual (B), and 10.0%, 87.5% and 90.4% for washed PermaNet(r) Dual (B). This suggests that laboratory tunnel tests are more predictive of the performance of PermaNet(r) Dual in experimental huts. Additionally, there were correlations in the blood-feeding rates and blood-feeding inhibition between the tunnel test results and the hut trial results. The high mortality and strong blood-feeding inhibition of PermaNet(r) Dual in tunnel tests with the pyrethroid-resistant _An. gambiae_ Tiassale strain shows that the chlorfenapyr component of PermaNet(r) Dual provided good efficacy against pyrethroid-resistant _Anopheles_.\n", - "\n", - "header: Chemical analysis\n", - "\n", - "Pieces of netting were sampled from unwashed and washed PermaNet(r) Dual (A and B), PermaNet(r) 3.0 and PermaNet(r) 2.0 LLINs before and after being used in the hut trial, in accordance with the WHO protocol for chemical analysis [25]. All sampled net pieces were labelled and stored individually in aluminium foil at 3.7-4.2 degC. The net pieces were then shipped to the Vestergaard's ISO IEC17025 laboratory in Vietnam for chemical analysis of chlorfenapyr and deltamethrin. Deltamethrin and PBO contents were determined following the Collaborative International Pesticides Analytical Council Ltd (CIPAC) (i.e. ClPAC 33/LN/(M2)/3) methods [26]. Briefly, chlorfenapyr content was analysed using in-house method VCL-098-20 that was undergoing ClIPAC validation and was still to be published. Chlorfenapyr content was extracted from the PermaNet(r) Dual net using a mixture of n-hexane and 1,4-dioxane (95:5, v:v) solvents with an internal standard of dibutylphthalate added. The mixture was shaken by shaking machine to extract chlorfenapyr. Extracted solution was filtered through 0.45 mm Teflon membrane and analysed by a normal phase high performance liquid chromatography for chlorfenapyr concentration, detector UV 236 nm.\n", - "\n", - "header: Supplementary Information\n", - "\n", - "The online version contains supplementary material available at [https://doi.org/10.11016/s12936-023-04455-z](https://doi.org/10.11016/s12936-023-04455-z).\n", - "\n", - "header: Background: Methods\n", - "\n", - "PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0, unwashed and washed (20 washes), were tested against free-flying pyrethroid-resistant _An. gambiae s.l._ in the experimental huts in Tiassale, Cote d'lvoire from March to August 2020. Complementary laboratory cone bioassays (daytime and 3-min exposure) and tunnel tests (nightly and 15-h exposure) were performed against pyrethroid-susceptible _An. gambiae_ sensu stricto (_S.S._) (Kisumu strain) and pyrethroid-resistant _An. gambiae s.l._ (Tiassale strain).\n", - "\n", - "header: Small-scale field evaluation of PermaNet(r): Abstract\n", - "\n", - "Dual (a long-lasting net coated with a mixture of chlorfenapyr and deltamethrin) against pyrethroid-resistant _Anopheles gambiae_ mosquitoes from Tiassale, Cote d'lvoire\n", - "\n", - "Julien Z. B. Zahouli\n", - "\n", - "Julien Z. B. Zahouli\n", - "\n", - "Julien.zahouli@crsrs.ci\n", - "\n", - "Constant A. V. Edi\n", - "\n", - "1Laurence A. Yao\n", - "\n", - "1Emmanuelle G. Lisro\n", - "\n", - "1Marc Adou\n", - "\n", - "1Inza Kone\n", - "\n", - "1Graham Small\n", - "\n", - "2Leanore D. Sternberg\n", - "\n", - "28Benjamin G. Koudou\n", - "\n", - "\n", - "\n", - "Due to the rapid expansion of pyrethroid-resistance in malaria vectors in Africa, Global Plan for insecticide Resistance Management (GIPRM) has recommended the development of long-lasting insecticidal nets (LLINs), containing insecticide mixtures of active ingredients with different modes of action to mitigate resistance and improve LLIN efficacy. This good laboratory practice (GLP) study evaluated the efficacy of the chlorfenapyr and deltamethrin-coated PermaNet(r) Dual, in comparison with the deltamethrin and synergismt piperonyl butoxide (PBO)-treated PermaNet(r) 3.0 and the deltamethrin-coated PermaNet(r) 2.0, against wild free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato (_S.I._), in experimental huts in Tiassale, Cote d'lvoire (West Africa).\n", - "\n", - "header: Outcomes measures\n", - "\n", - "The following entomological outcomes were used to evaluate the efficacy of each treatment arm in the current experimental hut trial [23]:\n", - "\n", - "1. Deterrence: proportional reduction in the number of mosquitoes caught in treated hut relative to the number caught in the control hut.\n", - "2. Exiting rate: percentage of the mosquitoes collected from the veranda trap out of all mosquitoes collected.\n", - "3. Induced exophily: proportional reduction of mosquitoes found in the exit and veranda traps relative to control hut.\n", - "4. Blood-feeding: percentage of blood-fed mosquitoes relative to the total collected.\n", - "5. Blood-feeding inhibition: proportional reduction in blood feeding percentage in treated huts relative to the control hut.\n", - "6. Mortality: percentage of dead mosquitoes found dead in hut in the morning (immediate mortality) or after being caught alive and dead during holding (delayed mortality) in treatment huts out of mosquitoes collected, and corrected for control mortality.\n", - "7. Personal protection: the proportional reduction in the number of blood-fed mosquitoes in the treated huts relative to the number of blood-fed mosquitoes in the untreated control.\n", - "8. Killing effect: the proportional reduction in the number of mosquitoes killed in the treated huts relative to the number of mosquitoes killed in the untreated control.\n", - "\n", - "The formulas of key entomological outcomes measured in this study are [23]:\n", - "\n", - "\\[\\text{Deterrence}(\\%) = \\frac{\\text{Nc} - \\text{Nt}}{\\text{Nc}} \\times 100 = \\left( 1 - \\frac{\\text{Nt}}{\\text{Nc}} \\right) \\times 100,\\]\n", - "\n", - "where Nt the total number of mosquitoes collected in the treatment hut and veranda/exit traps and Nc the total number of mosquitoes in the control hut and veranda/exit traps.\n", - "\n", - "\\[\\text{Exiting}\\,\\text{rate}(\\%) = \\frac{\\text{n}}{\\text{N}} \\times 100,\\]\n", - "\n", - "where n is the number of mosquitoes from veranda and window traps, while N is the total number of mosquitoes collected in the hut.\n", - "\n", - "\\[\\text{Induced}\\,\\text{exophily}(\\%) = \\frac{\\text{Pt} - \\text{Pc}}{\\text{Pc}} \\times 100\\] \\[= \\left( \\frac{\\text{Pt}}{\\text{Pc}} - 1 \\right) \\times 100,\\]\n", - "\n", - "where Pt is the proportion of mosquitoes from veranda and window traps of treated hut while Pc is the number of mosquitoes from veranda and window traps of untreated control hut.\n", - "\n", - "\\[\\text{Blood} - \\text{feeding}\\,\\text{inhibition}(\\%) = \\frac{\\text{Pc} - \\text{Pt}}{\\text{Pc}} \\times 100,\\]\n", - "\n", - "where Pt the proportion of blood-fed mosquitoes in the treatment hut, and Pc the proportion of blood-fed mosquitoes in the control hut.\n", - "\n", - "\\[\\text{Personal}\\,\\text{protection}(\\%) = \\frac{\\text{Bc} - \\text{Bt}}{\\text{Bc}} \\times 100\\] \\[= \\left( 1 - \\frac{\\text{Bt}}{\\text{Bc}} \\right) \\times 100,\\]\n", - "\n", - "where Bt the number of blood-fed mosquitoes in the treatment hut and Bc the number of blood-fed mosquitoes in the control hut.\n", - "\n", - "\\[\\text{Killing}\\,\\text{effect}(\\%) = \\frac{\\text{Kt} - \\text{Kc}}{\\text{Tc}} \\times 100,\\]\n", - "\n", - "where Kt is the number of mosquitoes killed in the treatment huts, Kc is the number of mosquitoes killed in the control huts, and Tc is the total number of mosquitoes collected from the control.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "All relevant data are within the manuscript.\n", - "\n", - "header: Conclusion\n", - "\n", - "The deltamethrin-chlorfenapyr-coated PermaNet(r) Dual induced a high efficacy and performed better than the deltamethrin-PBO PermaNet(r) 3.0 and the deltamethrin-only PermaNet(r) 2.0, testing both unwashed and 20 times washed samples against the pyrethroid-susceptible and resistant strains of _An. gambiae s.l._ The inclusion of chlorfenapyr with deltamethrin in PermaNet(r) Dual net greatly improved protection and control of pyrethroid-resistant _An. gambiae_ populations. PermaNet(r) Dual thus represents a promising tool, with a high potential to reduce malaria transmission and provide community protection in areas compromised by mosquito vector resistance to pyrethroids.\n", - "\n", - "header: Background\n", - "\n", - "According to the latest World Malaria Report 2022 of the World Health Organization (WHO), there were 247 million malaria cases and 619,000 malaria deaths in 84 malaria endemic countries worldwide in 2021 [1, 2]. This represents about 13.4 million more cases in 2021 compared to 2019 attributable to disruptions to essential malaria services during the COVID-18 pandemic [1]. The WHO African Region, with an estimated 234 million cases in 2021, accounted for about 95% of global cases malaria [1]. The recent decline of malaria burden from 2000 to 2019 was largely due to the massive distribution and use of long-lasting insecticidal nets (LLINs) (2.5 billion LLINs were delivered from 2004 to 2021) for _Anopheles_ mosquito vector control [1]. The malaria burden reduction is now slowing down and is threatened by the spread of resistance to pyrethroids (78 of 88 endemic countries have detected resistance to at least one insecticide class reported to the WHO from 2010 to 2020) [1]. The WHO Global Plan for Insecticide Resistance Management (GPIRM) has recommended the development of LLINs with insecticide mixtures of active ingredients with different modes of action to mitigate resistance [3]. The WHO Global Technical Strategy (GTS) aims for a reduction of malaria case incidence and mortality rate of at least 40% by 2020, 75% by 2025 and 90% by 2030 from the 2015 baseline [1, 4]. To meet these targets, GTS has called for the development of new tools, with combined or more effective insecticide molecules to control insecticide-resistant _Anopheles_ vectors [4]. These new vector control tools must incorporate new insecticide molecules and/or insecticide mixtures containing at least two active ingredients with different modes of action for the management of malaria vector resistance to insecticides [1, 3].\n", - "\n", - "Malaria is endemic throughout Cote d'Ivoire and represents the leading cause of mortality and morbidity in the country. Several studies have shown a wide spread resistance in local _Anopheles_ to most of the insecticide classes currently used in malaria vector control (e.g. pyrethroids, DDT and carbamates) [5-8]. The existence of multiple mechanisms of resistance in the main vector, _Anopheles gambiae_ sensu lato (_s.l._) threatens the efficacy of vector control tools currently used in Cote d'Ivoire, including LLINs [9-11]. Meiwald et al. [11] found that pyrethroid resistance is associated with significant overexpression of _CYP6P4, CYP6P3,_ and _CYP6Z1_ in _Anopheles coluzzii_ in Cote d'Ivoire. High allelic frequencies of knock-down resistance (_kdr_) _L1014F_ mutation (range: 0.46-1), relatively low frequencies of the _ace-1R_ mutation in the acetylcholinesterase gene associated with target-site insensitivity to carbamates and organophosphates (<0.5), and elevated activity of insecticide detoxifying enzymes (mainly mixed function oxidases (MFOs), esterase and glutathione S-transferase (GST)), have been reported in Cote d'Ivoire [5, 7, 10]. Recent laboratory (WHO tube and CDC bottle) bioassays against local pyrethroid-resistant _An. gambiae_ from Cote d'Ivoire have shown that pyrethroids induce low mortality, whilst pre-exposure to the synergist piperonyl butoxide (PBO) increases the mortality but does not restore fully the susceptibility due to resistance [9]. However, the pyrrole insecticide chlorfenapyr induces higher mortality in resistant _An. gambiae_ compared with pyrethroids alone or combined with PBO in Cote d'Ivoire [9].\n", - "\n", - "The present good laboratory practice (GLP) study evaluated the bio-efficacy of a new candidate LLIN, PermaNet(r) Dual, against pyrethroid-resistant _An. gambiae s.l._ in comparison with the WHO Prequalification Unit, Vector Control Product Assessment Team (PQT/VCP) listed standard LLINs, PermaNet(r) 2.0 and PermaNet(r) 3.0, through the conduct of an experimental hut trial and laboratory bioassays in Tiassale, Cote d'Ivoire. PermaNet(r) Dual has a mixture of the pyrrole chlorfenapyr and the pyrethroid deltamethrin coated onto a polyester fabric. PermaNet(r) 3.0 is treated with deltamethrin and PBO, and PermaNet(r) 2.0 is treated with deltamethrin only. Chlorfenapyr is a pro-insecticide activated by the oxygenase function of cytochrome P450s and oxidative removal of the N-ethoxymethyl\n", - "group leads to a toxic form identified as CL 303,268. The toxic form uncouples oxidative phosphorylation in the mitochondria, resulting in disruption of the production of adenosine triphosphate and loss of energy, leading to cell dysfunction and ultimately death of the insect [12]. The WHO has received some resistance monitoring data for chlorfenapyr, but these data are insufficient to assess the potential presence of resistance to this insecticide [1]. Deltamethrin is a neurotoxic insecticide and has excito-repellent effects on mosquitoes. PBO, used on PermaNet(r) 3.0, is a synergist which inhibits mixed function oxidases, blocking the detoxification of pyrethroids and at least partially restoring pyrethroid susceptibility [1, 13]. Pyrethroid-resistant strains of _Anopheles_ have so far been found to be susceptible to chlorfenapyr [9, 14-18]. Thus, the hypothesis of the current study was that chlorfenapyr would kill the pyrethroid-resistant _An. gambiae_ population in Tiassale, and PermaNet(r) Dual would induce higher mortality compared to both PermaNet(r) 3.0 and PermaNet(r) 2.0 in the experimental huts, and the supplementary laboratory cone and tunnel bioassays could predict these hut trial outcomes.\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Supporting laboratory testing of net samples\n", - "\n", - "Standard WHO cone bioassays and tunnel tests were conducted with unwashed and washed nets under laboratory conditions, to predict their responses in the field experimental huts. The insecticide susceptible Kisumu strains and field-collected F0 generation of pyrethroid-resistant Tiassale strain of _An. gambiae_ were tested with samples (25 cm x 25 cm) cut from each of the eight net \n", - "types (unwashed and washed net samples) before and after their inclusion into the hut trial [23]. For the tunnel tests, tunnels were divided into two sections by netting samples held in a frame. Nine holes of 1 cm in diameter were cut in each net sample (with one hole located at the centre of the square, and the other eight equidistant and located 5 cm from the border), and the surface of netting available to the mosquitoes was 400 cm\\({}^{2}\\) (20 cm \\(\\times\\) 20 cm).\n", - "\n", - "For each type of net and wash status, 100 non-blood-fed, 2-5-day-old females per strain were subjected to 3-min exposure in cone bioassays in replicates of five mosquitoes per cone according to the WHO guidelines [22]. For the tunnel tests, 100 non-blood-fed, 5-8-day-old mosquito females per strain were subjected to a 15-h exposure overnight using guinea pig as host, following the WHO guidelines [23]. Testing and holding conditions were 27 +- 2 degC and 80 +- 10% relative humidity. The 60-min knockdown for cone bioassays, blood-feeding status for tunnel tests and 24, 48 and 72-h mortality for both methods were recorded.\n", - "\n", - "header: Blood-feeding and personal protection\n", - "\n", - "The blood-feeding effect of the nets in wild pyrethroid-resistant _An. gambiae_ that entered the trial huts and personal protection are presented in Fig. 1A and Table 1. Before washing, the percentage blood-feeding with PernaNet(r) Dual (A) (36.7 +- 4.0%) did not differ significantly from PernaNet(r) Dual (B) (37.5 +- 4.4%) and PernaNet(r) 2.0 (55.7 +- 3.7%), but was significantly higher than PernaNet(r) 2.0 (31.3 +- 4.4%) (z = - 2.17; p = 0.030). The percentage blood-feeding for unwashed PernaNet(r) Dual (B) was similar to unwashed samples of PernaNet(r) 2.0 (z = 1.74; p = 0.081) and PernaNet(r) 3.0 (z = - 1.49; p = 0.136). Washing 20 times did not influence significantly the percentage blood-feeding in PernaNet(r) Dual (B) (z = 0.10; p = 0.921). After washing,\n", - "the percentage blood-feeding of PermaNet(r) Dual (B) (36.0 +- 3.7%) was substantially lower, but without significant differences when compared with PermaNet(r) 3.0 (57.7 +- 3.7%) (z = 1.71; p = 0.087), PermaNet(r) 2.0 (72.3 +- 3.2%) (z = 1.78; p = 0.076) and the untreated control net (z = 1.72; p = 0.085). For blood-feeding inhibition, unwashed PermaNet(r) Dual (A) (42.5 +- 6.8%) was similar to unwashed PermaNet(r) Dual (B) (41.4 +- 6.9%) (z = 0.25; p = 0.802) and washed PermaNet(r) Dual (B) (43.7 +- 4.8%) that was not affected by washing (z = - 0.41; p = 0.682). Compared with PermaNet(r) 3.0, the blood-feeding inhibition of PermaNet(r) Dual (B) was significantly higher before washing (z = - 0.72; p = 0.469), and significantly lower after washing (z = - 1.92; p = 0.045). However, both unwashed and washed PermaNet(r) Dual (B) provided, respectively, significantly higher blood-feeding inhibition than unwashed and washed PermaNet(r) 2.0 (all p < 0.05). The personal protection was similar between unwashed samples of PermaNet(r) Dual (A) (58.8 +- 3.5%) and PermaNet(r) Dual (B) (60.8 +- 3.8%) (z = - 0.04; p = 0.968). Unwashed PermaNet(r) Dual (B) resulted in a personal protection that was similar to unwashed PermaNet(r) 3.0 (62.9 +- 4.2%) (z = 0.21; p = 0.738), and significantly different from unwashed PermaNet(r) 2.0 (28.8 +- 1.9%) (z = 3.21; p = 0.001). With 20 washes, the personal protection with PermaNet(r) Dual (B) declined significantly from 60.8 +- 3.8% to 20.2 +- 1.1% (z = - 2.96; p = 0.003). However, washed PermaNet(r) Dual (B) provided significantly higher personal protection compared with their washed counterparts of PermaNet(r) 3.0 (9.8 +- 0.7%) (z = 2.89; p = 0.004) and PermaNet(r) 2.0 (- 32.6 +- 2.2%) (z = 2.93; p = 0.003).\n", - "\n", - "header: Results\n", - "\n", - "The outcomes of the current experimental hut trial showed that the parameters of the net efficacy against the pyrethroid-resistant _An. gambiae s.l._ Tiassale population varied as a function of net type and wash status, with the performance of PermaNet(r) Dual being better overall compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 1 and Table 1).\n", - "\n", - "header: Funding\n", - "\n", - "This study was funded by a Grant from Vestergaard Sarl, Lausanne, Switzerland.\n", - "\n", - "header: Additional file 3: Table 53.\n", - "\n", - "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (Tissale strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", - "\n", - "header: Additional file 2: Table 52.\n", - "\n", - "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (bisumu strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", - "\n", - "header: Results\n", - "\n", - "PermaNet(r) Dual demonstrated significantly improved efficacy, compared to PermaNet(r) 3.0 and PermaNet(r) 2.0, against the pyrethroid-resistant _An. gambiae s.l._ Indeed, the experimental hut trial data showed that the mortality and blood-feeding inhibition in the wild pyrethroid-resistant _An. gambiae s.l._ were overall significantly higher with PermaNet(r) Dual compared with PermaNet(r) 3.0 and PermaNet(r) 2.0, for both unwashed and washed samples. The mortality with unwashed and washed samples were 93.6 +- 0.2% and 83.2 +- 0.9% for PermaNet(r) Dual, 37.5 +- 2.9% and 14.4 +- 3.3% for PermaNet(r) 3.0, and 7.4 +- 5.1% and 11.7 +- 3.4% for PermaNet(r) 2.0, respectively. Moreover, unwashed and washed samples produced the respective percentage blood-feeding inhibition of 41.4 +- 6.9% and 43.7 +- 4.8% with PermaNet(r) Dual, 51.0 +- 5.7% and 9.8 +- 3.6% with PermaNet(r) 3.0, and 12.8 +- 4.3% and - 13.0 +- 3.6% with PermaNet(r) 2.0. Overall, PermaNet(r) Dual also induced higher or similar deterrence, exophily and personal protection when compared with the standard PermaNet(r) 3.0 and PermaNet(r) 2.0 reference nets, with both unwashed and\n", - "washed net samples. In contrast to cone bioassays, tunnel tests predicted the efficacy of PermaNet(r) Dual seen in the current experimental hut trial.\n", - "\n", - "header: Conclusion\n", - "\n", - "The present small-scale GLP experimental hut study demonstrated that the deltamethrin- chlorfenapyr PermaNet(r) Dual net has high bio-efficacy, inducing significantly higher mortality and blood-feeding inhibition effects in the wild insecticide-resistant _An. gambiae s.l._ when compared with the deltamethrin-PBO PermaNet(r) 3.0 and deltamethrin-only PermaNet(r) 2.0. The inclusion of chlorfenapyr with pyrethroid in PermaNet(r) Dual net has greatly improved protection and control of free-flying wild pyrethroid-resistant _An. gambiae_ populations. The chlorfenapyr-deltamethrin-coated PermaNet(r) Dual net has great potential to reduce malaria transmission, particularly in areas compromised by high level of pyrethroid resistance in _Anopheles_ mosquitoes. Further validations in large-scale field trials are required to assess the effectiveness, the durability and the acceptability of this new tool for malaria vector control.\n", - "\n", - "header: Discussion\n", - "\n", - "The current study evaluated the efficacy of PermaNet(r) Dual, a new candidate net coated with a mixture of chlorfenapyr and deltamethrin, against _An. gambiae_ in a small-scale GLP but study in Tiassale, Cote d'Ivoire, with supporting exploratory laboratory cone and tunnel\n", - "\n", - "Fig. 4: Mean blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the susceptible _Anopheles gambiae_ s.s. Kisumu strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassale, Côte d’Ivoire. Error bars show the standard error of the mean\n", - "bioassays. WHO-prequalified PermaNet(r) 3.0 (co-treated with deltamethrin and PBO) and PermaNet(r) 2.0 (treated with deltamethrin only) were used as the reference nets. In this GLP but study, PermaNet(r) Dual performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0, in terms of mortality and blood-feeding inhibition, for both unwashed and unstressed cases, respectively.\n", - "\n", - "Fig. 5: Mean of blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the pyrethroid-resistant _Anopheles gambiae s1_. Tassale strain exposed to net samples using tunnel tests before and after experimental hut trial in Tassale, Côte d’thovie. Error bars show the standard error of the mean \n", - "and washed samples. Unlike the cone bioassays, the tunnel tests successfully confirmed the field efficacy of the nets. Briefly, this hut trial showed the benefit of mixing deltamethrin and chlorfenapyr together in a long-lasting net, PermaNet(r) Dual, for an effective control of pyrethroid-resistant _Anopheles._\n", - "\n", - "The current experimental hut study demonstrated that PermaNet(r) Dual had increased efficacy against highly pyrethroid-resistant _An. gambiae._ Indeed, hut mortality of _An. gambiae_ Tiassale strain was significantly higher with PermaNet(r) Dual (>83%) in comparison with PermaNet(r) 3.0 (<38%) and PermaNet(r) 2.0 (<12%), for both unwashed and 20 times washed samples (Fig. 1B and Table 1). This PermaNet(r) Dual efficacy was similar to chlorfenapyr and alpha-cypermethrin mixture-coated Intercept G2 in West and East Africa [16, 17, 27, 28, 29, 30, 31, 32]. The good performance of PermaNet(r) Dual might be attributed to the susceptibility of the highly pyrethroid-resistant _An. gambiae_ s.l. to chlorfenapyr [9, 11]. Due to the novel mode of action of chlorfenapyr, the present pyrethroid-resistance mechanisms did not provide any cross-resistance to this insecticide [12]. Indeed, chlorfenapyr-treated tool has been shown to control a number of different multiple-insecticide-resistant _Anopheles_ populations [14, 15, 27, 28, 29, 30, 31, 32].\n", - "\n", - "This hut study showed that the percentage blood-feeding in wild pyrethroid-resistant _An. gambiae_ population was lower for PermaNet(r) Dual (unwashed and washed) compared with PermaNet(r) 2.0 (unwashed and washed) and washed PermaNet(r) 3.0, but slightly higher than\n", - "unwashed PermaNet(r) 3.0 (Fig. 1A and Table 1). Likewise, blood-feeding inhibition with PermaNet(r) Dual was comparable or stronger than with PermaNet(r) 2.0 and washed PermaNet(r) 3.0. This PermaNet(r) Dual blood-feeding inhibition outcome is consistent with that caused by Intercept G2 in earlier hut trials in West Africa [27-31], and may be explained by the irritant effects of the deltamethrin [32-35]. While unwashed PermaNet(r) Dual and PermaNet(r) 3.0 produced similar levels of blood-feeding inhibition, the 20 times washed PermaNet(r) Dual induced a statistically greater blood-feeding inhibition in comparison with both PermaNet(r) 3.0 and PermaNet(r) 2.0 washed 20 times. This suggests that PermaNet(r) Dual may have performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0 over time. PermaNet(r) Dual effectiveness for inhibiting blood-feeding could imply its good potential for reducing the human-biting and blood-feeding, adding value into its killing effects in malaria vectors.\n", - "\n", - "In the present hut study, unwashed PermaNet(r) Dual deterrence effect against the wild pyrethroid-resistant _An. gambiae_ population was comparable to that recorded in PermaNet(r) 2.0 and PermaNet(r) 3.0. The deltamethrin component of PermaNet(r) Dual has a deterrence effect and may have induced exiting in mosquitoes. However, the 20 times washed PermaNet(r) Dual did not have a deterrence effect (Table 1), probably due to a reduction of the chemical contents (Table 2). A dipped chlorfenapyr net did seem to have a deterrence effect, but did not have a significant effect on exiting rates in West Africa [15, 16, 26-31]. The higher deterrence effect may be due to both the chlorfenapyr and deltamethrin components, but higher exiting rate would likely be due only to the deltamethrin component. Thus, PermaNet(r) Dual may have both deterrent and excito-repellency effects, providing personal protection against pyrethroid-resistant _An. gambiae_ mosquitoes, and reducing human-vector contacts, which may, in turn, lead to an increased user acceptance [36].\n", - "\n", - "While standard laboratory cone bioassays failed to predict PermaNet(r) Dual efficacy against pyrethroid-resistant _An. gambiae s.l.,_ tunnel tests successfully predicted its efficacy against the same strain in the semi-field experimental huts. Both cone and tunnel bioassays met the WHO criteria [44], with the susceptible _An. gambiae s.s._ Kisumu strain. However, _An. gambiae s.s._ Kisumu strain mortality against unwashed and used PermaNet(r) Dual (A) was lower (34%) with cone bioassay (Fig. 2B) probably due to the reduction of the chemical bioavailability on netting fibre surface of net samples tested, or the inappropriateness of cone bioassay method for evaluation of the chlorfenapyr-coated PermaNet(r) Dual as the mortality was higher (100%) with tunnel test (Fig. 4B). With the wild pyrethroid-resistant _An. gambiae s.l._ Tiassale strain, only the tunnel tests achieved high efficacy that was consistent with that observed in the huts with PermaNet(r) Dual. The difference in PermaNet(r) Dual efficacy between both _Anopheles_ Kiumu and Tiassale strains may be explained by the difference in the levels of their resistance to insecticides. However, the lower efficacy of PermaNet(r) Dual against pyrethroid-resistant _An. gambiae s.l._ with cone bioassays (daytime and 3-min exposure) compared with tunnel tests (night-time and 15-h exposure) may be attributable to the slow mode of action of chlorfenapyr and that mosquitoes need to be metabolically active for the activation of the chlorfenapyr pro-insecticide [12, 13, 37]. Indeed, chlorfenapyr has a previously been observed to have a slower action and delayed toxic activity of 2-3 days post-exposure compared to other insecticides (pyrethroids and organophosphates) used in mosquito vector control [14, 28, 29]. The cone bioassay method was developed to assess the bioefficacy of pyrethroid-only LLINs, and the use of this method to test LLINs containing non-neurotoxic insecticides, such as chlorfenapyr, may not necessarily be predictive of field impact, even with increased exposure time of mosquitoes inside the cones [16, 27]. In contrast, the tunnel test results with pyrethroid-resistant _An. gambiae s.l._ Tiassale strain (field-collected F0 generation) were more predictive of PermaNet(r) Dual efficacy in huts, as observed for other chlorfenapyr-coated nets, such as Interceptor(r) G2 [16, 27, 28]. Tunnel tests provide an increased exposure time of mosquitoes to the LLIN samples being tested, and being an overnight exposure. As the female mosquitoes in the tunnel tests are also exhibiting host-seeking behaviour and are, therefore, metabolically active, the activation of chlorfenapyr following tarsal pickup by mosquitoes may be more effective. The tunnel test was a better predictor of PermaNet(r) Dual field efficacy because exposure occurred at night when host-seeking mosquitoes are more vulnerable to chlorfenapyr. Tunnel test thus is a more reliable technique to assess the efficacy of a chlorfenapyr-treated net prior to field trials against free-flying mosquitoes [16, 38, 39].\n", - "\n", - "In PermaNet(r) Dual, deltamethrin and chlorfenapyr contents varied slightly, but complied with the dose interval limits of target specification [23]. This revealed a good homogeneity of the active ingredients' distribution over and a good retention of these active ingredients in PermaNet(r) Dual, thus resulting in high and similar mortality and blood-feeding inhibition between unwashed samples of PermaNet(r) Dual (A) and PermaNet(r) Dual (B). The reduction of chemical contents due to the loss of chlorfenapyr and deltamethrin with 20 washes had no apparent effect on PermaNet(r) Dual efficacy as the washed samples were still producing high mortality against the pyrethroid-resistant mosquitoes. Overall,\n", - "PernaNet(r) Dual chemical bioavailability was sufficient and produced high mortality in pyrethroid-resistant _Anopheles_ mosquitoes after 20 standardized washes (corresponding to a 3-year use) and over the hut trial.\n", - "\n", - "The high vector mortality and personal protection effect of the PernaNet(r) Dual found in this study are the desired outcomes of any vector control tool. The high mortality effects and the additive blood-feeding inhibition impacts induced by PernaNet(r) Dual in this hut trial are expected to substantially diminish the malaria vector density and biting rates in the field, and hence the transmission of malaria in the areas where vectors are resistant to insecticides [40-47]. Additionally, PernaNet(r) Dual performed better than the reference PernaNet(r) 3.0 and PernaNet(r) 2.0 nets, when washed 20 times, thus meeting the WHO hut trial criteria [23].\n", - "\n", - "However, these results need to be further validated in a large-scale field trial to assess the durability and acceptability of this new tool for malaria vector control [48-50]. A community trial would be the best way to evaluate the community level effect of this promising candidate net (i.e. PernaNet(r) Dual) against malaria transmission, by monitoring entomological infection rate, _Plasmodium_ prevalence and disease incidence [48-50]. Such a community trial could be a randomized controlled trial as with dual-active-ingredient LLINs (e.g. Interceptor G2) in Tanzania [49], soon in Benin [48, 50], and the pilot deployments that are part of the New Nets Project led by PATH [51]. Furthermore, PernaNet(r) Dual should be tested against wild populations of _Anopheles funestus_[32], or other main or secondary vectors of malaria in Africa [52-56]. Ultimately, in the present study, the series of hut and laboratory tests demonstrated that the chlorfenapyr component of PernaNet(r) Dual could make a major contribution to controlling the pyrethroid-resistant _An. gambiae_ populations. Furthermore, there were no adverse effects reported among hut sleepers and mosquito collectors during the trial in the huts where PernaNet(r) Dual were used, and this may possibly increase the rate of future user acceptability and improve the usage of this net for malaria vector control.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"tunnel test\",\"Country\":\"Cote d'Ivoire\",\"Site\":\"Tiassale\",\"Start_month\":3,\"Start_year\":2020,\"End_month\":8,\"End_year\":2020}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"PermaNet(r) Dual\",\"Insecticide\":\"chlorfenapyr, deltamethrin\",\"Net_washed\":0.0},\"N02\":{\"Net_type\":\"PermaNet(r) Dual\",\"Insecticide\":\"chlorfenapyr, deltamethrin\",\"Net_washed\":20.0},\"N03\":{\"Net_type\":\"PermaNet(r) 3.0\",\"Insecticide\":\"deltamethrin, PBO\",\"Net_washed\":0.0},\"N04\":{\"Net_type\":\"PermaNet(r) 3.0\",\"Insecticide\":\"deltamethrin, PBO\",\"Net_washed\":20.0},\"N05\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_washed\":0.0},\"N06\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_washed\":20.0}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Tunnel test\n", - "\n", - "The tunnel test outcomes confirmed the cone bioassay results for the susceptible _An. gambiae s.s._ Kisumu strain, with strong blood-feeding inhibition and high mortality in all nets being above the WHO tunnel test thresholds (>= 90% blood-feeding inhibition or >= 80% mortality) (Fig. 4). The blood-feeding inhibition was high only in unwashed and used samples of PermaNet(r) Dual (A) (92.4%), PermaNet(r) Dual (B) (91.6%) and PermaNet(r) 3.0 (92.3%) (Fig. 4A). The mortality was very high (100%) in unwashed or washed and unused or used samples of all nets (PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0) (Fig. 4B), thus showing their good efficacy against this pyrethroid-susceptible _An. gambiae_ Kisumu strain. Additional file shows the Kisumu strain mortality with tunnel tests in more detail (see Additional file 4: Table S4). For the pyrethroid-resistant _An. gambiae s.l._, only washed and unused PermaNet(r) Dual (A) induced a strong blood-feeding inhibition (91.3%) being above the WHO tunnel cut-off of 90% (Fig. 5A). However, the mortality with all samples (unwashed or washed and unused) of PermaNet(r) Dual (85.2-94.9%) were higher compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 5B), and consistent with the higher efficacy of PermaNet(r) Dual against the free-flying pyrethroid-resistant _An. gambiae s.l._ Tiassale strain populations observed in the concurrent experimental hut trials. Additional file shows the pyrethroid-resistant Tiassale strain mortality with tunnel tests in more detail (see Additional file 5: Table S5).\n", - "\n", - "header: Comparison of laboratory bioassay results with hut trial results\n", - "\n", - "Comparing the laboratory cone bioassay and tunnel test results with the experimental hut trial results with the same pyrethroid-resistant _An. gambiae s.l._ strain showed that these laboratory bioassays predicted the response in the huts for PermaNet(r) 3.0 and PermaNet(r) 2.0. Indeed, the unwashed and washed PermaNet(r) 3.0 and PermaNet(r) 2.0 induced relatively lower mortality in the pyrethroid-resistant _An. gambiae_ strain with the cone bioassays, the tunnel test and the hut trial. Focussing on the bioefficacy of PermaNet(r) Dual, the respective mortality rates in the cone, tunnel and hut were 14.0%, 84.5% and 94.9% for unwashed PermaNet(r) Dual (A), 24.0%, 86.5% and 90.2% for unwashed PermaNet(r) Dual (B), and 10.0%, 87.5% and 90.4% for washed PermaNet(r) Dual (B). This suggests that laboratory tunnel tests are more predictive of the performance of PermaNet(r) Dual in experimental huts. Additionally, there were correlations in the blood-feeding rates and blood-feeding inhibition between the tunnel test results and the hut trial results. The high mortality and strong blood-feeding inhibition of PermaNet(r) Dual in tunnel tests with the pyrethroid-resistant _An. gambiae_ Tiassale strain shows that the chlorfenapyr component of PermaNet(r) Dual provided good efficacy against pyrethroid-resistant _Anopheles_.\n", - "\n", - "header: Background: Methods\n", - "\n", - "PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0, unwashed and washed (20 washes), were tested against free-flying pyrethroid-resistant _An. gambiae s.l._ in the experimental huts in Tiassale, Cote d'lvoire from March to August 2020. Complementary laboratory cone bioassays (daytime and 3-min exposure) and tunnel tests (nightly and 15-h exposure) were performed against pyrethroid-susceptible _An. gambiae_ sensu stricto (_S.S._) (Kisumu strain) and pyrethroid-resistant _An. gambiae s.l._ (Tiassale strain).\n", - "\n", - "header: Chemical analysis\n", - "\n", - "Pieces of netting were sampled from unwashed and washed PermaNet(r) Dual (A and B), PermaNet(r) 3.0 and PermaNet(r) 2.0 LLINs before and after being used in the hut trial, in accordance with the WHO protocol for chemical analysis [25]. All sampled net pieces were labelled and stored individually in aluminium foil at 3.7-4.2 degC. The net pieces were then shipped to the Vestergaard's ISO IEC17025 laboratory in Vietnam for chemical analysis of chlorfenapyr and deltamethrin. Deltamethrin and PBO contents were determined following the Collaborative International Pesticides Analytical Council Ltd (CIPAC) (i.e. ClPAC 33/LN/(M2)/3) methods [26]. Briefly, chlorfenapyr content was analysed using in-house method VCL-098-20 that was undergoing ClIPAC validation and was still to be published. Chlorfenapyr content was extracted from the PermaNet(r) Dual net using a mixture of n-hexane and 1,4-dioxane (95:5, v:v) solvents with an internal standard of dibutylphthalate added. The mixture was shaken by shaking machine to extract chlorfenapyr. Extracted solution was filtered through 0.45 mm Teflon membrane and analysed by a normal phase high performance liquid chromatography for chlorfenapyr concentration, detector UV 236 nm.\n", - "\n", - "header: Conclusion\n", - "\n", - "The deltamethrin-chlorfenapyr-coated PermaNet(r) Dual induced a high efficacy and performed better than the deltamethrin-PBO PermaNet(r) 3.0 and the deltamethrin-only PermaNet(r) 2.0, testing both unwashed and 20 times washed samples against the pyrethroid-susceptible and resistant strains of _An. gambiae s.l._ The inclusion of chlorfenapyr with deltamethrin in PermaNet(r) Dual net greatly improved protection and control of pyrethroid-resistant _An. gambiae_ populations. PermaNet(r) Dual thus represents a promising tool, with a high potential to reduce malaria transmission and provide community protection in areas compromised by mosquito vector resistance to pyrethroids.\n", - "\n", - "header: Small-scale field evaluation of PermaNet(r): Abstract\n", - "\n", - "Dual (a long-lasting net coated with a mixture of chlorfenapyr and deltamethrin) against pyrethroid-resistant _Anopheles gambiae_ mosquitoes from Tiassale, Cote d'lvoire\n", - "\n", - "Julien Z. B. Zahouli\n", - "\n", - "Julien Z. B. Zahouli\n", - "\n", - "Julien.zahouli@crsrs.ci\n", - "\n", - "Constant A. V. Edi\n", - "\n", - "1Laurence A. Yao\n", - "\n", - "1Emmanuelle G. Lisro\n", - "\n", - "1Marc Adou\n", - "\n", - "1Inza Kone\n", - "\n", - "1Graham Small\n", - "\n", - "2Leanore D. Sternberg\n", - "\n", - "28Benjamin G. Koudou\n", - "\n", - "\n", - "\n", - "Due to the rapid expansion of pyrethroid-resistance in malaria vectors in Africa, Global Plan for insecticide Resistance Management (GIPRM) has recommended the development of long-lasting insecticidal nets (LLINs), containing insecticide mixtures of active ingredients with different modes of action to mitigate resistance and improve LLIN efficacy. This good laboratory practice (GLP) study evaluated the efficacy of the chlorfenapyr and deltamethrin-coated PermaNet(r) Dual, in comparison with the deltamethrin and synergismt piperonyl butoxide (PBO)-treated PermaNet(r) 3.0 and the deltamethrin-coated PermaNet(r) 2.0, against wild free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato (_S.I._), in experimental huts in Tiassale, Cote d'lvoire (West Africa).\n", - "\n", - "header: Supplementary Information\n", - "\n", - "The online version contains supplementary material available at [https://doi.org/10.11016/s12936-023-04455-z](https://doi.org/10.11016/s12936-023-04455-z).\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "All relevant data are within the manuscript.\n", - "\n", - "header: Supporting laboratory testing of net samples\n", - "\n", - "Standard WHO cone bioassays and tunnel tests were conducted with unwashed and washed nets under laboratory conditions, to predict their responses in the field experimental huts. The insecticide susceptible Kisumu strains and field-collected F0 generation of pyrethroid-resistant Tiassale strain of _An. gambiae_ were tested with samples (25 cm x 25 cm) cut from each of the eight net \n", - "types (unwashed and washed net samples) before and after their inclusion into the hut trial [23]. For the tunnel tests, tunnels were divided into two sections by netting samples held in a frame. Nine holes of 1 cm in diameter were cut in each net sample (with one hole located at the centre of the square, and the other eight equidistant and located 5 cm from the border), and the surface of netting available to the mosquitoes was 400 cm\\({}^{2}\\) (20 cm \\(\\times\\) 20 cm).\n", - "\n", - "For each type of net and wash status, 100 non-blood-fed, 2-5-day-old females per strain were subjected to 3-min exposure in cone bioassays in replicates of five mosquitoes per cone according to the WHO guidelines [22]. For the tunnel tests, 100 non-blood-fed, 5-8-day-old mosquito females per strain were subjected to a 15-h exposure overnight using guinea pig as host, following the WHO guidelines [23]. Testing and holding conditions were 27 +- 2 degC and 80 +- 10% relative humidity. The 60-min knockdown for cone bioassays, blood-feeding status for tunnel tests and 24, 48 and 72-h mortality for both methods were recorded.\n", - "\n", - "header: Blood-feeding and personal protection\n", - "\n", - "The blood-feeding effect of the nets in wild pyrethroid-resistant _An. gambiae_ that entered the trial huts and personal protection are presented in Fig. 1A and Table 1. Before washing, the percentage blood-feeding with PernaNet(r) Dual (A) (36.7 +- 4.0%) did not differ significantly from PernaNet(r) Dual (B) (37.5 +- 4.4%) and PernaNet(r) 2.0 (55.7 +- 3.7%), but was significantly higher than PernaNet(r) 2.0 (31.3 +- 4.4%) (z = - 2.17; p = 0.030). The percentage blood-feeding for unwashed PernaNet(r) Dual (B) was similar to unwashed samples of PernaNet(r) 2.0 (z = 1.74; p = 0.081) and PernaNet(r) 3.0 (z = - 1.49; p = 0.136). Washing 20 times did not influence significantly the percentage blood-feeding in PernaNet(r) Dual (B) (z = 0.10; p = 0.921). After washing,\n", - "the percentage blood-feeding of PermaNet(r) Dual (B) (36.0 +- 3.7%) was substantially lower, but without significant differences when compared with PermaNet(r) 3.0 (57.7 +- 3.7%) (z = 1.71; p = 0.087), PermaNet(r) 2.0 (72.3 +- 3.2%) (z = 1.78; p = 0.076) and the untreated control net (z = 1.72; p = 0.085). For blood-feeding inhibition, unwashed PermaNet(r) Dual (A) (42.5 +- 6.8%) was similar to unwashed PermaNet(r) Dual (B) (41.4 +- 6.9%) (z = 0.25; p = 0.802) and washed PermaNet(r) Dual (B) (43.7 +- 4.8%) that was not affected by washing (z = - 0.41; p = 0.682). Compared with PermaNet(r) 3.0, the blood-feeding inhibition of PermaNet(r) Dual (B) was significantly higher before washing (z = - 0.72; p = 0.469), and significantly lower after washing (z = - 1.92; p = 0.045). However, both unwashed and washed PermaNet(r) Dual (B) provided, respectively, significantly higher blood-feeding inhibition than unwashed and washed PermaNet(r) 2.0 (all p < 0.05). The personal protection was similar between unwashed samples of PermaNet(r) Dual (A) (58.8 +- 3.5%) and PermaNet(r) Dual (B) (60.8 +- 3.8%) (z = - 0.04; p = 0.968). Unwashed PermaNet(r) Dual (B) resulted in a personal protection that was similar to unwashed PermaNet(r) 3.0 (62.9 +- 4.2%) (z = 0.21; p = 0.738), and significantly different from unwashed PermaNet(r) 2.0 (28.8 +- 1.9%) (z = 3.21; p = 0.001). With 20 washes, the personal protection with PermaNet(r) Dual (B) declined significantly from 60.8 +- 3.8% to 20.2 +- 1.1% (z = - 2.96; p = 0.003). However, washed PermaNet(r) Dual (B) provided significantly higher personal protection compared with their washed counterparts of PermaNet(r) 3.0 (9.8 +- 0.7%) (z = 2.89; p = 0.004) and PermaNet(r) 2.0 (- 32.6 +- 2.2%) (z = 2.93; p = 0.003).\n", - "\n", - "header: Outcomes measures\n", - "\n", - "The following entomological outcomes were used to evaluate the efficacy of each treatment arm in the current experimental hut trial [23]:\n", - "\n", - "1. Deterrence: proportional reduction in the number of mosquitoes caught in treated hut relative to the number caught in the control hut.\n", - "2. Exiting rate: percentage of the mosquitoes collected from the veranda trap out of all mosquitoes collected.\n", - "3. Induced exophily: proportional reduction of mosquitoes found in the exit and veranda traps relative to control hut.\n", - "4. Blood-feeding: percentage of blood-fed mosquitoes relative to the total collected.\n", - "5. Blood-feeding inhibition: proportional reduction in blood feeding percentage in treated huts relative to the control hut.\n", - "6. Mortality: percentage of dead mosquitoes found dead in hut in the morning (immediate mortality) or after being caught alive and dead during holding (delayed mortality) in treatment huts out of mosquitoes collected, and corrected for control mortality.\n", - "7. Personal protection: the proportional reduction in the number of blood-fed mosquitoes in the treated huts relative to the number of blood-fed mosquitoes in the untreated control.\n", - "8. Killing effect: the proportional reduction in the number of mosquitoes killed in the treated huts relative to the number of mosquitoes killed in the untreated control.\n", - "\n", - "The formulas of key entomological outcomes measured in this study are [23]:\n", - "\n", - "\\[\\text{Deterrence}(\\%) = \\frac{\\text{Nc} - \\text{Nt}}{\\text{Nc}} \\times 100 = \\left( 1 - \\frac{\\text{Nt}}{\\text{Nc}} \\right) \\times 100,\\]\n", - "\n", - "where Nt the total number of mosquitoes collected in the treatment hut and veranda/exit traps and Nc the total number of mosquitoes in the control hut and veranda/exit traps.\n", - "\n", - "\\[\\text{Exiting}\\,\\text{rate}(\\%) = \\frac{\\text{n}}{\\text{N}} \\times 100,\\]\n", - "\n", - "where n is the number of mosquitoes from veranda and window traps, while N is the total number of mosquitoes collected in the hut.\n", - "\n", - "\\[\\text{Induced}\\,\\text{exophily}(\\%) = \\frac{\\text{Pt} - \\text{Pc}}{\\text{Pc}} \\times 100\\] \\[= \\left( \\frac{\\text{Pt}}{\\text{Pc}} - 1 \\right) \\times 100,\\]\n", - "\n", - "where Pt is the proportion of mosquitoes from veranda and window traps of treated hut while Pc is the number of mosquitoes from veranda and window traps of untreated control hut.\n", - "\n", - "\\[\\text{Blood} - \\text{feeding}\\,\\text{inhibition}(\\%) = \\frac{\\text{Pc} - \\text{Pt}}{\\text{Pc}} \\times 100,\\]\n", - "\n", - "where Pt the proportion of blood-fed mosquitoes in the treatment hut, and Pc the proportion of blood-fed mosquitoes in the control hut.\n", - "\n", - "\\[\\text{Personal}\\,\\text{protection}(\\%) = \\frac{\\text{Bc} - \\text{Bt}}{\\text{Bc}} \\times 100\\] \\[= \\left( 1 - \\frac{\\text{Bt}}{\\text{Bc}} \\right) \\times 100,\\]\n", - "\n", - "where Bt the number of blood-fed mosquitoes in the treatment hut and Bc the number of blood-fed mosquitoes in the control hut.\n", - "\n", - "\\[\\text{Killing}\\,\\text{effect}(\\%) = \\frac{\\text{Kt} - \\text{Kc}}{\\text{Tc}} \\times 100,\\]\n", - "\n", - "where Kt is the number of mosquitoes killed in the treatment huts, Kc is the number of mosquitoes killed in the control huts, and Tc is the total number of mosquitoes collected from the control.\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Results\n", - "\n", - "The outcomes of the current experimental hut trial showed that the parameters of the net efficacy against the pyrethroid-resistant _An. gambiae s.l._ Tiassale population varied as a function of net type and wash status, with the performance of PermaNet(r) Dual being better overall compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 1 and Table 1).\n", - "\n", - "header: Background\n", - "\n", - "According to the latest World Malaria Report 2022 of the World Health Organization (WHO), there were 247 million malaria cases and 619,000 malaria deaths in 84 malaria endemic countries worldwide in 2021 [1, 2]. This represents about 13.4 million more cases in 2021 compared to 2019 attributable to disruptions to essential malaria services during the COVID-18 pandemic [1]. The WHO African Region, with an estimated 234 million cases in 2021, accounted for about 95% of global cases malaria [1]. The recent decline of malaria burden from 2000 to 2019 was largely due to the massive distribution and use of long-lasting insecticidal nets (LLINs) (2.5 billion LLINs were delivered from 2004 to 2021) for _Anopheles_ mosquito vector control [1]. The malaria burden reduction is now slowing down and is threatened by the spread of resistance to pyrethroids (78 of 88 endemic countries have detected resistance to at least one insecticide class reported to the WHO from 2010 to 2020) [1]. The WHO Global Plan for Insecticide Resistance Management (GPIRM) has recommended the development of LLINs with insecticide mixtures of active ingredients with different modes of action to mitigate resistance [3]. The WHO Global Technical Strategy (GTS) aims for a reduction of malaria case incidence and mortality rate of at least 40% by 2020, 75% by 2025 and 90% by 2030 from the 2015 baseline [1, 4]. To meet these targets, GTS has called for the development of new tools, with combined or more effective insecticide molecules to control insecticide-resistant _Anopheles_ vectors [4]. These new vector control tools must incorporate new insecticide molecules and/or insecticide mixtures containing at least two active ingredients with different modes of action for the management of malaria vector resistance to insecticides [1, 3].\n", - "\n", - "Malaria is endemic throughout Cote d'Ivoire and represents the leading cause of mortality and morbidity in the country. Several studies have shown a wide spread resistance in local _Anopheles_ to most of the insecticide classes currently used in malaria vector control (e.g. pyrethroids, DDT and carbamates) [5-8]. The existence of multiple mechanisms of resistance in the main vector, _Anopheles gambiae_ sensu lato (_s.l._) threatens the efficacy of vector control tools currently used in Cote d'Ivoire, including LLINs [9-11]. Meiwald et al. [11] found that pyrethroid resistance is associated with significant overexpression of _CYP6P4, CYP6P3,_ and _CYP6Z1_ in _Anopheles coluzzii_ in Cote d'Ivoire. High allelic frequencies of knock-down resistance (_kdr_) _L1014F_ mutation (range: 0.46-1), relatively low frequencies of the _ace-1R_ mutation in the acetylcholinesterase gene associated with target-site insensitivity to carbamates and organophosphates (<0.5), and elevated activity of insecticide detoxifying enzymes (mainly mixed function oxidases (MFOs), esterase and glutathione S-transferase (GST)), have been reported in Cote d'Ivoire [5, 7, 10]. Recent laboratory (WHO tube and CDC bottle) bioassays against local pyrethroid-resistant _An. gambiae_ from Cote d'Ivoire have shown that pyrethroids induce low mortality, whilst pre-exposure to the synergist piperonyl butoxide (PBO) increases the mortality but does not restore fully the susceptibility due to resistance [9]. However, the pyrrole insecticide chlorfenapyr induces higher mortality in resistant _An. gambiae_ compared with pyrethroids alone or combined with PBO in Cote d'Ivoire [9].\n", - "\n", - "The present good laboratory practice (GLP) study evaluated the bio-efficacy of a new candidate LLIN, PermaNet(r) Dual, against pyrethroid-resistant _An. gambiae s.l._ in comparison with the WHO Prequalification Unit, Vector Control Product Assessment Team (PQT/VCP) listed standard LLINs, PermaNet(r) 2.0 and PermaNet(r) 3.0, through the conduct of an experimental hut trial and laboratory bioassays in Tiassale, Cote d'Ivoire. PermaNet(r) Dual has a mixture of the pyrrole chlorfenapyr and the pyrethroid deltamethrin coated onto a polyester fabric. PermaNet(r) 3.0 is treated with deltamethrin and PBO, and PermaNet(r) 2.0 is treated with deltamethrin only. Chlorfenapyr is a pro-insecticide activated by the oxygenase function of cytochrome P450s and oxidative removal of the N-ethoxymethyl\n", - "group leads to a toxic form identified as CL 303,268. The toxic form uncouples oxidative phosphorylation in the mitochondria, resulting in disruption of the production of adenosine triphosphate and loss of energy, leading to cell dysfunction and ultimately death of the insect [12]. The WHO has received some resistance monitoring data for chlorfenapyr, but these data are insufficient to assess the potential presence of resistance to this insecticide [1]. Deltamethrin is a neurotoxic insecticide and has excito-repellent effects on mosquitoes. PBO, used on PermaNet(r) 3.0, is a synergist which inhibits mixed function oxidases, blocking the detoxification of pyrethroids and at least partially restoring pyrethroid susceptibility [1, 13]. Pyrethroid-resistant strains of _Anopheles_ have so far been found to be susceptible to chlorfenapyr [9, 14-18]. Thus, the hypothesis of the current study was that chlorfenapyr would kill the pyrethroid-resistant _An. gambiae_ population in Tiassale, and PermaNet(r) Dual would induce higher mortality compared to both PermaNet(r) 3.0 and PermaNet(r) 2.0 in the experimental huts, and the supplementary laboratory cone and tunnel bioassays could predict these hut trial outcomes.\n", - "\n", - "header: Additional file 3: Table 53.\n", - "\n", - "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (Tissale strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", - "\n", - "header: Results\n", - "\n", - "PermaNet(r) Dual demonstrated significantly improved efficacy, compared to PermaNet(r) 3.0 and PermaNet(r) 2.0, against the pyrethroid-resistant _An. gambiae s.l._ Indeed, the experimental hut trial data showed that the mortality and blood-feeding inhibition in the wild pyrethroid-resistant _An. gambiae s.l._ were overall significantly higher with PermaNet(r) Dual compared with PermaNet(r) 3.0 and PermaNet(r) 2.0, for both unwashed and washed samples. The mortality with unwashed and washed samples were 93.6 +- 0.2% and 83.2 +- 0.9% for PermaNet(r) Dual, 37.5 +- 2.9% and 14.4 +- 3.3% for PermaNet(r) 3.0, and 7.4 +- 5.1% and 11.7 +- 3.4% for PermaNet(r) 2.0, respectively. Moreover, unwashed and washed samples produced the respective percentage blood-feeding inhibition of 41.4 +- 6.9% and 43.7 +- 4.8% with PermaNet(r) Dual, 51.0 +- 5.7% and 9.8 +- 3.6% with PermaNet(r) 3.0, and 12.8 +- 4.3% and - 13.0 +- 3.6% with PermaNet(r) 2.0. Overall, PermaNet(r) Dual also induced higher or similar deterrence, exophily and personal protection when compared with the standard PermaNet(r) 3.0 and PermaNet(r) 2.0 reference nets, with both unwashed and\n", - "washed net samples. In contrast to cone bioassays, tunnel tests predicted the efficacy of PermaNet(r) Dual seen in the current experimental hut trial.\n", - "\n", - "header: Additional file 2: Table 52.\n", - "\n", - "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (bisumu strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", - "\n", - "header: Funding\n", - "\n", - "This study was funded by a Grant from Vestergaard Sarl, Lausanne, Switzerland.\n", - "\n", - "header: Conclusion\n", - "\n", - "The present small-scale GLP experimental hut study demonstrated that the deltamethrin- chlorfenapyr PermaNet(r) Dual net has high bio-efficacy, inducing significantly higher mortality and blood-feeding inhibition effects in the wild insecticide-resistant _An. gambiae s.l._ when compared with the deltamethrin-PBO PermaNet(r) 3.0 and deltamethrin-only PermaNet(r) 2.0. The inclusion of chlorfenapyr with pyrethroid in PermaNet(r) Dual net has greatly improved protection and control of free-flying wild pyrethroid-resistant _An. gambiae_ populations. The chlorfenapyr-deltamethrin-coated PermaNet(r) Dual net has great potential to reduce malaria transmission, particularly in areas compromised by high level of pyrethroid resistance in _Anopheles_ mosquitoes. Further validations in large-scale field trials are required to assess the effectiveness, the durability and the acceptability of this new tool for malaria vector control.\n", - "\n", - "header: Experimental huts and mosquitoes: Net treatments and treatment arms\n", - "\n", - "This study included the PermaNet(r) Dual (candidate net), PermaNet(r) 3.0 and PermaNet(r) 2.0 (reference nets) and untreated net (negative control). All mosquito nets were new and unwashed nets supplied by Vestergaard Sarl (Lausanne, Switzerland). The untreated nets were made of polyester fabric without any insecticide. PermaNet(r) Dual was made of polyester fabric coated with chlorfenapyr at 5.0 g/kg +- 25% and deltamethrin at 2.1 g/kg +- 25%. The unwashed PermaNet(r) Dual arm was replicated using nets from two different production batches (referred to as A and B). PermaNet(r) 3.0 was made of polyester fabric coated with 2.1 g/kg +- 25% of deltamethrin on the sides, and polyethylene incorporated with 4.0 g/kg +- 25% of deltamethrin and 25.0 g/kg +- 25% of PBO on the roof. PermaNet(r) 2.0 was made of polyester fabric coated with 1.4 g/kg +- 25% of deltamethrin.\n", - "\n", - "Eight treatment arms were compared in the experimental huts and laboratory: PermaNet(r) Dual (A) unwashed; PermaNet(r) Dual (B) unwashed and washed 20 times; PermaNet(r) 3.0 unwashed and washed 20 times; PermaNet(r) 2.0 unwashed and washed 20 times; and untreated control net. The nets were prepared and washed using a soap called \"Savon de Marseille\" and according to the WHO guidelines on small-scale field hut trials and laboratory testing [23]. The interval of time between two consecutive washes was one day, corresponding to the regeneration time of all the nets. The regeneration time of the PermaNet(r) Dual (i.e. 1 day) was supplied by Vestergaard. The nets were washed 20 times. Before testing them in the experimental huts, all the unwashed, washed and untreated control nets were deliberately holed with six holes of 4 cm in diameter to stimulate the conditions of torn nets according to the WHO guidelines [23].\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"tunnel test\",\"Country\":\"Cote d'Ivoire\",\"Site\":\"Tiassale\",\"Start_month\":3,\"Start_year\":2020,\"End_month\":8,\"End_year\":2020}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"PermaNet(r) Dual\",\"Insecticide\":\"chlorfenapyr, deltamethrin\",\"Net_washed\":0.0},\"N02\":{\"Net_type\":\"PermaNet(r) Dual\",\"Insecticide\":\"chlorfenapyr, deltamethrin\",\"Net_washed\":20.0},\"N03\":{\"Net_type\":\"PermaNet(r) 3.0\",\"Insecticide\":\"deltamethrin, PBO\",\"Net_washed\":0.0},\"N04\":{\"Net_type\":\"PermaNet(r) 3.0\",\"Insecticide\":\"deltamethrin, PBO\",\"Net_washed\":20.0},\"N05\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_washed\":0.0},\"N06\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_washed\":20.0}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: PermaNet(r) 2.0 and Dawa Plus(r) 2.0: Life Net(r) and NetProtect(r)\n", - "\n", - "Each specimen set was weighed and placed in a 250 ml round-bottom boiling flask followed by the addition of 95 ml of xylene and 5 ml of a known concentration of internal standard dipropyl phthalate, (2 mg/ml). The flask was fitted with a reflux condenser and heated to boiling for 30 min. After cooling, approximately 2.5 ml of the extract was filtered and transferred to a glass tube and evaporated to dryness under a stream of dry nitrogen for 30 min at 60 degC. A known volume (0.75 ml) of the mobile phase (94/6 (v/v) isooctane/1, 4-dioxane) was used to reconstitute the residue and was transferred to a sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter. The filtrate was centrifuged (500g) for 2 min and transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Extraction of permethrin for Olyset Net(r)\n", - "\n", - "Permethrin analysis of Olyset Net(r) samples was based on CIPAC Method 331 [31]. Each specimen set was weighed and placed in a 100 ml round-bottom boiling flask, followed by heptane (45 ml) and triphenyl phosphate internal standard (5.0 ml of known concentration in heptane). The flask was fitted with a reflux condenser and heated to boiling for 45 min. After cooling, approximately 1.5 ml of the extract was transferred to a chromatographic sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Author details\n", - "\n", - "- Laboratoire d'Ecologie Vectorieile et Parastaire, Département de Biologie Animal, Faculte Des Sciences et Techniques, Universite Cheikh Anta Diop, Dakar, Senegal. 2institut Pasteur de Dakar, Dakar, Senegal. 3Laboratoire de Télédétection Appliquee, (ITA/IST/FST/UCAD, Dakar, Senegal. 4Division of Parabolic Diseases and Malaria, Centers for Disease Control (CDC) and Prevention, Atlanta, GA, USA.\n", - "\n", - "header: Mosquito net coverage\n", - "\n", - "A total of 3012 nets were distributed in 1249 households (Table 2). The overall average household coverage, 94% (95% CI 92.68-95.3), was 68.2% (95% CI 63.63-72.77) and 92% (95% CI 90-94) in Mbagame and Thies area villages, respectively. Moreover, the average percentage of households receiving only one mosquito net was 26% (95% CI 23-28) in all areas. The average percentage of households in Mbagame and Thies receiving only one mosquito net was estimated as 41.8% (95% CI 36.9-46.8) and 17.4% (95% CI 15-20.6), respectively.\n", - "\n", - "The global coverage of sleeping spaces (3,012/3,840) was 78% (95% CI 77-78). However, the sleeping space coverage in Mbagame area was estimated at 68.2% (95% CI: 65-70), and 95.3% (95% CI 94-96) in the villages surrounding Thies.\n", - "\n", - "header: Gas chromatography analysis\n", - "\n", - "The extracts were analysed using an Agilent 6890 N chromatograph fitted with a 30 m x 0.25 mm (i.d.) fused silica DB-1 capillary column coated with 0.25 mm cross linked polydimethylsiloxane stationary phase. Ultra-high purity nitrogen (1.2 ml/min) was used as the carrier gas. Injector port, column oven, and detector temperatures were 265 degC, 240 degC, and 300 degC, respectively. Flame ionization (FID) was used for analyte detection. Two injections were used for each sample and the results averaged. Permethrin concentration was calculated by comparing permethrin/triphenyl phosphate peak area ratios against a calibration curve generated from solutions containing known permethrin /triphenyl phosphate mass ratios.\n", - "\n", - "header: Methods\n", - "\n", - "A total of five brands of LLINs were distributed to households: NetProtect(r), PermaNet(r) 2.0, Dawa Plus(r) 2.0, Olyset Net(r) and Life Net(r) (Table 1). NetProtect(r) mosquito nets were white, rectangular (length = 190, width = 180 and height = 150 cm) made of 118 denier polyethylene mono filaments and 136 holes/in2 mesh. PermaNet(r) 2.0 mosquito nets were white, rectangular (length = 190, width = 180 and height = 200 cm), made with 75 denier polyester filament tulle and 156 holes/inch2 mesh. Dawa Plus(r) 2.0 were white, rectangular (length = 200, width = 160 and height = 180 cm), made of polyester multi-filament tulle, 75 deniers and 156 holes/inch2 mesh. Olyset Net(r) were white, conical (circumference 1250 cm, height = 250 cm), made with a denier polyethylene mono filament tulle greater than 150 cm and 56 holes/inch2 mesh. Life Net(r) nets were the only mosquito nets made from polypropylene, they were white, rectangular (length = 190, width = 180 and height = 150 cm) made with multi-filament tulle with 110 denier and 156 holes/inch2 mesh.\n", - "\n", - "Aside from the Olyset Net(r) mosquito nets which were treated with permethrin, all other nets distributed were impregnated with deltamethrin. Olyset Net(r) and Life Net(r) were donated by OMVS (Senegal River Basin Development Organization) and BAYER AG (Germany),\n", - "respectively, while the three other brands (PermaNet(r) 2.0, Dawa Plus(r) 2.0 and NetProtect(r)) were purchased from vendors approved by manufacturers.\n", - "\n", - "header: Extraction of deltamethrin\n", - "\n", - "Each specimen set was weighed and placed in a 125 ml screw capped Erlenmeyer flask and 50 ml of the extraction solvent mixture was added making sure that the net was completely submerged in the mixture. The flask was tightly capped and sealed with paraffin film before placing in an ultrasonic bath for 15 min. Later the flask was shaken in a bath at 25 degC for 30 min at a frequency of 155 cycles per min. The extract was transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Physical integrity\n", - "\n", - "At least 83% (95% CI 80-90) of mosquito nets had holes (all types of holes) at the end of the study. Except the Life Net(r), the average number of holes increased with time for all LLINs. For the LLINs inspected in laboratory, at the end of the 6th semester of follow-up, the majority of them had holes, with average proportions of 95.2% 95%, 93.3%, 100% and 60% for Dawa Plus(r) 2.0, NetProtect(r) PermaNet(r) 2.0, Olyset Net(r) and Life Net(r), respectively. The average number of holes remained relatively low for Life Net(r) (Fisher's exact test, OR: 12.02; 95% CI 0.96-684.89, P = 0.027).\n", - "\n", - "At each semester, size 1 holes (Fig. 3) were predominant for all types of mosquito nets. The average number of holes (all types) per mosquito net was 39 per LLIN at the end of six semesters of study. It was 13, 39, 15, 48 and 54 respectively for Life Net(r), NetProtect(r) Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Olyset Net(r), respectively. Only NetProtect(r) and PermaNet(r) 2.0 types were still in good condition at the end of the three-year study (Table 3). Proportions of mosquito nets in good condition in\n", - "\n", - "Figure 2: Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\n", - "households were 71% (NetProtect(r)) and 50% (PernaNet(r) 2.0) in both mosquito nets.\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Rate of sampling mosquito nets, retention of LLINs\n", - "\n", - "From the beginning of the study in 2011 to the end in 2014 (6 semesters), 839 mosquito nets (all types) were removed representing 93.2% of the expected 900 LLINs to be removed (Fig. 2, Table 3). Of the 180 mosquito nets of each brand expected to be sampled, 94.4%, 79.4%, 94.4%, 98.9% and 98.3% of the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r), Olyset Net(r) and PermaNet(r) 2.0, respectively, were removed from the field. The number of mosquito nets sampled was less than the 28-30 units expected in the 5th and 6th semester for Life Net(r), and in the 6th semester for Dawa Plus(r) 2.0 and NetProtect(r). At the end of the study, the retention rate of all five LLIN types was 12.5% (95% CI 11.4-13.7) based on the total number of nets distributed and was relatively better for Olyset Net(r) at 20.5% (95% CI 17.8-23.4) and to a lesser extent for Dawa Plus(r) 2.0 with 15.1% (95% CI 12.4-18.2). With more than half of the mosquito nets not found after only two semesters of follow-up, the average percentage of Life Net(r) found in households fell to about one in five mosquito nets distributed remaining in the third semester.\n", - "\n", - "header: Table 3 Physical integrity of the LLINs inspected in the laboratory per type and semester after three years\n", - "footer: N: Number of samples \n", - "columns: ['Semesters', 'Types', 'N', 'General State - Good condition - N', 'General State - Good condition - %', 'General State - Serviceable condition - N', 'General State - Serviceable condition - %', 'General State - Tear - N', 'General State - Tear - %']\n", - "\n", - "{\"0\":{\"Semesters\":1,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":21,\"General State - Good condition - %\":70.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":7,\"General State - Tear - %\":23.0},\"1\":{\"Semesters\":1,\"Types\":\"Life Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":28,\"General State - Good condition - %\":93.3,\"General State - Serviceable condition - N\":1,\"General State - Serviceable condition - %\":3.3,\"General State - Tear - N\":1,\"General State - Tear - %\":3.3},\"2\":{\"Semesters\":1,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":26,\"General State - Good condition - %\":86.7,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":4,\"General State - Tear - %\":13.3},\"3\":{\"Semesters\":1,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":13,\"General State - Good condition - %\":43.3,\"General State - Serviceable condition - N\":7,\"General State - Serviceable condition - %\":23.3,\"General State - Tear - N\":10,\"General State - Tear - %\":33.4},\"4\":{\"Semesters\":1,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":19,\"General State - Good condition - %\":63.3,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":11,\"General State - Tear - %\":36.7},\"5\":{\"Semesters\":2,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":18,\"General State - Good condition - %\":60.0,\"General State - Serviceable condition - N\":5,\"General State - Serviceable condition - %\":16.7,\"General State - Tear - N\":7,\"General State - Tear - %\":23.3},\"6\":{\"Semesters\":2,\"Types\":\"Life Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":24,\"General State - Good condition - %\":80.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"7\":{\"Semesters\":2,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":22,\"General State - Good condition - %\":73.3,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":6.7,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"8\":{\"Semesters\":2,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":13,\"General State - Good condition - %\":43.3,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":33.4,\"General State - Tear - N\":7,\"General State - Tear - %\":23.3},\"9\":{\"Semesters\":2,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":28,\"General State - Good condition - N\":10,\"General State - Good condition - %\":35.7,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.1,\"General State - Tear - N\":16,\"General State - Tear - %\":57.2},\"10\":{\"Semesters\":3,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":15,\"General State - Good condition - %\":50.0,\"General State - Serviceable condition - N\":5,\"General State - Serviceable condition - %\":17.0,\"General State - Tear - N\":10,\"General State - Tear - %\":33.0},\"11\":{\"Semesters\":3,\"Types\":\"Life Net\\u00ae\",\"N\":29,\"General State - Good condition - N\":18,\"General State - Good condition - %\":62.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":9,\"General State - Tear - %\":31.0},\"12\":{\"Semesters\":3,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":18,\"General State - Good condition - %\":60.0,\"General State - Serviceable condition - N\":12,\"General State - Serviceable condition - %\":40.0,\"General State - Tear - N\":0,\"General State - Tear - %\":0.0},\"13\":{\"Semesters\":3,\"Types\":\"Olyset Net\\u00ae\",\"N\":28,\"General State - Good condition - N\":7,\"General State - Good condition - %\":25.0,\"General State - Serviceable condition - N\":9,\"General State - Serviceable condition - %\":32.0,\"General State - Tear - N\":12,\"General State - Tear - %\":43.0},\"14\":{\"Semesters\":3,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":19,\"General State - Good condition - %\":63.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":9,\"General State - Tear - %\":30.0},\"15\":{\"Semesters\":4,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":1,\"General State - Good condition - %\":3.0,\"General State - Serviceable condition - N\":20,\"General State - Serviceable condition - %\":67.0,\"General State - Tear - N\":9,\"General State - Tear - %\":30.0},\"16\":{\"Semesters\":4,\"Types\":\"Life Net\\u00ae\",\"N\":29,\"General State - Good condition - N\":25,\"General State - Good condition - %\":86.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":1,\"General State - Tear - %\":3.0},\"17\":{\"Semesters\":4,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":14,\"General State - Good condition - %\":47.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":13,\"General State - Tear - %\":43.0},\"18\":{\"Semesters\":4,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":0,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":24,\"General State - Serviceable condition - %\":80.0,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"19\":{\"Semesters\":4,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":11,\"General State - Good condition - %\":37.0,\"General State - Serviceable condition - N\":11,\"General State - Serviceable condition - %\":37.0,\"General State - Tear - N\":8,\"General State - Tear - %\":27.0},\"20\":{\"Semesters\":5,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":29,\"General State - Good condition - N\":10,\"General State - Good condition - %\":34.0,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":34.0,\"General State - Tear - N\":9,\"General State - Tear - %\":31.0},\"21\":{\"Semesters\":5,\"Types\":\"Life Net\\u00ae\",\"N\":15,\"General State - Good condition - N\":15,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":0,\"General State - Tear - %\":0.0},\"22\":{\"Semesters\":5,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":16,\"General State - Good condition - %\":53.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":11,\"General State - Tear - %\":37.0},\"23\":{\"Semesters\":5,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":5,\"General State - Good condition - %\":17.0,\"General State - Serviceable condition - N\":18,\"General State - Serviceable condition - %\":60.0,\"General State - Tear - N\":7,\"General State - Tear - %\":23.0},\"24\":{\"Semesters\":5,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":29,\"General State - Good condition - N\":16,\"General State - Good condition - %\":55.0,\"General State - Serviceable condition - N\":6,\"General State - Serviceable condition - %\":21.0,\"General State - Tear - N\":7,\"General State - Tear - %\":24.0},\"25\":{\"Semesters\":6,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":21,\"General State - Good condition - N\":1,\"General State - Good condition - %\":5.0,\"General State - Serviceable condition - N\":18,\"General State - Serviceable condition - %\":86.0,\"General State - Tear - N\":3,\"General State - Tear - %\":14.0},\"26\":{\"Semesters\":6,\"Types\":\"Life Net\\u00ae\",\"N\":10,\"General State - Good condition - N\":0,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":10,\"General State - Tear - %\":100.0},\"27\":{\"Semesters\":6,\"Types\":\"NetProtect\\u00ae\",\"N\":21,\"General State - Good condition - N\":15,\"General State - Good condition - %\":71.0,\"General State - Serviceable condition - N\":1,\"General State - Serviceable condition - %\":5.0,\"General State - Tear - N\":5,\"General State - Tear - %\":24.0},\"28\":{\"Semesters\":6,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":2,\"General State - Good condition - %\":7.0,\"General State - Serviceable condition - N\":24,\"General State - Serviceable condition - %\":80.0,\"General State - Tear - N\":4,\"General State - Tear - %\":13.0},\"29\":{\"Semesters\":6,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":15,\"General State - Good condition - %\":50.0,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":33.0,\"General State - Tear - N\":5,\"General State - Tear - %\":17.0}}\n", - "\n", - "header: Competing interests\n", - "\n", - "The authors declare that they have no competing interests.\n", - "\n", - "header: Physical integrity of LLINs\n", - "\n", - "The condition of each LLIN was checked every six months. Physical integrity of sampled LLINs was assessed in the laboratory by searching for holes or tears on 170 Dawa Plus(r) 2.0, 171 NetProtect(r), 143 Life Net(r), 178 Olyset Net(r) and 177 PermaNet(r) 2.0. Holes were classified as size 1 (0.5-2 cm diameter), size 2 (2-10 cm diameter) or size 3 (diameter > 10 cm) [28]. The proportional hole index (pHI) value was calculated on each LLIN inspected per WHO guidelines [28, 29]. It is the sum of the proportional indexes by categories. The proportional index for a category was the product of the number of holes in category and the index attributed to that size:\n", - "\n", - "\\[\\begin{array}{l} {\\text{pH}} \\equiv \\neq \\text{size}\\;1\\;\\text{holes}\\;\\times\\;1+(\\text{\\#size}\\;2\\;\\text{holes}\\; \\times\\;23)\\\\ {}\n", - "\n", - "\n", - "\n", - "{\n", - "\n", - "\n", - "sampling pattern recommended by WHOPES [28]. For all the net samples, insecticide from five swatches of all the four sides and one from the top were extracted and analysed. Each specimen was trimmed to a 10 cm x 10 cm square (0.010m2) using a die cutting in a pneumatic press. During the cutting operation, each specimen was sandwiched between layers of aluminum foil to prevent cross-contamination. The specimen set from each net was analysed as a group to yield an average value of insecticide concentration for the whole net. Chemical analysis was based on methods published by the Collaborative International Pesticides Analytical Council (CIPAC). Deltamethrin analysis of PermaNet(r)2.0 and Dawa Plus(r) samples was based on CIPAC Method 333 [32-34].\n", - "\n", - "header: Data entry and statistical analysis\n", - "\n", - "Household survey data were entered on EPI data Entry 3.0, exported to Excel Microsoft office 2010 and analysed with R software. The calculation of proportions and averages was done according to the normal law by 95% Confidence Intervals (CI). Comparisons and proportions were made by Chi-squared tests (kh2) of homogeneity. Generalized linear models were performed to understand the relationship between mosquito mortality and LLIN washing and mortality bioassay results and insecticide chemical content. The analysis of the condition of the mosquito net, the values obtained for pHI, the torn surface and its shape was used to establish one of the criteria of durability [28]; a mosquito net was in good condition when the pHI was between 0 and 64, is usable when pHI was in 65-642 and was too torn when the pHI was greater than 643 [30]. The acceptable residual efficacy of each type of LLIN was determined based on WHO criteria [30].\n", - "\n", - "Residual efficacy was optimal if the KD 60 or the mortality rate (MR), defined as the number of dead females\n", - "relative to the total number of mosquitoes exposed per mosquito net was >= 95% or >= 80%, respectively, after 20 washes in the laboratory or after three years of use [28]. The proportion of mosquito nets meeting optimal bio efficacy levels of KD60 and mortality rates were determined for each type of LLINs by performing cone bioassays in the laboratory. A minimal bio-efficacy criteria of >= 75% for KD or >= 50% mortality rate was used to determine the efficacy status of LLINs [28]. The MR was corrected by the Abbott formula [35] if the mortality rate for controls was less than 20% and the bioassay was redone if it was greater than 20%. Generalized linear regression models were run to estimate the relationship in mortality rate between washed and non-washed mosquito nets.\n", - "\n", - "The retention rate was calculated for each type of LLIN at each follow up period. It was defined as the ratio of the number of the original study mosquito nets available in households to the total number of mosquito nets initially distributed. The mosquito nets declared lost but found in the following survey were included in the calculation of the retention rate of the previous semester.\n", - "\n", - "header: Table 1: Characteristics of types of LLINs distributed in study areas\n", - "footer: None\n", - "columns: ['Type of LLINs', 'Manufacturers', 'Material', 'Mesh (holes/ square inch2)', 'Denier', 'Insecticide', 'Standard Dose (mg/ m2)']\n", - "\n", - "{\"0\":{\"Type of LLINs\":\"NetProtect\\u00ae\",\"Manufacturers\":\"Intelligent Insect Control, France\",\"Material\":\"Polyethylene\",\"Mesh (holes\\/ square inch2)\":136,\"Denier\":\"118\",\"Insecticide\":\"Deltamethrin\",\"Standard Dose (mg\\/ m2)\":68},\"1\":{\"Type of LLINs\":\"PermaNet\\u00ae 2.0\",\"Manufacturers\":\"Vestergaard-Frandsen, Suisse\",\"Material\":\"Polyester\",\"Mesh (holes\\/ square inch2)\":156,\"Denier\":\"75\",\"Insecticide\":\"Deltamethrin\",\"Standard Dose (mg\\/ m2)\":55},\"2\":{\"Type of LLINs\":\"Dawa Plus\\u00ae 2.0\",\"Manufacturers\":\"Tana Netting, CO,LTD,Thailand\",\"Material\":\"Polyester\",\"Mesh (holes\\/ square inch2)\":156,\"Denier\":\"75\",\"Insecticide\":\"Deltamethrin\",\"Standard Dose (mg\\/ m2)\":80},\"3\":{\"Type of LLINs\":\"Olyset Net\\u00ae\",\"Manufacturers\":\"Sumitomo Chemical, Japon\",\"Material\":\"Polyethylene\",\"Mesh (holes\\/ square inch2)\":56,\"Denier\":\"> 150\",\"Insecticide\":\"Permethrin\",\"Standard Dose (mg\\/ m2)\":1000},\"4\":{\"Type of LLINs\":\"Life Net\\u00ae\",\"Manufacturers\":\"Bayer CropSciences, France\",\"Material\":\"Polypropylene\",\"Mesh (holes\\/ square inch2)\":156,\"Denier\":\"110\",\"Insecticide\":\"Deltamethrin\",\"Standard Dose (mg\\/ m2)\":340}}\n", - "\n", - "header: Use and maintenance of LLINs\n", - "\n", - "The regular use of the mosquito nets (use the night before the survey) at the end of the follow up was 23.3%, 38.5%, 7.3%, 78.3% and 16.1% for the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r) Olyset Net(r) and PermaNet(r) 2.0 types, respectively. For the NetProtect(r) this rate was statistically lower compared to the Life Net(r) and Olyset Net(r) (Fisher's exact test, OR: 0.13; 95% CI: 0.017-0.83, P = 0.014; Fisher's exact test, OR: 0.022; 95% CI 0.017-0.83, P < 0.001).\n", - "\n", - "Dawa Plus(r) 2.0 and PermaNet(r) 2.0 used the night before the survey consistently exceeded 50% during the first four semesters. For Olyset Net(r), this rate was always above 60% during the three years of follow-up. In contrast, the NetProtect(r) and Life Net(r) types were the least used in households. Their regular use rates were only satisfactory in the first two semesters following LLINs distribution, with 52.6% (95% CI 47.7-57.5) for NetProtect(r) in semester one and 53% (95% CI 46-59.6) for Life Net(r) in the second.\n", - "\n", - "For all LLIN types distributed, only 19% (95% CI 18-20) were washed. The results obtained with washing habits showed that 66% (95% CI 64-69) of the washed mosquito nets were washed with warm water. In addition, 73% (95% CI 71-76) of the cases used local soap and 50% of the mosquito net was dried in shade after the washing.\n", - "\n", - "header: Conclusions\n", - "\n", - "The evaluation of LLINs after three years of use revealed a loss of integrity of almost all types of nets distributed. Despite this loss of integrity, biological efficacy was maintained for the Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Life Net(r) brands.\n", - "\n", - "header: Abbreviations\n", - "\n", - "Cl 95%: Confidence interval 95%: CIO: Collaborative international pesticides analytical council; KD60: Proportion of mosquitoes knocked down at 60 min post-exposure; HPLC: High performance liquid chromatography; IQR: Intra quarter-time; LINK: Long-lasting insecticidal nets; pH: Proportional hole index; MW: World Health Organization; WHOPS: World Health Organization pesticide evaluation scheme; UV: Ultraviolet; PVC: Polyvinyl chloride; CDC: Centers for disease control and prevention; MR: Mortality rate; CNRS: National research on contract for health; OMVS: Senegal river basin development organization; NMC: National malaria control programme; P: Probability; OR: Odd ratio.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "The data used and analysed during the current study are available from the corresponding author on reasonable request.\n", - "\n", - "header: Funding\n", - "\n", - "- This work was supported by President's Malaria Initiative and Universite Cheikh Anta Diop (Dakar).\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: PermaNet(r) 2.0 and Dawa Plus(r) 2.0: Life Net(r) and NetProtect(r)\n", - "\n", - "Each specimen set was weighed and placed in a 250 ml round-bottom boiling flask followed by the addition of 95 ml of xylene and 5 ml of a known concentration of internal standard dipropyl phthalate, (2 mg/ml). The flask was fitted with a reflux condenser and heated to boiling for 30 min. After cooling, approximately 2.5 ml of the extract was filtered and transferred to a glass tube and evaporated to dryness under a stream of dry nitrogen for 30 min at 60 degC. A known volume (0.75 ml) of the mobile phase (94/6 (v/v) isooctane/1, 4-dioxane) was used to reconstitute the residue and was transferred to a sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter. The filtrate was centrifuged (500g) for 2 min and transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Gas chromatography analysis\n", - "\n", - "The extracts were analysed using an Agilent 6890 N chromatograph fitted with a 30 m x 0.25 mm (i.d.) fused silica DB-1 capillary column coated with 0.25 mm cross linked polydimethylsiloxane stationary phase. Ultra-high purity nitrogen (1.2 ml/min) was used as the carrier gas. Injector port, column oven, and detector temperatures were 265 degC, 240 degC, and 300 degC, respectively. Flame ionization (FID) was used for analyte detection. Two injections were used for each sample and the results averaged. Permethrin concentration was calculated by comparing permethrin/triphenyl phosphate peak area ratios against a calibration curve generated from solutions containing known permethrin /triphenyl phosphate mass ratios.\n", - "\n", - "header: Extraction of permethrin for Olyset Net(r)\n", - "\n", - "Permethrin analysis of Olyset Net(r) samples was based on CIPAC Method 331 [31]. Each specimen set was weighed and placed in a 100 ml round-bottom boiling flask, followed by heptane (45 ml) and triphenyl phosphate internal standard (5.0 ml of known concentration in heptane). The flask was fitted with a reflux condenser and heated to boiling for 45 min. After cooling, approximately 1.5 ml of the extract was transferred to a chromatographic sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Author details\n", - "\n", - "- Laboratoire d'Ecologie Vectorieile et Parastaire, Département de Biologie Animal, Faculte Des Sciences et Techniques, Universite Cheikh Anta Diop, Dakar, Senegal. 2institut Pasteur de Dakar, Dakar, Senegal. 3Laboratoire de Télédétection Appliquee, (ITA/IST/FST/UCAD, Dakar, Senegal. 4Division of Parabolic Diseases and Malaria, Centers for Disease Control (CDC) and Prevention, Atlanta, GA, USA.\n", - "\n", - "header: Mosquito net coverage\n", - "\n", - "A total of 3012 nets were distributed in 1249 households (Table 2). The overall average household coverage, 94% (95% CI 92.68-95.3), was 68.2% (95% CI 63.63-72.77) and 92% (95% CI 90-94) in Mbagame and Thies area villages, respectively. Moreover, the average percentage of households receiving only one mosquito net was 26% (95% CI 23-28) in all areas. The average percentage of households in Mbagame and Thies receiving only one mosquito net was estimated as 41.8% (95% CI 36.9-46.8) and 17.4% (95% CI 15-20.6), respectively.\n", - "\n", - "The global coverage of sleeping spaces (3,012/3,840) was 78% (95% CI 77-78). However, the sleeping space coverage in Mbagame area was estimated at 68.2% (95% CI: 65-70), and 95.3% (95% CI 94-96) in the villages surrounding Thies.\n", - "\n", - "header: Extraction of deltamethrin\n", - "\n", - "Each specimen set was weighed and placed in a 125 ml screw capped Erlenmeyer flask and 50 ml of the extraction solvent mixture was added making sure that the net was completely submerged in the mixture. The flask was tightly capped and sealed with paraffin film before placing in an ultrasonic bath for 15 min. Later the flask was shaken in a bath at 25 degC for 30 min at a frequency of 155 cycles per min. The extract was transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Competing interests\n", - "\n", - "The authors declare that they have no competing interests.\n", - "\n", - "header: High performance liquid chromatography (HPLC) analysis\n", - "\n", - "The deltamethrin content was analysed using Agilent 1200 HPLC equipped with a UV detector set at 230 nm and a 150 x 4.6 mm (i.d.) Ascents Si 5 mm column held at 40 degC. The mobile phase was 94/6 (v/v) isooctane/1, 4-dioxane with a flow rate of 1.5 ml/min. For each extract, three injections of 20 ml were made. Injections, calibrations, and quantification of the deltamethrin content were followed as per the procedure in the Collaborative International Pesticides Analytical Council (CIPAC) 333 [32-34].\n", - "\n", - "header: Methods\n", - "\n", - "A total of five brands of LLINs were distributed to households: NetProtect(r), PermaNet(r) 2.0, Dawa Plus(r) 2.0, Olyset Net(r) and Life Net(r) (Table 1). NetProtect(r) mosquito nets were white, rectangular (length = 190, width = 180 and height = 150 cm) made of 118 denier polyethylene mono filaments and 136 holes/in2 mesh. PermaNet(r) 2.0 mosquito nets were white, rectangular (length = 190, width = 180 and height = 200 cm), made with 75 denier polyester filament tulle and 156 holes/inch2 mesh. Dawa Plus(r) 2.0 were white, rectangular (length = 200, width = 160 and height = 180 cm), made of polyester multi-filament tulle, 75 deniers and 156 holes/inch2 mesh. Olyset Net(r) were white, conical (circumference 1250 cm, height = 250 cm), made with a denier polyethylene mono filament tulle greater than 150 cm and 56 holes/inch2 mesh. Life Net(r) nets were the only mosquito nets made from polypropylene, they were white, rectangular (length = 190, width = 180 and height = 150 cm) made with multi-filament tulle with 110 denier and 156 holes/inch2 mesh.\n", - "\n", - "Aside from the Olyset Net(r) mosquito nets which were treated with permethrin, all other nets distributed were impregnated with deltamethrin. Olyset Net(r) and Life Net(r) were donated by OMVS (Senegal River Basin Development Organization) and BAYER AG (Germany),\n", - "respectively, while the three other brands (PermaNet(r) 2.0, Dawa Plus(r) 2.0 and NetProtect(r)) were purchased from vendors approved by manufacturers.\n", - "\n", - "header: Abbreviations\n", - "\n", - "Cl 95%: Confidence interval 95%: CIO: Collaborative international pesticides analytical council; KD60: Proportion of mosquitoes knocked down at 60 min post-exposure; HPLC: High performance liquid chromatography; IQR: Intra quarter-time; LINK: Long-lasting insecticidal nets; pH: Proportional hole index; MW: World Health Organization; WHOPS: World Health Organization pesticide evaluation scheme; UV: Ultraviolet; PVC: Polyvinyl chloride; CDC: Centers for disease control and prevention; MR: Mortality rate; CNRS: National research on contract for health; OMVS: Senegal river basin development organization; NMC: National malaria control programme; P: Probability; OR: Odd ratio.\n", - "\n", - "header: Conclusions\n", - "\n", - "The evaluation of LLINs after three years of use revealed a loss of integrity of almost all types of nets distributed. Despite this loss of integrity, biological efficacy was maintained for the Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Life Net(r) brands.\n", - "\n", - "header: Physical integrity\n", - "\n", - "At least 83% (95% CI 80-90) of mosquito nets had holes (all types of holes) at the end of the study. Except the Life Net(r), the average number of holes increased with time for all LLINs. For the LLINs inspected in laboratory, at the end of the 6th semester of follow-up, the majority of them had holes, with average proportions of 95.2% 95%, 93.3%, 100% and 60% for Dawa Plus(r) 2.0, NetProtect(r) PermaNet(r) 2.0, Olyset Net(r) and Life Net(r), respectively. The average number of holes remained relatively low for Life Net(r) (Fisher's exact test, OR: 12.02; 95% CI 0.96-684.89, P = 0.027).\n", - "\n", - "At each semester, size 1 holes (Fig. 3) were predominant for all types of mosquito nets. The average number of holes (all types) per mosquito net was 39 per LLIN at the end of six semesters of study. It was 13, 39, 15, 48 and 54 respectively for Life Net(r), NetProtect(r) Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Olyset Net(r), respectively. Only NetProtect(r) and PermaNet(r) 2.0 types were still in good condition at the end of the three-year study (Table 3). Proportions of mosquito nets in good condition in\n", - "\n", - "Figure 2: Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\n", - "households were 71% (NetProtect(r)) and 50% (PernaNet(r) 2.0) in both mosquito nets.\n", - "\n", - "header: Results\n", - "\n", - "A total of 1,249 households were enrolled in both study areas. On average, 92.7% (95% CI 90-94) of heads of households were men, with an average 53 years of age. This average percentage was 78.2% in the Mbagame area with an average age of 52 years (95% CI 49-55) and 94.8% in the villages around Thies with a mean age of 53 years (95% CI 51.6-54.4) (P < 0.001). The average percentage of heads of households with any schooling was 38.4% (95% CI 34-42). The gender breakdown was 96% for men (n = 456) and 4% for women (n = 19).\n", - "\n", - "Of 604 households, 37.7% (228/604) had means of transportation among which 68% (95% CI 61-74) used carts while only 14% (95% CI 8-20) owned cars. The overall average percentage of households with electricity was 31% (95% CI 27-35). In Mbagame village, 87.2% households had electricity compared to an average of 22.6% for the study villages near Thies (_kh_2 = 132.4377, df = 1, P < 0.0001). Wood was the main form of fuel for cooking in 97.7% of households in both study areas.\n", - "\n", - "header: Rate of sampling mosquito nets, retention of LLINs\n", - "\n", - "From the beginning of the study in 2011 to the end in 2014 (6 semesters), 839 mosquito nets (all types) were removed representing 93.2% of the expected 900 LLINs to be removed (Fig. 2, Table 3). Of the 180 mosquito nets of each brand expected to be sampled, 94.4%, 79.4%, 94.4%, 98.9% and 98.3% of the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r), Olyset Net(r) and PermaNet(r) 2.0, respectively, were removed from the field. The number of mosquito nets sampled was less than the 28-30 units expected in the 5th and 6th semester for Life Net(r), and in the 6th semester for Dawa Plus(r) 2.0 and NetProtect(r). At the end of the study, the retention rate of all five LLIN types was 12.5% (95% CI 11.4-13.7) based on the total number of nets distributed and was relatively better for Olyset Net(r) at 20.5% (95% CI 17.8-23.4) and to a lesser extent for Dawa Plus(r) 2.0 with 15.1% (95% CI 12.4-18.2). With more than half of the mosquito nets not found after only two semesters of follow-up, the average percentage of Life Net(r) found in households fell to about one in five mosquito nets distributed remaining in the third semester.\n", - "\n", - "header: Data entry and statistical analysis\n", - "\n", - "Household survey data were entered on EPI data Entry 3.0, exported to Excel Microsoft office 2010 and analysed with R software. The calculation of proportions and averages was done according to the normal law by 95% Confidence Intervals (CI). Comparisons and proportions were made by Chi-squared tests (kh2) of homogeneity. Generalized linear models were performed to understand the relationship between mosquito mortality and LLIN washing and mortality bioassay results and insecticide chemical content. The analysis of the condition of the mosquito net, the values obtained for pHI, the torn surface and its shape was used to establish one of the criteria of durability [28]; a mosquito net was in good condition when the pHI was between 0 and 64, is usable when pHI was in 65-642 and was too torn when the pHI was greater than 643 [30]. The acceptable residual efficacy of each type of LLIN was determined based on WHO criteria [30].\n", - "\n", - "Residual efficacy was optimal if the KD 60 or the mortality rate (MR), defined as the number of dead females\n", - "relative to the total number of mosquitoes exposed per mosquito net was >= 95% or >= 80%, respectively, after 20 washes in the laboratory or after three years of use [28]. The proportion of mosquito nets meeting optimal bio efficacy levels of KD60 and mortality rates were determined for each type of LLINs by performing cone bioassays in the laboratory. A minimal bio-efficacy criteria of >= 75% for KD or >= 50% mortality rate was used to determine the efficacy status of LLINs [28]. The MR was corrected by the Abbott formula [35] if the mortality rate for controls was less than 20% and the bioassay was redone if it was greater than 20%. Generalized linear regression models were run to estimate the relationship in mortality rate between washed and non-washed mosquito nets.\n", - "\n", - "The retention rate was calculated for each type of LLIN at each follow up period. It was defined as the ratio of the number of the original study mosquito nets available in households to the total number of mosquito nets initially distributed. The mosquito nets declared lost but found in the following survey were included in the calculation of the retention rate of the previous semester.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "The data used and analysed during the current study are available from the corresponding author on reasonable request.\n", - "\n", - "header: Table 3 Physical integrity of the LLINs inspected in the laboratory per type and semester after three years\n", - "footer: N: Number of samples \n", - "columns: ['Semesters', 'Types', 'N', 'General State - Good condition - N', 'General State - Good condition - %', 'General State - Serviceable condition - N', 'General State - Serviceable condition - %', 'General State - Tear - N', 'General State - Tear - %']\n", - "\n", - "{\"0\":{\"Semesters\":1,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":21,\"General State - Good condition - %\":70.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":7,\"General State - Tear - %\":23.0},\"1\":{\"Semesters\":1,\"Types\":\"Life Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":28,\"General State - Good condition - %\":93.3,\"General State - Serviceable condition - N\":1,\"General State - Serviceable condition - %\":3.3,\"General State - Tear - N\":1,\"General State - Tear - %\":3.3},\"2\":{\"Semesters\":1,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":26,\"General State - Good condition - %\":86.7,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":4,\"General State - Tear - %\":13.3},\"3\":{\"Semesters\":1,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":13,\"General State - Good condition - %\":43.3,\"General State - Serviceable condition - N\":7,\"General State - Serviceable condition - %\":23.3,\"General State - Tear - N\":10,\"General State - Tear - %\":33.4},\"4\":{\"Semesters\":1,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":19,\"General State - Good condition - %\":63.3,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":11,\"General State - Tear - %\":36.7},\"5\":{\"Semesters\":2,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":18,\"General State - Good condition - %\":60.0,\"General State - Serviceable condition - N\":5,\"General State - Serviceable condition - %\":16.7,\"General State - Tear - N\":7,\"General State - Tear - %\":23.3},\"6\":{\"Semesters\":2,\"Types\":\"Life Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":24,\"General State - Good condition - %\":80.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"7\":{\"Semesters\":2,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":22,\"General State - Good condition - %\":73.3,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":6.7,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"8\":{\"Semesters\":2,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":13,\"General State - Good condition - %\":43.3,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":33.4,\"General State - Tear - N\":7,\"General State - Tear - %\":23.3},\"9\":{\"Semesters\":2,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":28,\"General State - Good condition - N\":10,\"General State - Good condition - %\":35.7,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.1,\"General State - Tear - N\":16,\"General State - Tear - %\":57.2},\"10\":{\"Semesters\":3,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":15,\"General State - Good condition - %\":50.0,\"General State - Serviceable condition - N\":5,\"General State - Serviceable condition - %\":17.0,\"General State - Tear - N\":10,\"General State - Tear - %\":33.0},\"11\":{\"Semesters\":3,\"Types\":\"Life Net\\u00ae\",\"N\":29,\"General State - Good condition - N\":18,\"General State - Good condition - %\":62.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":9,\"General State - Tear - %\":31.0},\"12\":{\"Semesters\":3,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":18,\"General State - Good condition - %\":60.0,\"General State - Serviceable condition - N\":12,\"General State - Serviceable condition - %\":40.0,\"General State - Tear - N\":0,\"General State - Tear - %\":0.0},\"13\":{\"Semesters\":3,\"Types\":\"Olyset Net\\u00ae\",\"N\":28,\"General State - Good condition - N\":7,\"General State - Good condition - %\":25.0,\"General State - Serviceable condition - N\":9,\"General State - Serviceable condition - %\":32.0,\"General State - Tear - N\":12,\"General State - Tear - %\":43.0},\"14\":{\"Semesters\":3,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":19,\"General State - Good condition - %\":63.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":9,\"General State - Tear - %\":30.0},\"15\":{\"Semesters\":4,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":1,\"General State - Good condition - %\":3.0,\"General State - Serviceable condition - N\":20,\"General State - Serviceable condition - %\":67.0,\"General State - Tear - N\":9,\"General State - Tear - %\":30.0},\"16\":{\"Semesters\":4,\"Types\":\"Life Net\\u00ae\",\"N\":29,\"General State - Good condition - N\":25,\"General State - Good condition - %\":86.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":1,\"General State - Tear - %\":3.0},\"17\":{\"Semesters\":4,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":14,\"General State - Good condition - %\":47.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":13,\"General State - Tear - %\":43.0},\"18\":{\"Semesters\":4,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":0,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":24,\"General State - Serviceable condition - %\":80.0,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"19\":{\"Semesters\":4,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":11,\"General State - Good condition - %\":37.0,\"General State - Serviceable condition - N\":11,\"General State - Serviceable condition - %\":37.0,\"General State - Tear - N\":8,\"General State - Tear - %\":27.0},\"20\":{\"Semesters\":5,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":29,\"General State - Good condition - N\":10,\"General State - Good condition - %\":34.0,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":34.0,\"General State - Tear - N\":9,\"General State - Tear - %\":31.0},\"21\":{\"Semesters\":5,\"Types\":\"Life Net\\u00ae\",\"N\":15,\"General State - Good condition - N\":15,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":0,\"General State - Tear - %\":0.0},\"22\":{\"Semesters\":5,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":16,\"General State - Good condition - %\":53.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":11,\"General State - Tear - %\":37.0},\"23\":{\"Semesters\":5,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":5,\"General State - Good condition - %\":17.0,\"General State - Serviceable condition - N\":18,\"General State - Serviceable condition - %\":60.0,\"General State - Tear - N\":7,\"General State - Tear - %\":23.0},\"24\":{\"Semesters\":5,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":29,\"General State - Good condition - N\":16,\"General State - Good condition - %\":55.0,\"General State - Serviceable condition - N\":6,\"General State - Serviceable condition - %\":21.0,\"General State - Tear - N\":7,\"General State - Tear - %\":24.0},\"25\":{\"Semesters\":6,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":21,\"General State - Good condition - N\":1,\"General State - Good condition - %\":5.0,\"General State - Serviceable condition - N\":18,\"General State - Serviceable condition - %\":86.0,\"General State - Tear - N\":3,\"General State - Tear - %\":14.0},\"26\":{\"Semesters\":6,\"Types\":\"Life Net\\u00ae\",\"N\":10,\"General State - Good condition - N\":0,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":10,\"General State - Tear - %\":100.0},\"27\":{\"Semesters\":6,\"Types\":\"NetProtect\\u00ae\",\"N\":21,\"General State - Good condition - N\":15,\"General State - Good condition - %\":71.0,\"General State - Serviceable condition - N\":1,\"General State - Serviceable condition - %\":5.0,\"General State - Tear - N\":5,\"General State - Tear - %\":24.0},\"28\":{\"Semesters\":6,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":2,\"General State - Good condition - %\":7.0,\"General State - Serviceable condition - N\":24,\"General State - Serviceable condition - %\":80.0,\"General State - Tear - N\":4,\"General State - Tear - %\":13.0},\"29\":{\"Semesters\":6,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":15,\"General State - Good condition - %\":50.0,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":33.0,\"General State - Tear - N\":5,\"General State - Tear - %\":17.0}}\n", - "\n", - "header: Table 5 Multiple regression washing and efficiency of LLINs\n", - "footer: CI: Confidence interval\n", - "columns: ['Parameter - Unnamed: 0_level_1', '95% Cl for odds Ratio - p-value', '95% Cl for odds Ratio - Lower', '95% Cl for odds Ratio - Odds ratio', '95% Cl for odds Ratio - Upper']\n", - "\n", - "{\"0\":{\"Parameter - Unnamed: 0_level_1\":\"Mortality (Intercept)\",\"95% Cl for odds Ratio - p-value\":\"<2.10\\u221216\",\"95% Cl for odds Ratio - Lower\":\"\\u2013\",\"95% Cl for odds Ratio - Odds ratio\":\"\\u2013\",\"95% Cl for odds Ratio - Upper\":\"\\u2013\"},\"1\":{\"Parameter - Unnamed: 0_level_1\":\"Ever Washed\",\"95% Cl for odds Ratio - p-value\":\"2.18 10\\u221211\",\"95% Cl for odds Ratio - Lower\":\"0.89\",\"95% Cl for odds Ratio - Odds ratio\":\"0.91\",\"95% Cl for odds Ratio - Upper\":\"0.94\"},\"2\":{\"Parameter - Unnamed: 0_level_1\":\"Insecticides\",\"95% Cl for odds Ratio - p-value\":\"2 10\\u221216\",\"95% Cl for odds Ratio - Lower\":\"1.0005\",\"95% Cl for odds Ratio - Odds ratio\":\"1.0006\",\"95% Cl for odds Ratio - Upper\":\"1.0007\"}}\n", - "\n", - "header: Physical integrity of LLINs\n", - "\n", - "The condition of each LLIN was checked every six months. Physical integrity of sampled LLINs was assessed in the laboratory by searching for holes or tears on 170 Dawa Plus(r) 2.0, 171 NetProtect(r), 143 Life Net(r), 178 Olyset Net(r) and 177 PermaNet(r) 2.0. Holes were classified as size 1 (0.5-2 cm diameter), size 2 (2-10 cm diameter) or size 3 (diameter > 10 cm) [28]. The proportional hole index (pHI) value was calculated on each LLIN inspected per WHO guidelines [28, 29]. It is the sum of the proportional indexes by categories. The proportional index for a category was the product of the number of holes in category and the index attributed to that size:\n", - "\n", - "\\[\\begin{array}{l} {\\text{pH}} \\equiv \\neq \\text{size}\\;1\\;\\text{holes}\\;\\times\\;1+(\\text{\\#size}\\;2\\;\\text{holes}\\; \\times\\;23)\\\\ {}\n", - "\n", - "\n", - "\n", - "{\n", - "\n", - "\n", - "sampling pattern recommended by WHOPES [28]. For all the net samples, insecticide from five swatches of all the four sides and one from the top were extracted and analysed. Each specimen was trimmed to a 10 cm x 10 cm square (0.010m2) using a die cutting in a pneumatic press. During the cutting operation, each specimen was sandwiched between layers of aluminum foil to prevent cross-contamination. The specimen set from each net was analysed as a group to yield an average value of insecticide concentration for the whole net. Chemical analysis was based on methods published by the Collaborative International Pesticides Analytical Council (CIPAC). Deltamethrin analysis of PermaNet(r)2.0 and Dawa Plus(r) samples was based on CIPAC Method 333 [32-34].\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: PermaNet(r) 2.0 and Dawa Plus(r) 2.0: Life Net(r) and NetProtect(r)\n", - "\n", - "Each specimen set was weighed and placed in a 250 ml round-bottom boiling flask followed by the addition of 95 ml of xylene and 5 ml of a known concentration of internal standard dipropyl phthalate, (2 mg/ml). The flask was fitted with a reflux condenser and heated to boiling for 30 min. After cooling, approximately 2.5 ml of the extract was filtered and transferred to a glass tube and evaporated to dryness under a stream of dry nitrogen for 30 min at 60 degC. A known volume (0.75 ml) of the mobile phase (94/6 (v/v) isooctane/1, 4-dioxane) was used to reconstitute the residue and was transferred to a sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter. The filtrate was centrifuged (500g) for 2 min and transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Extraction of permethrin for Olyset Net(r)\n", - "\n", - "Permethrin analysis of Olyset Net(r) samples was based on CIPAC Method 331 [31]. Each specimen set was weighed and placed in a 100 ml round-bottom boiling flask, followed by heptane (45 ml) and triphenyl phosphate internal standard (5.0 ml of known concentration in heptane). The flask was fitted with a reflux condenser and heated to boiling for 45 min. After cooling, approximately 1.5 ml of the extract was transferred to a chromatographic sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Gas chromatography analysis\n", - "\n", - "The extracts were analysed using an Agilent 6890 N chromatograph fitted with a 30 m x 0.25 mm (i.d.) fused silica DB-1 capillary column coated with 0.25 mm cross linked polydimethylsiloxane stationary phase. Ultra-high purity nitrogen (1.2 ml/min) was used as the carrier gas. Injector port, column oven, and detector temperatures were 265 degC, 240 degC, and 300 degC, respectively. Flame ionization (FID) was used for analyte detection. Two injections were used for each sample and the results averaged. Permethrin concentration was calculated by comparing permethrin/triphenyl phosphate peak area ratios against a calibration curve generated from solutions containing known permethrin /triphenyl phosphate mass ratios.\n", - "\n", - "header: Extraction of deltamethrin\n", - "\n", - "Each specimen set was weighed and placed in a 125 ml screw capped Erlenmeyer flask and 50 ml of the extraction solvent mixture was added making sure that the net was completely submerged in the mixture. The flask was tightly capped and sealed with paraffin film before placing in an ultrasonic bath for 15 min. Later the flask was shaken in a bath at 25 degC for 30 min at a frequency of 155 cycles per min. The extract was transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Author details\n", - "\n", - "- Laboratoire d'Ecologie Vectorieile et Parastaire, Département de Biologie Animal, Faculte Des Sciences et Techniques, Universite Cheikh Anta Diop, Dakar, Senegal. 2institut Pasteur de Dakar, Dakar, Senegal. 3Laboratoire de Télédétection Appliquee, (ITA/IST/FST/UCAD, Dakar, Senegal. 4Division of Parabolic Diseases and Malaria, Centers for Disease Control (CDC) and Prevention, Atlanta, GA, USA.\n", - "\n", - "header: Mosquito net coverage\n", - "\n", - "A total of 3012 nets were distributed in 1249 households (Table 2). The overall average household coverage, 94% (95% CI 92.68-95.3), was 68.2% (95% CI 63.63-72.77) and 92% (95% CI 90-94) in Mbagame and Thies area villages, respectively. Moreover, the average percentage of households receiving only one mosquito net was 26% (95% CI 23-28) in all areas. The average percentage of households in Mbagame and Thies receiving only one mosquito net was estimated as 41.8% (95% CI 36.9-46.8) and 17.4% (95% CI 15-20.6), respectively.\n", - "\n", - "The global coverage of sleeping spaces (3,012/3,840) was 78% (95% CI 77-78). However, the sleeping space coverage in Mbagame area was estimated at 68.2% (95% CI: 65-70), and 95.3% (95% CI 94-96) in the villages surrounding Thies.\n", - "\n", - "header: Abbreviations\n", - "\n", - "Cl 95%: Confidence interval 95%: CIO: Collaborative international pesticides analytical council; KD60: Proportion of mosquitoes knocked down at 60 min post-exposure; HPLC: High performance liquid chromatography; IQR: Intra quarter-time; LINK: Long-lasting insecticidal nets; pH: Proportional hole index; MW: World Health Organization; WHOPS: World Health Organization pesticide evaluation scheme; UV: Ultraviolet; PVC: Polyvinyl chloride; CDC: Centers for disease control and prevention; MR: Mortality rate; CNRS: National research on contract for health; OMVS: Senegal river basin development organization; NMC: National malaria control programme; P: Probability; OR: Odd ratio.\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Results\n", - "\n", - "A total of 1,249 households were enrolled in both study areas. On average, 92.7% (95% CI 90-94) of heads of households were men, with an average 53 years of age. This average percentage was 78.2% in the Mbagame area with an average age of 52 years (95% CI 49-55) and 94.8% in the villages around Thies with a mean age of 53 years (95% CI 51.6-54.4) (P < 0.001). The average percentage of heads of households with any schooling was 38.4% (95% CI 34-42). The gender breakdown was 96% for men (n = 456) and 4% for women (n = 19).\n", - "\n", - "Of 604 households, 37.7% (228/604) had means of transportation among which 68% (95% CI 61-74) used carts while only 14% (95% CI 8-20) owned cars. The overall average percentage of households with electricity was 31% (95% CI 27-35). In Mbagame village, 87.2% households had electricity compared to an average of 22.6% for the study villages near Thies (_kh_2 = 132.4377, df = 1, P < 0.0001). Wood was the main form of fuel for cooking in 97.7% of households in both study areas.\n", - "\n", - "header: Methods\n", - "\n", - "A total of five brands of LLINs were distributed to households: NetProtect(r), PermaNet(r) 2.0, Dawa Plus(r) 2.0, Olyset Net(r) and Life Net(r) (Table 1). NetProtect(r) mosquito nets were white, rectangular (length = 190, width = 180 and height = 150 cm) made of 118 denier polyethylene mono filaments and 136 holes/in2 mesh. PermaNet(r) 2.0 mosquito nets were white, rectangular (length = 190, width = 180 and height = 200 cm), made with 75 denier polyester filament tulle and 156 holes/inch2 mesh. Dawa Plus(r) 2.0 were white, rectangular (length = 200, width = 160 and height = 180 cm), made of polyester multi-filament tulle, 75 deniers and 156 holes/inch2 mesh. Olyset Net(r) were white, conical (circumference 1250 cm, height = 250 cm), made with a denier polyethylene mono filament tulle greater than 150 cm and 56 holes/inch2 mesh. Life Net(r) nets were the only mosquito nets made from polypropylene, they were white, rectangular (length = 190, width = 180 and height = 150 cm) made with multi-filament tulle with 110 denier and 156 holes/inch2 mesh.\n", - "\n", - "Aside from the Olyset Net(r) mosquito nets which were treated with permethrin, all other nets distributed were impregnated with deltamethrin. Olyset Net(r) and Life Net(r) were donated by OMVS (Senegal River Basin Development Organization) and BAYER AG (Germany),\n", - "respectively, while the three other brands (PermaNet(r) 2.0, Dawa Plus(r) 2.0 and NetProtect(r)) were purchased from vendors approved by manufacturers.\n", - "\n", - "header: Competing interests\n", - "\n", - "The authors declare that they have no competing interests.\n", - "\n", - "header: High performance liquid chromatography (HPLC) analysis\n", - "\n", - "The deltamethrin content was analysed using Agilent 1200 HPLC equipped with a UV detector set at 230 nm and a 150 x 4.6 mm (i.d.) Ascents Si 5 mm column held at 40 degC. The mobile phase was 94/6 (v/v) isooctane/1, 4-dioxane with a flow rate of 1.5 ml/min. For each extract, three injections of 20 ml were made. Injections, calibrations, and quantification of the deltamethrin content were followed as per the procedure in the Collaborative International Pesticides Analytical Council (CIPAC) 333 [32-34].\n", - "\n", - "header: Funding\n", - "\n", - "- This work was supported by President's Malaria Initiative and Universite Cheikh Anta Diop (Dakar).\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "The data used and analysed during the current study are available from the corresponding author on reasonable request.\n", - "\n", - "header: Physical integrity\n", - "\n", - "At least 83% (95% CI 80-90) of mosquito nets had holes (all types of holes) at the end of the study. Except the Life Net(r), the average number of holes increased with time for all LLINs. For the LLINs inspected in laboratory, at the end of the 6th semester of follow-up, the majority of them had holes, with average proportions of 95.2% 95%, 93.3%, 100% and 60% for Dawa Plus(r) 2.0, NetProtect(r) PermaNet(r) 2.0, Olyset Net(r) and Life Net(r), respectively. The average number of holes remained relatively low for Life Net(r) (Fisher's exact test, OR: 12.02; 95% CI 0.96-684.89, P = 0.027).\n", - "\n", - "At each semester, size 1 holes (Fig. 3) were predominant for all types of mosquito nets. The average number of holes (all types) per mosquito net was 39 per LLIN at the end of six semesters of study. It was 13, 39, 15, 48 and 54 respectively for Life Net(r), NetProtect(r) Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Olyset Net(r), respectively. Only NetProtect(r) and PermaNet(r) 2.0 types were still in good condition at the end of the three-year study (Table 3). Proportions of mosquito nets in good condition in\n", - "\n", - "Figure 2: Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\n", - "households were 71% (NetProtect(r)) and 50% (PernaNet(r) 2.0) in both mosquito nets.\n", - "\n", - "header: Data entry and statistical analysis\n", - "\n", - "Household survey data were entered on EPI data Entry 3.0, exported to Excel Microsoft office 2010 and analysed with R software. The calculation of proportions and averages was done according to the normal law by 95% Confidence Intervals (CI). Comparisons and proportions were made by Chi-squared tests (kh2) of homogeneity. Generalized linear models were performed to understand the relationship between mosquito mortality and LLIN washing and mortality bioassay results and insecticide chemical content. The analysis of the condition of the mosquito net, the values obtained for pHI, the torn surface and its shape was used to establish one of the criteria of durability [28]; a mosquito net was in good condition when the pHI was between 0 and 64, is usable when pHI was in 65-642 and was too torn when the pHI was greater than 643 [30]. The acceptable residual efficacy of each type of LLIN was determined based on WHO criteria [30].\n", - "\n", - "Residual efficacy was optimal if the KD 60 or the mortality rate (MR), defined as the number of dead females\n", - "relative to the total number of mosquitoes exposed per mosquito net was >= 95% or >= 80%, respectively, after 20 washes in the laboratory or after three years of use [28]. The proportion of mosquito nets meeting optimal bio efficacy levels of KD60 and mortality rates were determined for each type of LLINs by performing cone bioassays in the laboratory. A minimal bio-efficacy criteria of >= 75% for KD or >= 50% mortality rate was used to determine the efficacy status of LLINs [28]. The MR was corrected by the Abbott formula [35] if the mortality rate for controls was less than 20% and the bioassay was redone if it was greater than 20%. Generalized linear regression models were run to estimate the relationship in mortality rate between washed and non-washed mosquito nets.\n", - "\n", - "The retention rate was calculated for each type of LLIN at each follow up period. It was defined as the ratio of the number of the original study mosquito nets available in households to the total number of mosquito nets initially distributed. The mosquito nets declared lost but found in the following survey were included in the calculation of the retention rate of the previous semester.\n", - "\n", - "header: Rate of sampling mosquito nets, retention of LLINs\n", - "\n", - "From the beginning of the study in 2011 to the end in 2014 (6 semesters), 839 mosquito nets (all types) were removed representing 93.2% of the expected 900 LLINs to be removed (Fig. 2, Table 3). Of the 180 mosquito nets of each brand expected to be sampled, 94.4%, 79.4%, 94.4%, 98.9% and 98.3% of the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r), Olyset Net(r) and PermaNet(r) 2.0, respectively, were removed from the field. The number of mosquito nets sampled was less than the 28-30 units expected in the 5th and 6th semester for Life Net(r), and in the 6th semester for Dawa Plus(r) 2.0 and NetProtect(r). At the end of the study, the retention rate of all five LLIN types was 12.5% (95% CI 11.4-13.7) based on the total number of nets distributed and was relatively better for Olyset Net(r) at 20.5% (95% CI 17.8-23.4) and to a lesser extent for Dawa Plus(r) 2.0 with 15.1% (95% CI 12.4-18.2). With more than half of the mosquito nets not found after only two semesters of follow-up, the average percentage of Life Net(r) found in households fell to about one in five mosquito nets distributed remaining in the third semester.\n", - "\n", - "header: Mortality rate associated with insecticide content\n", - "\n", - "Residual efficacy greater than 95% knock down was probably correlated with the content of insecticide. The overall correlation coefficients were: r = 0.08, r = 0.08, r = 0.22, r = 0.09 and r = 0.08 for Dawa Plus(r) 2.0, NetProtect(r) Life Net(r), Olyset Net(r) and PermaNet(r) 2.0, respectively (Fig. 5). For mortality rate, the correlation coefficient was more important for Life Net(r)(r = 0.43) when compared to other LLIN types.\n", - "\n", - "The generalized linear regression models have indicated that the mortality rate was significantly decreased with washing mosquito nets (Table 5). A significant difference (p < 0.001) in mortality rate was observed between washed and unwashed mosquito nets. This mortality rate was also associated with the average the amount of insecticide content present on the net.\n", - "\n", - "header: Conclusions\n", - "\n", - "The evaluation of LLINs after three years of use revealed a loss of integrity of almost all types of nets distributed. Despite this loss of integrity, biological efficacy was maintained for the Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Life Net(r) brands.\n", - "\n", - "header: Use and maintenance of LLINs\n", - "\n", - "The regular use of the mosquito nets (use the night before the survey) at the end of the follow up was 23.3%, 38.5%, 7.3%, 78.3% and 16.1% for the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r) Olyset Net(r) and PermaNet(r) 2.0 types, respectively. For the NetProtect(r) this rate was statistically lower compared to the Life Net(r) and Olyset Net(r) (Fisher's exact test, OR: 0.13; 95% CI: 0.017-0.83, P = 0.014; Fisher's exact test, OR: 0.022; 95% CI 0.017-0.83, P < 0.001).\n", - "\n", - "Dawa Plus(r) 2.0 and PermaNet(r) 2.0 used the night before the survey consistently exceeded 50% during the first four semesters. For Olyset Net(r), this rate was always above 60% during the three years of follow-up. In contrast, the NetProtect(r) and Life Net(r) types were the least used in households. Their regular use rates were only satisfactory in the first two semesters following LLINs distribution, with 52.6% (95% CI 47.7-57.5) for NetProtect(r) in semester one and 53% (95% CI 46-59.6) for Life Net(r) in the second.\n", - "\n", - "For all LLIN types distributed, only 19% (95% CI 18-20) were washed. The results obtained with washing habits showed that 66% (95% CI 64-69) of the washed mosquito nets were washed with warm water. In addition, 73% (95% CI 71-76) of the cases used local soap and 50% of the mosquito net was dried in shade after the washing.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Country\":\"Senegal\",\"Site\":\"Mbagame\",\"Start_month\":1,\"Start_year\":2011,\"End_month\":12,\"End_year\":2014},\"S02\":{\"Country\":\"Senegal\",\"Site\":\"Thies\",\"Start_month\":1,\"Start_year\":2011,\"End_month\":12,\"End_year\":2014}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"NetProtect(r)\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":39.0,\"pHI_category\":\"Good\"},\"N02\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":48.0,\"pHI_category\":\"Good\"},\"N03\":{\"Net_type\":\"Dawa Plus(r) 2.0\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":15.0,\"pHI_category\":\"Good\"},\"N04\":{\"Net_type\":\"Olyset Net(r)\",\"Insecticide\":\"Permethrin\",\"Net_washed\":19.0,\"Net_holed\":54.0,\"pHI_category\":\"Good\"},\"N05\":{\"Net_type\":\"Life Net(r)\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":13.0,\"pHI_category\":\"Good\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: PermaNet(r) 2.0 and Dawa Plus(r) 2.0: Life Net(r) and NetProtect(r)\n", - "\n", - "Each specimen set was weighed and placed in a 250 ml round-bottom boiling flask followed by the addition of 95 ml of xylene and 5 ml of a known concentration of internal standard dipropyl phthalate, (2 mg/ml). The flask was fitted with a reflux condenser and heated to boiling for 30 min. After cooling, approximately 2.5 ml of the extract was filtered and transferred to a glass tube and evaporated to dryness under a stream of dry nitrogen for 30 min at 60 degC. A known volume (0.75 ml) of the mobile phase (94/6 (v/v) isooctane/1, 4-dioxane) was used to reconstitute the residue and was transferred to a sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter. The filtrate was centrifuged (500g) for 2 min and transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Extraction of permethrin for Olyset Net(r)\n", - "\n", - "Permethrin analysis of Olyset Net(r) samples was based on CIPAC Method 331 [31]. Each specimen set was weighed and placed in a 100 ml round-bottom boiling flask, followed by heptane (45 ml) and triphenyl phosphate internal standard (5.0 ml of known concentration in heptane). The flask was fitted with a reflux condenser and heated to boiling for 45 min. After cooling, approximately 1.5 ml of the extract was transferred to a chromatographic sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Extraction of deltamethrin\n", - "\n", - "Each specimen set was weighed and placed in a 125 ml screw capped Erlenmeyer flask and 50 ml of the extraction solvent mixture was added making sure that the net was completely submerged in the mixture. The flask was tightly capped and sealed with paraffin film before placing in an ultrasonic bath for 15 min. Later the flask was shaken in a bath at 25 degC for 30 min at a frequency of 155 cycles per min. The extract was transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", - "\n", - "header: Gas chromatography analysis\n", - "\n", - "The extracts were analysed using an Agilent 6890 N chromatograph fitted with a 30 m x 0.25 mm (i.d.) fused silica DB-1 capillary column coated with 0.25 mm cross linked polydimethylsiloxane stationary phase. Ultra-high purity nitrogen (1.2 ml/min) was used as the carrier gas. Injector port, column oven, and detector temperatures were 265 degC, 240 degC, and 300 degC, respectively. Flame ionization (FID) was used for analyte detection. Two injections were used for each sample and the results averaged. Permethrin concentration was calculated by comparing permethrin/triphenyl phosphate peak area ratios against a calibration curve generated from solutions containing known permethrin /triphenyl phosphate mass ratios.\n", - "\n", - "header: Mosquito net coverage\n", - "\n", - "A total of 3012 nets were distributed in 1249 households (Table 2). The overall average household coverage, 94% (95% CI 92.68-95.3), was 68.2% (95% CI 63.63-72.77) and 92% (95% CI 90-94) in Mbagame and Thies area villages, respectively. Moreover, the average percentage of households receiving only one mosquito net was 26% (95% CI 23-28) in all areas. The average percentage of households in Mbagame and Thies receiving only one mosquito net was estimated as 41.8% (95% CI 36.9-46.8) and 17.4% (95% CI 15-20.6), respectively.\n", - "\n", - "The global coverage of sleeping spaces (3,012/3,840) was 78% (95% CI 77-78). However, the sleeping space coverage in Mbagame area was estimated at 68.2% (95% CI: 65-70), and 95.3% (95% CI 94-96) in the villages surrounding Thies.\n", - "\n", - "header: Methods\n", - "\n", - "A total of five brands of LLINs were distributed to households: NetProtect(r), PermaNet(r) 2.0, Dawa Plus(r) 2.0, Olyset Net(r) and Life Net(r) (Table 1). NetProtect(r) mosquito nets were white, rectangular (length = 190, width = 180 and height = 150 cm) made of 118 denier polyethylene mono filaments and 136 holes/in2 mesh. PermaNet(r) 2.0 mosquito nets were white, rectangular (length = 190, width = 180 and height = 200 cm), made with 75 denier polyester filament tulle and 156 holes/inch2 mesh. Dawa Plus(r) 2.0 were white, rectangular (length = 200, width = 160 and height = 180 cm), made of polyester multi-filament tulle, 75 deniers and 156 holes/inch2 mesh. Olyset Net(r) were white, conical (circumference 1250 cm, height = 250 cm), made with a denier polyethylene mono filament tulle greater than 150 cm and 56 holes/inch2 mesh. Life Net(r) nets were the only mosquito nets made from polypropylene, they were white, rectangular (length = 190, width = 180 and height = 150 cm) made with multi-filament tulle with 110 denier and 156 holes/inch2 mesh.\n", - "\n", - "Aside from the Olyset Net(r) mosquito nets which were treated with permethrin, all other nets distributed were impregnated with deltamethrin. Olyset Net(r) and Life Net(r) were donated by OMVS (Senegal River Basin Development Organization) and BAYER AG (Germany),\n", - "respectively, while the three other brands (PermaNet(r) 2.0, Dawa Plus(r) 2.0 and NetProtect(r)) were purchased from vendors approved by manufacturers.\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Author details\n", - "\n", - "- Laboratoire d'Ecologie Vectorieile et Parastaire, Département de Biologie Animal, Faculte Des Sciences et Techniques, Universite Cheikh Anta Diop, Dakar, Senegal. 2institut Pasteur de Dakar, Dakar, Senegal. 3Laboratoire de Télédétection Appliquee, (ITA/IST/FST/UCAD, Dakar, Senegal. 4Division of Parabolic Diseases and Malaria, Centers for Disease Control (CDC) and Prevention, Atlanta, GA, USA.\n", - "\n", - "header: Results\n", - "\n", - "A total of 1,249 households were enrolled in both study areas. On average, 92.7% (95% CI 90-94) of heads of households were men, with an average 53 years of age. This average percentage was 78.2% in the Mbagame area with an average age of 52 years (95% CI 49-55) and 94.8% in the villages around Thies with a mean age of 53 years (95% CI 51.6-54.4) (P < 0.001). The average percentage of heads of households with any schooling was 38.4% (95% CI 34-42). The gender breakdown was 96% for men (n = 456) and 4% for women (n = 19).\n", - "\n", - "Of 604 households, 37.7% (228/604) had means of transportation among which 68% (95% CI 61-74) used carts while only 14% (95% CI 8-20) owned cars. The overall average percentage of households with electricity was 31% (95% CI 27-35). In Mbagame village, 87.2% households had electricity compared to an average of 22.6% for the study villages near Thies (_kh_2 = 132.4377, df = 1, P < 0.0001). Wood was the main form of fuel for cooking in 97.7% of households in both study areas.\n", - "\n", - "header: Abbreviations\n", - "\n", - "Cl 95%: Confidence interval 95%: CIO: Collaborative international pesticides analytical council; KD60: Proportion of mosquitoes knocked down at 60 min post-exposure; HPLC: High performance liquid chromatography; IQR: Intra quarter-time; LINK: Long-lasting insecticidal nets; pH: Proportional hole index; MW: World Health Organization; WHOPS: World Health Organization pesticide evaluation scheme; UV: Ultraviolet; PVC: Polyvinyl chloride; CDC: Centers for disease control and prevention; MR: Mortality rate; CNRS: National research on contract for health; OMVS: Senegal river basin development organization; NMC: National malaria control programme; P: Probability; OR: Odd ratio.\n", - "\n", - "header: Competing interests\n", - "\n", - "The authors declare that they have no competing interests.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "The data used and analysed during the current study are available from the corresponding author on reasonable request.\n", - "\n", - "header: High performance liquid chromatography (HPLC) analysis\n", - "\n", - "The deltamethrin content was analysed using Agilent 1200 HPLC equipped with a UV detector set at 230 nm and a 150 x 4.6 mm (i.d.) Ascents Si 5 mm column held at 40 degC. The mobile phase was 94/6 (v/v) isooctane/1, 4-dioxane with a flow rate of 1.5 ml/min. For each extract, three injections of 20 ml were made. Injections, calibrations, and quantification of the deltamethrin content were followed as per the procedure in the Collaborative International Pesticides Analytical Council (CIPAC) 333 [32-34].\n", - "\n", - "header: Rate of sampling mosquito nets, retention of LLINs\n", - "\n", - "From the beginning of the study in 2011 to the end in 2014 (6 semesters), 839 mosquito nets (all types) were removed representing 93.2% of the expected 900 LLINs to be removed (Fig. 2, Table 3). Of the 180 mosquito nets of each brand expected to be sampled, 94.4%, 79.4%, 94.4%, 98.9% and 98.3% of the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r), Olyset Net(r) and PermaNet(r) 2.0, respectively, were removed from the field. The number of mosquito nets sampled was less than the 28-30 units expected in the 5th and 6th semester for Life Net(r), and in the 6th semester for Dawa Plus(r) 2.0 and NetProtect(r). At the end of the study, the retention rate of all five LLIN types was 12.5% (95% CI 11.4-13.7) based on the total number of nets distributed and was relatively better for Olyset Net(r) at 20.5% (95% CI 17.8-23.4) and to a lesser extent for Dawa Plus(r) 2.0 with 15.1% (95% CI 12.4-18.2). With more than half of the mosquito nets not found after only two semesters of follow-up, the average percentage of Life Net(r) found in households fell to about one in five mosquito nets distributed remaining in the third semester.\n", - "\n", - "header: Physical integrity\n", - "\n", - "At least 83% (95% CI 80-90) of mosquito nets had holes (all types of holes) at the end of the study. Except the Life Net(r), the average number of holes increased with time for all LLINs. For the LLINs inspected in laboratory, at the end of the 6th semester of follow-up, the majority of them had holes, with average proportions of 95.2% 95%, 93.3%, 100% and 60% for Dawa Plus(r) 2.0, NetProtect(r) PermaNet(r) 2.0, Olyset Net(r) and Life Net(r), respectively. The average number of holes remained relatively low for Life Net(r) (Fisher's exact test, OR: 12.02; 95% CI 0.96-684.89, P = 0.027).\n", - "\n", - "At each semester, size 1 holes (Fig. 3) were predominant for all types of mosquito nets. The average number of holes (all types) per mosquito net was 39 per LLIN at the end of six semesters of study. It was 13, 39, 15, 48 and 54 respectively for Life Net(r), NetProtect(r) Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Olyset Net(r), respectively. Only NetProtect(r) and PermaNet(r) 2.0 types were still in good condition at the end of the three-year study (Table 3). Proportions of mosquito nets in good condition in\n", - "\n", - "Figure 2: Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\n", - "households were 71% (NetProtect(r)) and 50% (PernaNet(r) 2.0) in both mosquito nets.\n", - "\n", - "header: Funding\n", - "\n", - "- This work was supported by President's Malaria Initiative and Universite Cheikh Anta Diop (Dakar).\n", - "\n", - "header: Mortality rate associated with insecticide content\n", - "\n", - "Residual efficacy greater than 95% knock down was probably correlated with the content of insecticide. The overall correlation coefficients were: r = 0.08, r = 0.08, r = 0.22, r = 0.09 and r = 0.08 for Dawa Plus(r) 2.0, NetProtect(r) Life Net(r), Olyset Net(r) and PermaNet(r) 2.0, respectively (Fig. 5). For mortality rate, the correlation coefficient was more important for Life Net(r)(r = 0.43) when compared to other LLIN types.\n", - "\n", - "The generalized linear regression models have indicated that the mortality rate was significantly decreased with washing mosquito nets (Table 5). A significant difference (p < 0.001) in mortality rate was observed between washed and unwashed mosquito nets. This mortality rate was also associated with the average the amount of insecticide content present on the net.\n", - "\n", - "header: Conclusions\n", - "\n", - "The evaluation of LLINs after three years of use revealed a loss of integrity of almost all types of nets distributed. Despite this loss of integrity, biological efficacy was maintained for the Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Life Net(r) brands.\n", - "\n", - "header: Use and maintenance of LLINs\n", - "\n", - "The regular use of the mosquito nets (use the night before the survey) at the end of the follow up was 23.3%, 38.5%, 7.3%, 78.3% and 16.1% for the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r) Olyset Net(r) and PermaNet(r) 2.0 types, respectively. For the NetProtect(r) this rate was statistically lower compared to the Life Net(r) and Olyset Net(r) (Fisher's exact test, OR: 0.13; 95% CI: 0.017-0.83, P = 0.014; Fisher's exact test, OR: 0.022; 95% CI 0.017-0.83, P < 0.001).\n", - "\n", - "Dawa Plus(r) 2.0 and PermaNet(r) 2.0 used the night before the survey consistently exceeded 50% during the first four semesters. For Olyset Net(r), this rate was always above 60% during the three years of follow-up. In contrast, the NetProtect(r) and Life Net(r) types were the least used in households. Their regular use rates were only satisfactory in the first two semesters following LLINs distribution, with 52.6% (95% CI 47.7-57.5) for NetProtect(r) in semester one and 53% (95% CI 46-59.6) for Life Net(r) in the second.\n", - "\n", - "For all LLIN types distributed, only 19% (95% CI 18-20) were washed. The results obtained with washing habits showed that 66% (95% CI 64-69) of the washed mosquito nets were washed with warm water. In addition, 73% (95% CI 71-76) of the cases used local soap and 50% of the mosquito net was dried in shade after the washing.\n", - "\n", - "header: Data entry and statistical analysis\n", - "\n", - "Household survey data were entered on EPI data Entry 3.0, exported to Excel Microsoft office 2010 and analysed with R software. The calculation of proportions and averages was done according to the normal law by 95% Confidence Intervals (CI). Comparisons and proportions were made by Chi-squared tests (kh2) of homogeneity. Generalized linear models were performed to understand the relationship between mosquito mortality and LLIN washing and mortality bioassay results and insecticide chemical content. The analysis of the condition of the mosquito net, the values obtained for pHI, the torn surface and its shape was used to establish one of the criteria of durability [28]; a mosquito net was in good condition when the pHI was between 0 and 64, is usable when pHI was in 65-642 and was too torn when the pHI was greater than 643 [30]. The acceptable residual efficacy of each type of LLIN was determined based on WHO criteria [30].\n", - "\n", - "Residual efficacy was optimal if the KD 60 or the mortality rate (MR), defined as the number of dead females\n", - "relative to the total number of mosquitoes exposed per mosquito net was >= 95% or >= 80%, respectively, after 20 washes in the laboratory or after three years of use [28]. The proportion of mosquito nets meeting optimal bio efficacy levels of KD60 and mortality rates were determined for each type of LLINs by performing cone bioassays in the laboratory. A minimal bio-efficacy criteria of >= 75% for KD or >= 50% mortality rate was used to determine the efficacy status of LLINs [28]. The MR was corrected by the Abbott formula [35] if the mortality rate for controls was less than 20% and the bioassay was redone if it was greater than 20%. Generalized linear regression models were run to estimate the relationship in mortality rate between washed and non-washed mosquito nets.\n", - "\n", - "The retention rate was calculated for each type of LLIN at each follow up period. It was defined as the ratio of the number of the original study mosquito nets available in households to the total number of mosquito nets initially distributed. The mosquito nets declared lost but found in the following survey were included in the calculation of the retention rate of the previous semester.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Country\":\"Senegal\",\"Site\":\"Mbagame\",\"Start_month\":1,\"Start_year\":2011,\"End_month\":12,\"End_year\":2014},\"S02\":{\"Country\":\"Senegal\",\"Site\":\"Thies\",\"Start_month\":1,\"Start_year\":2011,\"End_month\":12,\"End_year\":2014}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"NetProtect(r)\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":39.0,\"pHI_category\":\"Good\"},\"N02\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":48.0,\"pHI_category\":\"Good\"},\"N03\":{\"Net_type\":\"Dawa Plus(r) 2.0\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":15.0,\"pHI_category\":\"Good\"},\"N04\":{\"Net_type\":\"Olyset Net(r)\",\"Insecticide\":\"Permethrin\",\"Net_washed\":19.0,\"Net_holed\":54.0,\"pHI_category\":\"Good\"},\"N05\":{\"Net_type\":\"Life Net(r)\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":13.0,\"pHI_category\":\"Good\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: 3.2.1 Indoor Resting Density, Human Blood Index and Biting Rate: 3.2.2 Estimation of Sporozoite Infection Rate\n", - "\n", - "A total of 36 out of 66 heads/thoraces were positive for _P. falciparum_ (F\\({}_{+}\\) = 36), corresponding to an unusually high sporozoite rate of 54.55% \\(\\pm\\) 13.63. Validation of the TaqMan results using nested PCR [34] confirmed the _P. falciparum_ infection in the 36 samples.\n", - "\n", - "header: Composition of the Mosquito Species Collected Indoor: Entomological and Parasitological Parameters of Transmission\n", - "\n", - "The indoor resting density of the _An. funestus_ was estimated as 14 from the 112 blood females collected in eight houses. Analysis of the blood source of these 112 females by PCR revealed that they all fed on human blood, leading to a human blood index of 100%. The human biting rate was estimated as ~5.3 bites per person per night (CI: 4.91-5.69).\n", - "\n", - "header: Estimation of Entomological and Parasitological Parameters\n", - "\n", - "The indoor resting density (IRD) was calculated from the number of _An. funestus_ collected on the 4th d, relative to the number of houses assessed, as advised by the WHO [30; 31]. A total of 112 blood-fed females were dissected <48 h after collection, separating heads/thoraces from the abdomens. The abdomens were used for gDNA extraction as outlined in WHO guidelines [30] using the DNeasy Blood and Tissue Kit (QIAGEN, Hilden, Germany), according to manufacturer's protocol. Identification of the source of blood was conducted using the cocktail PCR of Kent et al. [32]. The human blood index was calculated from the number of females that have fed on humans, relative to the total number of females caught [30; 31]. The human biting rate was estimated from the number of the females that have fed on humans, relative to the total number of people in the houses sampled.\n", - "\n", - "header: 2.3.1 Estimation of Indoor Resting Density, Human Blood Index and Biting Rate: 2.3.2 Estimation of Sporozoite Rate\n", - "\n", - "Sixty-six females (22 individuals randomly selected from each of the three days of indoor collection) which laid eggs successfully were dissected, and the heads/thoraces separated from the abdomens immediately, as explained above. The presence of sporozoite was investigated using a TaqMan genotyping protocol, established by Bass and colleagues [33]. Real-time PCR MX 3005 (Agilent, Santa Clara, CA, USA) was used for the amplification. A total of 1 uL of gDNA, extracted from each female head/thorax, was used for PCR, with an initial denaturation at 95 \\({}^{\\circ}\\)C for 10 min, followed by 40 cycles each of 15 s at 95 \\({}^{\\circ}\\)C and 1 min at 60 \\({}^{\\circ}\\)C. Primers described by Bass (PlasF_GCTTAGTTACGATTAATAGGAGTAGCTTG and PlasR_GAAAATCTAAGAATTTCAC CTCTGACA) were used, together with two probes labelled with fluorophores, FAM (Falcip+_TCTGAAT ACGAATGTC) to detect _Plasmodium falciparum_, and HEX (OVM+_CTGAATACAAATGCC) to detect the combination of _P. ovale_, _P. vivax_ and _P. malariae_. Positive controls (known FAM+ and OVM+) were used, in addition to a negative control, in which 1 uL of ddH2O was added. To validate findings of the TaqMan assay, a nested PCR of Snounou et al. [34] was carried out, using all the samples that tested positive with TaqMan. The sporozoite rate was calculated as the percentage of females positive, relative to the total number of the females examined [30].\n", - "\n", - "header: Synergist Bioassay with Piperonyl Butoxide (PBO) and Diethyl Malate\n", - "\n", - "To investigate the potential role of P450 monooxygenases in pyrethroid resistance, a synergist bioassay was carried out using 4% PBO [an inhibitor of CYP450s [38]] against permethrin. The role of glutathione S-transferases (GSTs) in DDT resistance was also investigated by pre-exposure to 8% diethyl maleate (DEM). The insecticides and the synergists PBO were sourced from the WHO/Vector Control Research Unit (VCRU) of the University of Sains Malaysia (Penang, Malaysia). Four replicates of 22-26 F1 females (3-4 d old) were pre-exposed to PBO or DEM for 1 h, and then transferred to tubes containing permethrin [35] or DDT, respectively. Mosquitoes were treated as in the WHO bioassays described above, and mortalities scored after 24 h. Two replicates of 25 females each were exposed to PBO only, as a control.\n", - "\n", - "Genotyping of L119F Glutathione S-Transferase (GSTe2) Mutation Associated with DDT/Permethrin Resistance\n", - "\n", - "To detect the L119F _GSTe2_ mutation previously linked to DDT/pyrethroid metabolic resistance [20], TaqMan genotyping was conducted using 44 F0 females collected from the field. This was carried out using a real-time PCR thermocycler (Agilent Mx3005) following an established protocol [20]. The primers L119F_GSTe2F (5'-AACAATTTTTCATTTCTTATTCTCATTAC-3') and L119F_GSTe2R (5'- CGACTCGATCTTCGGGAATGTC-3') were utilised with the following probes: reporter L119 (VIC_AGGACGGTATTCTTTTTCTA) to detect the susceptibility allele, and reporter 119F (FAM_AGGAGCGTATTTTTTTCTA) for the resistance allele. The assay was performed in a 10 mL final volume comprise of 5 mL of 1x Sensimix (Bioline, London, UK), 800 nM each of primer, 200 nM of each probe, and 1 mL of gDNA. Thermocycling conditions were initial denaturation of 10 min at 95 \\({}^{\\circ}\\)C, followed by 40 cycles each of 92 \\({}^{\\circ}\\)C for 10 s, and 60 \\({}^{\\circ}\\)C for 45 s. Genotypes were scored from scatter plots of results produced by the Mx3005 v4.10 software (Agilent, Santa Clara, CA, USA). Three positive samples of known genotypes [20]--(i) homozygote resistant 1014F/1014F; (ii) heterozygote L1014/1014F; and (iii) susceptible L1014/L1014--were used as positive controls. For the negative control, 1 mL of ddH2O was incorporated into the control well. To assess the correlation between the presence of the 119F mutation and the resistance phenotype, 12 each of DDT-alive and -dead females were genotyped using the above protocol. In addition, these 12 alive and 12 dead females were also screened, using the recently established allele-specific PCR [39].\n", - "\n", - "header: Results\n", - "\n", - "_Anopheles funestus_ is the only mosquito species caught, a total of 721 in 4 d. Out of these, 590 were caught in the first 3 d (52 \\(\\circ\\), 538 \\(\\circ\\) [487 blood fed and 51 unfed]). A total of 312 \\(\\mathrm{\\SIUnitSymbolOhm}\\)ial eggs and 288 egg batches hatched successfully. A total of 131 mosquitoes were caught on the 4th day: 12 \\(\\circ\\) and 119 \\(\\circ\\) (112 of them blood fed and 7 unfed).\n", - "\n", - "header: Supplementary Materials:\n", - "\n", - "The following are available online at [http://www.mdpi.com/2073-4425/11/4/454/s1](http://www.mdpi.com/2073-4425/11/4/454/s1), Figure S1: Knockdown profiles of _An. funestus females_ exposed to pyrethroids and DDT. Each bar is a percentage knockdown of values from four different replicates from bioassays at different time points, Figure S2: Analysis of the _acc-_I fragment encompassing the 119 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S3: Analysis of the _acc-_I fragment encompassing the 485 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S4: Analysis of the _VGSC_ fragment encompassing the 1014 _kdr_ mutation codon. (**a**). pattern of genetic variability of 30 sequences from randomly selected F0 females; (**b**). a maximum likelihood phylogenetic tree of the sequences, Table S1: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 119 codon for alive and dead mosquitoes, Table S2: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 485 codon for alive and dead mosquitoes, Table S3: Summary statistics for polymorphism of a fragment of voltage-gated sodium channel encompassing the 1014 codon for the field F0 females, File S1: Analyzed sequences (gDNA partial fragments) from encompassing the G119S and N485I of _acetylcholinesterase_-1 gene and sequences from the partial fragment of the voltage-gated sodium channel spanning the 1014th codon.\n", - "\n", - "header: Investigating the Role of L119F-GSTe2 Mutation in DDT Resistance\n", - "\n", - "Initial genotyping of 43 F0 females revealed a high frequency of the L119F-GSTe2 mutation with 30.2% (13 individuals) heterozygotes (RS, L119/F119), 32.6% (14 individuals) homozygote resistant (RR, 119F/119F), and 16.3% (7 individuals) homozygote susceptible (SS, L119/L119) (Figure 3a).\n", - "\n", - "Figure 2: Resistance profiles of F1 _An. funestus_ females. (**a**). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (**b**). Results of the cone bioassays with PermaNet®3.0 (side and roof), PermaNet®2.0, Olyset®Plus and Olyset®Net. Results are the average of percentage mortalities ± SEM of five replicates; (**c**). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at \\(P\\) < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (**d**). Time-course bioassay for LTs0 estimation/test for strength of permethrin resistance.\n", - "\n", - "\n", - "The 119F allele frequency f(R) was calculated as ~0.84. 12 each of DDT-alive and -dead F1 females were used for allele-specific PCR to detect the L119F GSTe2 mutation. 8 of the DDT-alive (8/12, 66.66%) were homozygote resistant (RR) for the mutation (Figure 3b,c), and 4 females (4/12, 33.33%) were heterozygote resistant. From the dead females, one sample failed (Figure 3c), only one female was homozygote resistant (1/11, 9.09%), 8 were heterozygotes (8/11, 72.72%), and 2 were susceptible (2/11, 18.18%). A difference was observed in the distribution of the 119F mutation [Odds Ratio of 16.00 (95% CI: 6.67-38.3, \\(\\chi^{2}\\) = 3.70, \\(p\\) = 0.05)] when comparing the frequency of the homozygote resistant allele (RR) with susceptible allele (SS) in the alive and dead females. A comparison of all resistant (RR + RS) with susceptible (SS) individuals from alive and dead females revealed no genotype-phenotype association [OR = 0.49 (CI: 0.19-3.15, \\(\\chi^{2}\\) = 1.2, \\(p\\) = 0.27)]. No association was observed when comparing the heterozygote individuals (RS) from both alive and dead to the susceptible (SS) [OR = 2.44 (CI: 0.9-13.53, \\(\\chi^{2}\\) = 0.49, \\(p\\) = 0.48)].\n", - "\n", - "header: Investigating the Role of Metabolic Resistance Using Synergist Bioassays\n", - "\n", - "Pre-exposure to PBO and DEM recovered some susceptibility to both permethrin and DDT, respectively (Figure 2c). A significant increase in mortality was observed when comparing results of a repeat conventional bioassay with permethrin [mortality = 43.9% (95% CI: 40.93-46.90)] to the results from the PBO-synergised bioassay [mortality = 78.73% (95% CI: 69.53-87.94), kh2 = 22.33, df = 1, \\(P\\) < 0.0001]. Pre-exposure to DEM recovered DDT susceptibility as well, with repeat exposure to DDT producing mortality of 49.82% (95% CI: 45.54-54.9), compared to a synergised experiment with a mortality of 81.44% (95% CI: 74.36-88.52, kh2 = 19.12, df = 1, \\(P\\) < 0.0001). In both cases, the doubling of mortalities from synergist pre-exposure suggests the possible role of cytochrome P450s and GSTs, respectively, in the observed permethrin and DDT resistance. No mortality was obtained from the control individuals.\n", - "\n", - "header: Polymorphism Analysis of Voltage-Gated Sodium Channel Gene Spanning the 1014 kdr Locus\n", - "\n", - "A fragment of voltage-gated sodium channel spanning intron 19 and the exon 20 containing the 1014F/S mutations associated with knockdown resistance (_kdr_) in _An. gambiae_[21,22] was amplified and sequenced. This was done with DNA extracted from 30 F0 females that laid eggs successfully. PCR was carried using primers: AfunkdrExon19-20F: GTTCAATGAAAGCCCCTCAAA and Afunkdr Exon19-20R: CCGAAATTTGACAAAGCAAA, as described in previous works [43]. The PCR products were purified using the Qiaquick Purification Kit (QIAGEN, Hilden, Germany), sequenced and aligned using BioEdit. Polymorphisms analysis and maximum likelihood phylogenetic tree construction were as described above. All DNA sequences from the alive and dead females are provided in File S1.\n", - "\n", - "header: Insecticide Resistance Profile of An. funestus Population\n", - "\n", - "The _An. funestus_ population demonstrated high knockdown resistance, with ~5% of them knocked down at 1 h exposure with deltamethrin and DDT (Figure S1), and ~10% knocked down after 1 h exposure with permethrin. High resistance was observed towards the pyrethroids, with a higher mortality of 48.30% (95% CI: 41-55) for permethrin, compared with 29.44% (95% CI: 24-34) for deltamethrin (Figure 2a). A 100% mortality rate was obtained in the FANG susceptible colony. Significant resistance was also observed towards DDT and bendiocarb, with mortalities of 56.34% (95% CI: 51-62) and 54.05% (95% CI: 49-59), respectively. Moderate resistance was observed from exposure to fenitrothion with mortality of 94.22% (95% CI: 88-101).\n", - "\n", - "header: Estimation of Resistance Intensity with Time-Course Bioassay\n", - "\n", - "To establish the strength of pyrethroid resistance with time, additional bioassays were performed, with 0.75% permethrin, at varying times of exposure. Four replicates of 20-25 F1 females were exposed in time-course spanning 60, 120, 180, 240 and 300 min, to establish the time required to kill 50%\n", - "of them (LT50). Protocol was as described above in conventional bioassays, except for variation in time. Resistance intensity was established by comparing the LT50 from the Gajerar Giwa _An. fintestus_ populations to the LT50 previously established for the fully susceptible _Anopheles coluzzi_ lab colony [5]. This type of inter-species comparison of using _An. gambiae_ (Kisumu colony) LT50s had been done before in the absence of LT50 data from FANG colony [37].\n", - "\n", - "header: Study Site and Mosquito Sampling: Molecular Identification of Mosquito Species\n", - "\n", - "Genomic DNA (gDNA) was extracted from the females which laid eggs, using the Livak protocol [29], and the mosquitoes identified to species using the cocktail PCR of Koekemoer, et al. [28]. These include all the females from the first 3 days of collections, as well as all the females collected on day 4, which were used for the estimation of indoor resting density and identification of blood meal source.\n", - "\n", - "Figure 1: A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\n", - "\n", - "header: Determination of LLIN Efficacy with Cone Bioassays\n", - "\n", - "To investigate the efficacy of commonly distributed long-lasting insecticidal nets (LLINs), cone bioassays were conducted following the WHO protocol [36], using 3-4 d old F1 females. Five replicates of 9-12 mosquitoes were placed in a plastic cone attached to a fresh insecticide-containing bed net and tested. The LLINs include: the Olyset(r)Net (containing 2% permethrin), Olyset(r)Plus (containing 2% permethrin combined with 1% of the synergist, piperonyl butoxide, PBO), PermaNet(r)2.0 (containing 1.4-1.8 g/kg +-25% deltamethrin), PermaNet(r)3.0 side panel (containing 2.1-2.8 g/kg +-25% deltamethrin), and PermaNet(r)3.0 roof (containing 4.0 g/kg +-25% deltamethrin, combined with 25 g/kg +-25% of PBO). For each experiment, five different pieces cut from an LLIN brand were used for the five technical replicates. Mosquitoes were exposed for 3 min and immediately transferred to paper cups. They were supplied with 10% sucrose and mortalities recorded after 24 h. For the control, five replicates of ten mosquitoes were exposed to untreated net.\n", - "\n", - "header: A Low-Efficacy of Long-Lasting Insecticidal Nets Is a Serious Challenge to Malaria Control\n", - "\n", - "The high pyrethroid resistance was also evident in the low efficacy of insecticide-treated bed nets, most especially the Olyset(r)Net and the PermaNet(r)3.0 (the side panel). Except for PermaNet(r)3.0, profoundly lower efficacies were seen with all the nets, in line with observations in same species from southern Africa [46], and a recent report from northern Cameroon [50]. The recovery of susceptibilities from exposure to the roof of PermaNet(r)3.0 and the PBO-synergist bioassays suggest the preeminent role of CYP450s in the pyrethroid resistance in this population. This agrees with several studies carried out across Africa [46; 51; 52]. Low efficacy seen with Olyset(r)Plus net have been described in several studies with both _An. funestus_ and _An. coluzzii_[50; 51; 52; 53].\n", - "\n", - "Insecticide Resistance Mechanism Is Driven by Metabolic Resistance Mechanisms in Gajerar Giwa An. funestus Population\n", - "\n", - "The recovery of susceptibilities from pre-exposure to PBO and DEM suggests the preeminent role of CYP450s and GSTs in pyrethroid and DDT resistance, respectively. Indeed, several studies have used these synergists to establish the potential role of the above metabolic enzymes in resistance in _An. funestus_[51; 52; 54]. The role of metabolic resistance is strengthened by (i) the finding of high frequency of the 119F-_GSTe2_ mutation in the Gajerar Giwa population and its possible link to DDT resistance, as documented in several studies [20; 47; 51; 54]; (ii) the absence of the G119S and N485I mutations in the acetylcholinesterase gene; and (iii) the absence of the 1014F/_S kdr_ mutation in the voltage-gated sodium channel from the Gajerar Giwa population, in line with the observations across Africa [37; 52; 55]. The high diversity seen in the fragment spanning the exon 20 of the VGSC suggests lack of reduced diversity due to absence of selection.\n", - "\n", - "The high bendiocarb resistance prompted sequencing of the _ace-1_ fragment for the G119S and N485I mutations previously associated with carbamate/organophosphate resistance. The absence of these mutations in the highly bendiocarb-resistant Gajerar Giwa populations, and the observed relative fenitrothion susceptibility, suggests no cross resistance, and points to metabolic mechanism responsible for the bendiocarb resistance. Several studies have reported absence of the G119S mutation in various populations of _An. funestus_ across Africa [24; 43; 52]. The high diversity seen in the _ace-1_ fragment suggests a lack of selection in the gene. However, with only 12 females (low sample size) each of alive and dead used, the presence of this mutation at a low frequency cannot be ruled out.\n", - "\n", - "The absence of the N485I mutation in Gajerar Giwa populations confirmed previous observations of the mutation present only in southern African populations [24; 46]. However, with 12 females each of the alive and dead used, the presence of these mutations or others at a low frequency cannot be ruled out.\n", - "\n", - "header: Data Analysis\n", - "\n", - "The results of bioassays were interpreted as continuous variables, with normal distributions and percentage mortalities +- standard error of mean (SEM) calculated, based on the WHO protocol [35]. Results of mortalities from synergism-pyrethroid exposure were compared with values obtained from exposure to pyrethroid alone using a two-tailed Chi-Square test of independence, with the level of significance pegged as \\(P\\) < 0.05, as implemented in GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA). For genotyping of 119F _GSTe2_ mutation allele frequency was calculated using the formula f(R) = (2 x RR + RS)/2\\(N\\) for individuals carrying the mutations, and f(S) = 1 - f(R) for the susceptible individuals; where RR = total number of homozygote resistant; RS = total number heterozygote resistant; \\(N\\), total number of individuals investigated. Genotype frequency was calculated as relative frequencies of the homozygote resistant and heterozygote resistant individuals. The correlation between the genotypes and resistance phenotypes was estimated by estimating the odds ratio using the epiR package [R version 3.5.0 ([https://cran.r-project.org/bin/windows/base/](https://cran.r-project.org/bin/windows/base/))] with statistical significance established based on the Fisher's exact probability test (_P_ < 0.05). For the estimation of LT50, a probit analysis was carried out using glm with a MASS package of R [44].\n", - "\n", - "header: WHO Insecticides Susceptibility Tests\n", - "\n", - "The bioassays were performed following the protocol of WHO [35], with various insecticides from four major public health classes. These include (i) the type I pyrethroid: permethrin (0.75%); (ii) the type II pyrethroid: deltamethrin (0.05%); (iii) the organochloride: DDT (4%); (iv) the carbamate: benodiocarb (0.1%); and (v) the organophosphate: fenitrothion (1%). All insecticide impregnated papers (reference: WHO/VBC/81.806) were sourced from the WHO/Vector Control Research Unit (VCRU) of University of Sains Malaysia (Penang, Malaysia). Four replicates of 24-26 F1 females (3-4 d old) per tube were used for each insecticide. The mosquitoes were transferred to tubes lined with insecticide papers and exposed for 1 h, after which they were transferred back to the holding tubes, supplied with 10% sugar, and mortality recorded at 24 h. For each bioassay, one replicate of 20-25 females unexposed to any insecticides were used as a control. The fully susceptible _An. funestus_ (FANG colony) [36] was tested, alongside the field populations, for the pyrethroid papers to ascertain the potency of the papers. The mosquitoes were deemed susceptible to an insecticide where mortality was >98%, suspected to be moderately resistant where mortality is between 90-98%, and resistant where mortality was <90% [35]. Figures were prepared using GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA).\n", - "\n", - "header: Bed Net Efficacy Using Cone Bioassay\n", - "\n", - "A low efficacy was observed with the pyrethroid-based Olyset(r)Net (mortality = 22.22, 95% CI: 14.37-30.07) and the Perma(r)Net2.0 (mortality = 38.05%, CI: 19.12-56.98) (Figure 2b). The side panels of PermaNet(r)3.0 induced higher mortality of 67.41% (CI: 44.87-89.95). This is more than the mortality\n", - "observed with the PBO-containing Olyset(r)Plus (mortality = 52.31%, CI: 41.85-62.78). A 100% mortality rate was seen from exposure to the roof of PermaNet(r)3.0 (containing PBO). No mortality was obtained from the control populations, which were exposed to untreated nets.\n", - "\n", - "header: Materials and Methods\n", - "\n", - "Exploring the Mechanisms of Multiple Insecticide Resistance in a Highly _Plasmodium_-Infected Malaria Vector _Anopheles funestus_ Sensu Stricto from Sahel of Northern Nigeria\n", - "\n", - "Sulaiman S. Ibrahim, Muhamad M. Mukhtar, Helen Irving, Jacob M. Riveron, Amen N. Fadel, Williams Tchapga, Jack Hearn, Abdullahi Muhammad, Faruk Sarkinfada, Charles S. Wondji\n", - "\n", - "1Vector Biology Department, Liverpool School of Tropical Medicine (LSTM), Liverpool L3 5QA, UK; Helen.Irving@lstmed.ac.uk (H.I.); jack.hearn@lstmed.ac.uk (J.H.); Abdullahi.Muhammad@lstmed.ac.uk (A.M.); charles.wondji@lstmed.ac.uk (C.S.W.) Department of Biochemistry, Bayero University, PMB 3011 Kano, Nigeria; muhammadmaehuhtar@gmail.com (LSTM Research Unit, Centre for Research in Infectious Diseases (CRID), P.O. Box 13591 Yaounde, Cameroon; Jacob.Riveron_Miranda@syngenta.com (J.M.R.); amen.fadel@crid-cam.net (A.N.F.); williams.tchapga@crid-cam.net (W.T.) Centre for Biotechnology Research, Bayero University, PMB 3011 Kano, Nigeria; fstada.mcp@buk.edu.ng (Center for Biotechnology Research, Bayero University, PMB 3011 Kano, Nigeria; fstada.\n", - "\n", - "\n", - "\n", - "ng (Center for Biotechnology Research, Bayero University, PMB 30\n", - "\n", - "\n", - "countries like Nigeria, which reported increased cases of more than half a million in 2017, compared with 2016 [1]. With _Anopheles gambiae_ sensu lato and _Anopheles funestus_ sensu structo (_An. funestus_) as the major malaria vectors, and _Plasmodium falciparum_ as the major malaria-causing species (100% of all cases in 2017), it is not surprising that this disease accounts for ~60% of outpatient visits to health facilities and 30% of child mortality in Nigeria [3]. The lack of progress towards malaria pre-elimination in Nigeria is partly due to insufficient and/or discordant entomological and active case surveillance data [4], which are important guides to identify priority areas and the most vulnerable populations to implement data-driven decisions. In stark contrast to _An. gambiae_ s.l. [5-7], the major malaria vector _An. funestus_ from the Sudan/Sahel savannah of northern Nigeria has been neglected for decades, after comprehensive works conducted by several pioneers, before 1960. These almost seven decades old studies include (i) the work of Bruce-Chwatt and Haworth (carried out in 1955-56), which described _An. funestus_ populations from Sokoto, north-western Nigeria, highly resistant to DDT (dichlorodiphenyltrichloroethane), dieldrin, and benzene hexachloride [8]; (ii) a detailed examination of _An. funestus_ species, published in 1959 by W.M. Service [9] and its role in transmission in northern Nigeria [10]; as well as (iii) a 1964 small-scale hut trials to establish impact of DDT and malathion exposure on behaviour of _An. funestus_ and _An. gambiae_[11]. After the Garki Project (1960-1970) [12], interest in _An. funestus_ waned in northern Nigeria, though it is the chief vector in the dry season [13], extending the period of malaria transmission when densities of _An. gambiae_ s.l. have declined [14]. Due to its high vectorial capacity, conferred by its unusually high anthropophilic and endophilic behaviour [14,15], this species is very important target, which should not be neglected if the ambitious target of the WHO to reduce global malaria case incidence by 90% is to be realised [16]. Contrary to the north, several studies have characterised _An. funestus_ populations from southern Nigeria. For example, the role of this vector in malaria transmission was established in populations from four sites in southwest Nigeria [17], and recently its role in transmission and insecticide resistance profile was investigated by Djouaka and colleagues [18]. Unfortunately, information on this vector species from southern Nigeria cannot be extrapolated to the north, because Nigeria has five ecological zones which define intensity and seasonality of transmission and heterogeneity in mosquito vector compositions [19].\n", - "\n", - "Here, a primary data from study of the major malaria vector _An. funestus_ is presented. The role of this vector from Sahel of northern Nigeria in malaria transmission was investigated, and its resistance status to the major public health insecticides in use for bed nets and indoor-residual spraying established. The possible mechanisms driving metabolic resistance in the field were also investigated using the synergist bioassays and TaqMan genotyping for the 119F glutathione S-transferase (_GSTe2_) mutation, which confers resistance to DDT and pyrethroids [20]. The presence of the 1014F/S knockdown resistance (_kdr_) mutations previously associated with pyrethroid resistance [21,22], and the _acetylcholinesterase-1_ (_ace-I_) G119S [23] and N485I [24] mutations associated with carbamate/organophosphate resistance, was also assessed through sequencing. Findings of this study could guide the Nigerian National Malaria Elimination Program to implement evidence-based resistance management and malaria control measures in northern Nigeria as it scales up distribution of insecticide treated net (ITNs) as part of the goals of the National Malaria Strategic Plan (NMSP) 2014-2020 [25].\n", - "\n", - "\n", - "\n", - "Blood-fed female _Anopheles_ mosquitoes resting indoors were collected between 17-20 November 2018 using battery-operated aspirators (John. W. Hock, Gainesville, FL, USA). Collection was done in eight randomly selected houses (among those who consented), in the morning hours (6:00-7:00 a.m.) at Gajerar Giwa (13deg11'57.1'' N 7deg45'53.5'' E), a village in Katsina State, north-western Nigeria. Located in the semi-arid savannah, Gajerar Giwa (Figure 1) neighbors Ajiwa Dam, built in 1975 and is used by nearby communities, for domestic purposes, fishing, and the year-round\n", - "irrigation of vegetables, including tomato, lettuce, pepper, etc. Farmers apply quantities of pesticides mainly organophosphate-based, as well as pyrethroids and carbamates for the control of insect pests, undesirable herbs and fungi ([http://documents.worldbank.org/curated/pt/244751486100486129/pdf/SFG2945-EA-P148616-Box402883B-PUBLIC-Disclosed-1-31-2017.pdf](http://documents.worldbank.org/curated/pt/244751486100486129/pdf/SFG2945-EA-P148616-Box402883B-PUBLIC-Disclosed-1-31-2017.pdf)).\n", - "\n", - "Clearance for indoor collection previously obtained from Operational Research Advisory Committee, Ministry of Health (with reference number MOH/off/797/TI/402) was used. The blood fed females obtained were maintained on 10% sugar at 25 \\({}^{\\circ}\\)C +- 2 and 70-80% relative humidity for 6-7 d. Gravid females were transferred into 1.5 mL tubes individually and forced to lay eggs, using established protocols [26]. The F0 parents were identified as belonging to the _An. funestus_ group using morphological keys [27] and confirmed as _An. funestus_ s.s. using the cocktail polymerase chain reaction PCR [28]. Egg batches were transferred into paper cups for hatching in the insectary located at Bayero University Kano, Nigeria. Eggs that hatched were pooled into bowls and supplemented with Tetramin(tm) baby fish food. The 3- to 4-days old F1 females that emerged were mixed in cages and used for bioassays. DNA extracted from all F0 and F1 females and to be used for molecular analyses were transported to the Liverpool School of Tropical Medicine (LSTM), UK, under the DEFRA license (PATH/125/2012, UK). To establish the indoor resting densities of the _An. funestus_ and the source of blood meal, a pyrethrum spray collection was conducted indoor in the eight houses on 21 November 2018.\n", - "\n", - "header: Polymorphism Analysis of Acetylcholinesterase-1 (ace-1) for G119S and N485I Target-Site Mutations\n", - "\n", - "To detect the 119S _ace-1_ mutation linked to bendiocarb/organophosphate resistance [23] a fragment of the gene spanning exons 4 to 5 was amplified from 12 bendiocarb-alive and -12 dead females. The following primers spanning exon 4, through intron 4_5 and exon 5: AFUNace1_ex4-5F: 5'-ACGCTAACGATAATGATCCGCT-3' and AFUNace1_ex4-5R:5'AGTAGCTTCTTCGCGTGATA CA-3' were utilised. A 12.5 mL premix comprise of 2x AccuStar II PCR SuperMix (QuantaBio, Beverly, Massachusetts, USA), containing optimised concentrations of MgCl2 and dNTPs, 0.2 mmol/L each of the forward and reverse primer was prepared. A total of 1 mL gDNA from individual female mosquitoes was added, followed by 10.5 mL of ddH2O (final volume = 25 mL). Amplification was carried out using the following condition: initial denaturation of 1 cycle at 94 degC for 3 min; followed by 35 cycles each of 94 degC for 30 s (denaturation); 60 degC for 30 s (annealing); extension at 72 degC for 1 min; and final elongation of one cycle at 72 degC for 5 min. PCR products were cleaned with QIAquick(r) PCR Purification Kit (QIAGEN, Hilden, Germany) and sequenced on both strands, using the above primers.\n", - "\n", - "For the N485I mutation the same samples as above were used. A forward primer AfunExon6-7ace_F: 5'-AACAATGATACATGTACCT-3' was utilised together with a previously described reverse primer AfunExon4-7ace R: 5'-TGACACTAGCACACAACCA-3' [24] to amplify a fragment spanning exons 6-7. Thermocycling condition was as described above.\n", - "\n", - "Polymorphisms were detected through manual examination of sequence traces using BioEdit version 7.2.3.0 ([http://www.mbio.ncsu.edu/BioEdit/bioedit.html](http://www.mbio.ncsu.edu/BioEdit/bioedit.html)) [40], and analyses of genetic parameters of polymorphism were done using the DnaSP 5.10 [41]. Different sequences were compared by constructing a maximum likelihood phylogenetic tree using MEGA 6.0 [42]. All DNA sequences from the alive and dead females are provided in File S1.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: 3.2.1 Indoor Resting Density, Human Blood Index and Biting Rate: 3.2.2 Estimation of Sporozoite Infection Rate\n", - "\n", - "A total of 36 out of 66 heads/thoraces were positive for _P. falciparum_ (F\\({}_{+}\\) = 36), corresponding to an unusually high sporozoite rate of 54.55% \\(\\pm\\) 13.63. Validation of the TaqMan results using nested PCR [34] confirmed the _P. falciparum_ infection in the 36 samples.\n", - "\n", - "header: 2.3.1 Estimation of Indoor Resting Density, Human Blood Index and Biting Rate: 2.3.2 Estimation of Sporozoite Rate\n", - "\n", - "Sixty-six females (22 individuals randomly selected from each of the three days of indoor collection) which laid eggs successfully were dissected, and the heads/thoraces separated from the abdomens immediately, as explained above. The presence of sporozoite was investigated using a TaqMan genotyping protocol, established by Bass and colleagues [33]. Real-time PCR MX 3005 (Agilent, Santa Clara, CA, USA) was used for the amplification. A total of 1 uL of gDNA, extracted from each female head/thorax, was used for PCR, with an initial denaturation at 95 \\({}^{\\circ}\\)C for 10 min, followed by 40 cycles each of 15 s at 95 \\({}^{\\circ}\\)C and 1 min at 60 \\({}^{\\circ}\\)C. Primers described by Bass (PlasF_GCTTAGTTACGATTAATAGGAGTAGCTTG and PlasR_GAAAATCTAAGAATTTCAC CTCTGACA) were used, together with two probes labelled with fluorophores, FAM (Falcip+_TCTGAAT ACGAATGTC) to detect _Plasmodium falciparum_, and HEX (OVM+_CTGAATACAAATGCC) to detect the combination of _P. ovale_, _P. vivax_ and _P. malariae_. Positive controls (known FAM+ and OVM+) were used, in addition to a negative control, in which 1 uL of ddH2O was added. To validate findings of the TaqMan assay, a nested PCR of Snounou et al. [34] was carried out, using all the samples that tested positive with TaqMan. The sporozoite rate was calculated as the percentage of females positive, relative to the total number of the females examined [30].\n", - "\n", - "header: Estimation of Entomological and Parasitological Parameters\n", - "\n", - "The indoor resting density (IRD) was calculated from the number of _An. funestus_ collected on the 4th d, relative to the number of houses assessed, as advised by the WHO [30; 31]. A total of 112 blood-fed females were dissected <48 h after collection, separating heads/thoraces from the abdomens. The abdomens were used for gDNA extraction as outlined in WHO guidelines [30] using the DNeasy Blood and Tissue Kit (QIAGEN, Hilden, Germany), according to manufacturer's protocol. Identification of the source of blood was conducted using the cocktail PCR of Kent et al. [32]. The human blood index was calculated from the number of females that have fed on humans, relative to the total number of females caught [30; 31]. The human biting rate was estimated from the number of the females that have fed on humans, relative to the total number of people in the houses sampled.\n", - "\n", - "header: Composition of the Mosquito Species Collected Indoor: Entomological and Parasitological Parameters of Transmission\n", - "\n", - "The indoor resting density of the _An. funestus_ was estimated as 14 from the 112 blood females collected in eight houses. Analysis of the blood source of these 112 females by PCR revealed that they all fed on human blood, leading to a human blood index of 100%. The human biting rate was estimated as ~5.3 bites per person per night (CI: 4.91-5.69).\n", - "\n", - "header: Investigating the Role of Metabolic Resistance Using Synergist Bioassays\n", - "\n", - "Pre-exposure to PBO and DEM recovered some susceptibility to both permethrin and DDT, respectively (Figure 2c). A significant increase in mortality was observed when comparing results of a repeat conventional bioassay with permethrin [mortality = 43.9% (95% CI: 40.93-46.90)] to the results from the PBO-synergised bioassay [mortality = 78.73% (95% CI: 69.53-87.94), kh2 = 22.33, df = 1, \\(P\\) < 0.0001]. Pre-exposure to DEM recovered DDT susceptibility as well, with repeat exposure to DDT producing mortality of 49.82% (95% CI: 45.54-54.9), compared to a synergised experiment with a mortality of 81.44% (95% CI: 74.36-88.52, kh2 = 19.12, df = 1, \\(P\\) < 0.0001). In both cases, the doubling of mortalities from synergist pre-exposure suggests the possible role of cytochrome P450s and GSTs, respectively, in the observed permethrin and DDT resistance. No mortality was obtained from the control individuals.\n", - "\n", - "header: Synergist Bioassay with Piperonyl Butoxide (PBO) and Diethyl Malate\n", - "\n", - "To investigate the potential role of P450 monooxygenases in pyrethroid resistance, a synergist bioassay was carried out using 4% PBO [an inhibitor of CYP450s [38]] against permethrin. The role of glutathione S-transferases (GSTs) in DDT resistance was also investigated by pre-exposure to 8% diethyl maleate (DEM). The insecticides and the synergists PBO were sourced from the WHO/Vector Control Research Unit (VCRU) of the University of Sains Malaysia (Penang, Malaysia). Four replicates of 22-26 F1 females (3-4 d old) were pre-exposed to PBO or DEM for 1 h, and then transferred to tubes containing permethrin [35] or DDT, respectively. Mosquitoes were treated as in the WHO bioassays described above, and mortalities scored after 24 h. Two replicates of 25 females each were exposed to PBO only, as a control.\n", - "\n", - "Genotyping of L119F Glutathione S-Transferase (GSTe2) Mutation Associated with DDT/Permethrin Resistance\n", - "\n", - "To detect the L119F _GSTe2_ mutation previously linked to DDT/pyrethroid metabolic resistance [20], TaqMan genotyping was conducted using 44 F0 females collected from the field. This was carried out using a real-time PCR thermocycler (Agilent Mx3005) following an established protocol [20]. The primers L119F_GSTe2F (5'-AACAATTTTTCATTTCTTATTCTCATTAC-3') and L119F_GSTe2R (5'- CGACTCGATCTTCGGGAATGTC-3') were utilised with the following probes: reporter L119 (VIC_AGGACGGTATTCTTTTTCTA) to detect the susceptibility allele, and reporter 119F (FAM_AGGAGCGTATTTTTTTCTA) for the resistance allele. The assay was performed in a 10 mL final volume comprise of 5 mL of 1x Sensimix (Bioline, London, UK), 800 nM each of primer, 200 nM of each probe, and 1 mL of gDNA. Thermocycling conditions were initial denaturation of 10 min at 95 \\({}^{\\circ}\\)C, followed by 40 cycles each of 92 \\({}^{\\circ}\\)C for 10 s, and 60 \\({}^{\\circ}\\)C for 45 s. Genotypes were scored from scatter plots of results produced by the Mx3005 v4.10 software (Agilent, Santa Clara, CA, USA). Three positive samples of known genotypes [20]--(i) homozygote resistant 1014F/1014F; (ii) heterozygote L1014/1014F; and (iii) susceptible L1014/L1014--were used as positive controls. For the negative control, 1 mL of ddH2O was incorporated into the control well. To assess the correlation between the presence of the 119F mutation and the resistance phenotype, 12 each of DDT-alive and -dead females were genotyped using the above protocol. In addition, these 12 alive and 12 dead females were also screened, using the recently established allele-specific PCR [39].\n", - "\n", - "header: Results\n", - "\n", - "_Anopheles funestus_ is the only mosquito species caught, a total of 721 in 4 d. Out of these, 590 were caught in the first 3 d (52 \\(\\circ\\), 538 \\(\\circ\\) [487 blood fed and 51 unfed]). A total of 312 \\(\\mathrm{\\SIUnitSymbolOhm}\\)ial eggs and 288 egg batches hatched successfully. A total of 131 mosquitoes were caught on the 4th day: 12 \\(\\circ\\) and 119 \\(\\circ\\) (112 of them blood fed and 7 unfed).\n", - "\n", - "header: Data Analysis\n", - "\n", - "The results of bioassays were interpreted as continuous variables, with normal distributions and percentage mortalities +- standard error of mean (SEM) calculated, based on the WHO protocol [35]. Results of mortalities from synergism-pyrethroid exposure were compared with values obtained from exposure to pyrethroid alone using a two-tailed Chi-Square test of independence, with the level of significance pegged as \\(P\\) < 0.05, as implemented in GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA). For genotyping of 119F _GSTe2_ mutation allele frequency was calculated using the formula f(R) = (2 x RR + RS)/2\\(N\\) for individuals carrying the mutations, and f(S) = 1 - f(R) for the susceptible individuals; where RR = total number of homozygote resistant; RS = total number heterozygote resistant; \\(N\\), total number of individuals investigated. Genotype frequency was calculated as relative frequencies of the homozygote resistant and heterozygote resistant individuals. The correlation between the genotypes and resistance phenotypes was estimated by estimating the odds ratio using the epiR package [R version 3.5.0 ([https://cran.r-project.org/bin/windows/base/](https://cran.r-project.org/bin/windows/base/))] with statistical significance established based on the Fisher's exact probability test (_P_ < 0.05). For the estimation of LT50, a probit analysis was carried out using glm with a MASS package of R [44].\n", - "\n", - "header: Study Site and Mosquito Sampling: Molecular Identification of Mosquito Species\n", - "\n", - "Genomic DNA (gDNA) was extracted from the females which laid eggs, using the Livak protocol [29], and the mosquitoes identified to species using the cocktail PCR of Koekemoer, et al. [28]. These include all the females from the first 3 days of collections, as well as all the females collected on day 4, which were used for the estimation of indoor resting density and identification of blood meal source.\n", - "\n", - "Figure 1: A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\n", - "\n", - "header: Supplementary Materials:\n", - "\n", - "The following are available online at [http://www.mdpi.com/2073-4425/11/4/454/s1](http://www.mdpi.com/2073-4425/11/4/454/s1), Figure S1: Knockdown profiles of _An. funestus females_ exposed to pyrethroids and DDT. Each bar is a percentage knockdown of values from four different replicates from bioassays at different time points, Figure S2: Analysis of the _acc-_I fragment encompassing the 119 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S3: Analysis of the _acc-_I fragment encompassing the 485 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S4: Analysis of the _VGSC_ fragment encompassing the 1014 _kdr_ mutation codon. (**a**). pattern of genetic variability of 30 sequences from randomly selected F0 females; (**b**). a maximum likelihood phylogenetic tree of the sequences, Table S1: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 119 codon for alive and dead mosquitoes, Table S2: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 485 codon for alive and dead mosquitoes, Table S3: Summary statistics for polymorphism of a fragment of voltage-gated sodium channel encompassing the 1014 codon for the field F0 females, File S1: Analyzed sequences (gDNA partial fragments) from encompassing the G119S and N485I of _acetylcholinesterase_-1 gene and sequences from the partial fragment of the voltage-gated sodium channel spanning the 1014th codon.\n", - "\n", - "header: Insecticide Resistance Profile of An. funestus Population\n", - "\n", - "The _An. funestus_ population demonstrated high knockdown resistance, with ~5% of them knocked down at 1 h exposure with deltamethrin and DDT (Figure S1), and ~10% knocked down after 1 h exposure with permethrin. High resistance was observed towards the pyrethroids, with a higher mortality of 48.30% (95% CI: 41-55) for permethrin, compared with 29.44% (95% CI: 24-34) for deltamethrin (Figure 2a). A 100% mortality rate was obtained in the FANG susceptible colony. Significant resistance was also observed towards DDT and bendiocarb, with mortalities of 56.34% (95% CI: 51-62) and 54.05% (95% CI: 49-59), respectively. Moderate resistance was observed from exposure to fenitrothion with mortality of 94.22% (95% CI: 88-101).\n", - "\n", - "header: Polymorphism Analysis of Voltage-Gated Sodium Channel Gene Spanning the 1014 kdr Locus\n", - "\n", - "A fragment of voltage-gated sodium channel spanning intron 19 and the exon 20 containing the 1014F/S mutations associated with knockdown resistance (_kdr_) in _An. gambiae_[21,22] was amplified and sequenced. This was done with DNA extracted from 30 F0 females that laid eggs successfully. PCR was carried using primers: AfunkdrExon19-20F: GTTCAATGAAAGCCCCTCAAA and Afunkdr Exon19-20R: CCGAAATTTGACAAAGCAAA, as described in previous works [43]. The PCR products were purified using the Qiaquick Purification Kit (QIAGEN, Hilden, Germany), sequenced and aligned using BioEdit. Polymorphisms analysis and maximum likelihood phylogenetic tree construction were as described above. All DNA sequences from the alive and dead females are provided in File S1.\n", - "\n", - "header: Bed Net Efficacy Using Cone Bioassay\n", - "\n", - "A low efficacy was observed with the pyrethroid-based Olyset(r)Net (mortality = 22.22, 95% CI: 14.37-30.07) and the Perma(r)Net2.0 (mortality = 38.05%, CI: 19.12-56.98) (Figure 2b). The side panels of PermaNet(r)3.0 induced higher mortality of 67.41% (CI: 44.87-89.95). This is more than the mortality\n", - "observed with the PBO-containing Olyset(r)Plus (mortality = 52.31%, CI: 41.85-62.78). A 100% mortality rate was seen from exposure to the roof of PermaNet(r)3.0 (containing PBO). No mortality was obtained from the control populations, which were exposed to untreated nets.\n", - "\n", - "header: Investigating the Role of L119F-GSTe2 Mutation in DDT Resistance\n", - "\n", - "Initial genotyping of 43 F0 females revealed a high frequency of the L119F-GSTe2 mutation with 30.2% (13 individuals) heterozygotes (RS, L119/F119), 32.6% (14 individuals) homozygote resistant (RR, 119F/119F), and 16.3% (7 individuals) homozygote susceptible (SS, L119/L119) (Figure 3a).\n", - "\n", - "Figure 2: Resistance profiles of F1 _An. funestus_ females. (**a**). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (**b**). Results of the cone bioassays with PermaNet®3.0 (side and roof), PermaNet®2.0, Olyset®Plus and Olyset®Net. Results are the average of percentage mortalities ± SEM of five replicates; (**c**). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at \\(P\\) < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (**d**). Time-course bioassay for LTs0 estimation/test for strength of permethrin resistance.\n", - "\n", - "\n", - "The 119F allele frequency f(R) was calculated as ~0.84. 12 each of DDT-alive and -dead F1 females were used for allele-specific PCR to detect the L119F GSTe2 mutation. 8 of the DDT-alive (8/12, 66.66%) were homozygote resistant (RR) for the mutation (Figure 3b,c), and 4 females (4/12, 33.33%) were heterozygote resistant. From the dead females, one sample failed (Figure 3c), only one female was homozygote resistant (1/11, 9.09%), 8 were heterozygotes (8/11, 72.72%), and 2 were susceptible (2/11, 18.18%). A difference was observed in the distribution of the 119F mutation [Odds Ratio of 16.00 (95% CI: 6.67-38.3, \\(\\chi^{2}\\) = 3.70, \\(p\\) = 0.05)] when comparing the frequency of the homozygote resistant allele (RR) with susceptible allele (SS) in the alive and dead females. A comparison of all resistant (RR + RS) with susceptible (SS) individuals from alive and dead females revealed no genotype-phenotype association [OR = 0.49 (CI: 0.19-3.15, \\(\\chi^{2}\\) = 1.2, \\(p\\) = 0.27)]. No association was observed when comparing the heterozygote individuals (RS) from both alive and dead to the susceptible (SS) [OR = 2.44 (CI: 0.9-13.53, \\(\\chi^{2}\\) = 0.49, \\(p\\) = 0.48)].\n", - "\n", - "header: Estimation of Resistance Intensity with Time-Course Bioassay\n", - "\n", - "To establish the strength of pyrethroid resistance with time, additional bioassays were performed, with 0.75% permethrin, at varying times of exposure. Four replicates of 20-25 F1 females were exposed in time-course spanning 60, 120, 180, 240 and 300 min, to establish the time required to kill 50%\n", - "of them (LT50). Protocol was as described above in conventional bioassays, except for variation in time. Resistance intensity was established by comparing the LT50 from the Gajerar Giwa _An. fintestus_ populations to the LT50 previously established for the fully susceptible _Anopheles coluzzi_ lab colony [5]. This type of inter-species comparison of using _An. gambiae_ (Kisumu colony) LT50s had been done before in the absence of LT50 data from FANG colony [37].\n", - "\n", - "header: A Low-Efficacy of Long-Lasting Insecticidal Nets Is a Serious Challenge to Malaria Control\n", - "\n", - "The high pyrethroid resistance was also evident in the low efficacy of insecticide-treated bed nets, most especially the Olyset(r)Net and the PermaNet(r)3.0 (the side panel). Except for PermaNet(r)3.0, profoundly lower efficacies were seen with all the nets, in line with observations in same species from southern Africa [46], and a recent report from northern Cameroon [50]. The recovery of susceptibilities from exposure to the roof of PermaNet(r)3.0 and the PBO-synergist bioassays suggest the preeminent role of CYP450s in the pyrethroid resistance in this population. This agrees with several studies carried out across Africa [46; 51; 52]. Low efficacy seen with Olyset(r)Plus net have been described in several studies with both _An. funestus_ and _An. coluzzii_[50; 51; 52; 53].\n", - "\n", - "Insecticide Resistance Mechanism Is Driven by Metabolic Resistance Mechanisms in Gajerar Giwa An. funestus Population\n", - "\n", - "The recovery of susceptibilities from pre-exposure to PBO and DEM suggests the preeminent role of CYP450s and GSTs in pyrethroid and DDT resistance, respectively. Indeed, several studies have used these synergists to establish the potential role of the above metabolic enzymes in resistance in _An. funestus_[51; 52; 54]. The role of metabolic resistance is strengthened by (i) the finding of high frequency of the 119F-_GSTe2_ mutation in the Gajerar Giwa population and its possible link to DDT resistance, as documented in several studies [20; 47; 51; 54]; (ii) the absence of the G119S and N485I mutations in the acetylcholinesterase gene; and (iii) the absence of the 1014F/_S kdr_ mutation in the voltage-gated sodium channel from the Gajerar Giwa population, in line with the observations across Africa [37; 52; 55]. The high diversity seen in the fragment spanning the exon 20 of the VGSC suggests lack of reduced diversity due to absence of selection.\n", - "\n", - "The high bendiocarb resistance prompted sequencing of the _ace-1_ fragment for the G119S and N485I mutations previously associated with carbamate/organophosphate resistance. The absence of these mutations in the highly bendiocarb-resistant Gajerar Giwa populations, and the observed relative fenitrothion susceptibility, suggests no cross resistance, and points to metabolic mechanism responsible for the bendiocarb resistance. Several studies have reported absence of the G119S mutation in various populations of _An. funestus_ across Africa [24; 43; 52]. The high diversity seen in the _ace-1_ fragment suggests a lack of selection in the gene. However, with only 12 females (low sample size) each of alive and dead used, the presence of this mutation at a low frequency cannot be ruled out.\n", - "\n", - "The absence of the N485I mutation in Gajerar Giwa populations confirmed previous observations of the mutation present only in southern African populations [24; 46]. However, with 12 females each of the alive and dead used, the presence of these mutations or others at a low frequency cannot be ruled out.\n", - "\n", - "header: Determination of LLIN Efficacy with Cone Bioassays\n", - "\n", - "To investigate the efficacy of commonly distributed long-lasting insecticidal nets (LLINs), cone bioassays were conducted following the WHO protocol [36], using 3-4 d old F1 females. Five replicates of 9-12 mosquitoes were placed in a plastic cone attached to a fresh insecticide-containing bed net and tested. The LLINs include: the Olyset(r)Net (containing 2% permethrin), Olyset(r)Plus (containing 2% permethrin combined with 1% of the synergist, piperonyl butoxide, PBO), PermaNet(r)2.0 (containing 1.4-1.8 g/kg +-25% deltamethrin), PermaNet(r)3.0 side panel (containing 2.1-2.8 g/kg +-25% deltamethrin), and PermaNet(r)3.0 roof (containing 4.0 g/kg +-25% deltamethrin, combined with 25 g/kg +-25% of PBO). For each experiment, five different pieces cut from an LLIN brand were used for the five technical replicates. Mosquitoes were exposed for 3 min and immediately transferred to paper cups. They were supplied with 10% sucrose and mortalities recorded after 24 h. For the control, five replicates of ten mosquitoes were exposed to untreated net.\n", - "\n", - "header: 5 Conclusions\n", - "\n", - "This study discovered a disproportionately high _Plasmodium_ infection in a major malaria vector _An. funestus_ from Nigeria, which will pose a serious threat to malaria control, and highlights the extent \n", - "of the efforts needed to reach the pre-elimination stage in this region of Nigeria. Pyrethroid and DDT resistance was seen at high levels which could compromise control tools using the LLINs and indoor residual spraying (IRS). The high bendiocarb resistance observed in the field populations of this vector may affect the future control measures in northern Nigeria, using the carbamate-based IRS. However, the PBO-containing combination bed net PermaNet(r)3.0 was found to be still effective in killing this species. The discovery of a high susceptibility to fenitrothion suggests that organophosphates could also be alternatives for IRS. Finally, all evidences pointed to the preeminent role of metabolic mechanisms in the multiple resistance in this populations of _An. funestus_. This should be considered by Nigeria's National Malaria Elimination Program when deploying control tools/interventions into this area.\n", - "\n", - "header: WHO Insecticides Susceptibility Tests\n", - "\n", - "The bioassays were performed following the protocol of WHO [35], with various insecticides from four major public health classes. These include (i) the type I pyrethroid: permethrin (0.75%); (ii) the type II pyrethroid: deltamethrin (0.05%); (iii) the organochloride: DDT (4%); (iv) the carbamate: benodiocarb (0.1%); and (v) the organophosphate: fenitrothion (1%). All insecticide impregnated papers (reference: WHO/VBC/81.806) were sourced from the WHO/Vector Control Research Unit (VCRU) of University of Sains Malaysia (Penang, Malaysia). Four replicates of 24-26 F1 females (3-4 d old) per tube were used for each insecticide. The mosquitoes were transferred to tubes lined with insecticide papers and exposed for 1 h, after which they were transferred back to the holding tubes, supplied with 10% sugar, and mortality recorded at 24 h. For each bioassay, one replicate of 20-25 females unexposed to any insecticides were used as a control. The fully susceptible _An. funestus_ (FANG colony) [36] was tested, alongside the field populations, for the pyrethroid papers to ascertain the potency of the papers. The mosquitoes were deemed susceptible to an insecticide where mortality was >98%, suspected to be moderately resistant where mortality is between 90-98%, and resistant where mortality was <90% [35]. Figures were prepared using GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA).\n", - "\n", - "header: Evidence of Multiple Resistance in the Gajerar Giwa An. funestus\n", - "\n", - "The multiple insecticide resistance seen in the _An. funestus_ in this study is in line with reported data from several studies across Africa [20,46-48], though with the intensity of the resistance higher in southern Africa. However, the level of pyrethroid resistance observed in this study was higher than reported in the same species from southern Nigeria by Djouaka et al. [18], especially for deltamethrin,\n", - "where mortalities in the population from southern Nigeria was on average three times lower compared to the Gajerar Giwa population. In contrast, the extremely high DDT resistance reported in southern Nigeria [18] was not seen in the Gajerar Giwa population, though the DDT resistance is higher compared to the values reported for the same species in Sahel of northern Senegal [48]. The high bendiocarb resistance seen in the Gajerar Giwa population (54% mortality) is lower than carbamate resistance in southern African populations (30-42% mortality) [37; 46], where carbamate resistance is established to be very high. However, the bendiocarb resistance in the Gajerar Giwa is higher than what was reported for the southern Nigerian population of _An. funestus_ (84% mortality) [18], or the population from Senegal (94% mortality) [48], and even in northern Cameroon (89% mortality) [49]. The Gajerar Giwa _An. funestus_ population exhibited a high LT50 for permethrin, reflecting high resistance intensity, though on average less than half of what was documented for the southern African populations [37; 46].\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: 3.2.1 Indoor Resting Density, Human Blood Index and Biting Rate: 3.2.2 Estimation of Sporozoite Infection Rate\n", - "\n", - "A total of 36 out of 66 heads/thoraces were positive for _P. falciparum_ (F\\({}_{+}\\) = 36), corresponding to an unusually high sporozoite rate of 54.55% \\(\\pm\\) 13.63. Validation of the TaqMan results using nested PCR [34] confirmed the _P. falciparum_ infection in the 36 samples.\n", - "\n", - "header: Estimation of Entomological and Parasitological Parameters\n", - "\n", - "The indoor resting density (IRD) was calculated from the number of _An. funestus_ collected on the 4th d, relative to the number of houses assessed, as advised by the WHO [30; 31]. A total of 112 blood-fed females were dissected <48 h after collection, separating heads/thoraces from the abdomens. The abdomens were used for gDNA extraction as outlined in WHO guidelines [30] using the DNeasy Blood and Tissue Kit (QIAGEN, Hilden, Germany), according to manufacturer's protocol. Identification of the source of blood was conducted using the cocktail PCR of Kent et al. [32]. The human blood index was calculated from the number of females that have fed on humans, relative to the total number of females caught [30; 31]. The human biting rate was estimated from the number of the females that have fed on humans, relative to the total number of people in the houses sampled.\n", - "\n", - "header: Composition of the Mosquito Species Collected Indoor: Entomological and Parasitological Parameters of Transmission\n", - "\n", - "The indoor resting density of the _An. funestus_ was estimated as 14 from the 112 blood females collected in eight houses. Analysis of the blood source of these 112 females by PCR revealed that they all fed on human blood, leading to a human blood index of 100%. The human biting rate was estimated as ~5.3 bites per person per night (CI: 4.91-5.69).\n", - "\n", - "header: 2.3.1 Estimation of Indoor Resting Density, Human Blood Index and Biting Rate: 2.3.2 Estimation of Sporozoite Rate\n", - "\n", - "Sixty-six females (22 individuals randomly selected from each of the three days of indoor collection) which laid eggs successfully were dissected, and the heads/thoraces separated from the abdomens immediately, as explained above. The presence of sporozoite was investigated using a TaqMan genotyping protocol, established by Bass and colleagues [33]. Real-time PCR MX 3005 (Agilent, Santa Clara, CA, USA) was used for the amplification. A total of 1 uL of gDNA, extracted from each female head/thorax, was used for PCR, with an initial denaturation at 95 \\({}^{\\circ}\\)C for 10 min, followed by 40 cycles each of 15 s at 95 \\({}^{\\circ}\\)C and 1 min at 60 \\({}^{\\circ}\\)C. Primers described by Bass (PlasF_GCTTAGTTACGATTAATAGGAGTAGCTTG and PlasR_GAAAATCTAAGAATTTCAC CTCTGACA) were used, together with two probes labelled with fluorophores, FAM (Falcip+_TCTGAAT ACGAATGTC) to detect _Plasmodium falciparum_, and HEX (OVM+_CTGAATACAAATGCC) to detect the combination of _P. ovale_, _P. vivax_ and _P. malariae_. Positive controls (known FAM+ and OVM+) were used, in addition to a negative control, in which 1 uL of ddH2O was added. To validate findings of the TaqMan assay, a nested PCR of Snounou et al. [34] was carried out, using all the samples that tested positive with TaqMan. The sporozoite rate was calculated as the percentage of females positive, relative to the total number of the females examined [30].\n", - "\n", - "header: Investigating the Role of Metabolic Resistance Using Synergist Bioassays\n", - "\n", - "Pre-exposure to PBO and DEM recovered some susceptibility to both permethrin and DDT, respectively (Figure 2c). A significant increase in mortality was observed when comparing results of a repeat conventional bioassay with permethrin [mortality = 43.9% (95% CI: 40.93-46.90)] to the results from the PBO-synergised bioassay [mortality = 78.73% (95% CI: 69.53-87.94), kh2 = 22.33, df = 1, \\(P\\) < 0.0001]. Pre-exposure to DEM recovered DDT susceptibility as well, with repeat exposure to DDT producing mortality of 49.82% (95% CI: 45.54-54.9), compared to a synergised experiment with a mortality of 81.44% (95% CI: 74.36-88.52, kh2 = 19.12, df = 1, \\(P\\) < 0.0001). In both cases, the doubling of mortalities from synergist pre-exposure suggests the possible role of cytochrome P450s and GSTs, respectively, in the observed permethrin and DDT resistance. No mortality was obtained from the control individuals.\n", - "\n", - "header: Synergist Bioassay with Piperonyl Butoxide (PBO) and Diethyl Malate\n", - "\n", - "To investigate the potential role of P450 monooxygenases in pyrethroid resistance, a synergist bioassay was carried out using 4% PBO [an inhibitor of CYP450s [38]] against permethrin. The role of glutathione S-transferases (GSTs) in DDT resistance was also investigated by pre-exposure to 8% diethyl maleate (DEM). The insecticides and the synergists PBO were sourced from the WHO/Vector Control Research Unit (VCRU) of the University of Sains Malaysia (Penang, Malaysia). Four replicates of 22-26 F1 females (3-4 d old) were pre-exposed to PBO or DEM for 1 h, and then transferred to tubes containing permethrin [35] or DDT, respectively. Mosquitoes were treated as in the WHO bioassays described above, and mortalities scored after 24 h. Two replicates of 25 females each were exposed to PBO only, as a control.\n", - "\n", - "Genotyping of L119F Glutathione S-Transferase (GSTe2) Mutation Associated with DDT/Permethrin Resistance\n", - "\n", - "To detect the L119F _GSTe2_ mutation previously linked to DDT/pyrethroid metabolic resistance [20], TaqMan genotyping was conducted using 44 F0 females collected from the field. This was carried out using a real-time PCR thermocycler (Agilent Mx3005) following an established protocol [20]. The primers L119F_GSTe2F (5'-AACAATTTTTCATTTCTTATTCTCATTAC-3') and L119F_GSTe2R (5'- CGACTCGATCTTCGGGAATGTC-3') were utilised with the following probes: reporter L119 (VIC_AGGACGGTATTCTTTTTCTA) to detect the susceptibility allele, and reporter 119F (FAM_AGGAGCGTATTTTTTTCTA) for the resistance allele. The assay was performed in a 10 mL final volume comprise of 5 mL of 1x Sensimix (Bioline, London, UK), 800 nM each of primer, 200 nM of each probe, and 1 mL of gDNA. Thermocycling conditions were initial denaturation of 10 min at 95 \\({}^{\\circ}\\)C, followed by 40 cycles each of 92 \\({}^{\\circ}\\)C for 10 s, and 60 \\({}^{\\circ}\\)C for 45 s. Genotypes were scored from scatter plots of results produced by the Mx3005 v4.10 software (Agilent, Santa Clara, CA, USA). Three positive samples of known genotypes [20]--(i) homozygote resistant 1014F/1014F; (ii) heterozygote L1014/1014F; and (iii) susceptible L1014/L1014--were used as positive controls. For the negative control, 1 mL of ddH2O was incorporated into the control well. To assess the correlation between the presence of the 119F mutation and the resistance phenotype, 12 each of DDT-alive and -dead females were genotyped using the above protocol. In addition, these 12 alive and 12 dead females were also screened, using the recently established allele-specific PCR [39].\n", - "\n", - "header: Insecticide Resistance Profile of An. funestus Population\n", - "\n", - "The _An. funestus_ population demonstrated high knockdown resistance, with ~5% of them knocked down at 1 h exposure with deltamethrin and DDT (Figure S1), and ~10% knocked down after 1 h exposure with permethrin. High resistance was observed towards the pyrethroids, with a higher mortality of 48.30% (95% CI: 41-55) for permethrin, compared with 29.44% (95% CI: 24-34) for deltamethrin (Figure 2a). A 100% mortality rate was obtained in the FANG susceptible colony. Significant resistance was also observed towards DDT and bendiocarb, with mortalities of 56.34% (95% CI: 51-62) and 54.05% (95% CI: 49-59), respectively. Moderate resistance was observed from exposure to fenitrothion with mortality of 94.22% (95% CI: 88-101).\n", - "\n", - "header: Results\n", - "\n", - "_Anopheles funestus_ is the only mosquito species caught, a total of 721 in 4 d. Out of these, 590 were caught in the first 3 d (52 \\(\\circ\\), 538 \\(\\circ\\) [487 blood fed and 51 unfed]). A total of 312 \\(\\mathrm{\\SIUnitSymbolOhm}\\)ial eggs and 288 egg batches hatched successfully. A total of 131 mosquitoes were caught on the 4th day: 12 \\(\\circ\\) and 119 \\(\\circ\\) (112 of them blood fed and 7 unfed).\n", - "\n", - "header: Polymorphism Analysis of Voltage-Gated Sodium Channel Gene Spanning the 1014 kdr Locus\n", - "\n", - "A fragment of voltage-gated sodium channel spanning intron 19 and the exon 20 containing the 1014F/S mutations associated with knockdown resistance (_kdr_) in _An. gambiae_[21,22] was amplified and sequenced. This was done with DNA extracted from 30 F0 females that laid eggs successfully. PCR was carried using primers: AfunkdrExon19-20F: GTTCAATGAAAGCCCCTCAAA and Afunkdr Exon19-20R: CCGAAATTTGACAAAGCAAA, as described in previous works [43]. The PCR products were purified using the Qiaquick Purification Kit (QIAGEN, Hilden, Germany), sequenced and aligned using BioEdit. Polymorphisms analysis and maximum likelihood phylogenetic tree construction were as described above. All DNA sequences from the alive and dead females are provided in File S1.\n", - "\n", - "header: Bed Net Efficacy Using Cone Bioassay\n", - "\n", - "A low efficacy was observed with the pyrethroid-based Olyset(r)Net (mortality = 22.22, 95% CI: 14.37-30.07) and the Perma(r)Net2.0 (mortality = 38.05%, CI: 19.12-56.98) (Figure 2b). The side panels of PermaNet(r)3.0 induced higher mortality of 67.41% (CI: 44.87-89.95). This is more than the mortality\n", - "observed with the PBO-containing Olyset(r)Plus (mortality = 52.31%, CI: 41.85-62.78). A 100% mortality rate was seen from exposure to the roof of PermaNet(r)3.0 (containing PBO). No mortality was obtained from the control populations, which were exposed to untreated nets.\n", - "\n", - "header: Supplementary Materials:\n", - "\n", - "The following are available online at [http://www.mdpi.com/2073-4425/11/4/454/s1](http://www.mdpi.com/2073-4425/11/4/454/s1), Figure S1: Knockdown profiles of _An. funestus females_ exposed to pyrethroids and DDT. Each bar is a percentage knockdown of values from four different replicates from bioassays at different time points, Figure S2: Analysis of the _acc-_I fragment encompassing the 119 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S3: Analysis of the _acc-_I fragment encompassing the 485 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S4: Analysis of the _VGSC_ fragment encompassing the 1014 _kdr_ mutation codon. (**a**). pattern of genetic variability of 30 sequences from randomly selected F0 females; (**b**). a maximum likelihood phylogenetic tree of the sequences, Table S1: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 119 codon for alive and dead mosquitoes, Table S2: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 485 codon for alive and dead mosquitoes, Table S3: Summary statistics for polymorphism of a fragment of voltage-gated sodium channel encompassing the 1014 codon for the field F0 females, File S1: Analyzed sequences (gDNA partial fragments) from encompassing the G119S and N485I of _acetylcholinesterase_-1 gene and sequences from the partial fragment of the voltage-gated sodium channel spanning the 1014th codon.\n", - "\n", - "header: Data Analysis\n", - "\n", - "The results of bioassays were interpreted as continuous variables, with normal distributions and percentage mortalities +- standard error of mean (SEM) calculated, based on the WHO protocol [35]. Results of mortalities from synergism-pyrethroid exposure were compared with values obtained from exposure to pyrethroid alone using a two-tailed Chi-Square test of independence, with the level of significance pegged as \\(P\\) < 0.05, as implemented in GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA). For genotyping of 119F _GSTe2_ mutation allele frequency was calculated using the formula f(R) = (2 x RR + RS)/2\\(N\\) for individuals carrying the mutations, and f(S) = 1 - f(R) for the susceptible individuals; where RR = total number of homozygote resistant; RS = total number heterozygote resistant; \\(N\\), total number of individuals investigated. Genotype frequency was calculated as relative frequencies of the homozygote resistant and heterozygote resistant individuals. The correlation between the genotypes and resistance phenotypes was estimated by estimating the odds ratio using the epiR package [R version 3.5.0 ([https://cran.r-project.org/bin/windows/base/](https://cran.r-project.org/bin/windows/base/))] with statistical significance established based on the Fisher's exact probability test (_P_ < 0.05). For the estimation of LT50, a probit analysis was carried out using glm with a MASS package of R [44].\n", - "\n", - "header: WHO Insecticides Susceptibility Tests\n", - "\n", - "The bioassays were performed following the protocol of WHO [35], with various insecticides from four major public health classes. These include (i) the type I pyrethroid: permethrin (0.75%); (ii) the type II pyrethroid: deltamethrin (0.05%); (iii) the organochloride: DDT (4%); (iv) the carbamate: benodiocarb (0.1%); and (v) the organophosphate: fenitrothion (1%). All insecticide impregnated papers (reference: WHO/VBC/81.806) were sourced from the WHO/Vector Control Research Unit (VCRU) of University of Sains Malaysia (Penang, Malaysia). Four replicates of 24-26 F1 females (3-4 d old) per tube were used for each insecticide. The mosquitoes were transferred to tubes lined with insecticide papers and exposed for 1 h, after which they were transferred back to the holding tubes, supplied with 10% sugar, and mortality recorded at 24 h. For each bioassay, one replicate of 20-25 females unexposed to any insecticides were used as a control. The fully susceptible _An. funestus_ (FANG colony) [36] was tested, alongside the field populations, for the pyrethroid papers to ascertain the potency of the papers. The mosquitoes were deemed susceptible to an insecticide where mortality was >98%, suspected to be moderately resistant where mortality is between 90-98%, and resistant where mortality was <90% [35]. Figures were prepared using GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA).\n", - "\n", - "header: Investigating the Role of L119F-GSTe2 Mutation in DDT Resistance\n", - "\n", - "Initial genotyping of 43 F0 females revealed a high frequency of the L119F-GSTe2 mutation with 30.2% (13 individuals) heterozygotes (RS, L119/F119), 32.6% (14 individuals) homozygote resistant (RR, 119F/119F), and 16.3% (7 individuals) homozygote susceptible (SS, L119/L119) (Figure 3a).\n", - "\n", - "Figure 2: Resistance profiles of F1 _An. funestus_ females. (**a**). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (**b**). Results of the cone bioassays with PermaNet®3.0 (side and roof), PermaNet®2.0, Olyset®Plus and Olyset®Net. Results are the average of percentage mortalities ± SEM of five replicates; (**c**). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at \\(P\\) < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (**d**). Time-course bioassay for LTs0 estimation/test for strength of permethrin resistance.\n", - "\n", - "\n", - "The 119F allele frequency f(R) was calculated as ~0.84. 12 each of DDT-alive and -dead F1 females were used for allele-specific PCR to detect the L119F GSTe2 mutation. 8 of the DDT-alive (8/12, 66.66%) were homozygote resistant (RR) for the mutation (Figure 3b,c), and 4 females (4/12, 33.33%) were heterozygote resistant. From the dead females, one sample failed (Figure 3c), only one female was homozygote resistant (1/11, 9.09%), 8 were heterozygotes (8/11, 72.72%), and 2 were susceptible (2/11, 18.18%). A difference was observed in the distribution of the 119F mutation [Odds Ratio of 16.00 (95% CI: 6.67-38.3, \\(\\chi^{2}\\) = 3.70, \\(p\\) = 0.05)] when comparing the frequency of the homozygote resistant allele (RR) with susceptible allele (SS) in the alive and dead females. A comparison of all resistant (RR + RS) with susceptible (SS) individuals from alive and dead females revealed no genotype-phenotype association [OR = 0.49 (CI: 0.19-3.15, \\(\\chi^{2}\\) = 1.2, \\(p\\) = 0.27)]. No association was observed when comparing the heterozygote individuals (RS) from both alive and dead to the susceptible (SS) [OR = 2.44 (CI: 0.9-13.53, \\(\\chi^{2}\\) = 0.49, \\(p\\) = 0.48)].\n", - "\n", - "header: Estimation of Resistance Intensity with Time-Course Bioassay\n", - "\n", - "To establish the strength of pyrethroid resistance with time, additional bioassays were performed, with 0.75% permethrin, at varying times of exposure. Four replicates of 20-25 F1 females were exposed in time-course spanning 60, 120, 180, 240 and 300 min, to establish the time required to kill 50%\n", - "of them (LT50). Protocol was as described above in conventional bioassays, except for variation in time. Resistance intensity was established by comparing the LT50 from the Gajerar Giwa _An. fintestus_ populations to the LT50 previously established for the fully susceptible _Anopheles coluzzi_ lab colony [5]. This type of inter-species comparison of using _An. gambiae_ (Kisumu colony) LT50s had been done before in the absence of LT50 data from FANG colony [37].\n", - "\n", - "header: Pyetthroid Resistance Intensity\n", - "\n", - "The LT50 for permethrin was estimated as 64.76 min [95% CI: 59.17-70.35, Fiducial] (Figure 2d) after assessing mortality from 30 to 300 min exposure. To calculate the resistance intensity, the LT50 from Gajerar Giwa _An. funestus_ was compared to LT50 (3.320 min), previously established for the fully susceptible _An. coluzzii_ Ngoussou lab colony [5]. The resistance ratio was estimated as 19.51.\n", - "\n", - "header: Study Site and Mosquito Sampling: Molecular Identification of Mosquito Species\n", - "\n", - "Genomic DNA (gDNA) was extracted from the females which laid eggs, using the Livak protocol [29], and the mosquitoes identified to species using the cocktail PCR of Koekemoer, et al. [28]. These include all the females from the first 3 days of collections, as well as all the females collected on day 4, which were used for the estimation of indoor resting density and identification of blood meal source.\n", - "\n", - "Figure 1: A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\n", - "\n", - "header: Determination of LLIN Efficacy with Cone Bioassays\n", - "\n", - "To investigate the efficacy of commonly distributed long-lasting insecticidal nets (LLINs), cone bioassays were conducted following the WHO protocol [36], using 3-4 d old F1 females. Five replicates of 9-12 mosquitoes were placed in a plastic cone attached to a fresh insecticide-containing bed net and tested. The LLINs include: the Olyset(r)Net (containing 2% permethrin), Olyset(r)Plus (containing 2% permethrin combined with 1% of the synergist, piperonyl butoxide, PBO), PermaNet(r)2.0 (containing 1.4-1.8 g/kg +-25% deltamethrin), PermaNet(r)3.0 side panel (containing 2.1-2.8 g/kg +-25% deltamethrin), and PermaNet(r)3.0 roof (containing 4.0 g/kg +-25% deltamethrin, combined with 25 g/kg +-25% of PBO). For each experiment, five different pieces cut from an LLIN brand were used for the five technical replicates. Mosquitoes were exposed for 3 min and immediately transferred to paper cups. They were supplied with 10% sucrose and mortalities recorded after 24 h. For the control, five replicates of ten mosquitoes were exposed to untreated net.\n", - "\n", - "header: A Low-Efficacy of Long-Lasting Insecticidal Nets Is a Serious Challenge to Malaria Control\n", - "\n", - "The high pyrethroid resistance was also evident in the low efficacy of insecticide-treated bed nets, most especially the Olyset(r)Net and the PermaNet(r)3.0 (the side panel). Except for PermaNet(r)3.0, profoundly lower efficacies were seen with all the nets, in line with observations in same species from southern Africa [46], and a recent report from northern Cameroon [50]. The recovery of susceptibilities from exposure to the roof of PermaNet(r)3.0 and the PBO-synergist bioassays suggest the preeminent role of CYP450s in the pyrethroid resistance in this population. This agrees with several studies carried out across Africa [46; 51; 52]. Low efficacy seen with Olyset(r)Plus net have been described in several studies with both _An. funestus_ and _An. coluzzii_[50; 51; 52; 53].\n", - "\n", - "Insecticide Resistance Mechanism Is Driven by Metabolic Resistance Mechanisms in Gajerar Giwa An. funestus Population\n", - "\n", - "The recovery of susceptibilities from pre-exposure to PBO and DEM suggests the preeminent role of CYP450s and GSTs in pyrethroid and DDT resistance, respectively. Indeed, several studies have used these synergists to establish the potential role of the above metabolic enzymes in resistance in _An. funestus_[51; 52; 54]. The role of metabolic resistance is strengthened by (i) the finding of high frequency of the 119F-_GSTe2_ mutation in the Gajerar Giwa population and its possible link to DDT resistance, as documented in several studies [20; 47; 51; 54]; (ii) the absence of the G119S and N485I mutations in the acetylcholinesterase gene; and (iii) the absence of the 1014F/_S kdr_ mutation in the voltage-gated sodium channel from the Gajerar Giwa population, in line with the observations across Africa [37; 52; 55]. The high diversity seen in the fragment spanning the exon 20 of the VGSC suggests lack of reduced diversity due to absence of selection.\n", - "\n", - "The high bendiocarb resistance prompted sequencing of the _ace-1_ fragment for the G119S and N485I mutations previously associated with carbamate/organophosphate resistance. The absence of these mutations in the highly bendiocarb-resistant Gajerar Giwa populations, and the observed relative fenitrothion susceptibility, suggests no cross resistance, and points to metabolic mechanism responsible for the bendiocarb resistance. Several studies have reported absence of the G119S mutation in various populations of _An. funestus_ across Africa [24; 43; 52]. The high diversity seen in the _ace-1_ fragment suggests a lack of selection in the gene. However, with only 12 females (low sample size) each of alive and dead used, the presence of this mutation at a low frequency cannot be ruled out.\n", - "\n", - "The absence of the N485I mutation in Gajerar Giwa populations confirmed previous observations of the mutation present only in southern African populations [24; 46]. However, with 12 females each of the alive and dead used, the presence of these mutations or others at a low frequency cannot be ruled out.\n", - "\n", - "header: Ethical Approval\n", - "\n", - "Clearance for indoor collection previously obtained on 12/01/2017 from Operational Research Advisory Committee, Ministry of Health (with reference number MOH/off/797/TI/402), Kano state was used. A meeting was held with the village head and household members at Gajerar Giwa; the scope of the study and its benefits to malaria control was explained. A written and signed informed consent was obtained from individuals who agreed to indoor collection in their houses. All communication was carried out in the local language (Hausa).\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Nigeria\",\"Site\":\"Gajerar Giwa\"}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Olyset(r)Net\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"2%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N02\":{\"Net_type\":\"Olyset(r)Plus\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"2%,1%\",\"pHI_category\":\"Good\",\"Synergist\":\"piperonyl butoxide\"},\"N03\":{\"Net_type\":\"PermaNet(r)2.0\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"1.4-1.8 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N04\":{\"Net_type\":\"PermaNet(r)3.0 side panel\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"2.1-2.8 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N05\":{\"Net_type\":\"PermaNet(r)3.0 roof\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"4.0 g\\/kg +-25%,25 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":\"piperonyl butoxide\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: 3.2.1 Indoor Resting Density, Human Blood Index and Biting Rate: 3.2.2 Estimation of Sporozoite Infection Rate\n", - "\n", - "A total of 36 out of 66 heads/thoraces were positive for _P. falciparum_ (F\\({}_{+}\\) = 36), corresponding to an unusually high sporozoite rate of 54.55% \\(\\pm\\) 13.63. Validation of the TaqMan results using nested PCR [34] confirmed the _P. falciparum_ infection in the 36 samples.\n", - "\n", - "header: Composition of the Mosquito Species Collected Indoor: Entomological and Parasitological Parameters of Transmission\n", - "\n", - "The indoor resting density of the _An. funestus_ was estimated as 14 from the 112 blood females collected in eight houses. Analysis of the blood source of these 112 females by PCR revealed that they all fed on human blood, leading to a human blood index of 100%. The human biting rate was estimated as ~5.3 bites per person per night (CI: 4.91-5.69).\n", - "\n", - "header: Estimation of Entomological and Parasitological Parameters\n", - "\n", - "The indoor resting density (IRD) was calculated from the number of _An. funestus_ collected on the 4th d, relative to the number of houses assessed, as advised by the WHO [30; 31]. A total of 112 blood-fed females were dissected <48 h after collection, separating heads/thoraces from the abdomens. The abdomens were used for gDNA extraction as outlined in WHO guidelines [30] using the DNeasy Blood and Tissue Kit (QIAGEN, Hilden, Germany), according to manufacturer's protocol. Identification of the source of blood was conducted using the cocktail PCR of Kent et al. [32]. The human blood index was calculated from the number of females that have fed on humans, relative to the total number of females caught [30; 31]. The human biting rate was estimated from the number of the females that have fed on humans, relative to the total number of people in the houses sampled.\n", - "\n", - "header: 2.3.1 Estimation of Indoor Resting Density, Human Blood Index and Biting Rate: 2.3.2 Estimation of Sporozoite Rate\n", - "\n", - "Sixty-six females (22 individuals randomly selected from each of the three days of indoor collection) which laid eggs successfully were dissected, and the heads/thoraces separated from the abdomens immediately, as explained above. The presence of sporozoite was investigated using a TaqMan genotyping protocol, established by Bass and colleagues [33]. Real-time PCR MX 3005 (Agilent, Santa Clara, CA, USA) was used for the amplification. A total of 1 uL of gDNA, extracted from each female head/thorax, was used for PCR, with an initial denaturation at 95 \\({}^{\\circ}\\)C for 10 min, followed by 40 cycles each of 15 s at 95 \\({}^{\\circ}\\)C and 1 min at 60 \\({}^{\\circ}\\)C. Primers described by Bass (PlasF_GCTTAGTTACGATTAATAGGAGTAGCTTG and PlasR_GAAAATCTAAGAATTTCAC CTCTGACA) were used, together with two probes labelled with fluorophores, FAM (Falcip+_TCTGAAT ACGAATGTC) to detect _Plasmodium falciparum_, and HEX (OVM+_CTGAATACAAATGCC) to detect the combination of _P. ovale_, _P. vivax_ and _P. malariae_. Positive controls (known FAM+ and OVM+) were used, in addition to a negative control, in which 1 uL of ddH2O was added. To validate findings of the TaqMan assay, a nested PCR of Snounou et al. [34] was carried out, using all the samples that tested positive with TaqMan. The sporozoite rate was calculated as the percentage of females positive, relative to the total number of the females examined [30].\n", - "\n", - "header: Investigating the Role of Metabolic Resistance Using Synergist Bioassays\n", - "\n", - "Pre-exposure to PBO and DEM recovered some susceptibility to both permethrin and DDT, respectively (Figure 2c). A significant increase in mortality was observed when comparing results of a repeat conventional bioassay with permethrin [mortality = 43.9% (95% CI: 40.93-46.90)] to the results from the PBO-synergised bioassay [mortality = 78.73% (95% CI: 69.53-87.94), kh2 = 22.33, df = 1, \\(P\\) < 0.0001]. Pre-exposure to DEM recovered DDT susceptibility as well, with repeat exposure to DDT producing mortality of 49.82% (95% CI: 45.54-54.9), compared to a synergised experiment with a mortality of 81.44% (95% CI: 74.36-88.52, kh2 = 19.12, df = 1, \\(P\\) < 0.0001). In both cases, the doubling of mortalities from synergist pre-exposure suggests the possible role of cytochrome P450s and GSTs, respectively, in the observed permethrin and DDT resistance. No mortality was obtained from the control individuals.\n", - "\n", - "header: Insecticide Resistance Profile of An. funestus Population\n", - "\n", - "The _An. funestus_ population demonstrated high knockdown resistance, with ~5% of them knocked down at 1 h exposure with deltamethrin and DDT (Figure S1), and ~10% knocked down after 1 h exposure with permethrin. High resistance was observed towards the pyrethroids, with a higher mortality of 48.30% (95% CI: 41-55) for permethrin, compared with 29.44% (95% CI: 24-34) for deltamethrin (Figure 2a). A 100% mortality rate was obtained in the FANG susceptible colony. Significant resistance was also observed towards DDT and bendiocarb, with mortalities of 56.34% (95% CI: 51-62) and 54.05% (95% CI: 49-59), respectively. Moderate resistance was observed from exposure to fenitrothion with mortality of 94.22% (95% CI: 88-101).\n", - "\n", - "header: Polymorphism Analysis of Voltage-Gated Sodium Channel Gene Spanning the 1014 kdr Locus\n", - "\n", - "A fragment of voltage-gated sodium channel spanning intron 19 and the exon 20 containing the 1014F/S mutations associated with knockdown resistance (_kdr_) in _An. gambiae_[21,22] was amplified and sequenced. This was done with DNA extracted from 30 F0 females that laid eggs successfully. PCR was carried using primers: AfunkdrExon19-20F: GTTCAATGAAAGCCCCTCAAA and Afunkdr Exon19-20R: CCGAAATTTGACAAAGCAAA, as described in previous works [43]. The PCR products were purified using the Qiaquick Purification Kit (QIAGEN, Hilden, Germany), sequenced and aligned using BioEdit. Polymorphisms analysis and maximum likelihood phylogenetic tree construction were as described above. All DNA sequences from the alive and dead females are provided in File S1.\n", - "\n", - "header: Results\n", - "\n", - "_Anopheles funestus_ is the only mosquito species caught, a total of 721 in 4 d. Out of these, 590 were caught in the first 3 d (52 \\(\\circ\\), 538 \\(\\circ\\) [487 blood fed and 51 unfed]). A total of 312 \\(\\mathrm{\\SIUnitSymbolOhm}\\)ial eggs and 288 egg batches hatched successfully. A total of 131 mosquitoes were caught on the 4th day: 12 \\(\\circ\\) and 119 \\(\\circ\\) (112 of them blood fed and 7 unfed).\n", - "\n", - "header: Synergist Bioassay with Piperonyl Butoxide (PBO) and Diethyl Malate\n", - "\n", - "To investigate the potential role of P450 monooxygenases in pyrethroid resistance, a synergist bioassay was carried out using 4% PBO [an inhibitor of CYP450s [38]] against permethrin. The role of glutathione S-transferases (GSTs) in DDT resistance was also investigated by pre-exposure to 8% diethyl maleate (DEM). The insecticides and the synergists PBO were sourced from the WHO/Vector Control Research Unit (VCRU) of the University of Sains Malaysia (Penang, Malaysia). Four replicates of 22-26 F1 females (3-4 d old) were pre-exposed to PBO or DEM for 1 h, and then transferred to tubes containing permethrin [35] or DDT, respectively. Mosquitoes were treated as in the WHO bioassays described above, and mortalities scored after 24 h. Two replicates of 25 females each were exposed to PBO only, as a control.\n", - "\n", - "Genotyping of L119F Glutathione S-Transferase (GSTe2) Mutation Associated with DDT/Permethrin Resistance\n", - "\n", - "To detect the L119F _GSTe2_ mutation previously linked to DDT/pyrethroid metabolic resistance [20], TaqMan genotyping was conducted using 44 F0 females collected from the field. This was carried out using a real-time PCR thermocycler (Agilent Mx3005) following an established protocol [20]. The primers L119F_GSTe2F (5'-AACAATTTTTCATTTCTTATTCTCATTAC-3') and L119F_GSTe2R (5'- CGACTCGATCTTCGGGAATGTC-3') were utilised with the following probes: reporter L119 (VIC_AGGACGGTATTCTTTTTCTA) to detect the susceptibility allele, and reporter 119F (FAM_AGGAGCGTATTTTTTTCTA) for the resistance allele. The assay was performed in a 10 mL final volume comprise of 5 mL of 1x Sensimix (Bioline, London, UK), 800 nM each of primer, 200 nM of each probe, and 1 mL of gDNA. Thermocycling conditions were initial denaturation of 10 min at 95 \\({}^{\\circ}\\)C, followed by 40 cycles each of 92 \\({}^{\\circ}\\)C for 10 s, and 60 \\({}^{\\circ}\\)C for 45 s. Genotypes were scored from scatter plots of results produced by the Mx3005 v4.10 software (Agilent, Santa Clara, CA, USA). Three positive samples of known genotypes [20]--(i) homozygote resistant 1014F/1014F; (ii) heterozygote L1014/1014F; and (iii) susceptible L1014/L1014--were used as positive controls. For the negative control, 1 mL of ddH2O was incorporated into the control well. To assess the correlation between the presence of the 119F mutation and the resistance phenotype, 12 each of DDT-alive and -dead females were genotyped using the above protocol. In addition, these 12 alive and 12 dead females were also screened, using the recently established allele-specific PCR [39].\n", - "\n", - "header: Bed Net Efficacy Using Cone Bioassay\n", - "\n", - "A low efficacy was observed with the pyrethroid-based Olyset(r)Net (mortality = 22.22, 95% CI: 14.37-30.07) and the Perma(r)Net2.0 (mortality = 38.05%, CI: 19.12-56.98) (Figure 2b). The side panels of PermaNet(r)3.0 induced higher mortality of 67.41% (CI: 44.87-89.95). This is more than the mortality\n", - "observed with the PBO-containing Olyset(r)Plus (mortality = 52.31%, CI: 41.85-62.78). A 100% mortality rate was seen from exposure to the roof of PermaNet(r)3.0 (containing PBO). No mortality was obtained from the control populations, which were exposed to untreated nets.\n", - "\n", - "header: Investigating the Role of L119F-GSTe2 Mutation in DDT Resistance\n", - "\n", - "Initial genotyping of 43 F0 females revealed a high frequency of the L119F-GSTe2 mutation with 30.2% (13 individuals) heterozygotes (RS, L119/F119), 32.6% (14 individuals) homozygote resistant (RR, 119F/119F), and 16.3% (7 individuals) homozygote susceptible (SS, L119/L119) (Figure 3a).\n", - "\n", - "Figure 2: Resistance profiles of F1 _An. funestus_ females. (**a**). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (**b**). Results of the cone bioassays with PermaNet®3.0 (side and roof), PermaNet®2.0, Olyset®Plus and Olyset®Net. Results are the average of percentage mortalities ± SEM of five replicates; (**c**). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at \\(P\\) < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (**d**). Time-course bioassay for LTs0 estimation/test for strength of permethrin resistance.\n", - "\n", - "\n", - "The 119F allele frequency f(R) was calculated as ~0.84. 12 each of DDT-alive and -dead F1 females were used for allele-specific PCR to detect the L119F GSTe2 mutation. 8 of the DDT-alive (8/12, 66.66%) were homozygote resistant (RR) for the mutation (Figure 3b,c), and 4 females (4/12, 33.33%) were heterozygote resistant. From the dead females, one sample failed (Figure 3c), only one female was homozygote resistant (1/11, 9.09%), 8 were heterozygotes (8/11, 72.72%), and 2 were susceptible (2/11, 18.18%). A difference was observed in the distribution of the 119F mutation [Odds Ratio of 16.00 (95% CI: 6.67-38.3, \\(\\chi^{2}\\) = 3.70, \\(p\\) = 0.05)] when comparing the frequency of the homozygote resistant allele (RR) with susceptible allele (SS) in the alive and dead females. A comparison of all resistant (RR + RS) with susceptible (SS) individuals from alive and dead females revealed no genotype-phenotype association [OR = 0.49 (CI: 0.19-3.15, \\(\\chi^{2}\\) = 1.2, \\(p\\) = 0.27)]. No association was observed when comparing the heterozygote individuals (RS) from both alive and dead to the susceptible (SS) [OR = 2.44 (CI: 0.9-13.53, \\(\\chi^{2}\\) = 0.49, \\(p\\) = 0.48)].\n", - "\n", - "header: Data Analysis\n", - "\n", - "The results of bioassays were interpreted as continuous variables, with normal distributions and percentage mortalities +- standard error of mean (SEM) calculated, based on the WHO protocol [35]. Results of mortalities from synergism-pyrethroid exposure were compared with values obtained from exposure to pyrethroid alone using a two-tailed Chi-Square test of independence, with the level of significance pegged as \\(P\\) < 0.05, as implemented in GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA). For genotyping of 119F _GSTe2_ mutation allele frequency was calculated using the formula f(R) = (2 x RR + RS)/2\\(N\\) for individuals carrying the mutations, and f(S) = 1 - f(R) for the susceptible individuals; where RR = total number of homozygote resistant; RS = total number heterozygote resistant; \\(N\\), total number of individuals investigated. Genotype frequency was calculated as relative frequencies of the homozygote resistant and heterozygote resistant individuals. The correlation between the genotypes and resistance phenotypes was estimated by estimating the odds ratio using the epiR package [R version 3.5.0 ([https://cran.r-project.org/bin/windows/base/](https://cran.r-project.org/bin/windows/base/))] with statistical significance established based on the Fisher's exact probability test (_P_ < 0.05). For the estimation of LT50, a probit analysis was carried out using glm with a MASS package of R [44].\n", - "\n", - "header: Supplementary Materials:\n", - "\n", - "The following are available online at [http://www.mdpi.com/2073-4425/11/4/454/s1](http://www.mdpi.com/2073-4425/11/4/454/s1), Figure S1: Knockdown profiles of _An. funestus females_ exposed to pyrethroids and DDT. Each bar is a percentage knockdown of values from four different replicates from bioassays at different time points, Figure S2: Analysis of the _acc-_I fragment encompassing the 119 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S3: Analysis of the _acc-_I fragment encompassing the 485 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S4: Analysis of the _VGSC_ fragment encompassing the 1014 _kdr_ mutation codon. (**a**). pattern of genetic variability of 30 sequences from randomly selected F0 females; (**b**). a maximum likelihood phylogenetic tree of the sequences, Table S1: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 119 codon for alive and dead mosquitoes, Table S2: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 485 codon for alive and dead mosquitoes, Table S3: Summary statistics for polymorphism of a fragment of voltage-gated sodium channel encompassing the 1014 codon for the field F0 females, File S1: Analyzed sequences (gDNA partial fragments) from encompassing the G119S and N485I of _acetylcholinesterase_-1 gene and sequences from the partial fragment of the voltage-gated sodium channel spanning the 1014th codon.\n", - "\n", - "header: WHO Insecticides Susceptibility Tests\n", - "\n", - "The bioassays were performed following the protocol of WHO [35], with various insecticides from four major public health classes. These include (i) the type I pyrethroid: permethrin (0.75%); (ii) the type II pyrethroid: deltamethrin (0.05%); (iii) the organochloride: DDT (4%); (iv) the carbamate: benodiocarb (0.1%); and (v) the organophosphate: fenitrothion (1%). All insecticide impregnated papers (reference: WHO/VBC/81.806) were sourced from the WHO/Vector Control Research Unit (VCRU) of University of Sains Malaysia (Penang, Malaysia). Four replicates of 24-26 F1 females (3-4 d old) per tube were used for each insecticide. The mosquitoes were transferred to tubes lined with insecticide papers and exposed for 1 h, after which they were transferred back to the holding tubes, supplied with 10% sugar, and mortality recorded at 24 h. For each bioassay, one replicate of 20-25 females unexposed to any insecticides were used as a control. The fully susceptible _An. funestus_ (FANG colony) [36] was tested, alongside the field populations, for the pyrethroid papers to ascertain the potency of the papers. The mosquitoes were deemed susceptible to an insecticide where mortality was >98%, suspected to be moderately resistant where mortality is between 90-98%, and resistant where mortality was <90% [35]. Figures were prepared using GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA).\n", - "\n", - "header: Estimation of Resistance Intensity with Time-Course Bioassay\n", - "\n", - "To establish the strength of pyrethroid resistance with time, additional bioassays were performed, with 0.75% permethrin, at varying times of exposure. Four replicates of 20-25 F1 females were exposed in time-course spanning 60, 120, 180, 240 and 300 min, to establish the time required to kill 50%\n", - "of them (LT50). Protocol was as described above in conventional bioassays, except for variation in time. Resistance intensity was established by comparing the LT50 from the Gajerar Giwa _An. fintestus_ populations to the LT50 previously established for the fully susceptible _Anopheles coluzzi_ lab colony [5]. This type of inter-species comparison of using _An. gambiae_ (Kisumu colony) LT50s had been done before in the absence of LT50 data from FANG colony [37].\n", - "\n", - "header: Determination of LLIN Efficacy with Cone Bioassays\n", - "\n", - "To investigate the efficacy of commonly distributed long-lasting insecticidal nets (LLINs), cone bioassays were conducted following the WHO protocol [36], using 3-4 d old F1 females. Five replicates of 9-12 mosquitoes were placed in a plastic cone attached to a fresh insecticide-containing bed net and tested. The LLINs include: the Olyset(r)Net (containing 2% permethrin), Olyset(r)Plus (containing 2% permethrin combined with 1% of the synergist, piperonyl butoxide, PBO), PermaNet(r)2.0 (containing 1.4-1.8 g/kg +-25% deltamethrin), PermaNet(r)3.0 side panel (containing 2.1-2.8 g/kg +-25% deltamethrin), and PermaNet(r)3.0 roof (containing 4.0 g/kg +-25% deltamethrin, combined with 25 g/kg +-25% of PBO). For each experiment, five different pieces cut from an LLIN brand were used for the five technical replicates. Mosquitoes were exposed for 3 min and immediately transferred to paper cups. They were supplied with 10% sucrose and mortalities recorded after 24 h. For the control, five replicates of ten mosquitoes were exposed to untreated net.\n", - "\n", - "header: Study Site and Mosquito Sampling: Molecular Identification of Mosquito Species\n", - "\n", - "Genomic DNA (gDNA) was extracted from the females which laid eggs, using the Livak protocol [29], and the mosquitoes identified to species using the cocktail PCR of Koekemoer, et al. [28]. These include all the females from the first 3 days of collections, as well as all the females collected on day 4, which were used for the estimation of indoor resting density and identification of blood meal source.\n", - "\n", - "Figure 1: A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\n", - "\n", - "header: Pyetthroid Resistance Intensity\n", - "\n", - "The LT50 for permethrin was estimated as 64.76 min [95% CI: 59.17-70.35, Fiducial] (Figure 2d) after assessing mortality from 30 to 300 min exposure. To calculate the resistance intensity, the LT50 from Gajerar Giwa _An. funestus_ was compared to LT50 (3.320 min), previously established for the fully susceptible _An. coluzzii_ Ngoussou lab colony [5]. The resistance ratio was estimated as 19.51.\n", - "\n", - "header: A Low-Efficacy of Long-Lasting Insecticidal Nets Is a Serious Challenge to Malaria Control\n", - "\n", - "The high pyrethroid resistance was also evident in the low efficacy of insecticide-treated bed nets, most especially the Olyset(r)Net and the PermaNet(r)3.0 (the side panel). Except for PermaNet(r)3.0, profoundly lower efficacies were seen with all the nets, in line with observations in same species from southern Africa [46], and a recent report from northern Cameroon [50]. The recovery of susceptibilities from exposure to the roof of PermaNet(r)3.0 and the PBO-synergist bioassays suggest the preeminent role of CYP450s in the pyrethroid resistance in this population. This agrees with several studies carried out across Africa [46; 51; 52]. Low efficacy seen with Olyset(r)Plus net have been described in several studies with both _An. funestus_ and _An. coluzzii_[50; 51; 52; 53].\n", - "\n", - "Insecticide Resistance Mechanism Is Driven by Metabolic Resistance Mechanisms in Gajerar Giwa An. funestus Population\n", - "\n", - "The recovery of susceptibilities from pre-exposure to PBO and DEM suggests the preeminent role of CYP450s and GSTs in pyrethroid and DDT resistance, respectively. Indeed, several studies have used these synergists to establish the potential role of the above metabolic enzymes in resistance in _An. funestus_[51; 52; 54]. The role of metabolic resistance is strengthened by (i) the finding of high frequency of the 119F-_GSTe2_ mutation in the Gajerar Giwa population and its possible link to DDT resistance, as documented in several studies [20; 47; 51; 54]; (ii) the absence of the G119S and N485I mutations in the acetylcholinesterase gene; and (iii) the absence of the 1014F/_S kdr_ mutation in the voltage-gated sodium channel from the Gajerar Giwa population, in line with the observations across Africa [37; 52; 55]. The high diversity seen in the fragment spanning the exon 20 of the VGSC suggests lack of reduced diversity due to absence of selection.\n", - "\n", - "The high bendiocarb resistance prompted sequencing of the _ace-1_ fragment for the G119S and N485I mutations previously associated with carbamate/organophosphate resistance. The absence of these mutations in the highly bendiocarb-resistant Gajerar Giwa populations, and the observed relative fenitrothion susceptibility, suggests no cross resistance, and points to metabolic mechanism responsible for the bendiocarb resistance. Several studies have reported absence of the G119S mutation in various populations of _An. funestus_ across Africa [24; 43; 52]. The high diversity seen in the _ace-1_ fragment suggests a lack of selection in the gene. However, with only 12 females (low sample size) each of alive and dead used, the presence of this mutation at a low frequency cannot be ruled out.\n", - "\n", - "The absence of the N485I mutation in Gajerar Giwa populations confirmed previous observations of the mutation present only in southern African populations [24; 46]. However, with 12 females each of the alive and dead used, the presence of these mutations or others at a low frequency cannot be ruled out.\n", - "\n", - "header: Ethical Approval\n", - "\n", - "Clearance for indoor collection previously obtained on 12/01/2017 from Operational Research Advisory Committee, Ministry of Health (with reference number MOH/off/797/TI/402), Kano state was used. A meeting was held with the village head and household members at Gajerar Giwa; the scope of the study and its benefits to malaria control was explained. A written and signed informed consent was obtained from individuals who agreed to indoor collection in their houses. All communication was carried out in the local language (Hausa).\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Nigeria\",\"Site\":\"Gajerar Giwa\"}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Olyset(r)Net\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"2%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N02\":{\"Net_type\":\"Olyset(r)Plus\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"2%,1%\",\"pHI_category\":\"Good\",\"Synergist\":\"piperonyl butoxide\"},\"N03\":{\"Net_type\":\"PermaNet(r)2.0\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"1.4-1.8 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N04\":{\"Net_type\":\"PermaNet(r)3.0 side panel\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"2.1-2.8 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N05\":{\"Net_type\":\"PermaNet(r)3.0 roof\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"4.0 g\\/kg +-25%,25 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":\"piperonyl butoxide\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: WHO tunnel test\n", - "\n", - "The tunnel tests were carried out from August to November 2020 according to standard WHO procedures [9]. Five 25 cm x 25 cm net pieces per ITN/control were cut adjacent to the swatches cut for cone assays from three nets per treatment arm to make a total of 15 pieces per study arm and to account for possible intra-net variability of insecticide loadings. Five tunnels were run with one sample from each treatment arm with one mosquito strain on a single night. Over 60 nights, all 15 pieces of ITNs per study arm were tested with four mosquito strains.\n", - "\n", - "Non-blood-fed nulliparous females, 5-8 days old, sugar starved for 6-8 h were released in a 60-cm-long glass tunnel. At each end of the tunnel, a 25-cm square mosquito cage covered with polyester netting was fitted. At one third of the length, the netting sample was affixed. The surface of netting \"available\" to mosquitoes is 400 cm2 (20 cm x 20 cm), with 9 x 1-cm-diameter holes: one hole is located at the centre of the square; the other eight were equidistant and located 5 cm from the border. In the shorter section of the tunnel, a small rabbit, its back shaved and restrained in a mesh tunnel, was placed as bait (Fig. 1). In the cage at the end of the longer section of the tunnel, 100 female mosquitoes (one strain \n", - "per replicate) were introduced at 21:00. The following morning at 09:00, the mosquitoes were removed using a mouth aspirator and counted separately from each section of the tunnel, and mortality and blood-feeding rates were recorded. The mosquitoes were placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Mortality was recoded at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Overall mortality was measured by pooling the mortalities of mosquitoes from the two sections of the tunnel. Acceptable feeding success and mortality in controls were 50% and 10%, respectively. Any tests not meeting the specified control cut-off were repeated.\n", - "\n", - "header: Mosquito blood-feeding in WHO tunnel, I-ACT and experimental hut\n", - "\n", - "For all bioassays and strains, blood-feeding inhibition was very high (Fig. 3, Table 3). Both Interceptor(r) G2 and Interceptor(r) gave high levels of blood-feeding inhibition in all \"free-flying\" bioassays.\n", - "\n", - "header: Background\n", - "\n", - "As funding for malaria control falls and mosquito resistance to current public health insecticides increases, new and durable vector control tools that utilise new insecticide classes are needed [1]. For insecticide resistance management, a new Insecticide Treated Net (ITN) Interceptor(r) G2 has been developed, coated with a mixture of the pyrethroid alpha-cypermethrin and the pro-insecticide chlorfenapyr [2]. Chlorfenapyr is an Insecticide Resistance Action Committee (IRAC) Group 13 insecticide, having a pyrrole chemistry that uncouples oxidative phosphorylation via disruption of the proton gradient (as a protonophore) to short circuit mitochondrial respiration through inner mitochondrial membranes of insect cells so that ATP cannot be synthesized, subsequently robbing insects of energy, resulting in death [3, 4]. Metabolic resistance is one of the main mechanisms of resistance observed in malaria vectors [5] where one or several detoxification gene families--cytochrome P450s (P450s), esterases and glutathione S-transferases (GSTs)--are overproduced to detoxify insecticides [6]. While this metabolism is a detoxification process, it can increase the potency of a pro-insecticide and may therefore be exploited as a means to control metabolically resistant insect populations [3]. The unique mode of action of chlorfenapyr on an insect's metabolism is particularly relevant for the control of vectors harboring insecticide resistance mechanisms, as increased metabolic activity increases the conversion of the pro-insecticide into its potent n-dealkylated form and will consequently increase mosquito mortality [7].\n", - "\n", - "For any new ITN to be used in public health, a thorough evaluation of its safety, efficacy and effectiveness is conducted based on World Health Organisation (WHO) standards and criteria [8]. The methods and scope of the laboratory tests and field trials required to attain WHO Prequalification (PQ) listing for ITNs are outlined in a set of WHO guidelines, last updated in 2013 [9]. As part of these guidelines, WHO recommends a set of standardised laboratory tests to ascertain the bioefficacy of pyrethroid ITNs, i.e., the ability of ITN products to kill, incapacitate (knock down) and prevent mosquitoes from blood-feeding. Laboratory bioefficacy tests are also a critical component of ITN durability evaluation used to confirm continued ITN bioefficacy after long-term use in the community [10]. The simplest and most commonly applied ITN bioefficacy test is the WHO cone bioassay where mosquitoes are held close to ITN in plastic cones and the number of mosquitoes knocked down (incapacitated) or killed is counted [9]. For ITNs with feeding inhibition mode of action, the WHO tunnel test is used, where a swatch of ITN with small holes (9 x 1-cm diameter) is made and is placed between mosquitoes and small animal bait overnight [11]. The WHO tunnel test has been shown to agree with experimental but data, using laboratory-reared mosquitoes released into the huts [12]. Thresholds for the mosquito knockdown rate (95%) and mosquito mortality rate (80%) and blood-feeding inhibition (90%) using pyrethroid-susceptible _Anopheles_ mosquitoes serve as performance benchmarks; candidate products are required to fulfill minimum performance standards, which have been established by WHO for qualification to be listed/recommended for their public health values to sustain and protect users from disease transmissions. This includes their physical durability and chemical contents recovered from nets replaced in the field over 3 years or as predicted from wash-resistance testing. For a net to be classified as a long-lasting ITN, i.e., LLIN, > 80% of nets tested should pass WHO cone/tunnel performance benchmarks after 3 years of use [13].\n", - "\n", - "Cone tests are relatively easy to perform, high throughput and sensitive to detecting changes in bioavailable pyrethroids that act through rapid contact neurotoxicity. However, chlorfenapyr requires the mosquito to be metabolically and/or physiologically active (as it would be when encountering the ITN under user conditions) to bioactivate into the potent n-dealkylated form which elicits increased mosquito mortality. As mosquitoes are more metabolically active at night when flying and host-seeking during their typical circadian rhythms, the tunnel test may be more appropriate [14].\n", - "\n", - "The President's Malaria Initiative (PMI) currently uses WHO Tunnel tests for the durability monitoring of chlorfenapyr nets with 4 samples per net evaluated and 48 nets per sampling point [15]. This requires large numbers of mosquitoes and access to small animals for testing, so it cannot be done at all facilities in malaria-endemic areas. To accommodate high-throughput evaluation of whole ITNs for durability evaluation, the Ifakara ambient chamber test (I-ACT) was developed [16]. The Ifakara ambient chamber test (I-ACT) is not currently a recognized method \n", - "approved by the WHO. However, it is currently seeking confirmation by direct comparison to approved methods. This is of particular importance where novel slow-acting chemistries cannot achieve the benchmark standards established for conventional pyrethroid ITN exposures yet may prove to be highly efficacious when tested according to their discrete modes of action. Like the experimental hut, I-ACT makes use of whole nets and human hosts to evaluate bioefficacy of field-used ITNs, but the assay is done under controlled conditions with laboratory-reared mosquitoes. Mosquitoes are released into net chambers within which the test net is hung with a volunteer sleeping beneath, and all mosquitoes are recaptured in the morning. The use of laboratory mosquitoes (rather than conducting experimental hut trials with wild mosquitoes) is done to improve the precision of estimates by releasing mosquito cohorts of a defined number of mosquitoes with high recapture rate (99%) at the conclusion of exposure intervals.\n", - "\n", - "I-ACT bioassay has been used for evaluation of pyrethroid ITNs, was able to discriminate between products [17] and agreed with results of combined WHO cone and tunnel tests [16]. The I-ACT may show suitability for use in evaluation of pro-insecticides because: (i) the assay is run overnight, favouring malarial mosquitoes' circadian rhythms, (ii) the mosquitoes have a large arena to fly in, allowing them to be metabolically active, (iii) the mosquitoes have the opportunity to feed ad libitum and (iv) the I-ACT test eliminates infected mosquitoes that may represent a malaria transmission potential that cannot be completely excluded in WHO experimental huts--a significant safety benefit to volunteers. Therefore, the I-ACT method was evaluated alongside standard methods (i.e., experimental huts, WHO cone and tunnel tests) to provide direct evidence of its comparability. Interceptor(r) (alpha-cypermethrin only) and Interceptor(r) G2 (alpha-cypermethrin and chlorfenapyr) were evaluated to compare the performance of each assay for durability monitoring of pro-insecticidal ITNs.\n", - "\n", - "header: Test nets\n", - "\n", - "ITNs were supplied by BASF in November 2019 and stored at optimal conditions (25 to 32 degC) before testing and during the experimental phase. Interceptor(r) G2 nets were from two different production batches (two batches were used for experimental hut only and one batch for other biossays) and Interceptor(r) from one production batch. Interceptor(r) G2 is made from 100-denier polyester coated with a mixture of wash-resistant formulation containing 200 mg/m2 chlorfenapyr and 100 mg/m2alpha-cypermethrin. Interceptor(r) LN is made from 100-denier polyester coated with 200 mg/m2 alpha-cypermethrin. SafiNet is an untreated polyester net manufactured by A to Z. Textiles Mills, Ltd., Tanzania, and was used as a control. The nets were washed 20 times according to a protocol adapted from the standard WHO washing procedure [9] using 20 g/l palm soap (Jamaa) and dried flat in a shaded area. The interval of time used between two washes (i.e. regeneration time) was 1 day for both Interceptor(r) G2 and Interceptor(r) TTNs.\n", - "\n", - "header: Selection of the correct strain for bioassay\n", - "\n", - "The current study demonstrated that using the correct mosquito strain when evaluating ITNs is a critical consideration. The benefit of chlorfenapyr was only seen against the resistant strains, and against the susceptible strains Interceptor(r) was more efficacious because it contains a higher dose of alphacypermethrin. Comparing between the products using both a susceptible and a resistant strain revealed the different modes of action of Interceptor(r) and Interceptor(r) G2.\n", - "\n", - "header: Sample size and power\n", - "\n", - "A sample size calculation for generalized linear mixed effects models (GLMMs) through simulation [23] in R statistical software 3.02 [https://www.r-project.org/](https://www.r-project.org/) was performed for the I-ACT and experimental huts. For the I-ACT, to detect a 10% effect difference between the nets, simulations were performed using an estimated mosquito mortality of 80% for unwashed Interceptor(r) G2, 70% for unwashed Interceptor(r) and 10% for SafiNet(r) (deliberately holed). The design was for five arms replicated in two groups, with each volunteer testing each treatment one time over 20 replicates within its group (i.e. 40 replicates per arm), with an inter-observational variance of 0.42 for the night of observation based on the variance of the random effects observed in a previous study. The evaluation was powered at 81% for 15 mosquitoes of each strain released per chamber using 1000 simulations.\n", - "\n", - "For experimental huts, simulation was performed using a Latin square design with volunteers rotating nightly and accounted for as a fixed effect for 25 nights of data collection in 10 huts. The study had 84% power to detect the difference between Interceptor(r) G2 LN and Interceptor(r) LN on mosquito mortality endpoints, with two huts per treatment arm (i.e. 50 replicates per arm). The study power was calculated based on a previous study of pyrethroid nets conducted in the same area, with the estimation of 20 _An. arabiensis_ mosquitoes per night per hut, 21% mortality in unwashed Interceptor(r) G2, 7% in 20x washed Interceptor(r) G2 and 10% in unwashed Interceptor(r) vs. 4% in 20 times washed and 1% in negative control, and overdispersion parameter for daily variation was set at intermediate 0.44.\n", - "\n", - "To test whether I-ACT measures similarly to the WHO tunnels (H0\\(m\\)2=_m_1) a power calculation using Satterthwaites _t_-test was conducted in STATA 16 software (StataCorp LLC, College Station TX, USA) for two unpaired sample means assuming unequal variance. The power estimated was > 90% based on estimates from previous studies conducted in the same setting: mean mortality of 81.5% for WHO tunnel test with an assumed daily variation of 0.5 and 15 replicates per arm and mean\n", - "mortality estimates of 86.5% and an assumed daily variation of 0.42 with 40 replicates per arm were considered for I-ACT.\n", - "\n", - "header: Considerations for each bioassay\n", - "\n", - "Both I-ACT and experimental huts use the whole bednet and human host, which represent user conditions; however, there is no risk of disease for human participants in I-ACT because the mosquitoes used are laboratory reared. The WHO tunnel test is a well-established bioassay that has been shown to agree with experimental hut tests in this evaluation as well as others [12, 14]. However, it tests only a sample of net and is therefore only able to accurately measure the chemical durability of an ITN and not the chemical _and_ physical durability. In addition, it requires a high number of mosquitoes (100 per replicate) and more testing days compared to I-ACT. In I-ACT there is possibility of testing more than one species or strain per chamber compared to tunnel test, which makes results more comparable. The I-ACT is a new assay that consistently predicts the results of experimental hut tests, measures with a similar magnitude of difference as a tunnel test and provides high-throughput and precise estimates of whole ITN protective efficacy in this study with chlorfenapyr as well as in previous studies with pyrethroid nets [17] at lower cost than tunnel tests. However, this method is yet to become a WHO/PQ-accepted testing modality despite the observed higher precision vs. current WHO-recommended modalities. The detailed descriptions of cost implications for each bioassay and how to build an I-ACT with the cost of \n", - "establishment are described in Additional file 1: Table S4 and Additional file 2 respectively.\n", - "\n", - "Laboratory and/or semi-field bioassays are not replacements for field evaluation, but they are useful if they can predict the results of field tests because they are substantially cheaper and more standardised. Experimental hut tests remain the gold standard test because they represent field conditions and can be related to public health impact [48]. However, variation in mosquito entrance in huts per night is highly heterogeneous and requires a high level of replication to achieve precision [23]. In addition, variation in hut designs affects outcome measurement [34] and should be considered when interpreting results. However, comparing between products, the same trends were consistently seen: Interceptor(r) G2 was superior to Interceptor(r) against resistant mosquitoes when they were tested in a \"free-flying\" scenario and Interceptor(r) was superior to Interceptor(r) G2 against susceptible strains, while the cone test was suitable for evaluating pyrethroids but not pro-insecticides such as chlorfenapyr.\n", - "\n", - "header: Cone test results: Use of I-ACT for durability monitoring\n", - "\n", - "I-ACT is designed to be a bridging bioassay that reproduces a more natural interaction between the mosquito and human hosts beneath a bednet [16]. Blood-feeding inhibition and 72-h mortality measured by WHO tunnel and I-ACT were similar, meaning that the use of I-ACT for durability monitoring using WHO thresholds of 80% mortality and 90% feeding inhibition is appropriate. We suggest that I-ACT can be a useful alternative to tunnel tests for bioefficacy monitoring and upstream product evaluation as both the bioassays measure a similar odds ratio and I-ACT gives a precise estimation of bioefficacy because it uses laboratory-reared mosquitoes. This is particularly important when considering the longitudinal evaluation of product performance as occurs in durability bioefficacy evaluation for two reasons. Currently, experimental huts tests are being used to evaluate the insecticidal durability of Interceptor(r) G2 [33]. It was been observed at all experimental hut testing sites that mosquito resistance to insecticides has intensified through time [34]. This needs to be factored into considerations about durability testing. ITN protection may wane more quickly against more resistant mosquito populations as nets age [35], and if older ITNs are tested 3 years after baseline efficacy has been calculated, it is possible that they will be tested against a more resistant mosquito population than that at baseline. Therefore, use of carefully maintained laboratory strains may be helpful to minimise differences in insecticide resistance levels. Second, a previous longitudinal durability trial of ITNs [17] using standard WHO cone and tunnel tests as well as I-ACT shows that ITNs are highly heterogeneous, with up to 100% variance after use (John Bradley personal communication), because of variable use practices (washing, drying, care, sleeping space) [36, 37] that result in differential levels of damage and insecticide content [38]. This fact, coupled with WHO/PQ accepted intra-net insecticidal manufacturing heterogeneities [39], shows the need to expedite testing modalities that improve comprehension of net performances by donor organisations, national malaria control programmes (NMCPs) and manufacturers alike.\n", - "\n", - "header: Table 4: Number and proportion of net pieces passing using each laboratory bioassay based on WHO criteria of 80% control corrected mortality, 95% knockdown in WHO cone test, 90% blood-feeding inhibition or 80% control corrected mortality in tunnel test\n", - "footer: The WHO criteria for tunnel were adopted for I-ACT. Whole nets were used for I-ACT\n", - "columns: ['ITNs type - Unnamed: 0_level_1', 'Number of net pieces passing - Cone (N = 60)', 'Number of net pieces passing - Tunnel (N = 15)', 'Number of net pieces passing - I-ACT (N = 40)']\n", - "\n", - "{\"0\":{\"ITNs type - Unnamed: 0_level_1\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Cone (N = 60)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"Anopheles arabiensis (Kingani strain, resistant)\"},\"1\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":\"n (%)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"n (%)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"n (%)\"},\"2\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"11 (73)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"3\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"22 (37)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"13 (87)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"4\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"5\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"12 (80)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"36 (90)\"},\"6\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"21 (35)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"10 (67)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"7\":{\"ITNs type - Unnamed: 0_level_1\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Cone (N = 60)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"An. gambiae ss. (Kisumu strain, susceptible)\"},\"8\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"9\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"50 (83)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"10\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"2 (3)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"14 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"11\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"12\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"38 (63)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"13\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"10 (17)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"}}\n", - "\n", - "header: Publisher's Note\n", - "\n", - "Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.\n", - "\n", - "header: Table 2 Logistic regression analysis to compare mosquito mortality in Interceptor® and Interceptor® G2 ITNs after exposure in WHO cone and tunnel tests, Ifakara ambient chamber test and experimental hut, Tanzania\n", - "footer: Odds ratio adjusted for net type, volunteer, hut position/number and day of the experiment\n", - "Laboratory-reared mosquitoes were used for WHO cone, WHO tunnel and I-ACT\n", - "For the experimental hut trial, the ITNs were tested against free-flying wild pyrethroid-resistant Anopheles arabiensis and Culex quinquefasciatus in Lupiro, Ifakara\n", - "*p-value>0.05\n", - "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1', 'WHO cone - OR (95% CI)', 'Tunnel - OR (95% CI)', 'I-ACT - OR (95% CI)', 'Hut - OR (95% CI)', 'Huts with netting window - OR (95% CI)']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Anopheles anabiensis (resistant)\",\"WHO cone - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Tunnel - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"I-ACT - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Hut - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Anopheles anabiensis (resistant)\"},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.03, 0.07)\",\"Tunnel - OR (95% CI)\":\"1.33 (1.17, 1.51)\",\"I-ACT - OR (95% CI)\":\"1.55 (1.16, 2.07)\",\"Hut - OR (95% CI)\":\"2.38 (2.09, 2.72)\",\"Huts with netting window - OR (95% CI)\":\"2.43 (1.88, 3.14)\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.05 (0.20, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.42 (1.19, 1.70)\",\"I-ACT - OR (95% CI)\":\"1.61 (1.05, 2.49)\",\"Hut - OR (95% CI)\":\"2.53 (1.96, 3.26)\",\"Huts with netting window - OR (95% CI)\":\"2.55 (1.76, 3.68)\"},\"7\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"8\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"9\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.2, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.23 (1.03, 1.48)\",\"I-ACT - OR (95% CI)\":\"1.50 (1.02, 2.23)\",\"Hut - OR (95% CI)\":\"2.36 (2.02, 2.77)\",\"Huts with netting window - OR (95% CI)\":\"2.32 (1.63, 3.31)\"},\"10\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Culex quinquefasciatus (resistant)\",\"WHO cone - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Tunnel - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"I-ACT - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Hut - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\"},\"11\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"12\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"13\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.05 (0.57, 1.93)*\",\"Tunnel - OR (95% CI)\":\"2.55 (2.26, 2.55)\",\"I-ACT - OR (95% CI)\":\"13.40 (10.75, 16.67)\",\"Hut - OR (95% CI)\":\"1.50 (1.31, 1.73)\",\"Huts with netting window - OR (95% CI)\":\"1.40 (1.19, 1.63)\"},\"14\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"15\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"16\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.74 (0.31, 1.79)*\",\"Tunnel - OR (95% CI)\":\"2.52 (2.13, 3.00)\",\"I-ACT - OR (95% CI)\":\"12.71 (9.43, 17.14)\",\"Hut - OR (95% CI)\":\"1.52 (1.23, 1.88)\",\"Huts with netting window - OR (95% CI)\":\"1.25 (1.00, 1.57)\"},\"17\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"18\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"19\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.46 (0.62, 3.50)*\",\"Tunnel - OR (95% CI)\":\"2.58 (2.17, 3.06)\",\"I-ACT - OR (95% CI)\":\"14.11 (10.42, 19.11)\",\"Hut - OR (95% CI)\":\"1.50 (1.25, 1.80)\",\"Huts with netting window - OR (95% CI)\":\"1.55 (1.24, 1.94)\"},\"20\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"An gambiae s.s. (susceptible)\",\"WHO cone - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Tunnel - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"I-ACT - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Hut - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"An gambiae s.s.\n", - "\n", - "header: Mosquito test systems\n", - "\n", - "IHI laboratory maintains local mosquito strains with resistant mechanisms present in the local population to\n", - "avoid accidental release of new resistance alleles into the wild population. Four types of laboratory-reared mosquitoes with different resistance levels (confirmed at the time of testing) were used in the WHO cone, WHO tunnel and I-ACT tests: _Anopheles arabiensis_ (Kingani strain, upregulation of cytochrome p450s, 14% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is reversed by piperonyl butoxide (PBO) pre-exposure, which acts to block enzymatic detoxification mechanisms by inhibiting their metabolism), _Anopheles gambiae_ s.s. (Kisumu strain, fully susceptible to all insecticide classes at WHO discriminating doses), _Aedes aegypti_ (Bagamoyo strain, fully susceptible to all insecticide classes at WHO discriminating doses) and _Culex quinquefasciatus_ (Bagamoyo strain, 6% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is partially reversed (only moderate susceptibility is restored from inhibition of detoxifying mechanism) by PBO pre-exposure). In I-ACT and tunnel tests, sugar-starved (8 to 9 h) nulliparous female mosquitoes, 5-8 days old, were used. For cone bioassay, 2-5-day-old nulliparous sugar-fed female mosquitoes were challenged. Laboratory colonies were maintained by feeding larvae Tetramin(r) tropical fish food and adults on blood between 3 and 6 days after emergence and 10% sugar solution ad libitum. Temperature and humidity within the insectary are maintained between 27 degC+-5 degC and 40%-100% RH, relatively following MR4 guidelines [18]. For the experimental hut assays, only wild populations of _An. arabiensis_ and _Culex quinquefasciatus_ were collected in sufficient numbers for evaluation.\n", - "\n", - "header: WHO cone bioassays\n", - "\n", - "WHO cone tests were performed between October 2020 and February 2021 according to standard WHO procedures [9], with two modifications: the test board was set at 60deg tilt [19] and holes were cut in the boards (Fig. 1) to maximise mosquito contact with the test nets during exposures. From each treatment arm, three nets were randomly sampled, and five net swatches of 25 cm x 25 cm size were cut from positions 1 to 5. On each netting sample, four standard WHO cones were positioned over net swatches and secured in place using tape. Five laboratory-bred mosquitoes were introduced into each cone and exposed for 3 min, and four replicates were conducted per net piece (20 mosquitoes were exposed per net piece).\n", - "\n", - "After each exposure, the mosquitoes were removed gently from the cones (by mouth aspiration), placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Knockdown (KD60) was recorded after 60 min and mortality at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Acceptable control mortality was <= 10% after 72 h holding time. Any tests exceeding the specified control cut off were repeated.\n", - "\n", - "header: Conclusion\n", - "\n", - "Interceptor(r) G2 clearly demonstrated superior bio-efficacy against resistant mosquitoes compared to Interceptor(r) when mosquitoes were challenged in free-flying bioassays. The I-ACT measured similar odds ratios as the WHO tunnel, currently used for testing of ITNs with chlorfenapyr. Both free-flying laboratory bioassays (WHO tunnel and I-ACT) predicted the results of the experimental hut test. Experimental hut design has an influence on mosquito mortality; however, using the odds ratio, all free-flying tests gave consistent findings. In this setting, I-ACT was a reliable bioassay for bioefficacy testing of Interceptor(r) G2 and may be a useful additional bioassay for durability monitoring of ITNs treated with pro-insecticides.\n", - "\n", - "header: Resistant mosquitoes\n", - "\n", - "For pyrethroid-resistant _An. arabiensis_, blood-feeding inhibition was lower with Interceptor(r) G2 than Interceptor(r) in WHO tunnel: 87.8% (95% CI: 82.9- 92.7) vs. 92.9% (95% CI: 89.8-96.0) OR blood-fed = 1.92 [95% CI:14.8-2.48], \\(p\\) < 0.001 and I-ACT: 89.8% (95% CI: 85.8-93.7) vs. 93.9% (95% CI: 91.5-96.3) (OR blood-fed = 1.67 [95% CI: 1.07-2.62], \\(p\\) = 0.024). There was no difference between the two products measured in experimental huts: 95.9% (95% CI: 93.7-98.2) vs. 96.3% (95% CI: 93.0-99.7) (OR blood-fed = 1.06 [95% CI: 0.54-2.10], \\(p\\) = 0.857). A similar trend was observed for the 20x washed nets.\n", - "\n", - "Blood-feeding inhibition was similar for Interceptor(r) G2 compared to Interceptor(r) with _Cx. Quinquefasciatus_ in WHO tunnel: 97.8% (95CI: 96.1-99.5) vs. 97.1% (95% CI: 95.9-98.3) (OR blood fed = 1.36 [95% CI: 0.85-2.17], \\(p\\) = 0.196) and experimental huts: 97.2% (95% CI: 95.9-98.4) vs. 97.2% (95% CI: 95.8-98.7) (OR = 1.04 [95% CI: 0.76-1.42], \\(p\\) = 0.827), whilst in I-ACT the difference was significantly different: 99.0% (95% CI: 98.1-99.9) vs. 91.3% (95% CI: 88.6-93.9) (OR blood fed = 0.11 [95% CI: 0.05-0.26], \\(p\\) < 0.001). A similar trend was observed for the 20x washed nets (Fig. 3a, b, Table 3). The percentage blood-feeding inhibition and mean difference between bioassays for all mosquito species are presented in Additional file 1: Table S2.\n", - "\n", - "header: Study area: Study design\n", - "\n", - "The study was a five-arm comparative efficacy study to determine the performances of Interceptor(r) G2 ITNs and Interceptor(r) against pyrethroid-susceptible and -resistant mosquitoes measured by WHO cone bioassay, WHO tunnel test, Ifakara ambient chamber test (I-ACT) and experimental huts. Study arms were: (i) Interceptor(r) G2, unwashed; (ii) Interceptor(r) G2, washed 20 times; (iii) Interceptor(r), unwashed; (iv) Interceptor(r), washed 20 times; (v) SafNet(r) (negative control). The primary performance metric upon which the study was powered is 72-h mortality (M72), which is measured in all four bioassays. A secondary outcome was blood-feeding, which was measured in the three free-flying bioassays. Additionally, knockdown at 60 min (KD60) was measured in cone tests (Table 1).\n", - "\n", - "header: Mosquito retention\n", - "\n", - "Immediately after the main experimental hut trial, a retention test was conducted by releasing wild _An. ara-biensis_ mosquitoes that were collected from the area by human landing catch (HLC). Fifteen mosquitoes marked with non-toxic fluorescent powder were released in each of the ten huts with the same treatment arms as the main experiment hut design. Five huts were completely closed while the other five were left with open eaves (with 10-cm baffles to reduce egress) and two window exit traps as per main experimental hut study. This experiment was conducted for 5 nights. Each morning mosquitoes were sorted, scored and held for 72 h to observe delayed mortality for each treatment arm.\n", - "\n", - "header: Susceptible mosquitoes\n", - "\n", - "For unwashed Interceptor(r), blood-feeding inhibition was measured in tunnel and I-ACT and a similar trend was observed in susceptible mosquitoes as was seen in the resistant laboratory strains (Fig. 3c, d, Table 3). For susceptible _An. gambiae_, blood-feeding inhibition was lower with Interceptor(r) G2 than for Interceptor(r) WHO tunnel: 89.7% (95% CI: 83.3-96.1) vs. 94.5% (95% CI: 91.9-97.2), (OR blood fed = 1.95 [95% CI: 1.46, 2.61], \\(p\\) < 0.001) and similar in I-ACT: 97.4% (95% CI: 95.7-99.1) vs. 98.2% (95% CI: 96.8-99.5), (OR blood fed = 1.41 [95% CI: 0.63-3.17], \\(p\\) = 0.407. For susceptible _Ae. Aggyti_ in WHO tunnel, results showed: 93.8% (95% CI:90.6-97.1) vs. 96.3% (95% CI: 94.0-98.7) (OR blood fed = 2.03 [95% CI: 1.40-2.93], \\(p\\) < 0.001) and in I-ACT: 96.8% (95% CI: 94.8-98.9) vs. 98.3% (95% CI: 97.1-99.5) (OR blood fed = 1.92 [95% CI: 0.87-4.24],\n", - "\\(p=0.107\\)). As before, for both species a similar pattern was seen for the 20\\(\\times\\) washed nets.\n", - "\n", - "header: Methods\n", - "\n", - "The laboratory bioassays (I-ACT, WHO cone and WHO tunnel tests) were performed at the Vector Control Product Testing Unit (VCPTU) testing facility located at the Bagamoyo branch of Ifakara Health Institute (IHI), Tanzania (6.446deg S and 38.901deg E). The district experiences average annual rainfall of 800 mm-1000 mm, average temperatures between 24 degC and 29 degC and average annual humidity of 73%. The experimental hut study was conducted in Lupiro village (8.385deg S and 36.673deg E) in Ulanga District, southeastern Tanzania. The village is bordered by irrigated rice fields with average annual rainfall of 1200-1800 mm, average temperatures between 20 and 34 degC and average annual humidity of 69%. The main malaria vector is _Anopheles arabiensis_, constituting > 99.9% of the _An. gambiae_ complex species in the last test conducted in November 2020, and resistance to alphabcypermethrin was recorded (57% mortality at 1 x WHO discriminating concentration) at the time of testing.\n", - "\n", - "header: Table 3 Logistic regression analysis to compare mosquito blood-feeding success in Interceptor and Interceptor G2 ITNs after exposure in WHO tunnel test, Ifakara ambient chamber test and experimental hut, Tanzania\n", - "footer: Odds ratio adjusted for net type, volunteer, hut position/number and day of the experiment\n", - "Laboratory-reared mosquitoes were used for tunnel and I-ACT\n", - "For the experimental hut trial, the ITNs were tested against free-\u001e\n", - "flying wild pyrethroid-resistant Anopheles arabiensis and Culex quinquefasciatus in Lupiro, Ifakara\n", - "*p-value<0.05\n", - "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1', 'Tunnel - OR (95% CI)', 'I-ACT - OR (95% CI)', 'Hutt - OR (95% CI)', 'Huts with netting window - OR (95% CI)']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Anopheles anabiensis (resistant)\",\"Tunnel - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"I-ACT - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Hutt - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Anopheles anabiensis (resistant)\"},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.75 (1.46, 2.09)*\",\"I-ACT - OR (95% CI)\":\"1.53 (1.10, 2.13)*\",\"Hutt - OR (95% CI)\":\"1.04 (0.74, 1.47)\",\"Huts with netting window - OR (95% CI)\":\"1.42 (0.80, 2.53)\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":\"1\"},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":\"1\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.92 (1.48, 2.48)*\",\"I-ACT - OR (95% CI)\":\"1.67 (1.07, 2.62)*\",\"Hutt - OR (95% CI)\":\"1.06 (0.54, 2.10)\",\"Huts with netting window - OR (95% CI)\":\"1.81 (0.79, 4.14)\"},\"7\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20x\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"8\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"9\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.60 (1.24, 2.05)*\",\"I-ACT - OR (95% CI)\":\"1.37 (0.83, 2.25)\",\"Hutt - OR (95% CI)\":\"1.09 (0.72, 1.63)\",\"Huts with netting window - OR (95% CI)\":\"1.15 (0.53, 2.50)\"},\"10\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Culex quinquefasciatus (resistant)\",\"Tunnel - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"I-ACT - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Hutt - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\"},\"11\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"12\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"13\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"0.73 (0.53, 1.00)\",\"I-ACT - OR (95% CI)\":\"0.13 (0.07, 0.23)*\",\"Hutt - OR (95% CI)\":\"1.34 (0.88, 2.04)\",\"Huts with netting window - OR (95% CI)\":\"0.63 (0.49, 0.81)*\"},\"14\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":\"1\"},\"15\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":\"1\"},\"16\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.36 (0.85, 2.17)\",\"I-ACT - OR (95% CI)\":\"0.11 (0.05, 0.26)*\",\"Hutt - OR (95% CI)\":\"1.04 (0.76, 1.42)\",\"Huts with netting window - OR (95% CI)\":\"0.67 (0.45, 1.02)\"},\"17\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20x\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"18\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"19\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"0.41 (0.26, 0.65)*\",\"I-ACT - OR (95% CI)\":\"0.14 (0.06, 0.33)*\",\"Hutt - OR (95% CI)\":\"1.11 (0.86, 1.42)\",\"Huts with netting window - OR (95% CI)\":\"1.59 (0.43, 0.82)*\"},\"20\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"An gambiae s.s. (susceptible)\",\"Tunnel - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"I-ACT - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Hutt - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"An gambiae s.s. (susceptible)\"},\"21\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"22\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"23\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.28 (1.03, 1.59)*\",\"I-ACT - OR (95% CI)\":\"1.55 (0.86, 2.80)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"},\"24\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"25\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.95 (1.46, 2.61)*\",\"I-ACT - OR (95% CI)\":\"1.41 (0.63, 3.17)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"},\"26\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20x\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"27\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"28\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.81 (1.35, 2.41)*\",\"I-ACT - OR (95% CI)\":\"1.75 (0.69, 4.41)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"},\"29\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Aedes aegypti (susceptible)\",\"Tunnel - OR (95% CI)\":\"Aedes aegypti (susceptible)\",\"I-ACT - OR (95% CI)\":\"Aedes aegypti (susceptible)\",\"Hutt - OR (95% CI)\":\"Aedes aegypti (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"Aedes aegypti (susceptible)\"},\"30\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"31\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"32\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.46 (1.14, 1.87)*\",\"I-ACT - OR (95% CI)\":\"1.63 (0.87, 3.04)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"},\"33\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"34\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"35\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"2.03 (1.40, 2.93)*\",\"I-ACT - OR (95% CI)\":\"1.92 (0.87, 4.24)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"},\"36\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20x\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"37\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"38\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.10 (0.79, 1.54)\",\"I-ACT - OR (95% CI)\":\"1.20 (0.43, 3.36)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"}}\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: WHO tunnel test\n", - "\n", - "The tunnel tests were carried out from August to November 2020 according to standard WHO procedures [9]. Five 25 cm x 25 cm net pieces per ITN/control were cut adjacent to the swatches cut for cone assays from three nets per treatment arm to make a total of 15 pieces per study arm and to account for possible intra-net variability of insecticide loadings. Five tunnels were run with one sample from each treatment arm with one mosquito strain on a single night. Over 60 nights, all 15 pieces of ITNs per study arm were tested with four mosquito strains.\n", - "\n", - "Non-blood-fed nulliparous females, 5-8 days old, sugar starved for 6-8 h were released in a 60-cm-long glass tunnel. At each end of the tunnel, a 25-cm square mosquito cage covered with polyester netting was fitted. At one third of the length, the netting sample was affixed. The surface of netting \"available\" to mosquitoes is 400 cm2 (20 cm x 20 cm), with 9 x 1-cm-diameter holes: one hole is located at the centre of the square; the other eight were equidistant and located 5 cm from the border. In the shorter section of the tunnel, a small rabbit, its back shaved and restrained in a mesh tunnel, was placed as bait (Fig. 1). In the cage at the end of the longer section of the tunnel, 100 female mosquitoes (one strain \n", - "per replicate) were introduced at 21:00. The following morning at 09:00, the mosquitoes were removed using a mouth aspirator and counted separately from each section of the tunnel, and mortality and blood-feeding rates were recorded. The mosquitoes were placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Mortality was recoded at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Overall mortality was measured by pooling the mortalities of mosquitoes from the two sections of the tunnel. Acceptable feeding success and mortality in controls were 50% and 10%, respectively. Any tests not meeting the specified control cut-off were repeated.\n", - "\n", - "header: Mosquito blood-feeding in WHO tunnel, I-ACT and experimental hut\n", - "\n", - "For all bioassays and strains, blood-feeding inhibition was very high (Fig. 3, Table 3). Both Interceptor(r) G2 and Interceptor(r) gave high levels of blood-feeding inhibition in all \"free-flying\" bioassays.\n", - "\n", - "header: Selection of the correct strain for bioassay\n", - "\n", - "The current study demonstrated that using the correct mosquito strain when evaluating ITNs is a critical consideration. The benefit of chlorfenapyr was only seen against the resistant strains, and against the susceptible strains Interceptor(r) was more efficacious because it contains a higher dose of alphacypermethrin. Comparing between the products using both a susceptible and a resistant strain revealed the different modes of action of Interceptor(r) and Interceptor(r) G2.\n", - "\n", - "header: Background\n", - "\n", - "As funding for malaria control falls and mosquito resistance to current public health insecticides increases, new and durable vector control tools that utilise new insecticide classes are needed [1]. For insecticide resistance management, a new Insecticide Treated Net (ITN) Interceptor(r) G2 has been developed, coated with a mixture of the pyrethroid alpha-cypermethrin and the pro-insecticide chlorfenapyr [2]. Chlorfenapyr is an Insecticide Resistance Action Committee (IRAC) Group 13 insecticide, having a pyrrole chemistry that uncouples oxidative phosphorylation via disruption of the proton gradient (as a protonophore) to short circuit mitochondrial respiration through inner mitochondrial membranes of insect cells so that ATP cannot be synthesized, subsequently robbing insects of energy, resulting in death [3, 4]. Metabolic resistance is one of the main mechanisms of resistance observed in malaria vectors [5] where one or several detoxification gene families--cytochrome P450s (P450s), esterases and glutathione S-transferases (GSTs)--are overproduced to detoxify insecticides [6]. While this metabolism is a detoxification process, it can increase the potency of a pro-insecticide and may therefore be exploited as a means to control metabolically resistant insect populations [3]. The unique mode of action of chlorfenapyr on an insect's metabolism is particularly relevant for the control of vectors harboring insecticide resistance mechanisms, as increased metabolic activity increases the conversion of the pro-insecticide into its potent n-dealkylated form and will consequently increase mosquito mortality [7].\n", - "\n", - "For any new ITN to be used in public health, a thorough evaluation of its safety, efficacy and effectiveness is conducted based on World Health Organisation (WHO) standards and criteria [8]. The methods and scope of the laboratory tests and field trials required to attain WHO Prequalification (PQ) listing for ITNs are outlined in a set of WHO guidelines, last updated in 2013 [9]. As part of these guidelines, WHO recommends a set of standardised laboratory tests to ascertain the bioefficacy of pyrethroid ITNs, i.e., the ability of ITN products to kill, incapacitate (knock down) and prevent mosquitoes from blood-feeding. Laboratory bioefficacy tests are also a critical component of ITN durability evaluation used to confirm continued ITN bioefficacy after long-term use in the community [10]. The simplest and most commonly applied ITN bioefficacy test is the WHO cone bioassay where mosquitoes are held close to ITN in plastic cones and the number of mosquitoes knocked down (incapacitated) or killed is counted [9]. For ITNs with feeding inhibition mode of action, the WHO tunnel test is used, where a swatch of ITN with small holes (9 x 1-cm diameter) is made and is placed between mosquitoes and small animal bait overnight [11]. The WHO tunnel test has been shown to agree with experimental but data, using laboratory-reared mosquitoes released into the huts [12]. Thresholds for the mosquito knockdown rate (95%) and mosquito mortality rate (80%) and blood-feeding inhibition (90%) using pyrethroid-susceptible _Anopheles_ mosquitoes serve as performance benchmarks; candidate products are required to fulfill minimum performance standards, which have been established by WHO for qualification to be listed/recommended for their public health values to sustain and protect users from disease transmissions. This includes their physical durability and chemical contents recovered from nets replaced in the field over 3 years or as predicted from wash-resistance testing. For a net to be classified as a long-lasting ITN, i.e., LLIN, > 80% of nets tested should pass WHO cone/tunnel performance benchmarks after 3 years of use [13].\n", - "\n", - "Cone tests are relatively easy to perform, high throughput and sensitive to detecting changes in bioavailable pyrethroids that act through rapid contact neurotoxicity. However, chlorfenapyr requires the mosquito to be metabolically and/or physiologically active (as it would be when encountering the ITN under user conditions) to bioactivate into the potent n-dealkylated form which elicits increased mosquito mortality. As mosquitoes are more metabolically active at night when flying and host-seeking during their typical circadian rhythms, the tunnel test may be more appropriate [14].\n", - "\n", - "The President's Malaria Initiative (PMI) currently uses WHO Tunnel tests for the durability monitoring of chlorfenapyr nets with 4 samples per net evaluated and 48 nets per sampling point [15]. This requires large numbers of mosquitoes and access to small animals for testing, so it cannot be done at all facilities in malaria-endemic areas. To accommodate high-throughput evaluation of whole ITNs for durability evaluation, the Ifakara ambient chamber test (I-ACT) was developed [16]. The Ifakara ambient chamber test (I-ACT) is not currently a recognized method \n", - "approved by the WHO. However, it is currently seeking confirmation by direct comparison to approved methods. This is of particular importance where novel slow-acting chemistries cannot achieve the benchmark standards established for conventional pyrethroid ITN exposures yet may prove to be highly efficacious when tested according to their discrete modes of action. Like the experimental hut, I-ACT makes use of whole nets and human hosts to evaluate bioefficacy of field-used ITNs, but the assay is done under controlled conditions with laboratory-reared mosquitoes. Mosquitoes are released into net chambers within which the test net is hung with a volunteer sleeping beneath, and all mosquitoes are recaptured in the morning. The use of laboratory mosquitoes (rather than conducting experimental hut trials with wild mosquitoes) is done to improve the precision of estimates by releasing mosquito cohorts of a defined number of mosquitoes with high recapture rate (99%) at the conclusion of exposure intervals.\n", - "\n", - "I-ACT bioassay has been used for evaluation of pyrethroid ITNs, was able to discriminate between products [17] and agreed with results of combined WHO cone and tunnel tests [16]. The I-ACT may show suitability for use in evaluation of pro-insecticides because: (i) the assay is run overnight, favouring malarial mosquitoes' circadian rhythms, (ii) the mosquitoes have a large arena to fly in, allowing them to be metabolically active, (iii) the mosquitoes have the opportunity to feed ad libitum and (iv) the I-ACT test eliminates infected mosquitoes that may represent a malaria transmission potential that cannot be completely excluded in WHO experimental huts--a significant safety benefit to volunteers. Therefore, the I-ACT method was evaluated alongside standard methods (i.e., experimental huts, WHO cone and tunnel tests) to provide direct evidence of its comparability. Interceptor(r) (alpha-cypermethrin only) and Interceptor(r) G2 (alpha-cypermethrin and chlorfenapyr) were evaluated to compare the performance of each assay for durability monitoring of pro-insecticidal ITNs.\n", - "\n", - "header: Considerations for each bioassay\n", - "\n", - "Both I-ACT and experimental huts use the whole bednet and human host, which represent user conditions; however, there is no risk of disease for human participants in I-ACT because the mosquitoes used are laboratory reared. The WHO tunnel test is a well-established bioassay that has been shown to agree with experimental hut tests in this evaluation as well as others [12, 14]. However, it tests only a sample of net and is therefore only able to accurately measure the chemical durability of an ITN and not the chemical _and_ physical durability. In addition, it requires a high number of mosquitoes (100 per replicate) and more testing days compared to I-ACT. In I-ACT there is possibility of testing more than one species or strain per chamber compared to tunnel test, which makes results more comparable. The I-ACT is a new assay that consistently predicts the results of experimental hut tests, measures with a similar magnitude of difference as a tunnel test and provides high-throughput and precise estimates of whole ITN protective efficacy in this study with chlorfenapyr as well as in previous studies with pyrethroid nets [17] at lower cost than tunnel tests. However, this method is yet to become a WHO/PQ-accepted testing modality despite the observed higher precision vs. current WHO-recommended modalities. The detailed descriptions of cost implications for each bioassay and how to build an I-ACT with the cost of \n", - "establishment are described in Additional file 1: Table S4 and Additional file 2 respectively.\n", - "\n", - "Laboratory and/or semi-field bioassays are not replacements for field evaluation, but they are useful if they can predict the results of field tests because they are substantially cheaper and more standardised. Experimental hut tests remain the gold standard test because they represent field conditions and can be related to public health impact [48]. However, variation in mosquito entrance in huts per night is highly heterogeneous and requires a high level of replication to achieve precision [23]. In addition, variation in hut designs affects outcome measurement [34] and should be considered when interpreting results. However, comparing between products, the same trends were consistently seen: Interceptor(r) G2 was superior to Interceptor(r) against resistant mosquitoes when they were tested in a \"free-flying\" scenario and Interceptor(r) was superior to Interceptor(r) G2 against susceptible strains, while the cone test was suitable for evaluating pyrethroids but not pro-insecticides such as chlorfenapyr.\n", - "\n", - "header: Discussion\n", - "\n", - "The superiority of Interceptor(r) G2 over Interceptor(r) for 72-h mortality endpoints, which challenged metabolically resistant _An. arabiensis_ and _Cx. quinquefasciatus_, was clearly seen in all \"free-flying\" bioassays but not in the WHO cone test where mosquitoes are unable to fly around and be metabolically active. This observation has been seen by several other authors [14, 25-27] leading to a consensus that the overnight tunnel test using a 72-h mortality endpoint is a superior laboratory bioassay for evaluation of chlorfenapyr [2, 28] relative to the cone test, which was designed to test contact insecticides that do not require metabolic conversion into a secondary metabolite (most ITN insecticides are classified as IRAC Group 3 sodium channel modulators). It has been routinely observed in experimental hut bioassays that Interceptor(r) G2 gives greater mortality that Interceptor(r) among pyrethroid-resistant mosquitoes [14, 25-27], while mosquitoes are foraging at night when their metabolic rate is high. Both the tunnel test and the I-ACT consistently predicted the superiority of Interceptor(r) G2 over Interceptor(r) observed in experimental hut tests.\n", - "\n", - "The results of this study's mortality elicited on _Cx. quinqufaciatus_ from chlorfenapyr is consistent with other studies over the past decade [29, 30]. Preliminary investigations for chlorfenapyr intoxication in metabolically resistant _Cx. quinquefasciatus_ in experimental huts by [31] demonstrated relatively high levels of control in both ITNs and for IRS in Benin. Later, [27] observed 3 x mortality with chlorfenapyr + alpha-cypermethrin-treated nets compared to pyrethroid-only nets demonstrating the effect of chlorfenapyr on free-flying exposures that optimize conversion rates of the pro-insecticide. However, it is also known that once ITNs develop holes, a pyrethroid treatment offers little or no protection against pyrethroid-resistant _Cu. quinquefaciatus_[32]. The relatively high level of control sustained in _Cx. quinqufaciatus_ in this study and relatively good mortality are important resistance management attributes that make inclusion of chlorfenapyr into vector control interventions a significant advancement for active ingredient options.\n", - "\n", - "header: Cone test results: Use of I-ACT for durability monitoring\n", - "\n", - "I-ACT is designed to be a bridging bioassay that reproduces a more natural interaction between the mosquito and human hosts beneath a bednet [16]. Blood-feeding inhibition and 72-h mortality measured by WHO tunnel and I-ACT were similar, meaning that the use of I-ACT for durability monitoring using WHO thresholds of 80% mortality and 90% feeding inhibition is appropriate. We suggest that I-ACT can be a useful alternative to tunnel tests for bioefficacy monitoring and upstream product evaluation as both the bioassays measure a similar odds ratio and I-ACT gives a precise estimation of bioefficacy because it uses laboratory-reared mosquitoes. This is particularly important when considering the longitudinal evaluation of product performance as occurs in durability bioefficacy evaluation for two reasons. Currently, experimental huts tests are being used to evaluate the insecticidal durability of Interceptor(r) G2 [33]. It was been observed at all experimental hut testing sites that mosquito resistance to insecticides has intensified through time [34]. This needs to be factored into considerations about durability testing. ITN protection may wane more quickly against more resistant mosquito populations as nets age [35], and if older ITNs are tested 3 years after baseline efficacy has been calculated, it is possible that they will be tested against a more resistant mosquito population than that at baseline. Therefore, use of carefully maintained laboratory strains may be helpful to minimise differences in insecticide resistance levels. Second, a previous longitudinal durability trial of ITNs [17] using standard WHO cone and tunnel tests as well as I-ACT shows that ITNs are highly heterogeneous, with up to 100% variance after use (John Bradley personal communication), because of variable use practices (washing, drying, care, sleeping space) [36, 37] that result in differential levels of damage and insecticide content [38]. This fact, coupled with WHO/PQ accepted intra-net insecticidal manufacturing heterogeneities [39], shows the need to expedite testing modalities that improve comprehension of net performances by donor organisations, national malaria control programmes (NMCPs) and manufacturers alike.\n", - "\n", - "header: WHO cone bioassays\n", - "\n", - "WHO cone tests were performed between October 2020 and February 2021 according to standard WHO procedures [9], with two modifications: the test board was set at 60deg tilt [19] and holes were cut in the boards (Fig. 1) to maximise mosquito contact with the test nets during exposures. From each treatment arm, three nets were randomly sampled, and five net swatches of 25 cm x 25 cm size were cut from positions 1 to 5. On each netting sample, four standard WHO cones were positioned over net swatches and secured in place using tape. Five laboratory-bred mosquitoes were introduced into each cone and exposed for 3 min, and four replicates were conducted per net piece (20 mosquitoes were exposed per net piece).\n", - "\n", - "After each exposure, the mosquitoes were removed gently from the cones (by mouth aspiration), placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Knockdown (KD60) was recorded after 60 min and mortality at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Acceptable control mortality was <= 10% after 72 h holding time. Any tests exceeding the specified control cut off were repeated.\n", - "\n", - "header: Sample size and power\n", - "\n", - "A sample size calculation for generalized linear mixed effects models (GLMMs) through simulation [23] in R statistical software 3.02 [https://www.r-project.org/](https://www.r-project.org/) was performed for the I-ACT and experimental huts. For the I-ACT, to detect a 10% effect difference between the nets, simulations were performed using an estimated mosquito mortality of 80% for unwashed Interceptor(r) G2, 70% for unwashed Interceptor(r) and 10% for SafiNet(r) (deliberately holed). The design was for five arms replicated in two groups, with each volunteer testing each treatment one time over 20 replicates within its group (i.e. 40 replicates per arm), with an inter-observational variance of 0.42 for the night of observation based on the variance of the random effects observed in a previous study. The evaluation was powered at 81% for 15 mosquitoes of each strain released per chamber using 1000 simulations.\n", - "\n", - "For experimental huts, simulation was performed using a Latin square design with volunteers rotating nightly and accounted for as a fixed effect for 25 nights of data collection in 10 huts. The study had 84% power to detect the difference between Interceptor(r) G2 LN and Interceptor(r) LN on mosquito mortality endpoints, with two huts per treatment arm (i.e. 50 replicates per arm). The study power was calculated based on a previous study of pyrethroid nets conducted in the same area, with the estimation of 20 _An. arabiensis_ mosquitoes per night per hut, 21% mortality in unwashed Interceptor(r) G2, 7% in 20x washed Interceptor(r) G2 and 10% in unwashed Interceptor(r) vs. 4% in 20 times washed and 1% in negative control, and overdispersion parameter for daily variation was set at intermediate 0.44.\n", - "\n", - "To test whether I-ACT measures similarly to the WHO tunnels (H0\\(m\\)2=_m_1) a power calculation using Satterthwaites _t_-test was conducted in STATA 16 software (StataCorp LLC, College Station TX, USA) for two unpaired sample means assuming unequal variance. The power estimated was > 90% based on estimates from previous studies conducted in the same setting: mean mortality of 81.5% for WHO tunnel test with an assumed daily variation of 0.5 and 15 replicates per arm and mean\n", - "mortality estimates of 86.5% and an assumed daily variation of 0.42 with 40 replicates per arm were considered for I-ACT.\n", - "\n", - "header: Methods\n", - "\n", - "The laboratory bioassays (I-ACT, WHO cone and WHO tunnel tests) were performed at the Vector Control Product Testing Unit (VCPTU) testing facility located at the Bagamoyo branch of Ifakara Health Institute (IHI), Tanzania (6.446deg S and 38.901deg E). The district experiences average annual rainfall of 800 mm-1000 mm, average temperatures between 24 degC and 29 degC and average annual humidity of 73%. The experimental hut study was conducted in Lupiro village (8.385deg S and 36.673deg E) in Ulanga District, southeastern Tanzania. The village is bordered by irrigated rice fields with average annual rainfall of 1200-1800 mm, average temperatures between 20 and 34 degC and average annual humidity of 69%. The main malaria vector is _Anopheles arabiensis_, constituting > 99.9% of the _An. gambiae_ complex species in the last test conducted in November 2020, and resistance to alphabcypermethrin was recorded (57% mortality at 1 x WHO discriminating concentration) at the time of testing.\n", - "\n", - "header: Conclusion\n", - "\n", - "Interceptor(r) G2 clearly demonstrated superior bio-efficacy against resistant mosquitoes compared to Interceptor(r) when mosquitoes were challenged in free-flying bioassays. The I-ACT measured similar odds ratios as the WHO tunnel, currently used for testing of ITNs with chlorfenapyr. Both free-flying laboratory bioassays (WHO tunnel and I-ACT) predicted the results of the experimental hut test. Experimental hut design has an influence on mosquito mortality; however, using the odds ratio, all free-flying tests gave consistent findings. In this setting, I-ACT was a reliable bioassay for bioefficacy testing of Interceptor(r) G2 and may be a useful additional bioassay for durability monitoring of ITNs treated with pro-insecticides.\n", - "\n", - "header: Publisher's Note\n", - "\n", - "Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.\n", - "\n", - "header: Test nets\n", - "\n", - "ITNs were supplied by BASF in November 2019 and stored at optimal conditions (25 to 32 degC) before testing and during the experimental phase. Interceptor(r) G2 nets were from two different production batches (two batches were used for experimental hut only and one batch for other biossays) and Interceptor(r) from one production batch. Interceptor(r) G2 is made from 100-denier polyester coated with a mixture of wash-resistant formulation containing 200 mg/m2 chlorfenapyr and 100 mg/m2alpha-cypermethrin. Interceptor(r) LN is made from 100-denier polyester coated with 200 mg/m2 alpha-cypermethrin. SafiNet is an untreated polyester net manufactured by A to Z. Textiles Mills, Ltd., Tanzania, and was used as a control. The nets were washed 20 times according to a protocol adapted from the standard WHO washing procedure [9] using 20 g/l palm soap (Jamaa) and dried flat in a shaded area. The interval of time used between two washes (i.e. regeneration time) was 1 day for both Interceptor(r) G2 and Interceptor(r) TTNs.\n", - "\n", - "header: Mosquito test systems\n", - "\n", - "IHI laboratory maintains local mosquito strains with resistant mechanisms present in the local population to\n", - "avoid accidental release of new resistance alleles into the wild population. Four types of laboratory-reared mosquitoes with different resistance levels (confirmed at the time of testing) were used in the WHO cone, WHO tunnel and I-ACT tests: _Anopheles arabiensis_ (Kingani strain, upregulation of cytochrome p450s, 14% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is reversed by piperonyl butoxide (PBO) pre-exposure, which acts to block enzymatic detoxification mechanisms by inhibiting their metabolism), _Anopheles gambiae_ s.s. (Kisumu strain, fully susceptible to all insecticide classes at WHO discriminating doses), _Aedes aegypti_ (Bagamoyo strain, fully susceptible to all insecticide classes at WHO discriminating doses) and _Culex quinquefasciatus_ (Bagamoyo strain, 6% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is partially reversed (only moderate susceptibility is restored from inhibition of detoxifying mechanism) by PBO pre-exposure). In I-ACT and tunnel tests, sugar-starved (8 to 9 h) nulliparous female mosquitoes, 5-8 days old, were used. For cone bioassay, 2-5-day-old nulliparous sugar-fed female mosquitoes were challenged. Laboratory colonies were maintained by feeding larvae Tetramin(r) tropical fish food and adults on blood between 3 and 6 days after emergence and 10% sugar solution ad libitum. Temperature and humidity within the insectary are maintained between 27 degC+-5 degC and 40%-100% RH, relatively following MR4 guidelines [18]. For the experimental hut assays, only wild populations of _An. arabiensis_ and _Culex quinquefasciatus_ were collected in sufficient numbers for evaluation.\n", - "\n", - "header: Table 4: Number and proportion of net pieces passing using each laboratory bioassay based on WHO criteria of 80% control corrected mortality, 95% knockdown in WHO cone test, 90% blood-feeding inhibition or 80% control corrected mortality in tunnel test\n", - "footer: The WHO criteria for tunnel were adopted for I-ACT. Whole nets were used for I-ACT\n", - "columns: ['ITNs type - Unnamed: 0_level_1', 'Number of net pieces passing - Cone (N = 60)', 'Number of net pieces passing - Tunnel (N = 15)', 'Number of net pieces passing - I-ACT (N = 40)']\n", - "\n", - "{\"0\":{\"ITNs type - Unnamed: 0_level_1\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Cone (N = 60)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"Anopheles arabiensis (Kingani strain, resistant)\"},\"1\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":\"n (%)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"n (%)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"n (%)\"},\"2\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"11 (73)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"3\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"22 (37)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"13 (87)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"4\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"5\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"12 (80)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"36 (90)\"},\"6\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"21 (35)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"10 (67)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"7\":{\"ITNs type - Unnamed: 0_level_1\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Cone (N = 60)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"An. gambiae ss. (Kisumu strain, susceptible)\"},\"8\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"9\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"50 (83)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"10\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"2 (3)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"14 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"11\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"12\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"38 (63)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"13\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"10 (17)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"}}\n", - "\n", - "header: Resistant mosquitoes\n", - "\n", - "For pyrethroid-resistant _An. arabiensis_, blood-feeding inhibition was lower with Interceptor(r) G2 than Interceptor(r) in WHO tunnel: 87.8% (95% CI: 82.9- 92.7) vs. 92.9% (95% CI: 89.8-96.0) OR blood-fed = 1.92 [95% CI:14.8-2.48], \\(p\\) < 0.001 and I-ACT: 89.8% (95% CI: 85.8-93.7) vs. 93.9% (95% CI: 91.5-96.3) (OR blood-fed = 1.67 [95% CI: 1.07-2.62], \\(p\\) = 0.024). There was no difference between the two products measured in experimental huts: 95.9% (95% CI: 93.7-98.2) vs. 96.3% (95% CI: 93.0-99.7) (OR blood-fed = 1.06 [95% CI: 0.54-2.10], \\(p\\) = 0.857). A similar trend was observed for the 20x washed nets.\n", - "\n", - "Blood-feeding inhibition was similar for Interceptor(r) G2 compared to Interceptor(r) with _Cx. Quinquefasciatus_ in WHO tunnel: 97.8% (95CI: 96.1-99.5) vs. 97.1% (95% CI: 95.9-98.3) (OR blood fed = 1.36 [95% CI: 0.85-2.17], \\(p\\) = 0.196) and experimental huts: 97.2% (95% CI: 95.9-98.4) vs. 97.2% (95% CI: 95.8-98.7) (OR = 1.04 [95% CI: 0.76-1.42], \\(p\\) = 0.827), whilst in I-ACT the difference was significantly different: 99.0% (95% CI: 98.1-99.9) vs. 91.3% (95% CI: 88.6-93.9) (OR blood fed = 0.11 [95% CI: 0.05-0.26], \\(p\\) < 0.001). A similar trend was observed for the 20x washed nets (Fig. 3a, b, Table 3). The percentage blood-feeding inhibition and mean difference between bioassays for all mosquito species are presented in Additional file 1: Table S2.\n", - "\n", - "header: Table 2 Logistic regression analysis to compare mosquito mortality in Interceptor® and Interceptor® G2 ITNs after exposure in WHO cone and tunnel tests, Ifakara ambient chamber test and experimental hut, Tanzania\n", - "footer: Odds ratio adjusted for net type, volunteer, hut position/number and day of the experiment\n", - "Laboratory-reared mosquitoes were used for WHO cone, WHO tunnel and I-ACT\n", - "For the experimental hut trial, the ITNs were tested against free-flying wild pyrethroid-resistant Anopheles arabiensis and Culex quinquefasciatus in Lupiro, Ifakara\n", - "*p-value>0.05\n", - "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1', 'WHO cone - OR (95% CI)', 'Tunnel - OR (95% CI)', 'I-ACT - OR (95% CI)', 'Hut - OR (95% CI)', 'Huts with netting window - OR (95% CI)']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Anopheles anabiensis (resistant)\",\"WHO cone - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Tunnel - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"I-ACT - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Hut - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Anopheles anabiensis (resistant)\"},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.03, 0.07)\",\"Tunnel - OR (95% CI)\":\"1.33 (1.17, 1.51)\",\"I-ACT - OR (95% CI)\":\"1.55 (1.16, 2.07)\",\"Hut - OR (95% CI)\":\"2.38 (2.09, 2.72)\",\"Huts with netting window - OR (95% CI)\":\"2.43 (1.88, 3.14)\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.05 (0.20, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.42 (1.19, 1.70)\",\"I-ACT - OR (95% CI)\":\"1.61 (1.05, 2.49)\",\"Hut - OR (95% CI)\":\"2.53 (1.96, 3.26)\",\"Huts with netting window - OR (95% CI)\":\"2.55 (1.76, 3.68)\"},\"7\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"8\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"9\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.2, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.23 (1.03, 1.48)\",\"I-ACT - OR (95% CI)\":\"1.50 (1.02, 2.23)\",\"Hut - OR (95% CI)\":\"2.36 (2.02, 2.77)\",\"Huts with netting window - OR (95% CI)\":\"2.32 (1.63, 3.31)\"},\"10\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Culex quinquefasciatus (resistant)\",\"WHO cone - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Tunnel - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"I-ACT - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Hut - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\"},\"11\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"12\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"13\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.05 (0.57, 1.93)*\",\"Tunnel - OR (95% CI)\":\"2.55 (2.26, 2.55)\",\"I-ACT - OR (95% CI)\":\"13.40 (10.75, 16.67)\",\"Hut - OR (95% CI)\":\"1.50 (1.31, 1.73)\",\"Huts with netting window - OR (95% CI)\":\"1.40 (1.19, 1.63)\"},\"14\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"15\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"16\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.74 (0.31, 1.79)*\",\"Tunnel - OR (95% CI)\":\"2.52 (2.13, 3.00)\",\"I-ACT - OR (95% CI)\":\"12.71 (9.43, 17.14)\",\"Hut - OR (95% CI)\":\"1.52 (1.23, 1.88)\",\"Huts with netting window - OR (95% CI)\":\"1.25 (1.00, 1.57)\"},\"17\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"18\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"19\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.46 (0.62, 3.50)*\",\"Tunnel - OR (95% CI)\":\"2.58 (2.17, 3.06)\",\"I-ACT - OR (95% CI)\":\"14.11 (10.42, 19.11)\",\"Hut - OR (95% CI)\":\"1.50 (1.25, 1.80)\",\"Huts with netting window - OR (95% CI)\":\"1.55 (1.24, 1.94)\"},\"20\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"An gambiae s.s. (susceptible)\",\"WHO cone - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Tunnel - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"I-ACT - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Hut - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"An gambiae s.s.\n", - "\n", - "header: Statistical analysis\n", - "\n", - "Data were entered and validated in Excel using double entry system and exported into STATA 16 software (StataCorp LLC, College Station TX, USA) for further cleaning and analysis. Descriptive statistics were used for data summarization, where arithmetic mean percentage of mosquito control corrected mortality at 72 h and arithmetic mean percentage blood-feeding inhibition for each test and species was presented. Control corrected mortality was calculated by using Abbott's formula: (treatment mortality - control mortality/(1 - control mortality)*100% and blood-feeding inhibition was calculated by taking the total number of unfed mosquitoes divided by total mosquito recapture per hut night [24].\n", - "\n", - "Multivariable mixed-effect logistic regression with binomial error and log link was used to compare the performance of Interceptor(r) G2 to Interceptor(r) on the mortality and blood-feeding endpoints for each species in WHO cone (mortality only), tunnel, I-ACT and experimental huts. Fixed effects were treatment, volunteer, hut number/position (for experimental hut) and night of the experiment. The same regression was used for the comparison of hut design, whereby an interaction term between hut design and ITN type was also included in the model.\n", - "\n", - "header: Table 1: Outcomes measured in WHO cone bioassays, tunnel, I-ACT and experimental hut tests\n", - "footer: a Not reported\n", - "columns: ['Variable', 'Cone bioassay', 'WHO tunnel test', 'I-ACT', 'Experimental hut']\n", - "\n", - "{\"0\":{\"Variable\":\"Primary outcome\",\"Cone bioassay\":\"72-h mortality\",\"WHO tunnel test\":\"72-h mortality\",\"I-ACT\":\"72-h mortality\",\"Experimental hut\":\"72-h mortality\"},\"1\":{\"Variable\":\"Secondary outcome\",\"Cone bioassay\":null,\"WHO tunnel test\":\"Blood-feeding\",\"I-ACT\":\"Blood-feeding\",\"Experimental hut\":\"Blood-feeding\"},\"2\":{\"Variable\":\"Other outcomes\",\"Cone bioassay\":\"Knockdown at 60 min (KD60)\",\"WHO tunnel test\":null,\"I-ACT\":null,\"Experimental hut\":\"Deterrence a and induced exophily a\"}}\n", - "\n", - "header: Impact of hut design on mosquito mortality estimates\n", - "\n", - "To explore the effect of experimental hut design on the measured efficacy of the ITNs, two experiments were conducted between July and August 2021 using ten huts with the same five treatment arms as per the main experimental huts experiment. For the first experiment, conducted over 5 nights, windows were completely covered with white cloth to block light, ventilation and exit. For the remaining 25 nights, 5 huts had windows blocked with netting to allow light and ventilation but to block exit and five huts had exit traps as per main trial. Like the main experimental hut trial, the design was a fully balanced 5 x 5 Latin square with five huts per condition (window exit traps vs. netting windows). Each morning mosquitoes were sorted, scored and held for 72 h to observe delayed mortality for each treatment arm.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: WHO tunnel test\n", - "\n", - "The tunnel tests were carried out from August to November 2020 according to standard WHO procedures [9]. Five 25 cm x 25 cm net pieces per ITN/control were cut adjacent to the swatches cut for cone assays from three nets per treatment arm to make a total of 15 pieces per study arm and to account for possible intra-net variability of insecticide loadings. Five tunnels were run with one sample from each treatment arm with one mosquito strain on a single night. Over 60 nights, all 15 pieces of ITNs per study arm were tested with four mosquito strains.\n", - "\n", - "Non-blood-fed nulliparous females, 5-8 days old, sugar starved for 6-8 h were released in a 60-cm-long glass tunnel. At each end of the tunnel, a 25-cm square mosquito cage covered with polyester netting was fitted. At one third of the length, the netting sample was affixed. The surface of netting \"available\" to mosquitoes is 400 cm2 (20 cm x 20 cm), with 9 x 1-cm-diameter holes: one hole is located at the centre of the square; the other eight were equidistant and located 5 cm from the border. In the shorter section of the tunnel, a small rabbit, its back shaved and restrained in a mesh tunnel, was placed as bait (Fig. 1). In the cage at the end of the longer section of the tunnel, 100 female mosquitoes (one strain \n", - "per replicate) were introduced at 21:00. The following morning at 09:00, the mosquitoes were removed using a mouth aspirator and counted separately from each section of the tunnel, and mortality and blood-feeding rates were recorded. The mosquitoes were placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Mortality was recoded at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Overall mortality was measured by pooling the mortalities of mosquitoes from the two sections of the tunnel. Acceptable feeding success and mortality in controls were 50% and 10%, respectively. Any tests not meeting the specified control cut-off were repeated.\n", - "\n", - "header: Mosquito blood-feeding in WHO tunnel, I-ACT and experimental hut\n", - "\n", - "For all bioassays and strains, blood-feeding inhibition was very high (Fig. 3, Table 3). Both Interceptor(r) G2 and Interceptor(r) gave high levels of blood-feeding inhibition in all \"free-flying\" bioassays.\n", - "\n", - "header: Background\n", - "\n", - "As funding for malaria control falls and mosquito resistance to current public health insecticides increases, new and durable vector control tools that utilise new insecticide classes are needed [1]. For insecticide resistance management, a new Insecticide Treated Net (ITN) Interceptor(r) G2 has been developed, coated with a mixture of the pyrethroid alpha-cypermethrin and the pro-insecticide chlorfenapyr [2]. Chlorfenapyr is an Insecticide Resistance Action Committee (IRAC) Group 13 insecticide, having a pyrrole chemistry that uncouples oxidative phosphorylation via disruption of the proton gradient (as a protonophore) to short circuit mitochondrial respiration through inner mitochondrial membranes of insect cells so that ATP cannot be synthesized, subsequently robbing insects of energy, resulting in death [3, 4]. Metabolic resistance is one of the main mechanisms of resistance observed in malaria vectors [5] where one or several detoxification gene families--cytochrome P450s (P450s), esterases and glutathione S-transferases (GSTs)--are overproduced to detoxify insecticides [6]. While this metabolism is a detoxification process, it can increase the potency of a pro-insecticide and may therefore be exploited as a means to control metabolically resistant insect populations [3]. The unique mode of action of chlorfenapyr on an insect's metabolism is particularly relevant for the control of vectors harboring insecticide resistance mechanisms, as increased metabolic activity increases the conversion of the pro-insecticide into its potent n-dealkylated form and will consequently increase mosquito mortality [7].\n", - "\n", - "For any new ITN to be used in public health, a thorough evaluation of its safety, efficacy and effectiveness is conducted based on World Health Organisation (WHO) standards and criteria [8]. The methods and scope of the laboratory tests and field trials required to attain WHO Prequalification (PQ) listing for ITNs are outlined in a set of WHO guidelines, last updated in 2013 [9]. As part of these guidelines, WHO recommends a set of standardised laboratory tests to ascertain the bioefficacy of pyrethroid ITNs, i.e., the ability of ITN products to kill, incapacitate (knock down) and prevent mosquitoes from blood-feeding. Laboratory bioefficacy tests are also a critical component of ITN durability evaluation used to confirm continued ITN bioefficacy after long-term use in the community [10]. The simplest and most commonly applied ITN bioefficacy test is the WHO cone bioassay where mosquitoes are held close to ITN in plastic cones and the number of mosquitoes knocked down (incapacitated) or killed is counted [9]. For ITNs with feeding inhibition mode of action, the WHO tunnel test is used, where a swatch of ITN with small holes (9 x 1-cm diameter) is made and is placed between mosquitoes and small animal bait overnight [11]. The WHO tunnel test has been shown to agree with experimental but data, using laboratory-reared mosquitoes released into the huts [12]. Thresholds for the mosquito knockdown rate (95%) and mosquito mortality rate (80%) and blood-feeding inhibition (90%) using pyrethroid-susceptible _Anopheles_ mosquitoes serve as performance benchmarks; candidate products are required to fulfill minimum performance standards, which have been established by WHO for qualification to be listed/recommended for their public health values to sustain and protect users from disease transmissions. This includes their physical durability and chemical contents recovered from nets replaced in the field over 3 years or as predicted from wash-resistance testing. For a net to be classified as a long-lasting ITN, i.e., LLIN, > 80% of nets tested should pass WHO cone/tunnel performance benchmarks after 3 years of use [13].\n", - "\n", - "Cone tests are relatively easy to perform, high throughput and sensitive to detecting changes in bioavailable pyrethroids that act through rapid contact neurotoxicity. However, chlorfenapyr requires the mosquito to be metabolically and/or physiologically active (as it would be when encountering the ITN under user conditions) to bioactivate into the potent n-dealkylated form which elicits increased mosquito mortality. As mosquitoes are more metabolically active at night when flying and host-seeking during their typical circadian rhythms, the tunnel test may be more appropriate [14].\n", - "\n", - "The President's Malaria Initiative (PMI) currently uses WHO Tunnel tests for the durability monitoring of chlorfenapyr nets with 4 samples per net evaluated and 48 nets per sampling point [15]. This requires large numbers of mosquitoes and access to small animals for testing, so it cannot be done at all facilities in malaria-endemic areas. To accommodate high-throughput evaluation of whole ITNs for durability evaluation, the Ifakara ambient chamber test (I-ACT) was developed [16]. The Ifakara ambient chamber test (I-ACT) is not currently a recognized method \n", - "approved by the WHO. However, it is currently seeking confirmation by direct comparison to approved methods. This is of particular importance where novel slow-acting chemistries cannot achieve the benchmark standards established for conventional pyrethroid ITN exposures yet may prove to be highly efficacious when tested according to their discrete modes of action. Like the experimental hut, I-ACT makes use of whole nets and human hosts to evaluate bioefficacy of field-used ITNs, but the assay is done under controlled conditions with laboratory-reared mosquitoes. Mosquitoes are released into net chambers within which the test net is hung with a volunteer sleeping beneath, and all mosquitoes are recaptured in the morning. The use of laboratory mosquitoes (rather than conducting experimental hut trials with wild mosquitoes) is done to improve the precision of estimates by releasing mosquito cohorts of a defined number of mosquitoes with high recapture rate (99%) at the conclusion of exposure intervals.\n", - "\n", - "I-ACT bioassay has been used for evaluation of pyrethroid ITNs, was able to discriminate between products [17] and agreed with results of combined WHO cone and tunnel tests [16]. The I-ACT may show suitability for use in evaluation of pro-insecticides because: (i) the assay is run overnight, favouring malarial mosquitoes' circadian rhythms, (ii) the mosquitoes have a large arena to fly in, allowing them to be metabolically active, (iii) the mosquitoes have the opportunity to feed ad libitum and (iv) the I-ACT test eliminates infected mosquitoes that may represent a malaria transmission potential that cannot be completely excluded in WHO experimental huts--a significant safety benefit to volunteers. Therefore, the I-ACT method was evaluated alongside standard methods (i.e., experimental huts, WHO cone and tunnel tests) to provide direct evidence of its comparability. Interceptor(r) (alpha-cypermethrin only) and Interceptor(r) G2 (alpha-cypermethrin and chlorfenapyr) were evaluated to compare the performance of each assay for durability monitoring of pro-insecticidal ITNs.\n", - "\n", - "header: Selection of the correct strain for bioassay\n", - "\n", - "The current study demonstrated that using the correct mosquito strain when evaluating ITNs is a critical consideration. The benefit of chlorfenapyr was only seen against the resistant strains, and against the susceptible strains Interceptor(r) was more efficacious because it contains a higher dose of alphacypermethrin. Comparing between the products using both a susceptible and a resistant strain revealed the different modes of action of Interceptor(r) and Interceptor(r) G2.\n", - "\n", - "header: Considerations for each bioassay\n", - "\n", - "Both I-ACT and experimental huts use the whole bednet and human host, which represent user conditions; however, there is no risk of disease for human participants in I-ACT because the mosquitoes used are laboratory reared. The WHO tunnel test is a well-established bioassay that has been shown to agree with experimental hut tests in this evaluation as well as others [12, 14]. However, it tests only a sample of net and is therefore only able to accurately measure the chemical durability of an ITN and not the chemical _and_ physical durability. In addition, it requires a high number of mosquitoes (100 per replicate) and more testing days compared to I-ACT. In I-ACT there is possibility of testing more than one species or strain per chamber compared to tunnel test, which makes results more comparable. The I-ACT is a new assay that consistently predicts the results of experimental hut tests, measures with a similar magnitude of difference as a tunnel test and provides high-throughput and precise estimates of whole ITN protective efficacy in this study with chlorfenapyr as well as in previous studies with pyrethroid nets [17] at lower cost than tunnel tests. However, this method is yet to become a WHO/PQ-accepted testing modality despite the observed higher precision vs. current WHO-recommended modalities. The detailed descriptions of cost implications for each bioassay and how to build an I-ACT with the cost of \n", - "establishment are described in Additional file 1: Table S4 and Additional file 2 respectively.\n", - "\n", - "Laboratory and/or semi-field bioassays are not replacements for field evaluation, but they are useful if they can predict the results of field tests because they are substantially cheaper and more standardised. Experimental hut tests remain the gold standard test because they represent field conditions and can be related to public health impact [48]. However, variation in mosquito entrance in huts per night is highly heterogeneous and requires a high level of replication to achieve precision [23]. In addition, variation in hut designs affects outcome measurement [34] and should be considered when interpreting results. However, comparing between products, the same trends were consistently seen: Interceptor(r) G2 was superior to Interceptor(r) against resistant mosquitoes when they were tested in a \"free-flying\" scenario and Interceptor(r) was superior to Interceptor(r) G2 against susceptible strains, while the cone test was suitable for evaluating pyrethroids but not pro-insecticides such as chlorfenapyr.\n", - "\n", - "header: Sample size and power\n", - "\n", - "A sample size calculation for generalized linear mixed effects models (GLMMs) through simulation [23] in R statistical software 3.02 [https://www.r-project.org/](https://www.r-project.org/) was performed for the I-ACT and experimental huts. For the I-ACT, to detect a 10% effect difference between the nets, simulations were performed using an estimated mosquito mortality of 80% for unwashed Interceptor(r) G2, 70% for unwashed Interceptor(r) and 10% for SafiNet(r) (deliberately holed). The design was for five arms replicated in two groups, with each volunteer testing each treatment one time over 20 replicates within its group (i.e. 40 replicates per arm), with an inter-observational variance of 0.42 for the night of observation based on the variance of the random effects observed in a previous study. The evaluation was powered at 81% for 15 mosquitoes of each strain released per chamber using 1000 simulations.\n", - "\n", - "For experimental huts, simulation was performed using a Latin square design with volunteers rotating nightly and accounted for as a fixed effect for 25 nights of data collection in 10 huts. The study had 84% power to detect the difference between Interceptor(r) G2 LN and Interceptor(r) LN on mosquito mortality endpoints, with two huts per treatment arm (i.e. 50 replicates per arm). The study power was calculated based on a previous study of pyrethroid nets conducted in the same area, with the estimation of 20 _An. arabiensis_ mosquitoes per night per hut, 21% mortality in unwashed Interceptor(r) G2, 7% in 20x washed Interceptor(r) G2 and 10% in unwashed Interceptor(r) vs. 4% in 20 times washed and 1% in negative control, and overdispersion parameter for daily variation was set at intermediate 0.44.\n", - "\n", - "To test whether I-ACT measures similarly to the WHO tunnels (H0\\(m\\)2=_m_1) a power calculation using Satterthwaites _t_-test was conducted in STATA 16 software (StataCorp LLC, College Station TX, USA) for two unpaired sample means assuming unequal variance. The power estimated was > 90% based on estimates from previous studies conducted in the same setting: mean mortality of 81.5% for WHO tunnel test with an assumed daily variation of 0.5 and 15 replicates per arm and mean\n", - "mortality estimates of 86.5% and an assumed daily variation of 0.42 with 40 replicates per arm were considered for I-ACT.\n", - "\n", - "header: WHO cone bioassays\n", - "\n", - "WHO cone tests were performed between October 2020 and February 2021 according to standard WHO procedures [9], with two modifications: the test board was set at 60deg tilt [19] and holes were cut in the boards (Fig. 1) to maximise mosquito contact with the test nets during exposures. From each treatment arm, three nets were randomly sampled, and five net swatches of 25 cm x 25 cm size were cut from positions 1 to 5. On each netting sample, four standard WHO cones were positioned over net swatches and secured in place using tape. Five laboratory-bred mosquitoes were introduced into each cone and exposed for 3 min, and four replicates were conducted per net piece (20 mosquitoes were exposed per net piece).\n", - "\n", - "After each exposure, the mosquitoes were removed gently from the cones (by mouth aspiration), placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Knockdown (KD60) was recorded after 60 min and mortality at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Acceptable control mortality was <= 10% after 72 h holding time. Any tests exceeding the specified control cut off were repeated.\n", - "\n", - "header: Test nets\n", - "\n", - "ITNs were supplied by BASF in November 2019 and stored at optimal conditions (25 to 32 degC) before testing and during the experimental phase. Interceptor(r) G2 nets were from two different production batches (two batches were used for experimental hut only and one batch for other biossays) and Interceptor(r) from one production batch. Interceptor(r) G2 is made from 100-denier polyester coated with a mixture of wash-resistant formulation containing 200 mg/m2 chlorfenapyr and 100 mg/m2alpha-cypermethrin. Interceptor(r) LN is made from 100-denier polyester coated with 200 mg/m2 alpha-cypermethrin. SafiNet is an untreated polyester net manufactured by A to Z. Textiles Mills, Ltd., Tanzania, and was used as a control. The nets were washed 20 times according to a protocol adapted from the standard WHO washing procedure [9] using 20 g/l palm soap (Jamaa) and dried flat in a shaded area. The interval of time used between two washes (i.e. regeneration time) was 1 day for both Interceptor(r) G2 and Interceptor(r) TTNs.\n", - "\n", - "header: Cone test results: Use of I-ACT for durability monitoring\n", - "\n", - "I-ACT is designed to be a bridging bioassay that reproduces a more natural interaction between the mosquito and human hosts beneath a bednet [16]. Blood-feeding inhibition and 72-h mortality measured by WHO tunnel and I-ACT were similar, meaning that the use of I-ACT for durability monitoring using WHO thresholds of 80% mortality and 90% feeding inhibition is appropriate. We suggest that I-ACT can be a useful alternative to tunnel tests for bioefficacy monitoring and upstream product evaluation as both the bioassays measure a similar odds ratio and I-ACT gives a precise estimation of bioefficacy because it uses laboratory-reared mosquitoes. This is particularly important when considering the longitudinal evaluation of product performance as occurs in durability bioefficacy evaluation for two reasons. Currently, experimental huts tests are being used to evaluate the insecticidal durability of Interceptor(r) G2 [33]. It was been observed at all experimental hut testing sites that mosquito resistance to insecticides has intensified through time [34]. This needs to be factored into considerations about durability testing. ITN protection may wane more quickly against more resistant mosquito populations as nets age [35], and if older ITNs are tested 3 years after baseline efficacy has been calculated, it is possible that they will be tested against a more resistant mosquito population than that at baseline. Therefore, use of carefully maintained laboratory strains may be helpful to minimise differences in insecticide resistance levels. Second, a previous longitudinal durability trial of ITNs [17] using standard WHO cone and tunnel tests as well as I-ACT shows that ITNs are highly heterogeneous, with up to 100% variance after use (John Bradley personal communication), because of variable use practices (washing, drying, care, sleeping space) [36, 37] that result in differential levels of damage and insecticide content [38]. This fact, coupled with WHO/PQ accepted intra-net insecticidal manufacturing heterogeneities [39], shows the need to expedite testing modalities that improve comprehension of net performances by donor organisations, national malaria control programmes (NMCPs) and manufacturers alike.\n", - "\n", - "header: Table 4: Number and proportion of net pieces passing using each laboratory bioassay based on WHO criteria of 80% control corrected mortality, 95% knockdown in WHO cone test, 90% blood-feeding inhibition or 80% control corrected mortality in tunnel test\n", - "footer: The WHO criteria for tunnel were adopted for I-ACT. Whole nets were used for I-ACT\n", - "columns: ['ITNs type - Unnamed: 0_level_1', 'Number of net pieces passing - Cone (N = 60)', 'Number of net pieces passing - Tunnel (N = 15)', 'Number of net pieces passing - I-ACT (N = 40)']\n", - "\n", - "{\"0\":{\"ITNs type - Unnamed: 0_level_1\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Cone (N = 60)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"Anopheles arabiensis (Kingani strain, resistant)\"},\"1\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":\"n (%)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"n (%)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"n (%)\"},\"2\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"11 (73)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"3\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"22 (37)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"13 (87)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"4\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"5\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"12 (80)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"36 (90)\"},\"6\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"21 (35)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"10 (67)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"7\":{\"ITNs type - Unnamed: 0_level_1\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Cone (N = 60)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"An. gambiae ss. (Kisumu strain, susceptible)\"},\"8\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"9\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"50 (83)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"10\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"2 (3)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"14 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"11\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"12\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"38 (63)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"13\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"10 (17)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"}}\n", - "\n", - "header: Resistant mosquitoes\n", - "\n", - "For pyrethroid-resistant _An. arabiensis_, blood-feeding inhibition was lower with Interceptor(r) G2 than Interceptor(r) in WHO tunnel: 87.8% (95% CI: 82.9- 92.7) vs. 92.9% (95% CI: 89.8-96.0) OR blood-fed = 1.92 [95% CI:14.8-2.48], \\(p\\) < 0.001 and I-ACT: 89.8% (95% CI: 85.8-93.7) vs. 93.9% (95% CI: 91.5-96.3) (OR blood-fed = 1.67 [95% CI: 1.07-2.62], \\(p\\) = 0.024). There was no difference between the two products measured in experimental huts: 95.9% (95% CI: 93.7-98.2) vs. 96.3% (95% CI: 93.0-99.7) (OR blood-fed = 1.06 [95% CI: 0.54-2.10], \\(p\\) = 0.857). A similar trend was observed for the 20x washed nets.\n", - "\n", - "Blood-feeding inhibition was similar for Interceptor(r) G2 compared to Interceptor(r) with _Cx. Quinquefasciatus_ in WHO tunnel: 97.8% (95CI: 96.1-99.5) vs. 97.1% (95% CI: 95.9-98.3) (OR blood fed = 1.36 [95% CI: 0.85-2.17], \\(p\\) = 0.196) and experimental huts: 97.2% (95% CI: 95.9-98.4) vs. 97.2% (95% CI: 95.8-98.7) (OR = 1.04 [95% CI: 0.76-1.42], \\(p\\) = 0.827), whilst in I-ACT the difference was significantly different: 99.0% (95% CI: 98.1-99.9) vs. 91.3% (95% CI: 88.6-93.9) (OR blood fed = 0.11 [95% CI: 0.05-0.26], \\(p\\) < 0.001). A similar trend was observed for the 20x washed nets (Fig. 3a, b, Table 3). The percentage blood-feeding inhibition and mean difference between bioassays for all mosquito species are presented in Additional file 1: Table S2.\n", - "\n", - "header: Discussion\n", - "\n", - "The superiority of Interceptor(r) G2 over Interceptor(r) for 72-h mortality endpoints, which challenged metabolically resistant _An. arabiensis_ and _Cx. quinquefasciatus_, was clearly seen in all \"free-flying\" bioassays but not in the WHO cone test where mosquitoes are unable to fly around and be metabolically active. This observation has been seen by several other authors [14, 25-27] leading to a consensus that the overnight tunnel test using a 72-h mortality endpoint is a superior laboratory bioassay for evaluation of chlorfenapyr [2, 28] relative to the cone test, which was designed to test contact insecticides that do not require metabolic conversion into a secondary metabolite (most ITN insecticides are classified as IRAC Group 3 sodium channel modulators). It has been routinely observed in experimental hut bioassays that Interceptor(r) G2 gives greater mortality that Interceptor(r) among pyrethroid-resistant mosquitoes [14, 25-27], while mosquitoes are foraging at night when their metabolic rate is high. Both the tunnel test and the I-ACT consistently predicted the superiority of Interceptor(r) G2 over Interceptor(r) observed in experimental hut tests.\n", - "\n", - "The results of this study's mortality elicited on _Cx. quinqufaciatus_ from chlorfenapyr is consistent with other studies over the past decade [29, 30]. Preliminary investigations for chlorfenapyr intoxication in metabolically resistant _Cx. quinquefasciatus_ in experimental huts by [31] demonstrated relatively high levels of control in both ITNs and for IRS in Benin. Later, [27] observed 3 x mortality with chlorfenapyr + alpha-cypermethrin-treated nets compared to pyrethroid-only nets demonstrating the effect of chlorfenapyr on free-flying exposures that optimize conversion rates of the pro-insecticide. However, it is also known that once ITNs develop holes, a pyrethroid treatment offers little or no protection against pyrethroid-resistant _Cu. quinquefaciatus_[32]. The relatively high level of control sustained in _Cx. quinqufaciatus_ in this study and relatively good mortality are important resistance management attributes that make inclusion of chlorfenapyr into vector control interventions a significant advancement for active ingredient options.\n", - "\n", - "header: Table 1: Outcomes measured in WHO cone bioassays, tunnel, I-ACT and experimental hut tests\n", - "footer: a Not reported\n", - "columns: ['Variable', 'Cone bioassay', 'WHO tunnel test', 'I-ACT', 'Experimental hut']\n", - "\n", - "{\"0\":{\"Variable\":\"Primary outcome\",\"Cone bioassay\":\"72-h mortality\",\"WHO tunnel test\":\"72-h mortality\",\"I-ACT\":\"72-h mortality\",\"Experimental hut\":\"72-h mortality\"},\"1\":{\"Variable\":\"Secondary outcome\",\"Cone bioassay\":null,\"WHO tunnel test\":\"Blood-feeding\",\"I-ACT\":\"Blood-feeding\",\"Experimental hut\":\"Blood-feeding\"},\"2\":{\"Variable\":\"Other outcomes\",\"Cone bioassay\":\"Knockdown at 60 min (KD60)\",\"WHO tunnel test\":null,\"I-ACT\":null,\"Experimental hut\":\"Deterrence a and induced exophily a\"}}\n", - "\n", - "header: Table 2 Logistic regression analysis to compare mosquito mortality in Interceptor® and Interceptor® G2 ITNs after exposure in WHO cone and tunnel tests, Ifakara ambient chamber test and experimental hut, Tanzania\n", - "footer: Odds ratio adjusted for net type, volunteer, hut position/number and day of the experiment\n", - "Laboratory-reared mosquitoes were used for WHO cone, WHO tunnel and I-ACT\n", - "For the experimental hut trial, the ITNs were tested against free-flying wild pyrethroid-resistant Anopheles arabiensis and Culex quinquefasciatus in Lupiro, Ifakara\n", - "*p-value>0.05\n", - "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1', 'WHO cone - OR (95% CI)', 'Tunnel - OR (95% CI)', 'I-ACT - OR (95% CI)', 'Hut - OR (95% CI)', 'Huts with netting window - OR (95% CI)']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Anopheles anabiensis (resistant)\",\"WHO cone - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Tunnel - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"I-ACT - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Hut - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Anopheles anabiensis (resistant)\"},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.03, 0.07)\",\"Tunnel - OR (95% CI)\":\"1.33 (1.17, 1.51)\",\"I-ACT - OR (95% CI)\":\"1.55 (1.16, 2.07)\",\"Hut - OR (95% CI)\":\"2.38 (2.09, 2.72)\",\"Huts with netting window - OR (95% CI)\":\"2.43 (1.88, 3.14)\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.05 (0.20, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.42 (1.19, 1.70)\",\"I-ACT - OR (95% CI)\":\"1.61 (1.05, 2.49)\",\"Hut - OR (95% CI)\":\"2.53 (1.96, 3.26)\",\"Huts with netting window - OR (95% CI)\":\"2.55 (1.76, 3.68)\"},\"7\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"8\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"9\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.2, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.23 (1.03, 1.48)\",\"I-ACT - OR (95% CI)\":\"1.50 (1.02, 2.23)\",\"Hut - OR (95% CI)\":\"2.36 (2.02, 2.77)\",\"Huts with netting window - OR (95% CI)\":\"2.32 (1.63, 3.31)\"},\"10\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Culex quinquefasciatus (resistant)\",\"WHO cone - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Tunnel - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"I-ACT - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Hut - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\"},\"11\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"12\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"13\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.05 (0.57, 1.93)*\",\"Tunnel - OR (95% CI)\":\"2.55 (2.26, 2.55)\",\"I-ACT - OR (95% CI)\":\"13.40 (10.75, 16.67)\",\"Hut - OR (95% CI)\":\"1.50 (1.31, 1.73)\",\"Huts with netting window - OR (95% CI)\":\"1.40 (1.19, 1.63)\"},\"14\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"15\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"16\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.74 (0.31, 1.79)*\",\"Tunnel - OR (95% CI)\":\"2.52 (2.13, 3.00)\",\"I-ACT - OR (95% CI)\":\"12.71 (9.43, 17.14)\",\"Hut - OR (95% CI)\":\"1.52 (1.23, 1.88)\",\"Huts with netting window - OR (95% CI)\":\"1.25 (1.00, 1.57)\"},\"17\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"18\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"19\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.46 (0.62, 3.50)*\",\"Tunnel - OR (95% CI)\":\"2.58 (2.17, 3.06)\",\"I-ACT - OR (95% CI)\":\"14.11 (10.42, 19.11)\",\"Hut - OR (95% CI)\":\"1.50 (1.25, 1.80)\",\"Huts with netting window - OR (95% CI)\":\"1.55 (1.24, 1.94)\"},\"20\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"An gambiae s.s. (susceptible)\",\"WHO cone - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Tunnel - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"I-ACT - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Hut - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"An gambiae s.s.\n", - "\n", - "header: Thresholds are not a good idea in field trials\n", - "\n", - "Mortality measured in the experimental hut is lower than in the WHO tunnel tests or I-ACT meaning that tests\n", - "comparing products are appropriate rather than setting a threshold of efficacy. These study data support the WHO Pesticide Evaluation Scheme (WHOPES) efficacy criteria for phase II studies [9]. This is particularly important for field evaluation of public health tools because insecticide resistance involves highly complex mechanisms, genes and gene interactions [6] that are heterogeneous in time and space [40]. Insecticide resistance is modified by selection pressures from constantly changing environmental parameters, such as insecticide/pesticide usage in agriculture and biotic interactions with other organisms that affect both the overall mosquito responses to insecticides and the selection of resistance mechanisms [41]. However, in all comparisons tested in \"free-flying\" bioassays with resistant mosquito strains, it was possible to predict the superiority of Interceptor(r) G2 over Interceptor(r). Therefore, the use of a standard comparator net to provide performance benchmarks when evaluating the performance of new products is critical. The added value of a new product relative to pyrethroid-only nets has proven extremely useful when synthesising evidence for PBO nets [42].\n", - "\n", - "header: Mosquito test systems\n", - "\n", - "IHI laboratory maintains local mosquito strains with resistant mechanisms present in the local population to\n", - "avoid accidental release of new resistance alleles into the wild population. Four types of laboratory-reared mosquitoes with different resistance levels (confirmed at the time of testing) were used in the WHO cone, WHO tunnel and I-ACT tests: _Anopheles arabiensis_ (Kingani strain, upregulation of cytochrome p450s, 14% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is reversed by piperonyl butoxide (PBO) pre-exposure, which acts to block enzymatic detoxification mechanisms by inhibiting their metabolism), _Anopheles gambiae_ s.s. (Kisumu strain, fully susceptible to all insecticide classes at WHO discriminating doses), _Aedes aegypti_ (Bagamoyo strain, fully susceptible to all insecticide classes at WHO discriminating doses) and _Culex quinquefasciatus_ (Bagamoyo strain, 6% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is partially reversed (only moderate susceptibility is restored from inhibition of detoxifying mechanism) by PBO pre-exposure). In I-ACT and tunnel tests, sugar-starved (8 to 9 h) nulliparous female mosquitoes, 5-8 days old, were used. For cone bioassay, 2-5-day-old nulliparous sugar-fed female mosquitoes were challenged. Laboratory colonies were maintained by feeding larvae Tetramin(r) tropical fish food and adults on blood between 3 and 6 days after emergence and 10% sugar solution ad libitum. Temperature and humidity within the insectary are maintained between 27 degC+-5 degC and 40%-100% RH, relatively following MR4 guidelines [18]. For the experimental hut assays, only wild populations of _An. arabiensis_ and _Culex quinquefasciatus_ were collected in sufficient numbers for evaluation.\n", - "\n", - "header: Conclusion\n", - "\n", - "Interceptor(r) G2 clearly demonstrated superior bio-efficacy against resistant mosquitoes compared to Interceptor(r) when mosquitoes were challenged in free-flying bioassays. The I-ACT measured similar odds ratios as the WHO tunnel, currently used for testing of ITNs with chlorfenapyr. Both free-flying laboratory bioassays (WHO tunnel and I-ACT) predicted the results of the experimental hut test. Experimental hut design has an influence on mosquito mortality; however, using the odds ratio, all free-flying tests gave consistent findings. In this setting, I-ACT was a reliable bioassay for bioefficacy testing of Interceptor(r) G2 and may be a useful additional bioassay for durability monitoring of ITNs treated with pro-insecticides.\n", - "\n", - "header: Study area: Study design\n", - "\n", - "The study was a five-arm comparative efficacy study to determine the performances of Interceptor(r) G2 ITNs and Interceptor(r) against pyrethroid-susceptible and -resistant mosquitoes measured by WHO cone bioassay, WHO tunnel test, Ifakara ambient chamber test (I-ACT) and experimental huts. Study arms were: (i) Interceptor(r) G2, unwashed; (ii) Interceptor(r) G2, washed 20 times; (iii) Interceptor(r), unwashed; (iv) Interceptor(r), washed 20 times; (v) SafNet(r) (negative control). The primary performance metric upon which the study was powered is 72-h mortality (M72), which is measured in all four bioassays. A secondary outcome was blood-feeding, which was measured in the three free-flying bioassays. Additionally, knockdown at 60 min (KD60) was measured in cone tests (Table 1).\n", - "\n", - "header: Susceptible mosquitoes\n", - "\n", - "For unwashed Interceptor(r), blood-feeding inhibition was measured in tunnel and I-ACT and a similar trend was observed in susceptible mosquitoes as was seen in the resistant laboratory strains (Fig. 3c, d, Table 3). For susceptible _An. gambiae_, blood-feeding inhibition was lower with Interceptor(r) G2 than for Interceptor(r) WHO tunnel: 89.7% (95% CI: 83.3-96.1) vs. 94.5% (95% CI: 91.9-97.2), (OR blood fed = 1.95 [95% CI: 1.46, 2.61], \\(p\\) < 0.001) and similar in I-ACT: 97.4% (95% CI: 95.7-99.1) vs. 98.2% (95% CI: 96.8-99.5), (OR blood fed = 1.41 [95% CI: 0.63-3.17], \\(p\\) = 0.407. For susceptible _Ae. Aggyti_ in WHO tunnel, results showed: 93.8% (95% CI:90.6-97.1) vs. 96.3% (95% CI: 94.0-98.7) (OR blood fed = 2.03 [95% CI: 1.40-2.93], \\(p\\) < 0.001) and in I-ACT: 96.8% (95% CI: 94.8-98.9) vs. 98.3% (95% CI: 97.1-99.5) (OR blood fed = 1.92 [95% CI: 0.87-4.24],\n", - "\\(p=0.107\\)). As before, for both species a similar pattern was seen for the 20\\(\\times\\) washed nets.\n", - "\n", - "header: Statistical analysis\n", - "\n", - "Data were entered and validated in Excel using double entry system and exported into STATA 16 software (StataCorp LLC, College Station TX, USA) for further cleaning and analysis. Descriptive statistics were used for data summarization, where arithmetic mean percentage of mosquito control corrected mortality at 72 h and arithmetic mean percentage blood-feeding inhibition for each test and species was presented. Control corrected mortality was calculated by using Abbott's formula: (treatment mortality - control mortality/(1 - control mortality)*100% and blood-feeding inhibition was calculated by taking the total number of unfed mosquitoes divided by total mosquito recapture per hut night [24].\n", - "\n", - "Multivariable mixed-effect logistic regression with binomial error and log link was used to compare the performance of Interceptor(r) G2 to Interceptor(r) on the mortality and blood-feeding endpoints for each species in WHO cone (mortality only), tunnel, I-ACT and experimental huts. Fixed effects were treatment, volunteer, hut number/position (for experimental hut) and night of the experiment. The same regression was used for the comparison of hut design, whereby an interaction term between hut design and ITN type was also included in the model.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"WHO tunnel test\",\"Start_month\":8,\"Start_year\":2020,\"End_month\":11,\"End_year\":2020}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Interceptor G2\",\"Insecticide\":\"alpha-cypermethrin, chlorfenapyr\",\"Concentration_initial\":\"100 mg\\/m2, 200 mg\\/m2\",\"Net_washed\":20.0},\"N02\":{\"Net_type\":\"Interceptor\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2\",\"Net_washed\":20.0},\"N03\":{\"Net_type\":\"SafiNet\",\"Insecticide\":null,\"Concentration_initial\":null,\"Net_washed\":20.0}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: WHO tunnel test\n", - "\n", - "The tunnel tests were carried out from August to November 2020 according to standard WHO procedures [9]. Five 25 cm x 25 cm net pieces per ITN/control were cut adjacent to the swatches cut for cone assays from three nets per treatment arm to make a total of 15 pieces per study arm and to account for possible intra-net variability of insecticide loadings. Five tunnels were run with one sample from each treatment arm with one mosquito strain on a single night. Over 60 nights, all 15 pieces of ITNs per study arm were tested with four mosquito strains.\n", - "\n", - "Non-blood-fed nulliparous females, 5-8 days old, sugar starved for 6-8 h were released in a 60-cm-long glass tunnel. At each end of the tunnel, a 25-cm square mosquito cage covered with polyester netting was fitted. At one third of the length, the netting sample was affixed. The surface of netting \"available\" to mosquitoes is 400 cm2 (20 cm x 20 cm), with 9 x 1-cm-diameter holes: one hole is located at the centre of the square; the other eight were equidistant and located 5 cm from the border. In the shorter section of the tunnel, a small rabbit, its back shaved and restrained in a mesh tunnel, was placed as bait (Fig. 1). In the cage at the end of the longer section of the tunnel, 100 female mosquitoes (one strain \n", - "per replicate) were introduced at 21:00. The following morning at 09:00, the mosquitoes were removed using a mouth aspirator and counted separately from each section of the tunnel, and mortality and blood-feeding rates were recorded. The mosquitoes were placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Mortality was recoded at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Overall mortality was measured by pooling the mortalities of mosquitoes from the two sections of the tunnel. Acceptable feeding success and mortality in controls were 50% and 10%, respectively. Any tests not meeting the specified control cut-off were repeated.\n", - "\n", - "header: Mosquito blood-feeding in WHO tunnel, I-ACT and experimental hut\n", - "\n", - "For all bioassays and strains, blood-feeding inhibition was very high (Fig. 3, Table 3). Both Interceptor(r) G2 and Interceptor(r) gave high levels of blood-feeding inhibition in all \"free-flying\" bioassays.\n", - "\n", - "header: Selection of the correct strain for bioassay\n", - "\n", - "The current study demonstrated that using the correct mosquito strain when evaluating ITNs is a critical consideration. The benefit of chlorfenapyr was only seen against the resistant strains, and against the susceptible strains Interceptor(r) was more efficacious because it contains a higher dose of alphacypermethrin. Comparing between the products using both a susceptible and a resistant strain revealed the different modes of action of Interceptor(r) and Interceptor(r) G2.\n", - "\n", - "header: Background\n", - "\n", - "As funding for malaria control falls and mosquito resistance to current public health insecticides increases, new and durable vector control tools that utilise new insecticide classes are needed [1]. For insecticide resistance management, a new Insecticide Treated Net (ITN) Interceptor(r) G2 has been developed, coated with a mixture of the pyrethroid alpha-cypermethrin and the pro-insecticide chlorfenapyr [2]. Chlorfenapyr is an Insecticide Resistance Action Committee (IRAC) Group 13 insecticide, having a pyrrole chemistry that uncouples oxidative phosphorylation via disruption of the proton gradient (as a protonophore) to short circuit mitochondrial respiration through inner mitochondrial membranes of insect cells so that ATP cannot be synthesized, subsequently robbing insects of energy, resulting in death [3, 4]. Metabolic resistance is one of the main mechanisms of resistance observed in malaria vectors [5] where one or several detoxification gene families--cytochrome P450s (P450s), esterases and glutathione S-transferases (GSTs)--are overproduced to detoxify insecticides [6]. While this metabolism is a detoxification process, it can increase the potency of a pro-insecticide and may therefore be exploited as a means to control metabolically resistant insect populations [3]. The unique mode of action of chlorfenapyr on an insect's metabolism is particularly relevant for the control of vectors harboring insecticide resistance mechanisms, as increased metabolic activity increases the conversion of the pro-insecticide into its potent n-dealkylated form and will consequently increase mosquito mortality [7].\n", - "\n", - "For any new ITN to be used in public health, a thorough evaluation of its safety, efficacy and effectiveness is conducted based on World Health Organisation (WHO) standards and criteria [8]. The methods and scope of the laboratory tests and field trials required to attain WHO Prequalification (PQ) listing for ITNs are outlined in a set of WHO guidelines, last updated in 2013 [9]. As part of these guidelines, WHO recommends a set of standardised laboratory tests to ascertain the bioefficacy of pyrethroid ITNs, i.e., the ability of ITN products to kill, incapacitate (knock down) and prevent mosquitoes from blood-feeding. Laboratory bioefficacy tests are also a critical component of ITN durability evaluation used to confirm continued ITN bioefficacy after long-term use in the community [10]. The simplest and most commonly applied ITN bioefficacy test is the WHO cone bioassay where mosquitoes are held close to ITN in plastic cones and the number of mosquitoes knocked down (incapacitated) or killed is counted [9]. For ITNs with feeding inhibition mode of action, the WHO tunnel test is used, where a swatch of ITN with small holes (9 x 1-cm diameter) is made and is placed between mosquitoes and small animal bait overnight [11]. The WHO tunnel test has been shown to agree with experimental but data, using laboratory-reared mosquitoes released into the huts [12]. Thresholds for the mosquito knockdown rate (95%) and mosquito mortality rate (80%) and blood-feeding inhibition (90%) using pyrethroid-susceptible _Anopheles_ mosquitoes serve as performance benchmarks; candidate products are required to fulfill minimum performance standards, which have been established by WHO for qualification to be listed/recommended for their public health values to sustain and protect users from disease transmissions. This includes their physical durability and chemical contents recovered from nets replaced in the field over 3 years or as predicted from wash-resistance testing. For a net to be classified as a long-lasting ITN, i.e., LLIN, > 80% of nets tested should pass WHO cone/tunnel performance benchmarks after 3 years of use [13].\n", - "\n", - "Cone tests are relatively easy to perform, high throughput and sensitive to detecting changes in bioavailable pyrethroids that act through rapid contact neurotoxicity. However, chlorfenapyr requires the mosquito to be metabolically and/or physiologically active (as it would be when encountering the ITN under user conditions) to bioactivate into the potent n-dealkylated form which elicits increased mosquito mortality. As mosquitoes are more metabolically active at night when flying and host-seeking during their typical circadian rhythms, the tunnel test may be more appropriate [14].\n", - "\n", - "The President's Malaria Initiative (PMI) currently uses WHO Tunnel tests for the durability monitoring of chlorfenapyr nets with 4 samples per net evaluated and 48 nets per sampling point [15]. This requires large numbers of mosquitoes and access to small animals for testing, so it cannot be done at all facilities in malaria-endemic areas. To accommodate high-throughput evaluation of whole ITNs for durability evaluation, the Ifakara ambient chamber test (I-ACT) was developed [16]. The Ifakara ambient chamber test (I-ACT) is not currently a recognized method \n", - "approved by the WHO. However, it is currently seeking confirmation by direct comparison to approved methods. This is of particular importance where novel slow-acting chemistries cannot achieve the benchmark standards established for conventional pyrethroid ITN exposures yet may prove to be highly efficacious when tested according to their discrete modes of action. Like the experimental hut, I-ACT makes use of whole nets and human hosts to evaluate bioefficacy of field-used ITNs, but the assay is done under controlled conditions with laboratory-reared mosquitoes. Mosquitoes are released into net chambers within which the test net is hung with a volunteer sleeping beneath, and all mosquitoes are recaptured in the morning. The use of laboratory mosquitoes (rather than conducting experimental hut trials with wild mosquitoes) is done to improve the precision of estimates by releasing mosquito cohorts of a defined number of mosquitoes with high recapture rate (99%) at the conclusion of exposure intervals.\n", - "\n", - "I-ACT bioassay has been used for evaluation of pyrethroid ITNs, was able to discriminate between products [17] and agreed with results of combined WHO cone and tunnel tests [16]. The I-ACT may show suitability for use in evaluation of pro-insecticides because: (i) the assay is run overnight, favouring malarial mosquitoes' circadian rhythms, (ii) the mosquitoes have a large arena to fly in, allowing them to be metabolically active, (iii) the mosquitoes have the opportunity to feed ad libitum and (iv) the I-ACT test eliminates infected mosquitoes that may represent a malaria transmission potential that cannot be completely excluded in WHO experimental huts--a significant safety benefit to volunteers. Therefore, the I-ACT method was evaluated alongside standard methods (i.e., experimental huts, WHO cone and tunnel tests) to provide direct evidence of its comparability. Interceptor(r) (alpha-cypermethrin only) and Interceptor(r) G2 (alpha-cypermethrin and chlorfenapyr) were evaluated to compare the performance of each assay for durability monitoring of pro-insecticidal ITNs.\n", - "\n", - "header: WHO cone bioassays\n", - "\n", - "WHO cone tests were performed between October 2020 and February 2021 according to standard WHO procedures [9], with two modifications: the test board was set at 60deg tilt [19] and holes were cut in the boards (Fig. 1) to maximise mosquito contact with the test nets during exposures. From each treatment arm, three nets were randomly sampled, and five net swatches of 25 cm x 25 cm size were cut from positions 1 to 5. On each netting sample, four standard WHO cones were positioned over net swatches and secured in place using tape. Five laboratory-bred mosquitoes were introduced into each cone and exposed for 3 min, and four replicates were conducted per net piece (20 mosquitoes were exposed per net piece).\n", - "\n", - "After each exposure, the mosquitoes were removed gently from the cones (by mouth aspiration), placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Knockdown (KD60) was recorded after 60 min and mortality at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Acceptable control mortality was <= 10% after 72 h holding time. Any tests exceeding the specified control cut off were repeated.\n", - "\n", - "header: Considerations for each bioassay\n", - "\n", - "Both I-ACT and experimental huts use the whole bednet and human host, which represent user conditions; however, there is no risk of disease for human participants in I-ACT because the mosquitoes used are laboratory reared. The WHO tunnel test is a well-established bioassay that has been shown to agree with experimental hut tests in this evaluation as well as others [12, 14]. However, it tests only a sample of net and is therefore only able to accurately measure the chemical durability of an ITN and not the chemical _and_ physical durability. In addition, it requires a high number of mosquitoes (100 per replicate) and more testing days compared to I-ACT. In I-ACT there is possibility of testing more than one species or strain per chamber compared to tunnel test, which makes results more comparable. The I-ACT is a new assay that consistently predicts the results of experimental hut tests, measures with a similar magnitude of difference as a tunnel test and provides high-throughput and precise estimates of whole ITN protective efficacy in this study with chlorfenapyr as well as in previous studies with pyrethroid nets [17] at lower cost than tunnel tests. However, this method is yet to become a WHO/PQ-accepted testing modality despite the observed higher precision vs. current WHO-recommended modalities. The detailed descriptions of cost implications for each bioassay and how to build an I-ACT with the cost of \n", - "establishment are described in Additional file 1: Table S4 and Additional file 2 respectively.\n", - "\n", - "Laboratory and/or semi-field bioassays are not replacements for field evaluation, but they are useful if they can predict the results of field tests because they are substantially cheaper and more standardised. Experimental hut tests remain the gold standard test because they represent field conditions and can be related to public health impact [48]. However, variation in mosquito entrance in huts per night is highly heterogeneous and requires a high level of replication to achieve precision [23]. In addition, variation in hut designs affects outcome measurement [34] and should be considered when interpreting results. However, comparing between products, the same trends were consistently seen: Interceptor(r) G2 was superior to Interceptor(r) against resistant mosquitoes when they were tested in a \"free-flying\" scenario and Interceptor(r) was superior to Interceptor(r) G2 against susceptible strains, while the cone test was suitable for evaluating pyrethroids but not pro-insecticides such as chlorfenapyr.\n", - "\n", - "header: Sample size and power\n", - "\n", - "A sample size calculation for generalized linear mixed effects models (GLMMs) through simulation [23] in R statistical software 3.02 [https://www.r-project.org/](https://www.r-project.org/) was performed for the I-ACT and experimental huts. For the I-ACT, to detect a 10% effect difference between the nets, simulations were performed using an estimated mosquito mortality of 80% for unwashed Interceptor(r) G2, 70% for unwashed Interceptor(r) and 10% for SafiNet(r) (deliberately holed). The design was for five arms replicated in two groups, with each volunteer testing each treatment one time over 20 replicates within its group (i.e. 40 replicates per arm), with an inter-observational variance of 0.42 for the night of observation based on the variance of the random effects observed in a previous study. The evaluation was powered at 81% for 15 mosquitoes of each strain released per chamber using 1000 simulations.\n", - "\n", - "For experimental huts, simulation was performed using a Latin square design with volunteers rotating nightly and accounted for as a fixed effect for 25 nights of data collection in 10 huts. The study had 84% power to detect the difference between Interceptor(r) G2 LN and Interceptor(r) LN on mosquito mortality endpoints, with two huts per treatment arm (i.e. 50 replicates per arm). The study power was calculated based on a previous study of pyrethroid nets conducted in the same area, with the estimation of 20 _An. arabiensis_ mosquitoes per night per hut, 21% mortality in unwashed Interceptor(r) G2, 7% in 20x washed Interceptor(r) G2 and 10% in unwashed Interceptor(r) vs. 4% in 20 times washed and 1% in negative control, and overdispersion parameter for daily variation was set at intermediate 0.44.\n", - "\n", - "To test whether I-ACT measures similarly to the WHO tunnels (H0\\(m\\)2=_m_1) a power calculation using Satterthwaites _t_-test was conducted in STATA 16 software (StataCorp LLC, College Station TX, USA) for two unpaired sample means assuming unequal variance. The power estimated was > 90% based on estimates from previous studies conducted in the same setting: mean mortality of 81.5% for WHO tunnel test with an assumed daily variation of 0.5 and 15 replicates per arm and mean\n", - "mortality estimates of 86.5% and an assumed daily variation of 0.42 with 40 replicates per arm were considered for I-ACT.\n", - "\n", - "header: Test nets\n", - "\n", - "ITNs were supplied by BASF in November 2019 and stored at optimal conditions (25 to 32 degC) before testing and during the experimental phase. Interceptor(r) G2 nets were from two different production batches (two batches were used for experimental hut only and one batch for other biossays) and Interceptor(r) from one production batch. Interceptor(r) G2 is made from 100-denier polyester coated with a mixture of wash-resistant formulation containing 200 mg/m2 chlorfenapyr and 100 mg/m2alpha-cypermethrin. Interceptor(r) LN is made from 100-denier polyester coated with 200 mg/m2 alpha-cypermethrin. SafiNet is an untreated polyester net manufactured by A to Z. Textiles Mills, Ltd., Tanzania, and was used as a control. The nets were washed 20 times according to a protocol adapted from the standard WHO washing procedure [9] using 20 g/l palm soap (Jamaa) and dried flat in a shaded area. The interval of time used between two washes (i.e. regeneration time) was 1 day for both Interceptor(r) G2 and Interceptor(r) TTNs.\n", - "\n", - "header: Cone test results: Use of I-ACT for durability monitoring\n", - "\n", - "I-ACT is designed to be a bridging bioassay that reproduces a more natural interaction between the mosquito and human hosts beneath a bednet [16]. Blood-feeding inhibition and 72-h mortality measured by WHO tunnel and I-ACT were similar, meaning that the use of I-ACT for durability monitoring using WHO thresholds of 80% mortality and 90% feeding inhibition is appropriate. We suggest that I-ACT can be a useful alternative to tunnel tests for bioefficacy monitoring and upstream product evaluation as both the bioassays measure a similar odds ratio and I-ACT gives a precise estimation of bioefficacy because it uses laboratory-reared mosquitoes. This is particularly important when considering the longitudinal evaluation of product performance as occurs in durability bioefficacy evaluation for two reasons. Currently, experimental huts tests are being used to evaluate the insecticidal durability of Interceptor(r) G2 [33]. It was been observed at all experimental hut testing sites that mosquito resistance to insecticides has intensified through time [34]. This needs to be factored into considerations about durability testing. ITN protection may wane more quickly against more resistant mosquito populations as nets age [35], and if older ITNs are tested 3 years after baseline efficacy has been calculated, it is possible that they will be tested against a more resistant mosquito population than that at baseline. Therefore, use of carefully maintained laboratory strains may be helpful to minimise differences in insecticide resistance levels. Second, a previous longitudinal durability trial of ITNs [17] using standard WHO cone and tunnel tests as well as I-ACT shows that ITNs are highly heterogeneous, with up to 100% variance after use (John Bradley personal communication), because of variable use practices (washing, drying, care, sleeping space) [36, 37] that result in differential levels of damage and insecticide content [38]. This fact, coupled with WHO/PQ accepted intra-net insecticidal manufacturing heterogeneities [39], shows the need to expedite testing modalities that improve comprehension of net performances by donor organisations, national malaria control programmes (NMCPs) and manufacturers alike.\n", - "\n", - "header: Mosquito test systems\n", - "\n", - "IHI laboratory maintains local mosquito strains with resistant mechanisms present in the local population to\n", - "avoid accidental release of new resistance alleles into the wild population. Four types of laboratory-reared mosquitoes with different resistance levels (confirmed at the time of testing) were used in the WHO cone, WHO tunnel and I-ACT tests: _Anopheles arabiensis_ (Kingani strain, upregulation of cytochrome p450s, 14% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is reversed by piperonyl butoxide (PBO) pre-exposure, which acts to block enzymatic detoxification mechanisms by inhibiting their metabolism), _Anopheles gambiae_ s.s. (Kisumu strain, fully susceptible to all insecticide classes at WHO discriminating doses), _Aedes aegypti_ (Bagamoyo strain, fully susceptible to all insecticide classes at WHO discriminating doses) and _Culex quinquefasciatus_ (Bagamoyo strain, 6% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is partially reversed (only moderate susceptibility is restored from inhibition of detoxifying mechanism) by PBO pre-exposure). In I-ACT and tunnel tests, sugar-starved (8 to 9 h) nulliparous female mosquitoes, 5-8 days old, were used. For cone bioassay, 2-5-day-old nulliparous sugar-fed female mosquitoes were challenged. Laboratory colonies were maintained by feeding larvae Tetramin(r) tropical fish food and adults on blood between 3 and 6 days after emergence and 10% sugar solution ad libitum. Temperature and humidity within the insectary are maintained between 27 degC+-5 degC and 40%-100% RH, relatively following MR4 guidelines [18]. For the experimental hut assays, only wild populations of _An. arabiensis_ and _Culex quinquefasciatus_ were collected in sufficient numbers for evaluation.\n", - "\n", - "header: Discussion\n", - "\n", - "The superiority of Interceptor(r) G2 over Interceptor(r) for 72-h mortality endpoints, which challenged metabolically resistant _An. arabiensis_ and _Cx. quinquefasciatus_, was clearly seen in all \"free-flying\" bioassays but not in the WHO cone test where mosquitoes are unable to fly around and be metabolically active. This observation has been seen by several other authors [14, 25-27] leading to a consensus that the overnight tunnel test using a 72-h mortality endpoint is a superior laboratory bioassay for evaluation of chlorfenapyr [2, 28] relative to the cone test, which was designed to test contact insecticides that do not require metabolic conversion into a secondary metabolite (most ITN insecticides are classified as IRAC Group 3 sodium channel modulators). It has been routinely observed in experimental hut bioassays that Interceptor(r) G2 gives greater mortality that Interceptor(r) among pyrethroid-resistant mosquitoes [14, 25-27], while mosquitoes are foraging at night when their metabolic rate is high. Both the tunnel test and the I-ACT consistently predicted the superiority of Interceptor(r) G2 over Interceptor(r) observed in experimental hut tests.\n", - "\n", - "The results of this study's mortality elicited on _Cx. quinqufaciatus_ from chlorfenapyr is consistent with other studies over the past decade [29, 30]. Preliminary investigations for chlorfenapyr intoxication in metabolically resistant _Cx. quinquefasciatus_ in experimental huts by [31] demonstrated relatively high levels of control in both ITNs and for IRS in Benin. Later, [27] observed 3 x mortality with chlorfenapyr + alpha-cypermethrin-treated nets compared to pyrethroid-only nets demonstrating the effect of chlorfenapyr on free-flying exposures that optimize conversion rates of the pro-insecticide. However, it is also known that once ITNs develop holes, a pyrethroid treatment offers little or no protection against pyrethroid-resistant _Cu. quinquefaciatus_[32]. The relatively high level of control sustained in _Cx. quinqufaciatus_ in this study and relatively good mortality are important resistance management attributes that make inclusion of chlorfenapyr into vector control interventions a significant advancement for active ingredient options.\n", - "\n", - "header: Publisher's Note\n", - "\n", - "Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.\n", - "\n", - "header: Resistant mosquitoes\n", - "\n", - "For pyrethroid-resistant _An. arabiensis_, blood-feeding inhibition was lower with Interceptor(r) G2 than Interceptor(r) in WHO tunnel: 87.8% (95% CI: 82.9- 92.7) vs. 92.9% (95% CI: 89.8-96.0) OR blood-fed = 1.92 [95% CI:14.8-2.48], \\(p\\) < 0.001 and I-ACT: 89.8% (95% CI: 85.8-93.7) vs. 93.9% (95% CI: 91.5-96.3) (OR blood-fed = 1.67 [95% CI: 1.07-2.62], \\(p\\) = 0.024). There was no difference between the two products measured in experimental huts: 95.9% (95% CI: 93.7-98.2) vs. 96.3% (95% CI: 93.0-99.7) (OR blood-fed = 1.06 [95% CI: 0.54-2.10], \\(p\\) = 0.857). A similar trend was observed for the 20x washed nets.\n", - "\n", - "Blood-feeding inhibition was similar for Interceptor(r) G2 compared to Interceptor(r) with _Cx. Quinquefasciatus_ in WHO tunnel: 97.8% (95CI: 96.1-99.5) vs. 97.1% (95% CI: 95.9-98.3) (OR blood fed = 1.36 [95% CI: 0.85-2.17], \\(p\\) = 0.196) and experimental huts: 97.2% (95% CI: 95.9-98.4) vs. 97.2% (95% CI: 95.8-98.7) (OR = 1.04 [95% CI: 0.76-1.42], \\(p\\) = 0.827), whilst in I-ACT the difference was significantly different: 99.0% (95% CI: 98.1-99.9) vs. 91.3% (95% CI: 88.6-93.9) (OR blood fed = 0.11 [95% CI: 0.05-0.26], \\(p\\) < 0.001). A similar trend was observed for the 20x washed nets (Fig. 3a, b, Table 3). The percentage blood-feeding inhibition and mean difference between bioassays for all mosquito species are presented in Additional file 1: Table S2.\n", - "\n", - "header: Table 4: Number and proportion of net pieces passing using each laboratory bioassay based on WHO criteria of 80% control corrected mortality, 95% knockdown in WHO cone test, 90% blood-feeding inhibition or 80% control corrected mortality in tunnel test\n", - "footer: The WHO criteria for tunnel were adopted for I-ACT. Whole nets were used for I-ACT\n", - "columns: ['ITNs type - Unnamed: 0_level_1', 'Number of net pieces passing - Cone (N = 60)', 'Number of net pieces passing - Tunnel (N = 15)', 'Number of net pieces passing - I-ACT (N = 40)']\n", - "\n", - "{\"0\":{\"ITNs type - Unnamed: 0_level_1\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Cone (N = 60)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"Anopheles arabiensis (Kingani strain, resistant)\"},\"1\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":\"n (%)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"n (%)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"n (%)\"},\"2\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"11 (73)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"3\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"22 (37)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"13 (87)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"4\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"5\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"12 (80)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"36 (90)\"},\"6\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"21 (35)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"10 (67)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"7\":{\"ITNs type - Unnamed: 0_level_1\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Cone (N = 60)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"An. gambiae ss. (Kisumu strain, susceptible)\"},\"8\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"9\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"50 (83)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"10\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"2 (3)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"14 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"11\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"12\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"38 (63)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"13\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"10 (17)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"}}\n", - "\n", - "header: Thresholds are not a good idea in field trials\n", - "\n", - "Mortality measured in the experimental hut is lower than in the WHO tunnel tests or I-ACT meaning that tests\n", - "comparing products are appropriate rather than setting a threshold of efficacy. These study data support the WHO Pesticide Evaluation Scheme (WHOPES) efficacy criteria for phase II studies [9]. This is particularly important for field evaluation of public health tools because insecticide resistance involves highly complex mechanisms, genes and gene interactions [6] that are heterogeneous in time and space [40]. Insecticide resistance is modified by selection pressures from constantly changing environmental parameters, such as insecticide/pesticide usage in agriculture and biotic interactions with other organisms that affect both the overall mosquito responses to insecticides and the selection of resistance mechanisms [41]. However, in all comparisons tested in \"free-flying\" bioassays with resistant mosquito strains, it was possible to predict the superiority of Interceptor(r) G2 over Interceptor(r). Therefore, the use of a standard comparator net to provide performance benchmarks when evaluating the performance of new products is critical. The added value of a new product relative to pyrethroid-only nets has proven extremely useful when synthesising evidence for PBO nets [42].\n", - "\n", - "header: Mosquito retention\n", - "\n", - "Immediately after the main experimental hut trial, a retention test was conducted by releasing wild _An. ara-biensis_ mosquitoes that were collected from the area by human landing catch (HLC). Fifteen mosquitoes marked with non-toxic fluorescent powder were released in each of the ten huts with the same treatment arms as the main experiment hut design. Five huts were completely closed while the other five were left with open eaves (with 10-cm baffles to reduce egress) and two window exit traps as per main experimental hut study. This experiment was conducted for 5 nights. Each morning mosquitoes were sorted, scored and held for 72 h to observe delayed mortality for each treatment arm.\n", - "\n", - "header: Susceptible mosquitoes\n", - "\n", - "For unwashed Interceptor(r), blood-feeding inhibition was measured in tunnel and I-ACT and a similar trend was observed in susceptible mosquitoes as was seen in the resistant laboratory strains (Fig. 3c, d, Table 3). For susceptible _An. gambiae_, blood-feeding inhibition was lower with Interceptor(r) G2 than for Interceptor(r) WHO tunnel: 89.7% (95% CI: 83.3-96.1) vs. 94.5% (95% CI: 91.9-97.2), (OR blood fed = 1.95 [95% CI: 1.46, 2.61], \\(p\\) < 0.001) and similar in I-ACT: 97.4% (95% CI: 95.7-99.1) vs. 98.2% (95% CI: 96.8-99.5), (OR blood fed = 1.41 [95% CI: 0.63-3.17], \\(p\\) = 0.407. For susceptible _Ae. Aggyti_ in WHO tunnel, results showed: 93.8% (95% CI:90.6-97.1) vs. 96.3% (95% CI: 94.0-98.7) (OR blood fed = 2.03 [95% CI: 1.40-2.93], \\(p\\) < 0.001) and in I-ACT: 96.8% (95% CI: 94.8-98.9) vs. 98.3% (95% CI: 97.1-99.5) (OR blood fed = 1.92 [95% CI: 0.87-4.24],\n", - "\\(p=0.107\\)). As before, for both species a similar pattern was seen for the 20\\(\\times\\) washed nets.\n", - "\n", - "header: Methods\n", - "\n", - "The laboratory bioassays (I-ACT, WHO cone and WHO tunnel tests) were performed at the Vector Control Product Testing Unit (VCPTU) testing facility located at the Bagamoyo branch of Ifakara Health Institute (IHI), Tanzania (6.446deg S and 38.901deg E). The district experiences average annual rainfall of 800 mm-1000 mm, average temperatures between 24 degC and 29 degC and average annual humidity of 73%. The experimental hut study was conducted in Lupiro village (8.385deg S and 36.673deg E) in Ulanga District, southeastern Tanzania. The village is bordered by irrigated rice fields with average annual rainfall of 1200-1800 mm, average temperatures between 20 and 34 degC and average annual humidity of 69%. The main malaria vector is _Anopheles arabiensis_, constituting > 99.9% of the _An. gambiae_ complex species in the last test conducted in November 2020, and resistance to alphabcypermethrin was recorded (57% mortality at 1 x WHO discriminating concentration) at the time of testing.\n", - "\n", - "header: Table 2 Logistic regression analysis to compare mosquito mortality in Interceptor® and Interceptor® G2 ITNs after exposure in WHO cone and tunnel tests, Ifakara ambient chamber test and experimental hut, Tanzania\n", - "footer: Odds ratio adjusted for net type, volunteer, hut position/number and day of the experiment\n", - "Laboratory-reared mosquitoes were used for WHO cone, WHO tunnel and I-ACT\n", - "For the experimental hut trial, the ITNs were tested against free-flying wild pyrethroid-resistant Anopheles arabiensis and Culex quinquefasciatus in Lupiro, Ifakara\n", - "*p-value>0.05\n", - "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1', 'WHO cone - OR (95% CI)', 'Tunnel - OR (95% CI)', 'I-ACT - OR (95% CI)', 'Hut - OR (95% CI)', 'Huts with netting window - OR (95% CI)']\n", - "\n", - "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Anopheles anabiensis (resistant)\",\"WHO cone - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Tunnel - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"I-ACT - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Hut - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Anopheles anabiensis (resistant)\"},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.03, 0.07)\",\"Tunnel - OR (95% CI)\":\"1.33 (1.17, 1.51)\",\"I-ACT - OR (95% CI)\":\"1.55 (1.16, 2.07)\",\"Hut - OR (95% CI)\":\"2.38 (2.09, 2.72)\",\"Huts with netting window - OR (95% CI)\":\"2.43 (1.88, 3.14)\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.05 (0.20, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.42 (1.19, 1.70)\",\"I-ACT - OR (95% CI)\":\"1.61 (1.05, 2.49)\",\"Hut - OR (95% CI)\":\"2.53 (1.96, 3.26)\",\"Huts with netting window - OR (95% CI)\":\"2.55 (1.76, 3.68)\"},\"7\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"8\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"9\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.2, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.23 (1.03, 1.48)\",\"I-ACT - OR (95% CI)\":\"1.50 (1.02, 2.23)\",\"Hut - OR (95% CI)\":\"2.36 (2.02, 2.77)\",\"Huts with netting window - OR (95% CI)\":\"2.32 (1.63, 3.31)\"},\"10\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Culex quinquefasciatus (resistant)\",\"WHO cone - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Tunnel - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"I-ACT - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Hut - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\"},\"11\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"12\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"13\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.05 (0.57, 1.93)*\",\"Tunnel - OR (95% CI)\":\"2.55 (2.26, 2.55)\",\"I-ACT - OR (95% CI)\":\"13.40 (10.75, 16.67)\",\"Hut - OR (95% CI)\":\"1.50 (1.31, 1.73)\",\"Huts with netting window - OR (95% CI)\":\"1.40 (1.19, 1.63)\"},\"14\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"15\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"16\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.74 (0.31, 1.79)*\",\"Tunnel - OR (95% CI)\":\"2.52 (2.13, 3.00)\",\"I-ACT - OR (95% CI)\":\"12.71 (9.43, 17.14)\",\"Hut - OR (95% CI)\":\"1.52 (1.23, 1.88)\",\"Huts with netting window - OR (95% CI)\":\"1.25 (1.00, 1.57)\"},\"17\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"18\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"19\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.46 (0.62, 3.50)*\",\"Tunnel - OR (95% CI)\":\"2.58 (2.17, 3.06)\",\"I-ACT - OR (95% CI)\":\"14.11 (10.42, 19.11)\",\"Hut - OR (95% CI)\":\"1.50 (1.25, 1.80)\",\"Huts with netting window - OR (95% CI)\":\"1.55 (1.24, 1.94)\"},\"20\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"An gambiae s.s. (susceptible)\",\"WHO cone - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Tunnel - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"I-ACT - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Hut - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"An gambiae s.s.\n", - "\n", - "header: Table 1: Outcomes measured in WHO cone bioassays, tunnel, I-ACT and experimental hut tests\n", - "footer: a Not reported\n", - "columns: ['Variable', 'Cone bioassay', 'WHO tunnel test', 'I-ACT', 'Experimental hut']\n", - "\n", - "{\"0\":{\"Variable\":\"Primary outcome\",\"Cone bioassay\":\"72-h mortality\",\"WHO tunnel test\":\"72-h mortality\",\"I-ACT\":\"72-h mortality\",\"Experimental hut\":\"72-h mortality\"},\"1\":{\"Variable\":\"Secondary outcome\",\"Cone bioassay\":null,\"WHO tunnel test\":\"Blood-feeding\",\"I-ACT\":\"Blood-feeding\",\"Experimental hut\":\"Blood-feeding\"},\"2\":{\"Variable\":\"Other outcomes\",\"Cone bioassay\":\"Knockdown at 60 min (KD60)\",\"WHO tunnel test\":null,\"I-ACT\":null,\"Experimental hut\":\"Deterrence a and induced exophily a\"}}\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"WHO tunnel test\",\"Start_month\":8,\"Start_year\":2020,\"End_month\":11,\"End_year\":2020}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Interceptor G2\",\"Insecticide\":\"alpha-cypermethrin, chlorfenapyr\",\"Concentration_initial\":\"100 mg\\/m2, 200 mg\\/m2\",\"Net_washed\":20.0},\"N02\":{\"Net_type\":\"Interceptor\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2\",\"Net_washed\":20.0},\"N03\":{\"Net_type\":\"SafiNet\",\"Insecticide\":null,\"Concentration_initial\":null,\"Net_washed\":20.0}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Notes\n", - "\n", - "_Acknowledgments._ The authors express their sincere thanks to M. Didier Dobri, Centre Suisse de Recherches Scientifiques en Cote d'Ivoire (CSRS) laboratory technician, and Fidele Assamoa for their support in mosquito collection and rearing, the chief and population of the village of Aboude (Agboville), and the entomology fieldworkers of CSRS. They also thank Vestergaard for supplying the long-lasting insecticidal nets tested in this study.\n", - "\n", - "_Author contributions._ A. M., E. C., M. K., T. W., and L. A. M. designed the study. A. M., E. C., C. E., and B. P. led the entomology field activities and participated in data collection. A. M., E. C., C. L. J., T. W., and L. A. M. performed the molecular assays. A. M., E. C., M. K., C. E., C. L. J., B. P., S. R. I, T. W., and L. A. M. were responsible for data analysis and interpretation. L. A. M. drafted the manuscript, which was revised by all coauthors. All authors read and approved the final manuscript.\n", - "\n", - "_Disclaimer._ The findings and conclusions in this report are those of the authors and do not necessarily represent the official position of the Centers for Disease Control and Prevention.\n", - "\n", - "_Financial support._ This work was supported by the Sir Halley Stewart Trust (L.A.M.), the Wellcome Trust/Royal Society ([http://www.wellcome.ac.uk](http://www.wellcome.ac.uk) and [https://royalsociety.org](https://royalsociety.org); (101285/Z/13/Z to T.W.) and the US President's Malaria Initiative/Centers for Disease Control and Prevention (S.R.I.).\n", - "\n", - "_Potential conflicts of interest._ All authors: No reported conflicts. All authors have submitted the ICMJE Form for Disclosure of Potential Conflicts of Interest. Conflicts that the editors consider relevant to the content of the manuscript have been disclosed.\n", - "\n", - "header: Conclusions\n", - "\n", - "Study findings raise concerns regarding the operational failure of standard LLINs and support the urgent deployment of vector control interventions incorporating piperonyl butoxide, chlorfenapyr, or clothianidin in areas of high resistance intensity in Cote d'Ivoire.\n", - "\n", - "header: Table 1. Cox Proportional Hazard Model to Determine Impact of Long-Lasting Insecticidal Net/Insecticidal Exposure on Survival of Field-Caught Anopheles gambiae Sensu Lato 72 Hours After Exposure\n", - "footer: Abbreviations: CI, confidence interval; HRR, hazard rate ratio (ratio of hazard rate for control/reference group to hazard rate for treatment group; PBO, piperonyl butoxide.\n", - "a Immediate mortality rates after long-lasting insecticidal net (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. \n", - "b Significance cutoff level defined as α = .05.\n", - "\n", - "\n", - "columns: ['Insecticide Exposure', 'No. (No. of Events)', 'HRR (95% CI)', 'P Valueb']\n", - "\n", - "{\"0\":{\"Insecticide Exposure\":\"Untreated netting\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"1\":{\"Insecticide Exposure\":\"PermaNet 2.0 (deltamethrin only)\",\"No. (No. of Events)\":\"1135 (1047)\",\"HRR (95% CI)\":\"1.095 (.968\\u20131.239)\",\"P Valueb\":\".15\"},\"2\":{\"Insecticide Exposure\":\"PermaNet 3.0 side panels (deltamethrin only)\",\"No. (No. of Events)\":\"1157 (1088)\",\"HRR (95% CI)\":\"0.9664 (.9092\\u20131.027)\",\"P Valueb\":\".27\"},\"3\":{\"Insecticide Exposure\":\"PermaNet 3.0 roof panels (PBO + deltamethrin)\",\"No. (No. of Events)\":\"563 (533)\",\"HRR (95% CI)\":\"1.007 (.939\\u20131.079)\",\"P Valueb\":\".85\"},\"4\":{\"Insecticide Exposure\":\"Acetone control\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"5\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 1\\u00d7\",\"No. (No. of Events)\":\"676 (641)\",\"HRR (95% CI)\":\"1.006 (.9696\\u20131.043)\",\"P Valueb\":\".77\"},\"6\":{\"Insecticide Exposure\":\"Deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"683 (645)\",\"HRR (95% CI)\":\"0.9942 (.9539\\u20131.036)\",\"P Valueb\":\".78\"},\"7\":{\"Insecticide Exposure\":\"Permethrin 1\\u00d7\",\"No. (No. of Events)\":\"693 (661)\",\"HRR (95% CI)\":\"1.015 (.9698\\u20131.062)\",\"P Valueb\":\".52\"},\"8\":{\"Insecticide Exposure\":\"Clothianidin 1\\u00d7\",\"No. (No. of Events)\":\"698 (581)\",\"HRR (95% CI)\":\"1.208 (.9227\\u20131.581)\",\"P Valueb\":\".17\"},\"9\":{\"Insecticide Exposure\":\"Chlorfenapyr 1\\u00d7\",\"No. (No. of Events)\":\"708 (580)\",\"HRR (95% CI)\":\"1.692 (1.086\\u20132.637)\",\"P Valueb\":\".02\"},\"10\":{\"Insecticide Exposure\":\"PBO + deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"630 (577)\",\"HRR (95% CI)\":\"0.9662 (.2411\\u20133.873)\",\"P Valueb\":\".96\"},\"11\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"633 (601)\",\"HRR (95% CI)\":\"0.9951 (.9407\\u20131.053)\",\"P Valueb\":\".86\"},\"12\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"652 (610)\",\"HRR (95% CI)\":\"0.9942 (.9393\\u20131.052)\",\"P Valueb\":\".84\"},\"13\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"636 (583)\",\"HRR (95% CI)\":\"0.9931 (.8638\\u20131.142)\",\"P Valueb\":\".92\"},\"14\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"624 (587)\",\"HRR (95% CI)\":\"0.9951 (.917\\u20131.08)\",\"P Valueb\":\".91\"},\"15\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"623 (588)\",\"HRR (95% CI)\":\"0.9943 (.9072\\u20131.09)\",\"P Valueb\":\".90\"},\"16\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"656 (603)\",\"HRR (95% CI)\":\"1.026 (.9509\\u20131.107)\",\"P Valueb\":\".51\"},\"17\":{\"Insecticide Exposure\":\"1\\u00d7 Insecticide dose\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"18\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"117 (92)\",\"HRR (95% CI)\":\"1.016 (.9069\\u20131.138)\",\"P Valueb\":\".78\"},\"19\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"108 (78)\",\"HRR (95% CI)\":\"1.007 (.9403\\u20131.078)\",\"P Valueb\":\".84\"},\"20\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"143 (105)\",\"HRR (95% CI)\":\"1.0 (.9035\\u20131.107)\",\"P Valueb\":\">.99\"},\"21\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"114 (83)\",\"HRR (95% CI)\":\"1.0 (.9363\\u20131.068)\",\"P Valueb\":\">.99\"},\"22\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"137 (94)\",\"HRR (95% CI)\":\"1.022 (.8528\\u20131.225)\",\"P Valueb\":\".81\"},\"23\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"157 (114)\",\"HRR (95% CI)\":\"0.9952 (.9491\\u20131.044)\",\"P Valueb\":\".84\"}}\n", - "\n", - "header: Malaria Prevalence\n", - "\n", - "Of the 912 _A. gambiae_ s.l. mosquitoes assayed, 31 tested positive for _P. falciparum_ (3.4%). For PCR-confirmed _A. coluzzii_, _P. falciparum_ prevalence was 3.50% (28 of 805); the remaining 3 infections were in _A. gambiae_ s.s. (4%; 3 of 75). By resistance phenotype, susceptible _A. coluzzii_ (ie, those that died after pyrethroid exposure) were more likely to be infected with malaria, compared with resistant mosquitoes (kh2 = 4.6987; \\(P\\) =.03); infection rates were 5.94% (13 of 219) and 2.49% (10 of 401), respectively.\n", - "\n", - "header: Results\n", - "\n", - "Phenotypic resistance was intense: >25% of mosquitoes survived exposure to 10 times the doses of pyrethroids required to kill susceptible populations. Similarly, the 24-hour mortality rate with deltamethrin-only LLINs was very low and not significantly different from that with an untreated net. Sublethal pyrethroid exposure did not induce significant delayed vector mortality effects 72 hours later. In contrast, LLINs containing the synergist piperonyl butoxide, or new insecticides dothianidin and chlorfenapyr, were highly toxic to _A. coluzzii_. Pyrethroid-susceptible _A. coluzzii_ were significantly more likely to be infected with malaria, compared with those that survived insecticidal exposure. Pyrethroid resistance was associated with significant overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_.\n", - "\n", - "header: Resistance Intensity and Synergist Bioassay Testing\n", - "\n", - "Centers for Disease Control and Prevention (CDC) resistance intensity bioassays were performed for 6 public health insecticides (pyrethroids: alpha-cypermethrin, deltamethrin, and permethrin; carbamate: bendiocarb; neonicotinoid: clothianidin; and pyrrole: chlorfenapyr) [22, 23]. The diagnostic doses of all insecticides were evaluated (including clothianidin [90 mg per bottle] [23] and chlorfenapyr [100 mg per bottle]) and 2, 5, and 10 times the diagnostic dose of pyrethroid insecticides were also used. Per test, knockdown was recorded at 15-minute intervals for 30 minutes (pyrethroids and bendiocarb) or 60 minutes (dothianidin and chlorfenapyr) of insecticide exposure. One-hour PBO preexposures were performed using WHO tube assays [24], before deltamethrin CDC bottle bioassay testing [22].\n", - "\n", - "WHO cone and CDC resistance intensity bioassay data were interpreted according to the WHO criteria [21, 22]. Mosquitoes that died after exposure to a LLIN or 1x insecticide dose were stored at -20degC in RNAlater (Thermo Fisher Scientific) and were considered \"susceptible\" for genotypic analysis. Surviving mosquitoes were held and scored for mortality rate after 24, 48 and 72 hours to observe delayed mortality effects. Kaplan-Meier curves were used to visualize survival data, and Cox regression was used to compare postexposure survival. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. Surviving mosquitoes at 72 hours were stored at -20degC in RNAlater and were considered \"resistant\" for genotypic analysis.\n", - "\n", - "header: RESULTS\n", - "\n", - "A total of 4917 female _A. gambiae_ s.l. mosquitoes were collected in Agboville, Cote d'Ivoire. Of those, 912, which were previously tested in either LLIN bioefficacy (n = 384) or resistance intensity (n = 528) bioassays, were selected for molecular species identification. Of the 912 selected, 805 (88.3%) were determined to be _A. coluzzii_, 75 (8.2%) were _A. gambiae_ s.s., and 22 (2.4%) were _A. gambiae_-_A. coluzzii_ hybrids; 10 individuals did not amplify.\n", - "\n", - "header: Characterization of Insecticide Resistance Mechanisms: Target-Site Mutations\n", - "\n", - "The same cohort of field mosquitoes (n = 912) was tested for the presence of L1014F _kdr_[27] and N1575Y mutations [28]. A subsample of mosquitoes (n = 49) that were exposed to bendiocarb, clothianidin or chlorfenapyr was tested for the presence of the G119S _Ace-1_ mutation [29]. Pearson kh2 and Fisher exact tests (when sample sizes were small) were used to investigate the statistical association between resistance status, allele frequencies, and deviations from Hardy-Weinberg equilibrium.\n", - "\n", - "header: Insecticide Resistance Intensity\n", - "\n", - "A total of 2251 field-caught _A. gambiae_ s.l. were tested in resistance bioassays. Intense pyrethroid resistance was evident with more than 25% of mosquitoes surviving exposure to 10 times the dose of insecticide required to kill a susceptible population (Figure 2A). At the diagnostic dose, mosquito mortality rates did not exceed 25% for any pyrethroid tested, which was consistent with the high survival rates observed during cone bioassays using conventional LLINs (Figure 1). In general, levels of resistance to alpha-cypermethrin, deltamethrin, and permethrin were not significantly different at each insecticide concentration tested (Figure 2A).\n", - "\n", - "By comparison, carbamate tolerance was low, with a mean knockdown of 94.53% (95% CI, 92.11%-96.95%; n = 101) after 30 minutes of exposure to the diagnostic dose of bendiocarb. Similarly, high levels of susceptibility to new insecticides clothianidin and chlorfenapyr were observed, with mean mortality rates of 94.11% (95% CI, 93.43%-94.80%; n = 102) and 95.54% (94.71%-96.36%; n = 112), respectively, 72 hours after exposure to the tentative diagnostic doses. Preexposure to PBO increased the average _A. gambiae_ s.l. mortality rate significantly, from 14.56% (95% CI, 6.24%-22.88%) to 72.73% (64.81%-79.43%) and from 44.66% (34.86%-54.46%) to 94.17% (91.12%-97.22%) after exposure to 1 or 2 times the diagnostic dose of deltamethrin (Figure 2B).\n", - "\n", - "header: Target-Site Resistance Mutations\n", - "\n", - "L1014_F_kdr_ screening revealed that 92.2% (796/863) of _A. gambiae_ s.l. mosquitoes harbored the mutation; 71.5% (617 of 863) were homozygous, 20.7% (179 of 863) were heterozygous, 5.1% (44 of 863) were wild type, and 2.7% (23 of 863) did not amplify. For PCR-confirmed _A. coluzzii_, L1014F_kdr_ prevalence was 87.8% (707 of 805); 66.6% (536 of 805) were homozygous for the mutation, 21.2% (171 of 805) were heterozygous, 5.3% (43 of 805) were wild type, and 2.2% (18 of 805) did not amplify. For _A. coluzzii_, population-level L1014F_kdr_ allele frequency was 0.83, with evidence for significant deviations from Hardy-Weinberg equilibrium (kh2 = 29.124; \\(P\\) <.001). There was no significant association between L1014F_kdr_ frequency and the ability of _A. coluzzii_, to survive pyrethroid exposure, in either LLIN or resistance bioassays (kh2 = 2.0001 [_P_ =.16] and kh2 = 3.6998 [_P_ =.054], respectively). Similarly, there was no significant association between L1014F_kdr_ and the ability of _A. coluzzii_ to survive PBO preexposure and pyrethroid treatment, in either LLIN or resistance bioassays (kh2 = 0.0086; \\(P\\) =.93; Fisher exact test, \\(P\\) =.429, respectively).\n", - "\n", - "For PCR-confirmed _A. gambiae_ s.s., L1014F_kdr_ prevalence was 95.3% (61 of 64); 89.1% (57 of 64) were homozygous for the mutation, 6.3% (4 of 64) were heterozygous, none were wild type, and 4.7% (3 of 64) did not amplify. There was no significant association between L1014F_kdr_ frequency and ability of _A. gambiae_ s.s. to survive pyrethroid or PBO preexposure and pyrethroid treatment (in either LLIN or resistance bioassays), because all tested individuals harbored this mutation (n = 61). For _A. gambiae_ s.s., the population-level L1014F_kdr_ allele frequency was 0.97, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.070; \\(P\\) =.79).\n", - "\n", - "N1575Y screening revealed that 2.3% of _A. gambiae_ s.l. mosquitoes (21 of 912) harbored the mutation; all were\n", - "heterozygotes. N1575Y prevalence was 1.1% (9 of 805) and 16% (12 of 75) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 0.99% (9 of 912) did not amplify. There was no evidence for ongoing N1575Y selection in either species (kh2 = 0.026 [_P_ =.87] and kh2 = 0.62 [_P_ =.43] for _A. coluzzi_ and _A. gambiae_ s.s., respectively). For _A. coluzzi_, there was no significant association between N1575Y frequency and ability of mosquitoes to survive pyrethroid exposure, in LLIN or resistance bioassays (kh2 = 0.0001 [_P_ =.99] and kh2 = 0.3244 [_P_ =.57], respectively).\n", - "\n", - "G119S _Ace-1_ screening revealed that 55.1% of _A. gambiae_ s.l. mosquitoes (27 of 49) harbored the mutation; all were heterozygotes. G119S _Ace-1_ prevalence was 64.9% (24 of 37) and 27.3% (3 of 11) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 1 remaining _A. gambiae-A. coluzzi_ hybrid was wild type. For _A. coluzzi_, population-level G119S _Ace-1_ allele frequency was 0.32, with evidence of significant deviations from Hardy-Weinberg equilibrium (kh2 = 8.525; \\(P\\) =.004). For _A. gambiae_ s.s., population-level G119S _Ace-1_ allele frequency was 0.14, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.274; \\(P\\) =.60). For _A. coluzzi_, there was a significant association between G119S _Ace-1_ frequency and surviving bendiocarb exposure (Fisher exact test, \\(P\\) =.005).\n", - "\n", - "header: Study Area and Mosquito Collections: WHO Cone Bioassay Testing\n", - "\n", - "Two types of LLIN were evaluated in this study. PermaNet 2.0 is a conventional LLIN treated with deltamethrin only (1.4 g/kg +- 25%) and PermaNet 3.0 is a piperonyl butoxide (PBO) synergism LILIN, consisting of a roof containing PBO (25g/kg) and deltamethrin (4 g/kg +- 25%) and side panels containing deltamethrin only (2.8 g/kg +- 25%). WHO cone bioassays were used to test the susceptibility of _A. gambiae_ s.l. exposed to unwashed PermaNet 2.0, PermaNet 3.0 roof panels, and PermaNet 3.0 side panels [21]. To control for potential variation in insecticide/synergist content, each of 5 LLINs per type was cut into 19 pieces, measuring 30 x 30 cm, with each piece tested a maximum of 3 times.\n", - "\n", - "header: Abstract\n", - "\n", - "Association of Reduced Long-Lasting Insecticidal Net Efficacy and Pyrethroid Insecticide Resistance With Overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_ in Populations of _Anopheles coluzzii_ From Southeast Cote d'Ivoire\n", - "\n", - "Anne Meiwald,\\({}^{1,2}\\) Emma Clark,\\({}^{1,2}\\) Mejica Kristan,\\({}^{1}\\) Constant Edi,\\({}^{2}\\) Claire L Jeffries,\\({}^{1}\\) Bethanie Pelloquin,\\({}^{1}\\) Seth R. Irish,\\({}^{2}\\) Thomas Walker,\\({}^{1}\\) and Louisa A. Messenger\\({}^{1,0}\\)\n", - "\n", - "\n", - "Resistance to major public health insecticides in Cote d'Ivoire has intensified and now threatens the long-term effectiveness of malaria vector control interventions.\n", - "\n", - "header: Mosquito Survival After Insecticidal Exposure\n", - "\n", - "All _A. gambiae_ s.l. tested in LLIN bioefficacy or resistance intensity bioassays, were held for 72 hours, to assess any impact of insecticide or net exposure on delayed mortality rate. For LLIN bioassays, there was little evidence for any reduction in survival during this holding period (Cox regression \\(P\\) =.15,.27, and.85, respectively, for comparisons between untreated control and PermaNet 2.0, PermaNet 3.0 side panels, and PermaNet 3.0 roof panels) (Table 1 and Figure 3A). Exposure to the diagnostic doses of all insecticides in CDC bottle bioassays did not induce significant delayed mortality effects over 72 hours (Cox regression \\(P\\) >.05 for all insecticides compared with control, with the exception of chlorfenapyr [_P_ =.02]) (Table 1 and Figure 3B). This phenomenon was also observed at increasing pyrethroid doses\n", - "\n", - "Figure 2: _A._ Resistance intensity of field-caught _Anaopheles gambiae_ sensu late (s.l.) after exposure to 1, 2, 5, or 10 times the diagnostic dose of pyrethroid insecticides. Mean knockdown/acute toxicity rates after 30-minute exposure are shown with 95% confidence intervals (Cls). Knockdown or mortality rates at the same dose per insecticide sharing a letter do not differ significantly (_P_ >.05). Mortality rates <00% (_lower and line_) represent confirmed resistance at the diagnostic dose (1a), and rates <00% (_upper and line_) indicate moderate to high-intensity resistance and high-intensity resistance at 5° and 10x, respectively, as defined by the World Health Organization [24]. _B._ Restoration of deltamethrin susceptibility of field-caught _A. gambiae_ s.l. after presopause to piperonyl butoxide (PBO). Mean knockdown/acute toxicity after 30-minute exposure to 1 or 2 times the diagnostic dose of deltamethrin with 95% Cls. Knockdown/mortality rates do not differ significantly between pyrethroid only and synergist plus pyrethroid sharing a letter (_P_ >.05). Red line at 90% mortality rate represents metabolic resistance mechanisms partially involved [24].\n", - "\n", - "\n", - "(Cox regression \\(P\\) >.05 for alpha-cypermethrin, deltamethrin, and permethrin 5x and 10x vs either the control or diagnostic dose) (Table 1; Figure 3C and 3D).\n", - "\n", - "header: Metabolic Resistance Mechanisms\n", - "\n", - "Comparison of metabolic gene expression levels in field populations of _A. coluzzi_ and _A. gambiae s.s._ demonstrated significant up-regulation of _CYP6P4_ (fold change, 5.88 [95% CI, 5.19-44.06] for _A. coluzzi_ and 6.08 [5.43-50.64] for _A. gambiae_ s.s.), _CYP6Z1_ (4.04 [3.69-41.54] and 3.56 [3.24-36.25], respectively),\n", - "\n", - "Figure 3.: The longevity of field-caught _A. gambiae_ sensus into after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (_A_) and \\(x\\) (B, 5x [_O_], and 10× [_D_) the diagnostic dose of pyrethroid insecticides in Centres for Disease Control and Prevention resistance intensity assays. Kaplan-Meier survival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\n", - "\n", - "\n", - "and _CYP6P3_ (12.56 [11.40-12-3.83] and 13.85 [12.53-132.03]), relative to a susceptible laboratory colony, respectively (Figure 4). More modest overexpression of _CYP6P1_ and _GSTE2_ was observed (_CYP6P1_ fold changes, 1.18 [95% CI, 1.08-12.31] and 1.28 [1.17-14.40]; GSTE2, 0.56 [.48-3.32], and 0.67 [.58-4.29], for _A. coluzzi_ and _A. gambiae_ s.s., respectively) (Figure 4). The fold change levels did not differ significantly between the 2 species for any gene nor by malaria infection status in wild _A. coluzzi_. Comparison of metabolic gene expression in phenotyped field populations of _A. coluzzi_ revealed lower fold changes overall, but notably, increased overexpression of _CYP6P3_ in survivors of bendiocarb, deltamethrin, PBO plus deltamethrin, and permethrin (fold change, 3.91 [95% CI, 3.33-22.16], 2.21 [1.88-12.53], 2.64 [2.21-13.69], and 2.21 [1.99-20.03], respectively) (Figure 5).\n", - "\n", - "header: Keywords\n", - "\n", - "_Anopheles coluzzii_; insecticide resistance; _Plasmodium falciparum_; long-lasting insecticidal nets; Cote d'Ivoire; PBO; chlorfenapyr; clothianidin; _CYP6P4_; _CYP6P3_; _CYP6Z1_\n", - "\n", - "In Cote d'Ivoire, malaria is a serious public health problem with the entire population of about 26.2 million people at risk, and disease prevalence reaching as high as 63% in the southwest region [1]. Control of _Anopheles gambiae_ sensu lato (s.l.), the major malaria vector species group, has been through the efforts of the National Malaria Control Programme, which has distributed insecticide-treated nets as the primary vector control intervention. Indoor residual spraying and larviciding in high transmission areas have been recommended as complementary strategies; implementation of the former commenced in late 2020 [2]. Estimates of net coverage across the country remain low, with the proportion of households with at least >=1 insecticide-treated net per 2 persons rising from 31% in 2012 to 47% in 2016, and insecticide-treated net use stagnating at 40% of households reporting sleeping under a net the previous night in both survey years [2]. The most recent universal net campaigns in Cote d'Ivoire in 2017-2018 issued conventional, pyrethroid (deltamethrin) long-lasting insecticidal nets (LLINs), aiming to achieve 90% coverage and 80% use [2]. However, country-wide, multiclass insecticide resistance among populations of _A. gambiae_ s.l. is a growing cause for concern because of potential operational failure of current vector control strategies, both locally and across the sub-Saharan region [2, 3].\n", - "\n", - "Resistance to pyrethroid and carbamate insecticides in _Anopheles_ mosquitoes was first reported from the central \n", - "region of Cote d'Ivoire in the early 1990s [4, 5, 6, 7]. Local resistance to the major insecticide classes recommended by the World Health Organization (WHO) for adult mosquito control--pyrethroids, carbamates, organophosphates, and organochlorines--evolved rapidly [8, 9, 10] and has been increasing in intensity, driven largely by selective pressures imposed by contemporaneous scale-up of public health vector control interventions (including those targeting malaria, trypanosomiasis, and onchocerciasis vectors) and use of agricultural pesticides [11, 12, 13, 14, 7]. This escalation in resistance has now begun to compromise the insecticidal efficacy and community-wide impact of conventional, pyrethroid LLINs in Cote d'Ivoire [14, 15], although some levels of personal protection may still remain [15, 16, 17].\n", - "\n", - "Among vector populations across Cote d'Ivoire, the L1014F _kdr_ mutation is pervasive and has been implicated in some longitudinal trends in decreasing DDT and pyrethroid susceptibility [7, 11]; L1014S _kdr_ and N1575Y resistance mutations have also been detected but at much lower frequencies [18]. Extreme carbamate (bendiocarb) resistance and pyrethroid cross-resistance in some _A. gambiae_ sensu stricto (s.s.) populations are mediated by overexpression of _CYP6P3_ and _CYP6M2_ and duplication of the G119S _Ace-1_ mutation [19]. To support and safeguard future malaria control efforts in Cote d'Ivoire, the current study evaluated the efficacy of conventional and next-generation LLINs for prospective distribution, determined current insecticide resistance profiles of _A. gambiae_ s.l. (principally _Anopheles coluzzi_), and characterized underlying molecular and metabolic resistance mechanisms.\n", - "\n", - "header: Characterization of Insecticide Resistance Mechanisms: Metabolic Gene Expression\n", - "\n", - "Relative expression of 5 metabolic genes (_CYP6P3_, _CYP6P4_, _CYP6Z1_, _CYP6P1_, and _GSTE2_) was measured in all field collected mosquitoes (n = 912), using multiplex quantitative real-time polymerase chain reaction (PCR) assays, relative to the housekeeping gene ribosomal protein S7 (_RPS7_) [30]. In addition, gene expression levels were measured in susceptible _A. coluzzii_ Nguosso colony mosquitoes (n = 48). All samples were run in technical triplicate. Expression level and fold change of each target gene between resistant and susceptible field samples, relative to the susceptible laboratory strain, were calculated using the 2-\\({}^{\\text{-}\\Delta\\text{ACT}}\\) method incorporating PCR efficiency, normalized relative to the endogenous control gene (_RPS7_).\n", - "\n", - "header: Discussion\n", - "\n", - "Cote d'Ivoire has hot spots with some of the highest levels of resistance of _Anopheles_ mosquitoes to public health insecticides worldwide, with potentially severe implications for sustaining gains in malaria control [31]. To safeguard malaria vector control efforts and inform the design of effective resistance management strategies, involving tactical deployment of differing indoor residual spraying and LLIN modalities, there needs to be a clear understanding of contemporary phenotypic and genotypic insecticide resistance.\n", - "\n", - "Our study detected intense pyrethroid resistance in southeast Cote d'Ivoire, as evidenced by high proportions of survivors, after exposure to 10 times the diagnostic doses of pyrethroids, as well as very low knockdown and 24-hour mortality rates for deltamethrin-only LLINs, equivalent to rates for an untreated net. These findings are largely in agreement with historical resistance profiles from this region [7, 10, 11] and indicate that conventional LLINs may no longer be operationally viable in areas of high pyrethroid resistance intensity. Previous phase II studies of pyrethroid-only LLINs in the central region of Cote d'Ivoire have demonstrated similarly poor efficacy with highly resistant _A. gambiae_ s.l. populations but argued for the retention of some degree of personal protection [15-17].\n", - "\n", - "Other observational cohorts have reported higher incidences of malaria among non-net users compared with users in areas of moderate to high pyrethroid resistance [17]. The extent of protective efficacy afforded by pyrethroid LLINs will likely reflect the strength of local vector resistance and levels of both net physical integrity and individual compliance [32, 33]; in Cote d'Ivoire, reported LLIN usage has been low, requiring additional behavioral interventions [2, 34]. Our findings of high mosquito mortality rates after exposure to clothianidin and chlorfenapyr and improved vector susceptibility with PBO treatment (on both LLINs and in resistance bioassays), are consistent with data from other sentinel sites across Cote d'Ivoire [16, 35, 36], and strongly support the deployment of vector control interventions incorporating these new active ingredients.\n", - "\n", - "Study results indicate that _A. coluzzi_ was the predominant local vector species during the rainy season, as observed previously [7], circulating sympatrically with smaller proportions of _A. gambiae_ s.s. These 2 vector species commonly cohabit but can be genetically distinct in terms of resistance mechanisms [37, 38] and can also differ in larval ecology, behavior, migration, and activation [39-41]. In general, resistance mechanisms in _A. coluzzi_ are less well characterized, compared with _A. gambiae_ s.s., in part because these vectors are morphologically\n", - "\n", - "Figure 4: Metabolic gene expression in field _Anopheles coluzzi_ and _Anopheles gambiae_ sensu stricto (s.s.) populations relative to a susceptible colony population. Error bars represent 95% confidence intervals. Statistically significant differences in expression levels relative to the susceptible colony are indicated as follows: *_P_ <.05; **_P_ <.01; ***_P_ <.001.\n", - "\n", - "\n", - "indistinguishable and few studies present data disaggregated by PCR-confirmed species.\n", - "\n", - "We observed several distinct features in our study, including, principally, evidence for ongoing selection of L1014F _kdr_ and G119S _Ace-1 in A. coluzzii_, which was absent in _A. gambiae_ s.s. and higher proportions of N1575Y in _A. gambiae_ s.s.; expression levels of metabolic genes were comparable between species. The lack of association between L1014F _kdr_ genotype and mosquito phenotype, coupled with the identification of 3 CYP450 enzymes (_CYP6P4, CYP6P3,_ and _CYP6Z1_) that were significantly overexpressed in field populations (some of which are known to metabolize pyrrethroids and next-generation LLIN insecticides [42, 43]), indicate a key role for metabolic resistance in this _A. coluzzii_ population. One notable difference in our data set, compared with previous findings in Agboville [7], was the finding of benodiocarb susceptibility. This may be attributable to small-scale spatial and longitudinal heterogeneity in resistance, which can be highly dynamic [37, 44], and/or phenotypic differences between vector species, complicating intervention choice for resistance management.\n", - "\n", - "With the exception of chlorfenapyr, which is known to be a slow-acting insecticide, no delayed mortality effects were detected after insecticidal exposure; the format and dose used for clothianidin testing (another slow-acting insecticide [45]) were instead intended to measure acute toxicity within a 60-minute exposure period. Previous mathematical models using resistant mosquito colonies have suggested that sublethal insecticide treatment may still reduce vector lifespan and inhibit blood-feeding and host-seeking behaviors, thereby interrupting malaria transmission [46, 47]. Our observations are more compatible with reports from Burkina Faso, where different exposure regimens of wild, resistant _A. gambiae_ s.l. populations to deltamethrin LLINs did not induce any delayed mortality effects [47]. Further assessment of sublethal effects are warranted across additional field populations with differing resistance mechanisms, to clarify the impact of insecticidal exposure on the vectorial capacity of resistant mosquitoes.\n", - "\n", - "To date there is a paucity of data regarding the interactions between insecticide resistance and _Plasmodium_ development [48]. In the current study, _A. coluzzii_ that died after pyrethroid exposure were significantly more likely to be infected with malaria. This might be explained by elevated metabolic enzymes and/or prior pyrethroid exposure detrimentally affecting parasite development [49], although it is important to note that we did not detect any significant differences between gene overexpression in malaria-infected versus noninfected _A. coluzzii_. Alternatively, our sampled population may have been physiologically older, as phenotypic resistance is known to decline with age [50]. It is impossible to distinguish between these hypotheses using field-collected vector populations; the experimental design used in this study had other biological and technical limitations, which have been described in detail elsewhere [23, 37]\n", - "\n", - "In conclusion, as new combination and bitreated vector control interventions become available for deployment, contemporary resistance information is crucial for the rationale design of management strategies and to mitigate further selection for particular resistance mechanisms. The results from the current study contribute to growing insecticide resistance data for Cote d'Ivoire, demonstrating a loss of bioefficacy of pyrethroid LLINs and supporting the use of new active ingredients (clothianidin, chlorfenapyr, and PBO). Study findings also highlight the need for expanded insecticide resistance surveillance, including monitoring of metabolic resistance mechanisms, in conjunction with studies to better characterize the impact of sublethal insecticide exposure on vectorial capacity and the interaction between insecticide resistance and _Plasmodium_ parasite development.\n", - "\n", - "Figure 5: Metabolic gene expression in resistant versus susceptible field _Anopheles coluzzi_, which either died or survived after insecticidal exposure. Error bars represent 95% confidence intervals.\n", - "\n", - "header: Mosquito Collections and Species Identification: LIII Efficacy\n", - "\n", - "A total of 2666 field-caught _A. gambiae_ s.l were used to assess the bioefficacy of conventional pyrethroid-treated LLINs (PermaNet 2.0 and PermaNet 3.0 side panels) and next-generation synergisti LLINs (PermaNet 3.0 roof panels), compared with an untreated control (Figure 1). Overall, _A. gambiae_ s.l. knockdown and mortality rates with deltamethrin LLINs were very low and largely equivalent to those for the untreated control net (Figure 1). At 60 minutes, average mosquito knockdown rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels were 1.56% (95% confidence interval [CI], 1.13%-1.99%), 0.54% (.42%-6.5%), and 1.75% (1.49%-2.0%), respectively. By contrast, average mosquito knockdown rates for PBO-containing PermaNet 3.0 roof panels were significantly higher (79.8% [95% CI, 79.07%-80.48%]; kh2 = 705.51, 968.65, and 937.33 [_P_ <.001] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1).\n", - "\n", - "At 24 hours, mortality rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels remained low (6.11% [95% CI, 4.71%-7.51%], 5.44% [4.58%-6.29%], and 3.66% [3.12%-4.19%], respectively), while those with PermaNet 3.0 roof panels increased only marginally but still remained significantly higher (83.81% [95% CI, 83.15%-84.47%];\n", - "\n", - "Figure 1.: Bioefficacy of different unwashed long-lasting insecticidal nets (LLINs) against field-caught _Angabies gambiae_ sensu tatto. Mean knockdown and mortality rates are shown with 95% confidence intervals, at 60 minutes and 24 hours, respectively, after 3-minute exposure to PermaNet 2.0 (deltamethrin only), side panels of PermaNet 3.0 (deltamethrin only, roof panels of PermaNet 3.0 (pieronym) butoxide plus deltamethrin), and an untreated control net. Knockdown or mortality rates in the same time period for each treatment sharing a letter do not differ significantly (_P_ >.05). Green lines at 275% and 295% knockdown represent minimal and optimal effectiveness, respectively, at 60 minutes. Red lines at 250% and >80% mortality represent minimal and optimal LLIN effectiveness at 24 hours, respectively, as defined by the World Health Organization [21].\n", - "\n", - "\n", - "\\(\\chi^{2}\\) = 727.96, 914.61, and 963.09 [\\(P\\) <.001 for all] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1). PermaNet 3.0 roof panels reached minimal effectiveness (knockdown, >=75%) 60 minutes after exposure and optimal effectiveness (mortality rate, >=80%) at 24 hours. Neither of the deltamethrin-only LLINS reached either effectiveness threshold at any time point.\n", - "\n", - "header: Mosquito Processing, Identification of _A. gambiae_ s.l. Species Complex\n", - "\n", - "Members, and _Plasmodium falciparum_ Detection\n", - "\n", - "A subsample of field-caught mosquitoes tested in bioassays was selected for molecular analysis (n = 912). Approximately equal numbers of specimens were chosen to represent phenotypically \"susceptible\" or \"resistant\" mosquitoes for each LLIN type or insecticide dose, selected across different replicates and testing days to capture as much population-level variation as possible. RNA was extracted from individual whole-body mosquitoes according to standard protocols [23]. Field _A. gambiae_ s.l. were identified to species level [25] and were screened for the presence of _Plasmodium falciparum_[26].\n", - "\n", - "header: Methods\n", - "\n", - "The study protocol was approved by the Comite National d'Ethique des Sciences de la Vie et de la Sante (no. 069-19/MSHP/CNESVS-kp) and the London School of Hygiene and Tropical Medicine (nos. 16782 and 16899). Study activities were conducted in the village of Aboude, rural Agboville, Agneby-Tiassa region, southeast Cote d'Ivoire (5'55'N, 4'13'W), selected because of its high mosquito densities and malaria prevalence [1]. Adult mosquitoes were collected using human landing catches, inside and outside households from 6 pm to 6 am, for a total of 190 person/trap/nights between 5 and 26 July 2019. Unfed mosquitoes, morphologically identified as _A. gambiae_ s.l. [20], were tested in bioassays that same day, after a brief recovery period; blood-fed mosquitoes were first held for 2-3 days to allow for blood-meal digestion.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Conclusions\n", - "\n", - "Study findings raise concerns regarding the operational failure of standard LLINs and support the urgent deployment of vector control interventions incorporating piperonyl butoxide, chlorfenapyr, or clothianidin in areas of high resistance intensity in Cote d'Ivoire.\n", - "\n", - "header: Insecticide Resistance Intensity\n", - "\n", - "A total of 2251 field-caught _A. gambiae_ s.l. were tested in resistance bioassays. Intense pyrethroid resistance was evident with more than 25% of mosquitoes surviving exposure to 10 times the dose of insecticide required to kill a susceptible population (Figure 2A). At the diagnostic dose, mosquito mortality rates did not exceed 25% for any pyrethroid tested, which was consistent with the high survival rates observed during cone bioassays using conventional LLINs (Figure 1). In general, levels of resistance to alpha-cypermethrin, deltamethrin, and permethrin were not significantly different at each insecticide concentration tested (Figure 2A).\n", - "\n", - "By comparison, carbamate tolerance was low, with a mean knockdown of 94.53% (95% CI, 92.11%-96.95%; n = 101) after 30 minutes of exposure to the diagnostic dose of bendiocarb. Similarly, high levels of susceptibility to new insecticides clothianidin and chlorfenapyr were observed, with mean mortality rates of 94.11% (95% CI, 93.43%-94.80%; n = 102) and 95.54% (94.71%-96.36%; n = 112), respectively, 72 hours after exposure to the tentative diagnostic doses. Preexposure to PBO increased the average _A. gambiae_ s.l. mortality rate significantly, from 14.56% (95% CI, 6.24%-22.88%) to 72.73% (64.81%-79.43%) and from 44.66% (34.86%-54.46%) to 94.17% (91.12%-97.22%) after exposure to 1 or 2 times the diagnostic dose of deltamethrin (Figure 2B).\n", - "\n", - "header: Malaria Prevalence\n", - "\n", - "Of the 912 _A. gambiae_ s.l. mosquitoes assayed, 31 tested positive for _P. falciparum_ (3.4%). For PCR-confirmed _A. coluzzii_, _P. falciparum_ prevalence was 3.50% (28 of 805); the remaining 3 infections were in _A. gambiae_ s.s. (4%; 3 of 75). By resistance phenotype, susceptible _A. coluzzii_ (ie, those that died after pyrethroid exposure) were more likely to be infected with malaria, compared with resistant mosquitoes (kh2 = 4.6987; \\(P\\) =.03); infection rates were 5.94% (13 of 219) and 2.49% (10 of 401), respectively.\n", - "\n", - "header: Table 1. Cox Proportional Hazard Model to Determine Impact of Long-Lasting Insecticidal Net/Insecticidal Exposure on Survival of Field-Caught Anopheles gambiae Sensu Lato 72 Hours After Exposure\n", - "footer: Abbreviations: CI, confidence interval; HRR, hazard rate ratio (ratio of hazard rate for control/reference group to hazard rate for treatment group; PBO, piperonyl butoxide.\n", - "a Immediate mortality rates after long-lasting insecticidal net (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. \n", - "b Significance cutoff level defined as α = .05.\n", - "\n", - "\n", - "columns: ['Insecticide Exposure', 'No. (No. of Events)', 'HRR (95% CI)', 'P Valueb']\n", - "\n", - "{\"0\":{\"Insecticide Exposure\":\"Untreated netting\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"1\":{\"Insecticide Exposure\":\"PermaNet 2.0 (deltamethrin only)\",\"No. (No. of Events)\":\"1135 (1047)\",\"HRR (95% CI)\":\"1.095 (.968\\u20131.239)\",\"P Valueb\":\".15\"},\"2\":{\"Insecticide Exposure\":\"PermaNet 3.0 side panels (deltamethrin only)\",\"No. (No. of Events)\":\"1157 (1088)\",\"HRR (95% CI)\":\"0.9664 (.9092\\u20131.027)\",\"P Valueb\":\".27\"},\"3\":{\"Insecticide Exposure\":\"PermaNet 3.0 roof panels (PBO + deltamethrin)\",\"No. (No. of Events)\":\"563 (533)\",\"HRR (95% CI)\":\"1.007 (.939\\u20131.079)\",\"P Valueb\":\".85\"},\"4\":{\"Insecticide Exposure\":\"Acetone control\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"5\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 1\\u00d7\",\"No. (No. of Events)\":\"676 (641)\",\"HRR (95% CI)\":\"1.006 (.9696\\u20131.043)\",\"P Valueb\":\".77\"},\"6\":{\"Insecticide Exposure\":\"Deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"683 (645)\",\"HRR (95% CI)\":\"0.9942 (.9539\\u20131.036)\",\"P Valueb\":\".78\"},\"7\":{\"Insecticide Exposure\":\"Permethrin 1\\u00d7\",\"No. (No. of Events)\":\"693 (661)\",\"HRR (95% CI)\":\"1.015 (.9698\\u20131.062)\",\"P Valueb\":\".52\"},\"8\":{\"Insecticide Exposure\":\"Clothianidin 1\\u00d7\",\"No. (No. of Events)\":\"698 (581)\",\"HRR (95% CI)\":\"1.208 (.9227\\u20131.581)\",\"P Valueb\":\".17\"},\"9\":{\"Insecticide Exposure\":\"Chlorfenapyr 1\\u00d7\",\"No. (No. of Events)\":\"708 (580)\",\"HRR (95% CI)\":\"1.692 (1.086\\u20132.637)\",\"P Valueb\":\".02\"},\"10\":{\"Insecticide Exposure\":\"PBO + deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"630 (577)\",\"HRR (95% CI)\":\"0.9662 (.2411\\u20133.873)\",\"P Valueb\":\".96\"},\"11\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"633 (601)\",\"HRR (95% CI)\":\"0.9951 (.9407\\u20131.053)\",\"P Valueb\":\".86\"},\"12\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"652 (610)\",\"HRR (95% CI)\":\"0.9942 (.9393\\u20131.052)\",\"P Valueb\":\".84\"},\"13\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"636 (583)\",\"HRR (95% CI)\":\"0.9931 (.8638\\u20131.142)\",\"P Valueb\":\".92\"},\"14\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"624 (587)\",\"HRR (95% CI)\":\"0.9951 (.917\\u20131.08)\",\"P Valueb\":\".91\"},\"15\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"623 (588)\",\"HRR (95% CI)\":\"0.9943 (.9072\\u20131.09)\",\"P Valueb\":\".90\"},\"16\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"656 (603)\",\"HRR (95% CI)\":\"1.026 (.9509\\u20131.107)\",\"P Valueb\":\".51\"},\"17\":{\"Insecticide Exposure\":\"1\\u00d7 Insecticide dose\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"18\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"117 (92)\",\"HRR (95% CI)\":\"1.016 (.9069\\u20131.138)\",\"P Valueb\":\".78\"},\"19\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"108 (78)\",\"HRR (95% CI)\":\"1.007 (.9403\\u20131.078)\",\"P Valueb\":\".84\"},\"20\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"143 (105)\",\"HRR (95% CI)\":\"1.0 (.9035\\u20131.107)\",\"P Valueb\":\">.99\"},\"21\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"114 (83)\",\"HRR (95% CI)\":\"1.0 (.9363\\u20131.068)\",\"P Valueb\":\">.99\"},\"22\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"137 (94)\",\"HRR (95% CI)\":\"1.022 (.8528\\u20131.225)\",\"P Valueb\":\".81\"},\"23\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"157 (114)\",\"HRR (95% CI)\":\"0.9952 (.9491\\u20131.044)\",\"P Valueb\":\".84\"}}\n", - "\n", - "header: Notes\n", - "\n", - "_Acknowledgments._ The authors express their sincere thanks to M. Didier Dobri, Centre Suisse de Recherches Scientifiques en Cote d'Ivoire (CSRS) laboratory technician, and Fidele Assamoa for their support in mosquito collection and rearing, the chief and population of the village of Aboude (Agboville), and the entomology fieldworkers of CSRS. They also thank Vestergaard for supplying the long-lasting insecticidal nets tested in this study.\n", - "\n", - "_Author contributions._ A. M., E. C., M. K., T. W., and L. A. M. designed the study. A. M., E. C., C. E., and B. P. led the entomology field activities and participated in data collection. A. M., E. C., C. L. J., T. W., and L. A. M. performed the molecular assays. A. M., E. C., M. K., C. E., C. L. J., B. P., S. R. I, T. W., and L. A. M. were responsible for data analysis and interpretation. L. A. M. drafted the manuscript, which was revised by all coauthors. All authors read and approved the final manuscript.\n", - "\n", - "_Disclaimer._ The findings and conclusions in this report are those of the authors and do not necessarily represent the official position of the Centers for Disease Control and Prevention.\n", - "\n", - "_Financial support._ This work was supported by the Sir Halley Stewart Trust (L.A.M.), the Wellcome Trust/Royal Society ([http://www.wellcome.ac.uk](http://www.wellcome.ac.uk) and [https://royalsociety.org](https://royalsociety.org); (101285/Z/13/Z to T.W.) and the US President's Malaria Initiative/Centers for Disease Control and Prevention (S.R.I.).\n", - "\n", - "_Potential conflicts of interest._ All authors: No reported conflicts. All authors have submitted the ICMJE Form for Disclosure of Potential Conflicts of Interest. Conflicts that the editors consider relevant to the content of the manuscript have been disclosed.\n", - "\n", - "header: Resistance Intensity and Synergist Bioassay Testing\n", - "\n", - "Centers for Disease Control and Prevention (CDC) resistance intensity bioassays were performed for 6 public health insecticides (pyrethroids: alpha-cypermethrin, deltamethrin, and permethrin; carbamate: bendiocarb; neonicotinoid: clothianidin; and pyrrole: chlorfenapyr) [22, 23]. The diagnostic doses of all insecticides were evaluated (including clothianidin [90 mg per bottle] [23] and chlorfenapyr [100 mg per bottle]) and 2, 5, and 10 times the diagnostic dose of pyrethroid insecticides were also used. Per test, knockdown was recorded at 15-minute intervals for 30 minutes (pyrethroids and bendiocarb) or 60 minutes (dothianidin and chlorfenapyr) of insecticide exposure. One-hour PBO preexposures were performed using WHO tube assays [24], before deltamethrin CDC bottle bioassay testing [22].\n", - "\n", - "WHO cone and CDC resistance intensity bioassay data were interpreted according to the WHO criteria [21, 22]. Mosquitoes that died after exposure to a LLIN or 1x insecticide dose were stored at -20degC in RNAlater (Thermo Fisher Scientific) and were considered \"susceptible\" for genotypic analysis. Surviving mosquitoes were held and scored for mortality rate after 24, 48 and 72 hours to observe delayed mortality effects. Kaplan-Meier curves were used to visualize survival data, and Cox regression was used to compare postexposure survival. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. Surviving mosquitoes at 72 hours were stored at -20degC in RNAlater and were considered \"resistant\" for genotypic analysis.\n", - "\n", - "header: Mosquito Survival After Insecticidal Exposure\n", - "\n", - "All _A. gambiae_ s.l. tested in LLIN bioefficacy or resistance intensity bioassays, were held for 72 hours, to assess any impact of insecticide or net exposure on delayed mortality rate. For LLIN bioassays, there was little evidence for any reduction in survival during this holding period (Cox regression \\(P\\) =.15,.27, and.85, respectively, for comparisons between untreated control and PermaNet 2.0, PermaNet 3.0 side panels, and PermaNet 3.0 roof panels) (Table 1 and Figure 3A). Exposure to the diagnostic doses of all insecticides in CDC bottle bioassays did not induce significant delayed mortality effects over 72 hours (Cox regression \\(P\\) >.05 for all insecticides compared with control, with the exception of chlorfenapyr [_P_ =.02]) (Table 1 and Figure 3B). This phenomenon was also observed at increasing pyrethroid doses\n", - "\n", - "Figure 2: _A._ Resistance intensity of field-caught _Anaopheles gambiae_ sensu late (s.l.) after exposure to 1, 2, 5, or 10 times the diagnostic dose of pyrethroid insecticides. Mean knockdown/acute toxicity rates after 30-minute exposure are shown with 95% confidence intervals (Cls). Knockdown or mortality rates at the same dose per insecticide sharing a letter do not differ significantly (_P_ >.05). Mortality rates <00% (_lower and line_) represent confirmed resistance at the diagnostic dose (1a), and rates <00% (_upper and line_) indicate moderate to high-intensity resistance and high-intensity resistance at 5° and 10x, respectively, as defined by the World Health Organization [24]. _B._ Restoration of deltamethrin susceptibility of field-caught _A. gambiae_ s.l. after presopause to piperonyl butoxide (PBO). Mean knockdown/acute toxicity after 30-minute exposure to 1 or 2 times the diagnostic dose of deltamethrin with 95% Cls. Knockdown/mortality rates do not differ significantly between pyrethroid only and synergist plus pyrethroid sharing a letter (_P_ >.05). Red line at 90% mortality rate represents metabolic resistance mechanisms partially involved [24].\n", - "\n", - "\n", - "(Cox regression \\(P\\) >.05 for alpha-cypermethrin, deltamethrin, and permethrin 5x and 10x vs either the control or diagnostic dose) (Table 1; Figure 3C and 3D).\n", - "\n", - "header: RESULTS\n", - "\n", - "A total of 4917 female _A. gambiae_ s.l. mosquitoes were collected in Agboville, Cote d'Ivoire. Of those, 912, which were previously tested in either LLIN bioefficacy (n = 384) or resistance intensity (n = 528) bioassays, were selected for molecular species identification. Of the 912 selected, 805 (88.3%) were determined to be _A. coluzzii_, 75 (8.2%) were _A. gambiae_ s.s., and 22 (2.4%) were _A. gambiae_-_A. coluzzii_ hybrids; 10 individuals did not amplify.\n", - "\n", - "header: Results\n", - "\n", - "Phenotypic resistance was intense: >25% of mosquitoes survived exposure to 10 times the doses of pyrethroids required to kill susceptible populations. Similarly, the 24-hour mortality rate with deltamethrin-only LLINs was very low and not significantly different from that with an untreated net. Sublethal pyrethroid exposure did not induce significant delayed vector mortality effects 72 hours later. In contrast, LLINs containing the synergist piperonyl butoxide, or new insecticides dothianidin and chlorfenapyr, were highly toxic to _A. coluzzii_. Pyrethroid-susceptible _A. coluzzii_ were significantly more likely to be infected with malaria, compared with those that survived insecticidal exposure. Pyrethroid resistance was associated with significant overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_.\n", - "\n", - "header: Characterization of Insecticide Resistance Mechanisms: Target-Site Mutations\n", - "\n", - "The same cohort of field mosquitoes (n = 912) was tested for the presence of L1014F _kdr_[27] and N1575Y mutations [28]. A subsample of mosquitoes (n = 49) that were exposed to bendiocarb, clothianidin or chlorfenapyr was tested for the presence of the G119S _Ace-1_ mutation [29]. Pearson kh2 and Fisher exact tests (when sample sizes were small) were used to investigate the statistical association between resistance status, allele frequencies, and deviations from Hardy-Weinberg equilibrium.\n", - "\n", - "header: Study Area and Mosquito Collections: WHO Cone Bioassay Testing\n", - "\n", - "Two types of LLIN were evaluated in this study. PermaNet 2.0 is a conventional LLIN treated with deltamethrin only (1.4 g/kg +- 25%) and PermaNet 3.0 is a piperonyl butoxide (PBO) synergism LILIN, consisting of a roof containing PBO (25g/kg) and deltamethrin (4 g/kg +- 25%) and side panels containing deltamethrin only (2.8 g/kg +- 25%). WHO cone bioassays were used to test the susceptibility of _A. gambiae_ s.l. exposed to unwashed PermaNet 2.0, PermaNet 3.0 roof panels, and PermaNet 3.0 side panels [21]. To control for potential variation in insecticide/synergist content, each of 5 LLINs per type was cut into 19 pieces, measuring 30 x 30 cm, with each piece tested a maximum of 3 times.\n", - "\n", - "header: Abstract\n", - "\n", - "Association of Reduced Long-Lasting Insecticidal Net Efficacy and Pyrethroid Insecticide Resistance With Overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_ in Populations of _Anopheles coluzzii_ From Southeast Cote d'Ivoire\n", - "\n", - "Anne Meiwald,\\({}^{1,2}\\) Emma Clark,\\({}^{1,2}\\) Mejica Kristan,\\({}^{1}\\) Constant Edi,\\({}^{2}\\) Claire L Jeffries,\\({}^{1}\\) Bethanie Pelloquin,\\({}^{1}\\) Seth R. Irish,\\({}^{2}\\) Thomas Walker,\\({}^{1}\\) and Louisa A. Messenger\\({}^{1,0}\\)\n", - "\n", - "\n", - "Resistance to major public health insecticides in Cote d'Ivoire has intensified and now threatens the long-term effectiveness of malaria vector control interventions.\n", - "\n", - "header: Keywords\n", - "\n", - "_Anopheles coluzzii_; insecticide resistance; _Plasmodium falciparum_; long-lasting insecticidal nets; Cote d'Ivoire; PBO; chlorfenapyr; clothianidin; _CYP6P4_; _CYP6P3_; _CYP6Z1_\n", - "\n", - "In Cote d'Ivoire, malaria is a serious public health problem with the entire population of about 26.2 million people at risk, and disease prevalence reaching as high as 63% in the southwest region [1]. Control of _Anopheles gambiae_ sensu lato (s.l.), the major malaria vector species group, has been through the efforts of the National Malaria Control Programme, which has distributed insecticide-treated nets as the primary vector control intervention. Indoor residual spraying and larviciding in high transmission areas have been recommended as complementary strategies; implementation of the former commenced in late 2020 [2]. Estimates of net coverage across the country remain low, with the proportion of households with at least >=1 insecticide-treated net per 2 persons rising from 31% in 2012 to 47% in 2016, and insecticide-treated net use stagnating at 40% of households reporting sleeping under a net the previous night in both survey years [2]. The most recent universal net campaigns in Cote d'Ivoire in 2017-2018 issued conventional, pyrethroid (deltamethrin) long-lasting insecticidal nets (LLINs), aiming to achieve 90% coverage and 80% use [2]. However, country-wide, multiclass insecticide resistance among populations of _A. gambiae_ s.l. is a growing cause for concern because of potential operational failure of current vector control strategies, both locally and across the sub-Saharan region [2, 3].\n", - "\n", - "Resistance to pyrethroid and carbamate insecticides in _Anopheles_ mosquitoes was first reported from the central \n", - "region of Cote d'Ivoire in the early 1990s [4, 5, 6, 7]. Local resistance to the major insecticide classes recommended by the World Health Organization (WHO) for adult mosquito control--pyrethroids, carbamates, organophosphates, and organochlorines--evolved rapidly [8, 9, 10] and has been increasing in intensity, driven largely by selective pressures imposed by contemporaneous scale-up of public health vector control interventions (including those targeting malaria, trypanosomiasis, and onchocerciasis vectors) and use of agricultural pesticides [11, 12, 13, 14, 7]. This escalation in resistance has now begun to compromise the insecticidal efficacy and community-wide impact of conventional, pyrethroid LLINs in Cote d'Ivoire [14, 15], although some levels of personal protection may still remain [15, 16, 17].\n", - "\n", - "Among vector populations across Cote d'Ivoire, the L1014F _kdr_ mutation is pervasive and has been implicated in some longitudinal trends in decreasing DDT and pyrethroid susceptibility [7, 11]; L1014S _kdr_ and N1575Y resistance mutations have also been detected but at much lower frequencies [18]. Extreme carbamate (bendiocarb) resistance and pyrethroid cross-resistance in some _A. gambiae_ sensu stricto (s.s.) populations are mediated by overexpression of _CYP6P3_ and _CYP6M2_ and duplication of the G119S _Ace-1_ mutation [19]. To support and safeguard future malaria control efforts in Cote d'Ivoire, the current study evaluated the efficacy of conventional and next-generation LLINs for prospective distribution, determined current insecticide resistance profiles of _A. gambiae_ s.l. (principally _Anopheles coluzzi_), and characterized underlying molecular and metabolic resistance mechanisms.\n", - "\n", - "header: Metabolic Resistance Mechanisms\n", - "\n", - "Comparison of metabolic gene expression levels in field populations of _A. coluzzi_ and _A. gambiae s.s._ demonstrated significant up-regulation of _CYP6P4_ (fold change, 5.88 [95% CI, 5.19-44.06] for _A. coluzzi_ and 6.08 [5.43-50.64] for _A. gambiae_ s.s.), _CYP6Z1_ (4.04 [3.69-41.54] and 3.56 [3.24-36.25], respectively),\n", - "\n", - "Figure 3.: The longevity of field-caught _A. gambiae_ sensus into after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (_A_) and \\(x\\) (B, 5x [_O_], and 10× [_D_) the diagnostic dose of pyrethroid insecticides in Centres for Disease Control and Prevention resistance intensity assays. Kaplan-Meier survival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\n", - "\n", - "\n", - "and _CYP6P3_ (12.56 [11.40-12-3.83] and 13.85 [12.53-132.03]), relative to a susceptible laboratory colony, respectively (Figure 4). More modest overexpression of _CYP6P1_ and _GSTE2_ was observed (_CYP6P1_ fold changes, 1.18 [95% CI, 1.08-12.31] and 1.28 [1.17-14.40]; GSTE2, 0.56 [.48-3.32], and 0.67 [.58-4.29], for _A. coluzzi_ and _A. gambiae_ s.s., respectively) (Figure 4). The fold change levels did not differ significantly between the 2 species for any gene nor by malaria infection status in wild _A. coluzzi_. Comparison of metabolic gene expression in phenotyped field populations of _A. coluzzi_ revealed lower fold changes overall, but notably, increased overexpression of _CYP6P3_ in survivors of bendiocarb, deltamethrin, PBO plus deltamethrin, and permethrin (fold change, 3.91 [95% CI, 3.33-22.16], 2.21 [1.88-12.53], 2.64 [2.21-13.69], and 2.21 [1.99-20.03], respectively) (Figure 5).\n", - "\n", - "header: Target-Site Resistance Mutations\n", - "\n", - "L1014_F_kdr_ screening revealed that 92.2% (796/863) of _A. gambiae_ s.l. mosquitoes harbored the mutation; 71.5% (617 of 863) were homozygous, 20.7% (179 of 863) were heterozygous, 5.1% (44 of 863) were wild type, and 2.7% (23 of 863) did not amplify. For PCR-confirmed _A. coluzzii_, L1014F_kdr_ prevalence was 87.8% (707 of 805); 66.6% (536 of 805) were homozygous for the mutation, 21.2% (171 of 805) were heterozygous, 5.3% (43 of 805) were wild type, and 2.2% (18 of 805) did not amplify. For _A. coluzzii_, population-level L1014F_kdr_ allele frequency was 0.83, with evidence for significant deviations from Hardy-Weinberg equilibrium (kh2 = 29.124; \\(P\\) <.001). There was no significant association between L1014F_kdr_ frequency and the ability of _A. coluzzii_, to survive pyrethroid exposure, in either LLIN or resistance bioassays (kh2 = 2.0001 [_P_ =.16] and kh2 = 3.6998 [_P_ =.054], respectively). Similarly, there was no significant association between L1014F_kdr_ and the ability of _A. coluzzii_ to survive PBO preexposure and pyrethroid treatment, in either LLIN or resistance bioassays (kh2 = 0.0086; \\(P\\) =.93; Fisher exact test, \\(P\\) =.429, respectively).\n", - "\n", - "For PCR-confirmed _A. gambiae_ s.s., L1014F_kdr_ prevalence was 95.3% (61 of 64); 89.1% (57 of 64) were homozygous for the mutation, 6.3% (4 of 64) were heterozygous, none were wild type, and 4.7% (3 of 64) did not amplify. There was no significant association between L1014F_kdr_ frequency and ability of _A. gambiae_ s.s. to survive pyrethroid or PBO preexposure and pyrethroid treatment (in either LLIN or resistance bioassays), because all tested individuals harbored this mutation (n = 61). For _A. gambiae_ s.s., the population-level L1014F_kdr_ allele frequency was 0.97, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.070; \\(P\\) =.79).\n", - "\n", - "N1575Y screening revealed that 2.3% of _A. gambiae_ s.l. mosquitoes (21 of 912) harbored the mutation; all were\n", - "heterozygotes. N1575Y prevalence was 1.1% (9 of 805) and 16% (12 of 75) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 0.99% (9 of 912) did not amplify. There was no evidence for ongoing N1575Y selection in either species (kh2 = 0.026 [_P_ =.87] and kh2 = 0.62 [_P_ =.43] for _A. coluzzi_ and _A. gambiae_ s.s., respectively). For _A. coluzzi_, there was no significant association between N1575Y frequency and ability of mosquitoes to survive pyrethroid exposure, in LLIN or resistance bioassays (kh2 = 0.0001 [_P_ =.99] and kh2 = 0.3244 [_P_ =.57], respectively).\n", - "\n", - "G119S _Ace-1_ screening revealed that 55.1% of _A. gambiae_ s.l. mosquitoes (27 of 49) harbored the mutation; all were heterozygotes. G119S _Ace-1_ prevalence was 64.9% (24 of 37) and 27.3% (3 of 11) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 1 remaining _A. gambiae-A. coluzzi_ hybrid was wild type. For _A. coluzzi_, population-level G119S _Ace-1_ allele frequency was 0.32, with evidence of significant deviations from Hardy-Weinberg equilibrium (kh2 = 8.525; \\(P\\) =.004). For _A. gambiae_ s.s., population-level G119S _Ace-1_ allele frequency was 0.14, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.274; \\(P\\) =.60). For _A. coluzzi_, there was a significant association between G119S _Ace-1_ frequency and surviving bendiocarb exposure (Fisher exact test, \\(P\\) =.005).\n", - "\n", - "header: Discussion\n", - "\n", - "Cote d'Ivoire has hot spots with some of the highest levels of resistance of _Anopheles_ mosquitoes to public health insecticides worldwide, with potentially severe implications for sustaining gains in malaria control [31]. To safeguard malaria vector control efforts and inform the design of effective resistance management strategies, involving tactical deployment of differing indoor residual spraying and LLIN modalities, there needs to be a clear understanding of contemporary phenotypic and genotypic insecticide resistance.\n", - "\n", - "Our study detected intense pyrethroid resistance in southeast Cote d'Ivoire, as evidenced by high proportions of survivors, after exposure to 10 times the diagnostic doses of pyrethroids, as well as very low knockdown and 24-hour mortality rates for deltamethrin-only LLINs, equivalent to rates for an untreated net. These findings are largely in agreement with historical resistance profiles from this region [7, 10, 11] and indicate that conventional LLINs may no longer be operationally viable in areas of high pyrethroid resistance intensity. Previous phase II studies of pyrethroid-only LLINs in the central region of Cote d'Ivoire have demonstrated similarly poor efficacy with highly resistant _A. gambiae_ s.l. populations but argued for the retention of some degree of personal protection [15-17].\n", - "\n", - "Other observational cohorts have reported higher incidences of malaria among non-net users compared with users in areas of moderate to high pyrethroid resistance [17]. The extent of protective efficacy afforded by pyrethroid LLINs will likely reflect the strength of local vector resistance and levels of both net physical integrity and individual compliance [32, 33]; in Cote d'Ivoire, reported LLIN usage has been low, requiring additional behavioral interventions [2, 34]. Our findings of high mosquito mortality rates after exposure to clothianidin and chlorfenapyr and improved vector susceptibility with PBO treatment (on both LLINs and in resistance bioassays), are consistent with data from other sentinel sites across Cote d'Ivoire [16, 35, 36], and strongly support the deployment of vector control interventions incorporating these new active ingredients.\n", - "\n", - "Study results indicate that _A. coluzzi_ was the predominant local vector species during the rainy season, as observed previously [7], circulating sympatrically with smaller proportions of _A. gambiae_ s.s. These 2 vector species commonly cohabit but can be genetically distinct in terms of resistance mechanisms [37, 38] and can also differ in larval ecology, behavior, migration, and activation [39-41]. In general, resistance mechanisms in _A. coluzzi_ are less well characterized, compared with _A. gambiae_ s.s., in part because these vectors are morphologically\n", - "\n", - "Figure 4: Metabolic gene expression in field _Anopheles coluzzi_ and _Anopheles gambiae_ sensu stricto (s.s.) populations relative to a susceptible colony population. Error bars represent 95% confidence intervals. Statistically significant differences in expression levels relative to the susceptible colony are indicated as follows: *_P_ <.05; **_P_ <.01; ***_P_ <.001.\n", - "\n", - "\n", - "indistinguishable and few studies present data disaggregated by PCR-confirmed species.\n", - "\n", - "We observed several distinct features in our study, including, principally, evidence for ongoing selection of L1014F _kdr_ and G119S _Ace-1 in A. coluzzii_, which was absent in _A. gambiae_ s.s. and higher proportions of N1575Y in _A. gambiae_ s.s.; expression levels of metabolic genes were comparable between species. The lack of association between L1014F _kdr_ genotype and mosquito phenotype, coupled with the identification of 3 CYP450 enzymes (_CYP6P4, CYP6P3,_ and _CYP6Z1_) that were significantly overexpressed in field populations (some of which are known to metabolize pyrrethroids and next-generation LLIN insecticides [42, 43]), indicate a key role for metabolic resistance in this _A. coluzzii_ population. One notable difference in our data set, compared with previous findings in Agboville [7], was the finding of benodiocarb susceptibility. This may be attributable to small-scale spatial and longitudinal heterogeneity in resistance, which can be highly dynamic [37, 44], and/or phenotypic differences between vector species, complicating intervention choice for resistance management.\n", - "\n", - "With the exception of chlorfenapyr, which is known to be a slow-acting insecticide, no delayed mortality effects were detected after insecticidal exposure; the format and dose used for clothianidin testing (another slow-acting insecticide [45]) were instead intended to measure acute toxicity within a 60-minute exposure period. Previous mathematical models using resistant mosquito colonies have suggested that sublethal insecticide treatment may still reduce vector lifespan and inhibit blood-feeding and host-seeking behaviors, thereby interrupting malaria transmission [46, 47]. Our observations are more compatible with reports from Burkina Faso, where different exposure regimens of wild, resistant _A. gambiae_ s.l. populations to deltamethrin LLINs did not induce any delayed mortality effects [47]. Further assessment of sublethal effects are warranted across additional field populations with differing resistance mechanisms, to clarify the impact of insecticidal exposure on the vectorial capacity of resistant mosquitoes.\n", - "\n", - "To date there is a paucity of data regarding the interactions between insecticide resistance and _Plasmodium_ development [48]. In the current study, _A. coluzzii_ that died after pyrethroid exposure were significantly more likely to be infected with malaria. This might be explained by elevated metabolic enzymes and/or prior pyrethroid exposure detrimentally affecting parasite development [49], although it is important to note that we did not detect any significant differences between gene overexpression in malaria-infected versus noninfected _A. coluzzii_. Alternatively, our sampled population may have been physiologically older, as phenotypic resistance is known to decline with age [50]. It is impossible to distinguish between these hypotheses using field-collected vector populations; the experimental design used in this study had other biological and technical limitations, which have been described in detail elsewhere [23, 37]\n", - "\n", - "In conclusion, as new combination and bitreated vector control interventions become available for deployment, contemporary resistance information is crucial for the rationale design of management strategies and to mitigate further selection for particular resistance mechanisms. The results from the current study contribute to growing insecticide resistance data for Cote d'Ivoire, demonstrating a loss of bioefficacy of pyrethroid LLINs and supporting the use of new active ingredients (clothianidin, chlorfenapyr, and PBO). Study findings also highlight the need for expanded insecticide resistance surveillance, including monitoring of metabolic resistance mechanisms, in conjunction with studies to better characterize the impact of sublethal insecticide exposure on vectorial capacity and the interaction between insecticide resistance and _Plasmodium_ parasite development.\n", - "\n", - "Figure 5: Metabolic gene expression in resistant versus susceptible field _Anopheles coluzzi_, which either died or survived after insecticidal exposure. Error bars represent 95% confidence intervals.\n", - "\n", - "header: Characterization of Insecticide Resistance Mechanisms: Metabolic Gene Expression\n", - "\n", - "Relative expression of 5 metabolic genes (_CYP6P3_, _CYP6P4_, _CYP6Z1_, _CYP6P1_, and _GSTE2_) was measured in all field collected mosquitoes (n = 912), using multiplex quantitative real-time polymerase chain reaction (PCR) assays, relative to the housekeeping gene ribosomal protein S7 (_RPS7_) [30]. In addition, gene expression levels were measured in susceptible _A. coluzzii_ Nguosso colony mosquitoes (n = 48). All samples were run in technical triplicate. Expression level and fold change of each target gene between resistant and susceptible field samples, relative to the susceptible laboratory strain, were calculated using the 2-\\({}^{\\text{-}\\Delta\\text{ACT}}\\) method incorporating PCR efficiency, normalized relative to the endogenous control gene (_RPS7_).\n", - "\n", - "header: Mosquito Processing, Identification of _A. gambiae_ s.l. Species Complex\n", - "\n", - "Members, and _Plasmodium falciparum_ Detection\n", - "\n", - "A subsample of field-caught mosquitoes tested in bioassays was selected for molecular analysis (n = 912). Approximately equal numbers of specimens were chosen to represent phenotypically \"susceptible\" or \"resistant\" mosquitoes for each LLIN type or insecticide dose, selected across different replicates and testing days to capture as much population-level variation as possible. RNA was extracted from individual whole-body mosquitoes according to standard protocols [23]. Field _A. gambiae_ s.l. were identified to species level [25] and were screened for the presence of _Plasmodium falciparum_[26].\n", - "\n", - "header: Mosquito Collections and Species Identification: LIII Efficacy\n", - "\n", - "A total of 2666 field-caught _A. gambiae_ s.l were used to assess the bioefficacy of conventional pyrethroid-treated LLINs (PermaNet 2.0 and PermaNet 3.0 side panels) and next-generation synergisti LLINs (PermaNet 3.0 roof panels), compared with an untreated control (Figure 1). Overall, _A. gambiae_ s.l. knockdown and mortality rates with deltamethrin LLINs were very low and largely equivalent to those for the untreated control net (Figure 1). At 60 minutes, average mosquito knockdown rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels were 1.56% (95% confidence interval [CI], 1.13%-1.99%), 0.54% (.42%-6.5%), and 1.75% (1.49%-2.0%), respectively. By contrast, average mosquito knockdown rates for PBO-containing PermaNet 3.0 roof panels were significantly higher (79.8% [95% CI, 79.07%-80.48%]; kh2 = 705.51, 968.65, and 937.33 [_P_ <.001] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1).\n", - "\n", - "At 24 hours, mortality rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels remained low (6.11% [95% CI, 4.71%-7.51%], 5.44% [4.58%-6.29%], and 3.66% [3.12%-4.19%], respectively), while those with PermaNet 3.0 roof panels increased only marginally but still remained significantly higher (83.81% [95% CI, 83.15%-84.47%];\n", - "\n", - "Figure 1.: Bioefficacy of different unwashed long-lasting insecticidal nets (LLINs) against field-caught _Angabies gambiae_ sensu tatto. Mean knockdown and mortality rates are shown with 95% confidence intervals, at 60 minutes and 24 hours, respectively, after 3-minute exposure to PermaNet 2.0 (deltamethrin only), side panels of PermaNet 3.0 (deltamethrin only, roof panels of PermaNet 3.0 (pieronym) butoxide plus deltamethrin), and an untreated control net. Knockdown or mortality rates in the same time period for each treatment sharing a letter do not differ significantly (_P_ >.05). Green lines at 275% and 295% knockdown represent minimal and optimal effectiveness, respectively, at 60 minutes. Red lines at 250% and >80% mortality represent minimal and optimal LLIN effectiveness at 24 hours, respectively, as defined by the World Health Organization [21].\n", - "\n", - "\n", - "\\(\\chi^{2}\\) = 727.96, 914.61, and 963.09 [\\(P\\) <.001 for all] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1). PermaNet 3.0 roof panels reached minimal effectiveness (knockdown, >=75%) 60 minutes after exposure and optimal effectiveness (mortality rate, >=80%) at 24 hours. Neither of the deltamethrin-only LLINS reached either effectiveness threshold at any time point.\n", - "\n", - "header: Methods\n", - "\n", - "The study protocol was approved by the Comite National d'Ethique des Sciences de la Vie et de la Sante (no. 069-19/MSHP/CNESVS-kp) and the London School of Hygiene and Tropical Medicine (nos. 16782 and 16899). Study activities were conducted in the village of Aboude, rural Agboville, Agneby-Tiassa region, southeast Cote d'Ivoire (5'55'N, 4'13'W), selected because of its high mosquito densities and malaria prevalence [1]. Adult mosquitoes were collected using human landing catches, inside and outside households from 6 pm to 6 am, for a total of 190 person/trap/nights between 5 and 26 July 2019. Unfed mosquitoes, morphologically identified as _A. gambiae_ s.l. [20], were tested in bioassays that same day, after a brief recovery period; blood-fed mosquitoes were first held for 2-3 days to allow for blood-meal digestion.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Notes\n", - "\n", - "_Acknowledgments._ The authors express their sincere thanks to M. Didier Dobri, Centre Suisse de Recherches Scientifiques en Cote d'Ivoire (CSRS) laboratory technician, and Fidele Assamoa for their support in mosquito collection and rearing, the chief and population of the village of Aboude (Agboville), and the entomology fieldworkers of CSRS. They also thank Vestergaard for supplying the long-lasting insecticidal nets tested in this study.\n", - "\n", - "_Author contributions._ A. M., E. C., M. K., T. W., and L. A. M. designed the study. A. M., E. C., C. E., and B. P. led the entomology field activities and participated in data collection. A. M., E. C., C. L. J., T. W., and L. A. M. performed the molecular assays. A. M., E. C., M. K., C. E., C. L. J., B. P., S. R. I, T. W., and L. A. M. were responsible for data analysis and interpretation. L. A. M. drafted the manuscript, which was revised by all coauthors. All authors read and approved the final manuscript.\n", - "\n", - "_Disclaimer._ The findings and conclusions in this report are those of the authors and do not necessarily represent the official position of the Centers for Disease Control and Prevention.\n", - "\n", - "_Financial support._ This work was supported by the Sir Halley Stewart Trust (L.A.M.), the Wellcome Trust/Royal Society ([http://www.wellcome.ac.uk](http://www.wellcome.ac.uk) and [https://royalsociety.org](https://royalsociety.org); (101285/Z/13/Z to T.W.) and the US President's Malaria Initiative/Centers for Disease Control and Prevention (S.R.I.).\n", - "\n", - "_Potential conflicts of interest._ All authors: No reported conflicts. All authors have submitted the ICMJE Form for Disclosure of Potential Conflicts of Interest. Conflicts that the editors consider relevant to the content of the manuscript have been disclosed.\n", - "\n", - "header: Resistance Intensity and Synergist Bioassay Testing\n", - "\n", - "Centers for Disease Control and Prevention (CDC) resistance intensity bioassays were performed for 6 public health insecticides (pyrethroids: alpha-cypermethrin, deltamethrin, and permethrin; carbamate: bendiocarb; neonicotinoid: clothianidin; and pyrrole: chlorfenapyr) [22, 23]. The diagnostic doses of all insecticides were evaluated (including clothianidin [90 mg per bottle] [23] and chlorfenapyr [100 mg per bottle]) and 2, 5, and 10 times the diagnostic dose of pyrethroid insecticides were also used. Per test, knockdown was recorded at 15-minute intervals for 30 minutes (pyrethroids and bendiocarb) or 60 minutes (dothianidin and chlorfenapyr) of insecticide exposure. One-hour PBO preexposures were performed using WHO tube assays [24], before deltamethrin CDC bottle bioassay testing [22].\n", - "\n", - "WHO cone and CDC resistance intensity bioassay data were interpreted according to the WHO criteria [21, 22]. Mosquitoes that died after exposure to a LLIN or 1x insecticide dose were stored at -20degC in RNAlater (Thermo Fisher Scientific) and were considered \"susceptible\" for genotypic analysis. Surviving mosquitoes were held and scored for mortality rate after 24, 48 and 72 hours to observe delayed mortality effects. Kaplan-Meier curves were used to visualize survival data, and Cox regression was used to compare postexposure survival. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. Surviving mosquitoes at 72 hours were stored at -20degC in RNAlater and were considered \"resistant\" for genotypic analysis.\n", - "\n", - "header: Conclusions\n", - "\n", - "Study findings raise concerns regarding the operational failure of standard LLINs and support the urgent deployment of vector control interventions incorporating piperonyl butoxide, chlorfenapyr, or clothianidin in areas of high resistance intensity in Cote d'Ivoire.\n", - "\n", - "header: Table 1. Cox Proportional Hazard Model to Determine Impact of Long-Lasting Insecticidal Net/Insecticidal Exposure on Survival of Field-Caught Anopheles gambiae Sensu Lato 72 Hours After Exposure\n", - "footer: Abbreviations: CI, confidence interval; HRR, hazard rate ratio (ratio of hazard rate for control/reference group to hazard rate for treatment group; PBO, piperonyl butoxide.\n", - "a Immediate mortality rates after long-lasting insecticidal net (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. \n", - "b Significance cutoff level defined as α = .05.\n", - "\n", - "\n", - "columns: ['Insecticide Exposure', 'No. (No. of Events)', 'HRR (95% CI)', 'P Valueb']\n", - "\n", - "{\"0\":{\"Insecticide Exposure\":\"Untreated netting\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"1\":{\"Insecticide Exposure\":\"PermaNet 2.0 (deltamethrin only)\",\"No. (No. of Events)\":\"1135 (1047)\",\"HRR (95% CI)\":\"1.095 (.968\\u20131.239)\",\"P Valueb\":\".15\"},\"2\":{\"Insecticide Exposure\":\"PermaNet 3.0 side panels (deltamethrin only)\",\"No. (No. of Events)\":\"1157 (1088)\",\"HRR (95% CI)\":\"0.9664 (.9092\\u20131.027)\",\"P Valueb\":\".27\"},\"3\":{\"Insecticide Exposure\":\"PermaNet 3.0 roof panels (PBO + deltamethrin)\",\"No. (No. of Events)\":\"563 (533)\",\"HRR (95% CI)\":\"1.007 (.939\\u20131.079)\",\"P Valueb\":\".85\"},\"4\":{\"Insecticide Exposure\":\"Acetone control\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"5\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 1\\u00d7\",\"No. (No. of Events)\":\"676 (641)\",\"HRR (95% CI)\":\"1.006 (.9696\\u20131.043)\",\"P Valueb\":\".77\"},\"6\":{\"Insecticide Exposure\":\"Deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"683 (645)\",\"HRR (95% CI)\":\"0.9942 (.9539\\u20131.036)\",\"P Valueb\":\".78\"},\"7\":{\"Insecticide Exposure\":\"Permethrin 1\\u00d7\",\"No. (No. of Events)\":\"693 (661)\",\"HRR (95% CI)\":\"1.015 (.9698\\u20131.062)\",\"P Valueb\":\".52\"},\"8\":{\"Insecticide Exposure\":\"Clothianidin 1\\u00d7\",\"No. (No. of Events)\":\"698 (581)\",\"HRR (95% CI)\":\"1.208 (.9227\\u20131.581)\",\"P Valueb\":\".17\"},\"9\":{\"Insecticide Exposure\":\"Chlorfenapyr 1\\u00d7\",\"No. (No. of Events)\":\"708 (580)\",\"HRR (95% CI)\":\"1.692 (1.086\\u20132.637)\",\"P Valueb\":\".02\"},\"10\":{\"Insecticide Exposure\":\"PBO + deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"630 (577)\",\"HRR (95% CI)\":\"0.9662 (.2411\\u20133.873)\",\"P Valueb\":\".96\"},\"11\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"633 (601)\",\"HRR (95% CI)\":\"0.9951 (.9407\\u20131.053)\",\"P Valueb\":\".86\"},\"12\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"652 (610)\",\"HRR (95% CI)\":\"0.9942 (.9393\\u20131.052)\",\"P Valueb\":\".84\"},\"13\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"636 (583)\",\"HRR (95% CI)\":\"0.9931 (.8638\\u20131.142)\",\"P Valueb\":\".92\"},\"14\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"624 (587)\",\"HRR (95% CI)\":\"0.9951 (.917\\u20131.08)\",\"P Valueb\":\".91\"},\"15\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"623 (588)\",\"HRR (95% CI)\":\"0.9943 (.9072\\u20131.09)\",\"P Valueb\":\".90\"},\"16\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"656 (603)\",\"HRR (95% CI)\":\"1.026 (.9509\\u20131.107)\",\"P Valueb\":\".51\"},\"17\":{\"Insecticide Exposure\":\"1\\u00d7 Insecticide dose\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"18\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"117 (92)\",\"HRR (95% CI)\":\"1.016 (.9069\\u20131.138)\",\"P Valueb\":\".78\"},\"19\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"108 (78)\",\"HRR (95% CI)\":\"1.007 (.9403\\u20131.078)\",\"P Valueb\":\".84\"},\"20\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"143 (105)\",\"HRR (95% CI)\":\"1.0 (.9035\\u20131.107)\",\"P Valueb\":\">.99\"},\"21\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"114 (83)\",\"HRR (95% CI)\":\"1.0 (.9363\\u20131.068)\",\"P Valueb\":\">.99\"},\"22\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"137 (94)\",\"HRR (95% CI)\":\"1.022 (.8528\\u20131.225)\",\"P Valueb\":\".81\"},\"23\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"157 (114)\",\"HRR (95% CI)\":\"0.9952 (.9491\\u20131.044)\",\"P Valueb\":\".84\"}}\n", - "\n", - "header: Insecticide Resistance Intensity\n", - "\n", - "A total of 2251 field-caught _A. gambiae_ s.l. were tested in resistance bioassays. Intense pyrethroid resistance was evident with more than 25% of mosquitoes surviving exposure to 10 times the dose of insecticide required to kill a susceptible population (Figure 2A). At the diagnostic dose, mosquito mortality rates did not exceed 25% for any pyrethroid tested, which was consistent with the high survival rates observed during cone bioassays using conventional LLINs (Figure 1). In general, levels of resistance to alpha-cypermethrin, deltamethrin, and permethrin were not significantly different at each insecticide concentration tested (Figure 2A).\n", - "\n", - "By comparison, carbamate tolerance was low, with a mean knockdown of 94.53% (95% CI, 92.11%-96.95%; n = 101) after 30 minutes of exposure to the diagnostic dose of bendiocarb. Similarly, high levels of susceptibility to new insecticides clothianidin and chlorfenapyr were observed, with mean mortality rates of 94.11% (95% CI, 93.43%-94.80%; n = 102) and 95.54% (94.71%-96.36%; n = 112), respectively, 72 hours after exposure to the tentative diagnostic doses. Preexposure to PBO increased the average _A. gambiae_ s.l. mortality rate significantly, from 14.56% (95% CI, 6.24%-22.88%) to 72.73% (64.81%-79.43%) and from 44.66% (34.86%-54.46%) to 94.17% (91.12%-97.22%) after exposure to 1 or 2 times the diagnostic dose of deltamethrin (Figure 2B).\n", - "\n", - "header: Malaria Prevalence\n", - "\n", - "Of the 912 _A. gambiae_ s.l. mosquitoes assayed, 31 tested positive for _P. falciparum_ (3.4%). For PCR-confirmed _A. coluzzii_, _P. falciparum_ prevalence was 3.50% (28 of 805); the remaining 3 infections were in _A. gambiae_ s.s. (4%; 3 of 75). By resistance phenotype, susceptible _A. coluzzii_ (ie, those that died after pyrethroid exposure) were more likely to be infected with malaria, compared with resistant mosquitoes (kh2 = 4.6987; \\(P\\) =.03); infection rates were 5.94% (13 of 219) and 2.49% (10 of 401), respectively.\n", - "\n", - "header: RESULTS\n", - "\n", - "A total of 4917 female _A. gambiae_ s.l. mosquitoes were collected in Agboville, Cote d'Ivoire. Of those, 912, which were previously tested in either LLIN bioefficacy (n = 384) or resistance intensity (n = 528) bioassays, were selected for molecular species identification. Of the 912 selected, 805 (88.3%) were determined to be _A. coluzzii_, 75 (8.2%) were _A. gambiae_ s.s., and 22 (2.4%) were _A. gambiae_-_A. coluzzii_ hybrids; 10 individuals did not amplify.\n", - "\n", - "header: Results\n", - "\n", - "Phenotypic resistance was intense: >25% of mosquitoes survived exposure to 10 times the doses of pyrethroids required to kill susceptible populations. Similarly, the 24-hour mortality rate with deltamethrin-only LLINs was very low and not significantly different from that with an untreated net. Sublethal pyrethroid exposure did not induce significant delayed vector mortality effects 72 hours later. In contrast, LLINs containing the synergist piperonyl butoxide, or new insecticides dothianidin and chlorfenapyr, were highly toxic to _A. coluzzii_. Pyrethroid-susceptible _A. coluzzii_ were significantly more likely to be infected with malaria, compared with those that survived insecticidal exposure. Pyrethroid resistance was associated with significant overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_.\n", - "\n", - "header: Abstract\n", - "\n", - "Association of Reduced Long-Lasting Insecticidal Net Efficacy and Pyrethroid Insecticide Resistance With Overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_ in Populations of _Anopheles coluzzii_ From Southeast Cote d'Ivoire\n", - "\n", - "Anne Meiwald,\\({}^{1,2}\\) Emma Clark,\\({}^{1,2}\\) Mejica Kristan,\\({}^{1}\\) Constant Edi,\\({}^{2}\\) Claire L Jeffries,\\({}^{1}\\) Bethanie Pelloquin,\\({}^{1}\\) Seth R. Irish,\\({}^{2}\\) Thomas Walker,\\({}^{1}\\) and Louisa A. Messenger\\({}^{1,0}\\)\n", - "\n", - "\n", - "Resistance to major public health insecticides in Cote d'Ivoire has intensified and now threatens the long-term effectiveness of malaria vector control interventions.\n", - "\n", - "header: Mosquito Survival After Insecticidal Exposure\n", - "\n", - "All _A. gambiae_ s.l. tested in LLIN bioefficacy or resistance intensity bioassays, were held for 72 hours, to assess any impact of insecticide or net exposure on delayed mortality rate. For LLIN bioassays, there was little evidence for any reduction in survival during this holding period (Cox regression \\(P\\) =.15,.27, and.85, respectively, for comparisons between untreated control and PermaNet 2.0, PermaNet 3.0 side panels, and PermaNet 3.0 roof panels) (Table 1 and Figure 3A). Exposure to the diagnostic doses of all insecticides in CDC bottle bioassays did not induce significant delayed mortality effects over 72 hours (Cox regression \\(P\\) >.05 for all insecticides compared with control, with the exception of chlorfenapyr [_P_ =.02]) (Table 1 and Figure 3B). This phenomenon was also observed at increasing pyrethroid doses\n", - "\n", - "Figure 2: _A._ Resistance intensity of field-caught _Anaopheles gambiae_ sensu late (s.l.) after exposure to 1, 2, 5, or 10 times the diagnostic dose of pyrethroid insecticides. Mean knockdown/acute toxicity rates after 30-minute exposure are shown with 95% confidence intervals (Cls). Knockdown or mortality rates at the same dose per insecticide sharing a letter do not differ significantly (_P_ >.05). Mortality rates <00% (_lower and line_) represent confirmed resistance at the diagnostic dose (1a), and rates <00% (_upper and line_) indicate moderate to high-intensity resistance and high-intensity resistance at 5° and 10x, respectively, as defined by the World Health Organization [24]. _B._ Restoration of deltamethrin susceptibility of field-caught _A. gambiae_ s.l. after presopause to piperonyl butoxide (PBO). Mean knockdown/acute toxicity after 30-minute exposure to 1 or 2 times the diagnostic dose of deltamethrin with 95% Cls. Knockdown/mortality rates do not differ significantly between pyrethroid only and synergist plus pyrethroid sharing a letter (_P_ >.05). Red line at 90% mortality rate represents metabolic resistance mechanisms partially involved [24].\n", - "\n", - "\n", - "(Cox regression \\(P\\) >.05 for alpha-cypermethrin, deltamethrin, and permethrin 5x and 10x vs either the control or diagnostic dose) (Table 1; Figure 3C and 3D).\n", - "\n", - "header: Characterization of Insecticide Resistance Mechanisms: Target-Site Mutations\n", - "\n", - "The same cohort of field mosquitoes (n = 912) was tested for the presence of L1014F _kdr_[27] and N1575Y mutations [28]. A subsample of mosquitoes (n = 49) that were exposed to bendiocarb, clothianidin or chlorfenapyr was tested for the presence of the G119S _Ace-1_ mutation [29]. Pearson kh2 and Fisher exact tests (when sample sizes were small) were used to investigate the statistical association between resistance status, allele frequencies, and deviations from Hardy-Weinberg equilibrium.\n", - "\n", - "header: Target-Site Resistance Mutations\n", - "\n", - "L1014_F_kdr_ screening revealed that 92.2% (796/863) of _A. gambiae_ s.l. mosquitoes harbored the mutation; 71.5% (617 of 863) were homozygous, 20.7% (179 of 863) were heterozygous, 5.1% (44 of 863) were wild type, and 2.7% (23 of 863) did not amplify. For PCR-confirmed _A. coluzzii_, L1014F_kdr_ prevalence was 87.8% (707 of 805); 66.6% (536 of 805) were homozygous for the mutation, 21.2% (171 of 805) were heterozygous, 5.3% (43 of 805) were wild type, and 2.2% (18 of 805) did not amplify. For _A. coluzzii_, population-level L1014F_kdr_ allele frequency was 0.83, with evidence for significant deviations from Hardy-Weinberg equilibrium (kh2 = 29.124; \\(P\\) <.001). There was no significant association between L1014F_kdr_ frequency and the ability of _A. coluzzii_, to survive pyrethroid exposure, in either LLIN or resistance bioassays (kh2 = 2.0001 [_P_ =.16] and kh2 = 3.6998 [_P_ =.054], respectively). Similarly, there was no significant association between L1014F_kdr_ and the ability of _A. coluzzii_ to survive PBO preexposure and pyrethroid treatment, in either LLIN or resistance bioassays (kh2 = 0.0086; \\(P\\) =.93; Fisher exact test, \\(P\\) =.429, respectively).\n", - "\n", - "For PCR-confirmed _A. gambiae_ s.s., L1014F_kdr_ prevalence was 95.3% (61 of 64); 89.1% (57 of 64) were homozygous for the mutation, 6.3% (4 of 64) were heterozygous, none were wild type, and 4.7% (3 of 64) did not amplify. There was no significant association between L1014F_kdr_ frequency and ability of _A. gambiae_ s.s. to survive pyrethroid or PBO preexposure and pyrethroid treatment (in either LLIN or resistance bioassays), because all tested individuals harbored this mutation (n = 61). For _A. gambiae_ s.s., the population-level L1014F_kdr_ allele frequency was 0.97, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.070; \\(P\\) =.79).\n", - "\n", - "N1575Y screening revealed that 2.3% of _A. gambiae_ s.l. mosquitoes (21 of 912) harbored the mutation; all were\n", - "heterozygotes. N1575Y prevalence was 1.1% (9 of 805) and 16% (12 of 75) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 0.99% (9 of 912) did not amplify. There was no evidence for ongoing N1575Y selection in either species (kh2 = 0.026 [_P_ =.87] and kh2 = 0.62 [_P_ =.43] for _A. coluzzi_ and _A. gambiae_ s.s., respectively). For _A. coluzzi_, there was no significant association between N1575Y frequency and ability of mosquitoes to survive pyrethroid exposure, in LLIN or resistance bioassays (kh2 = 0.0001 [_P_ =.99] and kh2 = 0.3244 [_P_ =.57], respectively).\n", - "\n", - "G119S _Ace-1_ screening revealed that 55.1% of _A. gambiae_ s.l. mosquitoes (27 of 49) harbored the mutation; all were heterozygotes. G119S _Ace-1_ prevalence was 64.9% (24 of 37) and 27.3% (3 of 11) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 1 remaining _A. gambiae-A. coluzzi_ hybrid was wild type. For _A. coluzzi_, population-level G119S _Ace-1_ allele frequency was 0.32, with evidence of significant deviations from Hardy-Weinberg equilibrium (kh2 = 8.525; \\(P\\) =.004). For _A. gambiae_ s.s., population-level G119S _Ace-1_ allele frequency was 0.14, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.274; \\(P\\) =.60). For _A. coluzzi_, there was a significant association between G119S _Ace-1_ frequency and surviving bendiocarb exposure (Fisher exact test, \\(P\\) =.005).\n", - "\n", - "header: Study Area and Mosquito Collections: WHO Cone Bioassay Testing\n", - "\n", - "Two types of LLIN were evaluated in this study. PermaNet 2.0 is a conventional LLIN treated with deltamethrin only (1.4 g/kg +- 25%) and PermaNet 3.0 is a piperonyl butoxide (PBO) synergism LILIN, consisting of a roof containing PBO (25g/kg) and deltamethrin (4 g/kg +- 25%) and side panels containing deltamethrin only (2.8 g/kg +- 25%). WHO cone bioassays were used to test the susceptibility of _A. gambiae_ s.l. exposed to unwashed PermaNet 2.0, PermaNet 3.0 roof panels, and PermaNet 3.0 side panels [21]. To control for potential variation in insecticide/synergist content, each of 5 LLINs per type was cut into 19 pieces, measuring 30 x 30 cm, with each piece tested a maximum of 3 times.\n", - "\n", - "header: Keywords\n", - "\n", - "_Anopheles coluzzii_; insecticide resistance; _Plasmodium falciparum_; long-lasting insecticidal nets; Cote d'Ivoire; PBO; chlorfenapyr; clothianidin; _CYP6P4_; _CYP6P3_; _CYP6Z1_\n", - "\n", - "In Cote d'Ivoire, malaria is a serious public health problem with the entire population of about 26.2 million people at risk, and disease prevalence reaching as high as 63% in the southwest region [1]. Control of _Anopheles gambiae_ sensu lato (s.l.), the major malaria vector species group, has been through the efforts of the National Malaria Control Programme, which has distributed insecticide-treated nets as the primary vector control intervention. Indoor residual spraying and larviciding in high transmission areas have been recommended as complementary strategies; implementation of the former commenced in late 2020 [2]. Estimates of net coverage across the country remain low, with the proportion of households with at least >=1 insecticide-treated net per 2 persons rising from 31% in 2012 to 47% in 2016, and insecticide-treated net use stagnating at 40% of households reporting sleeping under a net the previous night in both survey years [2]. The most recent universal net campaigns in Cote d'Ivoire in 2017-2018 issued conventional, pyrethroid (deltamethrin) long-lasting insecticidal nets (LLINs), aiming to achieve 90% coverage and 80% use [2]. However, country-wide, multiclass insecticide resistance among populations of _A. gambiae_ s.l. is a growing cause for concern because of potential operational failure of current vector control strategies, both locally and across the sub-Saharan region [2, 3].\n", - "\n", - "Resistance to pyrethroid and carbamate insecticides in _Anopheles_ mosquitoes was first reported from the central \n", - "region of Cote d'Ivoire in the early 1990s [4, 5, 6, 7]. Local resistance to the major insecticide classes recommended by the World Health Organization (WHO) for adult mosquito control--pyrethroids, carbamates, organophosphates, and organochlorines--evolved rapidly [8, 9, 10] and has been increasing in intensity, driven largely by selective pressures imposed by contemporaneous scale-up of public health vector control interventions (including those targeting malaria, trypanosomiasis, and onchocerciasis vectors) and use of agricultural pesticides [11, 12, 13, 14, 7]. This escalation in resistance has now begun to compromise the insecticidal efficacy and community-wide impact of conventional, pyrethroid LLINs in Cote d'Ivoire [14, 15], although some levels of personal protection may still remain [15, 16, 17].\n", - "\n", - "Among vector populations across Cote d'Ivoire, the L1014F _kdr_ mutation is pervasive and has been implicated in some longitudinal trends in decreasing DDT and pyrethroid susceptibility [7, 11]; L1014S _kdr_ and N1575Y resistance mutations have also been detected but at much lower frequencies [18]. Extreme carbamate (bendiocarb) resistance and pyrethroid cross-resistance in some _A. gambiae_ sensu stricto (s.s.) populations are mediated by overexpression of _CYP6P3_ and _CYP6M2_ and duplication of the G119S _Ace-1_ mutation [19]. To support and safeguard future malaria control efforts in Cote d'Ivoire, the current study evaluated the efficacy of conventional and next-generation LLINs for prospective distribution, determined current insecticide resistance profiles of _A. gambiae_ s.l. (principally _Anopheles coluzzi_), and characterized underlying molecular and metabolic resistance mechanisms.\n", - "\n", - "header: Metabolic Resistance Mechanisms\n", - "\n", - "Comparison of metabolic gene expression levels in field populations of _A. coluzzi_ and _A. gambiae s.s._ demonstrated significant up-regulation of _CYP6P4_ (fold change, 5.88 [95% CI, 5.19-44.06] for _A. coluzzi_ and 6.08 [5.43-50.64] for _A. gambiae_ s.s.), _CYP6Z1_ (4.04 [3.69-41.54] and 3.56 [3.24-36.25], respectively),\n", - "\n", - "Figure 3.: The longevity of field-caught _A. gambiae_ sensus into after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (_A_) and \\(x\\) (B, 5x [_O_], and 10× [_D_) the diagnostic dose of pyrethroid insecticides in Centres for Disease Control and Prevention resistance intensity assays. Kaplan-Meier survival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\n", - "\n", - "\n", - "and _CYP6P3_ (12.56 [11.40-12-3.83] and 13.85 [12.53-132.03]), relative to a susceptible laboratory colony, respectively (Figure 4). More modest overexpression of _CYP6P1_ and _GSTE2_ was observed (_CYP6P1_ fold changes, 1.18 [95% CI, 1.08-12.31] and 1.28 [1.17-14.40]; GSTE2, 0.56 [.48-3.32], and 0.67 [.58-4.29], for _A. coluzzi_ and _A. gambiae_ s.s., respectively) (Figure 4). The fold change levels did not differ significantly between the 2 species for any gene nor by malaria infection status in wild _A. coluzzi_. Comparison of metabolic gene expression in phenotyped field populations of _A. coluzzi_ revealed lower fold changes overall, but notably, increased overexpression of _CYP6P3_ in survivors of bendiocarb, deltamethrin, PBO plus deltamethrin, and permethrin (fold change, 3.91 [95% CI, 3.33-22.16], 2.21 [1.88-12.53], 2.64 [2.21-13.69], and 2.21 [1.99-20.03], respectively) (Figure 5).\n", - "\n", - "header: Characterization of Insecticide Resistance Mechanisms: Metabolic Gene Expression\n", - "\n", - "Relative expression of 5 metabolic genes (_CYP6P3_, _CYP6P4_, _CYP6Z1_, _CYP6P1_, and _GSTE2_) was measured in all field collected mosquitoes (n = 912), using multiplex quantitative real-time polymerase chain reaction (PCR) assays, relative to the housekeeping gene ribosomal protein S7 (_RPS7_) [30]. In addition, gene expression levels were measured in susceptible _A. coluzzii_ Nguosso colony mosquitoes (n = 48). All samples were run in technical triplicate. Expression level and fold change of each target gene between resistant and susceptible field samples, relative to the susceptible laboratory strain, were calculated using the 2-\\({}^{\\text{-}\\Delta\\text{ACT}}\\) method incorporating PCR efficiency, normalized relative to the endogenous control gene (_RPS7_).\n", - "\n", - "header: Discussion\n", - "\n", - "Cote d'Ivoire has hot spots with some of the highest levels of resistance of _Anopheles_ mosquitoes to public health insecticides worldwide, with potentially severe implications for sustaining gains in malaria control [31]. To safeguard malaria vector control efforts and inform the design of effective resistance management strategies, involving tactical deployment of differing indoor residual spraying and LLIN modalities, there needs to be a clear understanding of contemporary phenotypic and genotypic insecticide resistance.\n", - "\n", - "Our study detected intense pyrethroid resistance in southeast Cote d'Ivoire, as evidenced by high proportions of survivors, after exposure to 10 times the diagnostic doses of pyrethroids, as well as very low knockdown and 24-hour mortality rates for deltamethrin-only LLINs, equivalent to rates for an untreated net. These findings are largely in agreement with historical resistance profiles from this region [7, 10, 11] and indicate that conventional LLINs may no longer be operationally viable in areas of high pyrethroid resistance intensity. Previous phase II studies of pyrethroid-only LLINs in the central region of Cote d'Ivoire have demonstrated similarly poor efficacy with highly resistant _A. gambiae_ s.l. populations but argued for the retention of some degree of personal protection [15-17].\n", - "\n", - "Other observational cohorts have reported higher incidences of malaria among non-net users compared with users in areas of moderate to high pyrethroid resistance [17]. The extent of protective efficacy afforded by pyrethroid LLINs will likely reflect the strength of local vector resistance and levels of both net physical integrity and individual compliance [32, 33]; in Cote d'Ivoire, reported LLIN usage has been low, requiring additional behavioral interventions [2, 34]. Our findings of high mosquito mortality rates after exposure to clothianidin and chlorfenapyr and improved vector susceptibility with PBO treatment (on both LLINs and in resistance bioassays), are consistent with data from other sentinel sites across Cote d'Ivoire [16, 35, 36], and strongly support the deployment of vector control interventions incorporating these new active ingredients.\n", - "\n", - "Study results indicate that _A. coluzzi_ was the predominant local vector species during the rainy season, as observed previously [7], circulating sympatrically with smaller proportions of _A. gambiae_ s.s. These 2 vector species commonly cohabit but can be genetically distinct in terms of resistance mechanisms [37, 38] and can also differ in larval ecology, behavior, migration, and activation [39-41]. In general, resistance mechanisms in _A. coluzzi_ are less well characterized, compared with _A. gambiae_ s.s., in part because these vectors are morphologically\n", - "\n", - "Figure 4: Metabolic gene expression in field _Anopheles coluzzi_ and _Anopheles gambiae_ sensu stricto (s.s.) populations relative to a susceptible colony population. Error bars represent 95% confidence intervals. Statistically significant differences in expression levels relative to the susceptible colony are indicated as follows: *_P_ <.05; **_P_ <.01; ***_P_ <.001.\n", - "\n", - "\n", - "indistinguishable and few studies present data disaggregated by PCR-confirmed species.\n", - "\n", - "We observed several distinct features in our study, including, principally, evidence for ongoing selection of L1014F _kdr_ and G119S _Ace-1 in A. coluzzii_, which was absent in _A. gambiae_ s.s. and higher proportions of N1575Y in _A. gambiae_ s.s.; expression levels of metabolic genes were comparable between species. The lack of association between L1014F _kdr_ genotype and mosquito phenotype, coupled with the identification of 3 CYP450 enzymes (_CYP6P4, CYP6P3,_ and _CYP6Z1_) that were significantly overexpressed in field populations (some of which are known to metabolize pyrrethroids and next-generation LLIN insecticides [42, 43]), indicate a key role for metabolic resistance in this _A. coluzzii_ population. One notable difference in our data set, compared with previous findings in Agboville [7], was the finding of benodiocarb susceptibility. This may be attributable to small-scale spatial and longitudinal heterogeneity in resistance, which can be highly dynamic [37, 44], and/or phenotypic differences between vector species, complicating intervention choice for resistance management.\n", - "\n", - "With the exception of chlorfenapyr, which is known to be a slow-acting insecticide, no delayed mortality effects were detected after insecticidal exposure; the format and dose used for clothianidin testing (another slow-acting insecticide [45]) were instead intended to measure acute toxicity within a 60-minute exposure period. Previous mathematical models using resistant mosquito colonies have suggested that sublethal insecticide treatment may still reduce vector lifespan and inhibit blood-feeding and host-seeking behaviors, thereby interrupting malaria transmission [46, 47]. Our observations are more compatible with reports from Burkina Faso, where different exposure regimens of wild, resistant _A. gambiae_ s.l. populations to deltamethrin LLINs did not induce any delayed mortality effects [47]. Further assessment of sublethal effects are warranted across additional field populations with differing resistance mechanisms, to clarify the impact of insecticidal exposure on the vectorial capacity of resistant mosquitoes.\n", - "\n", - "To date there is a paucity of data regarding the interactions between insecticide resistance and _Plasmodium_ development [48]. In the current study, _A. coluzzii_ that died after pyrethroid exposure were significantly more likely to be infected with malaria. This might be explained by elevated metabolic enzymes and/or prior pyrethroid exposure detrimentally affecting parasite development [49], although it is important to note that we did not detect any significant differences between gene overexpression in malaria-infected versus noninfected _A. coluzzii_. Alternatively, our sampled population may have been physiologically older, as phenotypic resistance is known to decline with age [50]. It is impossible to distinguish between these hypotheses using field-collected vector populations; the experimental design used in this study had other biological and technical limitations, which have been described in detail elsewhere [23, 37]\n", - "\n", - "In conclusion, as new combination and bitreated vector control interventions become available for deployment, contemporary resistance information is crucial for the rationale design of management strategies and to mitigate further selection for particular resistance mechanisms. The results from the current study contribute to growing insecticide resistance data for Cote d'Ivoire, demonstrating a loss of bioefficacy of pyrethroid LLINs and supporting the use of new active ingredients (clothianidin, chlorfenapyr, and PBO). Study findings also highlight the need for expanded insecticide resistance surveillance, including monitoring of metabolic resistance mechanisms, in conjunction with studies to better characterize the impact of sublethal insecticide exposure on vectorial capacity and the interaction between insecticide resistance and _Plasmodium_ parasite development.\n", - "\n", - "Figure 5: Metabolic gene expression in resistant versus susceptible field _Anopheles coluzzi_, which either died or survived after insecticidal exposure. Error bars represent 95% confidence intervals.\n", - "\n", - "header: Methods\n", - "\n", - "The study protocol was approved by the Comite National d'Ethique des Sciences de la Vie et de la Sante (no. 069-19/MSHP/CNESVS-kp) and the London School of Hygiene and Tropical Medicine (nos. 16782 and 16899). Study activities were conducted in the village of Aboude, rural Agboville, Agneby-Tiassa region, southeast Cote d'Ivoire (5'55'N, 4'13'W), selected because of its high mosquito densities and malaria prevalence [1]. Adult mosquitoes were collected using human landing catches, inside and outside households from 6 pm to 6 am, for a total of 190 person/trap/nights between 5 and 26 July 2019. Unfed mosquitoes, morphologically identified as _A. gambiae_ s.l. [20], were tested in bioassays that same day, after a brief recovery period; blood-fed mosquitoes were first held for 2-3 days to allow for blood-meal digestion.\n", - "\n", - "header: Mosquito Processing, Identification of _A. gambiae_ s.l. Species Complex\n", - "\n", - "Members, and _Plasmodium falciparum_ Detection\n", - "\n", - "A subsample of field-caught mosquitoes tested in bioassays was selected for molecular analysis (n = 912). Approximately equal numbers of specimens were chosen to represent phenotypically \"susceptible\" or \"resistant\" mosquitoes for each LLIN type or insecticide dose, selected across different replicates and testing days to capture as much population-level variation as possible. RNA was extracted from individual whole-body mosquitoes according to standard protocols [23]. Field _A. gambiae_ s.l. were identified to species level [25] and were screened for the presence of _Plasmodium falciparum_[26].\n", - "\n", - "header: Mosquito Collections and Species Identification: LIII Efficacy\n", - "\n", - "A total of 2666 field-caught _A. gambiae_ s.l were used to assess the bioefficacy of conventional pyrethroid-treated LLINs (PermaNet 2.0 and PermaNet 3.0 side panels) and next-generation synergisti LLINs (PermaNet 3.0 roof panels), compared with an untreated control (Figure 1). Overall, _A. gambiae_ s.l. knockdown and mortality rates with deltamethrin LLINs were very low and largely equivalent to those for the untreated control net (Figure 1). At 60 minutes, average mosquito knockdown rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels were 1.56% (95% confidence interval [CI], 1.13%-1.99%), 0.54% (.42%-6.5%), and 1.75% (1.49%-2.0%), respectively. By contrast, average mosquito knockdown rates for PBO-containing PermaNet 3.0 roof panels were significantly higher (79.8% [95% CI, 79.07%-80.48%]; kh2 = 705.51, 968.65, and 937.33 [_P_ <.001] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1).\n", - "\n", - "At 24 hours, mortality rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels remained low (6.11% [95% CI, 4.71%-7.51%], 5.44% [4.58%-6.29%], and 3.66% [3.12%-4.19%], respectively), while those with PermaNet 3.0 roof panels increased only marginally but still remained significantly higher (83.81% [95% CI, 83.15%-84.47%];\n", - "\n", - "Figure 1.: Bioefficacy of different unwashed long-lasting insecticidal nets (LLINs) against field-caught _Angabies gambiae_ sensu tatto. Mean knockdown and mortality rates are shown with 95% confidence intervals, at 60 minutes and 24 hours, respectively, after 3-minute exposure to PermaNet 2.0 (deltamethrin only), side panels of PermaNet 3.0 (deltamethrin only, roof panels of PermaNet 3.0 (pieronym) butoxide plus deltamethrin), and an untreated control net. Knockdown or mortality rates in the same time period for each treatment sharing a letter do not differ significantly (_P_ >.05). Green lines at 275% and 295% knockdown represent minimal and optimal effectiveness, respectively, at 60 minutes. Red lines at 250% and >80% mortality represent minimal and optimal LLIN effectiveness at 24 hours, respectively, as defined by the World Health Organization [21].\n", - "\n", - "\n", - "\\(\\chi^{2}\\) = 727.96, 914.61, and 963.09 [\\(P\\) <.001 for all] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1). PermaNet 3.0 roof panels reached minimal effectiveness (knockdown, >=75%) 60 minutes after exposure and optimal effectiveness (mortality rate, >=80%) at 24 hours. Neither of the deltamethrin-only LLINS reached either effectiveness threshold at any time point.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Cote d'Ivoire\",\"Site\":\"Aboude, Agboville\",\"Start_month\":7,\"Start_year\":2019,\"End_month\":7,\"End_year\":2019}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"1.4 g\\/kg\"},\"N02\":{\"Net_type\":\"PermaNet 3.0 roof panels\",\"Insecticide\":\"PBO, deltamethrin\",\"Concentration_initial\":\"25g\\/kg, 4 g\\/kg\"},\"N03\":{\"Net_type\":\"PermaNet 3.0 side panels\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"2.8 g\\/kg\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Notes\n", - "\n", - "_Acknowledgments._ The authors express their sincere thanks to M. Didier Dobri, Centre Suisse de Recherches Scientifiques en Cote d'Ivoire (CSRS) laboratory technician, and Fidele Assamoa for their support in mosquito collection and rearing, the chief and population of the village of Aboude (Agboville), and the entomology fieldworkers of CSRS. They also thank Vestergaard for supplying the long-lasting insecticidal nets tested in this study.\n", - "\n", - "_Author contributions._ A. M., E. C., M. K., T. W., and L. A. M. designed the study. A. M., E. C., C. E., and B. P. led the entomology field activities and participated in data collection. A. M., E. C., C. L. J., T. W., and L. A. M. performed the molecular assays. A. M., E. C., M. K., C. E., C. L. J., B. P., S. R. I, T. W., and L. A. M. were responsible for data analysis and interpretation. L. A. M. drafted the manuscript, which was revised by all coauthors. All authors read and approved the final manuscript.\n", - "\n", - "_Disclaimer._ The findings and conclusions in this report are those of the authors and do not necessarily represent the official position of the Centers for Disease Control and Prevention.\n", - "\n", - "_Financial support._ This work was supported by the Sir Halley Stewart Trust (L.A.M.), the Wellcome Trust/Royal Society ([http://www.wellcome.ac.uk](http://www.wellcome.ac.uk) and [https://royalsociety.org](https://royalsociety.org); (101285/Z/13/Z to T.W.) and the US President's Malaria Initiative/Centers for Disease Control and Prevention (S.R.I.).\n", - "\n", - "_Potential conflicts of interest._ All authors: No reported conflicts. All authors have submitted the ICMJE Form for Disclosure of Potential Conflicts of Interest. Conflicts that the editors consider relevant to the content of the manuscript have been disclosed.\n", - "\n", - "header: Table 1. Cox Proportional Hazard Model to Determine Impact of Long-Lasting Insecticidal Net/Insecticidal Exposure on Survival of Field-Caught Anopheles gambiae Sensu Lato 72 Hours After Exposure\n", - "footer: Abbreviations: CI, confidence interval; HRR, hazard rate ratio (ratio of hazard rate for control/reference group to hazard rate for treatment group; PBO, piperonyl butoxide.\n", - "a Immediate mortality rates after long-lasting insecticidal net (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. \n", - "b Significance cutoff level defined as α = .05.\n", - "\n", - "\n", - "columns: ['Insecticide Exposure', 'No. (No. of Events)', 'HRR (95% CI)', 'P Valueb']\n", - "\n", - "{\"0\":{\"Insecticide Exposure\":\"Untreated netting\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"1\":{\"Insecticide Exposure\":\"PermaNet 2.0 (deltamethrin only)\",\"No. (No. of Events)\":\"1135 (1047)\",\"HRR (95% CI)\":\"1.095 (.968\\u20131.239)\",\"P Valueb\":\".15\"},\"2\":{\"Insecticide Exposure\":\"PermaNet 3.0 side panels (deltamethrin only)\",\"No. (No. of Events)\":\"1157 (1088)\",\"HRR (95% CI)\":\"0.9664 (.9092\\u20131.027)\",\"P Valueb\":\".27\"},\"3\":{\"Insecticide Exposure\":\"PermaNet 3.0 roof panels (PBO + deltamethrin)\",\"No. (No. of Events)\":\"563 (533)\",\"HRR (95% CI)\":\"1.007 (.939\\u20131.079)\",\"P Valueb\":\".85\"},\"4\":{\"Insecticide Exposure\":\"Acetone control\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"5\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 1\\u00d7\",\"No. (No. of Events)\":\"676 (641)\",\"HRR (95% CI)\":\"1.006 (.9696\\u20131.043)\",\"P Valueb\":\".77\"},\"6\":{\"Insecticide Exposure\":\"Deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"683 (645)\",\"HRR (95% CI)\":\"0.9942 (.9539\\u20131.036)\",\"P Valueb\":\".78\"},\"7\":{\"Insecticide Exposure\":\"Permethrin 1\\u00d7\",\"No. (No. of Events)\":\"693 (661)\",\"HRR (95% CI)\":\"1.015 (.9698\\u20131.062)\",\"P Valueb\":\".52\"},\"8\":{\"Insecticide Exposure\":\"Clothianidin 1\\u00d7\",\"No. (No. of Events)\":\"698 (581)\",\"HRR (95% CI)\":\"1.208 (.9227\\u20131.581)\",\"P Valueb\":\".17\"},\"9\":{\"Insecticide Exposure\":\"Chlorfenapyr 1\\u00d7\",\"No. (No. of Events)\":\"708 (580)\",\"HRR (95% CI)\":\"1.692 (1.086\\u20132.637)\",\"P Valueb\":\".02\"},\"10\":{\"Insecticide Exposure\":\"PBO + deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"630 (577)\",\"HRR (95% CI)\":\"0.9662 (.2411\\u20133.873)\",\"P Valueb\":\".96\"},\"11\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"633 (601)\",\"HRR (95% CI)\":\"0.9951 (.9407\\u20131.053)\",\"P Valueb\":\".86\"},\"12\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"652 (610)\",\"HRR (95% CI)\":\"0.9942 (.9393\\u20131.052)\",\"P Valueb\":\".84\"},\"13\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"636 (583)\",\"HRR (95% CI)\":\"0.9931 (.8638\\u20131.142)\",\"P Valueb\":\".92\"},\"14\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"624 (587)\",\"HRR (95% CI)\":\"0.9951 (.917\\u20131.08)\",\"P Valueb\":\".91\"},\"15\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"623 (588)\",\"HRR (95% CI)\":\"0.9943 (.9072\\u20131.09)\",\"P Valueb\":\".90\"},\"16\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"656 (603)\",\"HRR (95% CI)\":\"1.026 (.9509\\u20131.107)\",\"P Valueb\":\".51\"},\"17\":{\"Insecticide Exposure\":\"1\\u00d7 Insecticide dose\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"18\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"117 (92)\",\"HRR (95% CI)\":\"1.016 (.9069\\u20131.138)\",\"P Valueb\":\".78\"},\"19\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"108 (78)\",\"HRR (95% CI)\":\"1.007 (.9403\\u20131.078)\",\"P Valueb\":\".84\"},\"20\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"143 (105)\",\"HRR (95% CI)\":\"1.0 (.9035\\u20131.107)\",\"P Valueb\":\">.99\"},\"21\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"114 (83)\",\"HRR (95% CI)\":\"1.0 (.9363\\u20131.068)\",\"P Valueb\":\">.99\"},\"22\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"137 (94)\",\"HRR (95% CI)\":\"1.022 (.8528\\u20131.225)\",\"P Valueb\":\".81\"},\"23\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"157 (114)\",\"HRR (95% CI)\":\"0.9952 (.9491\\u20131.044)\",\"P Valueb\":\".84\"}}\n", - "\n", - "header: Conclusions\n", - "\n", - "Study findings raise concerns regarding the operational failure of standard LLINs and support the urgent deployment of vector control interventions incorporating piperonyl butoxide, chlorfenapyr, or clothianidin in areas of high resistance intensity in Cote d'Ivoire.\n", - "\n", - "header: Resistance Intensity and Synergist Bioassay Testing\n", - "\n", - "Centers for Disease Control and Prevention (CDC) resistance intensity bioassays were performed for 6 public health insecticides (pyrethroids: alpha-cypermethrin, deltamethrin, and permethrin; carbamate: bendiocarb; neonicotinoid: clothianidin; and pyrrole: chlorfenapyr) [22, 23]. The diagnostic doses of all insecticides were evaluated (including clothianidin [90 mg per bottle] [23] and chlorfenapyr [100 mg per bottle]) and 2, 5, and 10 times the diagnostic dose of pyrethroid insecticides were also used. Per test, knockdown was recorded at 15-minute intervals for 30 minutes (pyrethroids and bendiocarb) or 60 minutes (dothianidin and chlorfenapyr) of insecticide exposure. One-hour PBO preexposures were performed using WHO tube assays [24], before deltamethrin CDC bottle bioassay testing [22].\n", - "\n", - "WHO cone and CDC resistance intensity bioassay data were interpreted according to the WHO criteria [21, 22]. Mosquitoes that died after exposure to a LLIN or 1x insecticide dose were stored at -20degC in RNAlater (Thermo Fisher Scientific) and were considered \"susceptible\" for genotypic analysis. Surviving mosquitoes were held and scored for mortality rate after 24, 48 and 72 hours to observe delayed mortality effects. Kaplan-Meier curves were used to visualize survival data, and Cox regression was used to compare postexposure survival. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. Surviving mosquitoes at 72 hours were stored at -20degC in RNAlater and were considered \"resistant\" for genotypic analysis.\n", - "\n", - "header: Insecticide Resistance Intensity\n", - "\n", - "A total of 2251 field-caught _A. gambiae_ s.l. were tested in resistance bioassays. Intense pyrethroid resistance was evident with more than 25% of mosquitoes surviving exposure to 10 times the dose of insecticide required to kill a susceptible population (Figure 2A). At the diagnostic dose, mosquito mortality rates did not exceed 25% for any pyrethroid tested, which was consistent with the high survival rates observed during cone bioassays using conventional LLINs (Figure 1). In general, levels of resistance to alpha-cypermethrin, deltamethrin, and permethrin were not significantly different at each insecticide concentration tested (Figure 2A).\n", - "\n", - "By comparison, carbamate tolerance was low, with a mean knockdown of 94.53% (95% CI, 92.11%-96.95%; n = 101) after 30 minutes of exposure to the diagnostic dose of bendiocarb. Similarly, high levels of susceptibility to new insecticides clothianidin and chlorfenapyr were observed, with mean mortality rates of 94.11% (95% CI, 93.43%-94.80%; n = 102) and 95.54% (94.71%-96.36%; n = 112), respectively, 72 hours after exposure to the tentative diagnostic doses. Preexposure to PBO increased the average _A. gambiae_ s.l. mortality rate significantly, from 14.56% (95% CI, 6.24%-22.88%) to 72.73% (64.81%-79.43%) and from 44.66% (34.86%-54.46%) to 94.17% (91.12%-97.22%) after exposure to 1 or 2 times the diagnostic dose of deltamethrin (Figure 2B).\n", - "\n", - "header: Results\n", - "\n", - "Phenotypic resistance was intense: >25% of mosquitoes survived exposure to 10 times the doses of pyrethroids required to kill susceptible populations. Similarly, the 24-hour mortality rate with deltamethrin-only LLINs was very low and not significantly different from that with an untreated net. Sublethal pyrethroid exposure did not induce significant delayed vector mortality effects 72 hours later. In contrast, LLINs containing the synergist piperonyl butoxide, or new insecticides dothianidin and chlorfenapyr, were highly toxic to _A. coluzzii_. Pyrethroid-susceptible _A. coluzzii_ were significantly more likely to be infected with malaria, compared with those that survived insecticidal exposure. Pyrethroid resistance was associated with significant overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_.\n", - "\n", - "header: Malaria Prevalence\n", - "\n", - "Of the 912 _A. gambiae_ s.l. mosquitoes assayed, 31 tested positive for _P. falciparum_ (3.4%). For PCR-confirmed _A. coluzzii_, _P. falciparum_ prevalence was 3.50% (28 of 805); the remaining 3 infections were in _A. gambiae_ s.s. (4%; 3 of 75). By resistance phenotype, susceptible _A. coluzzii_ (ie, those that died after pyrethroid exposure) were more likely to be infected with malaria, compared with resistant mosquitoes (kh2 = 4.6987; \\(P\\) =.03); infection rates were 5.94% (13 of 219) and 2.49% (10 of 401), respectively.\n", - "\n", - "header: Characterization of Insecticide Resistance Mechanisms: Target-Site Mutations\n", - "\n", - "The same cohort of field mosquitoes (n = 912) was tested for the presence of L1014F _kdr_[27] and N1575Y mutations [28]. A subsample of mosquitoes (n = 49) that were exposed to bendiocarb, clothianidin or chlorfenapyr was tested for the presence of the G119S _Ace-1_ mutation [29]. Pearson kh2 and Fisher exact tests (when sample sizes were small) were used to investigate the statistical association between resistance status, allele frequencies, and deviations from Hardy-Weinberg equilibrium.\n", - "\n", - "header: Abstract\n", - "\n", - "Association of Reduced Long-Lasting Insecticidal Net Efficacy and Pyrethroid Insecticide Resistance With Overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_ in Populations of _Anopheles coluzzii_ From Southeast Cote d'Ivoire\n", - "\n", - "Anne Meiwald,\\({}^{1,2}\\) Emma Clark,\\({}^{1,2}\\) Mejica Kristan,\\({}^{1}\\) Constant Edi,\\({}^{2}\\) Claire L Jeffries,\\({}^{1}\\) Bethanie Pelloquin,\\({}^{1}\\) Seth R. Irish,\\({}^{2}\\) Thomas Walker,\\({}^{1}\\) and Louisa A. Messenger\\({}^{1,0}\\)\n", - "\n", - "\n", - "Resistance to major public health insecticides in Cote d'Ivoire has intensified and now threatens the long-term effectiveness of malaria vector control interventions.\n", - "\n", - "header: RESULTS\n", - "\n", - "A total of 4917 female _A. gambiae_ s.l. mosquitoes were collected in Agboville, Cote d'Ivoire. Of those, 912, which were previously tested in either LLIN bioefficacy (n = 384) or resistance intensity (n = 528) bioassays, were selected for molecular species identification. Of the 912 selected, 805 (88.3%) were determined to be _A. coluzzii_, 75 (8.2%) were _A. gambiae_ s.s., and 22 (2.4%) were _A. gambiae_-_A. coluzzii_ hybrids; 10 individuals did not amplify.\n", - "\n", - "header: Mosquito Survival After Insecticidal Exposure\n", - "\n", - "All _A. gambiae_ s.l. tested in LLIN bioefficacy or resistance intensity bioassays, were held for 72 hours, to assess any impact of insecticide or net exposure on delayed mortality rate. For LLIN bioassays, there was little evidence for any reduction in survival during this holding period (Cox regression \\(P\\) =.15,.27, and.85, respectively, for comparisons between untreated control and PermaNet 2.0, PermaNet 3.0 side panels, and PermaNet 3.0 roof panels) (Table 1 and Figure 3A). Exposure to the diagnostic doses of all insecticides in CDC bottle bioassays did not induce significant delayed mortality effects over 72 hours (Cox regression \\(P\\) >.05 for all insecticides compared with control, with the exception of chlorfenapyr [_P_ =.02]) (Table 1 and Figure 3B). This phenomenon was also observed at increasing pyrethroid doses\n", - "\n", - "Figure 2: _A._ Resistance intensity of field-caught _Anaopheles gambiae_ sensu late (s.l.) after exposure to 1, 2, 5, or 10 times the diagnostic dose of pyrethroid insecticides. Mean knockdown/acute toxicity rates after 30-minute exposure are shown with 95% confidence intervals (Cls). Knockdown or mortality rates at the same dose per insecticide sharing a letter do not differ significantly (_P_ >.05). Mortality rates <00% (_lower and line_) represent confirmed resistance at the diagnostic dose (1a), and rates <00% (_upper and line_) indicate moderate to high-intensity resistance and high-intensity resistance at 5° and 10x, respectively, as defined by the World Health Organization [24]. _B._ Restoration of deltamethrin susceptibility of field-caught _A. gambiae_ s.l. after presopause to piperonyl butoxide (PBO). Mean knockdown/acute toxicity after 30-minute exposure to 1 or 2 times the diagnostic dose of deltamethrin with 95% Cls. Knockdown/mortality rates do not differ significantly between pyrethroid only and synergist plus pyrethroid sharing a letter (_P_ >.05). Red line at 90% mortality rate represents metabolic resistance mechanisms partially involved [24].\n", - "\n", - "\n", - "(Cox regression \\(P\\) >.05 for alpha-cypermethrin, deltamethrin, and permethrin 5x and 10x vs either the control or diagnostic dose) (Table 1; Figure 3C and 3D).\n", - "\n", - "header: Metabolic Resistance Mechanisms\n", - "\n", - "Comparison of metabolic gene expression levels in field populations of _A. coluzzi_ and _A. gambiae s.s._ demonstrated significant up-regulation of _CYP6P4_ (fold change, 5.88 [95% CI, 5.19-44.06] for _A. coluzzi_ and 6.08 [5.43-50.64] for _A. gambiae_ s.s.), _CYP6Z1_ (4.04 [3.69-41.54] and 3.56 [3.24-36.25], respectively),\n", - "\n", - "Figure 3.: The longevity of field-caught _A. gambiae_ sensus into after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (_A_) and \\(x\\) (B, 5x [_O_], and 10× [_D_) the diagnostic dose of pyrethroid insecticides in Centres for Disease Control and Prevention resistance intensity assays. Kaplan-Meier survival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\n", - "\n", - "\n", - "and _CYP6P3_ (12.56 [11.40-12-3.83] and 13.85 [12.53-132.03]), relative to a susceptible laboratory colony, respectively (Figure 4). More modest overexpression of _CYP6P1_ and _GSTE2_ was observed (_CYP6P1_ fold changes, 1.18 [95% CI, 1.08-12.31] and 1.28 [1.17-14.40]; GSTE2, 0.56 [.48-3.32], and 0.67 [.58-4.29], for _A. coluzzi_ and _A. gambiae_ s.s., respectively) (Figure 4). The fold change levels did not differ significantly between the 2 species for any gene nor by malaria infection status in wild _A. coluzzi_. Comparison of metabolic gene expression in phenotyped field populations of _A. coluzzi_ revealed lower fold changes overall, but notably, increased overexpression of _CYP6P3_ in survivors of bendiocarb, deltamethrin, PBO plus deltamethrin, and permethrin (fold change, 3.91 [95% CI, 3.33-22.16], 2.21 [1.88-12.53], 2.64 [2.21-13.69], and 2.21 [1.99-20.03], respectively) (Figure 5).\n", - "\n", - "header: Study Area and Mosquito Collections: WHO Cone Bioassay Testing\n", - "\n", - "Two types of LLIN were evaluated in this study. PermaNet 2.0 is a conventional LLIN treated with deltamethrin only (1.4 g/kg +- 25%) and PermaNet 3.0 is a piperonyl butoxide (PBO) synergism LILIN, consisting of a roof containing PBO (25g/kg) and deltamethrin (4 g/kg +- 25%) and side panels containing deltamethrin only (2.8 g/kg +- 25%). WHO cone bioassays were used to test the susceptibility of _A. gambiae_ s.l. exposed to unwashed PermaNet 2.0, PermaNet 3.0 roof panels, and PermaNet 3.0 side panels [21]. To control for potential variation in insecticide/synergist content, each of 5 LLINs per type was cut into 19 pieces, measuring 30 x 30 cm, with each piece tested a maximum of 3 times.\n", - "\n", - "header: Characterization of Insecticide Resistance Mechanisms: Metabolic Gene Expression\n", - "\n", - "Relative expression of 5 metabolic genes (_CYP6P3_, _CYP6P4_, _CYP6Z1_, _CYP6P1_, and _GSTE2_) was measured in all field collected mosquitoes (n = 912), using multiplex quantitative real-time polymerase chain reaction (PCR) assays, relative to the housekeeping gene ribosomal protein S7 (_RPS7_) [30]. In addition, gene expression levels were measured in susceptible _A. coluzzii_ Nguosso colony mosquitoes (n = 48). All samples were run in technical triplicate. Expression level and fold change of each target gene between resistant and susceptible field samples, relative to the susceptible laboratory strain, were calculated using the 2-\\({}^{\\text{-}\\Delta\\text{ACT}}\\) method incorporating PCR efficiency, normalized relative to the endogenous control gene (_RPS7_).\n", - "\n", - "header: Target-Site Resistance Mutations\n", - "\n", - "L1014_F_kdr_ screening revealed that 92.2% (796/863) of _A. gambiae_ s.l. mosquitoes harbored the mutation; 71.5% (617 of 863) were homozygous, 20.7% (179 of 863) were heterozygous, 5.1% (44 of 863) were wild type, and 2.7% (23 of 863) did not amplify. For PCR-confirmed _A. coluzzii_, L1014F_kdr_ prevalence was 87.8% (707 of 805); 66.6% (536 of 805) were homozygous for the mutation, 21.2% (171 of 805) were heterozygous, 5.3% (43 of 805) were wild type, and 2.2% (18 of 805) did not amplify. For _A. coluzzii_, population-level L1014F_kdr_ allele frequency was 0.83, with evidence for significant deviations from Hardy-Weinberg equilibrium (kh2 = 29.124; \\(P\\) <.001). There was no significant association between L1014F_kdr_ frequency and the ability of _A. coluzzii_, to survive pyrethroid exposure, in either LLIN or resistance bioassays (kh2 = 2.0001 [_P_ =.16] and kh2 = 3.6998 [_P_ =.054], respectively). Similarly, there was no significant association between L1014F_kdr_ and the ability of _A. coluzzii_ to survive PBO preexposure and pyrethroid treatment, in either LLIN or resistance bioassays (kh2 = 0.0086; \\(P\\) =.93; Fisher exact test, \\(P\\) =.429, respectively).\n", - "\n", - "For PCR-confirmed _A. gambiae_ s.s., L1014F_kdr_ prevalence was 95.3% (61 of 64); 89.1% (57 of 64) were homozygous for the mutation, 6.3% (4 of 64) were heterozygous, none were wild type, and 4.7% (3 of 64) did not amplify. There was no significant association between L1014F_kdr_ frequency and ability of _A. gambiae_ s.s. to survive pyrethroid or PBO preexposure and pyrethroid treatment (in either LLIN or resistance bioassays), because all tested individuals harbored this mutation (n = 61). For _A. gambiae_ s.s., the population-level L1014F_kdr_ allele frequency was 0.97, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.070; \\(P\\) =.79).\n", - "\n", - "N1575Y screening revealed that 2.3% of _A. gambiae_ s.l. mosquitoes (21 of 912) harbored the mutation; all were\n", - "heterozygotes. N1575Y prevalence was 1.1% (9 of 805) and 16% (12 of 75) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 0.99% (9 of 912) did not amplify. There was no evidence for ongoing N1575Y selection in either species (kh2 = 0.026 [_P_ =.87] and kh2 = 0.62 [_P_ =.43] for _A. coluzzi_ and _A. gambiae_ s.s., respectively). For _A. coluzzi_, there was no significant association between N1575Y frequency and ability of mosquitoes to survive pyrethroid exposure, in LLIN or resistance bioassays (kh2 = 0.0001 [_P_ =.99] and kh2 = 0.3244 [_P_ =.57], respectively).\n", - "\n", - "G119S _Ace-1_ screening revealed that 55.1% of _A. gambiae_ s.l. mosquitoes (27 of 49) harbored the mutation; all were heterozygotes. G119S _Ace-1_ prevalence was 64.9% (24 of 37) and 27.3% (3 of 11) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 1 remaining _A. gambiae-A. coluzzi_ hybrid was wild type. For _A. coluzzi_, population-level G119S _Ace-1_ allele frequency was 0.32, with evidence of significant deviations from Hardy-Weinberg equilibrium (kh2 = 8.525; \\(P\\) =.004). For _A. gambiae_ s.s., population-level G119S _Ace-1_ allele frequency was 0.14, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.274; \\(P\\) =.60). For _A. coluzzi_, there was a significant association between G119S _Ace-1_ frequency and surviving bendiocarb exposure (Fisher exact test, \\(P\\) =.005).\n", - "\n", - "header: Keywords\n", - "\n", - "_Anopheles coluzzii_; insecticide resistance; _Plasmodium falciparum_; long-lasting insecticidal nets; Cote d'Ivoire; PBO; chlorfenapyr; clothianidin; _CYP6P4_; _CYP6P3_; _CYP6Z1_\n", - "\n", - "In Cote d'Ivoire, malaria is a serious public health problem with the entire population of about 26.2 million people at risk, and disease prevalence reaching as high as 63% in the southwest region [1]. Control of _Anopheles gambiae_ sensu lato (s.l.), the major malaria vector species group, has been through the efforts of the National Malaria Control Programme, which has distributed insecticide-treated nets as the primary vector control intervention. Indoor residual spraying and larviciding in high transmission areas have been recommended as complementary strategies; implementation of the former commenced in late 2020 [2]. Estimates of net coverage across the country remain low, with the proportion of households with at least >=1 insecticide-treated net per 2 persons rising from 31% in 2012 to 47% in 2016, and insecticide-treated net use stagnating at 40% of households reporting sleeping under a net the previous night in both survey years [2]. The most recent universal net campaigns in Cote d'Ivoire in 2017-2018 issued conventional, pyrethroid (deltamethrin) long-lasting insecticidal nets (LLINs), aiming to achieve 90% coverage and 80% use [2]. However, country-wide, multiclass insecticide resistance among populations of _A. gambiae_ s.l. is a growing cause for concern because of potential operational failure of current vector control strategies, both locally and across the sub-Saharan region [2, 3].\n", - "\n", - "Resistance to pyrethroid and carbamate insecticides in _Anopheles_ mosquitoes was first reported from the central \n", - "region of Cote d'Ivoire in the early 1990s [4, 5, 6, 7]. Local resistance to the major insecticide classes recommended by the World Health Organization (WHO) for adult mosquito control--pyrethroids, carbamates, organophosphates, and organochlorines--evolved rapidly [8, 9, 10] and has been increasing in intensity, driven largely by selective pressures imposed by contemporaneous scale-up of public health vector control interventions (including those targeting malaria, trypanosomiasis, and onchocerciasis vectors) and use of agricultural pesticides [11, 12, 13, 14, 7]. This escalation in resistance has now begun to compromise the insecticidal efficacy and community-wide impact of conventional, pyrethroid LLINs in Cote d'Ivoire [14, 15], although some levels of personal protection may still remain [15, 16, 17].\n", - "\n", - "Among vector populations across Cote d'Ivoire, the L1014F _kdr_ mutation is pervasive and has been implicated in some longitudinal trends in decreasing DDT and pyrethroid susceptibility [7, 11]; L1014S _kdr_ and N1575Y resistance mutations have also been detected but at much lower frequencies [18]. Extreme carbamate (bendiocarb) resistance and pyrethroid cross-resistance in some _A. gambiae_ sensu stricto (s.s.) populations are mediated by overexpression of _CYP6P3_ and _CYP6M2_ and duplication of the G119S _Ace-1_ mutation [19]. To support and safeguard future malaria control efforts in Cote d'Ivoire, the current study evaluated the efficacy of conventional and next-generation LLINs for prospective distribution, determined current insecticide resistance profiles of _A. gambiae_ s.l. (principally _Anopheles coluzzi_), and characterized underlying molecular and metabolic resistance mechanisms.\n", - "\n", - "header: Mosquito Collections and Species Identification: LIII Efficacy\n", - "\n", - "A total of 2666 field-caught _A. gambiae_ s.l were used to assess the bioefficacy of conventional pyrethroid-treated LLINs (PermaNet 2.0 and PermaNet 3.0 side panels) and next-generation synergisti LLINs (PermaNet 3.0 roof panels), compared with an untreated control (Figure 1). Overall, _A. gambiae_ s.l. knockdown and mortality rates with deltamethrin LLINs were very low and largely equivalent to those for the untreated control net (Figure 1). At 60 minutes, average mosquito knockdown rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels were 1.56% (95% confidence interval [CI], 1.13%-1.99%), 0.54% (.42%-6.5%), and 1.75% (1.49%-2.0%), respectively. By contrast, average mosquito knockdown rates for PBO-containing PermaNet 3.0 roof panels were significantly higher (79.8% [95% CI, 79.07%-80.48%]; kh2 = 705.51, 968.65, and 937.33 [_P_ <.001] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1).\n", - "\n", - "At 24 hours, mortality rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels remained low (6.11% [95% CI, 4.71%-7.51%], 5.44% [4.58%-6.29%], and 3.66% [3.12%-4.19%], respectively), while those with PermaNet 3.0 roof panels increased only marginally but still remained significantly higher (83.81% [95% CI, 83.15%-84.47%];\n", - "\n", - "Figure 1.: Bioefficacy of different unwashed long-lasting insecticidal nets (LLINs) against field-caught _Angabies gambiae_ sensu tatto. Mean knockdown and mortality rates are shown with 95% confidence intervals, at 60 minutes and 24 hours, respectively, after 3-minute exposure to PermaNet 2.0 (deltamethrin only), side panels of PermaNet 3.0 (deltamethrin only, roof panels of PermaNet 3.0 (pieronym) butoxide plus deltamethrin), and an untreated control net. Knockdown or mortality rates in the same time period for each treatment sharing a letter do not differ significantly (_P_ >.05). Green lines at 275% and 295% knockdown represent minimal and optimal effectiveness, respectively, at 60 minutes. Red lines at 250% and >80% mortality represent minimal and optimal LLIN effectiveness at 24 hours, respectively, as defined by the World Health Organization [21].\n", - "\n", - "\n", - "\\(\\chi^{2}\\) = 727.96, 914.61, and 963.09 [\\(P\\) <.001 for all] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1). PermaNet 3.0 roof panels reached minimal effectiveness (knockdown, >=75%) 60 minutes after exposure and optimal effectiveness (mortality rate, >=80%) at 24 hours. Neither of the deltamethrin-only LLINS reached either effectiveness threshold at any time point.\n", - "\n", - "header: Methods\n", - "\n", - "The study protocol was approved by the Comite National d'Ethique des Sciences de la Vie et de la Sante (no. 069-19/MSHP/CNESVS-kp) and the London School of Hygiene and Tropical Medicine (nos. 16782 and 16899). Study activities were conducted in the village of Aboude, rural Agboville, Agneby-Tiassa region, southeast Cote d'Ivoire (5'55'N, 4'13'W), selected because of its high mosquito densities and malaria prevalence [1]. Adult mosquitoes were collected using human landing catches, inside and outside households from 6 pm to 6 am, for a total of 190 person/trap/nights between 5 and 26 July 2019. Unfed mosquitoes, morphologically identified as _A. gambiae_ s.l. [20], were tested in bioassays that same day, after a brief recovery period; blood-fed mosquitoes were first held for 2-3 days to allow for blood-meal digestion.\n", - "\n", - "header: Discussion\n", - "\n", - "Cote d'Ivoire has hot spots with some of the highest levels of resistance of _Anopheles_ mosquitoes to public health insecticides worldwide, with potentially severe implications for sustaining gains in malaria control [31]. To safeguard malaria vector control efforts and inform the design of effective resistance management strategies, involving tactical deployment of differing indoor residual spraying and LLIN modalities, there needs to be a clear understanding of contemporary phenotypic and genotypic insecticide resistance.\n", - "\n", - "Our study detected intense pyrethroid resistance in southeast Cote d'Ivoire, as evidenced by high proportions of survivors, after exposure to 10 times the diagnostic doses of pyrethroids, as well as very low knockdown and 24-hour mortality rates for deltamethrin-only LLINs, equivalent to rates for an untreated net. These findings are largely in agreement with historical resistance profiles from this region [7, 10, 11] and indicate that conventional LLINs may no longer be operationally viable in areas of high pyrethroid resistance intensity. Previous phase II studies of pyrethroid-only LLINs in the central region of Cote d'Ivoire have demonstrated similarly poor efficacy with highly resistant _A. gambiae_ s.l. populations but argued for the retention of some degree of personal protection [15-17].\n", - "\n", - "Other observational cohorts have reported higher incidences of malaria among non-net users compared with users in areas of moderate to high pyrethroid resistance [17]. The extent of protective efficacy afforded by pyrethroid LLINs will likely reflect the strength of local vector resistance and levels of both net physical integrity and individual compliance [32, 33]; in Cote d'Ivoire, reported LLIN usage has been low, requiring additional behavioral interventions [2, 34]. Our findings of high mosquito mortality rates after exposure to clothianidin and chlorfenapyr and improved vector susceptibility with PBO treatment (on both LLINs and in resistance bioassays), are consistent with data from other sentinel sites across Cote d'Ivoire [16, 35, 36], and strongly support the deployment of vector control interventions incorporating these new active ingredients.\n", - "\n", - "Study results indicate that _A. coluzzi_ was the predominant local vector species during the rainy season, as observed previously [7], circulating sympatrically with smaller proportions of _A. gambiae_ s.s. These 2 vector species commonly cohabit but can be genetically distinct in terms of resistance mechanisms [37, 38] and can also differ in larval ecology, behavior, migration, and activation [39-41]. In general, resistance mechanisms in _A. coluzzi_ are less well characterized, compared with _A. gambiae_ s.s., in part because these vectors are morphologically\n", - "\n", - "Figure 4: Metabolic gene expression in field _Anopheles coluzzi_ and _Anopheles gambiae_ sensu stricto (s.s.) populations relative to a susceptible colony population. Error bars represent 95% confidence intervals. Statistically significant differences in expression levels relative to the susceptible colony are indicated as follows: *_P_ <.05; **_P_ <.01; ***_P_ <.001.\n", - "\n", - "\n", - "indistinguishable and few studies present data disaggregated by PCR-confirmed species.\n", - "\n", - "We observed several distinct features in our study, including, principally, evidence for ongoing selection of L1014F _kdr_ and G119S _Ace-1 in A. coluzzii_, which was absent in _A. gambiae_ s.s. and higher proportions of N1575Y in _A. gambiae_ s.s.; expression levels of metabolic genes were comparable between species. The lack of association between L1014F _kdr_ genotype and mosquito phenotype, coupled with the identification of 3 CYP450 enzymes (_CYP6P4, CYP6P3,_ and _CYP6Z1_) that were significantly overexpressed in field populations (some of which are known to metabolize pyrrethroids and next-generation LLIN insecticides [42, 43]), indicate a key role for metabolic resistance in this _A. coluzzii_ population. One notable difference in our data set, compared with previous findings in Agboville [7], was the finding of benodiocarb susceptibility. This may be attributable to small-scale spatial and longitudinal heterogeneity in resistance, which can be highly dynamic [37, 44], and/or phenotypic differences between vector species, complicating intervention choice for resistance management.\n", - "\n", - "With the exception of chlorfenapyr, which is known to be a slow-acting insecticide, no delayed mortality effects were detected after insecticidal exposure; the format and dose used for clothianidin testing (another slow-acting insecticide [45]) were instead intended to measure acute toxicity within a 60-minute exposure period. Previous mathematical models using resistant mosquito colonies have suggested that sublethal insecticide treatment may still reduce vector lifespan and inhibit blood-feeding and host-seeking behaviors, thereby interrupting malaria transmission [46, 47]. Our observations are more compatible with reports from Burkina Faso, where different exposure regimens of wild, resistant _A. gambiae_ s.l. populations to deltamethrin LLINs did not induce any delayed mortality effects [47]. Further assessment of sublethal effects are warranted across additional field populations with differing resistance mechanisms, to clarify the impact of insecticidal exposure on the vectorial capacity of resistant mosquitoes.\n", - "\n", - "To date there is a paucity of data regarding the interactions between insecticide resistance and _Plasmodium_ development [48]. In the current study, _A. coluzzii_ that died after pyrethroid exposure were significantly more likely to be infected with malaria. This might be explained by elevated metabolic enzymes and/or prior pyrethroid exposure detrimentally affecting parasite development [49], although it is important to note that we did not detect any significant differences between gene overexpression in malaria-infected versus noninfected _A. coluzzii_. Alternatively, our sampled population may have been physiologically older, as phenotypic resistance is known to decline with age [50]. It is impossible to distinguish between these hypotheses using field-collected vector populations; the experimental design used in this study had other biological and technical limitations, which have been described in detail elsewhere [23, 37]\n", - "\n", - "In conclusion, as new combination and bitreated vector control interventions become available for deployment, contemporary resistance information is crucial for the rationale design of management strategies and to mitigate further selection for particular resistance mechanisms. The results from the current study contribute to growing insecticide resistance data for Cote d'Ivoire, demonstrating a loss of bioefficacy of pyrethroid LLINs and supporting the use of new active ingredients (clothianidin, chlorfenapyr, and PBO). Study findings also highlight the need for expanded insecticide resistance surveillance, including monitoring of metabolic resistance mechanisms, in conjunction with studies to better characterize the impact of sublethal insecticide exposure on vectorial capacity and the interaction between insecticide resistance and _Plasmodium_ parasite development.\n", - "\n", - "Figure 5: Metabolic gene expression in resistant versus susceptible field _Anopheles coluzzi_, which either died or survived after insecticidal exposure. Error bars represent 95% confidence intervals.\n", - "\n", - "header: Mosquito Processing, Identification of _A. gambiae_ s.l. Species Complex\n", - "\n", - "Members, and _Plasmodium falciparum_ Detection\n", - "\n", - "A subsample of field-caught mosquitoes tested in bioassays was selected for molecular analysis (n = 912). Approximately equal numbers of specimens were chosen to represent phenotypically \"susceptible\" or \"resistant\" mosquitoes for each LLIN type or insecticide dose, selected across different replicates and testing days to capture as much population-level variation as possible. RNA was extracted from individual whole-body mosquitoes according to standard protocols [23]. Field _A. gambiae_ s.l. were identified to species level [25] and were screened for the presence of _Plasmodium falciparum_[26].\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Cote d'Ivoire\",\"Site\":\"Aboude, Agboville\",\"Start_month\":7,\"Start_year\":2019,\"End_month\":7,\"End_year\":2019}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"1.4 g\\/kg\"},\"N02\":{\"Net_type\":\"PermaNet 3.0 roof panels\",\"Insecticide\":\"PBO, deltamethrin\",\"Concentration_initial\":\"25g\\/kg, 4 g\\/kg\"},\"N03\":{\"Net_type\":\"PermaNet 3.0 side panels\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"2.8 g\\/kg\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: 2.2.1 Role of CYP6P9a_R Using WHO Tube Assay Samples\n", - "\n", - "Using the hybrid FUMOZ-FANG strains, the role of the _CYP6P9a_R_ allele in the observed pyrethroid resistance was confirmed. The odds ratio of surviving exposure to permethrin when homozygous for the resistant _CYP6P9a_R_ allele (RR) was high at 693 (CI 88-5421; \\(p\\) < 0.0001) compared to the homozygous-susceptible mosquitoes (SS) (Figure 2A). The OR was 131 (CI 27-978; \\(p\\) < 0.0001) when comparing RR to RS, indicating the increasing resistance conferred by _CYP6P9a_.\n", - "\n", - "header: 4.6.2 Genotyping of the CYP6P9b-R Maker Using PCR-RFLP\n", - "\n", - "The PCR was carried out, as described for CYP6P9a. The following primers were used: 6p9brflp_0.5F 5'-CCCCCACAGGTGTAACTCTGAA-3' and 6p9brflp_0.5R 5'-TTATCCGTAAACTCAATAGCGATG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 550 bp. The digestion with the _Tsp_451 restriction enzyme followed 0.2 mL of Tsp451, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product was migrated on the 2% gel. Amplicons from susceptible mosquitoes were cut into two bands with sizes of 400 bp and 150 bp, and the resistant mosquitoes remained undigested with the band at 550 bp.\n", - "\n", - "header: Impact of the Duplicated CYP6P9a and CYP6P9b P450 Genes on the Performance of Bed Nets\n", - "\n", - "The samples collected during the evaluation of Olyset and Olyset Plus in experimental huts were grouped in several categories: dead, alive, blood fed, and unfed; room and veranda. The _CYP6P9a_/b and _6.5 kb SV_ were genotyped in each group using the respective PCR assays as described [28,29,31]. This allowed the relative survival and feeding success of resistant and susceptible insects in the presence of both bed nets to be directly measured.\n", - "\n", - "header: Abstract\n", - "\n", - "Experimental Hut Trials Reveal That CYP6P9a/b P450 Alleles Are Reducing the Efficacy of Pyrethroid-Only Olyset Net against the Malaria Vector _Anopheles funestus_ but PBO-Based Olyset Plus Net Remains Effective\n", - "\n", - "Benjamin D. Menze, Leon M. J. Mugenzi, Magellan Tchouakui, Murielle J. Wondji,\n", - "\n", - "1Vector Biology Department, Liverpool School of Tropical Medicine, Pembroke Place, Liverpool L3 5QA, UK; murielle.wondji@ilstmed.ac.uk\n", - "2Medical Entomology Department, Centre for Research in Infectious Diseases (CRID), Yaounde 13591, Cameroon; leon.mugenzi@crid-cam.net (L.M.J.M.); magellan.tchouakui@crid-cam.net (M.T.); micareme.tchouop@crid-cam.net (M.T.)\n", - "* Correspondence: benjamin.menze@crid-cam.net (B.D.M.); charles.wondji@ilstmed.ac.uk (C.S.W.)\n", - "\n", - "\n", - "Malaria remains a major public health concern in Africa. Metabolic resistance in major malaria vectors such as _An. funestus_ is jeopardizing the effectiveness of long-lasting insecticidal nets (LLINs) to control malaria. Here, we used experimental hut trials (EHTs) to investigate the impact of cytochrome P450-based resistance on the efficacy of PBO-based net (Olyset Plus) compared to a permethrin-only net (Olyset), revealing a greater loss of efficacy for the latter. EHT performed with progenies of F5 crossing between the _An. funestus_ pyrethroid-resistant strain FUMOZ and the pyrethroid-susceptible strain FANG revealed that PBO-based nets (Olyset Plus) induced a significantly higher mortality rate (99.1%) than pyrethroid-only nets (Olyset) (56.7%) (\\(p<0.0001\\)). The blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)). Genotyping the _CYP6P9a/b_ and the intergenic _6.5 kb structural variant_ (SV) resistance alleles showed that, for both nets, homozygote-resistant mosquitoes have a greater ability to blood-feed than the susceptible mosquitoes. Homozygote-resistant genotypes significantly survived more with Olyset after cone assays (e.g., _CYP6P9a_ OR = 34.6; \\(p<0.0001\\)) than homozygote-susceptible mosquitoes. A similar but lower correlation was seen with Olyset Plus (OR = 6.4; \\(p<0.001\\)). Genotyping EHT samples confirmed that _CYP6P9a/b_ and _6.5 kb_SV_ homozygote-resistant mosquitoes survive and blood-feed significantly better than homozygote-susceptible mosquitoes when exposed to Olyset. Our findings highlight the negative impact of P450-based resistance on pyrethroid-only nets, further supporting that PBO nets, such as Olyset Plus, are a better solution in areas of P450-mediated resistance to pyrethroids.\n", - "\n", - "header: Table 1: Description of the long-lasting insecticidal nets used.\n", - "footer: None\n", - "columns: ['Treatment Arm', 'Description', 'Manufacturer']\n", - "\n", - "{\"0\":{\"Treatment Arm\":\"Untreated\",\"Description\":\"100% polyester with no insecticide\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"4\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"5\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"}}\n", - "\n", - "header: 5 Conclusions\n", - "\n", - "This study reveals that insecticide resistance driven by _CYP6P9a/b_ and _6.5 kb SV_ can reduce the efficiency of Permethrin-based LLINs, such as Olyset, while PBO-based nets remain effective. However, the greater loss of efficacy observed in mosquitoes with multiple and complex resistance supports the need to introduce new products for vector control which is less reliant on pyrethroids. Meantime, PBO-based nets should be preferably deployed in areas of P450-based resistance.\n", - "\n", - "**Supplementary Materials:** The following supporting information can be downloaded at: [https://www.mdpi.com/article/10.3390/pathogens11060638/s1](https://www.mdpi.com/article/10.3390/pathogens11060638/s1), Table S1: Results of the performance of Olyset and Olyset Plus against _An. funestus_ females (crossing FUMOZ-FANG; F5) in experimental hut trial. Table S2: Correlation between _CYP6P9a and CYP6P9b_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S3: Correlation between the _6.5Kv SV_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S4: Correlation between genotypes of _CYP6P9a_, _CYP6P9b_ and _6.5 kb SV_ and mortality and blood-feeding after exposure to Olyset and Olyset Plus in experimental huts. Table S5: _CYP6P9a_ and _CYP6P9b_ acting together further increase the ability of _An. funestus_ to survive and blood feed against Olyset after experimental hut trial.\n", - "\n", - "**Author Contributions:** C.S.W. conceived and designed the study; L.M.J.M. and M.T. (Magellan Tchouakui) generated the lab crosses and performed the validation of the PCR; B.D.M. performed the experimental hut experiments with C.S.W. and genotyped the resistance makers with M.J.W. and M.T. (Micareme Tchoupo); B.D.M. and C.S.W. wrote the paper with assistance from M.T. (Magellan Tchouakui) and L.M.J.M. All authors have read and agreed to the published version of the manuscript.\n", - "\n", - "**Funding:** This research was funded in whole by the Welcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). For the purpose of open access, the authors applied a CC BY public copyright license to any author who accepted a manuscript version following this submission.\n", - "\n", - "**Institutional Review Board Statement:** NA.\n", - "\n", - "**Informed Consent Statement:** NA.\n", - "\n", - "**Data Availability Statement:** NA.\n", - "\n", - "**Acknowledgments:** A big thanks to Charles Wondji for his financial support through the Wellcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). I am also grateful to the Mibellon community.\n", - "\n", - "**Conflicts of Interest:** The authors declare that they have no competing interest.\n", - "\n", - "header: 3 Discussion\n", - "\n", - "The capacity to assess the impact of insecticide resistance on the effectiveness of insecticide-treated control tools is crucial in order to implement suitable insecticide resistance management (IRM) [32]. Evolution in the area of DNA-based resistance markers of P450-mediated resistance [28; 29] currently offers robust tools to screen pyrethroid resistance in field populations of the major malaria vectors such as _An. funestus_ and assess their impact on the effectiveness of LLINs. In this study, we use these markers to evaluate the extent to which pyrethroid resistance is impacting the efficacy of pyrethroid-only nets such as Olyset in comparison to PBO-based net such as Olyset Plus. This study also allowed to assess the interplay between P450 genes in the overall genetic variance to resistance and their combined impact on the efficacy of LLINs.\n", - "\n", - "PBO-Based Nets (Olyset Plus) Exhibit Greater Efficacy than Pyrethroid-Only Nets (Olyset) in the Context of P450-Based Resistance\n", - "\n", - "Olyset presented a moderate mortality compared to Olyset Plus (30.9% vs. 100%; \\(p\\) < 0.0001). The high mortality observed with PBO nets compared to pyrethroid-only nets is similar to what was observed in previous studies [33; 34; 35; 36]. The high mortality observed with PBO-based nets against the hybrid strain FUMOZ/FANG is due to the fact the mechanisms underlying the resistance in this population are driven by _CYP6P9a_ and _CYP6P9b_[37] which are inhibited by PBO [38]. These results demonstrate that PBO-based nets may be a more suitable solution in areas where resistance is mainly mediated by P450 genes.\n", - "\n", - "Figure 7: Combined impact of the triple resistance alleles (_CYP6P9a_/_CYP6P9b_/_6.5 kb SV_) on the efficacy of insecticide-treated nets. (**A**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances of being alive in the presence of Olyset Net. (**B**) Ability to survive exposure to Olyset net for the various combined genotypes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_. (**C**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances to bloodfed in the presence of Olyset net. (**D**) The triple RR/RR/SV+SV+ homozygous mosquitoes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_ exhibit a greater blood-feeding ability than other genotypes. Ns: non-significant; * (0.05); ** (0.01); *** (0.001).\n", - "\n", - "\n", - "The efficacy of nets observed in this study confirms the loss in efficacy of the pyrethroid-only nets against _Anopheles_ mosquitoes, as observed across the continent [39]. This loss of efficacy was observed in Mozambique [7,40], Malawi [41], Congo [42], and Cameroon [6,43]. Overall, similar to this study, it has been noticed that PBO-based nets demonstrate a better performance compared to pyrethroid-only nets [33,34]. The same trends were observed with pyrethroid type II with high mortality observed with PermaNet 3.0 compared to PermaNet 2.0 [28,29,31], suggesting that PBO-based nets with both type I or II can exhibit high performance against resistance sustained by P450s.\n", - "\n", - "P450 Resistance Can Reduce the Efficacy of Pyrethroid-Only Nets Significantly Better Than PBO-Based Nets\n", - "\n", - "When comparing the impact of _CYP6P9a/b_ on pyrethroid-only nets and PBO-based nets using samples from cone assays, we noticed that the impact of _CYP6P9a_ on pyrethroid-only nets was higher than with PBO-based nets (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. Olyset Plus, OR = 6.4; \\(p\\) < 0.001). The same trend was also observed with _CYP6P9b_ and the 6.5 kb SV. This can be explained by the fact that the addition of the PBO inhibits the cytochrome P450 enzymes, which is the main resistance mechanism in the strain used by the mosquitoes [44,45].\n", - "\n", - "On the other hand, Olyset nets have also shown reduced performance against _CYP6P9a_ and _CYP6P9b_-resistant mosquitoes. Strong association was observed between the resistant alleles and the increased ability of the mosquitoes to survive after exposure to these nets. Nevertheless, the impact of _CYP6P9a_ and _CYP6P9b_ seems to be more significant on PermaNet nets impregnated with deltamethrin [29,31], compared to Olyset nets impregnated with permethrin (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. PermaNet 2.0, OR = 239.0; \\(p\\) < 0.001 and Olyset Plus, OR = 6.4; \\(p\\) < 0.001 vs. PermaNet 3.0, OR = 81.0; \\(p\\) < 0.001) [29,31]. This significant impact on PermaNet could be associated with the fact that the hybrid strain is more resistant to type II pyrethroids, as shown by WHO bioassays, where the mosquitoes were more resistant to deltamethrin compared to permentrin (48.5% vs. 80.7%). With regards to the obtained odd ratios, a stronger association was observed between _CYP6P9a/CYP6P9b_ and the loss of efficacy of nets compared to what was observed with GST-based resistance through the L119F-_GSTe2_-resistant allele [43], in line with the greater role of P450 in resistance to pyrethroids in _An. funetus_, compared to that of GST. The 6.5 kb SV was shown to further exacerbate the loss of efficacy in the permethrin-only nets. The design of the simple PCR-based assay to genotype the _6.5 kb SV_ enabled us to assess the impact of such structural variation on the efficacy of insecticide-treated nets, including the pyrethroid-only and the PBO-synergist nets. A greater reduction in the efficacy of _6.5 kb SV_ was present on permethrin-only nets compared to PBO-based nets, which is similar to that observed with _CYP6P9a_ [31] and _CYP6P9b_ [29], in terms of the reduced mortality rate and blood-feeding inhibition. This pattern is also similar to that seen with deltamethrin-based nets (PermaNet 2.0 vs. PermaNet 3.0) [29,31]. Overall, the significantly greater loss of efficacy due to P450s observed with both type I (Olyset and PermaNet 2.0) and PBO-based nets (Olyset Plus and PermaNet 3.0) further supports the deployment of PBO-based nets to control P450-based metabolically resistant mosquito populations. The deployment of PBO-based nets should nevertheless also be monitored to regularly assess their efficacy since they too could be impacted by resistance, as shown by the fact that _CYP6P9a/b_-resistant mosquitoes could blood-feed significant better, even with Olyset Plus. This increased ability of resistant mosquitoes to blood-fed, even with PBO-based net, suggests that PBO-based nets are not immune to the impact of resistance, even if they remain significantly more effective than pyrethoid-only nets. The increased blood-feeding of P450-resistant mosquitoes when exposed to PBO-based nets may also lead to a higher malaria transmission, although this is mitigated by the high mortality observed for Olyset Plus in a experimental hut trial. Overall, evaluating the impact of P450-based resistance on the efficacy of Olyset vs. Olyset Plus further supports the results obtained in a cluster \n", - "randomized controlled trial with both nets in Tanzania showing greater effectiveness of Olyset Plus [46].\n", - "\n", - "header: 1 Introduction\n", - "\n", - "Long-lasting insecticidal nets (LLINs) remain an important component of the malaria control strategies used to reduce mortality and morbidity due to this disease in Africa [1, 2]. Mostly insecticides belonging to the pyrethroid group, as well as more and more novel insecticides, are currently recommended for bed net impregnation [3, 4, 5]. In recent years, anopheles mosquitoes have increasingly been reported to show resistance against pyrethroids across Africa. This is the case for major vectors including _Anopheles funestus_[6, 7, 8, 9] and _Anopheles gambiae_[10, 11, 12, 13, 14]. This growing spread of resistance has led to a concern that LLINs may lose their efficacy. However, quantifying such loss of efficacy remains challenging without suitable metrics associated with resistance, highlighting the need to use robust genotype/phenotype analysis for this evaluation. At a time when national malaria control \n", - "programs across Africa are seeking to take evidence-based decisions on their choice of suitable nets to help improve malaria control, it is paramount to determine the extent to which existing resistance to pyrethroid really affects LLIN efficacy. This involves an understanding of the interaction between resistance mechanisms and mosquito responses to exposure to LLINs. Broadly speaking, pyrethroid resistance can be caused by alterations in the target site of the insecticide or enhanced enzymatic activities capable of metabolizing the insecticide before it reaches the target [15-17]. Target site resistance is well studied with mutations in the target of both pyrethroid and DDT insecticides, as well as the voltage-gated sodium channels which lead to knockdown resistance (_kdr_). The development of molecular assays more than twenty years ago made it possible to track this resistance mechanism using a simple PCR [18-21] or high throughput techniques, such as TaqMan assays [22]. It has also been possible to assess the impact of _kdr_ on control tools, notably in _An. gambiae_ where these markers are common [23-25], contrary to _An. funestus_, where it is still not detected [26]. The second best characterized cause of insecticide resistance is metabolic resistance, which is more complex to understand as it can involve the detoxification, sequestration, and transportation of insecticides or their conjugates [16,17,27]. Recent studies have focused on elucidating the genetic factors which cause the increased expression of detoxification genes associated with insecticide resistance in malaria vectors such as _An. funestus_, leading to the development of simple molecular assays used to detect metabolic resistance [28-31].\n", - "\n", - "The recent design of molecular assays for the duplicated _CYP6P9a/b_ and the associated _6.5 kb_ structural variant (SV), refs. [28,29,31] now provides a great opportunity to assess the impact of P450-based pyrethroid resistance on the efficacy of various LLINs, including pyrethroid-only (Olyset) and PBO (Olyset Plus) nets. This will provide evidence-based information on their effectiveness in the presence of a growing and escalading resistance to pyrethroids. Previous assessment of this impact on PermaNet nets made with type II pyrethroid deltamethrin has been performed [28,29,31], but this remains to be carried out for type I pyrethroid nets, such as the common permethrin-based Olyset nets.\n", - "\n", - "Here, using EHT, we show a significantly greater efficacy of the PBO-based net Olyset Plus compared to the pyrethroid-only Olyset net against pyrethroid-resistant _An. funestus_. Using the genotyping of DNA-based markers of P450 resistance, we reveal that _CYP6P9a/b_ P450-based pyrethroid resistance induces a significant loss of efficacy for pyrethroid-only net Olyset against _An. funestus_. A reduced efficacy was also detected for PBO-based net Olyset Plus, but at a lower extent than for Olyset net, revealing that PBO nets are more suitable to tackle such P450-based resistance.\n", - "\n", - "header: 2.3.1 Impact on Mosquito Mortality: 2.3.2 CYP6P9a Impacting the Blood-Feeding\n", - "\n", - "Homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed better than homozygote-susceptible mosquitoes (SS) (OR = 4.5; \\(p\\) < 0.01) when exposed to Olyset. Heterozygote mosquitoes (RS) were significantly worse at blood-feeding with Olyset compared to homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-1.7; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) fed heterozygotes (OR = 5.4; CI = 2.6-10.88; \\(p\\) < 0.001) significantly better (Table S4; Figure 5C). Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.3; CI = 1.3-4.1; \\(p\\) < 0.01) (Table S4). For Olyset Plus, homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed than homozygote-susceptible mosquitoes (RS) (OR = 6.3; \\(p\\) < 0.001) when exposed to Olyset Plus. The significant ability to blood-feed was observed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.0; CI = 1.1-3.5; \\(p\\) = 0.03) (Table S4).\n", - "\n", - "header: 4.6.1 Genotyping of the CYP6P9a-R Marker Using PCR-RFLP\n", - "\n", - "DNA was extracted from various groups of mosquitoes (dead, alive, blood fed, and unfed; room and veranda) using the Livak protocol [49]. The PCR was carried out using 10 mM of each primer and 1 mL of gDNA as the template in 15 mL reaction containing 10x Kapa Taq buffer A, 25 mM of dNTPs, 25 mM of MgCl2, and 1 U of Kapa Taq (Kapa Biosystems, Boston, MA, USA). Amplification was carried out using thermocycler parameters: 95 degC for 5 min, 35 cycles of 94 degC for 30 s, 58 degC for 30 s, 72 degC for 45 s, and a final extension at 72 degC for 10 min. The following primers were used: RFLP6P9aF forward primer 5'-TCCCGAAATACAGCCTTTCAG-3 and RFLP6P9aR reverse primer 5'-ATTGGTCCATCGCTAGAAG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 450 bp. The digestion with Taq1a followed 0.2 mL of Taq1a, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product migrated on the 2% gel. Amplicons from resistant mosquitoes were cut into two bands with sizes of 350 bp and 100 bp, and the susceptible mosquitoes remained undigested with the band at 450 bp.\n", - "\n", - "header: 4.6.3 PCR Assay to Detect the 6.5 kb SV\n", - "\n", - "To easily identify the samples containing the 6.5 kb insertion, the recently designed PCR assay [28] was used to discriminate between mosquitoes with the 8.2 kb (resistant) and 1.7 kb (susceptible) _CYP6P9a_ and _CYP6P9b_ intergenic regions. Briefly, three primers were used: two (FG_5F: CTACCGTCAAAGTCCGGTAT and FG_3R: TTTCGAAAACATCCCTAAA) at regions flanking the insertion point and a third primer (FZ_INS5R: ATATGCCACGAAGGAAAGCAG) in the _6.5 kb_ insertion. One unit of KAPA Taq polymerase (Kapa Biosystems) in 1x buffer A, i.e., 25 mm of MgCl2, 25 mm of dNTPs, and 10 mm of each primer, was used to constitute a 15 mL PCR mix using the following conditions: an initial denaturation step of 3 min at 95 degC, followed by 35 cycles of 30 s at 94 degC, 30 s at 58 degC, and 60 s at 72 degC, with a final extension for 10 min at 72 degC. The amplicon was revealed on a 1.5% agarose gel stained with Midori Green Advance DNA Stain (Nippon genetics Europe GmbH) and revealed on a UV transilluminator.\n", - "\n", - "header: Impact of CYP6P9a on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", - "\n", - "Genotyping of the _CYP6P9a_ marker allowed us to assess the impact of P450-based metabolic resistance on the loss of efficacy of Olyset, but not for Olyset Plus, since most of the mosquitoes released in Olyset Plus huts died. To avoid confounding effects from blood-feeding, or net entry or exophily status, the distribution of the _CYP6P9a_ genotypes was assessed firstly only among unfed mosquitoes collected in the room. This revealed a highly significant difference in the frequency of the three genotypes between the dead and alive mosquitoes (chi-square = 28.8; \\(p\\) < 0.0001) (Figure 5). Analysis of the correlation between each genotype and mortality revealed that _CYP6P9a_ homozygous-resistant mosquitoes (RR) show an increased ability to survive exposure to the Olyset when compared to homozygote-susceptible mosquitoes (SS) with (OR = 5.0; CI = 2.01-12.4; \\(p\\) = 0.001). The strength of this association was further shown by the significant ability to survive exposure when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.04; CI = 1.1-3.6; \\(p\\) < 0.05). However, heterozygote mosquitoes (RS) did not survive exposure to Olyset better than homozygote-susceptible mosquitoes (SS) (OR = 1.8; CI = 0.8-3.9; \\(p\\) > 0.05) (Figure 5A; Table S4; Figure 5B).\n", - "\n", - "Figure 5: Impact of both _CYP6P9a_ and _CYP6P9b_ on the efficacy of bed nets in the experimental hut trial. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: \\(p\\) < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Association between _CYP6P9a_ and ability to blood-feed when exposed to Olyset. The _CYP6P9a_–R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (**D**) Association between _CYP6P9b_ and ability to survive exposure to Olyset in the experimental hut trial. (**E**) Allelic frequency of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the _CYP6P9b_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9b_S_. (**F**) Association between _CYP6P9b_ gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The _CYP6P9b_-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\n", - "\n", - "header: 2.4.1 The Impact of CYP6P9b on Mortality: 2.4.2 CYP6P9b Impacting the Blood-Feeding\n", - "\n", - "A strong association was observed between _CYP6P9b_ genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could more successfully blood-fed when compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 4.1-24.9; \\(p\\) < 0.001) (Table S4; Figure 5F). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset was not different to that of homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-2.2; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 11.1; CI = 5.3-23.03: \\(p\\) < 0.001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood fed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.7; CI = 2.5-8.1; \\(p\\) < 0.01) (Table S4).\n", - "\n", - "header: 2.1.1. Quality Control and Performance of the Nets against the Hybrid Strain: 2.1.2 Performance of Nets against the Hybrid Strain Using Experimental Hut\n", - "\n", - "A total number of 578 mosquitoes from the hybrid strain were released and recaptured on a period of one week. In total, 141 samples were released in the control hut, 224 in the hut were treated with Olyset, and 213 in the hut were treated with Olyset Plus.\n", - "\n", - "**Mortality**: Analysis of mortality rates revealed very high mortality of the hybrid FUMOZ-FANG strain against the PBO-based Olyset Plus net (99.1%). In contrast, lower mortality was observed for the pyrethroid-only Olyset net (56.7%). Very low mortality was observed in the untreated control net (9.9%) (Figure 1D; Table S1).\n", - "\n", - "**Blood-feeding**: The blood-feeding rate did not significantly differ when comparing the control (7.8%) to Olyset (11.6% \\(p>0.05\\)) and Olyset Plus (5.6%; \\(p>0.05\\)). However, the blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)) (Figure 1D; Table S1).\n", - "\n", - "Figure 1: Susceptibility profile of the hybrid FUMOZ-FANG strain to pyrethroids. (**A**) Net quality assessment with recorded mortalities after cone assays with Kisumu, the _An. gambiae_-susceptible lab strain, and the _An. funestus_ FUMOZ-FANG strain. (**B**) Susceptibility profile of the hybrid FUMOZ-FANG strain to type II (deltamethrin) pyrethroids and propoxur with recorded mortalities following 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**C**) Susceptibility profile of the hybrid FUMOZ-FANG strain to deltamethrin (type II pyrethroids) and permethrin (type I pyrethroids) with recorded mortalities following 30 and 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**D**) Proportion of mortality, blood-feeding, and exophily rate for Olyset and Olyset Plus against _An. funestus_ (crossing the FUMOZ-FANG strain (F5)). Ns = \\(p>0.05\\); * = \\(p\\leq 0.05\\); ** = \\(p\\leq 0.01\\); *** = \\(p\\leq 0.001\\).\n", - "\n", - "\n", - "\n", - "\n", - "**Exophily**: The exophily rate in the hut with Olyset net (23.7%) was significantly higher than that in the control hut (13.5%) (_p_ = 0.02), as well as than for Olyset Plus (7.5%; \\(p\\) < 0.001). No significant difference was observed between Olyset Plus and the control net (_p_ = 0.3) (Figure 1D; Table S1).\n", - "\n", - "Validating the Role of CYP6P9a/b and 6.5 kb SV in Pvrethroid Resistance in the Hybrid FUMOZ-FANG Strains before the Experimental Hut Trials\n", - "\n", - "header: 2.2.2 Validating the Role of CYP6P9b_R_ Using Sample from WHO Tube Assays\n", - "\n", - "To confirm the ability of the _CYP6P9b_R_ allele to predict pyrethroid resistance phenotype in the hybrid strain FUMOZ-FANG, the F5 samples were genotyped. This revealed that those that stayed alive after exposure to permethrin for 90 minutes are mainly homozygote\n", - "\n", - "Figure 2: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (**A**) Tube assay _CYP6P9a_ and mortality. Role of _CYP6P9a_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9a_ genotypes according to resistance phenotypes. (**B**) Tube assay _CYP6P9b_ and mortality. Role of _CYP6P9b_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9b_ genotypes according to resistance phenotypes. (**C**) Cone assay _CYP6P9a_ and mortality. Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: \\(p\\) < 0.001). (**D**) Cone assay _CYP6P9a_ and mortality allele. Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the _CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**E**) Cone assay _CYP6P9b_ and mortality. Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset using the cone test, showing strong association (RR vs. SS: \\(p\\) < 0.001).\n", - "\n", - "\n", - "resistant (20.8%) and heterozygotes (75%), with only two being homozygote-susceptible. Among the 47 mosquitoes found dead after 30 min exposure to permethrin (highly susceptible), 97.87% were found to be homozygote-susceptible, and one remaining was a heterozygote (Figure 2B). A strong association was perceived between permethrin resistance and the _CYP6P9b_ genotypes when comparing RR vs. SS (OR = infinity; \\(p\\) < 0.0001) and RS vs. SS (OR = 715; \\(p\\) < 0.0001).\n", - "\n", - "2.3 Validation of the Role of CYP6P9a and CYP6P9b in Conferring Resistance Using Samples from Cone Assays\n", - "\n", - "Using dead and alive mosquitoes obtained after cone assays, _CYP6P9a_ homozygous-resistant mosquitoes (RR) and heterozygous (RS) could survive significantly better following exposure to Olyset and Olyset Plus than homozygote-susceptible mosquitoes (Table S2). Olyset shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 35.1; \\(p\\) < 0.0001) and RS vs. SS (OR = 34.6; \\(p\\) < 0.0001) for _CYP6P9a_ (Figure 2C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 7.7; \\(p\\) < 0.05) (Table S2; Figure 2D). Concerning _CYP6P9b_, homozygous-resistant mosquitoes (RR) and heterozygous (RS) could also survive significantly better following survive exposure to Olyset net. A strong association was noticed between the gene and the ability to survive when comparing RR to SS (OR = 32.4; \\(p\\) < 0.0001) and RS vs. SS (OR = 97.3; \\(p\\) < 0.0001) (Table S2; Figure 2E).\n", - "\n", - "Olyset Plus shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 6.4; \\(p\\) < 0.001) and RS vs. SS (OR = 7.2; \\(p\\) < 0.001) for _CYP6P9a_ (Table S2; Figure 3A). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.0; \\(p\\) = 0.05) (Table S2; Figure 3B). Concerning the _CYP6P9b_, Olyset Plus equally shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 9.7; \\(p\\) < 0.001) and RS vs. SS (OR = 17.9; \\(p\\) < 0.001) for _CYP6P9b_ (Table S2; Figure 3C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.2; \\(p\\) = 0.01) (Table S2).\n", - "\n", - "Figure 3: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset Plus nets after cone assays. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (_p_ < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset Plus using the cone test, showing the significant ability of the mosquitoes carrying the RR genotype to survive compared to SS (_p_ < 0.001).\n", - "\n", - "header: Study Site: Laboratory Strain: FUMOZ/FANG Crossing\n", - "\n", - "Previous studies revealed that the duplicated P450 _CYP6P9a/b_ and intergenic _6.5 kb sv_ is mainly found in mosquitoes from southern Africa and absent from mosquitoes collected elsewhere in Africa [31,45]. Moreover, these resistance markers have already been selected (close to fixation) in the southern African _An. funestus_ populations, preventing free-flying mosquitoes from being used in this region in order to assess their impact on LLIN efficacy, as all mosquitoes are nearly homozygote-resistant now [7]. Therefore, to evaluate the impact of these cytochrome P450, we opted to use a hybrid strain generated from two _An. funestus_ laboratory colonies: the FANG colony, a completely insecticide-susceptible colony originating from Angola, and the FUMOZ colony derived from southern Mozambique, which is highly resistant to pyrethroids and carbamates [48]. During rearing, the pupae of each strain were kept individually in Falcon tubes (15 mL), locked with a piece of cotton for individual emergence. After the emergence of pupae in the Falcon tube, the males and the females were separated. A reciprocal crossing was performed using 50 males and 50 females from the other strain. After the initial F1 generation obtained from the reciprocal crosses of the 50 males and 50 females of both strains, the hybrid strain was reared to F5 and F6 generation, presenting good segregation in all the three genotypes. The hybrid strain was then used for the release recapture experiment in the huts.\n", - "\n", - "header: Susceptibility Profile of the Hybrid FUMOZ/FANG Strain to Pyrethroids\n", - "\n", - "Before assessing the impact of _CYP6P9a/b_ on the effectiveness of LLINs using the experimental huts, the resistance status of the hybrid FUMOZ-FANG was evaluated in laboratory conditions via WHO tube tests and cone tests, and the role of _CYP6P9a/b_ in terms of resistance was assessed.\n", - "\n", - "**Bioassays:** WHO bioassays were conducted with 0.05% deltamethrin and 0.1% propoxur. To generate highly resistant and highly susceptible mosquitoes, WHO bioassays were conducted with 0.75% permethrin and 0.05% deltamethrin for 30 min and 90 min. For each insecticide, four replicates of 25 mosquitoes from the hybrid strains were used. Alive mosquitoes after 90 min of exposure and dead mosquitoes after 30 min of exposure were then genotyped to establish the association between the _CYP6P9a/b_ and _6.5 kb SV_ resistance alleles and the ability of mosquitoes to survive to these insecticides.\n", - "\n", - "**Cone assays:** Cone test bioassays were conducted with a fragment of Olyset and Olyset Plus using the resistant hybrid strains FUMOZ-FANG. Five batches of 10 unfed females, aged 2-5 days old, were exposed to each bed net for three minutes. They were then transferred into the holding paper cup containers. The knockdown was checked after 60 min and the mortality after 24 h. Alive and dead mosquitoes obtained after exposure were then genotyped. The association between the _CYP6P9a/b_-resistant allele and the ability of mosquitoes to survive to these insecticides was also established.\n", - "\n", - "header: Results\n", - "\n", - "All the nets used in the study were first exposed to the susceptible lab strain Kisumu for quality control. The mortality for Olyset and Olyset Plus was 100% (Figure 1A). The _An. funestus_ hybrid strain exposed to bed nets using WHO cone assays exhibited mortality rates of 30.1 \\(\\pm\\) 11.5% for Olyset and 100 \\(\\pm\\) 0% for Olyset Plus, suggesting a greater efficacy of PBO synergist nets compared to pyrethroid-only nets.\n", - "\n", - "**Susceptibility profiles of the FUMOZ-FANG:** The bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to deltamethrin with mortality of 43.7 \\(\\pm\\) 5.9%, and was resistant to propoxur with mortality of 67.3 \\(\\pm\\) 6.6% (Figure 1B). The second set of bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to permethrin with mortality of 43.7 \\(\\pm\\) 1.6% and 39.3 \\(\\pm\\) 1.6%, respectively, for 90 min and 30 min. Resistance was also observed with deltamethrin with a mortality of 86.4 \\(\\pm\\) 3.1% and 42.3 \\(\\pm\\) 2.5%, respectively, for 90 min and 30 min (Figure 1C).\n", - "\n", - "header: Resistance Escalation with Multiple Resistance Alleles Present a Greater Risk of Control Failure\n", - "\n", - "This study confirms the findings by [28], suggesting that the _6.5 kb SV_ acts as an enhancer for nearby duplicated P450 genes _CYP6P9a_ and _CYP6P9b_, leading to their increased overexpression, thus creating greater resistance. This _6.5 kb SV_ is strongly associated with an aggravation of pyrethroid resistance, which reduces the efficacy of pyrethroid-only nets. The fixation of this _6.5 kb SV_, besides the resistant alleles of _CYP6P9a_ and _CYP6P9b_, could explain the resistance escalation currently observed against the _An. funestus_ population from the southern part of Africa reducing the efficacy of bed nets [7,41].\n", - "\n", - "This study revealed that multiple and complex resistance combining elevated expression (_CYP6P9a/b_) [45], as well as the selection of cis-regulatory motifs for transcription binding sites (CnCC/MAF) [31], coupled with structural variations such as the _6.5 kb_, which is known to be enriched with several regulatory elements [28], can lead to a greater reduction in bed net efficacy. The fact that triple homozygote-resistant mosquitoes could survive better against exposure to pyrethroid-only nets compared to all genotypes reveals the greater risk that an unabated increase in resistance can likely lead to the failure of insecticide-based interventions, as predicted by the WHO global plan for insecticide resistance management. This calls for novel nets which do not rely on pyrethroids in the future. However, the impact of these resistance alleles on the efficacy of LLINs in natural populations remains to be established, as we only performed a test with a hybrid strain from two laboratory strains. This work must be urgently carried out, particularly as the molecular tools are increasingly available.\n", - "\n", - "header: 2.5.1 The Impact of 6.5 kb SV on Mortality: 2.5.2 The Impact of 6.5. kb SV on Blood-Feeding\n", - "\n", - "A strong association was observed between _6.5 \\(kb\\)_ SV genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could blood-feed better compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 3.2-31.4; \\(p\\)\\(<\\) 0.0001) (Table S4; Figure 6C). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset differs to that of homozygote-susceptible mosquitoes (SS) but not significantly (OR = 1.7; CI = 0.5-5.4; \\(p\\) = 0.4) (Table S4). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 10.2; CI = 4.9-21.11: \\(p\\)\\(<\\) 0.0001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.2; CI = 2.3-7.9; \\(p\\)\\(<\\) 0.0001) (Table S5; Figure 6D). A similar trend was observed against Olyset Plus nets (Table S5; Figure 6E,F).\n", - "\n", - "Combined Impact of CYP6P9a and CYP6Pb on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", - "\n", - "As _CYP6P9b_ genotypes were shown to be independent from those of _CYP6P9a_[28], we also assessed how combinations of genotypes at both genes impact the efficacy of Olyset for mortality and blood-feeding. Analysis of the impact of combined genotypes on mortality with Olyset confirmed the independent segregation of genotypes at both genes with several combinations of genotypes observed including RR/RR, RR/RS, RS/RS, RS/SS and SS/SS (Table S5). A comparison of the distribution of both sets of genotypes revealed that double homozygote-resistant (RR/RR) mosquitoes at both genes had a far greater ability to survive exposure to Olyset than most of the other combinations (Table S4) particularly when compared to double susceptible (SS/SS) (OR = 8.6; CI = 1.8-39.1; \\(p\\)\\(<\\) 0.01) (Table S5). A significantly increased survival is also observed in RR/RR when compared to other combinations although with a lower odds ratio, such as against RR/SS (OR = 2; \\(p\\)\\(<\\) 0.01) (Table S5).\n", - "\n", - "Analysis of the combined genotype distribution for blood-feeding also revealed a significantly increased ability to blood-feed for double homozygote-resistant mosquitoes when exposed to Olyset with the highest significance against double homozygote-susceptible mosquitoes (OR = 9.3; \\(p\\)\\(<\\) 0.001) (Table S5).\n", - "\n", - "Combined Impact of the Triple Resistance Alleles CYP6P9a/CYP6P9b/6.5 kb SV on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", - "\n", - "Experimental hut trials showed that triple RR/RR/SV\\({}^{+}\\)SV\\({}^{+}\\) homozygotes were more likely to survive exposure to Olyset compared to any other combined genotypes except RR/RS/RS (Figure 7A). RR/RR/SV+SV+ survived more than SS/SS/SV\\(-\\)SV\\(-\\) (OR = 8.5; CI: 2.53-28.46; \\(p\\)\\(=\\) 0.0005) and RS/RS/SV+SV\\(-\\) (OR = 3.57; CI = 1.82- 7.02; \\(p\\)\\(=\\) 0.0002). There was no significant difference between the RR/RR/SV+SV+ and RR/RR/SV+SV\\(-\\) genotypes (OR = 1; CI = 0.16-7.02; \\(p\\)\\(=\\) 1.0), and both had a similar trend in terms of survival with the same odds ratio (Figure 7B). In addition to the ability to survive exposure to the net, RR/RR/SV+SV+ also could blood-feed better than SS/SS/SV\\(-\\) SV\\(-\\) (OR = 7.0; CI: 2.38-20.52; \\(p\\)\\(=\\) 0.0004) and the other combinations in the presence of Olyset (Figure 7C,D).\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: 2.2.1 Role of CYP6P9a_R Using WHO Tube Assay Samples\n", - "\n", - "Using the hybrid FUMOZ-FANG strains, the role of the _CYP6P9a_R_ allele in the observed pyrethroid resistance was confirmed. The odds ratio of surviving exposure to permethrin when homozygous for the resistant _CYP6P9a_R_ allele (RR) was high at 693 (CI 88-5421; \\(p\\) < 0.0001) compared to the homozygous-susceptible mosquitoes (SS) (Figure 2A). The OR was 131 (CI 27-978; \\(p\\) < 0.0001) when comparing RR to RS, indicating the increasing resistance conferred by _CYP6P9a_.\n", - "\n", - "header: 4.6.2 Genotyping of the CYP6P9b-R Maker Using PCR-RFLP\n", - "\n", - "The PCR was carried out, as described for CYP6P9a. The following primers were used: 6p9brflp_0.5F 5'-CCCCCACAGGTGTAACTCTGAA-3' and 6p9brflp_0.5R 5'-TTATCCGTAAACTCAATAGCGATG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 550 bp. The digestion with the _Tsp_451 restriction enzyme followed 0.2 mL of Tsp451, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product was migrated on the 2% gel. Amplicons from susceptible mosquitoes were cut into two bands with sizes of 400 bp and 150 bp, and the resistant mosquitoes remained undigested with the band at 550 bp.\n", - "\n", - "header: Abstract\n", - "\n", - "Experimental Hut Trials Reveal That CYP6P9a/b P450 Alleles Are Reducing the Efficacy of Pyrethroid-Only Olyset Net against the Malaria Vector _Anopheles funestus_ but PBO-Based Olyset Plus Net Remains Effective\n", - "\n", - "Benjamin D. Menze, Leon M. J. Mugenzi, Magellan Tchouakui, Murielle J. Wondji,\n", - "\n", - "1Vector Biology Department, Liverpool School of Tropical Medicine, Pembroke Place, Liverpool L3 5QA, UK; murielle.wondji@ilstmed.ac.uk\n", - "2Medical Entomology Department, Centre for Research in Infectious Diseases (CRID), Yaounde 13591, Cameroon; leon.mugenzi@crid-cam.net (L.M.J.M.); magellan.tchouakui@crid-cam.net (M.T.); micareme.tchouop@crid-cam.net (M.T.)\n", - "* Correspondence: benjamin.menze@crid-cam.net (B.D.M.); charles.wondji@ilstmed.ac.uk (C.S.W.)\n", - "\n", - "\n", - "Malaria remains a major public health concern in Africa. Metabolic resistance in major malaria vectors such as _An. funestus_ is jeopardizing the effectiveness of long-lasting insecticidal nets (LLINs) to control malaria. Here, we used experimental hut trials (EHTs) to investigate the impact of cytochrome P450-based resistance on the efficacy of PBO-based net (Olyset Plus) compared to a permethrin-only net (Olyset), revealing a greater loss of efficacy for the latter. EHT performed with progenies of F5 crossing between the _An. funestus_ pyrethroid-resistant strain FUMOZ and the pyrethroid-susceptible strain FANG revealed that PBO-based nets (Olyset Plus) induced a significantly higher mortality rate (99.1%) than pyrethroid-only nets (Olyset) (56.7%) (\\(p<0.0001\\)). The blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)). Genotyping the _CYP6P9a/b_ and the intergenic _6.5 kb structural variant_ (SV) resistance alleles showed that, for both nets, homozygote-resistant mosquitoes have a greater ability to blood-feed than the susceptible mosquitoes. Homozygote-resistant genotypes significantly survived more with Olyset after cone assays (e.g., _CYP6P9a_ OR = 34.6; \\(p<0.0001\\)) than homozygote-susceptible mosquitoes. A similar but lower correlation was seen with Olyset Plus (OR = 6.4; \\(p<0.001\\)). Genotyping EHT samples confirmed that _CYP6P9a/b_ and _6.5 kb_SV_ homozygote-resistant mosquitoes survive and blood-feed significantly better than homozygote-susceptible mosquitoes when exposed to Olyset. Our findings highlight the negative impact of P450-based resistance on pyrethroid-only nets, further supporting that PBO nets, such as Olyset Plus, are a better solution in areas of P450-mediated resistance to pyrethroids.\n", - "\n", - "header: Impact of the Duplicated CYP6P9a and CYP6P9b P450 Genes on the Performance of Bed Nets\n", - "\n", - "The samples collected during the evaluation of Olyset and Olyset Plus in experimental huts were grouped in several categories: dead, alive, blood fed, and unfed; room and veranda. The _CYP6P9a_/b and _6.5 kb SV_ were genotyped in each group using the respective PCR assays as described [28,29,31]. This allowed the relative survival and feeding success of resistant and susceptible insects in the presence of both bed nets to be directly measured.\n", - "\n", - "header: 4.6.3 PCR Assay to Detect the 6.5 kb SV\n", - "\n", - "To easily identify the samples containing the 6.5 kb insertion, the recently designed PCR assay [28] was used to discriminate between mosquitoes with the 8.2 kb (resistant) and 1.7 kb (susceptible) _CYP6P9a_ and _CYP6P9b_ intergenic regions. Briefly, three primers were used: two (FG_5F: CTACCGTCAAAGTCCGGTAT and FG_3R: TTTCGAAAACATCCCTAAA) at regions flanking the insertion point and a third primer (FZ_INS5R: ATATGCCACGAAGGAAAGCAG) in the _6.5 kb_ insertion. One unit of KAPA Taq polymerase (Kapa Biosystems) in 1x buffer A, i.e., 25 mm of MgCl2, 25 mm of dNTPs, and 10 mm of each primer, was used to constitute a 15 mL PCR mix using the following conditions: an initial denaturation step of 3 min at 95 degC, followed by 35 cycles of 30 s at 94 degC, 30 s at 58 degC, and 60 s at 72 degC, with a final extension for 10 min at 72 degC. The amplicon was revealed on a 1.5% agarose gel stained with Midori Green Advance DNA Stain (Nippon genetics Europe GmbH) and revealed on a UV transilluminator.\n", - "\n", - "header: 3 Discussion\n", - "\n", - "The capacity to assess the impact of insecticide resistance on the effectiveness of insecticide-treated control tools is crucial in order to implement suitable insecticide resistance management (IRM) [32]. Evolution in the area of DNA-based resistance markers of P450-mediated resistance [28; 29] currently offers robust tools to screen pyrethroid resistance in field populations of the major malaria vectors such as _An. funestus_ and assess their impact on the effectiveness of LLINs. In this study, we use these markers to evaluate the extent to which pyrethroid resistance is impacting the efficacy of pyrethroid-only nets such as Olyset in comparison to PBO-based net such as Olyset Plus. This study also allowed to assess the interplay between P450 genes in the overall genetic variance to resistance and their combined impact on the efficacy of LLINs.\n", - "\n", - "PBO-Based Nets (Olyset Plus) Exhibit Greater Efficacy than Pyrethroid-Only Nets (Olyset) in the Context of P450-Based Resistance\n", - "\n", - "Olyset presented a moderate mortality compared to Olyset Plus (30.9% vs. 100%; \\(p\\) < 0.0001). The high mortality observed with PBO nets compared to pyrethroid-only nets is similar to what was observed in previous studies [33; 34; 35; 36]. The high mortality observed with PBO-based nets against the hybrid strain FUMOZ/FANG is due to the fact the mechanisms underlying the resistance in this population are driven by _CYP6P9a_ and _CYP6P9b_[37] which are inhibited by PBO [38]. These results demonstrate that PBO-based nets may be a more suitable solution in areas where resistance is mainly mediated by P450 genes.\n", - "\n", - "Figure 7: Combined impact of the triple resistance alleles (_CYP6P9a_/_CYP6P9b_/_6.5 kb SV_) on the efficacy of insecticide-treated nets. (**A**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances of being alive in the presence of Olyset Net. (**B**) Ability to survive exposure to Olyset net for the various combined genotypes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_. (**C**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances to bloodfed in the presence of Olyset net. (**D**) The triple RR/RR/SV+SV+ homozygous mosquitoes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_ exhibit a greater blood-feeding ability than other genotypes. Ns: non-significant; * (0.05); ** (0.01); *** (0.001).\n", - "\n", - "\n", - "The efficacy of nets observed in this study confirms the loss in efficacy of the pyrethroid-only nets against _Anopheles_ mosquitoes, as observed across the continent [39]. This loss of efficacy was observed in Mozambique [7,40], Malawi [41], Congo [42], and Cameroon [6,43]. Overall, similar to this study, it has been noticed that PBO-based nets demonstrate a better performance compared to pyrethroid-only nets [33,34]. The same trends were observed with pyrethroid type II with high mortality observed with PermaNet 3.0 compared to PermaNet 2.0 [28,29,31], suggesting that PBO-based nets with both type I or II can exhibit high performance against resistance sustained by P450s.\n", - "\n", - "P450 Resistance Can Reduce the Efficacy of Pyrethroid-Only Nets Significantly Better Than PBO-Based Nets\n", - "\n", - "When comparing the impact of _CYP6P9a/b_ on pyrethroid-only nets and PBO-based nets using samples from cone assays, we noticed that the impact of _CYP6P9a_ on pyrethroid-only nets was higher than with PBO-based nets (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. Olyset Plus, OR = 6.4; \\(p\\) < 0.001). The same trend was also observed with _CYP6P9b_ and the 6.5 kb SV. This can be explained by the fact that the addition of the PBO inhibits the cytochrome P450 enzymes, which is the main resistance mechanism in the strain used by the mosquitoes [44,45].\n", - "\n", - "On the other hand, Olyset nets have also shown reduced performance against _CYP6P9a_ and _CYP6P9b_-resistant mosquitoes. Strong association was observed between the resistant alleles and the increased ability of the mosquitoes to survive after exposure to these nets. Nevertheless, the impact of _CYP6P9a_ and _CYP6P9b_ seems to be more significant on PermaNet nets impregnated with deltamethrin [29,31], compared to Olyset nets impregnated with permethrin (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. PermaNet 2.0, OR = 239.0; \\(p\\) < 0.001 and Olyset Plus, OR = 6.4; \\(p\\) < 0.001 vs. PermaNet 3.0, OR = 81.0; \\(p\\) < 0.001) [29,31]. This significant impact on PermaNet could be associated with the fact that the hybrid strain is more resistant to type II pyrethroids, as shown by WHO bioassays, where the mosquitoes were more resistant to deltamethrin compared to permentrin (48.5% vs. 80.7%). With regards to the obtained odd ratios, a stronger association was observed between _CYP6P9a/CYP6P9b_ and the loss of efficacy of nets compared to what was observed with GST-based resistance through the L119F-_GSTe2_-resistant allele [43], in line with the greater role of P450 in resistance to pyrethroids in _An. funetus_, compared to that of GST. The 6.5 kb SV was shown to further exacerbate the loss of efficacy in the permethrin-only nets. The design of the simple PCR-based assay to genotype the _6.5 kb SV_ enabled us to assess the impact of such structural variation on the efficacy of insecticide-treated nets, including the pyrethroid-only and the PBO-synergist nets. A greater reduction in the efficacy of _6.5 kb SV_ was present on permethrin-only nets compared to PBO-based nets, which is similar to that observed with _CYP6P9a_ [31] and _CYP6P9b_ [29], in terms of the reduced mortality rate and blood-feeding inhibition. This pattern is also similar to that seen with deltamethrin-based nets (PermaNet 2.0 vs. PermaNet 3.0) [29,31]. Overall, the significantly greater loss of efficacy due to P450s observed with both type I (Olyset and PermaNet 2.0) and PBO-based nets (Olyset Plus and PermaNet 3.0) further supports the deployment of PBO-based nets to control P450-based metabolically resistant mosquito populations. The deployment of PBO-based nets should nevertheless also be monitored to regularly assess their efficacy since they too could be impacted by resistance, as shown by the fact that _CYP6P9a/b_-resistant mosquitoes could blood-feed significant better, even with Olyset Plus. This increased ability of resistant mosquitoes to blood-fed, even with PBO-based net, suggests that PBO-based nets are not immune to the impact of resistance, even if they remain significantly more effective than pyrethoid-only nets. The increased blood-feeding of P450-resistant mosquitoes when exposed to PBO-based nets may also lead to a higher malaria transmission, although this is mitigated by the high mortality observed for Olyset Plus in a experimental hut trial. Overall, evaluating the impact of P450-based resistance on the efficacy of Olyset vs. Olyset Plus further supports the results obtained in a cluster \n", - "randomized controlled trial with both nets in Tanzania showing greater effectiveness of Olyset Plus [46].\n", - "\n", - "header: 4.6.1 Genotyping of the CYP6P9a-R Marker Using PCR-RFLP\n", - "\n", - "DNA was extracted from various groups of mosquitoes (dead, alive, blood fed, and unfed; room and veranda) using the Livak protocol [49]. The PCR was carried out using 10 mM of each primer and 1 mL of gDNA as the template in 15 mL reaction containing 10x Kapa Taq buffer A, 25 mM of dNTPs, 25 mM of MgCl2, and 1 U of Kapa Taq (Kapa Biosystems, Boston, MA, USA). Amplification was carried out using thermocycler parameters: 95 degC for 5 min, 35 cycles of 94 degC for 30 s, 58 degC for 30 s, 72 degC for 45 s, and a final extension at 72 degC for 10 min. The following primers were used: RFLP6P9aF forward primer 5'-TCCCGAAATACAGCCTTTCAG-3 and RFLP6P9aR reverse primer 5'-ATTGGTCCATCGCTAGAAG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 450 bp. The digestion with Taq1a followed 0.2 mL of Taq1a, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product migrated on the 2% gel. Amplicons from resistant mosquitoes were cut into two bands with sizes of 350 bp and 100 bp, and the susceptible mosquitoes remained undigested with the band at 450 bp.\n", - "\n", - "header: 5 Conclusions\n", - "\n", - "This study reveals that insecticide resistance driven by _CYP6P9a/b_ and _6.5 kb SV_ can reduce the efficiency of Permethrin-based LLINs, such as Olyset, while PBO-based nets remain effective. However, the greater loss of efficacy observed in mosquitoes with multiple and complex resistance supports the need to introduce new products for vector control which is less reliant on pyrethroids. Meantime, PBO-based nets should be preferably deployed in areas of P450-based resistance.\n", - "\n", - "**Supplementary Materials:** The following supporting information can be downloaded at: [https://www.mdpi.com/article/10.3390/pathogens11060638/s1](https://www.mdpi.com/article/10.3390/pathogens11060638/s1), Table S1: Results of the performance of Olyset and Olyset Plus against _An. funestus_ females (crossing FUMOZ-FANG; F5) in experimental hut trial. Table S2: Correlation between _CYP6P9a and CYP6P9b_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S3: Correlation between the _6.5Kv SV_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S4: Correlation between genotypes of _CYP6P9a_, _CYP6P9b_ and _6.5 kb SV_ and mortality and blood-feeding after exposure to Olyset and Olyset Plus in experimental huts. Table S5: _CYP6P9a_ and _CYP6P9b_ acting together further increase the ability of _An. funestus_ to survive and blood feed against Olyset after experimental hut trial.\n", - "\n", - "**Author Contributions:** C.S.W. conceived and designed the study; L.M.J.M. and M.T. (Magellan Tchouakui) generated the lab crosses and performed the validation of the PCR; B.D.M. performed the experimental hut experiments with C.S.W. and genotyped the resistance makers with M.J.W. and M.T. (Micareme Tchoupo); B.D.M. and C.S.W. wrote the paper with assistance from M.T. (Magellan Tchouakui) and L.M.J.M. All authors have read and agreed to the published version of the manuscript.\n", - "\n", - "**Funding:** This research was funded in whole by the Welcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). For the purpose of open access, the authors applied a CC BY public copyright license to any author who accepted a manuscript version following this submission.\n", - "\n", - "**Institutional Review Board Statement:** NA.\n", - "\n", - "**Informed Consent Statement:** NA.\n", - "\n", - "**Data Availability Statement:** NA.\n", - "\n", - "**Acknowledgments:** A big thanks to Charles Wondji for his financial support through the Wellcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). I am also grateful to the Mibellon community.\n", - "\n", - "**Conflicts of Interest:** The authors declare that they have no competing interest.\n", - "\n", - "header: 2.3.1 Impact on Mosquito Mortality: 2.3.2 CYP6P9a Impacting the Blood-Feeding\n", - "\n", - "Homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed better than homozygote-susceptible mosquitoes (SS) (OR = 4.5; \\(p\\) < 0.01) when exposed to Olyset. Heterozygote mosquitoes (RS) were significantly worse at blood-feeding with Olyset compared to homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-1.7; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) fed heterozygotes (OR = 5.4; CI = 2.6-10.88; \\(p\\) < 0.001) significantly better (Table S4; Figure 5C). Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.3; CI = 1.3-4.1; \\(p\\) < 0.01) (Table S4). For Olyset Plus, homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed than homozygote-susceptible mosquitoes (RS) (OR = 6.3; \\(p\\) < 0.001) when exposed to Olyset Plus. The significant ability to blood-feed was observed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.0; CI = 1.1-3.5; \\(p\\) = 0.03) (Table S4).\n", - "\n", - "header: 1 Introduction\n", - "\n", - "Long-lasting insecticidal nets (LLINs) remain an important component of the malaria control strategies used to reduce mortality and morbidity due to this disease in Africa [1, 2]. Mostly insecticides belonging to the pyrethroid group, as well as more and more novel insecticides, are currently recommended for bed net impregnation [3, 4, 5]. In recent years, anopheles mosquitoes have increasingly been reported to show resistance against pyrethroids across Africa. This is the case for major vectors including _Anopheles funestus_[6, 7, 8, 9] and _Anopheles gambiae_[10, 11, 12, 13, 14]. This growing spread of resistance has led to a concern that LLINs may lose their efficacy. However, quantifying such loss of efficacy remains challenging without suitable metrics associated with resistance, highlighting the need to use robust genotype/phenotype analysis for this evaluation. At a time when national malaria control \n", - "programs across Africa are seeking to take evidence-based decisions on their choice of suitable nets to help improve malaria control, it is paramount to determine the extent to which existing resistance to pyrethroid really affects LLIN efficacy. This involves an understanding of the interaction between resistance mechanisms and mosquito responses to exposure to LLINs. Broadly speaking, pyrethroid resistance can be caused by alterations in the target site of the insecticide or enhanced enzymatic activities capable of metabolizing the insecticide before it reaches the target [15-17]. Target site resistance is well studied with mutations in the target of both pyrethroid and DDT insecticides, as well as the voltage-gated sodium channels which lead to knockdown resistance (_kdr_). The development of molecular assays more than twenty years ago made it possible to track this resistance mechanism using a simple PCR [18-21] or high throughput techniques, such as TaqMan assays [22]. It has also been possible to assess the impact of _kdr_ on control tools, notably in _An. gambiae_ where these markers are common [23-25], contrary to _An. funestus_, where it is still not detected [26]. The second best characterized cause of insecticide resistance is metabolic resistance, which is more complex to understand as it can involve the detoxification, sequestration, and transportation of insecticides or their conjugates [16,17,27]. Recent studies have focused on elucidating the genetic factors which cause the increased expression of detoxification genes associated with insecticide resistance in malaria vectors such as _An. funestus_, leading to the development of simple molecular assays used to detect metabolic resistance [28-31].\n", - "\n", - "The recent design of molecular assays for the duplicated _CYP6P9a/b_ and the associated _6.5 kb_ structural variant (SV), refs. [28,29,31] now provides a great opportunity to assess the impact of P450-based pyrethroid resistance on the efficacy of various LLINs, including pyrethroid-only (Olyset) and PBO (Olyset Plus) nets. This will provide evidence-based information on their effectiveness in the presence of a growing and escalading resistance to pyrethroids. Previous assessment of this impact on PermaNet nets made with type II pyrethroid deltamethrin has been performed [28,29,31], but this remains to be carried out for type I pyrethroid nets, such as the common permethrin-based Olyset nets.\n", - "\n", - "Here, using EHT, we show a significantly greater efficacy of the PBO-based net Olyset Plus compared to the pyrethroid-only Olyset net against pyrethroid-resistant _An. funestus_. Using the genotyping of DNA-based markers of P450 resistance, we reveal that _CYP6P9a/b_ P450-based pyrethroid resistance induces a significant loss of efficacy for pyrethroid-only net Olyset against _An. funestus_. A reduced efficacy was also detected for PBO-based net Olyset Plus, but at a lower extent than for Olyset net, revealing that PBO nets are more suitable to tackle such P450-based resistance.\n", - "\n", - "header: 2.1.1. Quality Control and Performance of the Nets against the Hybrid Strain: 2.1.2 Performance of Nets against the Hybrid Strain Using Experimental Hut\n", - "\n", - "A total number of 578 mosquitoes from the hybrid strain were released and recaptured on a period of one week. In total, 141 samples were released in the control hut, 224 in the hut were treated with Olyset, and 213 in the hut were treated with Olyset Plus.\n", - "\n", - "**Mortality**: Analysis of mortality rates revealed very high mortality of the hybrid FUMOZ-FANG strain against the PBO-based Olyset Plus net (99.1%). In contrast, lower mortality was observed for the pyrethroid-only Olyset net (56.7%). Very low mortality was observed in the untreated control net (9.9%) (Figure 1D; Table S1).\n", - "\n", - "**Blood-feeding**: The blood-feeding rate did not significantly differ when comparing the control (7.8%) to Olyset (11.6% \\(p>0.05\\)) and Olyset Plus (5.6%; \\(p>0.05\\)). However, the blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)) (Figure 1D; Table S1).\n", - "\n", - "Figure 1: Susceptibility profile of the hybrid FUMOZ-FANG strain to pyrethroids. (**A**) Net quality assessment with recorded mortalities after cone assays with Kisumu, the _An. gambiae_-susceptible lab strain, and the _An. funestus_ FUMOZ-FANG strain. (**B**) Susceptibility profile of the hybrid FUMOZ-FANG strain to type II (deltamethrin) pyrethroids and propoxur with recorded mortalities following 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**C**) Susceptibility profile of the hybrid FUMOZ-FANG strain to deltamethrin (type II pyrethroids) and permethrin (type I pyrethroids) with recorded mortalities following 30 and 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**D**) Proportion of mortality, blood-feeding, and exophily rate for Olyset and Olyset Plus against _An. funestus_ (crossing the FUMOZ-FANG strain (F5)). Ns = \\(p>0.05\\); * = \\(p\\leq 0.05\\); ** = \\(p\\leq 0.01\\); *** = \\(p\\leq 0.001\\).\n", - "\n", - "\n", - "\n", - "\n", - "**Exophily**: The exophily rate in the hut with Olyset net (23.7%) was significantly higher than that in the control hut (13.5%) (_p_ = 0.02), as well as than for Olyset Plus (7.5%; \\(p\\) < 0.001). No significant difference was observed between Olyset Plus and the control net (_p_ = 0.3) (Figure 1D; Table S1).\n", - "\n", - "Validating the Role of CYP6P9a/b and 6.5 kb SV in Pvrethroid Resistance in the Hybrid FUMOZ-FANG Strains before the Experimental Hut Trials\n", - "\n", - "header: Results\n", - "\n", - "All the nets used in the study were first exposed to the susceptible lab strain Kisumu for quality control. The mortality for Olyset and Olyset Plus was 100% (Figure 1A). The _An. funestus_ hybrid strain exposed to bed nets using WHO cone assays exhibited mortality rates of 30.1 \\(\\pm\\) 11.5% for Olyset and 100 \\(\\pm\\) 0% for Olyset Plus, suggesting a greater efficacy of PBO synergist nets compared to pyrethroid-only nets.\n", - "\n", - "**Susceptibility profiles of the FUMOZ-FANG:** The bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to deltamethrin with mortality of 43.7 \\(\\pm\\) 5.9%, and was resistant to propoxur with mortality of 67.3 \\(\\pm\\) 6.6% (Figure 1B). The second set of bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to permethrin with mortality of 43.7 \\(\\pm\\) 1.6% and 39.3 \\(\\pm\\) 1.6%, respectively, for 90 min and 30 min. Resistance was also observed with deltamethrin with a mortality of 86.4 \\(\\pm\\) 3.1% and 42.3 \\(\\pm\\) 2.5%, respectively, for 90 min and 30 min (Figure 1C).\n", - "\n", - "header: Table 1: Description of the long-lasting insecticidal nets used.\n", - "footer: None\n", - "columns: ['Treatment Arm', 'Description', 'Manufacturer']\n", - "\n", - "{\"0\":{\"Treatment Arm\":\"Untreated\",\"Description\":\"100% polyester with no insecticide\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"4\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"5\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"}}\n", - "\n", - "header: 2.4.1 The Impact of CYP6P9b on Mortality: 2.4.2 CYP6P9b Impacting the Blood-Feeding\n", - "\n", - "A strong association was observed between _CYP6P9b_ genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could more successfully blood-fed when compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 4.1-24.9; \\(p\\) < 0.001) (Table S4; Figure 5F). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset was not different to that of homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-2.2; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 11.1; CI = 5.3-23.03: \\(p\\) < 0.001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood fed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.7; CI = 2.5-8.1; \\(p\\) < 0.01) (Table S4).\n", - "\n", - "header: 2.2.2 Validating the Role of CYP6P9b_R_ Using Sample from WHO Tube Assays\n", - "\n", - "To confirm the ability of the _CYP6P9b_R_ allele to predict pyrethroid resistance phenotype in the hybrid strain FUMOZ-FANG, the F5 samples were genotyped. This revealed that those that stayed alive after exposure to permethrin for 90 minutes are mainly homozygote\n", - "\n", - "Figure 2: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (**A**) Tube assay _CYP6P9a_ and mortality. Role of _CYP6P9a_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9a_ genotypes according to resistance phenotypes. (**B**) Tube assay _CYP6P9b_ and mortality. Role of _CYP6P9b_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9b_ genotypes according to resistance phenotypes. (**C**) Cone assay _CYP6P9a_ and mortality. Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: \\(p\\) < 0.001). (**D**) Cone assay _CYP6P9a_ and mortality allele. Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the _CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**E**) Cone assay _CYP6P9b_ and mortality. Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset using the cone test, showing strong association (RR vs. SS: \\(p\\) < 0.001).\n", - "\n", - "\n", - "resistant (20.8%) and heterozygotes (75%), with only two being homozygote-susceptible. Among the 47 mosquitoes found dead after 30 min exposure to permethrin (highly susceptible), 97.87% were found to be homozygote-susceptible, and one remaining was a heterozygote (Figure 2B). A strong association was perceived between permethrin resistance and the _CYP6P9b_ genotypes when comparing RR vs. SS (OR = infinity; \\(p\\) < 0.0001) and RS vs. SS (OR = 715; \\(p\\) < 0.0001).\n", - "\n", - "2.3 Validation of the Role of CYP6P9a and CYP6P9b in Conferring Resistance Using Samples from Cone Assays\n", - "\n", - "Using dead and alive mosquitoes obtained after cone assays, _CYP6P9a_ homozygous-resistant mosquitoes (RR) and heterozygous (RS) could survive significantly better following exposure to Olyset and Olyset Plus than homozygote-susceptible mosquitoes (Table S2). Olyset shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 35.1; \\(p\\) < 0.0001) and RS vs. SS (OR = 34.6; \\(p\\) < 0.0001) for _CYP6P9a_ (Figure 2C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 7.7; \\(p\\) < 0.05) (Table S2; Figure 2D). Concerning _CYP6P9b_, homozygous-resistant mosquitoes (RR) and heterozygous (RS) could also survive significantly better following survive exposure to Olyset net. A strong association was noticed between the gene and the ability to survive when comparing RR to SS (OR = 32.4; \\(p\\) < 0.0001) and RS vs. SS (OR = 97.3; \\(p\\) < 0.0001) (Table S2; Figure 2E).\n", - "\n", - "Olyset Plus shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 6.4; \\(p\\) < 0.001) and RS vs. SS (OR = 7.2; \\(p\\) < 0.001) for _CYP6P9a_ (Table S2; Figure 3A). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.0; \\(p\\) = 0.05) (Table S2; Figure 3B). Concerning the _CYP6P9b_, Olyset Plus equally shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 9.7; \\(p\\) < 0.001) and RS vs. SS (OR = 17.9; \\(p\\) < 0.001) for _CYP6P9b_ (Table S2; Figure 3C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.2; \\(p\\) = 0.01) (Table S2).\n", - "\n", - "Figure 3: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset Plus nets after cone assays. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (_p_ < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset Plus using the cone test, showing the significant ability of the mosquitoes carrying the RR genotype to survive compared to SS (_p_ < 0.001).\n", - "\n", - "header: Impact of CYP6P9a on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", - "\n", - "Genotyping of the _CYP6P9a_ marker allowed us to assess the impact of P450-based metabolic resistance on the loss of efficacy of Olyset, but not for Olyset Plus, since most of the mosquitoes released in Olyset Plus huts died. To avoid confounding effects from blood-feeding, or net entry or exophily status, the distribution of the _CYP6P9a_ genotypes was assessed firstly only among unfed mosquitoes collected in the room. This revealed a highly significant difference in the frequency of the three genotypes between the dead and alive mosquitoes (chi-square = 28.8; \\(p\\) < 0.0001) (Figure 5). Analysis of the correlation between each genotype and mortality revealed that _CYP6P9a_ homozygous-resistant mosquitoes (RR) show an increased ability to survive exposure to the Olyset when compared to homozygote-susceptible mosquitoes (SS) with (OR = 5.0; CI = 2.01-12.4; \\(p\\) = 0.001). The strength of this association was further shown by the significant ability to survive exposure when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.04; CI = 1.1-3.6; \\(p\\) < 0.05). However, heterozygote mosquitoes (RS) did not survive exposure to Olyset better than homozygote-susceptible mosquitoes (SS) (OR = 1.8; CI = 0.8-3.9; \\(p\\) > 0.05) (Figure 5A; Table S4; Figure 5B).\n", - "\n", - "Figure 5: Impact of both _CYP6P9a_ and _CYP6P9b_ on the efficacy of bed nets in the experimental hut trial. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: \\(p\\) < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Association between _CYP6P9a_ and ability to blood-feed when exposed to Olyset. The _CYP6P9a_–R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (**D**) Association between _CYP6P9b_ and ability to survive exposure to Olyset in the experimental hut trial. (**E**) Allelic frequency of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the _CYP6P9b_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9b_S_. (**F**) Association between _CYP6P9b_ gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The _CYP6P9b_-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\n", - "\n", - "header: Study Site: Laboratory Strain: FUMOZ/FANG Crossing\n", - "\n", - "Previous studies revealed that the duplicated P450 _CYP6P9a/b_ and intergenic _6.5 kb sv_ is mainly found in mosquitoes from southern Africa and absent from mosquitoes collected elsewhere in Africa [31,45]. Moreover, these resistance markers have already been selected (close to fixation) in the southern African _An. funestus_ populations, preventing free-flying mosquitoes from being used in this region in order to assess their impact on LLIN efficacy, as all mosquitoes are nearly homozygote-resistant now [7]. Therefore, to evaluate the impact of these cytochrome P450, we opted to use a hybrid strain generated from two _An. funestus_ laboratory colonies: the FANG colony, a completely insecticide-susceptible colony originating from Angola, and the FUMOZ colony derived from southern Mozambique, which is highly resistant to pyrethroids and carbamates [48]. During rearing, the pupae of each strain were kept individually in Falcon tubes (15 mL), locked with a piece of cotton for individual emergence. After the emergence of pupae in the Falcon tube, the males and the females were separated. A reciprocal crossing was performed using 50 males and 50 females from the other strain. After the initial F1 generation obtained from the reciprocal crosses of the 50 males and 50 females of both strains, the hybrid strain was reared to F5 and F6 generation, presenting good segregation in all the three genotypes. The hybrid strain was then used for the release recapture experiment in the huts.\n", - "\n", - "header: Susceptibility Profile of the Hybrid FUMOZ/FANG Strain to Pyrethroids\n", - "\n", - "Before assessing the impact of _CYP6P9a/b_ on the effectiveness of LLINs using the experimental huts, the resistance status of the hybrid FUMOZ-FANG was evaluated in laboratory conditions via WHO tube tests and cone tests, and the role of _CYP6P9a/b_ in terms of resistance was assessed.\n", - "\n", - "**Bioassays:** WHO bioassays were conducted with 0.05% deltamethrin and 0.1% propoxur. To generate highly resistant and highly susceptible mosquitoes, WHO bioassays were conducted with 0.75% permethrin and 0.05% deltamethrin for 30 min and 90 min. For each insecticide, four replicates of 25 mosquitoes from the hybrid strains were used. Alive mosquitoes after 90 min of exposure and dead mosquitoes after 30 min of exposure were then genotyped to establish the association between the _CYP6P9a/b_ and _6.5 kb SV_ resistance alleles and the ability of mosquitoes to survive to these insecticides.\n", - "\n", - "**Cone assays:** Cone test bioassays were conducted with a fragment of Olyset and Olyset Plus using the resistant hybrid strains FUMOZ-FANG. Five batches of 10 unfed females, aged 2-5 days old, were exposed to each bed net for three minutes. They were then transferred into the holding paper cup containers. The knockdown was checked after 60 min and the mortality after 24 h. Alive and dead mosquitoes obtained after exposure were then genotyped. The association between the _CYP6P9a/b_-resistant allele and the ability of mosquitoes to survive to these insecticides was also established.\n", - "\n", - "header: Resistance Escalation with Multiple Resistance Alleles Present a Greater Risk of Control Failure\n", - "\n", - "This study confirms the findings by [28], suggesting that the _6.5 kb SV_ acts as an enhancer for nearby duplicated P450 genes _CYP6P9a_ and _CYP6P9b_, leading to their increased overexpression, thus creating greater resistance. This _6.5 kb SV_ is strongly associated with an aggravation of pyrethroid resistance, which reduces the efficacy of pyrethroid-only nets. The fixation of this _6.5 kb SV_, besides the resistant alleles of _CYP6P9a_ and _CYP6P9b_, could explain the resistance escalation currently observed against the _An. funestus_ population from the southern part of Africa reducing the efficacy of bed nets [7,41].\n", - "\n", - "This study revealed that multiple and complex resistance combining elevated expression (_CYP6P9a/b_) [45], as well as the selection of cis-regulatory motifs for transcription binding sites (CnCC/MAF) [31], coupled with structural variations such as the _6.5 kb_, which is known to be enriched with several regulatory elements [28], can lead to a greater reduction in bed net efficacy. The fact that triple homozygote-resistant mosquitoes could survive better against exposure to pyrethroid-only nets compared to all genotypes reveals the greater risk that an unabated increase in resistance can likely lead to the failure of insecticide-based interventions, as predicted by the WHO global plan for insecticide resistance management. This calls for novel nets which do not rely on pyrethroids in the future. However, the impact of these resistance alleles on the efficacy of LLINs in natural populations remains to be established, as we only performed a test with a hybrid strain from two laboratory strains. This work must be urgently carried out, particularly as the molecular tools are increasingly available.\n", - "\n", - "header: 2.5.1 The Impact of 6.5 kb SV on Mortality: 2.5.2 The Impact of 6.5. kb SV on Blood-Feeding\n", - "\n", - "A strong association was observed between _6.5 \\(kb\\)_ SV genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could blood-feed better compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 3.2-31.4; \\(p\\)\\(<\\) 0.0001) (Table S4; Figure 6C). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset differs to that of homozygote-susceptible mosquitoes (SS) but not significantly (OR = 1.7; CI = 0.5-5.4; \\(p\\) = 0.4) (Table S4). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 10.2; CI = 4.9-21.11: \\(p\\)\\(<\\) 0.0001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.2; CI = 2.3-7.9; \\(p\\)\\(<\\) 0.0001) (Table S5; Figure 6D). A similar trend was observed against Olyset Plus nets (Table S5; Figure 6E,F).\n", - "\n", - "Combined Impact of CYP6P9a and CYP6Pb on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", - "\n", - "As _CYP6P9b_ genotypes were shown to be independent from those of _CYP6P9a_[28], we also assessed how combinations of genotypes at both genes impact the efficacy of Olyset for mortality and blood-feeding. Analysis of the impact of combined genotypes on mortality with Olyset confirmed the independent segregation of genotypes at both genes with several combinations of genotypes observed including RR/RR, RR/RS, RS/RS, RS/SS and SS/SS (Table S5). A comparison of the distribution of both sets of genotypes revealed that double homozygote-resistant (RR/RR) mosquitoes at both genes had a far greater ability to survive exposure to Olyset than most of the other combinations (Table S4) particularly when compared to double susceptible (SS/SS) (OR = 8.6; CI = 1.8-39.1; \\(p\\)\\(<\\) 0.01) (Table S5). A significantly increased survival is also observed in RR/RR when compared to other combinations although with a lower odds ratio, such as against RR/SS (OR = 2; \\(p\\)\\(<\\) 0.01) (Table S5).\n", - "\n", - "Analysis of the combined genotype distribution for blood-feeding also revealed a significantly increased ability to blood-feed for double homozygote-resistant mosquitoes when exposed to Olyset with the highest significance against double homozygote-susceptible mosquitoes (OR = 9.3; \\(p\\)\\(<\\) 0.001) (Table S5).\n", - "\n", - "Combined Impact of the Triple Resistance Alleles CYP6P9a/CYP6P9b/6.5 kb SV on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", - "\n", - "Experimental hut trials showed that triple RR/RR/SV\\({}^{+}\\)SV\\({}^{+}\\) homozygotes were more likely to survive exposure to Olyset compared to any other combined genotypes except RR/RS/RS (Figure 7A). RR/RR/SV+SV+ survived more than SS/SS/SV\\(-\\)SV\\(-\\) (OR = 8.5; CI: 2.53-28.46; \\(p\\)\\(=\\) 0.0005) and RS/RS/SV+SV\\(-\\) (OR = 3.57; CI = 1.82- 7.02; \\(p\\)\\(=\\) 0.0002). There was no significant difference between the RR/RR/SV+SV+ and RR/RR/SV+SV\\(-\\) genotypes (OR = 1; CI = 0.16-7.02; \\(p\\)\\(=\\) 1.0), and both had a similar trend in terms of survival with the same odds ratio (Figure 7B). In addition to the ability to survive exposure to the net, RR/RR/SV+SV+ also could blood-feed better than SS/SS/SV\\(-\\) SV\\(-\\) (OR = 7.0; CI: 2.38-20.52; \\(p\\)\\(=\\) 0.0004) and the other combinations in the presence of Olyset (Figure 7C,D).\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: 2.2.1 Role of CYP6P9a_R Using WHO Tube Assay Samples\n", - "\n", - "Using the hybrid FUMOZ-FANG strains, the role of the _CYP6P9a_R_ allele in the observed pyrethroid resistance was confirmed. The odds ratio of surviving exposure to permethrin when homozygous for the resistant _CYP6P9a_R_ allele (RR) was high at 693 (CI 88-5421; \\(p\\) < 0.0001) compared to the homozygous-susceptible mosquitoes (SS) (Figure 2A). The OR was 131 (CI 27-978; \\(p\\) < 0.0001) when comparing RR to RS, indicating the increasing resistance conferred by _CYP6P9a_.\n", - "\n", - "header: 4.6.2 Genotyping of the CYP6P9b-R Maker Using PCR-RFLP\n", - "\n", - "The PCR was carried out, as described for CYP6P9a. The following primers were used: 6p9brflp_0.5F 5'-CCCCCACAGGTGTAACTCTGAA-3' and 6p9brflp_0.5R 5'-TTATCCGTAAACTCAATAGCGATG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 550 bp. The digestion with the _Tsp_451 restriction enzyme followed 0.2 mL of Tsp451, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product was migrated on the 2% gel. Amplicons from susceptible mosquitoes were cut into two bands with sizes of 400 bp and 150 bp, and the resistant mosquitoes remained undigested with the band at 550 bp.\n", - "\n", - "header: Impact of the Duplicated CYP6P9a and CYP6P9b P450 Genes on the Performance of Bed Nets\n", - "\n", - "The samples collected during the evaluation of Olyset and Olyset Plus in experimental huts were grouped in several categories: dead, alive, blood fed, and unfed; room and veranda. The _CYP6P9a_/b and _6.5 kb SV_ were genotyped in each group using the respective PCR assays as described [28,29,31]. This allowed the relative survival and feeding success of resistant and susceptible insects in the presence of both bed nets to be directly measured.\n", - "\n", - "header: Abstract\n", - "\n", - "Experimental Hut Trials Reveal That CYP6P9a/b P450 Alleles Are Reducing the Efficacy of Pyrethroid-Only Olyset Net against the Malaria Vector _Anopheles funestus_ but PBO-Based Olyset Plus Net Remains Effective\n", - "\n", - "Benjamin D. Menze, Leon M. J. Mugenzi, Magellan Tchouakui, Murielle J. Wondji,\n", - "\n", - "1Vector Biology Department, Liverpool School of Tropical Medicine, Pembroke Place, Liverpool L3 5QA, UK; murielle.wondji@ilstmed.ac.uk\n", - "2Medical Entomology Department, Centre for Research in Infectious Diseases (CRID), Yaounde 13591, Cameroon; leon.mugenzi@crid-cam.net (L.M.J.M.); magellan.tchouakui@crid-cam.net (M.T.); micareme.tchouop@crid-cam.net (M.T.)\n", - "* Correspondence: benjamin.menze@crid-cam.net (B.D.M.); charles.wondji@ilstmed.ac.uk (C.S.W.)\n", - "\n", - "\n", - "Malaria remains a major public health concern in Africa. Metabolic resistance in major malaria vectors such as _An. funestus_ is jeopardizing the effectiveness of long-lasting insecticidal nets (LLINs) to control malaria. Here, we used experimental hut trials (EHTs) to investigate the impact of cytochrome P450-based resistance on the efficacy of PBO-based net (Olyset Plus) compared to a permethrin-only net (Olyset), revealing a greater loss of efficacy for the latter. EHT performed with progenies of F5 crossing between the _An. funestus_ pyrethroid-resistant strain FUMOZ and the pyrethroid-susceptible strain FANG revealed that PBO-based nets (Olyset Plus) induced a significantly higher mortality rate (99.1%) than pyrethroid-only nets (Olyset) (56.7%) (\\(p<0.0001\\)). The blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)). Genotyping the _CYP6P9a/b_ and the intergenic _6.5 kb structural variant_ (SV) resistance alleles showed that, for both nets, homozygote-resistant mosquitoes have a greater ability to blood-feed than the susceptible mosquitoes. Homozygote-resistant genotypes significantly survived more with Olyset after cone assays (e.g., _CYP6P9a_ OR = 34.6; \\(p<0.0001\\)) than homozygote-susceptible mosquitoes. A similar but lower correlation was seen with Olyset Plus (OR = 6.4; \\(p<0.001\\)). Genotyping EHT samples confirmed that _CYP6P9a/b_ and _6.5 kb_SV_ homozygote-resistant mosquitoes survive and blood-feed significantly better than homozygote-susceptible mosquitoes when exposed to Olyset. Our findings highlight the negative impact of P450-based resistance on pyrethroid-only nets, further supporting that PBO nets, such as Olyset Plus, are a better solution in areas of P450-mediated resistance to pyrethroids.\n", - "\n", - "header: 4.6.1 Genotyping of the CYP6P9a-R Marker Using PCR-RFLP\n", - "\n", - "DNA was extracted from various groups of mosquitoes (dead, alive, blood fed, and unfed; room and veranda) using the Livak protocol [49]. The PCR was carried out using 10 mM of each primer and 1 mL of gDNA as the template in 15 mL reaction containing 10x Kapa Taq buffer A, 25 mM of dNTPs, 25 mM of MgCl2, and 1 U of Kapa Taq (Kapa Biosystems, Boston, MA, USA). Amplification was carried out using thermocycler parameters: 95 degC for 5 min, 35 cycles of 94 degC for 30 s, 58 degC for 30 s, 72 degC for 45 s, and a final extension at 72 degC for 10 min. The following primers were used: RFLP6P9aF forward primer 5'-TCCCGAAATACAGCCTTTCAG-3 and RFLP6P9aR reverse primer 5'-ATTGGTCCATCGCTAGAAG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 450 bp. The digestion with Taq1a followed 0.2 mL of Taq1a, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product migrated on the 2% gel. Amplicons from resistant mosquitoes were cut into two bands with sizes of 350 bp and 100 bp, and the susceptible mosquitoes remained undigested with the band at 450 bp.\n", - "\n", - "header: 4.6.3 PCR Assay to Detect the 6.5 kb SV\n", - "\n", - "To easily identify the samples containing the 6.5 kb insertion, the recently designed PCR assay [28] was used to discriminate between mosquitoes with the 8.2 kb (resistant) and 1.7 kb (susceptible) _CYP6P9a_ and _CYP6P9b_ intergenic regions. Briefly, three primers were used: two (FG_5F: CTACCGTCAAAGTCCGGTAT and FG_3R: TTTCGAAAACATCCCTAAA) at regions flanking the insertion point and a third primer (FZ_INS5R: ATATGCCACGAAGGAAAGCAG) in the _6.5 kb_ insertion. One unit of KAPA Taq polymerase (Kapa Biosystems) in 1x buffer A, i.e., 25 mm of MgCl2, 25 mm of dNTPs, and 10 mm of each primer, was used to constitute a 15 mL PCR mix using the following conditions: an initial denaturation step of 3 min at 95 degC, followed by 35 cycles of 30 s at 94 degC, 30 s at 58 degC, and 60 s at 72 degC, with a final extension for 10 min at 72 degC. The amplicon was revealed on a 1.5% agarose gel stained with Midori Green Advance DNA Stain (Nippon genetics Europe GmbH) and revealed on a UV transilluminator.\n", - "\n", - "header: 3 Discussion\n", - "\n", - "The capacity to assess the impact of insecticide resistance on the effectiveness of insecticide-treated control tools is crucial in order to implement suitable insecticide resistance management (IRM) [32]. Evolution in the area of DNA-based resistance markers of P450-mediated resistance [28; 29] currently offers robust tools to screen pyrethroid resistance in field populations of the major malaria vectors such as _An. funestus_ and assess their impact on the effectiveness of LLINs. In this study, we use these markers to evaluate the extent to which pyrethroid resistance is impacting the efficacy of pyrethroid-only nets such as Olyset in comparison to PBO-based net such as Olyset Plus. This study also allowed to assess the interplay between P450 genes in the overall genetic variance to resistance and their combined impact on the efficacy of LLINs.\n", - "\n", - "PBO-Based Nets (Olyset Plus) Exhibit Greater Efficacy than Pyrethroid-Only Nets (Olyset) in the Context of P450-Based Resistance\n", - "\n", - "Olyset presented a moderate mortality compared to Olyset Plus (30.9% vs. 100%; \\(p\\) < 0.0001). The high mortality observed with PBO nets compared to pyrethroid-only nets is similar to what was observed in previous studies [33; 34; 35; 36]. The high mortality observed with PBO-based nets against the hybrid strain FUMOZ/FANG is due to the fact the mechanisms underlying the resistance in this population are driven by _CYP6P9a_ and _CYP6P9b_[37] which are inhibited by PBO [38]. These results demonstrate that PBO-based nets may be a more suitable solution in areas where resistance is mainly mediated by P450 genes.\n", - "\n", - "Figure 7: Combined impact of the triple resistance alleles (_CYP6P9a_/_CYP6P9b_/_6.5 kb SV_) on the efficacy of insecticide-treated nets. (**A**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances of being alive in the presence of Olyset Net. (**B**) Ability to survive exposure to Olyset net for the various combined genotypes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_. (**C**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances to bloodfed in the presence of Olyset net. (**D**) The triple RR/RR/SV+SV+ homozygous mosquitoes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_ exhibit a greater blood-feeding ability than other genotypes. Ns: non-significant; * (0.05); ** (0.01); *** (0.001).\n", - "\n", - "\n", - "The efficacy of nets observed in this study confirms the loss in efficacy of the pyrethroid-only nets against _Anopheles_ mosquitoes, as observed across the continent [39]. This loss of efficacy was observed in Mozambique [7,40], Malawi [41], Congo [42], and Cameroon [6,43]. Overall, similar to this study, it has been noticed that PBO-based nets demonstrate a better performance compared to pyrethroid-only nets [33,34]. The same trends were observed with pyrethroid type II with high mortality observed with PermaNet 3.0 compared to PermaNet 2.0 [28,29,31], suggesting that PBO-based nets with both type I or II can exhibit high performance against resistance sustained by P450s.\n", - "\n", - "P450 Resistance Can Reduce the Efficacy of Pyrethroid-Only Nets Significantly Better Than PBO-Based Nets\n", - "\n", - "When comparing the impact of _CYP6P9a/b_ on pyrethroid-only nets and PBO-based nets using samples from cone assays, we noticed that the impact of _CYP6P9a_ on pyrethroid-only nets was higher than with PBO-based nets (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. Olyset Plus, OR = 6.4; \\(p\\) < 0.001). The same trend was also observed with _CYP6P9b_ and the 6.5 kb SV. This can be explained by the fact that the addition of the PBO inhibits the cytochrome P450 enzymes, which is the main resistance mechanism in the strain used by the mosquitoes [44,45].\n", - "\n", - "On the other hand, Olyset nets have also shown reduced performance against _CYP6P9a_ and _CYP6P9b_-resistant mosquitoes. Strong association was observed between the resistant alleles and the increased ability of the mosquitoes to survive after exposure to these nets. Nevertheless, the impact of _CYP6P9a_ and _CYP6P9b_ seems to be more significant on PermaNet nets impregnated with deltamethrin [29,31], compared to Olyset nets impregnated with permethrin (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. PermaNet 2.0, OR = 239.0; \\(p\\) < 0.001 and Olyset Plus, OR = 6.4; \\(p\\) < 0.001 vs. PermaNet 3.0, OR = 81.0; \\(p\\) < 0.001) [29,31]. This significant impact on PermaNet could be associated with the fact that the hybrid strain is more resistant to type II pyrethroids, as shown by WHO bioassays, where the mosquitoes were more resistant to deltamethrin compared to permentrin (48.5% vs. 80.7%). With regards to the obtained odd ratios, a stronger association was observed between _CYP6P9a/CYP6P9b_ and the loss of efficacy of nets compared to what was observed with GST-based resistance through the L119F-_GSTe2_-resistant allele [43], in line with the greater role of P450 in resistance to pyrethroids in _An. funetus_, compared to that of GST. The 6.5 kb SV was shown to further exacerbate the loss of efficacy in the permethrin-only nets. The design of the simple PCR-based assay to genotype the _6.5 kb SV_ enabled us to assess the impact of such structural variation on the efficacy of insecticide-treated nets, including the pyrethroid-only and the PBO-synergist nets. A greater reduction in the efficacy of _6.5 kb SV_ was present on permethrin-only nets compared to PBO-based nets, which is similar to that observed with _CYP6P9a_ [31] and _CYP6P9b_ [29], in terms of the reduced mortality rate and blood-feeding inhibition. This pattern is also similar to that seen with deltamethrin-based nets (PermaNet 2.0 vs. PermaNet 3.0) [29,31]. Overall, the significantly greater loss of efficacy due to P450s observed with both type I (Olyset and PermaNet 2.0) and PBO-based nets (Olyset Plus and PermaNet 3.0) further supports the deployment of PBO-based nets to control P450-based metabolically resistant mosquito populations. The deployment of PBO-based nets should nevertheless also be monitored to regularly assess their efficacy since they too could be impacted by resistance, as shown by the fact that _CYP6P9a/b_-resistant mosquitoes could blood-feed significant better, even with Olyset Plus. This increased ability of resistant mosquitoes to blood-fed, even with PBO-based net, suggests that PBO-based nets are not immune to the impact of resistance, even if they remain significantly more effective than pyrethoid-only nets. The increased blood-feeding of P450-resistant mosquitoes when exposed to PBO-based nets may also lead to a higher malaria transmission, although this is mitigated by the high mortality observed for Olyset Plus in a experimental hut trial. Overall, evaluating the impact of P450-based resistance on the efficacy of Olyset vs. Olyset Plus further supports the results obtained in a cluster \n", - "randomized controlled trial with both nets in Tanzania showing greater effectiveness of Olyset Plus [46].\n", - "\n", - "header: Results\n", - "\n", - "All the nets used in the study were first exposed to the susceptible lab strain Kisumu for quality control. The mortality for Olyset and Olyset Plus was 100% (Figure 1A). The _An. funestus_ hybrid strain exposed to bed nets using WHO cone assays exhibited mortality rates of 30.1 \\(\\pm\\) 11.5% for Olyset and 100 \\(\\pm\\) 0% for Olyset Plus, suggesting a greater efficacy of PBO synergist nets compared to pyrethroid-only nets.\n", - "\n", - "**Susceptibility profiles of the FUMOZ-FANG:** The bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to deltamethrin with mortality of 43.7 \\(\\pm\\) 5.9%, and was resistant to propoxur with mortality of 67.3 \\(\\pm\\) 6.6% (Figure 1B). The second set of bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to permethrin with mortality of 43.7 \\(\\pm\\) 1.6% and 39.3 \\(\\pm\\) 1.6%, respectively, for 90 min and 30 min. Resistance was also observed with deltamethrin with a mortality of 86.4 \\(\\pm\\) 3.1% and 42.3 \\(\\pm\\) 2.5%, respectively, for 90 min and 30 min (Figure 1C).\n", - "\n", - "header: 2.1.1. Quality Control and Performance of the Nets against the Hybrid Strain: 2.1.2 Performance of Nets against the Hybrid Strain Using Experimental Hut\n", - "\n", - "A total number of 578 mosquitoes from the hybrid strain were released and recaptured on a period of one week. In total, 141 samples were released in the control hut, 224 in the hut were treated with Olyset, and 213 in the hut were treated with Olyset Plus.\n", - "\n", - "**Mortality**: Analysis of mortality rates revealed very high mortality of the hybrid FUMOZ-FANG strain against the PBO-based Olyset Plus net (99.1%). In contrast, lower mortality was observed for the pyrethroid-only Olyset net (56.7%). Very low mortality was observed in the untreated control net (9.9%) (Figure 1D; Table S1).\n", - "\n", - "**Blood-feeding**: The blood-feeding rate did not significantly differ when comparing the control (7.8%) to Olyset (11.6% \\(p>0.05\\)) and Olyset Plus (5.6%; \\(p>0.05\\)). However, the blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)) (Figure 1D; Table S1).\n", - "\n", - "Figure 1: Susceptibility profile of the hybrid FUMOZ-FANG strain to pyrethroids. (**A**) Net quality assessment with recorded mortalities after cone assays with Kisumu, the _An. gambiae_-susceptible lab strain, and the _An. funestus_ FUMOZ-FANG strain. (**B**) Susceptibility profile of the hybrid FUMOZ-FANG strain to type II (deltamethrin) pyrethroids and propoxur with recorded mortalities following 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**C**) Susceptibility profile of the hybrid FUMOZ-FANG strain to deltamethrin (type II pyrethroids) and permethrin (type I pyrethroids) with recorded mortalities following 30 and 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**D**) Proportion of mortality, blood-feeding, and exophily rate for Olyset and Olyset Plus against _An. funestus_ (crossing the FUMOZ-FANG strain (F5)). Ns = \\(p>0.05\\); * = \\(p\\leq 0.05\\); ** = \\(p\\leq 0.01\\); *** = \\(p\\leq 0.001\\).\n", - "\n", - "\n", - "\n", - "\n", - "**Exophily**: The exophily rate in the hut with Olyset net (23.7%) was significantly higher than that in the control hut (13.5%) (_p_ = 0.02), as well as than for Olyset Plus (7.5%; \\(p\\) < 0.001). No significant difference was observed between Olyset Plus and the control net (_p_ = 0.3) (Figure 1D; Table S1).\n", - "\n", - "Validating the Role of CYP6P9a/b and 6.5 kb SV in Pvrethroid Resistance in the Hybrid FUMOZ-FANG Strains before the Experimental Hut Trials\n", - "\n", - "header: 5 Conclusions\n", - "\n", - "This study reveals that insecticide resistance driven by _CYP6P9a/b_ and _6.5 kb SV_ can reduce the efficiency of Permethrin-based LLINs, such as Olyset, while PBO-based nets remain effective. However, the greater loss of efficacy observed in mosquitoes with multiple and complex resistance supports the need to introduce new products for vector control which is less reliant on pyrethroids. Meantime, PBO-based nets should be preferably deployed in areas of P450-based resistance.\n", - "\n", - "**Supplementary Materials:** The following supporting information can be downloaded at: [https://www.mdpi.com/article/10.3390/pathogens11060638/s1](https://www.mdpi.com/article/10.3390/pathogens11060638/s1), Table S1: Results of the performance of Olyset and Olyset Plus against _An. funestus_ females (crossing FUMOZ-FANG; F5) in experimental hut trial. Table S2: Correlation between _CYP6P9a and CYP6P9b_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S3: Correlation between the _6.5Kv SV_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S4: Correlation between genotypes of _CYP6P9a_, _CYP6P9b_ and _6.5 kb SV_ and mortality and blood-feeding after exposure to Olyset and Olyset Plus in experimental huts. Table S5: _CYP6P9a_ and _CYP6P9b_ acting together further increase the ability of _An. funestus_ to survive and blood feed against Olyset after experimental hut trial.\n", - "\n", - "**Author Contributions:** C.S.W. conceived and designed the study; L.M.J.M. and M.T. (Magellan Tchouakui) generated the lab crosses and performed the validation of the PCR; B.D.M. performed the experimental hut experiments with C.S.W. and genotyped the resistance makers with M.J.W. and M.T. (Micareme Tchoupo); B.D.M. and C.S.W. wrote the paper with assistance from M.T. (Magellan Tchouakui) and L.M.J.M. All authors have read and agreed to the published version of the manuscript.\n", - "\n", - "**Funding:** This research was funded in whole by the Welcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). For the purpose of open access, the authors applied a CC BY public copyright license to any author who accepted a manuscript version following this submission.\n", - "\n", - "**Institutional Review Board Statement:** NA.\n", - "\n", - "**Informed Consent Statement:** NA.\n", - "\n", - "**Data Availability Statement:** NA.\n", - "\n", - "**Acknowledgments:** A big thanks to Charles Wondji for his financial support through the Wellcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). I am also grateful to the Mibellon community.\n", - "\n", - "**Conflicts of Interest:** The authors declare that they have no competing interest.\n", - "\n", - "header: Study Site: Laboratory Strain: FUMOZ/FANG Crossing\n", - "\n", - "Previous studies revealed that the duplicated P450 _CYP6P9a/b_ and intergenic _6.5 kb sv_ is mainly found in mosquitoes from southern Africa and absent from mosquitoes collected elsewhere in Africa [31,45]. Moreover, these resistance markers have already been selected (close to fixation) in the southern African _An. funestus_ populations, preventing free-flying mosquitoes from being used in this region in order to assess their impact on LLIN efficacy, as all mosquitoes are nearly homozygote-resistant now [7]. Therefore, to evaluate the impact of these cytochrome P450, we opted to use a hybrid strain generated from two _An. funestus_ laboratory colonies: the FANG colony, a completely insecticide-susceptible colony originating from Angola, and the FUMOZ colony derived from southern Mozambique, which is highly resistant to pyrethroids and carbamates [48]. During rearing, the pupae of each strain were kept individually in Falcon tubes (15 mL), locked with a piece of cotton for individual emergence. After the emergence of pupae in the Falcon tube, the males and the females were separated. A reciprocal crossing was performed using 50 males and 50 females from the other strain. After the initial F1 generation obtained from the reciprocal crosses of the 50 males and 50 females of both strains, the hybrid strain was reared to F5 and F6 generation, presenting good segregation in all the three genotypes. The hybrid strain was then used for the release recapture experiment in the huts.\n", - "\n", - "header: 2.3.1 Impact on Mosquito Mortality: 2.3.2 CYP6P9a Impacting the Blood-Feeding\n", - "\n", - "Homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed better than homozygote-susceptible mosquitoes (SS) (OR = 4.5; \\(p\\) < 0.01) when exposed to Olyset. Heterozygote mosquitoes (RS) were significantly worse at blood-feeding with Olyset compared to homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-1.7; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) fed heterozygotes (OR = 5.4; CI = 2.6-10.88; \\(p\\) < 0.001) significantly better (Table S4; Figure 5C). Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.3; CI = 1.3-4.1; \\(p\\) < 0.01) (Table S4). For Olyset Plus, homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed than homozygote-susceptible mosquitoes (RS) (OR = 6.3; \\(p\\) < 0.001) when exposed to Olyset Plus. The significant ability to blood-feed was observed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.0; CI = 1.1-3.5; \\(p\\) = 0.03) (Table S4).\n", - "\n", - "header: 1 Introduction\n", - "\n", - "Long-lasting insecticidal nets (LLINs) remain an important component of the malaria control strategies used to reduce mortality and morbidity due to this disease in Africa [1, 2]. Mostly insecticides belonging to the pyrethroid group, as well as more and more novel insecticides, are currently recommended for bed net impregnation [3, 4, 5]. In recent years, anopheles mosquitoes have increasingly been reported to show resistance against pyrethroids across Africa. This is the case for major vectors including _Anopheles funestus_[6, 7, 8, 9] and _Anopheles gambiae_[10, 11, 12, 13, 14]. This growing spread of resistance has led to a concern that LLINs may lose their efficacy. However, quantifying such loss of efficacy remains challenging without suitable metrics associated with resistance, highlighting the need to use robust genotype/phenotype analysis for this evaluation. At a time when national malaria control \n", - "programs across Africa are seeking to take evidence-based decisions on their choice of suitable nets to help improve malaria control, it is paramount to determine the extent to which existing resistance to pyrethroid really affects LLIN efficacy. This involves an understanding of the interaction between resistance mechanisms and mosquito responses to exposure to LLINs. Broadly speaking, pyrethroid resistance can be caused by alterations in the target site of the insecticide or enhanced enzymatic activities capable of metabolizing the insecticide before it reaches the target [15-17]. Target site resistance is well studied with mutations in the target of both pyrethroid and DDT insecticides, as well as the voltage-gated sodium channels which lead to knockdown resistance (_kdr_). The development of molecular assays more than twenty years ago made it possible to track this resistance mechanism using a simple PCR [18-21] or high throughput techniques, such as TaqMan assays [22]. It has also been possible to assess the impact of _kdr_ on control tools, notably in _An. gambiae_ where these markers are common [23-25], contrary to _An. funestus_, where it is still not detected [26]. The second best characterized cause of insecticide resistance is metabolic resistance, which is more complex to understand as it can involve the detoxification, sequestration, and transportation of insecticides or their conjugates [16,17,27]. Recent studies have focused on elucidating the genetic factors which cause the increased expression of detoxification genes associated with insecticide resistance in malaria vectors such as _An. funestus_, leading to the development of simple molecular assays used to detect metabolic resistance [28-31].\n", - "\n", - "The recent design of molecular assays for the duplicated _CYP6P9a/b_ and the associated _6.5 kb_ structural variant (SV), refs. [28,29,31] now provides a great opportunity to assess the impact of P450-based pyrethroid resistance on the efficacy of various LLINs, including pyrethroid-only (Olyset) and PBO (Olyset Plus) nets. This will provide evidence-based information on their effectiveness in the presence of a growing and escalading resistance to pyrethroids. Previous assessment of this impact on PermaNet nets made with type II pyrethroid deltamethrin has been performed [28,29,31], but this remains to be carried out for type I pyrethroid nets, such as the common permethrin-based Olyset nets.\n", - "\n", - "Here, using EHT, we show a significantly greater efficacy of the PBO-based net Olyset Plus compared to the pyrethroid-only Olyset net against pyrethroid-resistant _An. funestus_. Using the genotyping of DNA-based markers of P450 resistance, we reveal that _CYP6P9a/b_ P450-based pyrethroid resistance induces a significant loss of efficacy for pyrethroid-only net Olyset against _An. funestus_. A reduced efficacy was also detected for PBO-based net Olyset Plus, but at a lower extent than for Olyset net, revealing that PBO nets are more suitable to tackle such P450-based resistance.\n", - "\n", - "header: Susceptibility Profile of the Hybrid FUMOZ/FANG Strain to Pyrethroids\n", - "\n", - "Before assessing the impact of _CYP6P9a/b_ on the effectiveness of LLINs using the experimental huts, the resistance status of the hybrid FUMOZ-FANG was evaluated in laboratory conditions via WHO tube tests and cone tests, and the role of _CYP6P9a/b_ in terms of resistance was assessed.\n", - "\n", - "**Bioassays:** WHO bioassays were conducted with 0.05% deltamethrin and 0.1% propoxur. To generate highly resistant and highly susceptible mosquitoes, WHO bioassays were conducted with 0.75% permethrin and 0.05% deltamethrin for 30 min and 90 min. For each insecticide, four replicates of 25 mosquitoes from the hybrid strains were used. Alive mosquitoes after 90 min of exposure and dead mosquitoes after 30 min of exposure were then genotyped to establish the association between the _CYP6P9a/b_ and _6.5 kb SV_ resistance alleles and the ability of mosquitoes to survive to these insecticides.\n", - "\n", - "**Cone assays:** Cone test bioassays were conducted with a fragment of Olyset and Olyset Plus using the resistant hybrid strains FUMOZ-FANG. Five batches of 10 unfed females, aged 2-5 days old, were exposed to each bed net for three minutes. They were then transferred into the holding paper cup containers. The knockdown was checked after 60 min and the mortality after 24 h. Alive and dead mosquitoes obtained after exposure were then genotyped. The association between the _CYP6P9a/b_-resistant allele and the ability of mosquitoes to survive to these insecticides was also established.\n", - "\n", - "header: 2.4.1 The Impact of CYP6P9b on Mortality: 2.4.2 CYP6P9b Impacting the Blood-Feeding\n", - "\n", - "A strong association was observed between _CYP6P9b_ genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could more successfully blood-fed when compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 4.1-24.9; \\(p\\) < 0.001) (Table S4; Figure 5F). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset was not different to that of homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-2.2; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 11.1; CI = 5.3-23.03: \\(p\\) < 0.001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood fed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.7; CI = 2.5-8.1; \\(p\\) < 0.01) (Table S4).\n", - "\n", - "header: Table 1: Description of the long-lasting insecticidal nets used.\n", - "footer: None\n", - "columns: ['Treatment Arm', 'Description', 'Manufacturer']\n", - "\n", - "{\"0\":{\"Treatment Arm\":\"Untreated\",\"Description\":\"100% polyester with no insecticide\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"4\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"5\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"}}\n", - "\n", - "header: 2.2.2 Validating the Role of CYP6P9b_R_ Using Sample from WHO Tube Assays\n", - "\n", - "To confirm the ability of the _CYP6P9b_R_ allele to predict pyrethroid resistance phenotype in the hybrid strain FUMOZ-FANG, the F5 samples were genotyped. This revealed that those that stayed alive after exposure to permethrin for 90 minutes are mainly homozygote\n", - "\n", - "Figure 2: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (**A**) Tube assay _CYP6P9a_ and mortality. Role of _CYP6P9a_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9a_ genotypes according to resistance phenotypes. (**B**) Tube assay _CYP6P9b_ and mortality. Role of _CYP6P9b_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9b_ genotypes according to resistance phenotypes. (**C**) Cone assay _CYP6P9a_ and mortality. Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: \\(p\\) < 0.001). (**D**) Cone assay _CYP6P9a_ and mortality allele. Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the _CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**E**) Cone assay _CYP6P9b_ and mortality. Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset using the cone test, showing strong association (RR vs. SS: \\(p\\) < 0.001).\n", - "\n", - "\n", - "resistant (20.8%) and heterozygotes (75%), with only two being homozygote-susceptible. Among the 47 mosquitoes found dead after 30 min exposure to permethrin (highly susceptible), 97.87% were found to be homozygote-susceptible, and one remaining was a heterozygote (Figure 2B). A strong association was perceived between permethrin resistance and the _CYP6P9b_ genotypes when comparing RR vs. SS (OR = infinity; \\(p\\) < 0.0001) and RS vs. SS (OR = 715; \\(p\\) < 0.0001).\n", - "\n", - "2.3 Validation of the Role of CYP6P9a and CYP6P9b in Conferring Resistance Using Samples from Cone Assays\n", - "\n", - "Using dead and alive mosquitoes obtained after cone assays, _CYP6P9a_ homozygous-resistant mosquitoes (RR) and heterozygous (RS) could survive significantly better following exposure to Olyset and Olyset Plus than homozygote-susceptible mosquitoes (Table S2). Olyset shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 35.1; \\(p\\) < 0.0001) and RS vs. SS (OR = 34.6; \\(p\\) < 0.0001) for _CYP6P9a_ (Figure 2C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 7.7; \\(p\\) < 0.05) (Table S2; Figure 2D). Concerning _CYP6P9b_, homozygous-resistant mosquitoes (RR) and heterozygous (RS) could also survive significantly better following survive exposure to Olyset net. A strong association was noticed between the gene and the ability to survive when comparing RR to SS (OR = 32.4; \\(p\\) < 0.0001) and RS vs. SS (OR = 97.3; \\(p\\) < 0.0001) (Table S2; Figure 2E).\n", - "\n", - "Olyset Plus shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 6.4; \\(p\\) < 0.001) and RS vs. SS (OR = 7.2; \\(p\\) < 0.001) for _CYP6P9a_ (Table S2; Figure 3A). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.0; \\(p\\) = 0.05) (Table S2; Figure 3B). Concerning the _CYP6P9b_, Olyset Plus equally shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 9.7; \\(p\\) < 0.001) and RS vs. SS (OR = 17.9; \\(p\\) < 0.001) for _CYP6P9b_ (Table S2; Figure 3C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.2; \\(p\\) = 0.01) (Table S2).\n", - "\n", - "Figure 3: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset Plus nets after cone assays. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (_p_ < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset Plus using the cone test, showing the significant ability of the mosquitoes carrying the RR genotype to survive compared to SS (_p_ < 0.001).\n", - "\n", - "header: Impact of CYP6P9a on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", - "\n", - "Genotyping of the _CYP6P9a_ marker allowed us to assess the impact of P450-based metabolic resistance on the loss of efficacy of Olyset, but not for Olyset Plus, since most of the mosquitoes released in Olyset Plus huts died. To avoid confounding effects from blood-feeding, or net entry or exophily status, the distribution of the _CYP6P9a_ genotypes was assessed firstly only among unfed mosquitoes collected in the room. This revealed a highly significant difference in the frequency of the three genotypes between the dead and alive mosquitoes (chi-square = 28.8; \\(p\\) < 0.0001) (Figure 5). Analysis of the correlation between each genotype and mortality revealed that _CYP6P9a_ homozygous-resistant mosquitoes (RR) show an increased ability to survive exposure to the Olyset when compared to homozygote-susceptible mosquitoes (SS) with (OR = 5.0; CI = 2.01-12.4; \\(p\\) = 0.001). The strength of this association was further shown by the significant ability to survive exposure when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.04; CI = 1.1-3.6; \\(p\\) < 0.05). However, heterozygote mosquitoes (RS) did not survive exposure to Olyset better than homozygote-susceptible mosquitoes (SS) (OR = 1.8; CI = 0.8-3.9; \\(p\\) > 0.05) (Figure 5A; Table S4; Figure 5B).\n", - "\n", - "Figure 5: Impact of both _CYP6P9a_ and _CYP6P9b_ on the efficacy of bed nets in the experimental hut trial. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: \\(p\\) < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Association between _CYP6P9a_ and ability to blood-feed when exposed to Olyset. The _CYP6P9a_–R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (**D**) Association between _CYP6P9b_ and ability to survive exposure to Olyset in the experimental hut trial. (**E**) Allelic frequency of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the _CYP6P9b_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9b_S_. (**F**) Association between _CYP6P9b_ gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The _CYP6P9b_-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\n", - "\n", - "header: Resistance Escalation with Multiple Resistance Alleles Present a Greater Risk of Control Failure\n", - "\n", - "This study confirms the findings by [28], suggesting that the _6.5 kb SV_ acts as an enhancer for nearby duplicated P450 genes _CYP6P9a_ and _CYP6P9b_, leading to their increased overexpression, thus creating greater resistance. This _6.5 kb SV_ is strongly associated with an aggravation of pyrethroid resistance, which reduces the efficacy of pyrethroid-only nets. The fixation of this _6.5 kb SV_, besides the resistant alleles of _CYP6P9a_ and _CYP6P9b_, could explain the resistance escalation currently observed against the _An. funestus_ population from the southern part of Africa reducing the efficacy of bed nets [7,41].\n", - "\n", - "This study revealed that multiple and complex resistance combining elevated expression (_CYP6P9a/b_) [45], as well as the selection of cis-regulatory motifs for transcription binding sites (CnCC/MAF) [31], coupled with structural variations such as the _6.5 kb_, which is known to be enriched with several regulatory elements [28], can lead to a greater reduction in bed net efficacy. The fact that triple homozygote-resistant mosquitoes could survive better against exposure to pyrethroid-only nets compared to all genotypes reveals the greater risk that an unabated increase in resistance can likely lead to the failure of insecticide-based interventions, as predicted by the WHO global plan for insecticide resistance management. This calls for novel nets which do not rely on pyrethroids in the future. However, the impact of these resistance alleles on the efficacy of LLINs in natural populations remains to be established, as we only performed a test with a hybrid strain from two laboratory strains. This work must be urgently carried out, particularly as the molecular tools are increasingly available.\n", - "\n", - "header: Bed Nets Performance Assessment\n", - "\n", - "The performance of the bed nets was expressed relative to control (untreated nets). This was performed with four parameters in mind.\n", - "\n", - "**(i)**: **Exophily**. The proportion of mosquitoes found exited in the veranda trap Exophily (%) = 100 x (Ev/Et), where Ev is the total number of mosquitoes found in veranda and Et is the total number of mosquitoes in the hut.\n", - "**(ii)**: **Blood-feeding rate (BFR)**. This rate was calculated as follows: blood-feeding rate = (N mosquitoes fed) x 100/total N mosquitoes, where N mosquitoes fed was the number of mosquitoes fed and a total N mosquito was the total number of mosquitoes collected.\n", - "**(iii)**: **Blood-feeding inhibition (BFI)**. The reduction in blood-feeding in comparison with the control hut. Blood-feeding inhibition is an indicator of personal protection (PP). More precisely, the personal protection effect of each bed net is the reduction in the blood-feeding percentage induced by the net when compared to the control. The protective effect of each bed net can be calculated as follows: _personal protection_ (%) = 100 x (_Bu_ - _Bt_)/_Bu_, where _Bu_ is the total number of blood-fed mosquitoes in the huts with untreated nets and _Bt_ is the total number of blood-fed mosquitoes in the huts with treated nets [47].\n", - "**(iv)**: **Immediate and delay mortality**. The proportion of mosquitoes entering the hut that are found dead in the morning (immediate mortality) or after being caught alive and held for 24 h with access to sugar solution (delay mortality) [47]. In this study, we presented the overall mortality calculated as follows: mortality (%) = 100 x (Mt/MT), where Mt is the total number of mosquitoes found dead in the hut and MT is the total number of mosquitoes collected in the hut [28,47].\n", - "**(v)**: As mosquitoes were rather released in the huts, the deterrence, i.e., the reduction in the entry rate of mosquitoes in the treated huts relative to control, could not be determined here.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}, \"Time_elapsed\": {\"title\": \"Time Elapsed\", \"description\": \"For longitudinal studies: how long since the start of the study, in units of months?Report this value only if explicitly stated in the text.\"}, \"Blood_meal_count\": {\"title\": \"Blood Meal Count\", \"description\": \"Count of blood meals taken by mosquitos over observation period. This is a proxy for time, as mosquitoes in the study were fed blood meals once a week and oviposition recorded at each time step.\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Cameroon\",\"Site\":\"Yaounde\",\"Start_month\":1,\"Start_year\":2023,\"End_month\":6,\"End_year\":2023,\"Time_elapsed\":5.0,\"Blood_meal_count\":4.0},\"S02\":{\"Study_type\":\"Bioassay, WHO cylinder test\",\"Country\":\"Mozambique\",\"Site\":\"Lab facility\",\"Start_month\":2,\"Start_year\":2023,\"End_month\":5,\"End_year\":2023,\"Time_elapsed\":3.0,\"Blood_meal_count\":null}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Synergist_concentration\": {\"title\": \"Synergist concentration (measured)\", \"description\": \"Enter the measured concentration of the synergist.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Untreated\",\"pHI_category\":\"Good\",\"Insecticide\":null,\"Concentration_initial\":null,\"Synergist\":null,\"Synergist_concentration\":null},\"N02\":{\"Net_type\":\"Olyset\",\"pHI_category\":\"Good\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"8.6 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (2%)\",\"Synergist\":null,\"Synergist_concentration\":null},\"N03\":{\"Net_type\":\"Olyset Plus\",\"pHI_category\":\"Good\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"8.6 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (2%)\",\"Synergist\":\"PBO\",\"Synergist_concentration\":\"4.3 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (1%)\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: 2.2.1 Role of CYP6P9a_R Using WHO Tube Assay Samples\n", - "\n", - "Using the hybrid FUMOZ-FANG strains, the role of the _CYP6P9a_R_ allele in the observed pyrethroid resistance was confirmed. The odds ratio of surviving exposure to permethrin when homozygous for the resistant _CYP6P9a_R_ allele (RR) was high at 693 (CI 88-5421; \\(p\\) < 0.0001) compared to the homozygous-susceptible mosquitoes (SS) (Figure 2A). The OR was 131 (CI 27-978; \\(p\\) < 0.0001) when comparing RR to RS, indicating the increasing resistance conferred by _CYP6P9a_.\n", - "\n", - "header: 4.6.2 Genotyping of the CYP6P9b-R Maker Using PCR-RFLP\n", - "\n", - "The PCR was carried out, as described for CYP6P9a. The following primers were used: 6p9brflp_0.5F 5'-CCCCCACAGGTGTAACTCTGAA-3' and 6p9brflp_0.5R 5'-TTATCCGTAAACTCAATAGCGATG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 550 bp. The digestion with the _Tsp_451 restriction enzyme followed 0.2 mL of Tsp451, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product was migrated on the 2% gel. Amplicons from susceptible mosquitoes were cut into two bands with sizes of 400 bp and 150 bp, and the resistant mosquitoes remained undigested with the band at 550 bp.\n", - "\n", - "header: Impact of the Duplicated CYP6P9a and CYP6P9b P450 Genes on the Performance of Bed Nets\n", - "\n", - "The samples collected during the evaluation of Olyset and Olyset Plus in experimental huts were grouped in several categories: dead, alive, blood fed, and unfed; room and veranda. The _CYP6P9a_/b and _6.5 kb SV_ were genotyped in each group using the respective PCR assays as described [28,29,31]. This allowed the relative survival and feeding success of resistant and susceptible insects in the presence of both bed nets to be directly measured.\n", - "\n", - "header: Abstract\n", - "\n", - "Experimental Hut Trials Reveal That CYP6P9a/b P450 Alleles Are Reducing the Efficacy of Pyrethroid-Only Olyset Net against the Malaria Vector _Anopheles funestus_ but PBO-Based Olyset Plus Net Remains Effective\n", - "\n", - "Benjamin D. Menze, Leon M. J. Mugenzi, Magellan Tchouakui, Murielle J. Wondji,\n", - "\n", - "1Vector Biology Department, Liverpool School of Tropical Medicine, Pembroke Place, Liverpool L3 5QA, UK; murielle.wondji@ilstmed.ac.uk\n", - "2Medical Entomology Department, Centre for Research in Infectious Diseases (CRID), Yaounde 13591, Cameroon; leon.mugenzi@crid-cam.net (L.M.J.M.); magellan.tchouakui@crid-cam.net (M.T.); micareme.tchouop@crid-cam.net (M.T.)\n", - "* Correspondence: benjamin.menze@crid-cam.net (B.D.M.); charles.wondji@ilstmed.ac.uk (C.S.W.)\n", - "\n", - "\n", - "Malaria remains a major public health concern in Africa. Metabolic resistance in major malaria vectors such as _An. funestus_ is jeopardizing the effectiveness of long-lasting insecticidal nets (LLINs) to control malaria. Here, we used experimental hut trials (EHTs) to investigate the impact of cytochrome P450-based resistance on the efficacy of PBO-based net (Olyset Plus) compared to a permethrin-only net (Olyset), revealing a greater loss of efficacy for the latter. EHT performed with progenies of F5 crossing between the _An. funestus_ pyrethroid-resistant strain FUMOZ and the pyrethroid-susceptible strain FANG revealed that PBO-based nets (Olyset Plus) induced a significantly higher mortality rate (99.1%) than pyrethroid-only nets (Olyset) (56.7%) (\\(p<0.0001\\)). The blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)). Genotyping the _CYP6P9a/b_ and the intergenic _6.5 kb structural variant_ (SV) resistance alleles showed that, for both nets, homozygote-resistant mosquitoes have a greater ability to blood-feed than the susceptible mosquitoes. Homozygote-resistant genotypes significantly survived more with Olyset after cone assays (e.g., _CYP6P9a_ OR = 34.6; \\(p<0.0001\\)) than homozygote-susceptible mosquitoes. A similar but lower correlation was seen with Olyset Plus (OR = 6.4; \\(p<0.001\\)). Genotyping EHT samples confirmed that _CYP6P9a/b_ and _6.5 kb_SV_ homozygote-resistant mosquitoes survive and blood-feed significantly better than homozygote-susceptible mosquitoes when exposed to Olyset. Our findings highlight the negative impact of P450-based resistance on pyrethroid-only nets, further supporting that PBO nets, such as Olyset Plus, are a better solution in areas of P450-mediated resistance to pyrethroids.\n", - "\n", - "header: 4.6.3 PCR Assay to Detect the 6.5 kb SV\n", - "\n", - "To easily identify the samples containing the 6.5 kb insertion, the recently designed PCR assay [28] was used to discriminate between mosquitoes with the 8.2 kb (resistant) and 1.7 kb (susceptible) _CYP6P9a_ and _CYP6P9b_ intergenic regions. Briefly, three primers were used: two (FG_5F: CTACCGTCAAAGTCCGGTAT and FG_3R: TTTCGAAAACATCCCTAAA) at regions flanking the insertion point and a third primer (FZ_INS5R: ATATGCCACGAAGGAAAGCAG) in the _6.5 kb_ insertion. One unit of KAPA Taq polymerase (Kapa Biosystems) in 1x buffer A, i.e., 25 mm of MgCl2, 25 mm of dNTPs, and 10 mm of each primer, was used to constitute a 15 mL PCR mix using the following conditions: an initial denaturation step of 3 min at 95 degC, followed by 35 cycles of 30 s at 94 degC, 30 s at 58 degC, and 60 s at 72 degC, with a final extension for 10 min at 72 degC. The amplicon was revealed on a 1.5% agarose gel stained with Midori Green Advance DNA Stain (Nippon genetics Europe GmbH) and revealed on a UV transilluminator.\n", - "\n", - "header: 4.6.1 Genotyping of the CYP6P9a-R Marker Using PCR-RFLP\n", - "\n", - "DNA was extracted from various groups of mosquitoes (dead, alive, blood fed, and unfed; room and veranda) using the Livak protocol [49]. The PCR was carried out using 10 mM of each primer and 1 mL of gDNA as the template in 15 mL reaction containing 10x Kapa Taq buffer A, 25 mM of dNTPs, 25 mM of MgCl2, and 1 U of Kapa Taq (Kapa Biosystems, Boston, MA, USA). Amplification was carried out using thermocycler parameters: 95 degC for 5 min, 35 cycles of 94 degC for 30 s, 58 degC for 30 s, 72 degC for 45 s, and a final extension at 72 degC for 10 min. The following primers were used: RFLP6P9aF forward primer 5'-TCCCGAAATACAGCCTTTCAG-3 and RFLP6P9aR reverse primer 5'-ATTGGTCCATCGCTAGAAG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 450 bp. The digestion with Taq1a followed 0.2 mL of Taq1a, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product migrated on the 2% gel. Amplicons from resistant mosquitoes were cut into two bands with sizes of 350 bp and 100 bp, and the susceptible mosquitoes remained undigested with the band at 450 bp.\n", - "\n", - "header: 3 Discussion\n", - "\n", - "The capacity to assess the impact of insecticide resistance on the effectiveness of insecticide-treated control tools is crucial in order to implement suitable insecticide resistance management (IRM) [32]. Evolution in the area of DNA-based resistance markers of P450-mediated resistance [28; 29] currently offers robust tools to screen pyrethroid resistance in field populations of the major malaria vectors such as _An. funestus_ and assess their impact on the effectiveness of LLINs. In this study, we use these markers to evaluate the extent to which pyrethroid resistance is impacting the efficacy of pyrethroid-only nets such as Olyset in comparison to PBO-based net such as Olyset Plus. This study also allowed to assess the interplay between P450 genes in the overall genetic variance to resistance and their combined impact on the efficacy of LLINs.\n", - "\n", - "PBO-Based Nets (Olyset Plus) Exhibit Greater Efficacy than Pyrethroid-Only Nets (Olyset) in the Context of P450-Based Resistance\n", - "\n", - "Olyset presented a moderate mortality compared to Olyset Plus (30.9% vs. 100%; \\(p\\) < 0.0001). The high mortality observed with PBO nets compared to pyrethroid-only nets is similar to what was observed in previous studies [33; 34; 35; 36]. The high mortality observed with PBO-based nets against the hybrid strain FUMOZ/FANG is due to the fact the mechanisms underlying the resistance in this population are driven by _CYP6P9a_ and _CYP6P9b_[37] which are inhibited by PBO [38]. These results demonstrate that PBO-based nets may be a more suitable solution in areas where resistance is mainly mediated by P450 genes.\n", - "\n", - "Figure 7: Combined impact of the triple resistance alleles (_CYP6P9a_/_CYP6P9b_/_6.5 kb SV_) on the efficacy of insecticide-treated nets. (**A**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances of being alive in the presence of Olyset Net. (**B**) Ability to survive exposure to Olyset net for the various combined genotypes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_. (**C**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances to bloodfed in the presence of Olyset net. (**D**) The triple RR/RR/SV+SV+ homozygous mosquitoes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_ exhibit a greater blood-feeding ability than other genotypes. Ns: non-significant; * (0.05); ** (0.01); *** (0.001).\n", - "\n", - "\n", - "The efficacy of nets observed in this study confirms the loss in efficacy of the pyrethroid-only nets against _Anopheles_ mosquitoes, as observed across the continent [39]. This loss of efficacy was observed in Mozambique [7,40], Malawi [41], Congo [42], and Cameroon [6,43]. Overall, similar to this study, it has been noticed that PBO-based nets demonstrate a better performance compared to pyrethroid-only nets [33,34]. The same trends were observed with pyrethroid type II with high mortality observed with PermaNet 3.0 compared to PermaNet 2.0 [28,29,31], suggesting that PBO-based nets with both type I or II can exhibit high performance against resistance sustained by P450s.\n", - "\n", - "P450 Resistance Can Reduce the Efficacy of Pyrethroid-Only Nets Significantly Better Than PBO-Based Nets\n", - "\n", - "When comparing the impact of _CYP6P9a/b_ on pyrethroid-only nets and PBO-based nets using samples from cone assays, we noticed that the impact of _CYP6P9a_ on pyrethroid-only nets was higher than with PBO-based nets (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. Olyset Plus, OR = 6.4; \\(p\\) < 0.001). The same trend was also observed with _CYP6P9b_ and the 6.5 kb SV. This can be explained by the fact that the addition of the PBO inhibits the cytochrome P450 enzymes, which is the main resistance mechanism in the strain used by the mosquitoes [44,45].\n", - "\n", - "On the other hand, Olyset nets have also shown reduced performance against _CYP6P9a_ and _CYP6P9b_-resistant mosquitoes. Strong association was observed between the resistant alleles and the increased ability of the mosquitoes to survive after exposure to these nets. Nevertheless, the impact of _CYP6P9a_ and _CYP6P9b_ seems to be more significant on PermaNet nets impregnated with deltamethrin [29,31], compared to Olyset nets impregnated with permethrin (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. PermaNet 2.0, OR = 239.0; \\(p\\) < 0.001 and Olyset Plus, OR = 6.4; \\(p\\) < 0.001 vs. PermaNet 3.0, OR = 81.0; \\(p\\) < 0.001) [29,31]. This significant impact on PermaNet could be associated with the fact that the hybrid strain is more resistant to type II pyrethroids, as shown by WHO bioassays, where the mosquitoes were more resistant to deltamethrin compared to permentrin (48.5% vs. 80.7%). With regards to the obtained odd ratios, a stronger association was observed between _CYP6P9a/CYP6P9b_ and the loss of efficacy of nets compared to what was observed with GST-based resistance through the L119F-_GSTe2_-resistant allele [43], in line with the greater role of P450 in resistance to pyrethroids in _An. funetus_, compared to that of GST. The 6.5 kb SV was shown to further exacerbate the loss of efficacy in the permethrin-only nets. The design of the simple PCR-based assay to genotype the _6.5 kb SV_ enabled us to assess the impact of such structural variation on the efficacy of insecticide-treated nets, including the pyrethroid-only and the PBO-synergist nets. A greater reduction in the efficacy of _6.5 kb SV_ was present on permethrin-only nets compared to PBO-based nets, which is similar to that observed with _CYP6P9a_ [31] and _CYP6P9b_ [29], in terms of the reduced mortality rate and blood-feeding inhibition. This pattern is also similar to that seen with deltamethrin-based nets (PermaNet 2.0 vs. PermaNet 3.0) [29,31]. Overall, the significantly greater loss of efficacy due to P450s observed with both type I (Olyset and PermaNet 2.0) and PBO-based nets (Olyset Plus and PermaNet 3.0) further supports the deployment of PBO-based nets to control P450-based metabolically resistant mosquito populations. The deployment of PBO-based nets should nevertheless also be monitored to regularly assess their efficacy since they too could be impacted by resistance, as shown by the fact that _CYP6P9a/b_-resistant mosquitoes could blood-feed significant better, even with Olyset Plus. This increased ability of resistant mosquitoes to blood-fed, even with PBO-based net, suggests that PBO-based nets are not immune to the impact of resistance, even if they remain significantly more effective than pyrethoid-only nets. The increased blood-feeding of P450-resistant mosquitoes when exposed to PBO-based nets may also lead to a higher malaria transmission, although this is mitigated by the high mortality observed for Olyset Plus in a experimental hut trial. Overall, evaluating the impact of P450-based resistance on the efficacy of Olyset vs. Olyset Plus further supports the results obtained in a cluster \n", - "randomized controlled trial with both nets in Tanzania showing greater effectiveness of Olyset Plus [46].\n", - "\n", - "header: Results\n", - "\n", - "All the nets used in the study were first exposed to the susceptible lab strain Kisumu for quality control. The mortality for Olyset and Olyset Plus was 100% (Figure 1A). The _An. funestus_ hybrid strain exposed to bed nets using WHO cone assays exhibited mortality rates of 30.1 \\(\\pm\\) 11.5% for Olyset and 100 \\(\\pm\\) 0% for Olyset Plus, suggesting a greater efficacy of PBO synergist nets compared to pyrethroid-only nets.\n", - "\n", - "**Susceptibility profiles of the FUMOZ-FANG:** The bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to deltamethrin with mortality of 43.7 \\(\\pm\\) 5.9%, and was resistant to propoxur with mortality of 67.3 \\(\\pm\\) 6.6% (Figure 1B). The second set of bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to permethrin with mortality of 43.7 \\(\\pm\\) 1.6% and 39.3 \\(\\pm\\) 1.6%, respectively, for 90 min and 30 min. Resistance was also observed with deltamethrin with a mortality of 86.4 \\(\\pm\\) 3.1% and 42.3 \\(\\pm\\) 2.5%, respectively, for 90 min and 30 min (Figure 1C).\n", - "\n", - "header: 2.1.1. Quality Control and Performance of the Nets against the Hybrid Strain: 2.1.2 Performance of Nets against the Hybrid Strain Using Experimental Hut\n", - "\n", - "A total number of 578 mosquitoes from the hybrid strain were released and recaptured on a period of one week. In total, 141 samples were released in the control hut, 224 in the hut were treated with Olyset, and 213 in the hut were treated with Olyset Plus.\n", - "\n", - "**Mortality**: Analysis of mortality rates revealed very high mortality of the hybrid FUMOZ-FANG strain against the PBO-based Olyset Plus net (99.1%). In contrast, lower mortality was observed for the pyrethroid-only Olyset net (56.7%). Very low mortality was observed in the untreated control net (9.9%) (Figure 1D; Table S1).\n", - "\n", - "**Blood-feeding**: The blood-feeding rate did not significantly differ when comparing the control (7.8%) to Olyset (11.6% \\(p>0.05\\)) and Olyset Plus (5.6%; \\(p>0.05\\)). However, the blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)) (Figure 1D; Table S1).\n", - "\n", - "Figure 1: Susceptibility profile of the hybrid FUMOZ-FANG strain to pyrethroids. (**A**) Net quality assessment with recorded mortalities after cone assays with Kisumu, the _An. gambiae_-susceptible lab strain, and the _An. funestus_ FUMOZ-FANG strain. (**B**) Susceptibility profile of the hybrid FUMOZ-FANG strain to type II (deltamethrin) pyrethroids and propoxur with recorded mortalities following 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**C**) Susceptibility profile of the hybrid FUMOZ-FANG strain to deltamethrin (type II pyrethroids) and permethrin (type I pyrethroids) with recorded mortalities following 30 and 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**D**) Proportion of mortality, blood-feeding, and exophily rate for Olyset and Olyset Plus against _An. funestus_ (crossing the FUMOZ-FANG strain (F5)). Ns = \\(p>0.05\\); * = \\(p\\leq 0.05\\); ** = \\(p\\leq 0.01\\); *** = \\(p\\leq 0.001\\).\n", - "\n", - "\n", - "\n", - "\n", - "**Exophily**: The exophily rate in the hut with Olyset net (23.7%) was significantly higher than that in the control hut (13.5%) (_p_ = 0.02), as well as than for Olyset Plus (7.5%; \\(p\\) < 0.001). No significant difference was observed between Olyset Plus and the control net (_p_ = 0.3) (Figure 1D; Table S1).\n", - "\n", - "Validating the Role of CYP6P9a/b and 6.5 kb SV in Pvrethroid Resistance in the Hybrid FUMOZ-FANG Strains before the Experimental Hut Trials\n", - "\n", - "header: 2.3.1 Impact on Mosquito Mortality: 2.3.2 CYP6P9a Impacting the Blood-Feeding\n", - "\n", - "Homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed better than homozygote-susceptible mosquitoes (SS) (OR = 4.5; \\(p\\) < 0.01) when exposed to Olyset. Heterozygote mosquitoes (RS) were significantly worse at blood-feeding with Olyset compared to homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-1.7; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) fed heterozygotes (OR = 5.4; CI = 2.6-10.88; \\(p\\) < 0.001) significantly better (Table S4; Figure 5C). Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.3; CI = 1.3-4.1; \\(p\\) < 0.01) (Table S4). For Olyset Plus, homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed than homozygote-susceptible mosquitoes (RS) (OR = 6.3; \\(p\\) < 0.001) when exposed to Olyset Plus. The significant ability to blood-feed was observed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.0; CI = 1.1-3.5; \\(p\\) = 0.03) (Table S4).\n", - "\n", - "header: 5 Conclusions\n", - "\n", - "This study reveals that insecticide resistance driven by _CYP6P9a/b_ and _6.5 kb SV_ can reduce the efficiency of Permethrin-based LLINs, such as Olyset, while PBO-based nets remain effective. However, the greater loss of efficacy observed in mosquitoes with multiple and complex resistance supports the need to introduce new products for vector control which is less reliant on pyrethroids. Meantime, PBO-based nets should be preferably deployed in areas of P450-based resistance.\n", - "\n", - "**Supplementary Materials:** The following supporting information can be downloaded at: [https://www.mdpi.com/article/10.3390/pathogens11060638/s1](https://www.mdpi.com/article/10.3390/pathogens11060638/s1), Table S1: Results of the performance of Olyset and Olyset Plus against _An. funestus_ females (crossing FUMOZ-FANG; F5) in experimental hut trial. Table S2: Correlation between _CYP6P9a and CYP6P9b_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S3: Correlation between the _6.5Kv SV_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S4: Correlation between genotypes of _CYP6P9a_, _CYP6P9b_ and _6.5 kb SV_ and mortality and blood-feeding after exposure to Olyset and Olyset Plus in experimental huts. Table S5: _CYP6P9a_ and _CYP6P9b_ acting together further increase the ability of _An. funestus_ to survive and blood feed against Olyset after experimental hut trial.\n", - "\n", - "**Author Contributions:** C.S.W. conceived and designed the study; L.M.J.M. and M.T. (Magellan Tchouakui) generated the lab crosses and performed the validation of the PCR; B.D.M. performed the experimental hut experiments with C.S.W. and genotyped the resistance makers with M.J.W. and M.T. (Micareme Tchoupo); B.D.M. and C.S.W. wrote the paper with assistance from M.T. (Magellan Tchouakui) and L.M.J.M. All authors have read and agreed to the published version of the manuscript.\n", - "\n", - "**Funding:** This research was funded in whole by the Welcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). For the purpose of open access, the authors applied a CC BY public copyright license to any author who accepted a manuscript version following this submission.\n", - "\n", - "**Institutional Review Board Statement:** NA.\n", - "\n", - "**Informed Consent Statement:** NA.\n", - "\n", - "**Data Availability Statement:** NA.\n", - "\n", - "**Acknowledgments:** A big thanks to Charles Wondji for his financial support through the Wellcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). I am also grateful to the Mibellon community.\n", - "\n", - "**Conflicts of Interest:** The authors declare that they have no competing interest.\n", - "\n", - "header: Study Site: Laboratory Strain: FUMOZ/FANG Crossing\n", - "\n", - "Previous studies revealed that the duplicated P450 _CYP6P9a/b_ and intergenic _6.5 kb sv_ is mainly found in mosquitoes from southern Africa and absent from mosquitoes collected elsewhere in Africa [31,45]. Moreover, these resistance markers have already been selected (close to fixation) in the southern African _An. funestus_ populations, preventing free-flying mosquitoes from being used in this region in order to assess their impact on LLIN efficacy, as all mosquitoes are nearly homozygote-resistant now [7]. Therefore, to evaluate the impact of these cytochrome P450, we opted to use a hybrid strain generated from two _An. funestus_ laboratory colonies: the FANG colony, a completely insecticide-susceptible colony originating from Angola, and the FUMOZ colony derived from southern Mozambique, which is highly resistant to pyrethroids and carbamates [48]. During rearing, the pupae of each strain were kept individually in Falcon tubes (15 mL), locked with a piece of cotton for individual emergence. After the emergence of pupae in the Falcon tube, the males and the females were separated. A reciprocal crossing was performed using 50 males and 50 females from the other strain. After the initial F1 generation obtained from the reciprocal crosses of the 50 males and 50 females of both strains, the hybrid strain was reared to F5 and F6 generation, presenting good segregation in all the three genotypes. The hybrid strain was then used for the release recapture experiment in the huts.\n", - "\n", - "header: 2.4.1 The Impact of CYP6P9b on Mortality: 2.4.2 CYP6P9b Impacting the Blood-Feeding\n", - "\n", - "A strong association was observed between _CYP6P9b_ genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could more successfully blood-fed when compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 4.1-24.9; \\(p\\) < 0.001) (Table S4; Figure 5F). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset was not different to that of homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-2.2; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 11.1; CI = 5.3-23.03: \\(p\\) < 0.001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood fed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.7; CI = 2.5-8.1; \\(p\\) < 0.01) (Table S4).\n", - "\n", - "header: Susceptibility Profile of the Hybrid FUMOZ/FANG Strain to Pyrethroids\n", - "\n", - "Before assessing the impact of _CYP6P9a/b_ on the effectiveness of LLINs using the experimental huts, the resistance status of the hybrid FUMOZ-FANG was evaluated in laboratory conditions via WHO tube tests and cone tests, and the role of _CYP6P9a/b_ in terms of resistance was assessed.\n", - "\n", - "**Bioassays:** WHO bioassays were conducted with 0.05% deltamethrin and 0.1% propoxur. To generate highly resistant and highly susceptible mosquitoes, WHO bioassays were conducted with 0.75% permethrin and 0.05% deltamethrin for 30 min and 90 min. For each insecticide, four replicates of 25 mosquitoes from the hybrid strains were used. Alive mosquitoes after 90 min of exposure and dead mosquitoes after 30 min of exposure were then genotyped to establish the association between the _CYP6P9a/b_ and _6.5 kb SV_ resistance alleles and the ability of mosquitoes to survive to these insecticides.\n", - "\n", - "**Cone assays:** Cone test bioassays were conducted with a fragment of Olyset and Olyset Plus using the resistant hybrid strains FUMOZ-FANG. Five batches of 10 unfed females, aged 2-5 days old, were exposed to each bed net for three minutes. They were then transferred into the holding paper cup containers. The knockdown was checked after 60 min and the mortality after 24 h. Alive and dead mosquitoes obtained after exposure were then genotyped. The association between the _CYP6P9a/b_-resistant allele and the ability of mosquitoes to survive to these insecticides was also established.\n", - "\n", - "header: 1 Introduction\n", - "\n", - "Long-lasting insecticidal nets (LLINs) remain an important component of the malaria control strategies used to reduce mortality and morbidity due to this disease in Africa [1, 2]. Mostly insecticides belonging to the pyrethroid group, as well as more and more novel insecticides, are currently recommended for bed net impregnation [3, 4, 5]. In recent years, anopheles mosquitoes have increasingly been reported to show resistance against pyrethroids across Africa. This is the case for major vectors including _Anopheles funestus_[6, 7, 8, 9] and _Anopheles gambiae_[10, 11, 12, 13, 14]. This growing spread of resistance has led to a concern that LLINs may lose their efficacy. However, quantifying such loss of efficacy remains challenging without suitable metrics associated with resistance, highlighting the need to use robust genotype/phenotype analysis for this evaluation. At a time when national malaria control \n", - "programs across Africa are seeking to take evidence-based decisions on their choice of suitable nets to help improve malaria control, it is paramount to determine the extent to which existing resistance to pyrethroid really affects LLIN efficacy. This involves an understanding of the interaction between resistance mechanisms and mosquito responses to exposure to LLINs. Broadly speaking, pyrethroid resistance can be caused by alterations in the target site of the insecticide or enhanced enzymatic activities capable of metabolizing the insecticide before it reaches the target [15-17]. Target site resistance is well studied with mutations in the target of both pyrethroid and DDT insecticides, as well as the voltage-gated sodium channels which lead to knockdown resistance (_kdr_). The development of molecular assays more than twenty years ago made it possible to track this resistance mechanism using a simple PCR [18-21] or high throughput techniques, such as TaqMan assays [22]. It has also been possible to assess the impact of _kdr_ on control tools, notably in _An. gambiae_ where these markers are common [23-25], contrary to _An. funestus_, where it is still not detected [26]. The second best characterized cause of insecticide resistance is metabolic resistance, which is more complex to understand as it can involve the detoxification, sequestration, and transportation of insecticides or their conjugates [16,17,27]. Recent studies have focused on elucidating the genetic factors which cause the increased expression of detoxification genes associated with insecticide resistance in malaria vectors such as _An. funestus_, leading to the development of simple molecular assays used to detect metabolic resistance [28-31].\n", - "\n", - "The recent design of molecular assays for the duplicated _CYP6P9a/b_ and the associated _6.5 kb_ structural variant (SV), refs. [28,29,31] now provides a great opportunity to assess the impact of P450-based pyrethroid resistance on the efficacy of various LLINs, including pyrethroid-only (Olyset) and PBO (Olyset Plus) nets. This will provide evidence-based information on their effectiveness in the presence of a growing and escalading resistance to pyrethroids. Previous assessment of this impact on PermaNet nets made with type II pyrethroid deltamethrin has been performed [28,29,31], but this remains to be carried out for type I pyrethroid nets, such as the common permethrin-based Olyset nets.\n", - "\n", - "Here, using EHT, we show a significantly greater efficacy of the PBO-based net Olyset Plus compared to the pyrethroid-only Olyset net against pyrethroid-resistant _An. funestus_. Using the genotyping of DNA-based markers of P450 resistance, we reveal that _CYP6P9a/b_ P450-based pyrethroid resistance induces a significant loss of efficacy for pyrethroid-only net Olyset against _An. funestus_. A reduced efficacy was also detected for PBO-based net Olyset Plus, but at a lower extent than for Olyset net, revealing that PBO nets are more suitable to tackle such P450-based resistance.\n", - "\n", - "header: Table 1: Description of the long-lasting insecticidal nets used.\n", - "footer: None\n", - "columns: ['Treatment Arm', 'Description', 'Manufacturer']\n", - "\n", - "{\"0\":{\"Treatment Arm\":\"Untreated\",\"Description\":\"100% polyester with no insecticide\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"4\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"5\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"}}\n", - "\n", - "header: Impact of CYP6P9a on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", - "\n", - "Genotyping of the _CYP6P9a_ marker allowed us to assess the impact of P450-based metabolic resistance on the loss of efficacy of Olyset, but not for Olyset Plus, since most of the mosquitoes released in Olyset Plus huts died. To avoid confounding effects from blood-feeding, or net entry or exophily status, the distribution of the _CYP6P9a_ genotypes was assessed firstly only among unfed mosquitoes collected in the room. This revealed a highly significant difference in the frequency of the three genotypes between the dead and alive mosquitoes (chi-square = 28.8; \\(p\\) < 0.0001) (Figure 5). Analysis of the correlation between each genotype and mortality revealed that _CYP6P9a_ homozygous-resistant mosquitoes (RR) show an increased ability to survive exposure to the Olyset when compared to homozygote-susceptible mosquitoes (SS) with (OR = 5.0; CI = 2.01-12.4; \\(p\\) = 0.001). The strength of this association was further shown by the significant ability to survive exposure when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.04; CI = 1.1-3.6; \\(p\\) < 0.05). However, heterozygote mosquitoes (RS) did not survive exposure to Olyset better than homozygote-susceptible mosquitoes (SS) (OR = 1.8; CI = 0.8-3.9; \\(p\\) > 0.05) (Figure 5A; Table S4; Figure 5B).\n", - "\n", - "Figure 5: Impact of both _CYP6P9a_ and _CYP6P9b_ on the efficacy of bed nets in the experimental hut trial. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: \\(p\\) < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Association between _CYP6P9a_ and ability to blood-feed when exposed to Olyset. The _CYP6P9a_–R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (**D**) Association between _CYP6P9b_ and ability to survive exposure to Olyset in the experimental hut trial. (**E**) Allelic frequency of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the _CYP6P9b_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9b_S_. (**F**) Association between _CYP6P9b_ gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The _CYP6P9b_-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\n", - "\n", - "header: 2.2.2 Validating the Role of CYP6P9b_R_ Using Sample from WHO Tube Assays\n", - "\n", - "To confirm the ability of the _CYP6P9b_R_ allele to predict pyrethroid resistance phenotype in the hybrid strain FUMOZ-FANG, the F5 samples were genotyped. This revealed that those that stayed alive after exposure to permethrin for 90 minutes are mainly homozygote\n", - "\n", - "Figure 2: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (**A**) Tube assay _CYP6P9a_ and mortality. Role of _CYP6P9a_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9a_ genotypes according to resistance phenotypes. (**B**) Tube assay _CYP6P9b_ and mortality. Role of _CYP6P9b_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9b_ genotypes according to resistance phenotypes. (**C**) Cone assay _CYP6P9a_ and mortality. Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: \\(p\\) < 0.001). (**D**) Cone assay _CYP6P9a_ and mortality allele. Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the _CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**E**) Cone assay _CYP6P9b_ and mortality. Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset using the cone test, showing strong association (RR vs. SS: \\(p\\) < 0.001).\n", - "\n", - "\n", - "resistant (20.8%) and heterozygotes (75%), with only two being homozygote-susceptible. Among the 47 mosquitoes found dead after 30 min exposure to permethrin (highly susceptible), 97.87% were found to be homozygote-susceptible, and one remaining was a heterozygote (Figure 2B). A strong association was perceived between permethrin resistance and the _CYP6P9b_ genotypes when comparing RR vs. SS (OR = infinity; \\(p\\) < 0.0001) and RS vs. SS (OR = 715; \\(p\\) < 0.0001).\n", - "\n", - "2.3 Validation of the Role of CYP6P9a and CYP6P9b in Conferring Resistance Using Samples from Cone Assays\n", - "\n", - "Using dead and alive mosquitoes obtained after cone assays, _CYP6P9a_ homozygous-resistant mosquitoes (RR) and heterozygous (RS) could survive significantly better following exposure to Olyset and Olyset Plus than homozygote-susceptible mosquitoes (Table S2). Olyset shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 35.1; \\(p\\) < 0.0001) and RS vs. SS (OR = 34.6; \\(p\\) < 0.0001) for _CYP6P9a_ (Figure 2C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 7.7; \\(p\\) < 0.05) (Table S2; Figure 2D). Concerning _CYP6P9b_, homozygous-resistant mosquitoes (RR) and heterozygous (RS) could also survive significantly better following survive exposure to Olyset net. A strong association was noticed between the gene and the ability to survive when comparing RR to SS (OR = 32.4; \\(p\\) < 0.0001) and RS vs. SS (OR = 97.3; \\(p\\) < 0.0001) (Table S2; Figure 2E).\n", - "\n", - "Olyset Plus shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 6.4; \\(p\\) < 0.001) and RS vs. SS (OR = 7.2; \\(p\\) < 0.001) for _CYP6P9a_ (Table S2; Figure 3A). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.0; \\(p\\) = 0.05) (Table S2; Figure 3B). Concerning the _CYP6P9b_, Olyset Plus equally shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 9.7; \\(p\\) < 0.001) and RS vs. SS (OR = 17.9; \\(p\\) < 0.001) for _CYP6P9b_ (Table S2; Figure 3C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.2; \\(p\\) = 0.01) (Table S2).\n", - "\n", - "Figure 3: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset Plus nets after cone assays. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (_p_ < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset Plus using the cone test, showing the significant ability of the mosquitoes carrying the RR genotype to survive compared to SS (_p_ < 0.001).\n", - "\n", - "header: Resistance Escalation with Multiple Resistance Alleles Present a Greater Risk of Control Failure\n", - "\n", - "This study confirms the findings by [28], suggesting that the _6.5 kb SV_ acts as an enhancer for nearby duplicated P450 genes _CYP6P9a_ and _CYP6P9b_, leading to their increased overexpression, thus creating greater resistance. This _6.5 kb SV_ is strongly associated with an aggravation of pyrethroid resistance, which reduces the efficacy of pyrethroid-only nets. The fixation of this _6.5 kb SV_, besides the resistant alleles of _CYP6P9a_ and _CYP6P9b_, could explain the resistance escalation currently observed against the _An. funestus_ population from the southern part of Africa reducing the efficacy of bed nets [7,41].\n", - "\n", - "This study revealed that multiple and complex resistance combining elevated expression (_CYP6P9a/b_) [45], as well as the selection of cis-regulatory motifs for transcription binding sites (CnCC/MAF) [31], coupled with structural variations such as the _6.5 kb_, which is known to be enriched with several regulatory elements [28], can lead to a greater reduction in bed net efficacy. The fact that triple homozygote-resistant mosquitoes could survive better against exposure to pyrethroid-only nets compared to all genotypes reveals the greater risk that an unabated increase in resistance can likely lead to the failure of insecticide-based interventions, as predicted by the WHO global plan for insecticide resistance management. This calls for novel nets which do not rely on pyrethroids in the future. However, the impact of these resistance alleles on the efficacy of LLINs in natural populations remains to be established, as we only performed a test with a hybrid strain from two laboratory strains. This work must be urgently carried out, particularly as the molecular tools are increasingly available.\n", - "\n", - "header: Impact of CYP6P9b on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", - "\n", - "The impact of _CYP6P9b_ genotypes on the ability of mosquitoes to survive exposure to Olyset was firstly evaluated on the unfed samples collected only in the room. This investigation showed that the three genotypes were significantly different in their distributions (chi-square = 23.4; \\(p\\) < 0.0001) (Figure 5). Analysis of the correlation between each genotype and mortality revealed that _CYP6P9b_ homozygous-resistant mosquitoes (RR) show an increased ability to survive exposure to the Olyset when compared to homozygote-susceptible mosquitoes (SS) (OR = 15.0; CI = 4.5-50.3; \\(p\\) < 0.001) (Figure 5D). Heterozygote mosquitoes (RS) survived exposure to Olyset significantly better than homozygote-susceptible mosquitoes (SS) (OR = 6; CI = 1.9-18.75; \\(p\\) < 0.001). Homozygote-resistant mosquitoes (RR) struggled to survive compared to heterozygotes (OR = 2.4; CI = 1.2-4.8; \\(p\\) = 1) when considering samples from the room only. On the other hand, when considering all the samples, the additive resistance conferred by each allele of _CYP6P9b_ was shown by the fact that homozygote-resistant mosquitoes (RR) could survive significantly better than heterozygotes (OR = 2.5; CI = 1.3-4.8; \\(p\\) < 0.01). Moreover, the strength of this association was further shown by the significant ability to survive exposure when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.5; CI = 1.4-4.5; \\(p\\) < 0.01) (Table S4; Figure 5E). The same trend showing a strong association between the _CYP6P9b_ genotypes and the mortality was also observed when analyzing all the samples dead and alive, including the blood-fed mosquitoes and the one collected in the veranda (Table S4).\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}, \"Time_elapsed\": {\"title\": \"Time Elapsed\", \"description\": \"For longitudinal studies: how long since the start of the study, in units of months?Report this value only if explicitly stated in the text.\"}, \"Blood_meal_count\": {\"title\": \"Blood Meal Count\", \"description\": \"Count of blood meals taken by mosquitos over observation period. This is a proxy for time, as mosquitoes in the study were fed blood meals once a week and oviposition recorded at each time step.\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Cameroon\",\"Site\":\"Yaounde\",\"Start_month\":1,\"Start_year\":2023,\"End_month\":6,\"End_year\":2023,\"Time_elapsed\":5.0,\"Blood_meal_count\":4.0},\"S02\":{\"Study_type\":\"Bioassay, WHO cylinder test\",\"Country\":\"Mozambique\",\"Site\":\"Lab facility\",\"Start_month\":2,\"Start_year\":2023,\"End_month\":5,\"End_year\":2023,\"Time_elapsed\":3.0,\"Blood_meal_count\":null}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Synergist_concentration\": {\"title\": \"Synergist concentration (measured)\", \"description\": \"Enter the measured concentration of the synergist.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Untreated\",\"pHI_category\":\"Good\",\"Insecticide\":null,\"Concentration_initial\":null,\"Synergist\":null,\"Synergist_concentration\":null},\"N02\":{\"Net_type\":\"Olyset\",\"pHI_category\":\"Good\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"8.6 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (2%)\",\"Synergist\":null,\"Synergist_concentration\":null},\"N03\":{\"Net_type\":\"Olyset Plus\",\"pHI_category\":\"Good\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"8.6 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (2%)\",\"Synergist\":\"PBO\",\"Synergist_concentration\":\"4.3 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (1%)\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Trial 2.\n", - "\n", - "1. Untreated net.\n", - "2. PermaNet 3.0 (Vestergaard Sarl).\n", - "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", - "4. PermaNet 3.0 + Bendiocarb IRS applied at 400 mg/m2.\n", - "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", - "6. PermaNet 3.0 + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", - "\n", - "Olyset Plus and PermaNet 3.0 are WHO prequalified pyrethroid-PBO ITNs [3]. Olyset Plus is made of polyethylene filaments coated with 20 g/Kg of permethrin and 10 g/Kg of PBO. PermaNet 3.0 consists of polyester side panels coated with deltamethrin at 2.1 g/kg and a polyethylene roof panel incorporating deltamethrin and PBO at 4.0 g/kg and 25 g/kg respectively.\n", - "\n", - "header: Tunnel tests\n", - "\n", - "The tunnel test consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections using a netting frame fitted into a slot across the tunnel. In one of the sections, a guinea pig was housed unconstrained in a small cage, and in the other section, -100 unfed female mosquitoes aged 5-8 days were released at dusk and left overnight. The net samples were deliberately hoked with nine 1-cm holes to give opportunity for mosquitoes to penetrate the animal bathed chamber for a blood meal an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 oC and 65-85% RH. The next morning, the numbers of mosquitoes found alive or dead, fed or unfed, in each section were scored. Live mosquitoes were provided with 10% glucose solution and delayed mortality was recorded after 24 h. The pyrethroid-PBO ITNs were compared to Olyset Net (a permethrin-only net, Sumitomo chemical) and PermaNet 2.0 (a deltamethrin-only net, Vestergaard Sarl) and an untreated control net. Two to three net pieces were tested per net type.\n", - "\n", - "header: Table 3: Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato exposed to pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination in experimental huts in Cové, southern Benin.\n", - "footer: Results are presented separately for the trials involving Olgest Plus (Trial 1) and PermaNet 3.0 (Trial 2). ‘For each trial, values on this column sharing a superscript letter do not differ significantly, P > 0.05, logistic regression.\n", - "columns: ['Treatment', 'Total females caught', 'Total blood-fed', '% blood-feeding', '95% CIs', '% blood-feeding inhibition', '% personal protection']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total blood-fed\":\"Trial 1\",\"% blood-feeding\":\"Trial 1\",\"95% CIs\":\"Trial 1\",\"% blood-feeding inhibition\":\"Trial 1\",\"% personal protection\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total blood-fed\":\"481\",\"% blood-feeding\":\"72a\",\"95% CIs\":\"69\\u201376\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught\":\"511\",\"Total blood-fed\":\"122\",\"% blood-feeding\":\"24b\",\"95% CIs\":\"20\\u201328\",\"% blood-feeding inhibition\":\"67\",\"% personal protection\":\"75\"},\"3\":{\"Treatment\":\"Benedicarb IRS\",\"Total females caught\":\"556\",\"Total blood-fed\":\"528\",\"% blood-feeding\":\"95c\",\"95% CIs\":\"93\\u201397\",\"% blood-feeding inhibition\":\"\\u201331\",\"% personal protection\":\"\\u2013 10\"},\"4\":{\"Treatment\":\"Olyset Plus + bendicarb IRS\",\"Total females caught\":\"288\",\"Total blood-fed\":\"64\",\"% blood-feeding\":\"22b\",\"95% CIs\":\"17\\u201327\",\"% blood-feeding inhibition\":\"69\",\"% personal protection\":\"87\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total blood-fed\":\"420\",\"% blood-feeding\":\"79d\",\"95% CIs\":\"76\\u201383\",\"% blood-feeding inhibition\":\"\\u20139\",\"% personal protection\":\"13\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total blood-fed\":\"47\",\"% blood-feeding\":\"16e\",\"95% CIs\":\"11\\u201320\",\"% blood-feeding inhibition\":\"79\",\"% personal protection\":\"90\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total blood-fed\":\"Trial 2\",\"% blood-feeding\":\"Trial 2\",\"95% CIs\":\"Trial 2\",\"% blood-feeding inhibition\":\"Trial 2\",\"% personal protection\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total blood-fed\":\"391\",\"% blood-feeding\":\"67u\",\"95% CIs\":\"64\\u201371\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total blood-fed\":\"115\",\"% blood-feeding\":\"24v\",\"95% CIs\":\"20\\u201327\",\"% blood-feeding inhibition\":\"65\",\"% personal protection\":\"71\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total blood-fed\":\"519\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 33\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught\":\"233\",\"Total blood-fed\":\"54\",\"% blood-feeding\":\"23v\",\"95% CIs\":\"18\\u201329\",\"% blood-feeding inhibition\":\"66\",\"% personal protection\":\"86\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total blood-fed\":\"406\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 4\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"},\"14\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"}}\n", - "\n", - "header: 3.2.2 Tumed test bioassays.\n", - "\n", - "To further assess the efficacy of the pyrethroid-PBO ITNs and help explain the findings in the experimental huts, tunnel tests were performed using the susceptible _An. gambiae_ Kisum strain and pyrethroid-resistant _An. gambiae_ as from Cove on net samples (30 x 30 cm) obtained from Olyset Plus and Permaket 3.0 nets. The tunnel test is an overnight animal baulesar what simulates host-seeking behaviour of vector mosquitoes under controlled laboratory conditions. Both pyrethroid-PBO ITNs were compared to pyrethroid-only nets which contained similar pyrethroid-insecticles (Olyset Net and Permaket 2.0). Mosquito mortality rates observed in the tunnels are presented in Fig. 3. Mortality in the control tunnels was 11% with the susceptible Kisum strain and 2% with the pyrethroid-resistant Cove strain. All ITN types induced >8% mortality with the susceptible Kisum strain. Olyset Plus killed significantly higher proportions of the Cove mosquitoes compared to Olyset Net (90% vs. 42%). With Permaket 3.0, mortality of Cove mosquitoes exposed to net prices obtained from the PBO treated root of the net (68%) was higher compared to net prices obtained from the sides of the net (34%) and Permaket 2.0 (27%). The results, therefore, showed higher levels of mortality against pyrethroid-resistant mosquitoes from the Cove experimental hut station with the pyrethroid-PBO ITNs relative to pyrethroid-only nets. More detailed results from the tunnel tests are available in the supplementary information (Table S1).\n", - "\n", - "header: Table 2. Entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination.\n", - "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", - "er signi\u001fcantly, P>0.05, negative binomial regression for females caught and logistic regression for exophily.\n", - "columns: ['Treatment', 'Total females caught*', '% deterrence', 'Total exiting', '% exophily*', '95% CIs']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught*\":\"Trial 1\",\"% deterrence\":\"Trial 1\",\"Total exiting\":\"Trial 1\",\"% exophily*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"664a\",\"% deterrence\":\"-\",\"Total exiting\":\"241\",\"% exophily*\":\"36a\",\"95% CIs\":\"33\\u201340\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught*\":\"511a\",\"% deterrence\":\"23\",\"Total exiting\":\"390\",\"% exophily*\":\"76b\",\"95% CIs\":\"73\\u201380\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"556a\",\"% deterrence\":\"16\",\"Total exiting\":\"282\",\"% exophily*\":\"51c\",\"95% CIs\":\"47\\u201355\"},\"4\":{\"Treatment\":\"Olyset Plus + bendiocarb IRS\",\"Total females caught*\":\"288b\",\"% deterrence\":\"57\",\"Total exiting\":\"228\",\"% exophily*\":\"79b\",\"95% CIs\":\"75\\u201384\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"531a\",\"% deterrence\":\"20\",\"Total exiting\":\"281\",\"% exophily*\":\"53c\",\"95% CIs\":\"49\\u201357\"},\"6\":{\"Treatment\":\"Olyset plus + P-methyl IRS\",\"Total females caught*\":\"304b\",\"% deterrence\":\"54\",\"Total exiting\":\"270\",\"% exophily*\":\"89d\",\"95% CIs\":\"85\\u201392\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught*\":\"Trial 2\",\"% deterrence\":\"Trial 2\",\"Total exiting\":\"Trial 2\",\"% exophily*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"581u\",\"% deterrence\":\"-\",\"Total exiting\":\"226\",\"% exophily*\":\"39u\",\"95% CIs\":\"35\\u201343\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught*\":\"488u\",\"% deterrence\":\"16\",\"Total exiting\":\"369\",\"% exophily*\":\"76v\",\"95% CIs\":\"72\\u201379\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"575u\",\"% deterrence\":\"1\",\"Total exiting\":\"360\",\"% exophily*\":\"63w\",\"95% CIs\":\"59\\u201367\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught*\":\"233v\",\"% deterrence\":\"60\",\"Total exiting\":\"185\",\"% exophily*\":\"79v\",\"95% CIs\":\"74\\u201385\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"450u\",\"% deterrence\":\"23\",\"Total exiting\":\"311\",\"% exophily*\":\"69x\",\"95% CIs\":\"65\\u201373\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught*\":\"223v\",\"% deterrence\":\"62\",\"Total exiting\":\"195\",\"% exophily*\":\"87y\",\"95% CIs\":\"83\\u201392\"}}\n", - "\n", - "header: scientific reports: Abstract\n", - "\n", - "OPEN : Pyrethroid-piperonyl butoxide (PBO) nets reduce the efficacy of indoor residual spraying with pirimiphos-methyl against pyrethroid-resistant malaria vectors\n", - "\n", - "Thomas Syme, Mariai Ghegbo, Dorothy Obuobi, Augustin Fongnikin, Abel Agbevo, Damien Todjinou, & Corine Ngufori\n", - "\n", - "\n", - "Primiphos-methyl is a pro-insecticide requiring activation by mosquito cytochrome P450 enzymes to induce toxicity while PBO blocks activation of these enzymes in pyrethroid-resistant vector mosquitoes. PBO may thus antagonise the toxicity of pirimiphos-methyl IRS when combined with pyrethroid-PBO ITMs. The impact of combining Olyset Plus and PermaNet 3.0 with Actellite 300CS IRS was evaluated against pyrethroid-resistant _Anopheles gambiae_ s.l. in two parallel experimental hut trials in southern Benin. The vector population was resistant to pyrethroids and PBO pre-exposure partially restored deltamethrin toxicity but not permitting. Mosquito mortality in experimental huts was significantly improved in the combinations of bendicocarp IRS with pyrethroid-PBO ITMs (33-3896) compared to bendicocarp IRS alone (14-16%, p < 0.001), demonstrating an additive effect. Conversely, mortality was significantly reduced in the combinations of pirimiphos-methyl IRS with pyrethroid-PBO ITMs (55-59%) compared to pirimiphos-methyl IRS alone (77-78%, p < 0.001), demonstrating evidence of an antagonistic effect when both interventions are applied in the same household. Mosquito mortality in the combination was significantly higher compared to the pyrethroid-PBO ITMs alone (55-59% vs. 22-26% p < 0.001) showing potential of pirimiphos-methyl IRS to enhance vector control when deployed to complement pyrethroid-PBO ITMs in an area where PBO fails to fully restore susceptibility to pyrethroids.\n", - "\n", - "header: Conclusion\n", - "\n", - "Our study provides the first evidence of an antagonistic effect when pyrethroid-PBO ITNs are combined with pirimphos-methyl IRS in the same household resulting in lower levels of vector mosquito mortality compared to the IRS alone. In line with WHO recommendations, vector control programmes faced with multiple choice of ITN types to deploy as an additional intervention to improve vector control impact in an area dedicated to IRS with pirimphos-methyl, may consider other types of ITNs like pyrethroid-ITNs which can better complement pirimphos-methyl IRS when deployed together. Nevertheless, the pyrethroid-PBO ITNs performed poorly probably due to the lower levels of restoration of pyrethroid susceptibility with PBO in the vector population. Combining these nets with pirimphos-methyl IRS provided significantly improved vector control compared to the net alone demonstrating the potential for pirimphos-methyl IRS to enhance malaria control when deployed to complement pyrethroid-PBO ITNs in areas where PBO fails to fully restore susceptibility to pyrethroids.\n", - "\n", - "header: Table 4.Mortality results of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs, and pirimiphos-methyl IRS applied alone and in combination.\n", - "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", - "er signi\u001fcantly, p>0.05, logistic regression\n", - "columns: ['Treatment', 'Total females caught', 'Total dead', '% mortality*', '95% CIs']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total dead\":\"Trial 1\",\"% mortality*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total dead\":\"22\",\"% mortality*\":\"3a\",\"95% CIs\":\"2\\u20135\"},\"2\":{\"Treatment\":\"Olyset Plus\",\"Total females caught\":\"511\",\"Total dead\":\"114\",\"% mortality*\":\"22b\",\"95% CIs\":\"19\\u201326\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"556\",\"Total dead\":\"87\",\"% mortality*\":\"16c\",\"95% CIs\":\"13\\u201319\"},\"4\":{\"Treatment\":\"Olyset Plus + Bendiocarb IRS\",\"Total females caught\":\"288\",\"Total dead\":\"95\",\"% mortality*\":\"33d\",\"95% CIs\":\"28\\u201338\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total dead\":\"411\",\"% mortality*\":\"77e\",\"95% CIs\":\"74\\u201381\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total dead\":\"178\",\"% mortality*\":\"59f\",\"95% CIs\":\"53\\u201364\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total dead\":\"Trial 2\",\"% mortality*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total dead\":\"12\",\"% mortality*\":\"2u\",\"95% CIs\":\"1\\u20133\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total dead\":\"127\",\"% mortality*\":\"26v\",\"95% CIs\":\"22\\u201330\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total dead\":\"80\",\"% mortality*\":\"14w\",\"95% CIs\":\"11\\u201317\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + Bendiocarb IRS\",\"Total females caught\":\"233\",\"Total dead\":\"89\",\"% mortality*\":\"38x\",\"95% CIs\":\"32\\u201344\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total dead\":\"350\",\"% mortality*\":\"78y\",\"95% CIs\":\"74\\u201382\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total dead\":\"122\",\"% mortality*\":\"55z\",\"95% CIs\":\"48\\u201361\"}}\n", - "\n", - "header: Materials and methods\n", - "\n", - "Adult F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hut station were exposed to filter papers treated with discriminating doses of deltamethrin (0.05%), permethrin (0.75%), benchicaro (0.1%) and pirimphos-methyl (0.25%) in WHO cylinders8. Deltamethrin and perme-thrin were also tested with 60 min pre-exposure to PBO (4%) to assess the involvement of metabolic enzymes in pyrethroid resistance. A comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain. Approximately 100, 3-5-day old mosquitoes of each strain were exposed to each insecticide for 60 min in four batches of 20-25. Similar numbers of mosquitoes were concurrently exposed to untreated filter papers as a control. At the end of exposure, mosquitoes were transferred to appropriately labelled holding tubes, provided access to 10% (w/v) glucose solution, and held at 27 +- 2degC and 75 +- 10% relative humidity. Knockdown was recorded 60 min after exposure and delayed mortality after 24 h for all treatments. The insecticide-treated filter papers were obtained from Universiti Sains Malaysia.\n", - "\n", - "header: Study site and experimental hut treatments.: Trial 1.\n", - "\n", - "1. Untreated net.\n", - "2. Olyset Plus (Sumitomo Chemical).\n", - "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", - "4. Olyset Plus + Bendiocarb IRS applied at 400 mg/m2.\n", - "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", - "6. Olyset Plus + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", - "\n", - "header: Experimental hut results.\n", - "\n", - "_Mosquito entry and exiting in experimental huts._\n", - "\n", - "A total of 5,404 wild female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trials (Table 2). In both trials, mosquito entry in huts with the pyrethroid-PBO ITN alone and IRS treatments alone did not differ significantly from the controls (p > 0.05) but was significantly reduced with the pyrethroid-PBO ITN plus IRS combinations compared to the single treatments (p < 0.01). Mosquito entry rates did not also differ between the combinations of the pyrethroid-PBO ITN with bendiocarb IRS relative to the combinations with pirimiphos-methyl IRS (p < 0.05). Nevertheless, IRS treatments could not be rotated and thus, treatment-induced deterrence cannot be fully distinguished from differential attractiveness due to hut position.\n", - "\n", - "The proportion of mosquitoes exiting into the veranda of the huts with the untreated net controls was 36% and 39% for Trials 1 and 2 respectively. Exiting rates were higher with the pyrethroid-PBO ITNs alone (76%) relative to the IRS insecticides alone (51-63% with bendiocarb and 53-69% with pirimiphos-methyl IRS, p < 0.005). In both trials, the highest levels of mosquito exiting were achieved with the pyrethroid-PBO ITN plus IRS combinations (79% with bendiocarb and 87-89% with pirimiphos-methyl IRS). Between the combinations, adding\n", - "primiphos-methyl IRS to the pyrethroid-PBO ITN provided significantly higher levels of mosquito exiting relative to adding bendicord IRS (87-89% vs. 79%, P < 0.05).\n", - "\n", - "Blood-feeding rates of wild malaria vector mosquitoes in experimental huts.Blood-feeding rates in huts with the untreated net controls were 72% and 67% for Trials 1 and 2 respectively (Table 3). The IRS treatments did not provide any blood-feeding inhibition relative to the controls. Blood-feeding inhibition rates were high with the pyrethroid-PBO ITN plus IRS combinations in both trials (69-79% with Olyst Plus and 63-66% with PermaNet 3.0) and this was generally similar to what was observed with the pyrethroid-PBO ITNs alone (67% with Olyst Plus and 65% with PermaNet, P > 0.05) showing that the high levels of blood-feeding inhibition in the combinations, was mostly due to the ITNs. Blood-feeding inhibition with the PermaNet 3.0 plus primiphos-methyl IRS combination (66%) was similar to the PermaNet 3.0 plus bendicord IRS combination (63%, P = 0.71) meanwhile the Olyset Plus and primiphos-methyl IRS combination induced higher levels of blood-feeding inhibition compared to the Olyst Plus and bendicord IRS combination (79% vs. 69%, P = 0.036) (Table 3). Personal protection levels showed a similar trend and were also higher with the combinations (86-90%) relative to the IRS alone (- 33-13%).\n", - "\n", - "Mortality rates of wild malaria vector mosquitoes in experimental huts.\n", - "\n", - "Wild vector mosquito mortality in the controls was 3% in Trial 1 and 2% in Trial 2 (Table 4). The pyrethroid-PBO ITNs killed relatively low mosquito proportions (22% with Olgest Plus and 26% with PermaNet 3.0) though this was higher than what was observed with benedicarb IRS alone (14% in Trial 1 and 16% in Trial 2, P < 0.10). The highest mortality was achieved with pirimphos-methyl IRS alone (77% in Trial 1 and 78% in Trial 2). In both trials, mortality in the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations was significantly reduced compared to pirimphos-methyl IRS alone (77% with pirimphos-methyl IRS vs. 59% with Olgest Plus pirimphos-methyl IRS, P < 0.001 and 78% with pirimphos-methyl IRS vs. 55% with PermaNet 3.0 plus pirimphos-methyl IRS, P < 0.001), demonstrating an antagonistic effect. Conversely, mortality was significantly higher in the combinations of benedicarb IRS with Olgest Plus (33%) and PermaNet 3.0 (38%) than benedicarb IRS alone (14-16%, P < 0.001), demonstrating an additive effect (Table 4). Nevertheless, both pyrethroid-PBO plus IRS combinations induced significantly higher\n", - "\n", - "mortality compared to the pyrethroid-PBO ITNs alone (P < 0.001). Between the combinations, mortality was consistently higher with the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations (55-59%) compared to the pyrethroid-PBO ITN plus pedicocarb IRS (33-39%, P < 0.001).\n", - "\n", - "The monthly mortality rates of wild vector mosquitoes which entered the experimental huts during the trials are presented in Fig. 1 for the combinations with pedicocarb IRS and Fig. 2 for the combinations with pirimiphos-methyl IRS. In both trials, mosquito mortality rates in huts with the pyrethroid-PBO ITNs plus pedicocarb IRS declined sharply over time from 65-75% in month 1 to 33-38% in month 3, nevertheless, it was consistently higher than the single treatments alone (Fig. 1). Mosquito mortality in the combination of Olyset Plus and pirimiphos-methyl IRS was similar to the IRS alone in month 1 (> 90%) but declined substantially relative to the IRS in subsequent months. With the PermaNet 3.0 plus pirimiphos-methyl IRS combination,\n", - "\n", - "Figure 1.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pedicocarb IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Oyset Plus (Trial 1) and panel (**b**) presents results from the trial with PermaNet 3.0 (Trial 2). Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from onset of the trial. Mosquito mortality in the control untreated huts did not exceed 5% at any time point.\n", - "\n", - "Figure 2.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pirimiphos-methyl IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Olyset Plus and panel (**b**) presents results from the trial with PermaNet 3.0. Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from the onset of the trial.\n", - "\n", - "\n", - "mosquito mortality was consistently lower than the IRS alone throughout the trial. Through the four months of the trials, the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations consistently induced higher levels of mosquito mortality relative to the pyrethroid-PBO ITNs alone.\n", - "\n", - "header: Results\n", - "\n", - "Experimental huts are used to assess the capacity of indoor vector control interventions to prevent wild vector mosquito entry and feeding and induce early mosquito exiting and mortality when applied in a human-occupied house, under carefully controlled conditions [3,12]. The hut trials were conducted at the CREC/LSHTM experimental hut station in Cowe, southern Benin (7deg14'N22deg18E), situated in a vast area of rice irrigation, which provides extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzini_ and _An. gambiae_ sensu stricto (s.s.) occur in symparity, with the latter present at lower densities and predominantly in the dry season. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold). Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (> 90%) and overexpression of CYP6P3, an enzyme associated with pyrethroid detoxification [3].\n", - "\n", - "Two experimental hut trials were performed in parallel for 4 months between April and July 2020. Trial 1 assessed the impact of combining Olyset Plus (Sumitomo Chemical), a permethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS while Trial 2 assessed the impact of combining PermaNet 3.0 (Vestergaard Sarl), a deltamethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS.\n", - "\n", - "The following six treatments were tested in each of the experimental hut trials:\n", - "\n", - "header: Data analysis.\n", - "\n", - "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental but treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to the differential attractiveness of the volunteer sleepers and huts. Results from the different experimental hut trials involving Olyset Plus and PermaNet 3.0 were analysed separately. Susceptibility bioassay results were interpreted according to WHO criteria49. All analyses were performed in Stata version 15.1.\n", - "\n", - "header: Abbreviations\n", - "\n", - "IRS Indoor residual spraying\n", - "\n", - "WHO World Health Organization\n", - "\n", - "PQ Prenqualification team\n", - "\n", - "PBO Piperonyl butoxide\n", - "\n", - "ITN Insecticide treated net\n", - "\n", - "LLIN Long-lasting insecticidal net\n", - "\n", - "GPIRM Global plan for insecticide resistance management\n", - "\n", - "WHOPES WHO pesticide evaluation scheme\n", - "\n", - "CREC Centre de Recherche Entomologique de Cotonou\n", - "\n", - "LSHTTM London School of Hygiene & Tropical Medicine\n", - "\n", - "Kdr Knockdown resistance\n", - "\n", - "PAMVERC Pan African Malaria Vector Research Consortium\n", - "\n", - "The large-scale implementation of long-lasting insecticidal nets (LLINs), and indoor residual spraying (IRS) has resulted in profound reductions in malaria-associated morbidity and mortality across sub-Saharan Africa, over the last two decades1. Unfortunately, resistance to the insecticides applied through these interventions, especially the pyrethroids, is now pervasive in vector populations in malaria-endemic countries', threatening to undermine their impact. In response, a new generation of novel LLINs and IRS based on new active ingredients with the potential to sustain vector control impact in the face of increasing resistance, have been developed3. This includes dual insecticide-treated nets containing a pyrethroid and an alternative effective new compound as well as new IRS insecticides with novel modes of action or improved formulations that have shown potential to provide enhanced control of insecticide-resistant malaria vector populations.\n", - "\n", - "Insecticide-treated nets (ITNs) combining a pyrethroid and piperonyl butoxido (PBO) were the first novel class of ITNs to be developed for malaria vector control. PBO is a synergism that can enhance the impact of pyrethroids and other insecticides by inhibiting metabolic detoxification enzymes associated with resistance, notably cytochrome P450 monooxygenases3. These nets received a conditional endorsement from the World Health Organisation (WHO) in 2017 based on results from a cluster-randomised controlled trial (CRT) in Tanzania demonstrating a reduction in malaria prevalence in communities allocated to pyrethroid-PBO ITNs relative to pyrethroid-only ITNs4. A full policy recommendation is now expected after results from a second CRT in Uganda also showed that two brands of pyrethroid-PBO ITNs reduced malaria prevalence relative to pyrethroid-only nets4. The WHO endorsement and expanding evidence base for the public health value of pyrethroid-PBO ITNs has prompted mass procurement of these nets by international malaria control agencies4,5. The proportion of pyrethroid-PBO ITNs of all ITNs delivered in sub-Saharan Africa has consequently risen from 3% in 2018 to 35% in 202112; pyrethroid-PBO ITNs are therefore replacing pyrethroid-only nets in many malaria-endemic countries.\n", - "\n", - "The increasing distribution and intensity of pyrethroid resistance has also affected malaria control policy regarding insecticide choice for IRS over the last decade. To improve vector control impact and preserve pyrethroids for ITNs, African IRS programmes partly suspended the use of pyrethroids and organochlorines in favour of carbamates and organophosphates5,12. Whilst both insecticides showed high toxicity against malaria vectors, the short residual duration of the initial formulations approved for IRS proved prohibitive, necessitating the development of longer-lasting formulations13. A new microencapsulated formulation of pirimphos-methyl was later developed (Actellic 300CS) demonstrating prolonged activity against pyrethroid-resistant malaria vector mosquitoes, lasting up to 9 months14,15. This formulation subsequently served as the insecticide of choice for the majority of IRS programmes in sub-Saharan Africa1 providing substantial control of mosquito vectors and malaria across distinct eco-epidemiological settings6,16-22.\n", - "\n", - "[MISSING_PAGE_POST]\n", - "\n", - "header: Discussion\n", - "\n", - "Given the inhibitory effect of PBO on mosquito cytochrome P450 enzymes, the WHO had temporarily recommended against the use of pyrethroid-PBO ITN in areas programmed for IRS with pirimiphos-methyl IRS until further evidence on the potential antagonism between PBO and the organo-thiophosphate pro-insecticide becomes available20. In this study, we found evidence of an antagonistic effect when pyrethroid PBO ITNs were combined with pirimiphos-methyl IRS in the same household in a pyrethroid-resistant area in Southern Benin where resistance was partly conferred by over-expression of mosquito cytochrome P450 enzymes20. Unlike the combination of the pyrethroid-PBO nets with bendicorab IRS which provided improved vector mosquito mortality compared to bendicorab IRS alone, combining these nets with pirimiphos-methyl IRS induced significantly lower levels of vector mosquito mortality rates compared to pirimiphos-methyl IRS alone. This effect\n", - "\n", - "Figure 3.: Mortality (24 h) of susceptible _Anopheles gambiae_ Kisumu and pyrethroid-resistant _An. gambiae_ s.l. Cove strains exposed to Olyset Plus and Permaket 3.0 in tunnel tests. Error bars represent 95% CIs. Both pyrethroid-PBO nets were compared to pyrethroid-only nets (Olyset Net and Permaket 2.0). Permaket 3.0 contains PBO only on the roof of the net. With both strains, 80–120 mosquitoes were exposed overnight to metting pieces cut from whole nets in 2–3 replicate tunnel tests.\n", - "\n", - "\n", - "was remarkably similar between the two brands of pyrethroid-PBO ITNs tested across both hut trials indicating that the negative interaction of the combination on mosquito mortality was less affected by the design and specifications of the pyrethroid-PBO ITN. Wild vector mosquitoes which entered the huts with the combined treatment may have contacted the pirimphos-methyl IRS on the hut wall only after picking up PBO from the ITN while attempting to blood-feed on the sheeper under the net. This pre-exposure to PBO on the ITN could have prevented the metabolic activation of the IRS insecticide in these mosquitoes, resulting in lower mortality rates relative to the IRS alone. This finding supports WHO's recommendation against the deployment of pyrethroid-PBO ITNs in areas that have already been programmed for IRS with pirimphos-methyl IRS. This is mostly important from a programmatic perspective where a vector control programme is faced with multiple choice of ITN types to deploy as an additional intervention to enhance vector control impact in an area that is already dedicated to IRS with pirimphos-methyl. In such a scenario, other types of ITNs like pyrethroid-only nets that were recently shown to complement pirimphos-methyl IRS when applied together23, should be considered.\n", - "\n", - "These findings should however not be interpreted to mean that pirimphos-methyl IRS must not be deployed to complement pyrethroid-PBO ITNs. Though pyrethroid-PBO ITNs have consistently shown improved performance in experimental hut trials against pyrethroid-resistant malaria vectors compared to pyrethroid-only nets34, the margin appears to vary depending on the intensity and mechanisms of pyrethroid-resistance encountered. In our study, the pyrethroid-PBO ITNs when applied alone in a hut induced low vector mosquito mortality (22-26%) compared to what has been observed in hut trials against the same vector population with another type of novel dual ITN (71-76%)35,40. Low levels of mosquito mortality in huts with pyrethroid-PBO ITNs and failure of PBO to fully restore pyrethroid susceptibility in bioassays have also been reported from studies in Burkina Faso37, Cameroon38, Cote d'Ivoire39 and Senegal40. This may indicate the presence of complex resistance mechanisms in the West African region unaffected by PBO. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors which continues to increase over time41, yet the public health value of pyrethroid-PBO ITNs has not been assessed in the region. It is therefore unclear whether these nets will provide the same improved epidemiological impact over pyrethroid-only nets in West Africa as observed in the East African community trials which have been the basis of their endorsement for malaria control. Our results showed a significant improvement in mosquito mortality when pirimphos-methyl IRS was combined with the pyrethroid-PBO ITNs (55-59%) compared to the pyrethroid-PBO ITNs alone (22-26%). Mosquito entry and feeding rates were also significantly lower with the combination compared to the pyrethroid-PBO ITNs alone. This provides some justification for deploying pirimphos-methyl IRS to complement pyrethroid-PBO nets in an area of high and complex pyrethroid-resistance where local vectors are less susceptible to the synergistic effect of PBO. Due to the limited choice of insecticides available for IRS, where a beneficial effect of the combination compared to the pyrethroid-PBO ITN alone has been established, pirimphos-methyl IRS should continue to be used even in the presence of high coverage with pyrethroid-PBO ITNs, preferably as part of an IRS rotational strategy. In line with WHO recommendations for insecticide resistance management42, the sustained rotation of multiple insecticide modes of action for IRS may help preserve efficacy to insecticides approved for IRS.\n", - "\n", - "Footnote 3: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 4: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 5: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 6: [https://doi.org/10.1038/s41598-022-10953-](https://doi.org/10.1038/s41598-022-10953-)\n", - "\n", - "y\n", - "\n", - "Footnote 7: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 8: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 9: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 10: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 11: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 12: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 13: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 14: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 15: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 16: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 17: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 18: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 19: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 20: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 21: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 22: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 23: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 24: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 25: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 26: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 27: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 28: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 29: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 30: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 31: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 32: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 333: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 34: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 35: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 36: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 37: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 38: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 39: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 40: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 41: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 42: https://doi.org/10.1038/s415\n", - "\n", - "\n", - "following pre-exposure to PBO, restoration of susceptibility to permethrin--the pyrethroid insecticide used on the pyrethroid-PBO ITN tested in the Tanzanian trial (Olvest Plus)--was high in the vector population from the study area (from 18 to 94%)15. Hence, the level of control achieved with pyrethroid-PBO ITN alone in the Tanzanian trial may have been optimal making the addition of pirimphos-methyl IRS unnecessary. This may not be the case in many communities in West Africa considering the afore-mentioned low levels of pyrethroid-PBO synergism reported in susceptibility bioassays and hut trials conducted across the region; in contrast, the addition of pirimphos-methyl IRS to pyrethroid-PBO ITNs in these communities could be more beneficial for control of clinical malaria compared to the ITN alone. As the range of vector control products available to vector control programmes expands, the choice of interventions and product brands must be aligned to local contexts and guided by local evidence. To help guide vector control policy, epidemiological trials and/or other empirical studies investigating the impact and cost-effectiveness of pyrethroid-PBO nets in communities in the West African region as well as their combination with IRS using pro-insectiles like pirimphos-methyl will be necessary.\n", - "\n", - "Although the inhibitory effect of PBO on mosquito cytochrome P450 enzymes formed the basis of our hypothesis for the antagonism observed between pirimphos-methyl IRS and pyrethroid-PBO ITNs in the experimental huts, behavioural interactions could also have contributed. In both trials, mosquito exiting rates into the veranda traps and blood-feeding inhibition were consistently higher in the combinations compared to the IRS insecticides alone. This could be attributed to the excitro-replenent property of the pyrethroid in the ITN stimulating directed movement of mosquitoes away from their source44. This early exiting effect was however significantly higher in the combination with pirimphos-methyl IRS compared to the combination with bendo-carb IRS suggesting a behavioural interaction in the presence of pirimphos-methyl that may have driven more mosquitoes to exit into the veranda, thus reducing mosquitoes' contact with pirimphos-methyl IRS treated walls. This may have compromised the impact of the pirimphos-methyl IRS in the combination compared to when applied alone and to the combination with bendoicarb. Further studies to assess mosquito flight behaviour, in the presence of the combinations would provide useful insight into behavioural interactions between the treatments. Controlled laboratory assays which minimise behavioural responses and assess P450 enzyme activity in exposed mosquitoes, could also elucidate the potential role of P450 enzyme inhibition in the antagonism observed in the experimental huts.\n", - "\n", - "While our trial focused on investigating the impact of combining pyrethroid-PBO ITNs with pirimphos-methyl IRS in the same households, there is a paucity of information on the interactions between these nets and other newly developed vector control products which contain new public health insecticides such as the neonciotohal, clothidinium and the pyrrole chlorfenapxy. Chlorfenapxy, an insecticide used on ITNs13 and being considered for IRS6,46, also requires activation by mosquito P450 enzymes6. Laboratory experiments have indicated the potential of PBO to antagonise the toxicity of chlorfenapxy against mosquitoes in bioassays29,30. Studies investigating the impact of co-deploying pyrethroid-PBO ITNs together with pyrethroid-chlorfenapxy ITNs or chlorfenapxy IRS in the same household will be essential to help inform optimal co-deployment policy.\n", - "\n", - "header: Hut trial outcome measures\n", - "\n", - "The efficacy of the experimental hut treatments was expressed in terms of the following outcome measures:\n", - "\n", - "1. Deterrence (%)--proportional reduction in the number of mosquitoes collected in the treated hut relative to the number collected in the control.\n", - "2. Exophily (%)--exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda trap.\n", - "3. Blood-feeding inhibition (%)--proportional reduction in blood-feeding in the treated hut relative to the control. Calculated as follows: \\[\\mathit{Blood\\ feeding\\ inhibition}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bfu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", - "4. Mortality (%)--proportion of dead mosquitoes 24 h after collection.\n", - "5. Personal protection (%)--reduction in the number of blood-fed mosquitoes in the treated hut relative to the untreated net control. Calculated as follows: \\[\\mathit{Personal\\ protection}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", - "\n", - "header: Susceptibility of wild vector mosquitoes at Cove to insecticides.\n", - "\n", - "WHO susceptibility bioassays were conducted in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove hit site to the constituent insecticides of the experimental hut treatments. Mortality rates of F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hit station following exposure to discriminating doses of deltamethrin and permethrin in WHO cylinder bioassays were low (42% and 11% respectively), confirming a high frequency of pyrethroid resistance in the Cove vector population (Table 1). Pre-exposure to PBO significantly improved mortality with deltamethrin (42% vs. 72%) but not with permethrin (11% vs. 8%). Mortality rates with the discriminating doses of bendiocarb and pirimiphos-methyl were 98% and 99% respectively. This demonstrated susceptibility to pirimiphos-methyl and bendiocarb. All insecticides induced 100% mortality with the laboratory-maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu strain. No mortality was recorded in the control with either strain.\n", - "\n", - "header: Experimental hut trial procedure\n", - "\n", - "During the hut trials, volunteer sleepers were rotated between experimental huts daily to mitigate the impact of individual attractiveness whilst bed nets were rotated weekly between the huts to reduce the impact of hut position on mosquito entry. Three (3) replicate bed nets were used per treatment and rotated within the treatment every 2 days. IRS treatments cannot be rotated and thus remained fixed throughout the trial. Consenting human volunteer sleepers alert in experimental huts between 21:00 and 06:00 to attract free-flying mosquitoes. Each morning, volunteer sleepers collected all live and dead mosquitoes from the different compartments of the hut (under the net, room, veranda) using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were then transferred to the field laboratory for morphological identification using taxonomic keys and scoring of immediate mortality and blood-feeding. All live, female _An. gambiae_ s.l. were provided access to 10% glucose (w/v) solution and held at ambient conditions in the field laboratory. Delayed mortality was recorded after 24 h for all treatments. Mosquito collections were performed 6 nights per week and on the 7th day, huts were cleaned and aired in preparation for the next rotation cycle.\n", - "\n", - "header: Wall cone bioassays\n", - "\n", - "The laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain and wild pyrethroid-resistant _An. gambiae_ s.l. Cove mosquitoes (F1) derived from breeding sites at the hut station were used for this purpose. At each time point, five cones were attached to the walls and ceiling of the IRS-treated huts. Approximately 50, 3-5-day old mosquitoes were transferred into cones in 5 batches of 10 and exposed to the treated surfaces for 30 min. As a control, mosquitoes were exposed in cones attached to the walls and ceiling of an unsprayed hut. At the end of exposure, mosquitoes were transferred to netted, plastic cups. Mosquitoes were provided access to 10% (w/v) glucose solution and delayed mortality after 24 h for all treatments.\n", - "\n", - "\n", - "Ethical considerations.Ethical approval for the conduct of the study was obtained from the ethics review boards of the Beninese Ministry of Health (No. 34) and the London School of Hygiene & Tropical Medicine (Ref: 16969). All human volunteer sleepers gave informed written consent prior to their participation; where necessary, the consent form and information sheet were explained in their local language. They were offered a free course of chemoprophylaxis spanning the duration of the trial and up to 3 weeks following its completion. A stand-by nurse was available for the duration of the trial to assess any cases of fever or adverse reactions to test items. Any confirmed cases of malaria were treated free of charge at a local health facility. Animals used as baits in tunnel test were maintained following institutional standard operating procedures (SOPs) designed to improve care and protect animals used for experimentation. All studies were performed according to relevant national and international guidelines.\n", - "\n", - "header: 3.2.3 Wall cone bioassays.\n", - "\n", - "WHO wall cone bioassays were performed on the IRS treated experimental hut walls 1 week, 2 months and 4 months after application of IRS treatments to assess their residual efficacy with increasing time elapsed from spraying. Mortality rates of the insecticide-susceptible _An. gambiae_ s.s. Kisum strain and pyrethroid-resistant _An. gambiae_ s.l. Cove strain following exposure to IRS-treated surfaces in 30 min wall cone bioassays are presented in Fig. 4. Mortality of mosquitoes exposed to pirimiphos-methyl treated walls was high (>90%) at all time points with both strains, showing no evidence of a decline in residual activity. In contrast, wall cone bioassay mortality on bendicor-treated surfaces declined rapidly, beginning at 67% and 39% in week 1 and falling to lows of 2% and 3% in month 4 with the Kisum and Cove strains respectively. No mortality was recorded in the controls at any time point with either strain.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Trial 2.\n", - "\n", - "1. Untreated net.\n", - "2. PermaNet 3.0 (Vestergaard Sarl).\n", - "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", - "4. PermaNet 3.0 + Bendiocarb IRS applied at 400 mg/m2.\n", - "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", - "6. PermaNet 3.0 + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", - "\n", - "Olyset Plus and PermaNet 3.0 are WHO prequalified pyrethroid-PBO ITNs [3]. Olyset Plus is made of polyethylene filaments coated with 20 g/Kg of permethrin and 10 g/Kg of PBO. PermaNet 3.0 consists of polyester side panels coated with deltamethrin at 2.1 g/kg and a polyethylene roof panel incorporating deltamethrin and PBO at 4.0 g/kg and 25 g/kg respectively.\n", - "\n", - "header: Tunnel tests\n", - "\n", - "The tunnel test consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections using a netting frame fitted into a slot across the tunnel. In one of the sections, a guinea pig was housed unconstrained in a small cage, and in the other section, -100 unfed female mosquitoes aged 5-8 days were released at dusk and left overnight. The net samples were deliberately hoked with nine 1-cm holes to give opportunity for mosquitoes to penetrate the animal bathed chamber for a blood meal an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 oC and 65-85% RH. The next morning, the numbers of mosquitoes found alive or dead, fed or unfed, in each section were scored. Live mosquitoes were provided with 10% glucose solution and delayed mortality was recorded after 24 h. The pyrethroid-PBO ITNs were compared to Olyset Net (a permethrin-only net, Sumitomo chemical) and PermaNet 2.0 (a deltamethrin-only net, Vestergaard Sarl) and an untreated control net. Two to three net pieces were tested per net type.\n", - "\n", - "header: Table 3: Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato exposed to pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination in experimental huts in Cové, southern Benin.\n", - "footer: Results are presented separately for the trials involving Olgest Plus (Trial 1) and PermaNet 3.0 (Trial 2). ‘For each trial, values on this column sharing a superscript letter do not differ significantly, P > 0.05, logistic regression.\n", - "columns: ['Treatment', 'Total females caught', 'Total blood-fed', '% blood-feeding', '95% CIs', '% blood-feeding inhibition', '% personal protection']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total blood-fed\":\"Trial 1\",\"% blood-feeding\":\"Trial 1\",\"95% CIs\":\"Trial 1\",\"% blood-feeding inhibition\":\"Trial 1\",\"% personal protection\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total blood-fed\":\"481\",\"% blood-feeding\":\"72a\",\"95% CIs\":\"69\\u201376\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught\":\"511\",\"Total blood-fed\":\"122\",\"% blood-feeding\":\"24b\",\"95% CIs\":\"20\\u201328\",\"% blood-feeding inhibition\":\"67\",\"% personal protection\":\"75\"},\"3\":{\"Treatment\":\"Benedicarb IRS\",\"Total females caught\":\"556\",\"Total blood-fed\":\"528\",\"% blood-feeding\":\"95c\",\"95% CIs\":\"93\\u201397\",\"% blood-feeding inhibition\":\"\\u201331\",\"% personal protection\":\"\\u2013 10\"},\"4\":{\"Treatment\":\"Olyset Plus + bendicarb IRS\",\"Total females caught\":\"288\",\"Total blood-fed\":\"64\",\"% blood-feeding\":\"22b\",\"95% CIs\":\"17\\u201327\",\"% blood-feeding inhibition\":\"69\",\"% personal protection\":\"87\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total blood-fed\":\"420\",\"% blood-feeding\":\"79d\",\"95% CIs\":\"76\\u201383\",\"% blood-feeding inhibition\":\"\\u20139\",\"% personal protection\":\"13\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total blood-fed\":\"47\",\"% blood-feeding\":\"16e\",\"95% CIs\":\"11\\u201320\",\"% blood-feeding inhibition\":\"79\",\"% personal protection\":\"90\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total blood-fed\":\"Trial 2\",\"% blood-feeding\":\"Trial 2\",\"95% CIs\":\"Trial 2\",\"% blood-feeding inhibition\":\"Trial 2\",\"% personal protection\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total blood-fed\":\"391\",\"% blood-feeding\":\"67u\",\"95% CIs\":\"64\\u201371\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total blood-fed\":\"115\",\"% blood-feeding\":\"24v\",\"95% CIs\":\"20\\u201327\",\"% blood-feeding inhibition\":\"65\",\"% personal protection\":\"71\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total blood-fed\":\"519\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 33\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught\":\"233\",\"Total blood-fed\":\"54\",\"% blood-feeding\":\"23v\",\"95% CIs\":\"18\\u201329\",\"% blood-feeding inhibition\":\"66\",\"% personal protection\":\"86\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total blood-fed\":\"406\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 4\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"},\"14\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"}}\n", - "\n", - "header: scientific reports: Abstract\n", - "\n", - "OPEN : Pyrethroid-piperonyl butoxide (PBO) nets reduce the efficacy of indoor residual spraying with pirimiphos-methyl against pyrethroid-resistant malaria vectors\n", - "\n", - "Thomas Syme, Mariai Ghegbo, Dorothy Obuobi, Augustin Fongnikin, Abel Agbevo, Damien Todjinou, & Corine Ngufori\n", - "\n", - "\n", - "Primiphos-methyl is a pro-insecticide requiring activation by mosquito cytochrome P450 enzymes to induce toxicity while PBO blocks activation of these enzymes in pyrethroid-resistant vector mosquitoes. PBO may thus antagonise the toxicity of pirimiphos-methyl IRS when combined with pyrethroid-PBO ITMs. The impact of combining Olyset Plus and PermaNet 3.0 with Actellite 300CS IRS was evaluated against pyrethroid-resistant _Anopheles gambiae_ s.l. in two parallel experimental hut trials in southern Benin. The vector population was resistant to pyrethroids and PBO pre-exposure partially restored deltamethrin toxicity but not permitting. Mosquito mortality in experimental huts was significantly improved in the combinations of bendicocarp IRS with pyrethroid-PBO ITMs (33-3896) compared to bendicocarp IRS alone (14-16%, p < 0.001), demonstrating an additive effect. Conversely, mortality was significantly reduced in the combinations of pirimiphos-methyl IRS with pyrethroid-PBO ITMs (55-59%) compared to pirimiphos-methyl IRS alone (77-78%, p < 0.001), demonstrating evidence of an antagonistic effect when both interventions are applied in the same household. Mosquito mortality in the combination was significantly higher compared to the pyrethroid-PBO ITMs alone (55-59% vs. 22-26% p < 0.001) showing potential of pirimiphos-methyl IRS to enhance vector control when deployed to complement pyrethroid-PBO ITMs in an area where PBO fails to fully restore susceptibility to pyrethroids.\n", - "\n", - "header: 3.2.2 Tumed test bioassays.\n", - "\n", - "To further assess the efficacy of the pyrethroid-PBO ITNs and help explain the findings in the experimental huts, tunnel tests were performed using the susceptible _An. gambiae_ Kisum strain and pyrethroid-resistant _An. gambiae_ as from Cove on net samples (30 x 30 cm) obtained from Olyset Plus and Permaket 3.0 nets. The tunnel test is an overnight animal baulesar what simulates host-seeking behaviour of vector mosquitoes under controlled laboratory conditions. Both pyrethroid-PBO ITNs were compared to pyrethroid-only nets which contained similar pyrethroid-insecticles (Olyset Net and Permaket 2.0). Mosquito mortality rates observed in the tunnels are presented in Fig. 3. Mortality in the control tunnels was 11% with the susceptible Kisum strain and 2% with the pyrethroid-resistant Cove strain. All ITN types induced >8% mortality with the susceptible Kisum strain. Olyset Plus killed significantly higher proportions of the Cove mosquitoes compared to Olyset Net (90% vs. 42%). With Permaket 3.0, mortality of Cove mosquitoes exposed to net prices obtained from the PBO treated root of the net (68%) was higher compared to net prices obtained from the sides of the net (34%) and Permaket 2.0 (27%). The results, therefore, showed higher levels of mortality against pyrethroid-resistant mosquitoes from the Cove experimental hut station with the pyrethroid-PBO ITNs relative to pyrethroid-only nets. More detailed results from the tunnel tests are available in the supplementary information (Table S1).\n", - "\n", - "header: Conclusion\n", - "\n", - "Our study provides the first evidence of an antagonistic effect when pyrethroid-PBO ITNs are combined with pirimphos-methyl IRS in the same household resulting in lower levels of vector mosquito mortality compared to the IRS alone. In line with WHO recommendations, vector control programmes faced with multiple choice of ITN types to deploy as an additional intervention to improve vector control impact in an area dedicated to IRS with pirimphos-methyl, may consider other types of ITNs like pyrethroid-ITNs which can better complement pirimphos-methyl IRS when deployed together. Nevertheless, the pyrethroid-PBO ITNs performed poorly probably due to the lower levels of restoration of pyrethroid susceptibility with PBO in the vector population. Combining these nets with pirimphos-methyl IRS provided significantly improved vector control compared to the net alone demonstrating the potential for pirimphos-methyl IRS to enhance malaria control when deployed to complement pyrethroid-PBO ITNs in areas where PBO fails to fully restore susceptibility to pyrethroids.\n", - "\n", - "header: Study site and experimental hut treatments.: Trial 1.\n", - "\n", - "1. Untreated net.\n", - "2. Olyset Plus (Sumitomo Chemical).\n", - "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", - "4. Olyset Plus + Bendiocarb IRS applied at 400 mg/m2.\n", - "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", - "6. Olyset Plus + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", - "\n", - "header: Table 4.Mortality results of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs, and pirimiphos-methyl IRS applied alone and in combination.\n", - "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", - "er signi\u001fcantly, p>0.05, logistic regression\n", - "columns: ['Treatment', 'Total females caught', 'Total dead', '% mortality*', '95% CIs']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total dead\":\"Trial 1\",\"% mortality*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total dead\":\"22\",\"% mortality*\":\"3a\",\"95% CIs\":\"2\\u20135\"},\"2\":{\"Treatment\":\"Olyset Plus\",\"Total females caught\":\"511\",\"Total dead\":\"114\",\"% mortality*\":\"22b\",\"95% CIs\":\"19\\u201326\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"556\",\"Total dead\":\"87\",\"% mortality*\":\"16c\",\"95% CIs\":\"13\\u201319\"},\"4\":{\"Treatment\":\"Olyset Plus + Bendiocarb IRS\",\"Total females caught\":\"288\",\"Total dead\":\"95\",\"% mortality*\":\"33d\",\"95% CIs\":\"28\\u201338\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total dead\":\"411\",\"% mortality*\":\"77e\",\"95% CIs\":\"74\\u201381\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total dead\":\"178\",\"% mortality*\":\"59f\",\"95% CIs\":\"53\\u201364\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total dead\":\"Trial 2\",\"% mortality*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total dead\":\"12\",\"% mortality*\":\"2u\",\"95% CIs\":\"1\\u20133\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total dead\":\"127\",\"% mortality*\":\"26v\",\"95% CIs\":\"22\\u201330\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total dead\":\"80\",\"% mortality*\":\"14w\",\"95% CIs\":\"11\\u201317\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + Bendiocarb IRS\",\"Total females caught\":\"233\",\"Total dead\":\"89\",\"% mortality*\":\"38x\",\"95% CIs\":\"32\\u201344\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total dead\":\"350\",\"% mortality*\":\"78y\",\"95% CIs\":\"74\\u201382\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total dead\":\"122\",\"% mortality*\":\"55z\",\"95% CIs\":\"48\\u201361\"}}\n", - "\n", - "header: Table 2. Entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination.\n", - "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", - "er signi\u001fcantly, P>0.05, negative binomial regression for females caught and logistic regression for exophily.\n", - "columns: ['Treatment', 'Total females caught*', '% deterrence', 'Total exiting', '% exophily*', '95% CIs']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught*\":\"Trial 1\",\"% deterrence\":\"Trial 1\",\"Total exiting\":\"Trial 1\",\"% exophily*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"664a\",\"% deterrence\":\"-\",\"Total exiting\":\"241\",\"% exophily*\":\"36a\",\"95% CIs\":\"33\\u201340\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught*\":\"511a\",\"% deterrence\":\"23\",\"Total exiting\":\"390\",\"% exophily*\":\"76b\",\"95% CIs\":\"73\\u201380\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"556a\",\"% deterrence\":\"16\",\"Total exiting\":\"282\",\"% exophily*\":\"51c\",\"95% CIs\":\"47\\u201355\"},\"4\":{\"Treatment\":\"Olyset Plus + bendiocarb IRS\",\"Total females caught*\":\"288b\",\"% deterrence\":\"57\",\"Total exiting\":\"228\",\"% exophily*\":\"79b\",\"95% CIs\":\"75\\u201384\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"531a\",\"% deterrence\":\"20\",\"Total exiting\":\"281\",\"% exophily*\":\"53c\",\"95% CIs\":\"49\\u201357\"},\"6\":{\"Treatment\":\"Olyset plus + P-methyl IRS\",\"Total females caught*\":\"304b\",\"% deterrence\":\"54\",\"Total exiting\":\"270\",\"% exophily*\":\"89d\",\"95% CIs\":\"85\\u201392\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught*\":\"Trial 2\",\"% deterrence\":\"Trial 2\",\"Total exiting\":\"Trial 2\",\"% exophily*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"581u\",\"% deterrence\":\"-\",\"Total exiting\":\"226\",\"% exophily*\":\"39u\",\"95% CIs\":\"35\\u201343\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught*\":\"488u\",\"% deterrence\":\"16\",\"Total exiting\":\"369\",\"% exophily*\":\"76v\",\"95% CIs\":\"72\\u201379\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"575u\",\"% deterrence\":\"1\",\"Total exiting\":\"360\",\"% exophily*\":\"63w\",\"95% CIs\":\"59\\u201367\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught*\":\"233v\",\"% deterrence\":\"60\",\"Total exiting\":\"185\",\"% exophily*\":\"79v\",\"95% CIs\":\"74\\u201385\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"450u\",\"% deterrence\":\"23\",\"Total exiting\":\"311\",\"% exophily*\":\"69x\",\"95% CIs\":\"65\\u201373\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught*\":\"223v\",\"% deterrence\":\"62\",\"Total exiting\":\"195\",\"% exophily*\":\"87y\",\"95% CIs\":\"83\\u201392\"}}\n", - "\n", - "header: Data analysis.\n", - "\n", - "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental but treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to the differential attractiveness of the volunteer sleepers and huts. Results from the different experimental hut trials involving Olyset Plus and PermaNet 3.0 were analysed separately. Susceptibility bioassay results were interpreted according to WHO criteria49. All analyses were performed in Stata version 15.1.\n", - "\n", - "header: Experimental hut results.\n", - "\n", - "_Mosquito entry and exiting in experimental huts._\n", - "\n", - "A total of 5,404 wild female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trials (Table 2). In both trials, mosquito entry in huts with the pyrethroid-PBO ITN alone and IRS treatments alone did not differ significantly from the controls (p > 0.05) but was significantly reduced with the pyrethroid-PBO ITN plus IRS combinations compared to the single treatments (p < 0.01). Mosquito entry rates did not also differ between the combinations of the pyrethroid-PBO ITN with bendiocarb IRS relative to the combinations with pirimiphos-methyl IRS (p < 0.05). Nevertheless, IRS treatments could not be rotated and thus, treatment-induced deterrence cannot be fully distinguished from differential attractiveness due to hut position.\n", - "\n", - "The proportion of mosquitoes exiting into the veranda of the huts with the untreated net controls was 36% and 39% for Trials 1 and 2 respectively. Exiting rates were higher with the pyrethroid-PBO ITNs alone (76%) relative to the IRS insecticides alone (51-63% with bendiocarb and 53-69% with pirimiphos-methyl IRS, p < 0.005). In both trials, the highest levels of mosquito exiting were achieved with the pyrethroid-PBO ITN plus IRS combinations (79% with bendiocarb and 87-89% with pirimiphos-methyl IRS). Between the combinations, adding\n", - "primiphos-methyl IRS to the pyrethroid-PBO ITN provided significantly higher levels of mosquito exiting relative to adding bendicord IRS (87-89% vs. 79%, P < 0.05).\n", - "\n", - "Blood-feeding rates of wild malaria vector mosquitoes in experimental huts.Blood-feeding rates in huts with the untreated net controls were 72% and 67% for Trials 1 and 2 respectively (Table 3). The IRS treatments did not provide any blood-feeding inhibition relative to the controls. Blood-feeding inhibition rates were high with the pyrethroid-PBO ITN plus IRS combinations in both trials (69-79% with Olyst Plus and 63-66% with PermaNet 3.0) and this was generally similar to what was observed with the pyrethroid-PBO ITNs alone (67% with Olyst Plus and 65% with PermaNet, P > 0.05) showing that the high levels of blood-feeding inhibition in the combinations, was mostly due to the ITNs. Blood-feeding inhibition with the PermaNet 3.0 plus primiphos-methyl IRS combination (66%) was similar to the PermaNet 3.0 plus bendicord IRS combination (63%, P = 0.71) meanwhile the Olyset Plus and primiphos-methyl IRS combination induced higher levels of blood-feeding inhibition compared to the Olyst Plus and bendicord IRS combination (79% vs. 69%, P = 0.036) (Table 3). Personal protection levels showed a similar trend and were also higher with the combinations (86-90%) relative to the IRS alone (- 33-13%).\n", - "\n", - "Mortality rates of wild malaria vector mosquitoes in experimental huts.\n", - "\n", - "Wild vector mosquito mortality in the controls was 3% in Trial 1 and 2% in Trial 2 (Table 4). The pyrethroid-PBO ITNs killed relatively low mosquito proportions (22% with Olgest Plus and 26% with PermaNet 3.0) though this was higher than what was observed with benedicarb IRS alone (14% in Trial 1 and 16% in Trial 2, P < 0.10). The highest mortality was achieved with pirimphos-methyl IRS alone (77% in Trial 1 and 78% in Trial 2). In both trials, mortality in the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations was significantly reduced compared to pirimphos-methyl IRS alone (77% with pirimphos-methyl IRS vs. 59% with Olgest Plus pirimphos-methyl IRS, P < 0.001 and 78% with pirimphos-methyl IRS vs. 55% with PermaNet 3.0 plus pirimphos-methyl IRS, P < 0.001), demonstrating an antagonistic effect. Conversely, mortality was significantly higher in the combinations of benedicarb IRS with Olgest Plus (33%) and PermaNet 3.0 (38%) than benedicarb IRS alone (14-16%, P < 0.001), demonstrating an additive effect (Table 4). Nevertheless, both pyrethroid-PBO plus IRS combinations induced significantly higher\n", - "\n", - "mortality compared to the pyrethroid-PBO ITNs alone (P < 0.001). Between the combinations, mortality was consistently higher with the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations (55-59%) compared to the pyrethroid-PBO ITN plus pedicocarb IRS (33-39%, P < 0.001).\n", - "\n", - "The monthly mortality rates of wild vector mosquitoes which entered the experimental huts during the trials are presented in Fig. 1 for the combinations with pedicocarb IRS and Fig. 2 for the combinations with pirimiphos-methyl IRS. In both trials, mosquito mortality rates in huts with the pyrethroid-PBO ITNs plus pedicocarb IRS declined sharply over time from 65-75% in month 1 to 33-38% in month 3, nevertheless, it was consistently higher than the single treatments alone (Fig. 1). Mosquito mortality in the combination of Olyset Plus and pirimiphos-methyl IRS was similar to the IRS alone in month 1 (> 90%) but declined substantially relative to the IRS in subsequent months. With the PermaNet 3.0 plus pirimiphos-methyl IRS combination,\n", - "\n", - "Figure 1.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pedicocarb IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Oyset Plus (Trial 1) and panel (**b**) presents results from the trial with PermaNet 3.0 (Trial 2). Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from onset of the trial. Mosquito mortality in the control untreated huts did not exceed 5% at any time point.\n", - "\n", - "Figure 2.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pirimiphos-methyl IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Olyset Plus and panel (**b**) presents results from the trial with PermaNet 3.0. Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from the onset of the trial.\n", - "\n", - "\n", - "mosquito mortality was consistently lower than the IRS alone throughout the trial. Through the four months of the trials, the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations consistently induced higher levels of mosquito mortality relative to the pyrethroid-PBO ITNs alone.\n", - "\n", - "header: Materials and methods\n", - "\n", - "Adult F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hut station were exposed to filter papers treated with discriminating doses of deltamethrin (0.05%), permethrin (0.75%), benchicaro (0.1%) and pirimphos-methyl (0.25%) in WHO cylinders8. Deltamethrin and perme-thrin were also tested with 60 min pre-exposure to PBO (4%) to assess the involvement of metabolic enzymes in pyrethroid resistance. A comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain. Approximately 100, 3-5-day old mosquitoes of each strain were exposed to each insecticide for 60 min in four batches of 20-25. Similar numbers of mosquitoes were concurrently exposed to untreated filter papers as a control. At the end of exposure, mosquitoes were transferred to appropriately labelled holding tubes, provided access to 10% (w/v) glucose solution, and held at 27 +- 2degC and 75 +- 10% relative humidity. Knockdown was recorded 60 min after exposure and delayed mortality after 24 h for all treatments. The insecticide-treated filter papers were obtained from Universiti Sains Malaysia.\n", - "\n", - "header: Hut trial outcome measures\n", - "\n", - "The efficacy of the experimental hut treatments was expressed in terms of the following outcome measures:\n", - "\n", - "1. Deterrence (%)--proportional reduction in the number of mosquitoes collected in the treated hut relative to the number collected in the control.\n", - "2. Exophily (%)--exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda trap.\n", - "3. Blood-feeding inhibition (%)--proportional reduction in blood-feeding in the treated hut relative to the control. Calculated as follows: \\[\\mathit{Blood\\ feeding\\ inhibition}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bfu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", - "4. Mortality (%)--proportion of dead mosquitoes 24 h after collection.\n", - "5. Personal protection (%)--reduction in the number of blood-fed mosquitoes in the treated hut relative to the untreated net control. Calculated as follows: \\[\\mathit{Personal\\ protection}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", - "\n", - "header: Results\n", - "\n", - "Experimental huts are used to assess the capacity of indoor vector control interventions to prevent wild vector mosquito entry and feeding and induce early mosquito exiting and mortality when applied in a human-occupied house, under carefully controlled conditions [3,12]. The hut trials were conducted at the CREC/LSHTM experimental hut station in Cowe, southern Benin (7deg14'N22deg18E), situated in a vast area of rice irrigation, which provides extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzini_ and _An. gambiae_ sensu stricto (s.s.) occur in symparity, with the latter present at lower densities and predominantly in the dry season. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold). Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (> 90%) and overexpression of CYP6P3, an enzyme associated with pyrethroid detoxification [3].\n", - "\n", - "Two experimental hut trials were performed in parallel for 4 months between April and July 2020. Trial 1 assessed the impact of combining Olyset Plus (Sumitomo Chemical), a permethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS while Trial 2 assessed the impact of combining PermaNet 3.0 (Vestergaard Sarl), a deltamethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS.\n", - "\n", - "The following six treatments were tested in each of the experimental hut trials:\n", - "\n", - "header: Susceptibility of wild vector mosquitoes at Cove to insecticides.\n", - "\n", - "WHO susceptibility bioassays were conducted in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove hit site to the constituent insecticides of the experimental hut treatments. Mortality rates of F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hit station following exposure to discriminating doses of deltamethrin and permethrin in WHO cylinder bioassays were low (42% and 11% respectively), confirming a high frequency of pyrethroid resistance in the Cove vector population (Table 1). Pre-exposure to PBO significantly improved mortality with deltamethrin (42% vs. 72%) but not with permethrin (11% vs. 8%). Mortality rates with the discriminating doses of bendiocarb and pirimiphos-methyl were 98% and 99% respectively. This demonstrated susceptibility to pirimiphos-methyl and bendiocarb. All insecticides induced 100% mortality with the laboratory-maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu strain. No mortality was recorded in the control with either strain.\n", - "\n", - "header: Discussion\n", - "\n", - "Given the inhibitory effect of PBO on mosquito cytochrome P450 enzymes, the WHO had temporarily recommended against the use of pyrethroid-PBO ITN in areas programmed for IRS with pirimiphos-methyl IRS until further evidence on the potential antagonism between PBO and the organo-thiophosphate pro-insecticide becomes available20. In this study, we found evidence of an antagonistic effect when pyrethroid PBO ITNs were combined with pirimiphos-methyl IRS in the same household in a pyrethroid-resistant area in Southern Benin where resistance was partly conferred by over-expression of mosquito cytochrome P450 enzymes20. Unlike the combination of the pyrethroid-PBO nets with bendicorab IRS which provided improved vector mosquito mortality compared to bendicorab IRS alone, combining these nets with pirimiphos-methyl IRS induced significantly lower levels of vector mosquito mortality rates compared to pirimiphos-methyl IRS alone. This effect\n", - "\n", - "Figure 3.: Mortality (24 h) of susceptible _Anopheles gambiae_ Kisumu and pyrethroid-resistant _An. gambiae_ s.l. Cove strains exposed to Olyset Plus and Permaket 3.0 in tunnel tests. Error bars represent 95% CIs. Both pyrethroid-PBO nets were compared to pyrethroid-only nets (Olyset Net and Permaket 2.0). Permaket 3.0 contains PBO only on the roof of the net. With both strains, 80–120 mosquitoes were exposed overnight to metting pieces cut from whole nets in 2–3 replicate tunnel tests.\n", - "\n", - "\n", - "was remarkably similar between the two brands of pyrethroid-PBO ITNs tested across both hut trials indicating that the negative interaction of the combination on mosquito mortality was less affected by the design and specifications of the pyrethroid-PBO ITN. Wild vector mosquitoes which entered the huts with the combined treatment may have contacted the pirimphos-methyl IRS on the hut wall only after picking up PBO from the ITN while attempting to blood-feed on the sheeper under the net. This pre-exposure to PBO on the ITN could have prevented the metabolic activation of the IRS insecticide in these mosquitoes, resulting in lower mortality rates relative to the IRS alone. This finding supports WHO's recommendation against the deployment of pyrethroid-PBO ITNs in areas that have already been programmed for IRS with pirimphos-methyl IRS. This is mostly important from a programmatic perspective where a vector control programme is faced with multiple choice of ITN types to deploy as an additional intervention to enhance vector control impact in an area that is already dedicated to IRS with pirimphos-methyl. In such a scenario, other types of ITNs like pyrethroid-only nets that were recently shown to complement pirimphos-methyl IRS when applied together23, should be considered.\n", - "\n", - "These findings should however not be interpreted to mean that pirimphos-methyl IRS must not be deployed to complement pyrethroid-PBO ITNs. Though pyrethroid-PBO ITNs have consistently shown improved performance in experimental hut trials against pyrethroid-resistant malaria vectors compared to pyrethroid-only nets34, the margin appears to vary depending on the intensity and mechanisms of pyrethroid-resistance encountered. In our study, the pyrethroid-PBO ITNs when applied alone in a hut induced low vector mosquito mortality (22-26%) compared to what has been observed in hut trials against the same vector population with another type of novel dual ITN (71-76%)35,40. Low levels of mosquito mortality in huts with pyrethroid-PBO ITNs and failure of PBO to fully restore pyrethroid susceptibility in bioassays have also been reported from studies in Burkina Faso37, Cameroon38, Cote d'Ivoire39 and Senegal40. This may indicate the presence of complex resistance mechanisms in the West African region unaffected by PBO. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors which continues to increase over time41, yet the public health value of pyrethroid-PBO ITNs has not been assessed in the region. It is therefore unclear whether these nets will provide the same improved epidemiological impact over pyrethroid-only nets in West Africa as observed in the East African community trials which have been the basis of their endorsement for malaria control. Our results showed a significant improvement in mosquito mortality when pirimphos-methyl IRS was combined with the pyrethroid-PBO ITNs (55-59%) compared to the pyrethroid-PBO ITNs alone (22-26%). Mosquito entry and feeding rates were also significantly lower with the combination compared to the pyrethroid-PBO ITNs alone. This provides some justification for deploying pirimphos-methyl IRS to complement pyrethroid-PBO nets in an area of high and complex pyrethroid-resistance where local vectors are less susceptible to the synergistic effect of PBO. Due to the limited choice of insecticides available for IRS, where a beneficial effect of the combination compared to the pyrethroid-PBO ITN alone has been established, pirimphos-methyl IRS should continue to be used even in the presence of high coverage with pyrethroid-PBO ITNs, preferably as part of an IRS rotational strategy. In line with WHO recommendations for insecticide resistance management42, the sustained rotation of multiple insecticide modes of action for IRS may help preserve efficacy to insecticides approved for IRS.\n", - "\n", - "Footnote 3: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 4: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 5: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 6: [https://doi.org/10.1038/s41598-022-10953-](https://doi.org/10.1038/s41598-022-10953-)\n", - "\n", - "y\n", - "\n", - "Footnote 7: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 8: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 9: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 10: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 11: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 12: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 13: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 14: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 15: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 16: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 17: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 18: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 19: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 20: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 21: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 22: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 23: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 24: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 25: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 26: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 27: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 28: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 29: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 30: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 31: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 32: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 333: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 34: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 35: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 36: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 37: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 38: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 39: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 40: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 41: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 42: https://doi.org/10.1038/s415\n", - "\n", - "\n", - "following pre-exposure to PBO, restoration of susceptibility to permethrin--the pyrethroid insecticide used on the pyrethroid-PBO ITN tested in the Tanzanian trial (Olvest Plus)--was high in the vector population from the study area (from 18 to 94%)15. Hence, the level of control achieved with pyrethroid-PBO ITN alone in the Tanzanian trial may have been optimal making the addition of pirimphos-methyl IRS unnecessary. This may not be the case in many communities in West Africa considering the afore-mentioned low levels of pyrethroid-PBO synergism reported in susceptibility bioassays and hut trials conducted across the region; in contrast, the addition of pirimphos-methyl IRS to pyrethroid-PBO ITNs in these communities could be more beneficial for control of clinical malaria compared to the ITN alone. As the range of vector control products available to vector control programmes expands, the choice of interventions and product brands must be aligned to local contexts and guided by local evidence. To help guide vector control policy, epidemiological trials and/or other empirical studies investigating the impact and cost-effectiveness of pyrethroid-PBO nets in communities in the West African region as well as their combination with IRS using pro-insectiles like pirimphos-methyl will be necessary.\n", - "\n", - "Although the inhibitory effect of PBO on mosquito cytochrome P450 enzymes formed the basis of our hypothesis for the antagonism observed between pirimphos-methyl IRS and pyrethroid-PBO ITNs in the experimental huts, behavioural interactions could also have contributed. In both trials, mosquito exiting rates into the veranda traps and blood-feeding inhibition were consistently higher in the combinations compared to the IRS insecticides alone. This could be attributed to the excitro-replenent property of the pyrethroid in the ITN stimulating directed movement of mosquitoes away from their source44. This early exiting effect was however significantly higher in the combination with pirimphos-methyl IRS compared to the combination with bendo-carb IRS suggesting a behavioural interaction in the presence of pirimphos-methyl that may have driven more mosquitoes to exit into the veranda, thus reducing mosquitoes' contact with pirimphos-methyl IRS treated walls. This may have compromised the impact of the pirimphos-methyl IRS in the combination compared to when applied alone and to the combination with bendoicarb. Further studies to assess mosquito flight behaviour, in the presence of the combinations would provide useful insight into behavioural interactions between the treatments. Controlled laboratory assays which minimise behavioural responses and assess P450 enzyme activity in exposed mosquitoes, could also elucidate the potential role of P450 enzyme inhibition in the antagonism observed in the experimental huts.\n", - "\n", - "While our trial focused on investigating the impact of combining pyrethroid-PBO ITNs with pirimphos-methyl IRS in the same households, there is a paucity of information on the interactions between these nets and other newly developed vector control products which contain new public health insecticides such as the neonciotohal, clothidinium and the pyrrole chlorfenapxy. Chlorfenapxy, an insecticide used on ITNs13 and being considered for IRS6,46, also requires activation by mosquito P450 enzymes6. Laboratory experiments have indicated the potential of PBO to antagonise the toxicity of chlorfenapxy against mosquitoes in bioassays29,30. Studies investigating the impact of co-deploying pyrethroid-PBO ITNs together with pyrethroid-chlorfenapxy ITNs or chlorfenapxy IRS in the same household will be essential to help inform optimal co-deployment policy.\n", - "\n", - "header: 3.2.3 Wall cone bioassays.\n", - "\n", - "WHO wall cone bioassays were performed on the IRS treated experimental hut walls 1 week, 2 months and 4 months after application of IRS treatments to assess their residual efficacy with increasing time elapsed from spraying. Mortality rates of the insecticide-susceptible _An. gambiae_ s.s. Kisum strain and pyrethroid-resistant _An. gambiae_ s.l. Cove strain following exposure to IRS-treated surfaces in 30 min wall cone bioassays are presented in Fig. 4. Mortality of mosquitoes exposed to pirimiphos-methyl treated walls was high (>90%) at all time points with both strains, showing no evidence of a decline in residual activity. In contrast, wall cone bioassay mortality on bendicor-treated surfaces declined rapidly, beginning at 67% and 39% in week 1 and falling to lows of 2% and 3% in month 4 with the Kisum and Cove strains respectively. No mortality was recorded in the controls at any time point with either strain.\n", - "\n", - "header: Experimental hut trial procedure\n", - "\n", - "During the hut trials, volunteer sleepers were rotated between experimental huts daily to mitigate the impact of individual attractiveness whilst bed nets were rotated weekly between the huts to reduce the impact of hut position on mosquito entry. Three (3) replicate bed nets were used per treatment and rotated within the treatment every 2 days. IRS treatments cannot be rotated and thus remained fixed throughout the trial. Consenting human volunteer sleepers alert in experimental huts between 21:00 and 06:00 to attract free-flying mosquitoes. Each morning, volunteer sleepers collected all live and dead mosquitoes from the different compartments of the hut (under the net, room, veranda) using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were then transferred to the field laboratory for morphological identification using taxonomic keys and scoring of immediate mortality and blood-feeding. All live, female _An. gambiae_ s.l. were provided access to 10% glucose (w/v) solution and held at ambient conditions in the field laboratory. Delayed mortality was recorded after 24 h for all treatments. Mosquito collections were performed 6 nights per week and on the 7th day, huts were cleaned and aired in preparation for the next rotation cycle.\n", - "\n", - "header: Abbreviations\n", - "\n", - "IRS Indoor residual spraying\n", - "\n", - "WHO World Health Organization\n", - "\n", - "PQ Prenqualification team\n", - "\n", - "PBO Piperonyl butoxide\n", - "\n", - "ITN Insecticide treated net\n", - "\n", - "LLIN Long-lasting insecticidal net\n", - "\n", - "GPIRM Global plan for insecticide resistance management\n", - "\n", - "WHOPES WHO pesticide evaluation scheme\n", - "\n", - "CREC Centre de Recherche Entomologique de Cotonou\n", - "\n", - "LSHTTM London School of Hygiene & Tropical Medicine\n", - "\n", - "Kdr Knockdown resistance\n", - "\n", - "PAMVERC Pan African Malaria Vector Research Consortium\n", - "\n", - "The large-scale implementation of long-lasting insecticidal nets (LLINs), and indoor residual spraying (IRS) has resulted in profound reductions in malaria-associated morbidity and mortality across sub-Saharan Africa, over the last two decades1. Unfortunately, resistance to the insecticides applied through these interventions, especially the pyrethroids, is now pervasive in vector populations in malaria-endemic countries', threatening to undermine their impact. In response, a new generation of novel LLINs and IRS based on new active ingredients with the potential to sustain vector control impact in the face of increasing resistance, have been developed3. This includes dual insecticide-treated nets containing a pyrethroid and an alternative effective new compound as well as new IRS insecticides with novel modes of action or improved formulations that have shown potential to provide enhanced control of insecticide-resistant malaria vector populations.\n", - "\n", - "Insecticide-treated nets (ITNs) combining a pyrethroid and piperonyl butoxido (PBO) were the first novel class of ITNs to be developed for malaria vector control. PBO is a synergism that can enhance the impact of pyrethroids and other insecticides by inhibiting metabolic detoxification enzymes associated with resistance, notably cytochrome P450 monooxygenases3. These nets received a conditional endorsement from the World Health Organisation (WHO) in 2017 based on results from a cluster-randomised controlled trial (CRT) in Tanzania demonstrating a reduction in malaria prevalence in communities allocated to pyrethroid-PBO ITNs relative to pyrethroid-only ITNs4. A full policy recommendation is now expected after results from a second CRT in Uganda also showed that two brands of pyrethroid-PBO ITNs reduced malaria prevalence relative to pyrethroid-only nets4. The WHO endorsement and expanding evidence base for the public health value of pyrethroid-PBO ITNs has prompted mass procurement of these nets by international malaria control agencies4,5. The proportion of pyrethroid-PBO ITNs of all ITNs delivered in sub-Saharan Africa has consequently risen from 3% in 2018 to 35% in 202112; pyrethroid-PBO ITNs are therefore replacing pyrethroid-only nets in many malaria-endemic countries.\n", - "\n", - "The increasing distribution and intensity of pyrethroid resistance has also affected malaria control policy regarding insecticide choice for IRS over the last decade. To improve vector control impact and preserve pyrethroids for ITNs, African IRS programmes partly suspended the use of pyrethroids and organochlorines in favour of carbamates and organophosphates5,12. Whilst both insecticides showed high toxicity against malaria vectors, the short residual duration of the initial formulations approved for IRS proved prohibitive, necessitating the development of longer-lasting formulations13. A new microencapsulated formulation of pirimphos-methyl was later developed (Actellic 300CS) demonstrating prolonged activity against pyrethroid-resistant malaria vector mosquitoes, lasting up to 9 months14,15. This formulation subsequently served as the insecticide of choice for the majority of IRS programmes in sub-Saharan Africa1 providing substantial control of mosquito vectors and malaria across distinct eco-epidemiological settings6,16-22.\n", - "\n", - "[MISSING_PAGE_POST]\n", - "\n", - "header: Wall cone bioassays\n", - "\n", - "The laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain and wild pyrethroid-resistant _An. gambiae_ s.l. Cove mosquitoes (F1) derived from breeding sites at the hut station were used for this purpose. At each time point, five cones were attached to the walls and ceiling of the IRS-treated huts. Approximately 50, 3-5-day old mosquitoes were transferred into cones in 5 batches of 10 and exposed to the treated surfaces for 30 min. As a control, mosquitoes were exposed in cones attached to the walls and ceiling of an unsprayed hut. At the end of exposure, mosquitoes were transferred to netted, plastic cups. Mosquitoes were provided access to 10% (w/v) glucose solution and delayed mortality after 24 h for all treatments.\n", - "\n", - "\n", - "Ethical considerations.Ethical approval for the conduct of the study was obtained from the ethics review boards of the Beninese Ministry of Health (No. 34) and the London School of Hygiene & Tropical Medicine (Ref: 16969). All human volunteer sleepers gave informed written consent prior to their participation; where necessary, the consent form and information sheet were explained in their local language. They were offered a free course of chemoprophylaxis spanning the duration of the trial and up to 3 weeks following its completion. A stand-by nurse was available for the duration of the trial to assess any cases of fever or adverse reactions to test items. Any confirmed cases of malaria were treated free of charge at a local health facility. Animals used as baits in tunnel test were maintained following institutional standard operating procedures (SOPs) designed to improve care and protect animals used for experimentation. All studies were performed according to relevant national and international guidelines.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Trial 2.\n", - "\n", - "1. Untreated net.\n", - "2. PermaNet 3.0 (Vestergaard Sarl).\n", - "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", - "4. PermaNet 3.0 + Bendiocarb IRS applied at 400 mg/m2.\n", - "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", - "6. PermaNet 3.0 + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", - "\n", - "Olyset Plus and PermaNet 3.0 are WHO prequalified pyrethroid-PBO ITNs [3]. Olyset Plus is made of polyethylene filaments coated with 20 g/Kg of permethrin and 10 g/Kg of PBO. PermaNet 3.0 consists of polyester side panels coated with deltamethrin at 2.1 g/kg and a polyethylene roof panel incorporating deltamethrin and PBO at 4.0 g/kg and 25 g/kg respectively.\n", - "\n", - "header: Tunnel tests\n", - "\n", - "The tunnel test consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections using a netting frame fitted into a slot across the tunnel. In one of the sections, a guinea pig was housed unconstrained in a small cage, and in the other section, -100 unfed female mosquitoes aged 5-8 days were released at dusk and left overnight. The net samples were deliberately hoked with nine 1-cm holes to give opportunity for mosquitoes to penetrate the animal bathed chamber for a blood meal an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 oC and 65-85% RH. The next morning, the numbers of mosquitoes found alive or dead, fed or unfed, in each section were scored. Live mosquitoes were provided with 10% glucose solution and delayed mortality was recorded after 24 h. The pyrethroid-PBO ITNs were compared to Olyset Net (a permethrin-only net, Sumitomo chemical) and PermaNet 2.0 (a deltamethrin-only net, Vestergaard Sarl) and an untreated control net. Two to three net pieces were tested per net type.\n", - "\n", - "header: scientific reports: Abstract\n", - "\n", - "OPEN : Pyrethroid-piperonyl butoxide (PBO) nets reduce the efficacy of indoor residual spraying with pirimiphos-methyl against pyrethroid-resistant malaria vectors\n", - "\n", - "Thomas Syme, Mariai Ghegbo, Dorothy Obuobi, Augustin Fongnikin, Abel Agbevo, Damien Todjinou, & Corine Ngufori\n", - "\n", - "\n", - "Primiphos-methyl is a pro-insecticide requiring activation by mosquito cytochrome P450 enzymes to induce toxicity while PBO blocks activation of these enzymes in pyrethroid-resistant vector mosquitoes. PBO may thus antagonise the toxicity of pirimiphos-methyl IRS when combined with pyrethroid-PBO ITMs. The impact of combining Olyset Plus and PermaNet 3.0 with Actellite 300CS IRS was evaluated against pyrethroid-resistant _Anopheles gambiae_ s.l. in two parallel experimental hut trials in southern Benin. The vector population was resistant to pyrethroids and PBO pre-exposure partially restored deltamethrin toxicity but not permitting. Mosquito mortality in experimental huts was significantly improved in the combinations of bendicocarp IRS with pyrethroid-PBO ITMs (33-3896) compared to bendicocarp IRS alone (14-16%, p < 0.001), demonstrating an additive effect. Conversely, mortality was significantly reduced in the combinations of pirimiphos-methyl IRS with pyrethroid-PBO ITMs (55-59%) compared to pirimiphos-methyl IRS alone (77-78%, p < 0.001), demonstrating evidence of an antagonistic effect when both interventions are applied in the same household. Mosquito mortality in the combination was significantly higher compared to the pyrethroid-PBO ITMs alone (55-59% vs. 22-26% p < 0.001) showing potential of pirimiphos-methyl IRS to enhance vector control when deployed to complement pyrethroid-PBO ITMs in an area where PBO fails to fully restore susceptibility to pyrethroids.\n", - "\n", - "header: 3.2.2 Tumed test bioassays.\n", - "\n", - "To further assess the efficacy of the pyrethroid-PBO ITNs and help explain the findings in the experimental huts, tunnel tests were performed using the susceptible _An. gambiae_ Kisum strain and pyrethroid-resistant _An. gambiae_ as from Cove on net samples (30 x 30 cm) obtained from Olyset Plus and Permaket 3.0 nets. The tunnel test is an overnight animal baulesar what simulates host-seeking behaviour of vector mosquitoes under controlled laboratory conditions. Both pyrethroid-PBO ITNs were compared to pyrethroid-only nets which contained similar pyrethroid-insecticles (Olyset Net and Permaket 2.0). Mosquito mortality rates observed in the tunnels are presented in Fig. 3. Mortality in the control tunnels was 11% with the susceptible Kisum strain and 2% with the pyrethroid-resistant Cove strain. All ITN types induced >8% mortality with the susceptible Kisum strain. Olyset Plus killed significantly higher proportions of the Cove mosquitoes compared to Olyset Net (90% vs. 42%). With Permaket 3.0, mortality of Cove mosquitoes exposed to net prices obtained from the PBO treated root of the net (68%) was higher compared to net prices obtained from the sides of the net (34%) and Permaket 2.0 (27%). The results, therefore, showed higher levels of mortality against pyrethroid-resistant mosquitoes from the Cove experimental hut station with the pyrethroid-PBO ITNs relative to pyrethroid-only nets. More detailed results from the tunnel tests are available in the supplementary information (Table S1).\n", - "\n", - "header: Table 3: Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato exposed to pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination in experimental huts in Cové, southern Benin.\n", - "footer: Results are presented separately for the trials involving Olgest Plus (Trial 1) and PermaNet 3.0 (Trial 2). ‘For each trial, values on this column sharing a superscript letter do not differ significantly, P > 0.05, logistic regression.\n", - "columns: ['Treatment', 'Total females caught', 'Total blood-fed', '% blood-feeding', '95% CIs', '% blood-feeding inhibition', '% personal protection']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total blood-fed\":\"Trial 1\",\"% blood-feeding\":\"Trial 1\",\"95% CIs\":\"Trial 1\",\"% blood-feeding inhibition\":\"Trial 1\",\"% personal protection\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total blood-fed\":\"481\",\"% blood-feeding\":\"72a\",\"95% CIs\":\"69\\u201376\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught\":\"511\",\"Total blood-fed\":\"122\",\"% blood-feeding\":\"24b\",\"95% CIs\":\"20\\u201328\",\"% blood-feeding inhibition\":\"67\",\"% personal protection\":\"75\"},\"3\":{\"Treatment\":\"Benedicarb IRS\",\"Total females caught\":\"556\",\"Total blood-fed\":\"528\",\"% blood-feeding\":\"95c\",\"95% CIs\":\"93\\u201397\",\"% blood-feeding inhibition\":\"\\u201331\",\"% personal protection\":\"\\u2013 10\"},\"4\":{\"Treatment\":\"Olyset Plus + bendicarb IRS\",\"Total females caught\":\"288\",\"Total blood-fed\":\"64\",\"% blood-feeding\":\"22b\",\"95% CIs\":\"17\\u201327\",\"% blood-feeding inhibition\":\"69\",\"% personal protection\":\"87\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total blood-fed\":\"420\",\"% blood-feeding\":\"79d\",\"95% CIs\":\"76\\u201383\",\"% blood-feeding inhibition\":\"\\u20139\",\"% personal protection\":\"13\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total blood-fed\":\"47\",\"% blood-feeding\":\"16e\",\"95% CIs\":\"11\\u201320\",\"% blood-feeding inhibition\":\"79\",\"% personal protection\":\"90\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total blood-fed\":\"Trial 2\",\"% blood-feeding\":\"Trial 2\",\"95% CIs\":\"Trial 2\",\"% blood-feeding inhibition\":\"Trial 2\",\"% personal protection\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total blood-fed\":\"391\",\"% blood-feeding\":\"67u\",\"95% CIs\":\"64\\u201371\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total blood-fed\":\"115\",\"% blood-feeding\":\"24v\",\"95% CIs\":\"20\\u201327\",\"% blood-feeding inhibition\":\"65\",\"% personal protection\":\"71\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total blood-fed\":\"519\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 33\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught\":\"233\",\"Total blood-fed\":\"54\",\"% blood-feeding\":\"23v\",\"95% CIs\":\"18\\u201329\",\"% blood-feeding inhibition\":\"66\",\"% personal protection\":\"86\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total blood-fed\":\"406\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 4\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"},\"14\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"}}\n", - "\n", - "header: Study site and experimental hut treatments.: Trial 1.\n", - "\n", - "1. Untreated net.\n", - "2. Olyset Plus (Sumitomo Chemical).\n", - "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", - "4. Olyset Plus + Bendiocarb IRS applied at 400 mg/m2.\n", - "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", - "6. Olyset Plus + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", - "\n", - "header: Conclusion\n", - "\n", - "Our study provides the first evidence of an antagonistic effect when pyrethroid-PBO ITNs are combined with pirimphos-methyl IRS in the same household resulting in lower levels of vector mosquito mortality compared to the IRS alone. In line with WHO recommendations, vector control programmes faced with multiple choice of ITN types to deploy as an additional intervention to improve vector control impact in an area dedicated to IRS with pirimphos-methyl, may consider other types of ITNs like pyrethroid-ITNs which can better complement pirimphos-methyl IRS when deployed together. Nevertheless, the pyrethroid-PBO ITNs performed poorly probably due to the lower levels of restoration of pyrethroid susceptibility with PBO in the vector population. Combining these nets with pirimphos-methyl IRS provided significantly improved vector control compared to the net alone demonstrating the potential for pirimphos-methyl IRS to enhance malaria control when deployed to complement pyrethroid-PBO ITNs in areas where PBO fails to fully restore susceptibility to pyrethroids.\n", - "\n", - "header: Hut trial outcome measures\n", - "\n", - "The efficacy of the experimental hut treatments was expressed in terms of the following outcome measures:\n", - "\n", - "1. Deterrence (%)--proportional reduction in the number of mosquitoes collected in the treated hut relative to the number collected in the control.\n", - "2. Exophily (%)--exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda trap.\n", - "3. Blood-feeding inhibition (%)--proportional reduction in blood-feeding in the treated hut relative to the control. Calculated as follows: \\[\\mathit{Blood\\ feeding\\ inhibition}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bfu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", - "4. Mortality (%)--proportion of dead mosquitoes 24 h after collection.\n", - "5. Personal protection (%)--reduction in the number of blood-fed mosquitoes in the treated hut relative to the untreated net control. Calculated as follows: \\[\\mathit{Personal\\ protection}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", - "\n", - "header: Materials and methods\n", - "\n", - "Adult F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hut station were exposed to filter papers treated with discriminating doses of deltamethrin (0.05%), permethrin (0.75%), benchicaro (0.1%) and pirimphos-methyl (0.25%) in WHO cylinders8. Deltamethrin and perme-thrin were also tested with 60 min pre-exposure to PBO (4%) to assess the involvement of metabolic enzymes in pyrethroid resistance. A comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain. Approximately 100, 3-5-day old mosquitoes of each strain were exposed to each insecticide for 60 min in four batches of 20-25. Similar numbers of mosquitoes were concurrently exposed to untreated filter papers as a control. At the end of exposure, mosquitoes were transferred to appropriately labelled holding tubes, provided access to 10% (w/v) glucose solution, and held at 27 +- 2degC and 75 +- 10% relative humidity. Knockdown was recorded 60 min after exposure and delayed mortality after 24 h for all treatments. The insecticide-treated filter papers were obtained from Universiti Sains Malaysia.\n", - "\n", - "header: Table 4.Mortality results of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs, and pirimiphos-methyl IRS applied alone and in combination.\n", - "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", - "er signi\u001fcantly, p>0.05, logistic regression\n", - "columns: ['Treatment', 'Total females caught', 'Total dead', '% mortality*', '95% CIs']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total dead\":\"Trial 1\",\"% mortality*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total dead\":\"22\",\"% mortality*\":\"3a\",\"95% CIs\":\"2\\u20135\"},\"2\":{\"Treatment\":\"Olyset Plus\",\"Total females caught\":\"511\",\"Total dead\":\"114\",\"% mortality*\":\"22b\",\"95% CIs\":\"19\\u201326\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"556\",\"Total dead\":\"87\",\"% mortality*\":\"16c\",\"95% CIs\":\"13\\u201319\"},\"4\":{\"Treatment\":\"Olyset Plus + Bendiocarb IRS\",\"Total females caught\":\"288\",\"Total dead\":\"95\",\"% mortality*\":\"33d\",\"95% CIs\":\"28\\u201338\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total dead\":\"411\",\"% mortality*\":\"77e\",\"95% CIs\":\"74\\u201381\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total dead\":\"178\",\"% mortality*\":\"59f\",\"95% CIs\":\"53\\u201364\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total dead\":\"Trial 2\",\"% mortality*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total dead\":\"12\",\"% mortality*\":\"2u\",\"95% CIs\":\"1\\u20133\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total dead\":\"127\",\"% mortality*\":\"26v\",\"95% CIs\":\"22\\u201330\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total dead\":\"80\",\"% mortality*\":\"14w\",\"95% CIs\":\"11\\u201317\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + Bendiocarb IRS\",\"Total females caught\":\"233\",\"Total dead\":\"89\",\"% mortality*\":\"38x\",\"95% CIs\":\"32\\u201344\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total dead\":\"350\",\"% mortality*\":\"78y\",\"95% CIs\":\"74\\u201382\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total dead\":\"122\",\"% mortality*\":\"55z\",\"95% CIs\":\"48\\u201361\"}}\n", - "\n", - "header: Table 2. Entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination.\n", - "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", - "er signi\u001fcantly, P>0.05, negative binomial regression for females caught and logistic regression for exophily.\n", - "columns: ['Treatment', 'Total females caught*', '% deterrence', 'Total exiting', '% exophily*', '95% CIs']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught*\":\"Trial 1\",\"% deterrence\":\"Trial 1\",\"Total exiting\":\"Trial 1\",\"% exophily*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"664a\",\"% deterrence\":\"-\",\"Total exiting\":\"241\",\"% exophily*\":\"36a\",\"95% CIs\":\"33\\u201340\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught*\":\"511a\",\"% deterrence\":\"23\",\"Total exiting\":\"390\",\"% exophily*\":\"76b\",\"95% CIs\":\"73\\u201380\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"556a\",\"% deterrence\":\"16\",\"Total exiting\":\"282\",\"% exophily*\":\"51c\",\"95% CIs\":\"47\\u201355\"},\"4\":{\"Treatment\":\"Olyset Plus + bendiocarb IRS\",\"Total females caught*\":\"288b\",\"% deterrence\":\"57\",\"Total exiting\":\"228\",\"% exophily*\":\"79b\",\"95% CIs\":\"75\\u201384\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"531a\",\"% deterrence\":\"20\",\"Total exiting\":\"281\",\"% exophily*\":\"53c\",\"95% CIs\":\"49\\u201357\"},\"6\":{\"Treatment\":\"Olyset plus + P-methyl IRS\",\"Total females caught*\":\"304b\",\"% deterrence\":\"54\",\"Total exiting\":\"270\",\"% exophily*\":\"89d\",\"95% CIs\":\"85\\u201392\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught*\":\"Trial 2\",\"% deterrence\":\"Trial 2\",\"Total exiting\":\"Trial 2\",\"% exophily*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"581u\",\"% deterrence\":\"-\",\"Total exiting\":\"226\",\"% exophily*\":\"39u\",\"95% CIs\":\"35\\u201343\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught*\":\"488u\",\"% deterrence\":\"16\",\"Total exiting\":\"369\",\"% exophily*\":\"76v\",\"95% CIs\":\"72\\u201379\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"575u\",\"% deterrence\":\"1\",\"Total exiting\":\"360\",\"% exophily*\":\"63w\",\"95% CIs\":\"59\\u201367\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught*\":\"233v\",\"% deterrence\":\"60\",\"Total exiting\":\"185\",\"% exophily*\":\"79v\",\"95% CIs\":\"74\\u201385\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"450u\",\"% deterrence\":\"23\",\"Total exiting\":\"311\",\"% exophily*\":\"69x\",\"95% CIs\":\"65\\u201373\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught*\":\"223v\",\"% deterrence\":\"62\",\"Total exiting\":\"195\",\"% exophily*\":\"87y\",\"95% CIs\":\"83\\u201392\"}}\n", - "\n", - "header: Data analysis.\n", - "\n", - "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental but treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to the differential attractiveness of the volunteer sleepers and huts. Results from the different experimental hut trials involving Olyset Plus and PermaNet 3.0 were analysed separately. Susceptibility bioassay results were interpreted according to WHO criteria49. All analyses were performed in Stata version 15.1.\n", - "\n", - "header: Experimental hut results.\n", - "\n", - "_Mosquito entry and exiting in experimental huts._\n", - "\n", - "A total of 5,404 wild female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trials (Table 2). In both trials, mosquito entry in huts with the pyrethroid-PBO ITN alone and IRS treatments alone did not differ significantly from the controls (p > 0.05) but was significantly reduced with the pyrethroid-PBO ITN plus IRS combinations compared to the single treatments (p < 0.01). Mosquito entry rates did not also differ between the combinations of the pyrethroid-PBO ITN with bendiocarb IRS relative to the combinations with pirimiphos-methyl IRS (p < 0.05). Nevertheless, IRS treatments could not be rotated and thus, treatment-induced deterrence cannot be fully distinguished from differential attractiveness due to hut position.\n", - "\n", - "The proportion of mosquitoes exiting into the veranda of the huts with the untreated net controls was 36% and 39% for Trials 1 and 2 respectively. Exiting rates were higher with the pyrethroid-PBO ITNs alone (76%) relative to the IRS insecticides alone (51-63% with bendiocarb and 53-69% with pirimiphos-methyl IRS, p < 0.005). In both trials, the highest levels of mosquito exiting were achieved with the pyrethroid-PBO ITN plus IRS combinations (79% with bendiocarb and 87-89% with pirimiphos-methyl IRS). Between the combinations, adding\n", - "primiphos-methyl IRS to the pyrethroid-PBO ITN provided significantly higher levels of mosquito exiting relative to adding bendicord IRS (87-89% vs. 79%, P < 0.05).\n", - "\n", - "Blood-feeding rates of wild malaria vector mosquitoes in experimental huts.Blood-feeding rates in huts with the untreated net controls were 72% and 67% for Trials 1 and 2 respectively (Table 3). The IRS treatments did not provide any blood-feeding inhibition relative to the controls. Blood-feeding inhibition rates were high with the pyrethroid-PBO ITN plus IRS combinations in both trials (69-79% with Olyst Plus and 63-66% with PermaNet 3.0) and this was generally similar to what was observed with the pyrethroid-PBO ITNs alone (67% with Olyst Plus and 65% with PermaNet, P > 0.05) showing that the high levels of blood-feeding inhibition in the combinations, was mostly due to the ITNs. Blood-feeding inhibition with the PermaNet 3.0 plus primiphos-methyl IRS combination (66%) was similar to the PermaNet 3.0 plus bendicord IRS combination (63%, P = 0.71) meanwhile the Olyset Plus and primiphos-methyl IRS combination induced higher levels of blood-feeding inhibition compared to the Olyst Plus and bendicord IRS combination (79% vs. 69%, P = 0.036) (Table 3). Personal protection levels showed a similar trend and were also higher with the combinations (86-90%) relative to the IRS alone (- 33-13%).\n", - "\n", - "Mortality rates of wild malaria vector mosquitoes in experimental huts.\n", - "\n", - "Wild vector mosquito mortality in the controls was 3% in Trial 1 and 2% in Trial 2 (Table 4). The pyrethroid-PBO ITNs killed relatively low mosquito proportions (22% with Olgest Plus and 26% with PermaNet 3.0) though this was higher than what was observed with benedicarb IRS alone (14% in Trial 1 and 16% in Trial 2, P < 0.10). The highest mortality was achieved with pirimphos-methyl IRS alone (77% in Trial 1 and 78% in Trial 2). In both trials, mortality in the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations was significantly reduced compared to pirimphos-methyl IRS alone (77% with pirimphos-methyl IRS vs. 59% with Olgest Plus pirimphos-methyl IRS, P < 0.001 and 78% with pirimphos-methyl IRS vs. 55% with PermaNet 3.0 plus pirimphos-methyl IRS, P < 0.001), demonstrating an antagonistic effect. Conversely, mortality was significantly higher in the combinations of benedicarb IRS with Olgest Plus (33%) and PermaNet 3.0 (38%) than benedicarb IRS alone (14-16%, P < 0.001), demonstrating an additive effect (Table 4). Nevertheless, both pyrethroid-PBO plus IRS combinations induced significantly higher\n", - "\n", - "mortality compared to the pyrethroid-PBO ITNs alone (P < 0.001). Between the combinations, mortality was consistently higher with the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations (55-59%) compared to the pyrethroid-PBO ITN plus pedicocarb IRS (33-39%, P < 0.001).\n", - "\n", - "The monthly mortality rates of wild vector mosquitoes which entered the experimental huts during the trials are presented in Fig. 1 for the combinations with pedicocarb IRS and Fig. 2 for the combinations with pirimiphos-methyl IRS. In both trials, mosquito mortality rates in huts with the pyrethroid-PBO ITNs plus pedicocarb IRS declined sharply over time from 65-75% in month 1 to 33-38% in month 3, nevertheless, it was consistently higher than the single treatments alone (Fig. 1). Mosquito mortality in the combination of Olyset Plus and pirimiphos-methyl IRS was similar to the IRS alone in month 1 (> 90%) but declined substantially relative to the IRS in subsequent months. With the PermaNet 3.0 plus pirimiphos-methyl IRS combination,\n", - "\n", - "Figure 1.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pedicocarb IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Oyset Plus (Trial 1) and panel (**b**) presents results from the trial with PermaNet 3.0 (Trial 2). Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from onset of the trial. Mosquito mortality in the control untreated huts did not exceed 5% at any time point.\n", - "\n", - "Figure 2.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pirimiphos-methyl IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Olyset Plus and panel (**b**) presents results from the trial with PermaNet 3.0. Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from the onset of the trial.\n", - "\n", - "\n", - "mosquito mortality was consistently lower than the IRS alone throughout the trial. Through the four months of the trials, the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations consistently induced higher levels of mosquito mortality relative to the pyrethroid-PBO ITNs alone.\n", - "\n", - "header: Abbreviations\n", - "\n", - "IRS Indoor residual spraying\n", - "\n", - "WHO World Health Organization\n", - "\n", - "PQ Prenqualification team\n", - "\n", - "PBO Piperonyl butoxide\n", - "\n", - "ITN Insecticide treated net\n", - "\n", - "LLIN Long-lasting insecticidal net\n", - "\n", - "GPIRM Global plan for insecticide resistance management\n", - "\n", - "WHOPES WHO pesticide evaluation scheme\n", - "\n", - "CREC Centre de Recherche Entomologique de Cotonou\n", - "\n", - "LSHTTM London School of Hygiene & Tropical Medicine\n", - "\n", - "Kdr Knockdown resistance\n", - "\n", - "PAMVERC Pan African Malaria Vector Research Consortium\n", - "\n", - "The large-scale implementation of long-lasting insecticidal nets (LLINs), and indoor residual spraying (IRS) has resulted in profound reductions in malaria-associated morbidity and mortality across sub-Saharan Africa, over the last two decades1. Unfortunately, resistance to the insecticides applied through these interventions, especially the pyrethroids, is now pervasive in vector populations in malaria-endemic countries', threatening to undermine their impact. In response, a new generation of novel LLINs and IRS based on new active ingredients with the potential to sustain vector control impact in the face of increasing resistance, have been developed3. This includes dual insecticide-treated nets containing a pyrethroid and an alternative effective new compound as well as new IRS insecticides with novel modes of action or improved formulations that have shown potential to provide enhanced control of insecticide-resistant malaria vector populations.\n", - "\n", - "Insecticide-treated nets (ITNs) combining a pyrethroid and piperonyl butoxido (PBO) were the first novel class of ITNs to be developed for malaria vector control. PBO is a synergism that can enhance the impact of pyrethroids and other insecticides by inhibiting metabolic detoxification enzymes associated with resistance, notably cytochrome P450 monooxygenases3. These nets received a conditional endorsement from the World Health Organisation (WHO) in 2017 based on results from a cluster-randomised controlled trial (CRT) in Tanzania demonstrating a reduction in malaria prevalence in communities allocated to pyrethroid-PBO ITNs relative to pyrethroid-only ITNs4. A full policy recommendation is now expected after results from a second CRT in Uganda also showed that two brands of pyrethroid-PBO ITNs reduced malaria prevalence relative to pyrethroid-only nets4. The WHO endorsement and expanding evidence base for the public health value of pyrethroid-PBO ITNs has prompted mass procurement of these nets by international malaria control agencies4,5. The proportion of pyrethroid-PBO ITNs of all ITNs delivered in sub-Saharan Africa has consequently risen from 3% in 2018 to 35% in 202112; pyrethroid-PBO ITNs are therefore replacing pyrethroid-only nets in many malaria-endemic countries.\n", - "\n", - "The increasing distribution and intensity of pyrethroid resistance has also affected malaria control policy regarding insecticide choice for IRS over the last decade. To improve vector control impact and preserve pyrethroids for ITNs, African IRS programmes partly suspended the use of pyrethroids and organochlorines in favour of carbamates and organophosphates5,12. Whilst both insecticides showed high toxicity against malaria vectors, the short residual duration of the initial formulations approved for IRS proved prohibitive, necessitating the development of longer-lasting formulations13. A new microencapsulated formulation of pirimphos-methyl was later developed (Actellic 300CS) demonstrating prolonged activity against pyrethroid-resistant malaria vector mosquitoes, lasting up to 9 months14,15. This formulation subsequently served as the insecticide of choice for the majority of IRS programmes in sub-Saharan Africa1 providing substantial control of mosquito vectors and malaria across distinct eco-epidemiological settings6,16-22.\n", - "\n", - "[MISSING_PAGE_POST]\n", - "\n", - "header: Discussion\n", - "\n", - "Given the inhibitory effect of PBO on mosquito cytochrome P450 enzymes, the WHO had temporarily recommended against the use of pyrethroid-PBO ITN in areas programmed for IRS with pirimiphos-methyl IRS until further evidence on the potential antagonism between PBO and the organo-thiophosphate pro-insecticide becomes available20. In this study, we found evidence of an antagonistic effect when pyrethroid PBO ITNs were combined with pirimiphos-methyl IRS in the same household in a pyrethroid-resistant area in Southern Benin where resistance was partly conferred by over-expression of mosquito cytochrome P450 enzymes20. Unlike the combination of the pyrethroid-PBO nets with bendicorab IRS which provided improved vector mosquito mortality compared to bendicorab IRS alone, combining these nets with pirimiphos-methyl IRS induced significantly lower levels of vector mosquito mortality rates compared to pirimiphos-methyl IRS alone. This effect\n", - "\n", - "Figure 3.: Mortality (24 h) of susceptible _Anopheles gambiae_ Kisumu and pyrethroid-resistant _An. gambiae_ s.l. Cove strains exposed to Olyset Plus and Permaket 3.0 in tunnel tests. Error bars represent 95% CIs. Both pyrethroid-PBO nets were compared to pyrethroid-only nets (Olyset Net and Permaket 2.0). Permaket 3.0 contains PBO only on the roof of the net. With both strains, 80–120 mosquitoes were exposed overnight to metting pieces cut from whole nets in 2–3 replicate tunnel tests.\n", - "\n", - "\n", - "was remarkably similar between the two brands of pyrethroid-PBO ITNs tested across both hut trials indicating that the negative interaction of the combination on mosquito mortality was less affected by the design and specifications of the pyrethroid-PBO ITN. Wild vector mosquitoes which entered the huts with the combined treatment may have contacted the pirimphos-methyl IRS on the hut wall only after picking up PBO from the ITN while attempting to blood-feed on the sheeper under the net. This pre-exposure to PBO on the ITN could have prevented the metabolic activation of the IRS insecticide in these mosquitoes, resulting in lower mortality rates relative to the IRS alone. This finding supports WHO's recommendation against the deployment of pyrethroid-PBO ITNs in areas that have already been programmed for IRS with pirimphos-methyl IRS. This is mostly important from a programmatic perspective where a vector control programme is faced with multiple choice of ITN types to deploy as an additional intervention to enhance vector control impact in an area that is already dedicated to IRS with pirimphos-methyl. In such a scenario, other types of ITNs like pyrethroid-only nets that were recently shown to complement pirimphos-methyl IRS when applied together23, should be considered.\n", - "\n", - "These findings should however not be interpreted to mean that pirimphos-methyl IRS must not be deployed to complement pyrethroid-PBO ITNs. Though pyrethroid-PBO ITNs have consistently shown improved performance in experimental hut trials against pyrethroid-resistant malaria vectors compared to pyrethroid-only nets34, the margin appears to vary depending on the intensity and mechanisms of pyrethroid-resistance encountered. In our study, the pyrethroid-PBO ITNs when applied alone in a hut induced low vector mosquito mortality (22-26%) compared to what has been observed in hut trials against the same vector population with another type of novel dual ITN (71-76%)35,40. Low levels of mosquito mortality in huts with pyrethroid-PBO ITNs and failure of PBO to fully restore pyrethroid susceptibility in bioassays have also been reported from studies in Burkina Faso37, Cameroon38, Cote d'Ivoire39 and Senegal40. This may indicate the presence of complex resistance mechanisms in the West African region unaffected by PBO. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors which continues to increase over time41, yet the public health value of pyrethroid-PBO ITNs has not been assessed in the region. It is therefore unclear whether these nets will provide the same improved epidemiological impact over pyrethroid-only nets in West Africa as observed in the East African community trials which have been the basis of their endorsement for malaria control. Our results showed a significant improvement in mosquito mortality when pirimphos-methyl IRS was combined with the pyrethroid-PBO ITNs (55-59%) compared to the pyrethroid-PBO ITNs alone (22-26%). Mosquito entry and feeding rates were also significantly lower with the combination compared to the pyrethroid-PBO ITNs alone. This provides some justification for deploying pirimphos-methyl IRS to complement pyrethroid-PBO nets in an area of high and complex pyrethroid-resistance where local vectors are less susceptible to the synergistic effect of PBO. Due to the limited choice of insecticides available for IRS, where a beneficial effect of the combination compared to the pyrethroid-PBO ITN alone has been established, pirimphos-methyl IRS should continue to be used even in the presence of high coverage with pyrethroid-PBO ITNs, preferably as part of an IRS rotational strategy. In line with WHO recommendations for insecticide resistance management42, the sustained rotation of multiple insecticide modes of action for IRS may help preserve efficacy to insecticides approved for IRS.\n", - "\n", - "Footnote 3: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 4: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 5: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 6: [https://doi.org/10.1038/s41598-022-10953-](https://doi.org/10.1038/s41598-022-10953-)\n", - "\n", - "y\n", - "\n", - "Footnote 7: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 8: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 9: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 10: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 11: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 12: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 13: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 14: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 15: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 16: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 17: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 18: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 19: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 20: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 21: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 22: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 23: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 24: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 25: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 26: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 27: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 28: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 29: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 30: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 31: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 32: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 333: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 34: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 35: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 36: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 37: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 38: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 39: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 40: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 41: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 42: https://doi.org/10.1038/s415\n", - "\n", - "\n", - "following pre-exposure to PBO, restoration of susceptibility to permethrin--the pyrethroid insecticide used on the pyrethroid-PBO ITN tested in the Tanzanian trial (Olvest Plus)--was high in the vector population from the study area (from 18 to 94%)15. Hence, the level of control achieved with pyrethroid-PBO ITN alone in the Tanzanian trial may have been optimal making the addition of pirimphos-methyl IRS unnecessary. This may not be the case in many communities in West Africa considering the afore-mentioned low levels of pyrethroid-PBO synergism reported in susceptibility bioassays and hut trials conducted across the region; in contrast, the addition of pirimphos-methyl IRS to pyrethroid-PBO ITNs in these communities could be more beneficial for control of clinical malaria compared to the ITN alone. As the range of vector control products available to vector control programmes expands, the choice of interventions and product brands must be aligned to local contexts and guided by local evidence. To help guide vector control policy, epidemiological trials and/or other empirical studies investigating the impact and cost-effectiveness of pyrethroid-PBO nets in communities in the West African region as well as their combination with IRS using pro-insectiles like pirimphos-methyl will be necessary.\n", - "\n", - "Although the inhibitory effect of PBO on mosquito cytochrome P450 enzymes formed the basis of our hypothesis for the antagonism observed between pirimphos-methyl IRS and pyrethroid-PBO ITNs in the experimental huts, behavioural interactions could also have contributed. In both trials, mosquito exiting rates into the veranda traps and blood-feeding inhibition were consistently higher in the combinations compared to the IRS insecticides alone. This could be attributed to the excitro-replenent property of the pyrethroid in the ITN stimulating directed movement of mosquitoes away from their source44. This early exiting effect was however significantly higher in the combination with pirimphos-methyl IRS compared to the combination with bendo-carb IRS suggesting a behavioural interaction in the presence of pirimphos-methyl that may have driven more mosquitoes to exit into the veranda, thus reducing mosquitoes' contact with pirimphos-methyl IRS treated walls. This may have compromised the impact of the pirimphos-methyl IRS in the combination compared to when applied alone and to the combination with bendoicarb. Further studies to assess mosquito flight behaviour, in the presence of the combinations would provide useful insight into behavioural interactions between the treatments. Controlled laboratory assays which minimise behavioural responses and assess P450 enzyme activity in exposed mosquitoes, could also elucidate the potential role of P450 enzyme inhibition in the antagonism observed in the experimental huts.\n", - "\n", - "While our trial focused on investigating the impact of combining pyrethroid-PBO ITNs with pirimphos-methyl IRS in the same households, there is a paucity of information on the interactions between these nets and other newly developed vector control products which contain new public health insecticides such as the neonciotohal, clothidinium and the pyrrole chlorfenapxy. Chlorfenapxy, an insecticide used on ITNs13 and being considered for IRS6,46, also requires activation by mosquito P450 enzymes6. Laboratory experiments have indicated the potential of PBO to antagonise the toxicity of chlorfenapxy against mosquitoes in bioassays29,30. Studies investigating the impact of co-deploying pyrethroid-PBO ITNs together with pyrethroid-chlorfenapxy ITNs or chlorfenapxy IRS in the same household will be essential to help inform optimal co-deployment policy.\n", - "\n", - "header: Results\n", - "\n", - "Experimental huts are used to assess the capacity of indoor vector control interventions to prevent wild vector mosquito entry and feeding and induce early mosquito exiting and mortality when applied in a human-occupied house, under carefully controlled conditions [3,12]. The hut trials were conducted at the CREC/LSHTM experimental hut station in Cowe, southern Benin (7deg14'N22deg18E), situated in a vast area of rice irrigation, which provides extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzini_ and _An. gambiae_ sensu stricto (s.s.) occur in symparity, with the latter present at lower densities and predominantly in the dry season. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold). Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (> 90%) and overexpression of CYP6P3, an enzyme associated with pyrethroid detoxification [3].\n", - "\n", - "Two experimental hut trials were performed in parallel for 4 months between April and July 2020. Trial 1 assessed the impact of combining Olyset Plus (Sumitomo Chemical), a permethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS while Trial 2 assessed the impact of combining PermaNet 3.0 (Vestergaard Sarl), a deltamethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS.\n", - "\n", - "The following six treatments were tested in each of the experimental hut trials:\n", - "\n", - "header: Susceptibility of wild vector mosquitoes at Cove to insecticides.\n", - "\n", - "WHO susceptibility bioassays were conducted in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove hit site to the constituent insecticides of the experimental hut treatments. Mortality rates of F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hit station following exposure to discriminating doses of deltamethrin and permethrin in WHO cylinder bioassays were low (42% and 11% respectively), confirming a high frequency of pyrethroid resistance in the Cove vector population (Table 1). Pre-exposure to PBO significantly improved mortality with deltamethrin (42% vs. 72%) but not with permethrin (11% vs. 8%). Mortality rates with the discriminating doses of bendiocarb and pirimiphos-methyl were 98% and 99% respectively. This demonstrated susceptibility to pirimiphos-methyl and bendiocarb. All insecticides induced 100% mortality with the laboratory-maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu strain. No mortality was recorded in the control with either strain.\n", - "\n", - "header: 3.2.3 Wall cone bioassays.\n", - "\n", - "WHO wall cone bioassays were performed on the IRS treated experimental hut walls 1 week, 2 months and 4 months after application of IRS treatments to assess their residual efficacy with increasing time elapsed from spraying. Mortality rates of the insecticide-susceptible _An. gambiae_ s.s. Kisum strain and pyrethroid-resistant _An. gambiae_ s.l. Cove strain following exposure to IRS-treated surfaces in 30 min wall cone bioassays are presented in Fig. 4. Mortality of mosquitoes exposed to pirimiphos-methyl treated walls was high (>90%) at all time points with both strains, showing no evidence of a decline in residual activity. In contrast, wall cone bioassay mortality on bendicor-treated surfaces declined rapidly, beginning at 67% and 39% in week 1 and falling to lows of 2% and 3% in month 4 with the Kisum and Cove strains respectively. No mortality was recorded in the controls at any time point with either strain.\n", - "\n", - "header: Experimental hut trial procedure\n", - "\n", - "During the hut trials, volunteer sleepers were rotated between experimental huts daily to mitigate the impact of individual attractiveness whilst bed nets were rotated weekly between the huts to reduce the impact of hut position on mosquito entry. Three (3) replicate bed nets were used per treatment and rotated within the treatment every 2 days. IRS treatments cannot be rotated and thus remained fixed throughout the trial. Consenting human volunteer sleepers alert in experimental huts between 21:00 and 06:00 to attract free-flying mosquitoes. Each morning, volunteer sleepers collected all live and dead mosquitoes from the different compartments of the hut (under the net, room, veranda) using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were then transferred to the field laboratory for morphological identification using taxonomic keys and scoring of immediate mortality and blood-feeding. All live, female _An. gambiae_ s.l. were provided access to 10% glucose (w/v) solution and held at ambient conditions in the field laboratory. Delayed mortality was recorded after 24 h for all treatments. Mosquito collections were performed 6 nights per week and on the 7th day, huts were cleaned and aired in preparation for the next rotation cycle.\n", - "\n", - "header: Wall cone bioassays\n", - "\n", - "The laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain and wild pyrethroid-resistant _An. gambiae_ s.l. Cove mosquitoes (F1) derived from breeding sites at the hut station were used for this purpose. At each time point, five cones were attached to the walls and ceiling of the IRS-treated huts. Approximately 50, 3-5-day old mosquitoes were transferred into cones in 5 batches of 10 and exposed to the treated surfaces for 30 min. As a control, mosquitoes were exposed in cones attached to the walls and ceiling of an unsprayed hut. At the end of exposure, mosquitoes were transferred to netted, plastic cups. Mosquitoes were provided access to 10% (w/v) glucose solution and delayed mortality after 24 h for all treatments.\n", - "\n", - "\n", - "Ethical considerations.Ethical approval for the conduct of the study was obtained from the ethics review boards of the Beninese Ministry of Health (No. 34) and the London School of Hygiene & Tropical Medicine (Ref: 16969). All human volunteer sleepers gave informed written consent prior to their participation; where necessary, the consent form and information sheet were explained in their local language. They were offered a free course of chemoprophylaxis spanning the duration of the trial and up to 3 weeks following its completion. A stand-by nurse was available for the duration of the trial to assess any cases of fever or adverse reactions to test items. Any confirmed cases of malaria were treated free of charge at a local health facility. Animals used as baits in tunnel test were maintained following institutional standard operating procedures (SOPs) designed to improve care and protect animals used for experimentation. All studies were performed according to relevant national and international guidelines.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cov\\u00e9\",\"Start_month\":4,\"Start_year\":2020,\"End_month\":7,\"End_year\":2020}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Untreated net\",\"Insecticide\":null,\"Concentration_initial\":null,\"Net_washed\":null,\"Net_holed\":null,\"pHI_category\":null},\"N02\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"Deltamethrin, PBO\",\"Concentration_initial\":\"2.1 g\\/kg, 4.0 g\\/kg, 25 g\\/kg\",\"Net_washed\":0.0,\"Net_holed\":9.0,\"pHI_category\":\"Good\"},\"N03\":{\"Net_type\":\"Olyset Plus\",\"Insecticide\":\"Permethrin, PBO\",\"Concentration_initial\":\"20 g\\/kg, 10 g\\/kg\",\"Net_washed\":0.0,\"Net_holed\":9.0,\"pHI_category\":\"Good\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Trial 2.\n", - "\n", - "1. Untreated net.\n", - "2. PermaNet 3.0 (Vestergaard Sarl).\n", - "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", - "4. PermaNet 3.0 + Bendiocarb IRS applied at 400 mg/m2.\n", - "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", - "6. PermaNet 3.0 + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", - "\n", - "Olyset Plus and PermaNet 3.0 are WHO prequalified pyrethroid-PBO ITNs [3]. Olyset Plus is made of polyethylene filaments coated with 20 g/Kg of permethrin and 10 g/Kg of PBO. PermaNet 3.0 consists of polyester side panels coated with deltamethrin at 2.1 g/kg and a polyethylene roof panel incorporating deltamethrin and PBO at 4.0 g/kg and 25 g/kg respectively.\n", - "\n", - "header: Tunnel tests\n", - "\n", - "The tunnel test consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections using a netting frame fitted into a slot across the tunnel. In one of the sections, a guinea pig was housed unconstrained in a small cage, and in the other section, -100 unfed female mosquitoes aged 5-8 days were released at dusk and left overnight. The net samples were deliberately hoked with nine 1-cm holes to give opportunity for mosquitoes to penetrate the animal bathed chamber for a blood meal an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 oC and 65-85% RH. The next morning, the numbers of mosquitoes found alive or dead, fed or unfed, in each section were scored. Live mosquitoes were provided with 10% glucose solution and delayed mortality was recorded after 24 h. The pyrethroid-PBO ITNs were compared to Olyset Net (a permethrin-only net, Sumitomo chemical) and PermaNet 2.0 (a deltamethrin-only net, Vestergaard Sarl) and an untreated control net. Two to three net pieces were tested per net type.\n", - "\n", - "header: scientific reports: Abstract\n", - "\n", - "OPEN : Pyrethroid-piperonyl butoxide (PBO) nets reduce the efficacy of indoor residual spraying with pirimiphos-methyl against pyrethroid-resistant malaria vectors\n", - "\n", - "Thomas Syme, Mariai Ghegbo, Dorothy Obuobi, Augustin Fongnikin, Abel Agbevo, Damien Todjinou, & Corine Ngufori\n", - "\n", - "\n", - "Primiphos-methyl is a pro-insecticide requiring activation by mosquito cytochrome P450 enzymes to induce toxicity while PBO blocks activation of these enzymes in pyrethroid-resistant vector mosquitoes. PBO may thus antagonise the toxicity of pirimiphos-methyl IRS when combined with pyrethroid-PBO ITMs. The impact of combining Olyset Plus and PermaNet 3.0 with Actellite 300CS IRS was evaluated against pyrethroid-resistant _Anopheles gambiae_ s.l. in two parallel experimental hut trials in southern Benin. The vector population was resistant to pyrethroids and PBO pre-exposure partially restored deltamethrin toxicity but not permitting. Mosquito mortality in experimental huts was significantly improved in the combinations of bendicocarp IRS with pyrethroid-PBO ITMs (33-3896) compared to bendicocarp IRS alone (14-16%, p < 0.001), demonstrating an additive effect. Conversely, mortality was significantly reduced in the combinations of pirimiphos-methyl IRS with pyrethroid-PBO ITMs (55-59%) compared to pirimiphos-methyl IRS alone (77-78%, p < 0.001), demonstrating evidence of an antagonistic effect when both interventions are applied in the same household. Mosquito mortality in the combination was significantly higher compared to the pyrethroid-PBO ITMs alone (55-59% vs. 22-26% p < 0.001) showing potential of pirimiphos-methyl IRS to enhance vector control when deployed to complement pyrethroid-PBO ITMs in an area where PBO fails to fully restore susceptibility to pyrethroids.\n", - "\n", - "header: 3.2.2 Tumed test bioassays.\n", - "\n", - "To further assess the efficacy of the pyrethroid-PBO ITNs and help explain the findings in the experimental huts, tunnel tests were performed using the susceptible _An. gambiae_ Kisum strain and pyrethroid-resistant _An. gambiae_ as from Cove on net samples (30 x 30 cm) obtained from Olyset Plus and Permaket 3.0 nets. The tunnel test is an overnight animal baulesar what simulates host-seeking behaviour of vector mosquitoes under controlled laboratory conditions. Both pyrethroid-PBO ITNs were compared to pyrethroid-only nets which contained similar pyrethroid-insecticles (Olyset Net and Permaket 2.0). Mosquito mortality rates observed in the tunnels are presented in Fig. 3. Mortality in the control tunnels was 11% with the susceptible Kisum strain and 2% with the pyrethroid-resistant Cove strain. All ITN types induced >8% mortality with the susceptible Kisum strain. Olyset Plus killed significantly higher proportions of the Cove mosquitoes compared to Olyset Net (90% vs. 42%). With Permaket 3.0, mortality of Cove mosquitoes exposed to net prices obtained from the PBO treated root of the net (68%) was higher compared to net prices obtained from the sides of the net (34%) and Permaket 2.0 (27%). The results, therefore, showed higher levels of mortality against pyrethroid-resistant mosquitoes from the Cove experimental hut station with the pyrethroid-PBO ITNs relative to pyrethroid-only nets. More detailed results from the tunnel tests are available in the supplementary information (Table S1).\n", - "\n", - "header: Study site and experimental hut treatments.: Trial 1.\n", - "\n", - "1. Untreated net.\n", - "2. Olyset Plus (Sumitomo Chemical).\n", - "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", - "4. Olyset Plus + Bendiocarb IRS applied at 400 mg/m2.\n", - "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", - "6. Olyset Plus + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", - "\n", - "header: Table 3: Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato exposed to pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination in experimental huts in Cové, southern Benin.\n", - "footer: Results are presented separately for the trials involving Olgest Plus (Trial 1) and PermaNet 3.0 (Trial 2). ‘For each trial, values on this column sharing a superscript letter do not differ significantly, P > 0.05, logistic regression.\n", - "columns: ['Treatment', 'Total females caught', 'Total blood-fed', '% blood-feeding', '95% CIs', '% blood-feeding inhibition', '% personal protection']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total blood-fed\":\"Trial 1\",\"% blood-feeding\":\"Trial 1\",\"95% CIs\":\"Trial 1\",\"% blood-feeding inhibition\":\"Trial 1\",\"% personal protection\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total blood-fed\":\"481\",\"% blood-feeding\":\"72a\",\"95% CIs\":\"69\\u201376\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught\":\"511\",\"Total blood-fed\":\"122\",\"% blood-feeding\":\"24b\",\"95% CIs\":\"20\\u201328\",\"% blood-feeding inhibition\":\"67\",\"% personal protection\":\"75\"},\"3\":{\"Treatment\":\"Benedicarb IRS\",\"Total females caught\":\"556\",\"Total blood-fed\":\"528\",\"% blood-feeding\":\"95c\",\"95% CIs\":\"93\\u201397\",\"% blood-feeding inhibition\":\"\\u201331\",\"% personal protection\":\"\\u2013 10\"},\"4\":{\"Treatment\":\"Olyset Plus + bendicarb IRS\",\"Total females caught\":\"288\",\"Total blood-fed\":\"64\",\"% blood-feeding\":\"22b\",\"95% CIs\":\"17\\u201327\",\"% blood-feeding inhibition\":\"69\",\"% personal protection\":\"87\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total blood-fed\":\"420\",\"% blood-feeding\":\"79d\",\"95% CIs\":\"76\\u201383\",\"% blood-feeding inhibition\":\"\\u20139\",\"% personal protection\":\"13\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total blood-fed\":\"47\",\"% blood-feeding\":\"16e\",\"95% CIs\":\"11\\u201320\",\"% blood-feeding inhibition\":\"79\",\"% personal protection\":\"90\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total blood-fed\":\"Trial 2\",\"% blood-feeding\":\"Trial 2\",\"95% CIs\":\"Trial 2\",\"% blood-feeding inhibition\":\"Trial 2\",\"% personal protection\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total blood-fed\":\"391\",\"% blood-feeding\":\"67u\",\"95% CIs\":\"64\\u201371\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total blood-fed\":\"115\",\"% blood-feeding\":\"24v\",\"95% CIs\":\"20\\u201327\",\"% blood-feeding inhibition\":\"65\",\"% personal protection\":\"71\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total blood-fed\":\"519\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 33\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught\":\"233\",\"Total blood-fed\":\"54\",\"% blood-feeding\":\"23v\",\"95% CIs\":\"18\\u201329\",\"% blood-feeding inhibition\":\"66\",\"% personal protection\":\"86\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total blood-fed\":\"406\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 4\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"},\"14\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"}}\n", - "\n", - "header: Conclusion\n", - "\n", - "Our study provides the first evidence of an antagonistic effect when pyrethroid-PBO ITNs are combined with pirimphos-methyl IRS in the same household resulting in lower levels of vector mosquito mortality compared to the IRS alone. In line with WHO recommendations, vector control programmes faced with multiple choice of ITN types to deploy as an additional intervention to improve vector control impact in an area dedicated to IRS with pirimphos-methyl, may consider other types of ITNs like pyrethroid-ITNs which can better complement pirimphos-methyl IRS when deployed together. Nevertheless, the pyrethroid-PBO ITNs performed poorly probably due to the lower levels of restoration of pyrethroid susceptibility with PBO in the vector population. Combining these nets with pirimphos-methyl IRS provided significantly improved vector control compared to the net alone demonstrating the potential for pirimphos-methyl IRS to enhance malaria control when deployed to complement pyrethroid-PBO ITNs in areas where PBO fails to fully restore susceptibility to pyrethroids.\n", - "\n", - "header: Materials and methods\n", - "\n", - "Adult F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hut station were exposed to filter papers treated with discriminating doses of deltamethrin (0.05%), permethrin (0.75%), benchicaro (0.1%) and pirimphos-methyl (0.25%) in WHO cylinders8. Deltamethrin and perme-thrin were also tested with 60 min pre-exposure to PBO (4%) to assess the involvement of metabolic enzymes in pyrethroid resistance. A comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain. Approximately 100, 3-5-day old mosquitoes of each strain were exposed to each insecticide for 60 min in four batches of 20-25. Similar numbers of mosquitoes were concurrently exposed to untreated filter papers as a control. At the end of exposure, mosquitoes were transferred to appropriately labelled holding tubes, provided access to 10% (w/v) glucose solution, and held at 27 +- 2degC and 75 +- 10% relative humidity. Knockdown was recorded 60 min after exposure and delayed mortality after 24 h for all treatments. The insecticide-treated filter papers were obtained from Universiti Sains Malaysia.\n", - "\n", - "header: Hut trial outcome measures\n", - "\n", - "The efficacy of the experimental hut treatments was expressed in terms of the following outcome measures:\n", - "\n", - "1. Deterrence (%)--proportional reduction in the number of mosquitoes collected in the treated hut relative to the number collected in the control.\n", - "2. Exophily (%)--exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda trap.\n", - "3. Blood-feeding inhibition (%)--proportional reduction in blood-feeding in the treated hut relative to the control. Calculated as follows: \\[\\mathit{Blood\\ feeding\\ inhibition}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bfu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", - "4. Mortality (%)--proportion of dead mosquitoes 24 h after collection.\n", - "5. Personal protection (%)--reduction in the number of blood-fed mosquitoes in the treated hut relative to the untreated net control. Calculated as follows: \\[\\mathit{Personal\\ protection}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", - "\n", - "header: Experimental hut results.\n", - "\n", - "_Mosquito entry and exiting in experimental huts._\n", - "\n", - "A total of 5,404 wild female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trials (Table 2). In both trials, mosquito entry in huts with the pyrethroid-PBO ITN alone and IRS treatments alone did not differ significantly from the controls (p > 0.05) but was significantly reduced with the pyrethroid-PBO ITN plus IRS combinations compared to the single treatments (p < 0.01). Mosquito entry rates did not also differ between the combinations of the pyrethroid-PBO ITN with bendiocarb IRS relative to the combinations with pirimiphos-methyl IRS (p < 0.05). Nevertheless, IRS treatments could not be rotated and thus, treatment-induced deterrence cannot be fully distinguished from differential attractiveness due to hut position.\n", - "\n", - "The proportion of mosquitoes exiting into the veranda of the huts with the untreated net controls was 36% and 39% for Trials 1 and 2 respectively. Exiting rates were higher with the pyrethroid-PBO ITNs alone (76%) relative to the IRS insecticides alone (51-63% with bendiocarb and 53-69% with pirimiphos-methyl IRS, p < 0.005). In both trials, the highest levels of mosquito exiting were achieved with the pyrethroid-PBO ITN plus IRS combinations (79% with bendiocarb and 87-89% with pirimiphos-methyl IRS). Between the combinations, adding\n", - "primiphos-methyl IRS to the pyrethroid-PBO ITN provided significantly higher levels of mosquito exiting relative to adding bendicord IRS (87-89% vs. 79%, P < 0.05).\n", - "\n", - "Blood-feeding rates of wild malaria vector mosquitoes in experimental huts.Blood-feeding rates in huts with the untreated net controls were 72% and 67% for Trials 1 and 2 respectively (Table 3). The IRS treatments did not provide any blood-feeding inhibition relative to the controls. Blood-feeding inhibition rates were high with the pyrethroid-PBO ITN plus IRS combinations in both trials (69-79% with Olyst Plus and 63-66% with PermaNet 3.0) and this was generally similar to what was observed with the pyrethroid-PBO ITNs alone (67% with Olyst Plus and 65% with PermaNet, P > 0.05) showing that the high levels of blood-feeding inhibition in the combinations, was mostly due to the ITNs. Blood-feeding inhibition with the PermaNet 3.0 plus primiphos-methyl IRS combination (66%) was similar to the PermaNet 3.0 plus bendicord IRS combination (63%, P = 0.71) meanwhile the Olyset Plus and primiphos-methyl IRS combination induced higher levels of blood-feeding inhibition compared to the Olyst Plus and bendicord IRS combination (79% vs. 69%, P = 0.036) (Table 3). Personal protection levels showed a similar trend and were also higher with the combinations (86-90%) relative to the IRS alone (- 33-13%).\n", - "\n", - "Mortality rates of wild malaria vector mosquitoes in experimental huts.\n", - "\n", - "Wild vector mosquito mortality in the controls was 3% in Trial 1 and 2% in Trial 2 (Table 4). The pyrethroid-PBO ITNs killed relatively low mosquito proportions (22% with Olgest Plus and 26% with PermaNet 3.0) though this was higher than what was observed with benedicarb IRS alone (14% in Trial 1 and 16% in Trial 2, P < 0.10). The highest mortality was achieved with pirimphos-methyl IRS alone (77% in Trial 1 and 78% in Trial 2). In both trials, mortality in the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations was significantly reduced compared to pirimphos-methyl IRS alone (77% with pirimphos-methyl IRS vs. 59% with Olgest Plus pirimphos-methyl IRS, P < 0.001 and 78% with pirimphos-methyl IRS vs. 55% with PermaNet 3.0 plus pirimphos-methyl IRS, P < 0.001), demonstrating an antagonistic effect. Conversely, mortality was significantly higher in the combinations of benedicarb IRS with Olgest Plus (33%) and PermaNet 3.0 (38%) than benedicarb IRS alone (14-16%, P < 0.001), demonstrating an additive effect (Table 4). Nevertheless, both pyrethroid-PBO plus IRS combinations induced significantly higher\n", - "\n", - "mortality compared to the pyrethroid-PBO ITNs alone (P < 0.001). Between the combinations, mortality was consistently higher with the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations (55-59%) compared to the pyrethroid-PBO ITN plus pedicocarb IRS (33-39%, P < 0.001).\n", - "\n", - "The monthly mortality rates of wild vector mosquitoes which entered the experimental huts during the trials are presented in Fig. 1 for the combinations with pedicocarb IRS and Fig. 2 for the combinations with pirimiphos-methyl IRS. In both trials, mosquito mortality rates in huts with the pyrethroid-PBO ITNs plus pedicocarb IRS declined sharply over time from 65-75% in month 1 to 33-38% in month 3, nevertheless, it was consistently higher than the single treatments alone (Fig. 1). Mosquito mortality in the combination of Olyset Plus and pirimiphos-methyl IRS was similar to the IRS alone in month 1 (> 90%) but declined substantially relative to the IRS in subsequent months. With the PermaNet 3.0 plus pirimiphos-methyl IRS combination,\n", - "\n", - "Figure 1.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pedicocarb IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Oyset Plus (Trial 1) and panel (**b**) presents results from the trial with PermaNet 3.0 (Trial 2). Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from onset of the trial. Mosquito mortality in the control untreated huts did not exceed 5% at any time point.\n", - "\n", - "Figure 2.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pirimiphos-methyl IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Olyset Plus and panel (**b**) presents results from the trial with PermaNet 3.0. Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from the onset of the trial.\n", - "\n", - "\n", - "mosquito mortality was consistently lower than the IRS alone throughout the trial. Through the four months of the trials, the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations consistently induced higher levels of mosquito mortality relative to the pyrethroid-PBO ITNs alone.\n", - "\n", - "header: Table 2. Entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination.\n", - "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", - "er signi\u001fcantly, P>0.05, negative binomial regression for females caught and logistic regression for exophily.\n", - "columns: ['Treatment', 'Total females caught*', '% deterrence', 'Total exiting', '% exophily*', '95% CIs']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught*\":\"Trial 1\",\"% deterrence\":\"Trial 1\",\"Total exiting\":\"Trial 1\",\"% exophily*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"664a\",\"% deterrence\":\"-\",\"Total exiting\":\"241\",\"% exophily*\":\"36a\",\"95% CIs\":\"33\\u201340\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught*\":\"511a\",\"% deterrence\":\"23\",\"Total exiting\":\"390\",\"% exophily*\":\"76b\",\"95% CIs\":\"73\\u201380\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"556a\",\"% deterrence\":\"16\",\"Total exiting\":\"282\",\"% exophily*\":\"51c\",\"95% CIs\":\"47\\u201355\"},\"4\":{\"Treatment\":\"Olyset Plus + bendiocarb IRS\",\"Total females caught*\":\"288b\",\"% deterrence\":\"57\",\"Total exiting\":\"228\",\"% exophily*\":\"79b\",\"95% CIs\":\"75\\u201384\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"531a\",\"% deterrence\":\"20\",\"Total exiting\":\"281\",\"% exophily*\":\"53c\",\"95% CIs\":\"49\\u201357\"},\"6\":{\"Treatment\":\"Olyset plus + P-methyl IRS\",\"Total females caught*\":\"304b\",\"% deterrence\":\"54\",\"Total exiting\":\"270\",\"% exophily*\":\"89d\",\"95% CIs\":\"85\\u201392\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught*\":\"Trial 2\",\"% deterrence\":\"Trial 2\",\"Total exiting\":\"Trial 2\",\"% exophily*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"581u\",\"% deterrence\":\"-\",\"Total exiting\":\"226\",\"% exophily*\":\"39u\",\"95% CIs\":\"35\\u201343\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught*\":\"488u\",\"% deterrence\":\"16\",\"Total exiting\":\"369\",\"% exophily*\":\"76v\",\"95% CIs\":\"72\\u201379\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"575u\",\"% deterrence\":\"1\",\"Total exiting\":\"360\",\"% exophily*\":\"63w\",\"95% CIs\":\"59\\u201367\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught*\":\"233v\",\"% deterrence\":\"60\",\"Total exiting\":\"185\",\"% exophily*\":\"79v\",\"95% CIs\":\"74\\u201385\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"450u\",\"% deterrence\":\"23\",\"Total exiting\":\"311\",\"% exophily*\":\"69x\",\"95% CIs\":\"65\\u201373\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught*\":\"223v\",\"% deterrence\":\"62\",\"Total exiting\":\"195\",\"% exophily*\":\"87y\",\"95% CIs\":\"83\\u201392\"}}\n", - "\n", - "header: Table 4.Mortality results of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs, and pirimiphos-methyl IRS applied alone and in combination.\n", - "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", - "er signi\u001fcantly, p>0.05, logistic regression\n", - "columns: ['Treatment', 'Total females caught', 'Total dead', '% mortality*', '95% CIs']\n", - "\n", - "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total dead\":\"Trial 1\",\"% mortality*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total dead\":\"22\",\"% mortality*\":\"3a\",\"95% CIs\":\"2\\u20135\"},\"2\":{\"Treatment\":\"Olyset Plus\",\"Total females caught\":\"511\",\"Total dead\":\"114\",\"% mortality*\":\"22b\",\"95% CIs\":\"19\\u201326\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"556\",\"Total dead\":\"87\",\"% mortality*\":\"16c\",\"95% CIs\":\"13\\u201319\"},\"4\":{\"Treatment\":\"Olyset Plus + Bendiocarb IRS\",\"Total females caught\":\"288\",\"Total dead\":\"95\",\"% mortality*\":\"33d\",\"95% CIs\":\"28\\u201338\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total dead\":\"411\",\"% mortality*\":\"77e\",\"95% CIs\":\"74\\u201381\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total dead\":\"178\",\"% mortality*\":\"59f\",\"95% CIs\":\"53\\u201364\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total dead\":\"Trial 2\",\"% mortality*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total dead\":\"12\",\"% mortality*\":\"2u\",\"95% CIs\":\"1\\u20133\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total dead\":\"127\",\"% mortality*\":\"26v\",\"95% CIs\":\"22\\u201330\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total dead\":\"80\",\"% mortality*\":\"14w\",\"95% CIs\":\"11\\u201317\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + Bendiocarb IRS\",\"Total females caught\":\"233\",\"Total dead\":\"89\",\"% mortality*\":\"38x\",\"95% CIs\":\"32\\u201344\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total dead\":\"350\",\"% mortality*\":\"78y\",\"95% CIs\":\"74\\u201382\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total dead\":\"122\",\"% mortality*\":\"55z\",\"95% CIs\":\"48\\u201361\"}}\n", - "\n", - "header: Data analysis.\n", - "\n", - "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental but treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to the differential attractiveness of the volunteer sleepers and huts. Results from the different experimental hut trials involving Olyset Plus and PermaNet 3.0 were analysed separately. Susceptibility bioassay results were interpreted according to WHO criteria49. All analyses were performed in Stata version 15.1.\n", - "\n", - "header: Results\n", - "\n", - "Experimental huts are used to assess the capacity of indoor vector control interventions to prevent wild vector mosquito entry and feeding and induce early mosquito exiting and mortality when applied in a human-occupied house, under carefully controlled conditions [3,12]. The hut trials were conducted at the CREC/LSHTM experimental hut station in Cowe, southern Benin (7deg14'N22deg18E), situated in a vast area of rice irrigation, which provides extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzini_ and _An. gambiae_ sensu stricto (s.s.) occur in symparity, with the latter present at lower densities and predominantly in the dry season. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold). Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (> 90%) and overexpression of CYP6P3, an enzyme associated with pyrethroid detoxification [3].\n", - "\n", - "Two experimental hut trials were performed in parallel for 4 months between April and July 2020. Trial 1 assessed the impact of combining Olyset Plus (Sumitomo Chemical), a permethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS while Trial 2 assessed the impact of combining PermaNet 3.0 (Vestergaard Sarl), a deltamethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS.\n", - "\n", - "The following six treatments were tested in each of the experimental hut trials:\n", - "\n", - "header: 3.2.3 Wall cone bioassays.\n", - "\n", - "WHO wall cone bioassays were performed on the IRS treated experimental hut walls 1 week, 2 months and 4 months after application of IRS treatments to assess their residual efficacy with increasing time elapsed from spraying. Mortality rates of the insecticide-susceptible _An. gambiae_ s.s. Kisum strain and pyrethroid-resistant _An. gambiae_ s.l. Cove strain following exposure to IRS-treated surfaces in 30 min wall cone bioassays are presented in Fig. 4. Mortality of mosquitoes exposed to pirimiphos-methyl treated walls was high (>90%) at all time points with both strains, showing no evidence of a decline in residual activity. In contrast, wall cone bioassay mortality on bendicor-treated surfaces declined rapidly, beginning at 67% and 39% in week 1 and falling to lows of 2% and 3% in month 4 with the Kisum and Cove strains respectively. No mortality was recorded in the controls at any time point with either strain.\n", - "\n", - "header: Discussion\n", - "\n", - "Given the inhibitory effect of PBO on mosquito cytochrome P450 enzymes, the WHO had temporarily recommended against the use of pyrethroid-PBO ITN in areas programmed for IRS with pirimiphos-methyl IRS until further evidence on the potential antagonism between PBO and the organo-thiophosphate pro-insecticide becomes available20. In this study, we found evidence of an antagonistic effect when pyrethroid PBO ITNs were combined with pirimiphos-methyl IRS in the same household in a pyrethroid-resistant area in Southern Benin where resistance was partly conferred by over-expression of mosquito cytochrome P450 enzymes20. Unlike the combination of the pyrethroid-PBO nets with bendicorab IRS which provided improved vector mosquito mortality compared to bendicorab IRS alone, combining these nets with pirimiphos-methyl IRS induced significantly lower levels of vector mosquito mortality rates compared to pirimiphos-methyl IRS alone. This effect\n", - "\n", - "Figure 3.: Mortality (24 h) of susceptible _Anopheles gambiae_ Kisumu and pyrethroid-resistant _An. gambiae_ s.l. Cove strains exposed to Olyset Plus and Permaket 3.0 in tunnel tests. Error bars represent 95% CIs. Both pyrethroid-PBO nets were compared to pyrethroid-only nets (Olyset Net and Permaket 2.0). Permaket 3.0 contains PBO only on the roof of the net. With both strains, 80–120 mosquitoes were exposed overnight to metting pieces cut from whole nets in 2–3 replicate tunnel tests.\n", - "\n", - "\n", - "was remarkably similar between the two brands of pyrethroid-PBO ITNs tested across both hut trials indicating that the negative interaction of the combination on mosquito mortality was less affected by the design and specifications of the pyrethroid-PBO ITN. Wild vector mosquitoes which entered the huts with the combined treatment may have contacted the pirimphos-methyl IRS on the hut wall only after picking up PBO from the ITN while attempting to blood-feed on the sheeper under the net. This pre-exposure to PBO on the ITN could have prevented the metabolic activation of the IRS insecticide in these mosquitoes, resulting in lower mortality rates relative to the IRS alone. This finding supports WHO's recommendation against the deployment of pyrethroid-PBO ITNs in areas that have already been programmed for IRS with pirimphos-methyl IRS. This is mostly important from a programmatic perspective where a vector control programme is faced with multiple choice of ITN types to deploy as an additional intervention to enhance vector control impact in an area that is already dedicated to IRS with pirimphos-methyl. In such a scenario, other types of ITNs like pyrethroid-only nets that were recently shown to complement pirimphos-methyl IRS when applied together23, should be considered.\n", - "\n", - "These findings should however not be interpreted to mean that pirimphos-methyl IRS must not be deployed to complement pyrethroid-PBO ITNs. Though pyrethroid-PBO ITNs have consistently shown improved performance in experimental hut trials against pyrethroid-resistant malaria vectors compared to pyrethroid-only nets34, the margin appears to vary depending on the intensity and mechanisms of pyrethroid-resistance encountered. In our study, the pyrethroid-PBO ITNs when applied alone in a hut induced low vector mosquito mortality (22-26%) compared to what has been observed in hut trials against the same vector population with another type of novel dual ITN (71-76%)35,40. Low levels of mosquito mortality in huts with pyrethroid-PBO ITNs and failure of PBO to fully restore pyrethroid susceptibility in bioassays have also been reported from studies in Burkina Faso37, Cameroon38, Cote d'Ivoire39 and Senegal40. This may indicate the presence of complex resistance mechanisms in the West African region unaffected by PBO. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors which continues to increase over time41, yet the public health value of pyrethroid-PBO ITNs has not been assessed in the region. It is therefore unclear whether these nets will provide the same improved epidemiological impact over pyrethroid-only nets in West Africa as observed in the East African community trials which have been the basis of their endorsement for malaria control. Our results showed a significant improvement in mosquito mortality when pirimphos-methyl IRS was combined with the pyrethroid-PBO ITNs (55-59%) compared to the pyrethroid-PBO ITNs alone (22-26%). Mosquito entry and feeding rates were also significantly lower with the combination compared to the pyrethroid-PBO ITNs alone. This provides some justification for deploying pirimphos-methyl IRS to complement pyrethroid-PBO nets in an area of high and complex pyrethroid-resistance where local vectors are less susceptible to the synergistic effect of PBO. Due to the limited choice of insecticides available for IRS, where a beneficial effect of the combination compared to the pyrethroid-PBO ITN alone has been established, pirimphos-methyl IRS should continue to be used even in the presence of high coverage with pyrethroid-PBO ITNs, preferably as part of an IRS rotational strategy. In line with WHO recommendations for insecticide resistance management42, the sustained rotation of multiple insecticide modes of action for IRS may help preserve efficacy to insecticides approved for IRS.\n", - "\n", - "Footnote 3: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 4: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 5: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", - "\n", - "Footnote 6: [https://doi.org/10.1038/s41598-022-10953-](https://doi.org/10.1038/s41598-022-10953-)\n", - "\n", - "y\n", - "\n", - "Footnote 7: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 8: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 9: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 10: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 11: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 12: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 13: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 14: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 15: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 16: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 17: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 18: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 19: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 20: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 21: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 22: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 23: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 24: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 25: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 26: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 27: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 28: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 29: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 30: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 31: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 32: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 333: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 34: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 35: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 36: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 37: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 38: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 39: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 40: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 41: https://doi.org/10.1038/s41598-022-10953-y\n", - "\n", - "Footnote 42: https://doi.org/10.1038/s415\n", - "\n", - "\n", - "following pre-exposure to PBO, restoration of susceptibility to permethrin--the pyrethroid insecticide used on the pyrethroid-PBO ITN tested in the Tanzanian trial (Olvest Plus)--was high in the vector population from the study area (from 18 to 94%)15. Hence, the level of control achieved with pyrethroid-PBO ITN alone in the Tanzanian trial may have been optimal making the addition of pirimphos-methyl IRS unnecessary. This may not be the case in many communities in West Africa considering the afore-mentioned low levels of pyrethroid-PBO synergism reported in susceptibility bioassays and hut trials conducted across the region; in contrast, the addition of pirimphos-methyl IRS to pyrethroid-PBO ITNs in these communities could be more beneficial for control of clinical malaria compared to the ITN alone. As the range of vector control products available to vector control programmes expands, the choice of interventions and product brands must be aligned to local contexts and guided by local evidence. To help guide vector control policy, epidemiological trials and/or other empirical studies investigating the impact and cost-effectiveness of pyrethroid-PBO nets in communities in the West African region as well as their combination with IRS using pro-insectiles like pirimphos-methyl will be necessary.\n", - "\n", - "Although the inhibitory effect of PBO on mosquito cytochrome P450 enzymes formed the basis of our hypothesis for the antagonism observed between pirimphos-methyl IRS and pyrethroid-PBO ITNs in the experimental huts, behavioural interactions could also have contributed. In both trials, mosquito exiting rates into the veranda traps and blood-feeding inhibition were consistently higher in the combinations compared to the IRS insecticides alone. This could be attributed to the excitro-replenent property of the pyrethroid in the ITN stimulating directed movement of mosquitoes away from their source44. This early exiting effect was however significantly higher in the combination with pirimphos-methyl IRS compared to the combination with bendo-carb IRS suggesting a behavioural interaction in the presence of pirimphos-methyl that may have driven more mosquitoes to exit into the veranda, thus reducing mosquitoes' contact with pirimphos-methyl IRS treated walls. This may have compromised the impact of the pirimphos-methyl IRS in the combination compared to when applied alone and to the combination with bendoicarb. Further studies to assess mosquito flight behaviour, in the presence of the combinations would provide useful insight into behavioural interactions between the treatments. Controlled laboratory assays which minimise behavioural responses and assess P450 enzyme activity in exposed mosquitoes, could also elucidate the potential role of P450 enzyme inhibition in the antagonism observed in the experimental huts.\n", - "\n", - "While our trial focused on investigating the impact of combining pyrethroid-PBO ITNs with pirimphos-methyl IRS in the same households, there is a paucity of information on the interactions between these nets and other newly developed vector control products which contain new public health insecticides such as the neonciotohal, clothidinium and the pyrrole chlorfenapxy. Chlorfenapxy, an insecticide used on ITNs13 and being considered for IRS6,46, also requires activation by mosquito P450 enzymes6. Laboratory experiments have indicated the potential of PBO to antagonise the toxicity of chlorfenapxy against mosquitoes in bioassays29,30. Studies investigating the impact of co-deploying pyrethroid-PBO ITNs together with pyrethroid-chlorfenapxy ITNs or chlorfenapxy IRS in the same household will be essential to help inform optimal co-deployment policy.\n", - "\n", - "header: Abbreviations\n", - "\n", - "IRS Indoor residual spraying\n", - "\n", - "WHO World Health Organization\n", - "\n", - "PQ Prenqualification team\n", - "\n", - "PBO Piperonyl butoxide\n", - "\n", - "ITN Insecticide treated net\n", - "\n", - "LLIN Long-lasting insecticidal net\n", - "\n", - "GPIRM Global plan for insecticide resistance management\n", - "\n", - "WHOPES WHO pesticide evaluation scheme\n", - "\n", - "CREC Centre de Recherche Entomologique de Cotonou\n", - "\n", - "LSHTTM London School of Hygiene & Tropical Medicine\n", - "\n", - "Kdr Knockdown resistance\n", - "\n", - "PAMVERC Pan African Malaria Vector Research Consortium\n", - "\n", - "The large-scale implementation of long-lasting insecticidal nets (LLINs), and indoor residual spraying (IRS) has resulted in profound reductions in malaria-associated morbidity and mortality across sub-Saharan Africa, over the last two decades1. Unfortunately, resistance to the insecticides applied through these interventions, especially the pyrethroids, is now pervasive in vector populations in malaria-endemic countries', threatening to undermine their impact. In response, a new generation of novel LLINs and IRS based on new active ingredients with the potential to sustain vector control impact in the face of increasing resistance, have been developed3. This includes dual insecticide-treated nets containing a pyrethroid and an alternative effective new compound as well as new IRS insecticides with novel modes of action or improved formulations that have shown potential to provide enhanced control of insecticide-resistant malaria vector populations.\n", - "\n", - "Insecticide-treated nets (ITNs) combining a pyrethroid and piperonyl butoxido (PBO) were the first novel class of ITNs to be developed for malaria vector control. PBO is a synergism that can enhance the impact of pyrethroids and other insecticides by inhibiting metabolic detoxification enzymes associated with resistance, notably cytochrome P450 monooxygenases3. These nets received a conditional endorsement from the World Health Organisation (WHO) in 2017 based on results from a cluster-randomised controlled trial (CRT) in Tanzania demonstrating a reduction in malaria prevalence in communities allocated to pyrethroid-PBO ITNs relative to pyrethroid-only ITNs4. A full policy recommendation is now expected after results from a second CRT in Uganda also showed that two brands of pyrethroid-PBO ITNs reduced malaria prevalence relative to pyrethroid-only nets4. The WHO endorsement and expanding evidence base for the public health value of pyrethroid-PBO ITNs has prompted mass procurement of these nets by international malaria control agencies4,5. The proportion of pyrethroid-PBO ITNs of all ITNs delivered in sub-Saharan Africa has consequently risen from 3% in 2018 to 35% in 202112; pyrethroid-PBO ITNs are therefore replacing pyrethroid-only nets in many malaria-endemic countries.\n", - "\n", - "The increasing distribution and intensity of pyrethroid resistance has also affected malaria control policy regarding insecticide choice for IRS over the last decade. To improve vector control impact and preserve pyrethroids for ITNs, African IRS programmes partly suspended the use of pyrethroids and organochlorines in favour of carbamates and organophosphates5,12. Whilst both insecticides showed high toxicity against malaria vectors, the short residual duration of the initial formulations approved for IRS proved prohibitive, necessitating the development of longer-lasting formulations13. A new microencapsulated formulation of pirimphos-methyl was later developed (Actellic 300CS) demonstrating prolonged activity against pyrethroid-resistant malaria vector mosquitoes, lasting up to 9 months14,15. This formulation subsequently served as the insecticide of choice for the majority of IRS programmes in sub-Saharan Africa1 providing substantial control of mosquito vectors and malaria across distinct eco-epidemiological settings6,16-22.\n", - "\n", - "[MISSING_PAGE_POST]\n", - "\n", - "header: Susceptibility of wild vector mosquitoes at Cove to insecticides.\n", - "\n", - "WHO susceptibility bioassays were conducted in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove hit site to the constituent insecticides of the experimental hut treatments. Mortality rates of F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hit station following exposure to discriminating doses of deltamethrin and permethrin in WHO cylinder bioassays were low (42% and 11% respectively), confirming a high frequency of pyrethroid resistance in the Cove vector population (Table 1). Pre-exposure to PBO significantly improved mortality with deltamethrin (42% vs. 72%) but not with permethrin (11% vs. 8%). Mortality rates with the discriminating doses of bendiocarb and pirimiphos-methyl were 98% and 99% respectively. This demonstrated susceptibility to pirimiphos-methyl and bendiocarb. All insecticides induced 100% mortality with the laboratory-maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu strain. No mortality was recorded in the control with either strain.\n", - "\n", - "header: Wall cone bioassays\n", - "\n", - "The laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain and wild pyrethroid-resistant _An. gambiae_ s.l. Cove mosquitoes (F1) derived from breeding sites at the hut station were used for this purpose. At each time point, five cones were attached to the walls and ceiling of the IRS-treated huts. Approximately 50, 3-5-day old mosquitoes were transferred into cones in 5 batches of 10 and exposed to the treated surfaces for 30 min. As a control, mosquitoes were exposed in cones attached to the walls and ceiling of an unsprayed hut. At the end of exposure, mosquitoes were transferred to netted, plastic cups. Mosquitoes were provided access to 10% (w/v) glucose solution and delayed mortality after 24 h for all treatments.\n", - "\n", - "\n", - "Ethical considerations.Ethical approval for the conduct of the study was obtained from the ethics review boards of the Beninese Ministry of Health (No. 34) and the London School of Hygiene & Tropical Medicine (Ref: 16969). All human volunteer sleepers gave informed written consent prior to their participation; where necessary, the consent form and information sheet were explained in their local language. They were offered a free course of chemoprophylaxis spanning the duration of the trial and up to 3 weeks following its completion. A stand-by nurse was available for the duration of the trial to assess any cases of fever or adverse reactions to test items. Any confirmed cases of malaria were treated free of charge at a local health facility. Animals used as baits in tunnel test were maintained following institutional standard operating procedures (SOPs) designed to improve care and protect animals used for experimentation. All studies were performed according to relevant national and international guidelines.\n", - "\n", - "header: Experimental hut trial procedure\n", - "\n", - "During the hut trials, volunteer sleepers were rotated between experimental huts daily to mitigate the impact of individual attractiveness whilst bed nets were rotated weekly between the huts to reduce the impact of hut position on mosquito entry. Three (3) replicate bed nets were used per treatment and rotated within the treatment every 2 days. IRS treatments cannot be rotated and thus remained fixed throughout the trial. Consenting human volunteer sleepers alert in experimental huts between 21:00 and 06:00 to attract free-flying mosquitoes. Each morning, volunteer sleepers collected all live and dead mosquitoes from the different compartments of the hut (under the net, room, veranda) using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were then transferred to the field laboratory for morphological identification using taxonomic keys and scoring of immediate mortality and blood-feeding. All live, female _An. gambiae_ s.l. were provided access to 10% glucose (w/v) solution and held at ambient conditions in the field laboratory. Delayed mortality was recorded after 24 h for all treatments. Mosquito collections were performed 6 nights per week and on the 7th day, huts were cleaned and aired in preparation for the next rotation cycle.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cov\\u00e9\",\"Start_month\":4,\"Start_year\":2020,\"End_month\":7,\"End_year\":2020}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Untreated net\",\"Insecticide\":null,\"Concentration_initial\":null,\"Net_washed\":null,\"Net_holed\":null,\"pHI_category\":null},\"N02\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"Deltamethrin, PBO\",\"Concentration_initial\":\"2.1 g\\/kg, 4.0 g\\/kg, 25 g\\/kg\",\"Net_washed\":0.0,\"Net_holed\":9.0,\"pHI_category\":\"Good\"},\"N03\":{\"Net_type\":\"Olyset Plus\",\"Insecticide\":\"Permethrin, PBO\",\"Concentration_initial\":\"20 g\\/kg, 10 g\\/kg\",\"Net_washed\":0.0,\"Net_holed\":9.0,\"pHI_category\":\"Good\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Table 1: Treatment arms and descriptions of longlasting insecticide-treated nets.\n", - "footer: PermaNet is a registered trademark of Vestergaard Frandsen Holding SA. Olyset is a registered trademark of Sumitomo Chemical Co. Ltd. DawaPlusis a registered trademark of Tana Netting Co. Ltd.PBO, piperonyl butoxide.\n", - "columns: ['Treatment arm', 'Description', 'Manufacturer']\n", - "\n", - "{\"0\":{\"Treatment arm\":\"Untreated net\",\"Description\":\"Net manufactured manually using netting material from market\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment arm\":\"Olyset\\u00ae Net\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment arm\":\"Olyset\\u00ae Plus\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin and 4.3 x 10-4 kg\\/m2 of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment arm\":\"PermaNet\\u00ae 2.0\",\"Description\":\"5.5 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"4\":{\"Treatment arm\":\"PermaNet\\u00ae 3.0\",\"Description\":\"Combination of 2.8 g\\/kg of deltamethrin coated on polyester with strengthened border (side panels) and deltamethrin (4.0 g\\/kg) and PBO (25 g\\/kg)\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"5\":{\"Treatment arm\":\"Dawa\\u00ae Plus 2.0\",\"Description\":\"8.0 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"TANA Netting\"}}\n", - "\n", - "header: Supporting Information\n", - "\n", - "Additional supporting information may be found online in the Supporting Information section at the end of the article.\n", - "\n", - "Fig. 5: Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hit relative to the control hit. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "header: Entry rate and deterrence: Exit rates and induced exophily\n", - "\n", - "Exit rates refer here to the proportion of mosquitoes present in the veranda trap. As with entrance rates, exit rates varied throughout the study (Fig. 4). On average, the induced exophily rates were between 26.4% (control net) and 48.5% (Olyset Net) (Table S4). The odds of finding a mosquito in the veranda trap were significantly increased in the huts with treated nets, with the exception of the DawaPlus, although even for the DawaPlus a tendency to induce exophily was observed (Fig. 4, Table S4).\n", - "\n", - "header: Molecular analysis\n", - "\n", - "DNA was extracted from mosquito legs by heating at 90*C for 30 min. Species were identified using the SINE200 protocol (Santolamazza _et al._, 2008) and then screened for the voltage gated sodium channel (VGSC) 1014F and 1575Y alleles using Taqman assays (Bass _et al._, 2007; Jones _et al._, 2012).\n", - "\n", - "Total RNA was extracted from six pools of 10 5-day-old non-blood-fed female _An. coluzzii_ from larval collections from Tengrela and VK5 using the RNAqueous(r)4PCR Kit for isolation of DNA-free RNA (Ambion, Inc., Austin, TX, U.S.A.) according to the manufacturer's procedures. The RNA was eluted in 50 mL of elution solution and treated with DNase. The quality and quantity of all the RNA used were assessed \n", - "using a NanoDrop ND1000 (Thermo Fisher Scientific UK Ltd, Renfrew, U.K.).\n", - "\n", - "The expression profiles of five P450 genes (_CYP6M2_, _CYP6Z2_, _CYP6Z3_, _CYP6P3_, _CYP6P4_), previously found to be over-expressed in pyrethroid-resistant field populations from Burkina Faso (Toe _et al._, 2015) and/or known to metabolize pyrethroids (Muller _et al._, 2008; Mitchell _et al._, 2012) were quantified using reverse-transcription quantitative polymerase chain reaction (RT-qPCR). The qPCR analysis was conducted at the LSTM and used the following mosquito populations: Ngousso, an insecticide-susceptible strain originating from Ngousso in Cameroon in 2006 and maintained in the insectary at LSTM; Tengrela specimens reared from larval collections in October-November 2014, and VK5 specimens reared from larval collections in October-November 2014. Approximately 600 ng of RNA was reverse-transcribed to first-strand cDNA using SuperScript(tm) III reverse transcriptase (Invitrogen, Inc., Carlsbad, CA, U.S.A.) according to the manufacturer's procedures. Samples were then purified using the Qiagen Easy Purification Kit (Qiagen Benelux BV, Venlo, the Netherlands) before proceeding to qPCR. Each of the six pool replicates were run in triplicate using 2X SYBR Brilliant III (Agilent Technologies, Inc., Palo Alto, CA, U.S.A.), forward and reverse primers (300 nM) [sequence available in Toe _et al._ (2015)] on the Mx3005p qPCR system (Agilent Technologies, Inc., Palo Alto, California) with the following cycling protocol: 95 degC for 3 min, followed by 40 cycles of 95 degC for 10 s and 60 degC for 10 s. The qPCR data were analysed using the delta Ct values method, taking into account the PCR efficiency (Pfaffi, 2001). The candidate Ct values were normalized against three housekeeping genes, encoding ribosomal protein L40 (ubiquitin) (_AGAP007927_), an elongation factor (_AGAP005128_) and the S7 ribosomal protein (_AGAP010592_). The normalized Ct values of each gene were then compared with the normalized Ct values of the susceptible Ngousso strain.\n", - "\n", - "header: Results\n", - "\n", - "In VK5, very low levels of mortality were observed after exposure to the discriminating dose of deltamethrin and permethrin, but pre-exposure to PBO significantly increased mortality rates from 2.5% (_n_ = 163) to 45% (_n_ = 158) and from 5% (_n_ = 153) to 26% (_n_ = 156) for deltamethrin and permethrin, respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig. 1). In Tengrela, mortality rates of 34% (_n_ = 85) and 14% (_n_ = 101) were recorded for deltamethrin and permethrin, respectively. When PBO was used, mortality rates increased significantly to 63% (_n_ = 84) and 42% (_n_ = 104), respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig.1). Although there was evidence of synergism, pre-exposure to PBO did not fully restore susceptibility in either site to either pyrethroid.\n", - "\n", - "_Anopheles coluzzi_ was the only species of the _An. gambiae_ complex identified by PCR of a subset of 80 specimens from Tengrela and VK5. High frequencies of the 1014F allele of the VGSC were recorded in Tengrela (0.819, 95% CI 0.750-0.875) and VK5 (0.885, 95% CI 0.824-0.930) with the 1575Y allele present at lower frequencies of 0.169 (95% CI 0.114-0.236) and 0.221 (95% CI 0.158-0.295), respectively. Samples were not genotyped for the 1014S allele as previous extensive surveys have not detected this allele in _An. coluzzi_ from these sites (Toe _et al._, 2015). There was no statistically significant difference in the frequency of either the 1014F or 1575Y allele between the two sites (Table 2).\n", - "\n", - "Several cytochrome P450 genes previously associated with pyrethroid resistance showed elevated expression levels in the Tengrela and the VK5 _An. coluzzi_ populations compared with the susceptible laboratory Ngousso strain (Fig. 2). _CYP6P3_, _CYP6M2_, _CYP6Z3_, _CYP6P4_ and _CYP6Z2_ were found to be\n", - "\n", - "Fig. 1: Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: \\(P\\) < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "\n", - "overexpressed in both field strains compared with the susceptible laboratory colony (fold change: > 2) with the most highly overexpressed genes in both populations being _CYP6Z2_ and _CYP6Z3_ (Fig. 2).\n", - "\n", - "header: Discussion\n", - "\n", - "Very low mortality rates were obtained for both permethrin and deltamethrin in the two study sites following an hour of exposure to WHO diagnostic doses. Southwestern Burkina Faso is known as a hotspot of pyrethroid resistance (Dabire _et al._, 2012; Namountougou _et al._, 2012). Rapid changes in the prevalence of pyrethroid resistance have been observed since the first national LLIN distribution programme in 2010: in 2009, mosquito mortality following deltamethrin exposure was 25% (Dabire _et al._, 2012), in VK has since fallen to just 2.5%. The frequency of the 1014F _kdr_ mutation also increased from 0.28 in 2006 (Dabire _et al._, 2009) to 0.88 in the current study. Similar increases in the prevalence of pyrethroid resistance have been witnessed in Tengrela. Mortality rates of 93% and 46% for deltamethrin and permethrin, respectively, were recorded in 2011 (Namountougou _et al._, 2012; K. H. Toe, unpublished data 2011), but these mortality rates had reduced to 33% and 13% in 2014, the year of the current study (Toe _et al._, 2015). In the present study, pyrethroid mortality was significantly increased by pre-exposure to PBO. This, together with the qPCR data showing elevated expression of multiple P450s in both field populations compared with a susceptible laboratory strain, indicate that oxidases are an important resistance mechanism in _An. coluzzi_ in southwestern Burkina Faso. It is noted that resistance was not fully restored by PBO pre-exposure, indicating that additional resistance mechanisms, such as target site resistance and possibly cuticular modifications (Toe _et al._, 2015), may contribute to the pyrethroid resistance phenotype in these populations.\n", - "\n", - "header: Abstract\n", - "\n", - "Do bednets including piperonyl butoxide offer additional protection against populations of _Anopheles gambiae s.l._ that are highly resistant to pyrethroids? An experimental hut evaluation in Burkina Faso\n", - "\n", - "K. H. T oe\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " P. Muller\n", - "\n", - "2H233\n", - "\n", - "33Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " A. Badlo\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " A. Traore\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " N. Sagnon\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " R. K. Dabi Irene\n", - "\n", - "4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " H. Ransons\n", - "\n", - "5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - "\n", - "Malaria control is dependent on the use of longlasting insecticidal nets (LLINs) containing pyrethroids. A new generation of LLINs containing both pyrethroids and the synergist piperonyl butoxide (PBO) has been developed in response to increasing pyrethroid resistance in African malaria vectors, but questions remain about the performance of these nets in areas where levels of pyrethroid resistance are very high. This study was conducted in two settings in southwest Burkina Faso, Vallee du Kou 5 and Tengrela, where _Anopheles gambiae s.l._ (Diptera: Culicidae) mortality rates in World Health Organization (WHO) discriminating dose assays were \\(<\\) 14% for permethrin and \\(<\\) 33% for delatamethrin. When mosquitoes were pre-exposed to PBO in WHO tube assays, mortality rates increased substantially but full susceptibility was not restored. Molecular characterization revealed high levels of _kdr_ alleles and elevated levels of P450s previously implicated in pyrethroid resistance. In cone bioassays and experimental huts, PBO LLINs outperformed the pyrethroid-only equivalents from the same manufacturers. Blood feeding rates were 1.6-2.2-fold lower and mortality rates were 1.69-1.78-fold greater in huts with PBO LLINs vs. non-PBO LLINs. This study indicates that PBO LLINs provide greater personal and community-level protection than standard LLINs against highly pyrethroid-resistant mosquito populations.\n", - "\n", - " insecticide resistance, insecticide resistance management, longlasting insecticidal nets, PBO.\n", - "\n", - "header: Table 2: Frequencies of 1014F and 1575Y kdr alleles in Anopheles coluzzili, in Tengrela and Vallée du Kou 5 (VK5).\n", - "footer: Chi-squared test (http://vassarstats.net/) for the comparison of the frequency of the 1014F and 1575Y mutations in Anopheles coluzzili populations from Tengrela and VK5 (October 2014). No statistical difference was observed in the frequencies of the kdr alleles in the two sites.\n", - "columns: ['1014F mutation - Unnamed: 0_level_1', '1014F mutation - Total n', '1014F mutation - LL', '1014F mutation - LF', '1014F mutation - FF', '1014F mutation - f (1014F)', '1014F mutation - P-value']\n", - "\n", - "{\"0\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"2\",\"1014F mutation - LF\":\"25\",\"1014F mutation - FF\":\"53\",\"1014F mutation - f (1014F)\":\"0.819\",\"1014F mutation - P-value\":\"0.26\"},\"1\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"78\",\"1014F mutation - LL\":\"0\",\"1014F mutation - LF\":\"18\",\"1014F mutation - FF\":\"60\",\"1014F mutation - f (1014F)\":\"0.885\",\"1014F mutation - P-value\":null},\"2\":{\"1014F mutation - Unnamed: 0_level_1\":\"1575Y mutation\",\"1014F mutation - Total n\":\"1575Y mutation\",\"1014F mutation - LL\":\"1575Y mutation\",\"1014F mutation - LF\":\"1575Y mutation\",\"1014F mutation - FF\":\"1575Y mutation\",\"1014F mutation - f (1014F)\":\"1575Y mutation\",\"1014F mutation - P-value\":\"1575Y mutation\"},\"3\":{\"1014F mutation - Unnamed: 0_level_1\":null,\"1014F mutation - Total n\":\"Total n\",\"1014F mutation - LL\":\"NN\",\"1014F mutation - LF\":\"NY\",\"1014F mutation - FF\":\"YY\",\"1014F mutation - f (1014F)\":\"f (A575Y)\",\"1014F mutation - P-value\":\"P-value\"},\"4\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"57\",\"1014F mutation - LF\":\"19\",\"1014F mutation - FF\":\"4\",\"1014F mutation - f (1014F)\":\"0.169\",\"1014F mutation - P-value\":\"0.39\"},\"5\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"77\",\"1014F mutation - LL\":\"49\",\"1014F mutation - LF\":\"22\",\"1014F mutation - FF\":\"6\",\"1014F mutation - f (1014F)\":\"0.221\",\"1014F mutation - P-value\":null}}\n", - "\n", - "header: Performance of PBO LLINs in experimental hut studies\n", - "\n", - "The enhanced performance of PBO-containing LLINs over conventional LLINs was further supported by the experimental hut results. Both blood feeding inhibition and mortality rates were significantly higher in huts containing PBO LLINs than in those containing conventional LLINs from the same manufacturers. An improved performance of the PermaNet 3.0, which contains both higher concentrations of deltamethrin compared with the PermaNet 2.0, plus PBO on the roof of the net, has also been reported in pyrethroid-resistant populations of malaria vectors in Ivory Coast (Koudou _et al._, 2011), Benin (N'Guessan _et al._, 2010) and Burkina Faso (Corbel _et al._, 2010).\n", - "\n", - "Fig. 4: Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the \\(P\\)-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "\n", - "The magnitude of this effect differs among studies, with previous studies reporting increases in mortality rates of 1.3-1.8-fold, whereas the current study reports an OR of 2.45, which corresponds to a 1.78-fold increase. Only one experimental hit study comparing the Olyset Plus with the Olyset Net has been published to date (Pennetier _et al._, 2013). This study, conducted in Benin in 2013, reported mortality rates 1.9-fold higher in the PBO arm than in the conventional LLIN arm (Pennetier _et al._, 2013), which is in line with the findings of the current study, which found a 1.89-fold (OR 2.1) elevation in mortality rates in the Olyset Plus arm.\n", - "\n", - "In addition to increased mortality rates, the current study, plus two of the previous experimental hit studies, reported significantly higher rates of blood feeding inhibition for PBO vs. conventional LLINs (Corbel _et al._, 2010; N'Guessan _et al._, 2010), indicating that PBO LLINs afford an enhanced level of personal protection in areas where vectors are resistant to pyrethroids. It should be noted that the current study was performed using unwashed nets only. Previous studies have found that the efficacy of PBO LLINS against resistant mosquitoes decreases substantially after the nets have been washed 20 times according to WHO protocols (Corbel _et al._, 2010; Tungu _et al._, 2010; Koudou _et al._, 2011). Thus further studies on the durability of the bio-efficacy of PBO LLINS under field conditions are urgently needed.\n", - "\n", - "header: Blood feeding rates and inhibition\n", - "\n", - "Average blood feeding rates were between 17.0% (PermaNet 3.0) and 56.4% (control net) (Table S4). With the exception of the DawaPlus, all treated nets reduced blood feeding (Fig. 4, Table S4), and the effect was most prominent with the PBO nets PermaNet 3.0 and Olyset Plus (Fig. 4, Table S4), for which the odds ratios (ORs) of blood feeding relative to control nets were 0.19 (95% CI 01.3-0.26) and 0.16 (95% CI 0.11-0.23), respectively.\n", - "\n", - "header: Mortality rates and induced mortality\n", - "\n", - "Average mortality rates ranged from 9.5% in the control arm to 46.1% in the PermaNet 3.0 arm (Table S4). Mortality was statistically higher in all treated net conditions than in the control huts. As with blood feeding inhibition, the PBO nets showed the largest effects in increasing mortality (Fig. 5, Table S4); the ORs for mortality relative to control nets were 5.56 (95% CI 3.92-7.89) and 8.14\n", - "Fig. 2: Expression levels of candidate genes previously associated with pyrethroid resistance in Tengrela and Vallée du Kou 5. The analysis was performed using the 2−\n", - "\n", - "\n", - "\n", - "\n", - "(95% CI 5.64-11.75) for the Olyset Plus and PermaNet 3.0, respectively, compared with 2.65 (95% CI 1.87-3.75) and 3.33 (95% CI 2.35-4.74) for the Olyset Net and PermaNet 2.0, respectively.\n", - "\n", - "header: Impact of PBO on LLIN efficacy in pyrethroid-resistant mosquitoes\n", - "\n", - "The performance of nets containing PBO as compared with pyrethroid-only nets from the same manufacturer is shown in Fig. 5. The PermaNet 3.0 deterred more mosquitoes than the PermaNet 2.0 (OR = 0.67, \\(P\\) < 0.01) (Fig. 5, Table S5), but there was no significant difference between the Olyset Plus and Olyset Net (_P_ = 0.412). The Olyset Net induced more exophily than the Olyset Plus (OR = 0.76, \\(P\\) < 0.05), but there was no significant difference in exophily between the PermaNet 2.0 and 3.0 (_P_ = 0.727) (Table S5). The PBO nets from both manufacturers considerably reduced blood feeding compared with non-PBO nets with ORs of 0.34 (_P_ < 0.001) and 0.55 (_P_ < 0.01) for the PermaNet 3.0 and Olyset Plus, respectively (Fig. 5, Table S4). In addition, the PBO nets killed significantly more _An. gambiae s.l._ than the non-PBO nets. The ORs for mortality were 2.45 (_P_ < 0.001) for the PermaNet 3.0 and 2.1 (_P_ < 0.001) for the Olyset Plus (Fig. 5, Table S5).\n", - "\n", - "header: Experimental hut results\n", - "\n", - "In total, 12 915 specimens from four different mosquito genera were collected inside the huts (sleeping rooms and veranda traps) over the 6-week trial (Tengrela, \\(n\\) = 5808; VK5, \\(n\\) = 7107). Most specimens collected from the huts belonged to the _An. gambiae s.l._ species complex, accounting for 75.4% (_n_ = 4379) in Tengrela and 98.8% (_n_ = 7020) in VK5. The second most frequently collected _Anopheles_ species was _An. rhinorensis_, of which 49 and 19 specimens were collected in Tengrela and VK5, respectively. Other _Anopheles_ mosquito species, including _An. funestus_ (_n_ = 3), _An. nili_ (_n_ = 2) and _An. coustani_ (_n_ = 3), were collected in Tengrela. Additional mosquito taxa were also collected, including _Mansonia_ sp. (_n_ = 1330 in Tengrela and \\(n\\) = 45 in VK5), _Culex_ sp. (_n_ = 41 in Tengrela and \\(n\\) = 23 in VK5) and _Aedes_ sp. (_n_ = 1 in Tengrela) (all: Diptera: Culicidae). Because of the low numbers of other genera, only data for _An. gambiae s.l._ were included in the analysis.\n", - "\n", - "Within the total of 11 399 _An. gambiae s.l._ caught at both field sites, there was considerable variation between weeks and treatments in the numbers of mosquitoes entering the huts in both study locations (Fig. 4). The average number of mosquitoes caught per night/per hut was between 13 (PermaNet 3.0) and 20.7 (Olyset Net) mosquitoes (Table S3) and induced deterrence was found only for the Olyset Net, albeit at a low ratio of 1.31 (95% CI 1.02-1.66; \\(P\\) < 0.05) (Fig. 4).\n", - "\n", - "header: Introduction\n", - "\n", - "Use of the longlasting insecticidal net (LLIN) is pivotal in the fight against malaria in Africa. A massive scaling up of the distribution of this commodity has occurred over the past 15 years, with 178 million LLINs delivered for use in sub-Saharan Africa (SSA) in 2015 alone [World Health Organization (WHO), 2016]. Although reliable estimates of LLIN usage are very hard to obtain, the WHO estimates that 53% of the population at risk in SSA slept under an LLIN in 2015 [WHO, 2016]. The results have been dramatic: an estimated 450 million clinical cases of malaria were averted in the last 15 years by the use of LLINs [Bhatt _et al._, 2015].\n", - "\n", - "All LLINs in current use contain pyrethroid insecticides, but there is growing recognition that increases in the prevalence and intensity of pyrethroid resistance, driven at least in part by the scale-up in the use of LLINs, could jeopardize recent gains in malaria control [WHO, 2012]. Direct evidence that pyrethroid\n", - "resistance is reducing either the personal or community-level protection provided by LLINS is challenging to obtain (Kleinschmidt _et al._, 2015; Ranson & Lissenden, 2016), but models of malaria transmission predict that even relatively low levels of resistance can substantially reduce the public health benefits of LILINS (Churcher _et al._, 2016). In countries that rely on the LLIN as the primary malaria prevention tool, the only currently available alternatives to conventional pyrethroid-only LLINS are nets in which the synerigent piperonyl butoxide (PBO) has been included in the fibres making up all, or part, of the net. Piperonyl butoxide inhibits cytochrome P450s, which comprise one of the most important enzyme families involved in pyrethroid resistance, and exposure to PBO has been shown to reduce resistance and sometimes to restore susceptibility to pyrethroids in malaria vectors (Jones _et al._, 2013; Edi _et al._, 2014).\n", - "\n", - "Four brands of LLIN containing PBO have received interim approval from the WHO as conventional LLINS. These are the PermaNet(r) 3.0 (deltamethrin+PBO) (Vestergaard Frandsen Holding SA, Lausanne, Switzerland), the Olvest(r) Plus (permethrin+PBO) (Sumitomo Chemical Asia Pte Ltd, Health and Crop Sciences Sector, Tokyo, Japan), the Veeralin(r) (alpha cypermethrin+PBO) (VKA Polymers Pte Ltd, Karur, India) and the DawaPlus(r) (deltamethrin+PBO) (Tana Netting Co. Ltd, Dubai, U.A.E.). The benefit of the addition of PBO is only expected to manifest in areas in which mosquito populations are resistant to pyrethroids and experimental hut trials of PBO LLINS in areas of resistance have supported this prediction. Increased mosquito mortality was observed in experimental huts containing PBO LLINS compared with conventional LLINS in Ivory Coast, Benin and Burkina Faso (Corbel _et al._, 2010; Ngousso _et al._, 2010; Koudou _et al._, 2011; Pennetier _et al._, 2013) and reductions in blood feeding rates were also reported in trials in the latter two countries. All of these sites reported high levels of pyrethroid resistance.\n", - "\n", - "There has been a dramatic escalation in the strength of pyrethroid resistance in southwestern Burkina Faso since earlier trials of PBO LLINS in 2007. World Health Organization cone bioassays performed in 2012 revealed that none of the conventional LLINS were effective in killing local vector populations and that the performance of the PBO LLIN PermaNet(r) 3.0 was also compromised in these assays (Toe _et al._, 2014). Although the numbers of malaria deaths in Burkina Faso have fallen over the past 10 years, numbers of malaria cases have risen year on year despite countywide LLIN distribution campaigns [National Malaria Control Programme (NMCP), personal communication; K.H.Toe, 2017]. In order to advise the NMCP on whether a switch to PBO LLINS may be warranted to target these highly resistant populations, an experimental hut trial was undertaken in two rice-growing areas in the southwestern region of Burkina Faso.\n", - "\n", - "header: Conclusions\n", - "\n", - "The results of these experimental hit studies with entomological endpoints suggest that substituting conventional LLINs with PBO LLINs in areas where there is a high prevalence of pyrethroid resistance in local vectors may be an effective strategy to maintain the efficacy of malaria vector control. The public health benefit of this would depend on a wide range of factors, including the level of malaria endemicity, LLIN coverage rates and the predominant mosquito vectors present, but a recent modelling exercise predicts that in some settings, a switch to PBO LLINs could aver up to 0.5 clinical cases per person per year (Churcher _et al._, 2016). These predictions from models are now being evaluated in large-scale field trials. A recent study in Tanzania reported a 33% protective efficacy of PBO LLINs over conventional LLINs after 2 years of use (Protopopoff _et al._, 2018). A larger trial, involving the distribution of over 10.7 million nets in Uganda, is evaluating whether PBO nets reduce malaria prevalence under programmatic conditions ([https://www.againstmalaria.com](https://www.againstmalaria.com), [https://www.pmi.gov](https://www.pmi.gov)).\n", - "\n", - "In light of the results from experimental hit studies, including the current study, and after reviewing data from the first clinical trial of a PBO LLIN, the WHO recently made a policy recommendation that national malaria control programmes should consider deployment of PBO LLINs in areas with pyrethroid-resistant vectors (WHO, 2017). If deployed at scale, PBO LLINs may play an important role in reducing the immediate threat of pyrethroid resistance to malaria control.\n", - "\n", - "header: Experimental hut trials\n", - "\n", - "Each station consisted of six experimental huts built according to the West African style (WHO, 2013). The study had six arms that used, respectively, five different LLINs and one net with no insecticide treatment as a negative control (Table 1). The nets were obtained from the manufacturers and were unpacked and kept in the shade for 24 h, but not washed prior to testing. Two of the nets, the OlysetPlus and PermaNet 3.0, contain PBO, whereas the other three LLINs contain only pyrethroids. The LLINs were holed according to WHO standard procedures (WHO, 2013). A total of six holes (4 cm x 4 cm) per net were cut, two on each of the long sides and one on each of the short sides.\n", - "\n", - "Study participants (male sleepers) spent 6 nights per week under a net in an experimental hut from 20.00 hours to 05.00 hours, followed by 1 day of break. The sleepers were rotated through the six huts so that each sleeper spent 1 night per week under each net type. To complete a full Latin square rotation with all combinations of sleeper, net type and hut, the study ran over 36 days from 8 September to 22 October 2014.\n", - "\n", - "Each morning at 05.00 hours, mosquitoes were collected manually by the sleepers, with supervision, from under the net, inside the hut and on the exit veranda. The collected specimens were morphologically identified to genus and, where possible, to species level (Gillies & Coetzee, 1987), grouped according to their gonotrophic stage (blood-fed, unfed or gravid), and scored as dead or alive. Live mosquitoes were transferred to paper cups, provided with 10% sugar water and kept in the insectary described above for 24 h, after which delayed mortality was recorded. All specimens were stored on silica gel for further molecular analysis.\n", - "\n", - "Data analysis was performed in the open-source statistical software R Version 3.3.2 (R Development Core Team, 2011) using the libraries 'lme4' (Bates _et al._, 2012) and 'glmADMB' (Skaug _et al._, 2012) for generalized linear mixed models (GLMMs). Plots were then generated with the package 'ggplot2' (Wickham, 2009).\n", - "\n", - "In the statistical analysis of hut trial data, in order to increase the number of replicates, give more power and increase confidence in the analysis, data collected from both sites (Tengrela and VK5) were pooled and the following four outcomes for _An. coluzzii_ were compared between the LLINs and the untreated control net, as well as between the PBO and non-PBO nets from the same manufacturer: (a) deterrence (i.e. the reduction in hut entry relative to the control or non-PBO net); (b) induced exophily (i.e. the ratio of the odds of a mosquito being found in the veranda trap compared with the hut); (c) blood feeding inhibition (i.e. the ratio of the odds of blood\n", - "\n", - "fed vs. unfed mosquitoes), and (d) induced mortality [i.e. the ratio of the odds of dead vs. alive mosquitoes] (The original dataset for _An. gambiae s.l._ is supplied in Table S2.) Immediate mortality and mortality at 24 h post-collection were combined for the analysis. Deterrence was analysed as the ratio in total numbers between the treatment arms (or PBO net) vs. the control arm (or non-PBO net). The numbers of mosquitoes in the room and the veranda were combined and analysed using a GLMM with a negative binomial distribution and a log link function using the R function 'glmandmdb()' in the 'glmmADMB' package. In the model, the net type was the fixed effect term and random intercepts were introduced for the sleeper and the hut, and a random slope for the day depending on the location. For proportional outcomes of induced exophily, blood feeding inhibition and induced mortality, the negative binomial model was replaced by a GLMM with a binomial distribution and logit link function using the R function 'glmer()' in the 'lme4' package. In the models, in addition to the terms listed above, a random intercept was introduced for each observation to account for unexplained overdispersion. For statistical testing, the level of significance was set at \\(a\\) = 0.05.\n", - "\n", - "In addition to the ratios described above, averages (i.e. the modes) and 95% confidence intervals (CIs) of the crude values underlying the outcomes were computed by the same models as above but using the individual nets as the intercept. These corresponding crude values were: (a) entry rate (i.e. the number of mosquitoes entering a hut); (b) exit rate (i.e. the number of mosquitoes collected from the veranda trap; (c) blood feeding rate (i.e. the proportion of blood-fed mosquitoes), and (d) mortality rate (i.e. the proportion of dead mosquitoes at 24 h post-collection).\n", - "\n", - "The study participants were recruited from the local communities and gave informed consent. Ethical approval was obtained from the Ethical Committee for Health Research of the Ministry of Health and Ministry of Research in Burkina Faso (Deliberation No. 2013-07-057, 11 July 2013). Malaria chemotherapy was not offered to study participants in line with Ministry of Health recommendations. However, medical supervision was provided throughout the study and any malaria case was treated according to national requirements.\n", - "\n", - "header: Study sites: Characterization of mosquito populations\n", - "\n", - "_Anopheles gambiae s.l._ larvae were collected in Tengrela and VK5 and reared to adults in local insectaries (mean relative humidity: 75+- 10%; mean temperature: 27+- 2*C). To assess susceptibility to pyrethroids, batches of approximately 25 non-blood-fed _An. gambiae s.l._ females aged 3-5 days were exposed to papers treated with 0.75% permethrin or 0.05% deltamethrin. The papers and susceptibility test kits were purchased from the Universiti Sains Malaysia (Penang, Malaysia). In parallel bioassays, mosquitoes were exposed to papers treated with 4% PBO [prepared by the Liverpool School of Tropical Medicine (LSTM)] for 1 h before they were transferred to tubes containing either insecticide-treated papers or insecticide-free papers and exposed for a further 1 h. Knock-down was recorded at the end of exposure and mortality was recorded 24 h later.\n", - "\n", - "The bio-efficacy of the LLINS was tested using non-blood-fed mosquitoes aged 3-5 days from local larval collections, and from the Kisumu susceptible laboratory strain, using the WHO cone bioassay procedure (WHO, 2013). For each LLIN type, two unwashed nets were tested under insectary conditions. Ten mosquitoes per cone were exposed for 3 min to 30 cm x 30 cm net pieces sampled from the top, the short and the long sides of the net. During exposure, the set-up was kept at an angle of 45 degrees as recommended (Owusu & Muller, 2016). Knock-down and mortality were recorded at 60 min and 24 h after exposure, respectively. Conventional LLINs were compared with PBO LLINS using Fisher's exact test (2x2 contingency table, significance level of 0.05) (http://wwwgraphpadcom/quickcales/contingency2) (Roberts & Andre, 1994).\n", - "\n", - "header: Pyrethroid resistance in southwest Burkina Faso: Bio-efficacy of LLINs in cone bioassays\n", - "\n", - "The low levels of mortality observed in cone bioassays in this study are similar to those reported previously in VK7, a neighbouring village to VK5, in the Vallee du Kou rice-growing region. However, whereas the current study found that exposure to the tops of the PermaNet 3.0 nets resulted in mortality levels exceeding the WHO threshold of 80%, equivalent bioassays conducted in the VK7 population in 2012 showed mortality of only 43%. Cone bioassays are not a reliable method of comparing the performance of LLINs containing different pyrethroids because of the inherent differences in extico-repellency within this class, which can affect exposure time (Siegert _et al._, 2009). In particular, cone tests may underestimate the performance of permethrin LLINs; this is indicated by comparison of the cone bioassay results in Fig. 3, in which the Olyset Net was found to induce considerably lower mortality than the PermaNet 2.0, although experimental hut results showed similar levels of mortality in huts with these two net types (Table S3).\n", - "\n", - "Fig. 3: Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (_P_ < 0.001), † (_P_ < 0.0001), n.s. (non-significant, \\(\\frac{1}{2}\\) (_P_ < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wicyclonlinelibrary.com].\n", - "\n", - "\n", - "Nevertheless, the results of these cone bioassays provide further evidence that resistance can be at least partially ameliorated by exposure to PBO.\n", - "\n", - "header: _Pyrethroid resistance in Tengrela and VK5 and associated mechanisms_: Efficacy of LLINs under laboratory conditions\n", - "\n", - "All LLINs tested showed good bio-efficacy in cone bioassays against the susceptible laboratory Kisumu strain with 60 min knock-down and 24 h mortality rates of all LLINs above the 98% and 80% WHO thresholds (WHO, 2005) (Table S1). By contrast, in tests using the field-caught mosquitoes, the mortality threshold was met only by the top panels of the PermaNet 3.0 (Fig. 3). Knock-down rates exceeded the 98% threshold for the PermaNet 3.0 in VK5 only (Table S1).\n", - "\n", - "header: Materials and methods\n", - "\n", - "The experimental hut studies were carried out at two field stations in southwest Burkina Faso: the first is located in the Vallee du Kou.5 (VK5) near Bobo-Dioulasso (11*39' N, 04*41' W) and belongs to the Institut de Recherche en Science de la Sante (IRSS)/Centre MURAZ, and the second is located at Tengrela (10*40' N, 04*50' W) near Banfora and is maintained by the Centre National de Recherche et de Formation sur le Paludisme (CNRFP). These two sites are separated by approximately 120 km. Previous surveys revealed _Anopheles coluzzii_ (formerly _Anopheles gambiae s.s._ M molecular form) to be the predominant _Anopheles_ species at both sites. High levels of resistance to both DDT and pyrethroids have been reported previously at both sites (Ngufor _et al._, 2014; Toe _et al._, 2015).\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Supporting Information\n", - "\n", - "Additional supporting information may be found online in the Supporting Information section at the end of the article.\n", - "\n", - "Fig. 5: Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hit relative to the control hit. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "header: Table 1: Treatment arms and descriptions of longlasting insecticide-treated nets.\n", - "footer: PermaNet is a registered trademark of Vestergaard Frandsen Holding SA. Olyset is a registered trademark of Sumitomo Chemical Co. Ltd. DawaPlusis a registered trademark of Tana Netting Co. Ltd.PBO, piperonyl butoxide.\n", - "columns: ['Treatment arm', 'Description', 'Manufacturer']\n", - "\n", - "{\"0\":{\"Treatment arm\":\"Untreated net\",\"Description\":\"Net manufactured manually using netting material from market\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment arm\":\"Olyset\\u00ae Net\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment arm\":\"Olyset\\u00ae Plus\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin and 4.3 x 10-4 kg\\/m2 of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment arm\":\"PermaNet\\u00ae 2.0\",\"Description\":\"5.5 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"4\":{\"Treatment arm\":\"PermaNet\\u00ae 3.0\",\"Description\":\"Combination of 2.8 g\\/kg of deltamethrin coated on polyester with strengthened border (side panels) and deltamethrin (4.0 g\\/kg) and PBO (25 g\\/kg)\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"5\":{\"Treatment arm\":\"Dawa\\u00ae Plus 2.0\",\"Description\":\"8.0 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"TANA Netting\"}}\n", - "\n", - "header: Entry rate and deterrence: Exit rates and induced exophily\n", - "\n", - "Exit rates refer here to the proportion of mosquitoes present in the veranda trap. As with entrance rates, exit rates varied throughout the study (Fig. 4). On average, the induced exophily rates were between 26.4% (control net) and 48.5% (Olyset Net) (Table S4). The odds of finding a mosquito in the veranda trap were significantly increased in the huts with treated nets, with the exception of the DawaPlus, although even for the DawaPlus a tendency to induce exophily was observed (Fig. 4, Table S4).\n", - "\n", - "header: Discussion\n", - "\n", - "Very low mortality rates were obtained for both permethrin and deltamethrin in the two study sites following an hour of exposure to WHO diagnostic doses. Southwestern Burkina Faso is known as a hotspot of pyrethroid resistance (Dabire _et al._, 2012; Namountougou _et al._, 2012). Rapid changes in the prevalence of pyrethroid resistance have been observed since the first national LLIN distribution programme in 2010: in 2009, mosquito mortality following deltamethrin exposure was 25% (Dabire _et al._, 2012), in VK has since fallen to just 2.5%. The frequency of the 1014F _kdr_ mutation also increased from 0.28 in 2006 (Dabire _et al._, 2009) to 0.88 in the current study. Similar increases in the prevalence of pyrethroid resistance have been witnessed in Tengrela. Mortality rates of 93% and 46% for deltamethrin and permethrin, respectively, were recorded in 2011 (Namountougou _et al._, 2012; K. H. Toe, unpublished data 2011), but these mortality rates had reduced to 33% and 13% in 2014, the year of the current study (Toe _et al._, 2015). In the present study, pyrethroid mortality was significantly increased by pre-exposure to PBO. This, together with the qPCR data showing elevated expression of multiple P450s in both field populations compared with a susceptible laboratory strain, indicate that oxidases are an important resistance mechanism in _An. coluzzi_ in southwestern Burkina Faso. It is noted that resistance was not fully restored by PBO pre-exposure, indicating that additional resistance mechanisms, such as target site resistance and possibly cuticular modifications (Toe _et al._, 2015), may contribute to the pyrethroid resistance phenotype in these populations.\n", - "\n", - "header: Abstract\n", - "\n", - "Do bednets including piperonyl butoxide offer additional protection against populations of _Anopheles gambiae s.l._ that are highly resistant to pyrethroids? An experimental hut evaluation in Burkina Faso\n", - "\n", - "K. H. T oe\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " P. Muller\n", - "\n", - "2H233\n", - "\n", - "33Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " A. Badlo\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " A. Traore\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " N. Sagnon\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " R. K. Dabi Irene\n", - "\n", - "4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " H. Ransons\n", - "\n", - "5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - "\n", - "Malaria control is dependent on the use of longlasting insecticidal nets (LLINs) containing pyrethroids. A new generation of LLINs containing both pyrethroids and the synergist piperonyl butoxide (PBO) has been developed in response to increasing pyrethroid resistance in African malaria vectors, but questions remain about the performance of these nets in areas where levels of pyrethroid resistance are very high. This study was conducted in two settings in southwest Burkina Faso, Vallee du Kou 5 and Tengrela, where _Anopheles gambiae s.l._ (Diptera: Culicidae) mortality rates in World Health Organization (WHO) discriminating dose assays were \\(<\\) 14% for permethrin and \\(<\\) 33% for delatamethrin. When mosquitoes were pre-exposed to PBO in WHO tube assays, mortality rates increased substantially but full susceptibility was not restored. Molecular characterization revealed high levels of _kdr_ alleles and elevated levels of P450s previously implicated in pyrethroid resistance. In cone bioassays and experimental huts, PBO LLINs outperformed the pyrethroid-only equivalents from the same manufacturers. Blood feeding rates were 1.6-2.2-fold lower and mortality rates were 1.69-1.78-fold greater in huts with PBO LLINs vs. non-PBO LLINs. This study indicates that PBO LLINs provide greater personal and community-level protection than standard LLINs against highly pyrethroid-resistant mosquito populations.\n", - "\n", - " insecticide resistance, insecticide resistance management, longlasting insecticidal nets, PBO.\n", - "\n", - "header: Performance of PBO LLINs in experimental hut studies\n", - "\n", - "The enhanced performance of PBO-containing LLINs over conventional LLINs was further supported by the experimental hut results. Both blood feeding inhibition and mortality rates were significantly higher in huts containing PBO LLINs than in those containing conventional LLINs from the same manufacturers. An improved performance of the PermaNet 3.0, which contains both higher concentrations of deltamethrin compared with the PermaNet 2.0, plus PBO on the roof of the net, has also been reported in pyrethroid-resistant populations of malaria vectors in Ivory Coast (Koudou _et al._, 2011), Benin (N'Guessan _et al._, 2010) and Burkina Faso (Corbel _et al._, 2010).\n", - "\n", - "Fig. 4: Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the \\(P\\)-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "\n", - "The magnitude of this effect differs among studies, with previous studies reporting increases in mortality rates of 1.3-1.8-fold, whereas the current study reports an OR of 2.45, which corresponds to a 1.78-fold increase. Only one experimental hit study comparing the Olyset Plus with the Olyset Net has been published to date (Pennetier _et al._, 2013). This study, conducted in Benin in 2013, reported mortality rates 1.9-fold higher in the PBO arm than in the conventional LLIN arm (Pennetier _et al._, 2013), which is in line with the findings of the current study, which found a 1.89-fold (OR 2.1) elevation in mortality rates in the Olyset Plus arm.\n", - "\n", - "In addition to increased mortality rates, the current study, plus two of the previous experimental hit studies, reported significantly higher rates of blood feeding inhibition for PBO vs. conventional LLINs (Corbel _et al._, 2010; N'Guessan _et al._, 2010), indicating that PBO LLINs afford an enhanced level of personal protection in areas where vectors are resistant to pyrethroids. It should be noted that the current study was performed using unwashed nets only. Previous studies have found that the efficacy of PBO LLINS against resistant mosquitoes decreases substantially after the nets have been washed 20 times according to WHO protocols (Corbel _et al._, 2010; Tungu _et al._, 2010; Koudou _et al._, 2011). Thus further studies on the durability of the bio-efficacy of PBO LLINS under field conditions are urgently needed.\n", - "\n", - "header: Blood feeding rates and inhibition\n", - "\n", - "Average blood feeding rates were between 17.0% (PermaNet 3.0) and 56.4% (control net) (Table S4). With the exception of the DawaPlus, all treated nets reduced blood feeding (Fig. 4, Table S4), and the effect was most prominent with the PBO nets PermaNet 3.0 and Olyset Plus (Fig. 4, Table S4), for which the odds ratios (ORs) of blood feeding relative to control nets were 0.19 (95% CI 01.3-0.26) and 0.16 (95% CI 0.11-0.23), respectively.\n", - "\n", - "header: Results\n", - "\n", - "In VK5, very low levels of mortality were observed after exposure to the discriminating dose of deltamethrin and permethrin, but pre-exposure to PBO significantly increased mortality rates from 2.5% (_n_ = 163) to 45% (_n_ = 158) and from 5% (_n_ = 153) to 26% (_n_ = 156) for deltamethrin and permethrin, respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig. 1). In Tengrela, mortality rates of 34% (_n_ = 85) and 14% (_n_ = 101) were recorded for deltamethrin and permethrin, respectively. When PBO was used, mortality rates increased significantly to 63% (_n_ = 84) and 42% (_n_ = 104), respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig.1). Although there was evidence of synergism, pre-exposure to PBO did not fully restore susceptibility in either site to either pyrethroid.\n", - "\n", - "_Anopheles coluzzi_ was the only species of the _An. gambiae_ complex identified by PCR of a subset of 80 specimens from Tengrela and VK5. High frequencies of the 1014F allele of the VGSC were recorded in Tengrela (0.819, 95% CI 0.750-0.875) and VK5 (0.885, 95% CI 0.824-0.930) with the 1575Y allele present at lower frequencies of 0.169 (95% CI 0.114-0.236) and 0.221 (95% CI 0.158-0.295), respectively. Samples were not genotyped for the 1014S allele as previous extensive surveys have not detected this allele in _An. coluzzi_ from these sites (Toe _et al._, 2015). There was no statistically significant difference in the frequency of either the 1014F or 1575Y allele between the two sites (Table 2).\n", - "\n", - "Several cytochrome P450 genes previously associated with pyrethroid resistance showed elevated expression levels in the Tengrela and the VK5 _An. coluzzi_ populations compared with the susceptible laboratory Ngousso strain (Fig. 2). _CYP6P3_, _CYP6M2_, _CYP6Z3_, _CYP6P4_ and _CYP6Z2_ were found to be\n", - "\n", - "Fig. 1: Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: \\(P\\) < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "\n", - "overexpressed in both field strains compared with the susceptible laboratory colony (fold change: > 2) with the most highly overexpressed genes in both populations being _CYP6Z2_ and _CYP6Z3_ (Fig. 2).\n", - "\n", - "header: Mortality rates and induced mortality\n", - "\n", - "Average mortality rates ranged from 9.5% in the control arm to 46.1% in the PermaNet 3.0 arm (Table S4). Mortality was statistically higher in all treated net conditions than in the control huts. As with blood feeding inhibition, the PBO nets showed the largest effects in increasing mortality (Fig. 5, Table S4); the ORs for mortality relative to control nets were 5.56 (95% CI 3.92-7.89) and 8.14\n", - "Fig. 2: Expression levels of candidate genes previously associated with pyrethroid resistance in Tengrela and Vallée du Kou 5. The analysis was performed using the 2−\n", - "\n", - "\n", - "\n", - "\n", - "(95% CI 5.64-11.75) for the Olyset Plus and PermaNet 3.0, respectively, compared with 2.65 (95% CI 1.87-3.75) and 3.33 (95% CI 2.35-4.74) for the Olyset Net and PermaNet 2.0, respectively.\n", - "\n", - "header: Molecular analysis\n", - "\n", - "DNA was extracted from mosquito legs by heating at 90*C for 30 min. Species were identified using the SINE200 protocol (Santolamazza _et al._, 2008) and then screened for the voltage gated sodium channel (VGSC) 1014F and 1575Y alleles using Taqman assays (Bass _et al._, 2007; Jones _et al._, 2012).\n", - "\n", - "Total RNA was extracted from six pools of 10 5-day-old non-blood-fed female _An. coluzzii_ from larval collections from Tengrela and VK5 using the RNAqueous(r)4PCR Kit for isolation of DNA-free RNA (Ambion, Inc., Austin, TX, U.S.A.) according to the manufacturer's procedures. The RNA was eluted in 50 mL of elution solution and treated with DNase. The quality and quantity of all the RNA used were assessed \n", - "using a NanoDrop ND1000 (Thermo Fisher Scientific UK Ltd, Renfrew, U.K.).\n", - "\n", - "The expression profiles of five P450 genes (_CYP6M2_, _CYP6Z2_, _CYP6Z3_, _CYP6P3_, _CYP6P4_), previously found to be over-expressed in pyrethroid-resistant field populations from Burkina Faso (Toe _et al._, 2015) and/or known to metabolize pyrethroids (Muller _et al._, 2008; Mitchell _et al._, 2012) were quantified using reverse-transcription quantitative polymerase chain reaction (RT-qPCR). The qPCR analysis was conducted at the LSTM and used the following mosquito populations: Ngousso, an insecticide-susceptible strain originating from Ngousso in Cameroon in 2006 and maintained in the insectary at LSTM; Tengrela specimens reared from larval collections in October-November 2014, and VK5 specimens reared from larval collections in October-November 2014. Approximately 600 ng of RNA was reverse-transcribed to first-strand cDNA using SuperScript(tm) III reverse transcriptase (Invitrogen, Inc., Carlsbad, CA, U.S.A.) according to the manufacturer's procedures. Samples were then purified using the Qiagen Easy Purification Kit (Qiagen Benelux BV, Venlo, the Netherlands) before proceeding to qPCR. Each of the six pool replicates were run in triplicate using 2X SYBR Brilliant III (Agilent Technologies, Inc., Palo Alto, CA, U.S.A.), forward and reverse primers (300 nM) [sequence available in Toe _et al._ (2015)] on the Mx3005p qPCR system (Agilent Technologies, Inc., Palo Alto, California) with the following cycling protocol: 95 degC for 3 min, followed by 40 cycles of 95 degC for 10 s and 60 degC for 10 s. The qPCR data were analysed using the delta Ct values method, taking into account the PCR efficiency (Pfaffi, 2001). The candidate Ct values were normalized against three housekeeping genes, encoding ribosomal protein L40 (ubiquitin) (_AGAP007927_), an elongation factor (_AGAP005128_) and the S7 ribosomal protein (_AGAP010592_). The normalized Ct values of each gene were then compared with the normalized Ct values of the susceptible Ngousso strain.\n", - "\n", - "header: Conclusions\n", - "\n", - "The results of these experimental hit studies with entomological endpoints suggest that substituting conventional LLINs with PBO LLINs in areas where there is a high prevalence of pyrethroid resistance in local vectors may be an effective strategy to maintain the efficacy of malaria vector control. The public health benefit of this would depend on a wide range of factors, including the level of malaria endemicity, LLIN coverage rates and the predominant mosquito vectors present, but a recent modelling exercise predicts that in some settings, a switch to PBO LLINs could aver up to 0.5 clinical cases per person per year (Churcher _et al._, 2016). These predictions from models are now being evaluated in large-scale field trials. A recent study in Tanzania reported a 33% protective efficacy of PBO LLINs over conventional LLINs after 2 years of use (Protopopoff _et al._, 2018). A larger trial, involving the distribution of over 10.7 million nets in Uganda, is evaluating whether PBO nets reduce malaria prevalence under programmatic conditions ([https://www.againstmalaria.com](https://www.againstmalaria.com), [https://www.pmi.gov](https://www.pmi.gov)).\n", - "\n", - "In light of the results from experimental hit studies, including the current study, and after reviewing data from the first clinical trial of a PBO LLIN, the WHO recently made a policy recommendation that national malaria control programmes should consider deployment of PBO LLINs in areas with pyrethroid-resistant vectors (WHO, 2017). If deployed at scale, PBO LLINs may play an important role in reducing the immediate threat of pyrethroid resistance to malaria control.\n", - "\n", - "header: Impact of PBO on LLIN efficacy in pyrethroid-resistant mosquitoes\n", - "\n", - "The performance of nets containing PBO as compared with pyrethroid-only nets from the same manufacturer is shown in Fig. 5. The PermaNet 3.0 deterred more mosquitoes than the PermaNet 2.0 (OR = 0.67, \\(P\\) < 0.01) (Fig. 5, Table S5), but there was no significant difference between the Olyset Plus and Olyset Net (_P_ = 0.412). The Olyset Net induced more exophily than the Olyset Plus (OR = 0.76, \\(P\\) < 0.05), but there was no significant difference in exophily between the PermaNet 2.0 and 3.0 (_P_ = 0.727) (Table S5). The PBO nets from both manufacturers considerably reduced blood feeding compared with non-PBO nets with ORs of 0.34 (_P_ < 0.001) and 0.55 (_P_ < 0.01) for the PermaNet 3.0 and Olyset Plus, respectively (Fig. 5, Table S4). In addition, the PBO nets killed significantly more _An. gambiae s.l._ than the non-PBO nets. The ORs for mortality were 2.45 (_P_ < 0.001) for the PermaNet 3.0 and 2.1 (_P_ < 0.001) for the Olyset Plus (Fig. 5, Table S5).\n", - "\n", - "header: Introduction\n", - "\n", - "Use of the longlasting insecticidal net (LLIN) is pivotal in the fight against malaria in Africa. A massive scaling up of the distribution of this commodity has occurred over the past 15 years, with 178 million LLINs delivered for use in sub-Saharan Africa (SSA) in 2015 alone [World Health Organization (WHO), 2016]. Although reliable estimates of LLIN usage are very hard to obtain, the WHO estimates that 53% of the population at risk in SSA slept under an LLIN in 2015 [WHO, 2016]. The results have been dramatic: an estimated 450 million clinical cases of malaria were averted in the last 15 years by the use of LLINs [Bhatt _et al._, 2015].\n", - "\n", - "All LLINs in current use contain pyrethroid insecticides, but there is growing recognition that increases in the prevalence and intensity of pyrethroid resistance, driven at least in part by the scale-up in the use of LLINs, could jeopardize recent gains in malaria control [WHO, 2012]. Direct evidence that pyrethroid\n", - "resistance is reducing either the personal or community-level protection provided by LLINS is challenging to obtain (Kleinschmidt _et al._, 2015; Ranson & Lissenden, 2016), but models of malaria transmission predict that even relatively low levels of resistance can substantially reduce the public health benefits of LILINS (Churcher _et al._, 2016). In countries that rely on the LLIN as the primary malaria prevention tool, the only currently available alternatives to conventional pyrethroid-only LLINS are nets in which the synerigent piperonyl butoxide (PBO) has been included in the fibres making up all, or part, of the net. Piperonyl butoxide inhibits cytochrome P450s, which comprise one of the most important enzyme families involved in pyrethroid resistance, and exposure to PBO has been shown to reduce resistance and sometimes to restore susceptibility to pyrethroids in malaria vectors (Jones _et al._, 2013; Edi _et al._, 2014).\n", - "\n", - "Four brands of LLIN containing PBO have received interim approval from the WHO as conventional LLINS. These are the PermaNet(r) 3.0 (deltamethrin+PBO) (Vestergaard Frandsen Holding SA, Lausanne, Switzerland), the Olvest(r) Plus (permethrin+PBO) (Sumitomo Chemical Asia Pte Ltd, Health and Crop Sciences Sector, Tokyo, Japan), the Veeralin(r) (alpha cypermethrin+PBO) (VKA Polymers Pte Ltd, Karur, India) and the DawaPlus(r) (deltamethrin+PBO) (Tana Netting Co. Ltd, Dubai, U.A.E.). The benefit of the addition of PBO is only expected to manifest in areas in which mosquito populations are resistant to pyrethroids and experimental hut trials of PBO LLINS in areas of resistance have supported this prediction. Increased mosquito mortality was observed in experimental huts containing PBO LLINS compared with conventional LLINS in Ivory Coast, Benin and Burkina Faso (Corbel _et al._, 2010; Ngousso _et al._, 2010; Koudou _et al._, 2011; Pennetier _et al._, 2013) and reductions in blood feeding rates were also reported in trials in the latter two countries. All of these sites reported high levels of pyrethroid resistance.\n", - "\n", - "There has been a dramatic escalation in the strength of pyrethroid resistance in southwestern Burkina Faso since earlier trials of PBO LLINS in 2007. World Health Organization cone bioassays performed in 2012 revealed that none of the conventional LLINS were effective in killing local vector populations and that the performance of the PBO LLIN PermaNet(r) 3.0 was also compromised in these assays (Toe _et al._, 2014). Although the numbers of malaria deaths in Burkina Faso have fallen over the past 10 years, numbers of malaria cases have risen year on year despite countywide LLIN distribution campaigns [National Malaria Control Programme (NMCP), personal communication; K.H.Toe, 2017]. In order to advise the NMCP on whether a switch to PBO LLINS may be warranted to target these highly resistant populations, an experimental hut trial was undertaken in two rice-growing areas in the southwestern region of Burkina Faso.\n", - "\n", - "header: Pyrethroid resistance in southwest Burkina Faso: Bio-efficacy of LLINs in cone bioassays\n", - "\n", - "The low levels of mortality observed in cone bioassays in this study are similar to those reported previously in VK7, a neighbouring village to VK5, in the Vallee du Kou rice-growing region. However, whereas the current study found that exposure to the tops of the PermaNet 3.0 nets resulted in mortality levels exceeding the WHO threshold of 80%, equivalent bioassays conducted in the VK7 population in 2012 showed mortality of only 43%. Cone bioassays are not a reliable method of comparing the performance of LLINs containing different pyrethroids because of the inherent differences in extico-repellency within this class, which can affect exposure time (Siegert _et al._, 2009). In particular, cone tests may underestimate the performance of permethrin LLINs; this is indicated by comparison of the cone bioassay results in Fig. 3, in which the Olyset Net was found to induce considerably lower mortality than the PermaNet 2.0, although experimental hut results showed similar levels of mortality in huts with these two net types (Table S3).\n", - "\n", - "Fig. 3: Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (_P_ < 0.001), † (_P_ < 0.0001), n.s. (non-significant, \\(\\frac{1}{2}\\) (_P_ < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wicyclonlinelibrary.com].\n", - "\n", - "\n", - "Nevertheless, the results of these cone bioassays provide further evidence that resistance can be at least partially ameliorated by exposure to PBO.\n", - "\n", - "header: Experimental hut trials\n", - "\n", - "Each station consisted of six experimental huts built according to the West African style (WHO, 2013). The study had six arms that used, respectively, five different LLINs and one net with no insecticide treatment as a negative control (Table 1). The nets were obtained from the manufacturers and were unpacked and kept in the shade for 24 h, but not washed prior to testing. Two of the nets, the OlysetPlus and PermaNet 3.0, contain PBO, whereas the other three LLINs contain only pyrethroids. The LLINs were holed according to WHO standard procedures (WHO, 2013). A total of six holes (4 cm x 4 cm) per net were cut, two on each of the long sides and one on each of the short sides.\n", - "\n", - "Study participants (male sleepers) spent 6 nights per week under a net in an experimental hut from 20.00 hours to 05.00 hours, followed by 1 day of break. The sleepers were rotated through the six huts so that each sleeper spent 1 night per week under each net type. To complete a full Latin square rotation with all combinations of sleeper, net type and hut, the study ran over 36 days from 8 September to 22 October 2014.\n", - "\n", - "Each morning at 05.00 hours, mosquitoes were collected manually by the sleepers, with supervision, from under the net, inside the hut and on the exit veranda. The collected specimens were morphologically identified to genus and, where possible, to species level (Gillies & Coetzee, 1987), grouped according to their gonotrophic stage (blood-fed, unfed or gravid), and scored as dead or alive. Live mosquitoes were transferred to paper cups, provided with 10% sugar water and kept in the insectary described above for 24 h, after which delayed mortality was recorded. All specimens were stored on silica gel for further molecular analysis.\n", - "\n", - "Data analysis was performed in the open-source statistical software R Version 3.3.2 (R Development Core Team, 2011) using the libraries 'lme4' (Bates _et al._, 2012) and 'glmADMB' (Skaug _et al._, 2012) for generalized linear mixed models (GLMMs). Plots were then generated with the package 'ggplot2' (Wickham, 2009).\n", - "\n", - "In the statistical analysis of hut trial data, in order to increase the number of replicates, give more power and increase confidence in the analysis, data collected from both sites (Tengrela and VK5) were pooled and the following four outcomes for _An. coluzzii_ were compared between the LLINs and the untreated control net, as well as between the PBO and non-PBO nets from the same manufacturer: (a) deterrence (i.e. the reduction in hut entry relative to the control or non-PBO net); (b) induced exophily (i.e. the ratio of the odds of a mosquito being found in the veranda trap compared with the hut); (c) blood feeding inhibition (i.e. the ratio of the odds of blood\n", - "\n", - "fed vs. unfed mosquitoes), and (d) induced mortality [i.e. the ratio of the odds of dead vs. alive mosquitoes] (The original dataset for _An. gambiae s.l._ is supplied in Table S2.) Immediate mortality and mortality at 24 h post-collection were combined for the analysis. Deterrence was analysed as the ratio in total numbers between the treatment arms (or PBO net) vs. the control arm (or non-PBO net). The numbers of mosquitoes in the room and the veranda were combined and analysed using a GLMM with a negative binomial distribution and a log link function using the R function 'glmandmdb()' in the 'glmmADMB' package. In the model, the net type was the fixed effect term and random intercepts were introduced for the sleeper and the hut, and a random slope for the day depending on the location. For proportional outcomes of induced exophily, blood feeding inhibition and induced mortality, the negative binomial model was replaced by a GLMM with a binomial distribution and logit link function using the R function 'glmer()' in the 'lme4' package. In the models, in addition to the terms listed above, a random intercept was introduced for each observation to account for unexplained overdispersion. For statistical testing, the level of significance was set at \\(a\\) = 0.05.\n", - "\n", - "In addition to the ratios described above, averages (i.e. the modes) and 95% confidence intervals (CIs) of the crude values underlying the outcomes were computed by the same models as above but using the individual nets as the intercept. These corresponding crude values were: (a) entry rate (i.e. the number of mosquitoes entering a hut); (b) exit rate (i.e. the number of mosquitoes collected from the veranda trap; (c) blood feeding rate (i.e. the proportion of blood-fed mosquitoes), and (d) mortality rate (i.e. the proportion of dead mosquitoes at 24 h post-collection).\n", - "\n", - "The study participants were recruited from the local communities and gave informed consent. Ethical approval was obtained from the Ethical Committee for Health Research of the Ministry of Health and Ministry of Research in Burkina Faso (Deliberation No. 2013-07-057, 11 July 2013). Malaria chemotherapy was not offered to study participants in line with Ministry of Health recommendations. However, medical supervision was provided throughout the study and any malaria case was treated according to national requirements.\n", - "\n", - "header: _Pyrethroid resistance in Tengrela and VK5 and associated mechanisms_: Efficacy of LLINs under laboratory conditions\n", - "\n", - "All LLINs tested showed good bio-efficacy in cone bioassays against the susceptible laboratory Kisumu strain with 60 min knock-down and 24 h mortality rates of all LLINs above the 98% and 80% WHO thresholds (WHO, 2005) (Table S1). By contrast, in tests using the field-caught mosquitoes, the mortality threshold was met only by the top panels of the PermaNet 3.0 (Fig. 3). Knock-down rates exceeded the 98% threshold for the PermaNet 3.0 in VK5 only (Table S1).\n", - "\n", - "header: Experimental hut results\n", - "\n", - "In total, 12 915 specimens from four different mosquito genera were collected inside the huts (sleeping rooms and veranda traps) over the 6-week trial (Tengrela, \\(n\\) = 5808; VK5, \\(n\\) = 7107). Most specimens collected from the huts belonged to the _An. gambiae s.l._ species complex, accounting for 75.4% (_n_ = 4379) in Tengrela and 98.8% (_n_ = 7020) in VK5. The second most frequently collected _Anopheles_ species was _An. rhinorensis_, of which 49 and 19 specimens were collected in Tengrela and VK5, respectively. Other _Anopheles_ mosquito species, including _An. funestus_ (_n_ = 3), _An. nili_ (_n_ = 2) and _An. coustani_ (_n_ = 3), were collected in Tengrela. Additional mosquito taxa were also collected, including _Mansonia_ sp. (_n_ = 1330 in Tengrela and \\(n\\) = 45 in VK5), _Culex_ sp. (_n_ = 41 in Tengrela and \\(n\\) = 23 in VK5) and _Aedes_ sp. (_n_ = 1 in Tengrela) (all: Diptera: Culicidae). Because of the low numbers of other genera, only data for _An. gambiae s.l._ were included in the analysis.\n", - "\n", - "Within the total of 11 399 _An. gambiae s.l._ caught at both field sites, there was considerable variation between weeks and treatments in the numbers of mosquitoes entering the huts in both study locations (Fig. 4). The average number of mosquitoes caught per night/per hut was between 13 (PermaNet 3.0) and 20.7 (Olyset Net) mosquitoes (Table S3) and induced deterrence was found only for the Olyset Net, albeit at a low ratio of 1.31 (95% CI 1.02-1.66; \\(P\\) < 0.05) (Fig. 4).\n", - "\n", - "header: Table 2: Frequencies of 1014F and 1575Y kdr alleles in Anopheles coluzzili, in Tengrela and Vallée du Kou 5 (VK5).\n", - "footer: Chi-squared test (http://vassarstats.net/) for the comparison of the frequency of the 1014F and 1575Y mutations in Anopheles coluzzili populations from Tengrela and VK5 (October 2014). No statistical difference was observed in the frequencies of the kdr alleles in the two sites.\n", - "columns: ['1014F mutation - Unnamed: 0_level_1', '1014F mutation - Total n', '1014F mutation - LL', '1014F mutation - LF', '1014F mutation - FF', '1014F mutation - f (1014F)', '1014F mutation - P-value']\n", - "\n", - "{\"0\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"2\",\"1014F mutation - LF\":\"25\",\"1014F mutation - FF\":\"53\",\"1014F mutation - f (1014F)\":\"0.819\",\"1014F mutation - P-value\":\"0.26\"},\"1\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"78\",\"1014F mutation - LL\":\"0\",\"1014F mutation - LF\":\"18\",\"1014F mutation - FF\":\"60\",\"1014F mutation - f (1014F)\":\"0.885\",\"1014F mutation - P-value\":null},\"2\":{\"1014F mutation - Unnamed: 0_level_1\":\"1575Y mutation\",\"1014F mutation - Total n\":\"1575Y mutation\",\"1014F mutation - LL\":\"1575Y mutation\",\"1014F mutation - LF\":\"1575Y mutation\",\"1014F mutation - FF\":\"1575Y mutation\",\"1014F mutation - f (1014F)\":\"1575Y mutation\",\"1014F mutation - P-value\":\"1575Y mutation\"},\"3\":{\"1014F mutation - Unnamed: 0_level_1\":null,\"1014F mutation - Total n\":\"Total n\",\"1014F mutation - LL\":\"NN\",\"1014F mutation - LF\":\"NY\",\"1014F mutation - FF\":\"YY\",\"1014F mutation - f (1014F)\":\"f (A575Y)\",\"1014F mutation - P-value\":\"P-value\"},\"4\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"57\",\"1014F mutation - LF\":\"19\",\"1014F mutation - FF\":\"4\",\"1014F mutation - f (1014F)\":\"0.169\",\"1014F mutation - P-value\":\"0.39\"},\"5\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"77\",\"1014F mutation - LL\":\"49\",\"1014F mutation - LF\":\"22\",\"1014F mutation - FF\":\"6\",\"1014F mutation - f (1014F)\":\"0.221\",\"1014F mutation - P-value\":null}}\n", - "\n", - "header: Study sites: Characterization of mosquito populations\n", - "\n", - "_Anopheles gambiae s.l._ larvae were collected in Tengrela and VK5 and reared to adults in local insectaries (mean relative humidity: 75+- 10%; mean temperature: 27+- 2*C). To assess susceptibility to pyrethroids, batches of approximately 25 non-blood-fed _An. gambiae s.l._ females aged 3-5 days were exposed to papers treated with 0.75% permethrin or 0.05% deltamethrin. The papers and susceptibility test kits were purchased from the Universiti Sains Malaysia (Penang, Malaysia). In parallel bioassays, mosquitoes were exposed to papers treated with 4% PBO [prepared by the Liverpool School of Tropical Medicine (LSTM)] for 1 h before they were transferred to tubes containing either insecticide-treated papers or insecticide-free papers and exposed for a further 1 h. Knock-down was recorded at the end of exposure and mortality was recorded 24 h later.\n", - "\n", - "The bio-efficacy of the LLINS was tested using non-blood-fed mosquitoes aged 3-5 days from local larval collections, and from the Kisumu susceptible laboratory strain, using the WHO cone bioassay procedure (WHO, 2013). For each LLIN type, two unwashed nets were tested under insectary conditions. Ten mosquitoes per cone were exposed for 3 min to 30 cm x 30 cm net pieces sampled from the top, the short and the long sides of the net. During exposure, the set-up was kept at an angle of 45 degrees as recommended (Owusu & Muller, 2016). Knock-down and mortality were recorded at 60 min and 24 h after exposure, respectively. Conventional LLINs were compared with PBO LLINS using Fisher's exact test (2x2 contingency table, significance level of 0.05) (http://wwwgraphpadcom/quickcales/contingency2) (Roberts & Andre, 1994).\n", - "\n", - "header: Materials and methods\n", - "\n", - "The experimental hut studies were carried out at two field stations in southwest Burkina Faso: the first is located in the Vallee du Kou.5 (VK5) near Bobo-Dioulasso (11*39' N, 04*41' W) and belongs to the Institut de Recherche en Science de la Sante (IRSS)/Centre MURAZ, and the second is located at Tengrela (10*40' N, 04*50' W) near Banfora and is maintained by the Centre National de Recherche et de Formation sur le Paludisme (CNRFP). These two sites are separated by approximately 120 km. Previous surveys revealed _Anopheles coluzzii_ (formerly _Anopheles gambiae s.s._ M molecular form) to be the predominant _Anopheles_ species at both sites. High levels of resistance to both DDT and pyrethroids have been reported previously at both sites (Ngufor _et al._, 2014; Toe _et al._, 2015).\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Supporting Information\n", - "\n", - "Additional supporting information may be found online in the Supporting Information section at the end of the article.\n", - "\n", - "Fig. 5: Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hit relative to the control hit. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "header: Entry rate and deterrence: Exit rates and induced exophily\n", - "\n", - "Exit rates refer here to the proportion of mosquitoes present in the veranda trap. As with entrance rates, exit rates varied throughout the study (Fig. 4). On average, the induced exophily rates were between 26.4% (control net) and 48.5% (Olyset Net) (Table S4). The odds of finding a mosquito in the veranda trap were significantly increased in the huts with treated nets, with the exception of the DawaPlus, although even for the DawaPlus a tendency to induce exophily was observed (Fig. 4, Table S4).\n", - "\n", - "header: Table 1: Treatment arms and descriptions of longlasting insecticide-treated nets.\n", - "footer: PermaNet is a registered trademark of Vestergaard Frandsen Holding SA. Olyset is a registered trademark of Sumitomo Chemical Co. Ltd. DawaPlusis a registered trademark of Tana Netting Co. Ltd.PBO, piperonyl butoxide.\n", - "columns: ['Treatment arm', 'Description', 'Manufacturer']\n", - "\n", - "{\"0\":{\"Treatment arm\":\"Untreated net\",\"Description\":\"Net manufactured manually using netting material from market\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment arm\":\"Olyset\\u00ae Net\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment arm\":\"Olyset\\u00ae Plus\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin and 4.3 x 10-4 kg\\/m2 of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment arm\":\"PermaNet\\u00ae 2.0\",\"Description\":\"5.5 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"4\":{\"Treatment arm\":\"PermaNet\\u00ae 3.0\",\"Description\":\"Combination of 2.8 g\\/kg of deltamethrin coated on polyester with strengthened border (side panels) and deltamethrin (4.0 g\\/kg) and PBO (25 g\\/kg)\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"5\":{\"Treatment arm\":\"Dawa\\u00ae Plus 2.0\",\"Description\":\"8.0 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"TANA Netting\"}}\n", - "\n", - "header: Discussion\n", - "\n", - "Very low mortality rates were obtained for both permethrin and deltamethrin in the two study sites following an hour of exposure to WHO diagnostic doses. Southwestern Burkina Faso is known as a hotspot of pyrethroid resistance (Dabire _et al._, 2012; Namountougou _et al._, 2012). Rapid changes in the prevalence of pyrethroid resistance have been observed since the first national LLIN distribution programme in 2010: in 2009, mosquito mortality following deltamethrin exposure was 25% (Dabire _et al._, 2012), in VK has since fallen to just 2.5%. The frequency of the 1014F _kdr_ mutation also increased from 0.28 in 2006 (Dabire _et al._, 2009) to 0.88 in the current study. Similar increases in the prevalence of pyrethroid resistance have been witnessed in Tengrela. Mortality rates of 93% and 46% for deltamethrin and permethrin, respectively, were recorded in 2011 (Namountougou _et al._, 2012; K. H. Toe, unpublished data 2011), but these mortality rates had reduced to 33% and 13% in 2014, the year of the current study (Toe _et al._, 2015). In the present study, pyrethroid mortality was significantly increased by pre-exposure to PBO. This, together with the qPCR data showing elevated expression of multiple P450s in both field populations compared with a susceptible laboratory strain, indicate that oxidases are an important resistance mechanism in _An. coluzzi_ in southwestern Burkina Faso. It is noted that resistance was not fully restored by PBO pre-exposure, indicating that additional resistance mechanisms, such as target site resistance and possibly cuticular modifications (Toe _et al._, 2015), may contribute to the pyrethroid resistance phenotype in these populations.\n", - "\n", - "header: Molecular analysis\n", - "\n", - "DNA was extracted from mosquito legs by heating at 90*C for 30 min. Species were identified using the SINE200 protocol (Santolamazza _et al._, 2008) and then screened for the voltage gated sodium channel (VGSC) 1014F and 1575Y alleles using Taqman assays (Bass _et al._, 2007; Jones _et al._, 2012).\n", - "\n", - "Total RNA was extracted from six pools of 10 5-day-old non-blood-fed female _An. coluzzii_ from larval collections from Tengrela and VK5 using the RNAqueous(r)4PCR Kit for isolation of DNA-free RNA (Ambion, Inc., Austin, TX, U.S.A.) according to the manufacturer's procedures. The RNA was eluted in 50 mL of elution solution and treated with DNase. The quality and quantity of all the RNA used were assessed \n", - "using a NanoDrop ND1000 (Thermo Fisher Scientific UK Ltd, Renfrew, U.K.).\n", - "\n", - "The expression profiles of five P450 genes (_CYP6M2_, _CYP6Z2_, _CYP6Z3_, _CYP6P3_, _CYP6P4_), previously found to be over-expressed in pyrethroid-resistant field populations from Burkina Faso (Toe _et al._, 2015) and/or known to metabolize pyrethroids (Muller _et al._, 2008; Mitchell _et al._, 2012) were quantified using reverse-transcription quantitative polymerase chain reaction (RT-qPCR). The qPCR analysis was conducted at the LSTM and used the following mosquito populations: Ngousso, an insecticide-susceptible strain originating from Ngousso in Cameroon in 2006 and maintained in the insectary at LSTM; Tengrela specimens reared from larval collections in October-November 2014, and VK5 specimens reared from larval collections in October-November 2014. Approximately 600 ng of RNA was reverse-transcribed to first-strand cDNA using SuperScript(tm) III reverse transcriptase (Invitrogen, Inc., Carlsbad, CA, U.S.A.) according to the manufacturer's procedures. Samples were then purified using the Qiagen Easy Purification Kit (Qiagen Benelux BV, Venlo, the Netherlands) before proceeding to qPCR. Each of the six pool replicates were run in triplicate using 2X SYBR Brilliant III (Agilent Technologies, Inc., Palo Alto, CA, U.S.A.), forward and reverse primers (300 nM) [sequence available in Toe _et al._ (2015)] on the Mx3005p qPCR system (Agilent Technologies, Inc., Palo Alto, California) with the following cycling protocol: 95 degC for 3 min, followed by 40 cycles of 95 degC for 10 s and 60 degC for 10 s. The qPCR data were analysed using the delta Ct values method, taking into account the PCR efficiency (Pfaffi, 2001). The candidate Ct values were normalized against three housekeeping genes, encoding ribosomal protein L40 (ubiquitin) (_AGAP007927_), an elongation factor (_AGAP005128_) and the S7 ribosomal protein (_AGAP010592_). The normalized Ct values of each gene were then compared with the normalized Ct values of the susceptible Ngousso strain.\n", - "\n", - "header: Results\n", - "\n", - "In VK5, very low levels of mortality were observed after exposure to the discriminating dose of deltamethrin and permethrin, but pre-exposure to PBO significantly increased mortality rates from 2.5% (_n_ = 163) to 45% (_n_ = 158) and from 5% (_n_ = 153) to 26% (_n_ = 156) for deltamethrin and permethrin, respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig. 1). In Tengrela, mortality rates of 34% (_n_ = 85) and 14% (_n_ = 101) were recorded for deltamethrin and permethrin, respectively. When PBO was used, mortality rates increased significantly to 63% (_n_ = 84) and 42% (_n_ = 104), respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig.1). Although there was evidence of synergism, pre-exposure to PBO did not fully restore susceptibility in either site to either pyrethroid.\n", - "\n", - "_Anopheles coluzzi_ was the only species of the _An. gambiae_ complex identified by PCR of a subset of 80 specimens from Tengrela and VK5. High frequencies of the 1014F allele of the VGSC were recorded in Tengrela (0.819, 95% CI 0.750-0.875) and VK5 (0.885, 95% CI 0.824-0.930) with the 1575Y allele present at lower frequencies of 0.169 (95% CI 0.114-0.236) and 0.221 (95% CI 0.158-0.295), respectively. Samples were not genotyped for the 1014S allele as previous extensive surveys have not detected this allele in _An. coluzzi_ from these sites (Toe _et al._, 2015). There was no statistically significant difference in the frequency of either the 1014F or 1575Y allele between the two sites (Table 2).\n", - "\n", - "Several cytochrome P450 genes previously associated with pyrethroid resistance showed elevated expression levels in the Tengrela and the VK5 _An. coluzzi_ populations compared with the susceptible laboratory Ngousso strain (Fig. 2). _CYP6P3_, _CYP6M2_, _CYP6Z3_, _CYP6P4_ and _CYP6Z2_ were found to be\n", - "\n", - "Fig. 1: Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: \\(P\\) < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "\n", - "overexpressed in both field strains compared with the susceptible laboratory colony (fold change: > 2) with the most highly overexpressed genes in both populations being _CYP6Z2_ and _CYP6Z3_ (Fig. 2).\n", - "\n", - "header: Blood feeding rates and inhibition\n", - "\n", - "Average blood feeding rates were between 17.0% (PermaNet 3.0) and 56.4% (control net) (Table S4). With the exception of the DawaPlus, all treated nets reduced blood feeding (Fig. 4, Table S4), and the effect was most prominent with the PBO nets PermaNet 3.0 and Olyset Plus (Fig. 4, Table S4), for which the odds ratios (ORs) of blood feeding relative to control nets were 0.19 (95% CI 01.3-0.26) and 0.16 (95% CI 0.11-0.23), respectively.\n", - "\n", - "header: Performance of PBO LLINs in experimental hut studies\n", - "\n", - "The enhanced performance of PBO-containing LLINs over conventional LLINs was further supported by the experimental hut results. Both blood feeding inhibition and mortality rates were significantly higher in huts containing PBO LLINs than in those containing conventional LLINs from the same manufacturers. An improved performance of the PermaNet 3.0, which contains both higher concentrations of deltamethrin compared with the PermaNet 2.0, plus PBO on the roof of the net, has also been reported in pyrethroid-resistant populations of malaria vectors in Ivory Coast (Koudou _et al._, 2011), Benin (N'Guessan _et al._, 2010) and Burkina Faso (Corbel _et al._, 2010).\n", - "\n", - "Fig. 4: Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the \\(P\\)-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "\n", - "The magnitude of this effect differs among studies, with previous studies reporting increases in mortality rates of 1.3-1.8-fold, whereas the current study reports an OR of 2.45, which corresponds to a 1.78-fold increase. Only one experimental hit study comparing the Olyset Plus with the Olyset Net has been published to date (Pennetier _et al._, 2013). This study, conducted in Benin in 2013, reported mortality rates 1.9-fold higher in the PBO arm than in the conventional LLIN arm (Pennetier _et al._, 2013), which is in line with the findings of the current study, which found a 1.89-fold (OR 2.1) elevation in mortality rates in the Olyset Plus arm.\n", - "\n", - "In addition to increased mortality rates, the current study, plus two of the previous experimental hit studies, reported significantly higher rates of blood feeding inhibition for PBO vs. conventional LLINs (Corbel _et al._, 2010; N'Guessan _et al._, 2010), indicating that PBO LLINs afford an enhanced level of personal protection in areas where vectors are resistant to pyrethroids. It should be noted that the current study was performed using unwashed nets only. Previous studies have found that the efficacy of PBO LLINS against resistant mosquitoes decreases substantially after the nets have been washed 20 times according to WHO protocols (Corbel _et al._, 2010; Tungu _et al._, 2010; Koudou _et al._, 2011). Thus further studies on the durability of the bio-efficacy of PBO LLINS under field conditions are urgently needed.\n", - "\n", - "header: Abstract\n", - "\n", - "Do bednets including piperonyl butoxide offer additional protection against populations of _Anopheles gambiae s.l._ that are highly resistant to pyrethroids? An experimental hut evaluation in Burkina Faso\n", - "\n", - "K. H. T oe\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " P. Muller\n", - "\n", - "2H233\n", - "\n", - "33Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " A. Badlo\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " A. Traore\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " N. Sagnon\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " R. K. Dabi Irene\n", - "\n", - "4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " H. Ransons\n", - "\n", - "5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - "\n", - "Malaria control is dependent on the use of longlasting insecticidal nets (LLINs) containing pyrethroids. A new generation of LLINs containing both pyrethroids and the synergist piperonyl butoxide (PBO) has been developed in response to increasing pyrethroid resistance in African malaria vectors, but questions remain about the performance of these nets in areas where levels of pyrethroid resistance are very high. This study was conducted in two settings in southwest Burkina Faso, Vallee du Kou 5 and Tengrela, where _Anopheles gambiae s.l._ (Diptera: Culicidae) mortality rates in World Health Organization (WHO) discriminating dose assays were \\(<\\) 14% for permethrin and \\(<\\) 33% for delatamethrin. When mosquitoes were pre-exposed to PBO in WHO tube assays, mortality rates increased substantially but full susceptibility was not restored. Molecular characterization revealed high levels of _kdr_ alleles and elevated levels of P450s previously implicated in pyrethroid resistance. In cone bioassays and experimental huts, PBO LLINs outperformed the pyrethroid-only equivalents from the same manufacturers. Blood feeding rates were 1.6-2.2-fold lower and mortality rates were 1.69-1.78-fold greater in huts with PBO LLINs vs. non-PBO LLINs. This study indicates that PBO LLINs provide greater personal and community-level protection than standard LLINs against highly pyrethroid-resistant mosquito populations.\n", - "\n", - " insecticide resistance, insecticide resistance management, longlasting insecticidal nets, PBO.\n", - "\n", - "header: Mortality rates and induced mortality\n", - "\n", - "Average mortality rates ranged from 9.5% in the control arm to 46.1% in the PermaNet 3.0 arm (Table S4). Mortality was statistically higher in all treated net conditions than in the control huts. As with blood feeding inhibition, the PBO nets showed the largest effects in increasing mortality (Fig. 5, Table S4); the ORs for mortality relative to control nets were 5.56 (95% CI 3.92-7.89) and 8.14\n", - "Fig. 2: Expression levels of candidate genes previously associated with pyrethroid resistance in Tengrela and Vallée du Kou 5. The analysis was performed using the 2−\n", - "\n", - "\n", - "\n", - "\n", - "(95% CI 5.64-11.75) for the Olyset Plus and PermaNet 3.0, respectively, compared with 2.65 (95% CI 1.87-3.75) and 3.33 (95% CI 2.35-4.74) for the Olyset Net and PermaNet 2.0, respectively.\n", - "\n", - "header: Table 2: Frequencies of 1014F and 1575Y kdr alleles in Anopheles coluzzili, in Tengrela and Vallée du Kou 5 (VK5).\n", - "footer: Chi-squared test (http://vassarstats.net/) for the comparison of the frequency of the 1014F and 1575Y mutations in Anopheles coluzzili populations from Tengrela and VK5 (October 2014). No statistical difference was observed in the frequencies of the kdr alleles in the two sites.\n", - "columns: ['1014F mutation - Unnamed: 0_level_1', '1014F mutation - Total n', '1014F mutation - LL', '1014F mutation - LF', '1014F mutation - FF', '1014F mutation - f (1014F)', '1014F mutation - P-value']\n", - "\n", - "{\"0\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"2\",\"1014F mutation - LF\":\"25\",\"1014F mutation - FF\":\"53\",\"1014F mutation - f (1014F)\":\"0.819\",\"1014F mutation - P-value\":\"0.26\"},\"1\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"78\",\"1014F mutation - LL\":\"0\",\"1014F mutation - LF\":\"18\",\"1014F mutation - FF\":\"60\",\"1014F mutation - f (1014F)\":\"0.885\",\"1014F mutation - P-value\":null},\"2\":{\"1014F mutation - Unnamed: 0_level_1\":\"1575Y mutation\",\"1014F mutation - Total n\":\"1575Y mutation\",\"1014F mutation - LL\":\"1575Y mutation\",\"1014F mutation - LF\":\"1575Y mutation\",\"1014F mutation - FF\":\"1575Y mutation\",\"1014F mutation - f (1014F)\":\"1575Y mutation\",\"1014F mutation - P-value\":\"1575Y mutation\"},\"3\":{\"1014F mutation - Unnamed: 0_level_1\":null,\"1014F mutation - Total n\":\"Total n\",\"1014F mutation - LL\":\"NN\",\"1014F mutation - LF\":\"NY\",\"1014F mutation - FF\":\"YY\",\"1014F mutation - f (1014F)\":\"f (A575Y)\",\"1014F mutation - P-value\":\"P-value\"},\"4\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"57\",\"1014F mutation - LF\":\"19\",\"1014F mutation - FF\":\"4\",\"1014F mutation - f (1014F)\":\"0.169\",\"1014F mutation - P-value\":\"0.39\"},\"5\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"77\",\"1014F mutation - LL\":\"49\",\"1014F mutation - LF\":\"22\",\"1014F mutation - FF\":\"6\",\"1014F mutation - f (1014F)\":\"0.221\",\"1014F mutation - P-value\":null}}\n", - "\n", - "header: Impact of PBO on LLIN efficacy in pyrethroid-resistant mosquitoes\n", - "\n", - "The performance of nets containing PBO as compared with pyrethroid-only nets from the same manufacturer is shown in Fig. 5. The PermaNet 3.0 deterred more mosquitoes than the PermaNet 2.0 (OR = 0.67, \\(P\\) < 0.01) (Fig. 5, Table S5), but there was no significant difference between the Olyset Plus and Olyset Net (_P_ = 0.412). The Olyset Net induced more exophily than the Olyset Plus (OR = 0.76, \\(P\\) < 0.05), but there was no significant difference in exophily between the PermaNet 2.0 and 3.0 (_P_ = 0.727) (Table S5). The PBO nets from both manufacturers considerably reduced blood feeding compared with non-PBO nets with ORs of 0.34 (_P_ < 0.001) and 0.55 (_P_ < 0.01) for the PermaNet 3.0 and Olyset Plus, respectively (Fig. 5, Table S4). In addition, the PBO nets killed significantly more _An. gambiae s.l._ than the non-PBO nets. The ORs for mortality were 2.45 (_P_ < 0.001) for the PermaNet 3.0 and 2.1 (_P_ < 0.001) for the Olyset Plus (Fig. 5, Table S5).\n", - "\n", - "header: Introduction\n", - "\n", - "Use of the longlasting insecticidal net (LLIN) is pivotal in the fight against malaria in Africa. A massive scaling up of the distribution of this commodity has occurred over the past 15 years, with 178 million LLINs delivered for use in sub-Saharan Africa (SSA) in 2015 alone [World Health Organization (WHO), 2016]. Although reliable estimates of LLIN usage are very hard to obtain, the WHO estimates that 53% of the population at risk in SSA slept under an LLIN in 2015 [WHO, 2016]. The results have been dramatic: an estimated 450 million clinical cases of malaria were averted in the last 15 years by the use of LLINs [Bhatt _et al._, 2015].\n", - "\n", - "All LLINs in current use contain pyrethroid insecticides, but there is growing recognition that increases in the prevalence and intensity of pyrethroid resistance, driven at least in part by the scale-up in the use of LLINs, could jeopardize recent gains in malaria control [WHO, 2012]. Direct evidence that pyrethroid\n", - "resistance is reducing either the personal or community-level protection provided by LLINS is challenging to obtain (Kleinschmidt _et al._, 2015; Ranson & Lissenden, 2016), but models of malaria transmission predict that even relatively low levels of resistance can substantially reduce the public health benefits of LILINS (Churcher _et al._, 2016). In countries that rely on the LLIN as the primary malaria prevention tool, the only currently available alternatives to conventional pyrethroid-only LLINS are nets in which the synerigent piperonyl butoxide (PBO) has been included in the fibres making up all, or part, of the net. Piperonyl butoxide inhibits cytochrome P450s, which comprise one of the most important enzyme families involved in pyrethroid resistance, and exposure to PBO has been shown to reduce resistance and sometimes to restore susceptibility to pyrethroids in malaria vectors (Jones _et al._, 2013; Edi _et al._, 2014).\n", - "\n", - "Four brands of LLIN containing PBO have received interim approval from the WHO as conventional LLINS. These are the PermaNet(r) 3.0 (deltamethrin+PBO) (Vestergaard Frandsen Holding SA, Lausanne, Switzerland), the Olvest(r) Plus (permethrin+PBO) (Sumitomo Chemical Asia Pte Ltd, Health and Crop Sciences Sector, Tokyo, Japan), the Veeralin(r) (alpha cypermethrin+PBO) (VKA Polymers Pte Ltd, Karur, India) and the DawaPlus(r) (deltamethrin+PBO) (Tana Netting Co. Ltd, Dubai, U.A.E.). The benefit of the addition of PBO is only expected to manifest in areas in which mosquito populations are resistant to pyrethroids and experimental hut trials of PBO LLINS in areas of resistance have supported this prediction. Increased mosquito mortality was observed in experimental huts containing PBO LLINS compared with conventional LLINS in Ivory Coast, Benin and Burkina Faso (Corbel _et al._, 2010; Ngousso _et al._, 2010; Koudou _et al._, 2011; Pennetier _et al._, 2013) and reductions in blood feeding rates were also reported in trials in the latter two countries. All of these sites reported high levels of pyrethroid resistance.\n", - "\n", - "There has been a dramatic escalation in the strength of pyrethroid resistance in southwestern Burkina Faso since earlier trials of PBO LLINS in 2007. World Health Organization cone bioassays performed in 2012 revealed that none of the conventional LLINS were effective in killing local vector populations and that the performance of the PBO LLIN PermaNet(r) 3.0 was also compromised in these assays (Toe _et al._, 2014). Although the numbers of malaria deaths in Burkina Faso have fallen over the past 10 years, numbers of malaria cases have risen year on year despite countywide LLIN distribution campaigns [National Malaria Control Programme (NMCP), personal communication; K.H.Toe, 2017]. In order to advise the NMCP on whether a switch to PBO LLINS may be warranted to target these highly resistant populations, an experimental hut trial was undertaken in two rice-growing areas in the southwestern region of Burkina Faso.\n", - "\n", - "header: Conclusions\n", - "\n", - "The results of these experimental hit studies with entomological endpoints suggest that substituting conventional LLINs with PBO LLINs in areas where there is a high prevalence of pyrethroid resistance in local vectors may be an effective strategy to maintain the efficacy of malaria vector control. The public health benefit of this would depend on a wide range of factors, including the level of malaria endemicity, LLIN coverage rates and the predominant mosquito vectors present, but a recent modelling exercise predicts that in some settings, a switch to PBO LLINs could aver up to 0.5 clinical cases per person per year (Churcher _et al._, 2016). These predictions from models are now being evaluated in large-scale field trials. A recent study in Tanzania reported a 33% protective efficacy of PBO LLINs over conventional LLINs after 2 years of use (Protopopoff _et al._, 2018). A larger trial, involving the distribution of over 10.7 million nets in Uganda, is evaluating whether PBO nets reduce malaria prevalence under programmatic conditions ([https://www.againstmalaria.com](https://www.againstmalaria.com), [https://www.pmi.gov](https://www.pmi.gov)).\n", - "\n", - "In light of the results from experimental hit studies, including the current study, and after reviewing data from the first clinical trial of a PBO LLIN, the WHO recently made a policy recommendation that national malaria control programmes should consider deployment of PBO LLINs in areas with pyrethroid-resistant vectors (WHO, 2017). If deployed at scale, PBO LLINs may play an important role in reducing the immediate threat of pyrethroid resistance to malaria control.\n", - "\n", - "header: _Pyrethroid resistance in Tengrela and VK5 and associated mechanisms_: Efficacy of LLINs under laboratory conditions\n", - "\n", - "All LLINs tested showed good bio-efficacy in cone bioassays against the susceptible laboratory Kisumu strain with 60 min knock-down and 24 h mortality rates of all LLINs above the 98% and 80% WHO thresholds (WHO, 2005) (Table S1). By contrast, in tests using the field-caught mosquitoes, the mortality threshold was met only by the top panels of the PermaNet 3.0 (Fig. 3). Knock-down rates exceeded the 98% threshold for the PermaNet 3.0 in VK5 only (Table S1).\n", - "\n", - "header: Experimental hut results\n", - "\n", - "In total, 12 915 specimens from four different mosquito genera were collected inside the huts (sleeping rooms and veranda traps) over the 6-week trial (Tengrela, \\(n\\) = 5808; VK5, \\(n\\) = 7107). Most specimens collected from the huts belonged to the _An. gambiae s.l._ species complex, accounting for 75.4% (_n_ = 4379) in Tengrela and 98.8% (_n_ = 7020) in VK5. The second most frequently collected _Anopheles_ species was _An. rhinorensis_, of which 49 and 19 specimens were collected in Tengrela and VK5, respectively. Other _Anopheles_ mosquito species, including _An. funestus_ (_n_ = 3), _An. nili_ (_n_ = 2) and _An. coustani_ (_n_ = 3), were collected in Tengrela. Additional mosquito taxa were also collected, including _Mansonia_ sp. (_n_ = 1330 in Tengrela and \\(n\\) = 45 in VK5), _Culex_ sp. (_n_ = 41 in Tengrela and \\(n\\) = 23 in VK5) and _Aedes_ sp. (_n_ = 1 in Tengrela) (all: Diptera: Culicidae). Because of the low numbers of other genera, only data for _An. gambiae s.l._ were included in the analysis.\n", - "\n", - "Within the total of 11 399 _An. gambiae s.l._ caught at both field sites, there was considerable variation between weeks and treatments in the numbers of mosquitoes entering the huts in both study locations (Fig. 4). The average number of mosquitoes caught per night/per hut was between 13 (PermaNet 3.0) and 20.7 (Olyset Net) mosquitoes (Table S3) and induced deterrence was found only for the Olyset Net, albeit at a low ratio of 1.31 (95% CI 1.02-1.66; \\(P\\) < 0.05) (Fig. 4).\n", - "\n", - "header: Pyrethroid resistance in southwest Burkina Faso: Bio-efficacy of LLINs in cone bioassays\n", - "\n", - "The low levels of mortality observed in cone bioassays in this study are similar to those reported previously in VK7, a neighbouring village to VK5, in the Vallee du Kou rice-growing region. However, whereas the current study found that exposure to the tops of the PermaNet 3.0 nets resulted in mortality levels exceeding the WHO threshold of 80%, equivalent bioassays conducted in the VK7 population in 2012 showed mortality of only 43%. Cone bioassays are not a reliable method of comparing the performance of LLINs containing different pyrethroids because of the inherent differences in extico-repellency within this class, which can affect exposure time (Siegert _et al._, 2009). In particular, cone tests may underestimate the performance of permethrin LLINs; this is indicated by comparison of the cone bioassay results in Fig. 3, in which the Olyset Net was found to induce considerably lower mortality than the PermaNet 2.0, although experimental hut results showed similar levels of mortality in huts with these two net types (Table S3).\n", - "\n", - "Fig. 3: Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (_P_ < 0.001), † (_P_ < 0.0001), n.s. (non-significant, \\(\\frac{1}{2}\\) (_P_ < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wicyclonlinelibrary.com].\n", - "\n", - "\n", - "Nevertheless, the results of these cone bioassays provide further evidence that resistance can be at least partially ameliorated by exposure to PBO.\n", - "\n", - "header: Experimental hut trials\n", - "\n", - "Each station consisted of six experimental huts built according to the West African style (WHO, 2013). The study had six arms that used, respectively, five different LLINs and one net with no insecticide treatment as a negative control (Table 1). The nets were obtained from the manufacturers and were unpacked and kept in the shade for 24 h, but not washed prior to testing. Two of the nets, the OlysetPlus and PermaNet 3.0, contain PBO, whereas the other three LLINs contain only pyrethroids. The LLINs were holed according to WHO standard procedures (WHO, 2013). A total of six holes (4 cm x 4 cm) per net were cut, two on each of the long sides and one on each of the short sides.\n", - "\n", - "Study participants (male sleepers) spent 6 nights per week under a net in an experimental hut from 20.00 hours to 05.00 hours, followed by 1 day of break. The sleepers were rotated through the six huts so that each sleeper spent 1 night per week under each net type. To complete a full Latin square rotation with all combinations of sleeper, net type and hut, the study ran over 36 days from 8 September to 22 October 2014.\n", - "\n", - "Each morning at 05.00 hours, mosquitoes were collected manually by the sleepers, with supervision, from under the net, inside the hut and on the exit veranda. The collected specimens were morphologically identified to genus and, where possible, to species level (Gillies & Coetzee, 1987), grouped according to their gonotrophic stage (blood-fed, unfed or gravid), and scored as dead or alive. Live mosquitoes were transferred to paper cups, provided with 10% sugar water and kept in the insectary described above for 24 h, after which delayed mortality was recorded. All specimens were stored on silica gel for further molecular analysis.\n", - "\n", - "Data analysis was performed in the open-source statistical software R Version 3.3.2 (R Development Core Team, 2011) using the libraries 'lme4' (Bates _et al._, 2012) and 'glmADMB' (Skaug _et al._, 2012) for generalized linear mixed models (GLMMs). Plots were then generated with the package 'ggplot2' (Wickham, 2009).\n", - "\n", - "In the statistical analysis of hut trial data, in order to increase the number of replicates, give more power and increase confidence in the analysis, data collected from both sites (Tengrela and VK5) were pooled and the following four outcomes for _An. coluzzii_ were compared between the LLINs and the untreated control net, as well as between the PBO and non-PBO nets from the same manufacturer: (a) deterrence (i.e. the reduction in hut entry relative to the control or non-PBO net); (b) induced exophily (i.e. the ratio of the odds of a mosquito being found in the veranda trap compared with the hut); (c) blood feeding inhibition (i.e. the ratio of the odds of blood\n", - "\n", - "fed vs. unfed mosquitoes), and (d) induced mortality [i.e. the ratio of the odds of dead vs. alive mosquitoes] (The original dataset for _An. gambiae s.l._ is supplied in Table S2.) Immediate mortality and mortality at 24 h post-collection were combined for the analysis. Deterrence was analysed as the ratio in total numbers between the treatment arms (or PBO net) vs. the control arm (or non-PBO net). The numbers of mosquitoes in the room and the veranda were combined and analysed using a GLMM with a negative binomial distribution and a log link function using the R function 'glmandmdb()' in the 'glmmADMB' package. In the model, the net type was the fixed effect term and random intercepts were introduced for the sleeper and the hut, and a random slope for the day depending on the location. For proportional outcomes of induced exophily, blood feeding inhibition and induced mortality, the negative binomial model was replaced by a GLMM with a binomial distribution and logit link function using the R function 'glmer()' in the 'lme4' package. In the models, in addition to the terms listed above, a random intercept was introduced for each observation to account for unexplained overdispersion. For statistical testing, the level of significance was set at \\(a\\) = 0.05.\n", - "\n", - "In addition to the ratios described above, averages (i.e. the modes) and 95% confidence intervals (CIs) of the crude values underlying the outcomes were computed by the same models as above but using the individual nets as the intercept. These corresponding crude values were: (a) entry rate (i.e. the number of mosquitoes entering a hut); (b) exit rate (i.e. the number of mosquitoes collected from the veranda trap; (c) blood feeding rate (i.e. the proportion of blood-fed mosquitoes), and (d) mortality rate (i.e. the proportion of dead mosquitoes at 24 h post-collection).\n", - "\n", - "The study participants were recruited from the local communities and gave informed consent. Ethical approval was obtained from the Ethical Committee for Health Research of the Ministry of Health and Ministry of Research in Burkina Faso (Deliberation No. 2013-07-057, 11 July 2013). Malaria chemotherapy was not offered to study participants in line with Ministry of Health recommendations. However, medical supervision was provided throughout the study and any malaria case was treated according to national requirements.\n", - "\n", - "header: Study sites: Characterization of mosquito populations\n", - "\n", - "_Anopheles gambiae s.l._ larvae were collected in Tengrela and VK5 and reared to adults in local insectaries (mean relative humidity: 75+- 10%; mean temperature: 27+- 2*C). To assess susceptibility to pyrethroids, batches of approximately 25 non-blood-fed _An. gambiae s.l._ females aged 3-5 days were exposed to papers treated with 0.75% permethrin or 0.05% deltamethrin. The papers and susceptibility test kits were purchased from the Universiti Sains Malaysia (Penang, Malaysia). In parallel bioassays, mosquitoes were exposed to papers treated with 4% PBO [prepared by the Liverpool School of Tropical Medicine (LSTM)] for 1 h before they were transferred to tubes containing either insecticide-treated papers or insecticide-free papers and exposed for a further 1 h. Knock-down was recorded at the end of exposure and mortality was recorded 24 h later.\n", - "\n", - "The bio-efficacy of the LLINS was tested using non-blood-fed mosquitoes aged 3-5 days from local larval collections, and from the Kisumu susceptible laboratory strain, using the WHO cone bioassay procedure (WHO, 2013). For each LLIN type, two unwashed nets were tested under insectary conditions. Ten mosquitoes per cone were exposed for 3 min to 30 cm x 30 cm net pieces sampled from the top, the short and the long sides of the net. During exposure, the set-up was kept at an angle of 45 degrees as recommended (Owusu & Muller, 2016). Knock-down and mortality were recorded at 60 min and 24 h after exposure, respectively. Conventional LLINs were compared with PBO LLINS using Fisher's exact test (2x2 contingency table, significance level of 0.05) (http://wwwgraphpadcom/quickcales/contingency2) (Roberts & Andre, 1994).\n", - "\n", - "header: Materials and methods\n", - "\n", - "The experimental hut studies were carried out at two field stations in southwest Burkina Faso: the first is located in the Vallee du Kou.5 (VK5) near Bobo-Dioulasso (11*39' N, 04*41' W) and belongs to the Institut de Recherche en Science de la Sante (IRSS)/Centre MURAZ, and the second is located at Tengrela (10*40' N, 04*50' W) near Banfora and is maintained by the Centre National de Recherche et de Formation sur le Paludisme (CNRFP). These two sites are separated by approximately 120 km. Previous surveys revealed _Anopheles coluzzii_ (formerly _Anopheles gambiae s.s._ M molecular form) to be the predominant _Anopheles_ species at both sites. High levels of resistance to both DDT and pyrethroids have been reported previously at both sites (Ngufor _et al._, 2014; Toe _et al._, 2015).\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Burkina Faso\",\"Site\":\"Vallee du Kou 5\",\"Start_month\":9,\"Start_year\":2014,\"End_month\":10,\"End_year\":2014},\"S02\":{\"Study_type\":\"Hut trial\",\"Country\":\"Burkina Faso\",\"Site\":\"Tengrela\",\"Start_month\":9,\"Start_year\":2014,\"End_month\":10,\"End_year\":2014}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Untreated net\",\"Net_holed\":0.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":null,\"Concentration_initial\":null},\"N02\":{\"Net_type\":\"Olyset Net\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"8.6 x 10-4 kg\\/m2\"},\"N03\":{\"Net_type\":\"Olyset Plus\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"permethrin, PBO\",\"Concentration_initial\":\"8.6 x 10-4 kg\\/m2, 4.3 x 10-4 kg\\/m2\"},\"N04\":{\"Net_type\":\"PermaNet 2.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"5.5 x 10-5 kg\\/m2\"},\"N05\":{\"Net_type\":\"PermaNet 3.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin, PBO\",\"Concentration_initial\":\"2.8 g\\/kg, 4.0 g\\/kg, 25 g\\/kg\"},\"N06\":{\"Net_type\":\"Dawa Plus 2.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"8.0 x 10-5 kg\\/m2\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Supporting Information\n", - "\n", - "Additional supporting information may be found online in the Supporting Information section at the end of the article.\n", - "\n", - "Fig. 5: Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hit relative to the control hit. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "header: Entry rate and deterrence: Exit rates and induced exophily\n", - "\n", - "Exit rates refer here to the proportion of mosquitoes present in the veranda trap. As with entrance rates, exit rates varied throughout the study (Fig. 4). On average, the induced exophily rates were between 26.4% (control net) and 48.5% (Olyset Net) (Table S4). The odds of finding a mosquito in the veranda trap were significantly increased in the huts with treated nets, with the exception of the DawaPlus, although even for the DawaPlus a tendency to induce exophily was observed (Fig. 4, Table S4).\n", - "\n", - "header: Table 1: Treatment arms and descriptions of longlasting insecticide-treated nets.\n", - "footer: PermaNet is a registered trademark of Vestergaard Frandsen Holding SA. Olyset is a registered trademark of Sumitomo Chemical Co. Ltd. DawaPlusis a registered trademark of Tana Netting Co. Ltd.PBO, piperonyl butoxide.\n", - "columns: ['Treatment arm', 'Description', 'Manufacturer']\n", - "\n", - "{\"0\":{\"Treatment arm\":\"Untreated net\",\"Description\":\"Net manufactured manually using netting material from market\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment arm\":\"Olyset\\u00ae Net\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment arm\":\"Olyset\\u00ae Plus\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin and 4.3 x 10-4 kg\\/m2 of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment arm\":\"PermaNet\\u00ae 2.0\",\"Description\":\"5.5 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"4\":{\"Treatment arm\":\"PermaNet\\u00ae 3.0\",\"Description\":\"Combination of 2.8 g\\/kg of deltamethrin coated on polyester with strengthened border (side panels) and deltamethrin (4.0 g\\/kg) and PBO (25 g\\/kg)\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"5\":{\"Treatment arm\":\"Dawa\\u00ae Plus 2.0\",\"Description\":\"8.0 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"TANA Netting\"}}\n", - "\n", - "header: Discussion\n", - "\n", - "Very low mortality rates were obtained for both permethrin and deltamethrin in the two study sites following an hour of exposure to WHO diagnostic doses. Southwestern Burkina Faso is known as a hotspot of pyrethroid resistance (Dabire _et al._, 2012; Namountougou _et al._, 2012). Rapid changes in the prevalence of pyrethroid resistance have been observed since the first national LLIN distribution programme in 2010: in 2009, mosquito mortality following deltamethrin exposure was 25% (Dabire _et al._, 2012), in VK has since fallen to just 2.5%. The frequency of the 1014F _kdr_ mutation also increased from 0.28 in 2006 (Dabire _et al._, 2009) to 0.88 in the current study. Similar increases in the prevalence of pyrethroid resistance have been witnessed in Tengrela. Mortality rates of 93% and 46% for deltamethrin and permethrin, respectively, were recorded in 2011 (Namountougou _et al._, 2012; K. H. Toe, unpublished data 2011), but these mortality rates had reduced to 33% and 13% in 2014, the year of the current study (Toe _et al._, 2015). In the present study, pyrethroid mortality was significantly increased by pre-exposure to PBO. This, together with the qPCR data showing elevated expression of multiple P450s in both field populations compared with a susceptible laboratory strain, indicate that oxidases are an important resistance mechanism in _An. coluzzi_ in southwestern Burkina Faso. It is noted that resistance was not fully restored by PBO pre-exposure, indicating that additional resistance mechanisms, such as target site resistance and possibly cuticular modifications (Toe _et al._, 2015), may contribute to the pyrethroid resistance phenotype in these populations.\n", - "\n", - "header: Molecular analysis\n", - "\n", - "DNA was extracted from mosquito legs by heating at 90*C for 30 min. Species were identified using the SINE200 protocol (Santolamazza _et al._, 2008) and then screened for the voltage gated sodium channel (VGSC) 1014F and 1575Y alleles using Taqman assays (Bass _et al._, 2007; Jones _et al._, 2012).\n", - "\n", - "Total RNA was extracted from six pools of 10 5-day-old non-blood-fed female _An. coluzzii_ from larval collections from Tengrela and VK5 using the RNAqueous(r)4PCR Kit for isolation of DNA-free RNA (Ambion, Inc., Austin, TX, U.S.A.) according to the manufacturer's procedures. The RNA was eluted in 50 mL of elution solution and treated with DNase. The quality and quantity of all the RNA used were assessed \n", - "using a NanoDrop ND1000 (Thermo Fisher Scientific UK Ltd, Renfrew, U.K.).\n", - "\n", - "The expression profiles of five P450 genes (_CYP6M2_, _CYP6Z2_, _CYP6Z3_, _CYP6P3_, _CYP6P4_), previously found to be over-expressed in pyrethroid-resistant field populations from Burkina Faso (Toe _et al._, 2015) and/or known to metabolize pyrethroids (Muller _et al._, 2008; Mitchell _et al._, 2012) were quantified using reverse-transcription quantitative polymerase chain reaction (RT-qPCR). The qPCR analysis was conducted at the LSTM and used the following mosquito populations: Ngousso, an insecticide-susceptible strain originating from Ngousso in Cameroon in 2006 and maintained in the insectary at LSTM; Tengrela specimens reared from larval collections in October-November 2014, and VK5 specimens reared from larval collections in October-November 2014. Approximately 600 ng of RNA was reverse-transcribed to first-strand cDNA using SuperScript(tm) III reverse transcriptase (Invitrogen, Inc., Carlsbad, CA, U.S.A.) according to the manufacturer's procedures. Samples were then purified using the Qiagen Easy Purification Kit (Qiagen Benelux BV, Venlo, the Netherlands) before proceeding to qPCR. Each of the six pool replicates were run in triplicate using 2X SYBR Brilliant III (Agilent Technologies, Inc., Palo Alto, CA, U.S.A.), forward and reverse primers (300 nM) [sequence available in Toe _et al._ (2015)] on the Mx3005p qPCR system (Agilent Technologies, Inc., Palo Alto, California) with the following cycling protocol: 95 degC for 3 min, followed by 40 cycles of 95 degC for 10 s and 60 degC for 10 s. The qPCR data were analysed using the delta Ct values method, taking into account the PCR efficiency (Pfaffi, 2001). The candidate Ct values were normalized against three housekeeping genes, encoding ribosomal protein L40 (ubiquitin) (_AGAP007927_), an elongation factor (_AGAP005128_) and the S7 ribosomal protein (_AGAP010592_). The normalized Ct values of each gene were then compared with the normalized Ct values of the susceptible Ngousso strain.\n", - "\n", - "header: Results\n", - "\n", - "In VK5, very low levels of mortality were observed after exposure to the discriminating dose of deltamethrin and permethrin, but pre-exposure to PBO significantly increased mortality rates from 2.5% (_n_ = 163) to 45% (_n_ = 158) and from 5% (_n_ = 153) to 26% (_n_ = 156) for deltamethrin and permethrin, respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig. 1). In Tengrela, mortality rates of 34% (_n_ = 85) and 14% (_n_ = 101) were recorded for deltamethrin and permethrin, respectively. When PBO was used, mortality rates increased significantly to 63% (_n_ = 84) and 42% (_n_ = 104), respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig.1). Although there was evidence of synergism, pre-exposure to PBO did not fully restore susceptibility in either site to either pyrethroid.\n", - "\n", - "_Anopheles coluzzi_ was the only species of the _An. gambiae_ complex identified by PCR of a subset of 80 specimens from Tengrela and VK5. High frequencies of the 1014F allele of the VGSC were recorded in Tengrela (0.819, 95% CI 0.750-0.875) and VK5 (0.885, 95% CI 0.824-0.930) with the 1575Y allele present at lower frequencies of 0.169 (95% CI 0.114-0.236) and 0.221 (95% CI 0.158-0.295), respectively. Samples were not genotyped for the 1014S allele as previous extensive surveys have not detected this allele in _An. coluzzi_ from these sites (Toe _et al._, 2015). There was no statistically significant difference in the frequency of either the 1014F or 1575Y allele between the two sites (Table 2).\n", - "\n", - "Several cytochrome P450 genes previously associated with pyrethroid resistance showed elevated expression levels in the Tengrela and the VK5 _An. coluzzi_ populations compared with the susceptible laboratory Ngousso strain (Fig. 2). _CYP6P3_, _CYP6M2_, _CYP6Z3_, _CYP6P4_ and _CYP6Z2_ were found to be\n", - "\n", - "Fig. 1: Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: \\(P\\) < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "\n", - "overexpressed in both field strains compared with the susceptible laboratory colony (fold change: > 2) with the most highly overexpressed genes in both populations being _CYP6Z2_ and _CYP6Z3_ (Fig. 2).\n", - "\n", - "header: Blood feeding rates and inhibition\n", - "\n", - "Average blood feeding rates were between 17.0% (PermaNet 3.0) and 56.4% (control net) (Table S4). With the exception of the DawaPlus, all treated nets reduced blood feeding (Fig. 4, Table S4), and the effect was most prominent with the PBO nets PermaNet 3.0 and Olyset Plus (Fig. 4, Table S4), for which the odds ratios (ORs) of blood feeding relative to control nets were 0.19 (95% CI 01.3-0.26) and 0.16 (95% CI 0.11-0.23), respectively.\n", - "\n", - "header: Performance of PBO LLINs in experimental hut studies\n", - "\n", - "The enhanced performance of PBO-containing LLINs over conventional LLINs was further supported by the experimental hut results. Both blood feeding inhibition and mortality rates were significantly higher in huts containing PBO LLINs than in those containing conventional LLINs from the same manufacturers. An improved performance of the PermaNet 3.0, which contains both higher concentrations of deltamethrin compared with the PermaNet 2.0, plus PBO on the roof of the net, has also been reported in pyrethroid-resistant populations of malaria vectors in Ivory Coast (Koudou _et al._, 2011), Benin (N'Guessan _et al._, 2010) and Burkina Faso (Corbel _et al._, 2010).\n", - "\n", - "Fig. 4: Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the \\(P\\)-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\n", - "\n", - "\n", - "The magnitude of this effect differs among studies, with previous studies reporting increases in mortality rates of 1.3-1.8-fold, whereas the current study reports an OR of 2.45, which corresponds to a 1.78-fold increase. Only one experimental hit study comparing the Olyset Plus with the Olyset Net has been published to date (Pennetier _et al._, 2013). This study, conducted in Benin in 2013, reported mortality rates 1.9-fold higher in the PBO arm than in the conventional LLIN arm (Pennetier _et al._, 2013), which is in line with the findings of the current study, which found a 1.89-fold (OR 2.1) elevation in mortality rates in the Olyset Plus arm.\n", - "\n", - "In addition to increased mortality rates, the current study, plus two of the previous experimental hit studies, reported significantly higher rates of blood feeding inhibition for PBO vs. conventional LLINs (Corbel _et al._, 2010; N'Guessan _et al._, 2010), indicating that PBO LLINs afford an enhanced level of personal protection in areas where vectors are resistant to pyrethroids. It should be noted that the current study was performed using unwashed nets only. Previous studies have found that the efficacy of PBO LLINS against resistant mosquitoes decreases substantially after the nets have been washed 20 times according to WHO protocols (Corbel _et al._, 2010; Tungu _et al._, 2010; Koudou _et al._, 2011). Thus further studies on the durability of the bio-efficacy of PBO LLINS under field conditions are urgently needed.\n", - "\n", - "header: Abstract\n", - "\n", - "Do bednets including piperonyl butoxide offer additional protection against populations of _Anopheles gambiae s.l._ that are highly resistant to pyrethroids? An experimental hut evaluation in Burkina Faso\n", - "\n", - "K. H. T oe\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " P. Muller\n", - "\n", - "2H233\n", - "\n", - "33Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " A. Badlo\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " A. Traore\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " N. Sagnon\n", - "\n", - "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " R. K. Dabi Irene\n", - "\n", - "4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - " H. Ransons\n", - "\n", - "5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", - "\n", - "\n", - "Malaria control is dependent on the use of longlasting insecticidal nets (LLINs) containing pyrethroids. A new generation of LLINs containing both pyrethroids and the synergist piperonyl butoxide (PBO) has been developed in response to increasing pyrethroid resistance in African malaria vectors, but questions remain about the performance of these nets in areas where levels of pyrethroid resistance are very high. This study was conducted in two settings in southwest Burkina Faso, Vallee du Kou 5 and Tengrela, where _Anopheles gambiae s.l._ (Diptera: Culicidae) mortality rates in World Health Organization (WHO) discriminating dose assays were \\(<\\) 14% for permethrin and \\(<\\) 33% for delatamethrin. When mosquitoes were pre-exposed to PBO in WHO tube assays, mortality rates increased substantially but full susceptibility was not restored. Molecular characterization revealed high levels of _kdr_ alleles and elevated levels of P450s previously implicated in pyrethroid resistance. In cone bioassays and experimental huts, PBO LLINs outperformed the pyrethroid-only equivalents from the same manufacturers. Blood feeding rates were 1.6-2.2-fold lower and mortality rates were 1.69-1.78-fold greater in huts with PBO LLINs vs. non-PBO LLINs. This study indicates that PBO LLINs provide greater personal and community-level protection than standard LLINs against highly pyrethroid-resistant mosquito populations.\n", - "\n", - " insecticide resistance, insecticide resistance management, longlasting insecticidal nets, PBO.\n", - "\n", - "header: Mortality rates and induced mortality\n", - "\n", - "Average mortality rates ranged from 9.5% in the control arm to 46.1% in the PermaNet 3.0 arm (Table S4). Mortality was statistically higher in all treated net conditions than in the control huts. As with blood feeding inhibition, the PBO nets showed the largest effects in increasing mortality (Fig. 5, Table S4); the ORs for mortality relative to control nets were 5.56 (95% CI 3.92-7.89) and 8.14\n", - "Fig. 2: Expression levels of candidate genes previously associated with pyrethroid resistance in Tengrela and Vallée du Kou 5. The analysis was performed using the 2−\n", - "\n", - "\n", - "\n", - "\n", - "(95% CI 5.64-11.75) for the Olyset Plus and PermaNet 3.0, respectively, compared with 2.65 (95% CI 1.87-3.75) and 3.33 (95% CI 2.35-4.74) for the Olyset Net and PermaNet 2.0, respectively.\n", - "\n", - "header: Impact of PBO on LLIN efficacy in pyrethroid-resistant mosquitoes\n", - "\n", - "The performance of nets containing PBO as compared with pyrethroid-only nets from the same manufacturer is shown in Fig. 5. The PermaNet 3.0 deterred more mosquitoes than the PermaNet 2.0 (OR = 0.67, \\(P\\) < 0.01) (Fig. 5, Table S5), but there was no significant difference between the Olyset Plus and Olyset Net (_P_ = 0.412). The Olyset Net induced more exophily than the Olyset Plus (OR = 0.76, \\(P\\) < 0.05), but there was no significant difference in exophily between the PermaNet 2.0 and 3.0 (_P_ = 0.727) (Table S5). The PBO nets from both manufacturers considerably reduced blood feeding compared with non-PBO nets with ORs of 0.34 (_P_ < 0.001) and 0.55 (_P_ < 0.01) for the PermaNet 3.0 and Olyset Plus, respectively (Fig. 5, Table S4). In addition, the PBO nets killed significantly more _An. gambiae s.l._ than the non-PBO nets. The ORs for mortality were 2.45 (_P_ < 0.001) for the PermaNet 3.0 and 2.1 (_P_ < 0.001) for the Olyset Plus (Fig. 5, Table S5).\n", - "\n", - "header: Table 2: Frequencies of 1014F and 1575Y kdr alleles in Anopheles coluzzili, in Tengrela and Vallée du Kou 5 (VK5).\n", - "footer: Chi-squared test (http://vassarstats.net/) for the comparison of the frequency of the 1014F and 1575Y mutations in Anopheles coluzzili populations from Tengrela and VK5 (October 2014). No statistical difference was observed in the frequencies of the kdr alleles in the two sites.\n", - "columns: ['1014F mutation - Unnamed: 0_level_1', '1014F mutation - Total n', '1014F mutation - LL', '1014F mutation - LF', '1014F mutation - FF', '1014F mutation - f (1014F)', '1014F mutation - P-value']\n", - "\n", - "{\"0\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"2\",\"1014F mutation - LF\":\"25\",\"1014F mutation - FF\":\"53\",\"1014F mutation - f (1014F)\":\"0.819\",\"1014F mutation - P-value\":\"0.26\"},\"1\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"78\",\"1014F mutation - LL\":\"0\",\"1014F mutation - LF\":\"18\",\"1014F mutation - FF\":\"60\",\"1014F mutation - f (1014F)\":\"0.885\",\"1014F mutation - P-value\":null},\"2\":{\"1014F mutation - Unnamed: 0_level_1\":\"1575Y mutation\",\"1014F mutation - Total n\":\"1575Y mutation\",\"1014F mutation - LL\":\"1575Y mutation\",\"1014F mutation - LF\":\"1575Y mutation\",\"1014F mutation - FF\":\"1575Y mutation\",\"1014F mutation - f (1014F)\":\"1575Y mutation\",\"1014F mutation - P-value\":\"1575Y mutation\"},\"3\":{\"1014F mutation - Unnamed: 0_level_1\":null,\"1014F mutation - Total n\":\"Total n\",\"1014F mutation - LL\":\"NN\",\"1014F mutation - LF\":\"NY\",\"1014F mutation - FF\":\"YY\",\"1014F mutation - f (1014F)\":\"f (A575Y)\",\"1014F mutation - P-value\":\"P-value\"},\"4\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"57\",\"1014F mutation - LF\":\"19\",\"1014F mutation - FF\":\"4\",\"1014F mutation - f (1014F)\":\"0.169\",\"1014F mutation - P-value\":\"0.39\"},\"5\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"77\",\"1014F mutation - LL\":\"49\",\"1014F mutation - LF\":\"22\",\"1014F mutation - FF\":\"6\",\"1014F mutation - f (1014F)\":\"0.221\",\"1014F mutation - P-value\":null}}\n", - "\n", - "header: Introduction\n", - "\n", - "Use of the longlasting insecticidal net (LLIN) is pivotal in the fight against malaria in Africa. A massive scaling up of the distribution of this commodity has occurred over the past 15 years, with 178 million LLINs delivered for use in sub-Saharan Africa (SSA) in 2015 alone [World Health Organization (WHO), 2016]. Although reliable estimates of LLIN usage are very hard to obtain, the WHO estimates that 53% of the population at risk in SSA slept under an LLIN in 2015 [WHO, 2016]. The results have been dramatic: an estimated 450 million clinical cases of malaria were averted in the last 15 years by the use of LLINs [Bhatt _et al._, 2015].\n", - "\n", - "All LLINs in current use contain pyrethroid insecticides, but there is growing recognition that increases in the prevalence and intensity of pyrethroid resistance, driven at least in part by the scale-up in the use of LLINs, could jeopardize recent gains in malaria control [WHO, 2012]. Direct evidence that pyrethroid\n", - "resistance is reducing either the personal or community-level protection provided by LLINS is challenging to obtain (Kleinschmidt _et al._, 2015; Ranson & Lissenden, 2016), but models of malaria transmission predict that even relatively low levels of resistance can substantially reduce the public health benefits of LILINS (Churcher _et al._, 2016). In countries that rely on the LLIN as the primary malaria prevention tool, the only currently available alternatives to conventional pyrethroid-only LLINS are nets in which the synerigent piperonyl butoxide (PBO) has been included in the fibres making up all, or part, of the net. Piperonyl butoxide inhibits cytochrome P450s, which comprise one of the most important enzyme families involved in pyrethroid resistance, and exposure to PBO has been shown to reduce resistance and sometimes to restore susceptibility to pyrethroids in malaria vectors (Jones _et al._, 2013; Edi _et al._, 2014).\n", - "\n", - "Four brands of LLIN containing PBO have received interim approval from the WHO as conventional LLINS. These are the PermaNet(r) 3.0 (deltamethrin+PBO) (Vestergaard Frandsen Holding SA, Lausanne, Switzerland), the Olvest(r) Plus (permethrin+PBO) (Sumitomo Chemical Asia Pte Ltd, Health and Crop Sciences Sector, Tokyo, Japan), the Veeralin(r) (alpha cypermethrin+PBO) (VKA Polymers Pte Ltd, Karur, India) and the DawaPlus(r) (deltamethrin+PBO) (Tana Netting Co. Ltd, Dubai, U.A.E.). The benefit of the addition of PBO is only expected to manifest in areas in which mosquito populations are resistant to pyrethroids and experimental hut trials of PBO LLINS in areas of resistance have supported this prediction. Increased mosquito mortality was observed in experimental huts containing PBO LLINS compared with conventional LLINS in Ivory Coast, Benin and Burkina Faso (Corbel _et al._, 2010; Ngousso _et al._, 2010; Koudou _et al._, 2011; Pennetier _et al._, 2013) and reductions in blood feeding rates were also reported in trials in the latter two countries. All of these sites reported high levels of pyrethroid resistance.\n", - "\n", - "There has been a dramatic escalation in the strength of pyrethroid resistance in southwestern Burkina Faso since earlier trials of PBO LLINS in 2007. World Health Organization cone bioassays performed in 2012 revealed that none of the conventional LLINS were effective in killing local vector populations and that the performance of the PBO LLIN PermaNet(r) 3.0 was also compromised in these assays (Toe _et al._, 2014). Although the numbers of malaria deaths in Burkina Faso have fallen over the past 10 years, numbers of malaria cases have risen year on year despite countywide LLIN distribution campaigns [National Malaria Control Programme (NMCP), personal communication; K.H.Toe, 2017]. In order to advise the NMCP on whether a switch to PBO LLINS may be warranted to target these highly resistant populations, an experimental hut trial was undertaken in two rice-growing areas in the southwestern region of Burkina Faso.\n", - "\n", - "header: Conclusions\n", - "\n", - "The results of these experimental hit studies with entomological endpoints suggest that substituting conventional LLINs with PBO LLINs in areas where there is a high prevalence of pyrethroid resistance in local vectors may be an effective strategy to maintain the efficacy of malaria vector control. The public health benefit of this would depend on a wide range of factors, including the level of malaria endemicity, LLIN coverage rates and the predominant mosquito vectors present, but a recent modelling exercise predicts that in some settings, a switch to PBO LLINs could aver up to 0.5 clinical cases per person per year (Churcher _et al._, 2016). These predictions from models are now being evaluated in large-scale field trials. A recent study in Tanzania reported a 33% protective efficacy of PBO LLINs over conventional LLINs after 2 years of use (Protopopoff _et al._, 2018). A larger trial, involving the distribution of over 10.7 million nets in Uganda, is evaluating whether PBO nets reduce malaria prevalence under programmatic conditions ([https://www.againstmalaria.com](https://www.againstmalaria.com), [https://www.pmi.gov](https://www.pmi.gov)).\n", - "\n", - "In light of the results from experimental hit studies, including the current study, and after reviewing data from the first clinical trial of a PBO LLIN, the WHO recently made a policy recommendation that national malaria control programmes should consider deployment of PBO LLINs in areas with pyrethroid-resistant vectors (WHO, 2017). If deployed at scale, PBO LLINs may play an important role in reducing the immediate threat of pyrethroid resistance to malaria control.\n", - "\n", - "header: Experimental hut results\n", - "\n", - "In total, 12 915 specimens from four different mosquito genera were collected inside the huts (sleeping rooms and veranda traps) over the 6-week trial (Tengrela, \\(n\\) = 5808; VK5, \\(n\\) = 7107). Most specimens collected from the huts belonged to the _An. gambiae s.l._ species complex, accounting for 75.4% (_n_ = 4379) in Tengrela and 98.8% (_n_ = 7020) in VK5. The second most frequently collected _Anopheles_ species was _An. rhinorensis_, of which 49 and 19 specimens were collected in Tengrela and VK5, respectively. Other _Anopheles_ mosquito species, including _An. funestus_ (_n_ = 3), _An. nili_ (_n_ = 2) and _An. coustani_ (_n_ = 3), were collected in Tengrela. Additional mosquito taxa were also collected, including _Mansonia_ sp. (_n_ = 1330 in Tengrela and \\(n\\) = 45 in VK5), _Culex_ sp. (_n_ = 41 in Tengrela and \\(n\\) = 23 in VK5) and _Aedes_ sp. (_n_ = 1 in Tengrela) (all: Diptera: Culicidae). Because of the low numbers of other genera, only data for _An. gambiae s.l._ were included in the analysis.\n", - "\n", - "Within the total of 11 399 _An. gambiae s.l._ caught at both field sites, there was considerable variation between weeks and treatments in the numbers of mosquitoes entering the huts in both study locations (Fig. 4). The average number of mosquitoes caught per night/per hut was between 13 (PermaNet 3.0) and 20.7 (Olyset Net) mosquitoes (Table S3) and induced deterrence was found only for the Olyset Net, albeit at a low ratio of 1.31 (95% CI 1.02-1.66; \\(P\\) < 0.05) (Fig. 4).\n", - "\n", - "header: _Pyrethroid resistance in Tengrela and VK5 and associated mechanisms_: Efficacy of LLINs under laboratory conditions\n", - "\n", - "All LLINs tested showed good bio-efficacy in cone bioassays against the susceptible laboratory Kisumu strain with 60 min knock-down and 24 h mortality rates of all LLINs above the 98% and 80% WHO thresholds (WHO, 2005) (Table S1). By contrast, in tests using the field-caught mosquitoes, the mortality threshold was met only by the top panels of the PermaNet 3.0 (Fig. 3). Knock-down rates exceeded the 98% threshold for the PermaNet 3.0 in VK5 only (Table S1).\n", - "\n", - "header: Pyrethroid resistance in southwest Burkina Faso: Bio-efficacy of LLINs in cone bioassays\n", - "\n", - "The low levels of mortality observed in cone bioassays in this study are similar to those reported previously in VK7, a neighbouring village to VK5, in the Vallee du Kou rice-growing region. However, whereas the current study found that exposure to the tops of the PermaNet 3.0 nets resulted in mortality levels exceeding the WHO threshold of 80%, equivalent bioassays conducted in the VK7 population in 2012 showed mortality of only 43%. Cone bioassays are not a reliable method of comparing the performance of LLINs containing different pyrethroids because of the inherent differences in extico-repellency within this class, which can affect exposure time (Siegert _et al._, 2009). In particular, cone tests may underestimate the performance of permethrin LLINs; this is indicated by comparison of the cone bioassay results in Fig. 3, in which the Olyset Net was found to induce considerably lower mortality than the PermaNet 2.0, although experimental hut results showed similar levels of mortality in huts with these two net types (Table S3).\n", - "\n", - "Fig. 3: Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (_P_ < 0.001), † (_P_ < 0.0001), n.s. (non-significant, \\(\\frac{1}{2}\\) (_P_ < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wicyclonlinelibrary.com].\n", - "\n", - "\n", - "Nevertheless, the results of these cone bioassays provide further evidence that resistance can be at least partially ameliorated by exposure to PBO.\n", - "\n", - "header: Experimental hut trials\n", - "\n", - "Each station consisted of six experimental huts built according to the West African style (WHO, 2013). The study had six arms that used, respectively, five different LLINs and one net with no insecticide treatment as a negative control (Table 1). The nets were obtained from the manufacturers and were unpacked and kept in the shade for 24 h, but not washed prior to testing. Two of the nets, the OlysetPlus and PermaNet 3.0, contain PBO, whereas the other three LLINs contain only pyrethroids. The LLINs were holed according to WHO standard procedures (WHO, 2013). A total of six holes (4 cm x 4 cm) per net were cut, two on each of the long sides and one on each of the short sides.\n", - "\n", - "Study participants (male sleepers) spent 6 nights per week under a net in an experimental hut from 20.00 hours to 05.00 hours, followed by 1 day of break. The sleepers were rotated through the six huts so that each sleeper spent 1 night per week under each net type. To complete a full Latin square rotation with all combinations of sleeper, net type and hut, the study ran over 36 days from 8 September to 22 October 2014.\n", - "\n", - "Each morning at 05.00 hours, mosquitoes were collected manually by the sleepers, with supervision, from under the net, inside the hut and on the exit veranda. The collected specimens were morphologically identified to genus and, where possible, to species level (Gillies & Coetzee, 1987), grouped according to their gonotrophic stage (blood-fed, unfed or gravid), and scored as dead or alive. Live mosquitoes were transferred to paper cups, provided with 10% sugar water and kept in the insectary described above for 24 h, after which delayed mortality was recorded. All specimens were stored on silica gel for further molecular analysis.\n", - "\n", - "Data analysis was performed in the open-source statistical software R Version 3.3.2 (R Development Core Team, 2011) using the libraries 'lme4' (Bates _et al._, 2012) and 'glmADMB' (Skaug _et al._, 2012) for generalized linear mixed models (GLMMs). Plots were then generated with the package 'ggplot2' (Wickham, 2009).\n", - "\n", - "In the statistical analysis of hut trial data, in order to increase the number of replicates, give more power and increase confidence in the analysis, data collected from both sites (Tengrela and VK5) were pooled and the following four outcomes for _An. coluzzii_ were compared between the LLINs and the untreated control net, as well as between the PBO and non-PBO nets from the same manufacturer: (a) deterrence (i.e. the reduction in hut entry relative to the control or non-PBO net); (b) induced exophily (i.e. the ratio of the odds of a mosquito being found in the veranda trap compared with the hut); (c) blood feeding inhibition (i.e. the ratio of the odds of blood\n", - "\n", - "fed vs. unfed mosquitoes), and (d) induced mortality [i.e. the ratio of the odds of dead vs. alive mosquitoes] (The original dataset for _An. gambiae s.l._ is supplied in Table S2.) Immediate mortality and mortality at 24 h post-collection were combined for the analysis. Deterrence was analysed as the ratio in total numbers between the treatment arms (or PBO net) vs. the control arm (or non-PBO net). The numbers of mosquitoes in the room and the veranda were combined and analysed using a GLMM with a negative binomial distribution and a log link function using the R function 'glmandmdb()' in the 'glmmADMB' package. In the model, the net type was the fixed effect term and random intercepts were introduced for the sleeper and the hut, and a random slope for the day depending on the location. For proportional outcomes of induced exophily, blood feeding inhibition and induced mortality, the negative binomial model was replaced by a GLMM with a binomial distribution and logit link function using the R function 'glmer()' in the 'lme4' package. In the models, in addition to the terms listed above, a random intercept was introduced for each observation to account for unexplained overdispersion. For statistical testing, the level of significance was set at \\(a\\) = 0.05.\n", - "\n", - "In addition to the ratios described above, averages (i.e. the modes) and 95% confidence intervals (CIs) of the crude values underlying the outcomes were computed by the same models as above but using the individual nets as the intercept. These corresponding crude values were: (a) entry rate (i.e. the number of mosquitoes entering a hut); (b) exit rate (i.e. the number of mosquitoes collected from the veranda trap; (c) blood feeding rate (i.e. the proportion of blood-fed mosquitoes), and (d) mortality rate (i.e. the proportion of dead mosquitoes at 24 h post-collection).\n", - "\n", - "The study participants were recruited from the local communities and gave informed consent. Ethical approval was obtained from the Ethical Committee for Health Research of the Ministry of Health and Ministry of Research in Burkina Faso (Deliberation No. 2013-07-057, 11 July 2013). Malaria chemotherapy was not offered to study participants in line with Ministry of Health recommendations. However, medical supervision was provided throughout the study and any malaria case was treated according to national requirements.\n", - "\n", - "header: Materials and methods\n", - "\n", - "The experimental hut studies were carried out at two field stations in southwest Burkina Faso: the first is located in the Vallee du Kou.5 (VK5) near Bobo-Dioulasso (11*39' N, 04*41' W) and belongs to the Institut de Recherche en Science de la Sante (IRSS)/Centre MURAZ, and the second is located at Tengrela (10*40' N, 04*50' W) near Banfora and is maintained by the Centre National de Recherche et de Formation sur le Paludisme (CNRFP). These two sites are separated by approximately 120 km. Previous surveys revealed _Anopheles coluzzii_ (formerly _Anopheles gambiae s.s._ M molecular form) to be the predominant _Anopheles_ species at both sites. High levels of resistance to both DDT and pyrethroids have been reported previously at both sites (Ngufor _et al._, 2014; Toe _et al._, 2015).\n", - "\n", - "header: Study sites: Characterization of mosquito populations\n", - "\n", - "_Anopheles gambiae s.l._ larvae were collected in Tengrela and VK5 and reared to adults in local insectaries (mean relative humidity: 75+- 10%; mean temperature: 27+- 2*C). To assess susceptibility to pyrethroids, batches of approximately 25 non-blood-fed _An. gambiae s.l._ females aged 3-5 days were exposed to papers treated with 0.75% permethrin or 0.05% deltamethrin. The papers and susceptibility test kits were purchased from the Universiti Sains Malaysia (Penang, Malaysia). In parallel bioassays, mosquitoes were exposed to papers treated with 4% PBO [prepared by the Liverpool School of Tropical Medicine (LSTM)] for 1 h before they were transferred to tubes containing either insecticide-treated papers or insecticide-free papers and exposed for a further 1 h. Knock-down was recorded at the end of exposure and mortality was recorded 24 h later.\n", - "\n", - "The bio-efficacy of the LLINS was tested using non-blood-fed mosquitoes aged 3-5 days from local larval collections, and from the Kisumu susceptible laboratory strain, using the WHO cone bioassay procedure (WHO, 2013). For each LLIN type, two unwashed nets were tested under insectary conditions. Ten mosquitoes per cone were exposed for 3 min to 30 cm x 30 cm net pieces sampled from the top, the short and the long sides of the net. During exposure, the set-up was kept at an angle of 45 degrees as recommended (Owusu & Muller, 2016). Knock-down and mortality were recorded at 60 min and 24 h after exposure, respectively. Conventional LLINs were compared with PBO LLINS using Fisher's exact test (2x2 contingency table, significance level of 0.05) (http://wwwgraphpadcom/quickcales/contingency2) (Roberts & Andre, 1994).\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Burkina Faso\",\"Site\":\"Vallee du Kou 5\",\"Start_month\":9,\"Start_year\":2014,\"End_month\":10,\"End_year\":2014},\"S02\":{\"Study_type\":\"Hut trial\",\"Country\":\"Burkina Faso\",\"Site\":\"Tengrela\",\"Start_month\":9,\"Start_year\":2014,\"End_month\":10,\"End_year\":2014}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"Untreated net\",\"Net_holed\":0.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":null,\"Concentration_initial\":null},\"N02\":{\"Net_type\":\"Olyset Net\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"8.6 x 10-4 kg\\/m2\"},\"N03\":{\"Net_type\":\"Olyset Plus\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"permethrin, PBO\",\"Concentration_initial\":\"8.6 x 10-4 kg\\/m2, 4.3 x 10-4 kg\\/m2\"},\"N04\":{\"Net_type\":\"PermaNet 2.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"5.5 x 10-5 kg\\/m2\"},\"N05\":{\"Net_type\":\"PermaNet 3.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin, PBO\",\"Concentration_initial\":\"2.8 g\\/kg, 4.0 g\\/kg, 25 g\\/kg\"},\"N06\":{\"Net_type\":\"Dawa Plus 2.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"8.0 x 10-5 kg\\/m2\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Disclaimer\n", - "\n", - "The findings and conclusions in this manuscript are those of the authors and do not necessarily represent the views of the CDC. Use of trade names is for identification only and does not imply endorsement by the Centers for Disease Control and Prevention, the Public Health Service, or the US Department of Health and Human Services.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "Data supporting the conclusions of this article are included within the article.\n", - "\n", - "header: Abbreviations\n", - "\n", - "DDT: Dichroo-diphenyl-trichloroethane; ELISA: Enzyme-linked immunosorbent Assay; IRS: Indoor residual spray; ITS: Insecticide-treated net; PBO: Piperonyl butoxide; PCR Polymerase chain reaction; WHO: World Health Organization; WHORES: World Health Organization Pesticide Evaluation Scheme.\n", - "\n", - "header: Use of nets for the study\n", - "\n", - "During the study, two types of nets (PermaNet(r) 2.0 and PermaNet(r) 3.0) with and without IRS were assessed. Moreover, an untreated net was used with IRS and untreated net without IRS was used as a negative control. Both PermaNet(r) 2.0 and PermaNet(r) 3.0 nets are treated with the pyrethroid deltamethrin, but PermaNet 3.0 has also PBO synergist. During the study, each ITN in each hut was replaced by a new replicate net every 3 weeks since the trial had no replicate huts. Eighteen holes (4 cm x 4 cm) were cut in each net purposefully to simulate a torn net [11].\n", - "\n", - "header: Indoor residual spraying (IRS)\n", - "\n", - "Actcllic(r) 300CS, a pirimiphos-methyl-based IRS insecticide, was applied to the three IRS treatment huts 1 week before the start of the trial. Pirimiphos-methyl is an organophosphate insecticide being used for IRS by the malaria elimination program of Ethiopia. During the spraying, filter papers were affixed to the wall surfaces at three heights (high, middle and low) to ensure the application was properly and uniformly applied and determine the concentration of the applied insecticide. The spray operators were trained on the spraying techniques and the wall surfaces of huts were lined with chalk to properly maintain the swath and avoid overlap following the WHO protocol.\n", - "\n", - "header: Abstract\n", - "\n", - "An experimental hut study evaluating the impact of pyrethroid-only and PBO nets alone and in combination with pirrimiphos-methyl-based IRS in Ethiopia\n", - "\n", - "Delenasaw Yevhalaw, Meshesha Balkew, Endalew Zermene, Sheleme Chibsa, Peter Mumba, Cecilia Flatley, Akiliu Seyoum, Melissa Yoshimizu, Sarah Zohdy, Dereje Dengela\n", - "\n", - "\n", - "\n", - "Pyrethroid resistance observed in populations of malaria vectors is widespread in Ethiopia and could potentially compromise the effectiveness of insecticide-based malaria vector control interventions. In this study, the impact of combining indoor residual spraying (IRS) and insecticide-treated nets (ITNs) on mosquito behaviour and mortality was evaluated using experimental huts.\n", - "\n", - "header: Wall bioassay\n", - "\n", - "Cone bioassays were conducted twice during the trial period to assess the bio-efficacy of Actclic 300CS. At each time point, three cones were fixed to the wall surfaces at three heights from the ground (high 160 cm, medium 100 cm and low 40 cm) of each hut and ten mosquitoes were used per cone with a total of 30 mosquitoes per hut, for each of the three sprayed huts and a control hut (120 mosquitoes in total). Mosquitoes were exposed for 30 min after which immediate knockdown was recorded and mortality was recorded after a 24 h holding period. Non-blood-fed, 3-5 day old adult female _Anopheles gambiae_ sensu lato (s.l.) were used for bioassays.\n", - "\n", - "The first cone bioassay was conducted 3 weeks after spray using a confirmed susceptible _An. arabiensis_ strain from Sekoru Insectary without pre-exposure to PBO synergist. The second bioassay was conducted at the end of the trial (10 weeks after spray). In the second bioassay, both susceptible _An. arabiensis_ laboratory strain from Sekoru Insectary and wild _An. gambiae_ s.l. were used. The assay was carried out with and without PBO pre-exposure for both strains. Wild populations of _An. gambiae_ s.l. used for the bioassays were raised from larvae and pupae collected from semi-permanent and permanent breeding habitats around Wolfkite area, central Ethiopia. They were reared to adults at Asendabo Field Insectary. Mosquitoes were exposed to papers treated with PBO (2%) in a WHO cylinder for 1 h.\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Background\n", - "\n", - "Malaria is an important public health and socio-economic problem in Ethiopia. The main malaria vector in Ethiopia is _Anopheles arabiensis,_ while _Anopheles pharoetiss, Anopheles funestus_ and _Anopheles nili_ play a secondary role in malaria transmission. _Anopheles stephensi,_ a common and efficient urban malaria vector in Southeast Asia and the Mediterranean Region, has also recently been reported in Ethiopia and neighboring countries including Djibouti and Sudan [1]. There is widespread resistance to dichloro-diphenyl-trichloroethane (DDT) and pyrethroids in _An. arabiensis_ and resistance has also been detected to organophosphates in some populations. _Anopheles pharoensis_ was also reported to be highly resistant to DDT [2]. The _kdr_ mutation (L1014F) has been detected in _An. arabiensis_ from many sites, while _ace-1R_ and _kdr_ (L1014S) were not detected in all populations [3, 4, 5]. Bottle bioassay tests with _An. arabiensis_ populations from all surveyed areas of Ethiopia found resistance to both permethrin and deltamethrin. However, susceptibility to permethrin and deltamethrin was restored following pre-exposure of mosquitoes to the synergist piperonyl butoxide (PBO), indicating involvement of P450-based metabolic resistance mechanisms in the Ethiopian populations of _An. arabiensis_[6].\n", - "\n", - "Indoor residual spraying (IRS) and insecticide-treated nets (ITNs) are the main vector control interventions in Ethiopia. Ethiopia has a long history of IRS. It began spraying DDT in the late 1950s during the Malaria Eradication Programme and malathion was also used for IRS in a few areas until 2010. Deltamethrin, a pyrethroid insecticide, was used for IRS from 2009 to 2013, and since then, bendiocarb and propoxur (carbamate insecticides) and pirimihos-methyl (organophosphate insecticide) have been used for IRS in Ethiopia. The PMI VectorLink Ethiopia Project piloted the clothianidin (neonicotinoid)-based insecticides, SumiShield(r) 50WG and Fludora Fusion WP-SB, in 2020 in Menge District in the Benishangul Gumuz Region. Insecticide-treated nets have been widely distributed to households in malaria risk areas every 3 years mainly through the health extension programme [7].\n", - "\n", - "Recent studies in Tanzania showed that the impact of PBO nets could be comparable to the impact of pyrethroid-only nets when combined with IRS, and that there was no significant difference in malaria prevalence between the pyrethroid-only net + IRS and PBO net + IRS study arms [8]. This is of interest for malaria control operations in Ethiopia, as such data can inform future decisions on ITN procurements and strategic\n", - "distribution, as well as insecticide choices for IRS, which may reduce overall malaria vector control costs. In addition, it is also important to understand possible antagonistic effects of PBO and pirimiphos-methyl, as suggested by the World Health Organization (WHO), before recommending the combined use of PBO nets and pirimiphos methyl IRS for malaria control in Ethiopia.\n", - "\n", - "This study aimed at assessing the impact of the combination of currently available vector control tools (IRS, pyrethroid-only nets, and PBO nets) on mosquito behaviour, mortality and the possible antagonistic effect of PBO and pirimiphos-methyl using experimental hurts in Asendabo, Ethiopia. The hypothesis for the Ethiopia context was that the use of PBO nets in combination with IRS would better control malaria vectors than PBO nets alone and that the use of IRS in combination with pyrethroid-only nets would better control malaria vectors than pyrethroid-only nets alone.\n", - "\n", - "header: Competing interests\n", - "\n", - "We declare that we have no competing interests.\n", - "\n", - "header: Results\n", - "\n", - "The personal protection rate of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 33.3% and 50%, respectively. The mean killing effect of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 2% and 49%, respectively. Huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone demonstrated significantly higher excito-repellency than the control hut. However, mosquito mortality in the hut with IRS + untreated net, hut with IRS + PermaNet(r) 2.0 and hut with IRS + PermaNet(r) 3.0 were not significantly different from each other (p > 0.05). Additionally, pre-exposure of both the susceptible _Anopheles arabiensis_ laboratory strain and wild _Anopheles gambiae_ sensu late to PBO in the cone bioassay tests of Actellite 300CS sprayed surfaces did not reduce mosquito mortality when compared to mortality without pre-exposure to PBO.\n", - "\n", - "header: Conclusion\n", - "\n", - "Mosquito mortality rates from the huts with IRS alone were similar to mosquito mortality rates from the huts with the combination of vector control intervention tools (IRS + ITNs) and mosquito mortality rates from huts with PBO nets alone were significantly higher than huts with pyrethroid-only nets. The findings of this study help inform studies to be conducted under field condition for decision-making for future selection of cost-effective vector control intervention tools.\n", - "\n", - "header: Background: Methods\n", - "\n", - "A Latin Square Design was employed using six experimental huts to collect entomological data. Human volunteers slept in huts with different types of nets (pyrethroid-only net, PBO net, and untreated net) either with or without IRS (Actallic 300CS). The hut with no IRS and an untreated net served as a negative control. The study was conducted for a total of 54 nights. Both alive and dead mosquitoes were collected from inside nets, in the central rooms and verandah the following morning. Data were analysed using Stata/SE 14.0 software package (College Station, TX, USA).\n", - "\n", - "header: Conclusion\n", - "\n", - "In this study, significantly higher mosquito mortality rates were recorded from treatment huts with IRS than huts with ITNs alone, regardless of net type. Interestingly, the hut with IRS + untreated net had similar mosquito mortality rates as huts with combinations of vector control tools (IRS + pyrethroid-only nets and IRS + PBO nets). Moreover, immediate mortality rate of mosquitoes in IRS + untreated net was significantly higher than PermaNet 2.0 and PermaNet 3.0 nets. These suggest that IRS alone provides the greatest vector control impact. Indoor residual spraying alone or in combination with ITNs offered significantly higher personal protection against mosquito bites than the control hut. Moreover, the proportion of mosquito mortality was significantly higher in huts with PBO nets than huts with pyrethroid-only nets, but remained significantly lower than the huts that received IRS. In general, the findings of this study revealed that IRS alone was as efficacious as combinations of vector tools (IRS + ITNs) for malaria vector control at least over the 9-week study period. Field studies to further assess the impact of combinations of vector tools on malaria vector control in different eco-epidemiological settings are also warranted. This study \n", - "provides additional data for considering future selection of the most appropriate vector control tools for improved malaria vector control and management of insecticide resistance. This study also indicated that there was no antagonistic effect between PBO and IRS with pirimib-phos-methyl. However, further studies may be needed to determine if there are antagonistic effects in large scale IRS applications to evaluate the efficacy of PBO vs. IRS against different resistant vector populations in Ethiopia for decision-making to deploy either PBO nets or pirimib-phos-based IRS intervention.\n", - "\n", - "header: Results\n", - "\n", - "Overall, a total of 386 mosquitoes, comprising 235 _Anopheles_ spp. (60.9%) and 151 _Culex_ spp. (39.1%), were collected during the study. Of the _Anopheles_ mosquitoes, _An. gambiae_ s.l, _An. pharoensis_ and _Anopheles__custani_ accounted for 228 (97.0%), 6 (2.6%) and 1 (0.4%), respectively. The proportion of the total _Anopheles_ mosquitoes collected from each hut is presented in Fig. 1. There were no significant differences in mean percentage of _Anopheles_ mosquitoes between the different treatment and control huts (p > 0.05).\n", - "\n", - "An immediate mosquito mortality of 100% was recorded from all three huts with IRS throughout the study period. The mean immediate mosquito mortality rates from the control, PermaNet(r) 2.0 and PermaNet(r) 3.0 huts were 13.3% (95% CI 3-23%), 20.0% (95% CI 6-33%) and 70.0% (95% CI 55-84%), respectively (Fig. 2). The immediate mosquito mortality rate from the hut with IRS + untreated net was significantly higher than the PermaNet(r) 3.0 hut (p < 0.001). Similarly, the immediate mosquito mortality rate from the hut with PermaNet(r) 3.0 was significantly higher than that from the control hut (p < 0.001) as well as the PermaNet(r) 2.0 (p < 0.001) hut. The mosquito mortality rate from the PermaNet(r) 2.0 hut was not significantly different from that of the control hut (p = 0.4). On average the killing effect of PermaNet(r) 2.0 and PermaNet(r) 3.0 compared to the untreated net were 2.2% and 48.9%, respectively. The killing effects in the huts with PermaNet(r) 2.0 and PermaNet(r) 3.0 increased to 60.0% and 75.5% when combined with IRS. Delayed mosquito mortality rates of 14.3% and 41.7% were recorded from huts with PermaNet(r) 2.0 and PermaNet(r) 3.0, respectively.\n", - "\n", - "Of the 50 sub-samples of _An. gambiae_ s.l. analysed using species-specific PCR, 46 (92%) were identified as _An. arabiensis_ and four mosquito samples failed to amplify. The blood-feeding rate of the _Anopheles_\n", - "\n", - "Fig. 1: Proportion of mosquitoes collected that were _Anopheles_ spp. in each experimental hut, Asendabo, Ethiopia. Control is no IRS and untreated net \n", - "collected from each of the huts is presented in Fig. 3. Overall, 26 of the _Anopheles_ (11.1%) were blood-fed upon collection. Of the fed mosquitoes, human, bovine and mixed human/bovine blood were detected in 14 (53.9%), 2 (7.7%), 5 (19.2%) of the specimens, respectively. Blood meals from the remaining 5 (19.2%) of the specimens were unidentified. The overall proportion of human blood-fed _Anopheles_ was 73.1% (n = 19). The personal protection rates of PermaNet(r) 2.0 and PermaNet(r) 3.0 nets were 33.3% and 50%, respectively. When combined with IRS, the personal protection rate of PermaNet(r) 2.0 increased to 83.3% while the personal protection rate of PermaNet(r) 2.0 decreased to 83.3%.\n", - "\n", - "\n", - "\n", - "The personal protection rate of PermaNet(r)\n", - "\n", - "\n", - "PernaNet(r) 3.0 remained the same (50%). The proportions of human blood-fed _Anopheles_ collected from the control, PernaNet(r) 2.0, PernaNet(r) 3.0 and combined IRS-treated huts were 13.3% (95% CI 3.4-23.3), 11.4% (95% CI 0.9-22.0), 7.5% (95% CI 0.0-15.7) and 5.2% (95% CI 1.2-9.3), respectively.\n", - "\n", - "Overall, the majority of _Anopheles_ were collected from the rooms of the huts. The proportions of _Anopheles_ collected from the verandah of the IRS-treated and the control huts were 16.5% and 13.3%, respectively (Fig. 4). The proportion of _Anopheles_ collected from verandah of a hut with PernaNet(r) 2.0 was significantly higher than the proportion of _Anopheles_ collected from the control hut (p = 0.02).\n", - "\n", - "The mean knockdown rates of the susceptible _An. arabiensis_ laboratory strain in the bioassays conducted 3 weeks post-spray were 20.2% and 2.9% in the IRS-treated and control huts, respectively. The mean 24 h mortality rates from IRS-treated and control huts were 100% and 2.9%, respectively (Fig. 5).\n", - "\n", - "The combined mean 30 min knockdown rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. exposed to IRS-treated huts 10 weeks post-spray, with and without pre-exposure to PBO, was 1.1% (Fig. 6). The 24 h mortality rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. at 10 weeks post-spray which were exposed to IRS-treated hut wall surfaces were 100%, irrespective of pre-exposure of mosquitoes to PBO.\n", - "\n", - "header: Blood meal host source analysis and mosquito identification\n", - "\n", - "All the fed mosquitoes collected from the different huts were assayed to determine the blood meal host source using direct ELISA [13]. Moreover, a sub-sample of _An. gambiae_ s.l. was also molecularly identified to species using species-specific PCR following established protocol [14].\n", - "\n", - "header: Data analysis\n", - "\n", - "Data from the five treatment huts were compared with data from the control hut to determine the insecticidal effects on the variables listed above.\n", - "\n", - "Personal protection, killing effect, and exophily were estimated using the following formulas [9, 11].\n", - "\n", - "\\[\\text{Personal protection }(\\%) = 100 \\times (B_{u} - B_{t} )/B_{u} ;\\]\n", - "\n", - "where \\(B_{t}\\) is the total number of freshly blood-fed mosquitoes in the huts with treated nets. \\(B_{u}\\) is the total number of freshly blood-fed mosquitoes in the huts with untreated nets.\n", - "\n", - "\\[\\text{Killing effect }(\\%) = 100 \\times (K_{t} - K_{u} )/T_{u} ;\\]\n", - "\n", - "where \\(K_{t}\\) is number of mosquitoes killed (immediate) in the huts with treated nets. \\(K_{u}\\) is number of mosquitoes killed (immediate) in the huts with untreated nets. \\(T_{u}\\) is the total number of mosquitoes collected from the huts with untreated nets.\n", - "\n", - "\n", - "Exophily (%) = (E_v/Et) x 100;\n", - "\n", - "where Ev is the number of mosquitoes found in verandah. Et is the total number of mosquitoes found inside the hut and verandah\n", - "\n", - "For all three parameters, mosquito entry was estimated by adding the number of dead and alive mosquitoes observed inside the hut and the verandah. Estimates of personal protection and killing effect were determined using mosquitoes from all collection nights.\n", - "\n", - "To test differences in mean mosquito density in each of the treatment huts, ANOVA was employed after log-transformation of non-normal distributed mosquito count data. T-tests were employed to determine the differences in mean proportions of blood-fed mosquitoes and mosquitoes exiting early from the different test huts and control hut.\n", - "\n", - "In all analyses, the hut with the untreated net and without IRS was used as a negative control, but comparisons were made between all treatment groups. In all analyses, individual huts and sleepers were included in the models as random effects.\n", - "\n", - "header: Discussion\n", - "\n", - "Malaria vector control interventions have been intensified over the last decade in Ethiopia resulting in remarkable progress, with a reduction in children under-five mortality rates from 123 deaths per 1000 live births in 2005 to 55 deaths per 1000 live births in 2019 [15]. The vector control activities including mass-distribution/replacement of ITNs every 3 years in accordance with WHO recommendations and deployment of IRS in targeted areas appear to have played vital roles in the successes obtained in malaria control in Ethiopia [16]. However, malaria still remains a public health challenge in the country, where an estimated 52% of the population lives in areas at risk of malaria. With the successes gained in malaria control, a national malaria elimination goal is set for 2030 [17]. This study evaluated the impact of combining currently available vector control tools on mosquito behaviour and mortality.\n", - "\n", - "Compared to PernaNet(r) 2.0, PernaNet(r) 3.0 is impregnated with a higher concentration of deltamethrin and the roof panel is treated with both deltamethrin and PBO. The higher killing effect of PernaNet(r) 3.0 compared to PernaNet(r) 2.0 in this study could be attributed to the presence of the PBO synergist on the roof panel of the net and/or higher dosage of deltamethrin in the net. The synergist PBO works to inhibit P450 detoxification of pyrethroid insecticides and can result in partial or complete restoration of susceptibility to certain pyrethroids, such as deltamethrin, hence enhancing efficacy of the insecticides [18]. The role of PBO in affecting susceptibility in both wild and laboratory strain mosquitoes exposed to Actellite(r) 300CS\n", - "\n", - "Fig. 4: Proportion of _Anopheles_ collected from inside nets, rooms and verandahs of different experimental huts, Asendabo, Ethiopia \n", - "sprayed walls could not be determined as mortality rates in all IRS treatment huts were 100%. PBO nets have been shown to provide high levels of protection against _An. gambiae_ in a recent experimental hut trial in Cote d'Ivoire [19]. Moreover, the improved protective role of PBO nets on malaria prevalence was also documented in Uganda [20]. Personal protective efficacy of PBO nets may also last longer compared to the standard nets [21]. PBO nets are particularly important as a malaria control tool in areas where the protection against PBO is not a viable alternative to the standard nets.\n", - "\n", - "Fig. 5: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain following wall bioassays 3 weeks after ActeIlic 300CS spraying, Asendabo, Ethiopia\n", - "\n", - "Fig. 6: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain and wild _An. gambiae_ s.l. (with and without pre-exposure to PBO) following wall bioassays 10 weeks after IRS using ActeIlic 300CS, Asendabo, Ethiopia \n", - "pyrethroid resistance is high in the vector populations [22] and is, therefore, under consideration for more widespread distribution in Ethiopia. Despite these added advantages of PBO nets, the cost is currently higher than pyrethroid nets which may limit their wider use in malaria vector control in malaria endemic areas. Additionally, this study provides an example of a setting with high levels of pyrethroid resistance where PBO nets may not be sufficient.\n", - "\n", - "The proportion of _Anopheles_ retrieved from the verandah of huts with both PermaNet 2.0 and PermaNet 3.0 was higher than those from the verandah of the control hut. Huts with PermaNet 2.0 induced significantly higher exito-repellency compared to control huts. Insecticides often induce toxicity to mosquitoes. However, the non-toxic 'exito-repellent' effects of insecticides are often less understood. Pyrethroid and organophosphate insecticides are also known to have these non-killing effects. The impact of the non-killing effects of the insecticides on the risk of malaria is not clearly understood. Though exito-repellency appears to reduce indoor human-vector contact, it may on the contrary enhance risk of outdoor mosquito biting [23].\n", - "\n", - "The role of IRS as a key malaria vector control intervention tool is evident. Immediate mortality was observed in mosquitoes collected from the three huts sprayed with Actellic(r) 300CS up to the end of the study at 10 weeks post-spray. The proportion of blood-fed _Anopheles_ was significantly lower in the IRS-treated huts compared to the control hut. This could be due to the fast-acting nature of Actellic(r) 300CS insecticide with both contact and fumigant effects. This shows the potential of Actellic(r) 300CS as an insecticide of choice for IRS in areas where the local vector population is susceptible to the insecticide. _Anopheles arabiensis_ is susceptible to pirimibos-methyl in most parts of Ethiopia [10, 24]. Some earlier studies conducted in Ethiopia showed the effectiveness of combining IRS with ITNs compared to ITNs alone in suppressing vector populations [25]. Added benefits of combining IRS and ITNs in malaria prevention was also reported from other areas in sub-Saharan Africa [26-28]. In contrast, limited or no added benefit of combining IRS with ITNs as compared to ITNs alone has been reported elsewhere [29, 30]. This inconsistency could be attributed to differences in the intensity of malaria transmission and insecticide resistance of the local vector populations. The impact of the combined use of available vector control interventions appears to be more pronounced when applied in high transmission areas, and where the local vector populations are susceptible to the insecticide used for the IRS component [25].\n", - "\n", - "The importance of combining IRS and ITNs for malaria vector control is believed partly to come from the low or inconsistent utilization of ITNs by users and short residual efficacy of IRS insecticides [31, 32]. In Ethiopia, household surveys have shown approximately 50% of children under five and pregnant women use their nets with geographic variation [33]. The gap often created as a result of low utilization of ITNs may be complemented with IRS. ITN utilization and care depends on personal decisions and behavior [34]. However, once properly implemented, IRS rapidly suppresses local vector populations with no additional behaviors required from the residents, hence reducing malaria incidence [35]. However, effectiveness of IRS for malaria vector control is highly affected by both physiological and behavioral resistance of the local vector population to the insecticide [36], apart from operational factors and higher costs.\n", - "\n", - "As the study was conducted during the dry season of the year, the mosquito population density was not high and, therefore, limits the generalizability of the results. However, the findings of this study could provide preliminary information for vector control programs for the rational choice of future vector control intervention tools. In addition, combining indoor residual spraying using pirimibos-methyl with PBO nets has been reported to be antagonistic in some studies, but a negative interaction or antagonism between PBO and pirimibos-methyl was not detected in this study.\n", - "\n", - "header: Variables\n", - "\n", - "Four study outcomes measured were:\n", - "\n", - "1. Deterrence--the reduction in hut entry by mosquitoes in treatment huts relative to the control hut (hut with untreated net and no IRS).\n", - "2. Exophily--the proportion of mosquitoes found resting on the walls of the verandah.\n", - "3. Blood-feeding inhibition--the reduction in blood-feeding in treatment huts in comparison with control hut (hut with untreated net and no IRS).\n", - "4. Immediate and delayed mortality--the proportion of mosquitoes entering the hut that were dead in the morning (immediate mortality) or after being caught alive and held for 24 h with access to a sugar solution (delayed mortality).\n", - "\n", - "header: Methods\n", - "\n", - "The study was conducted using six experimental huts located at Asendabo, Jimma Zone, Oromia Regional State, Ethiopia, located between latitudes 7\" 42' 50\" N and 07\" 53' 50\" N and longitudes 37\" 11' 22\" E and 37\" 20' 36\" E, at altitudes ranging from 1672 to 1864 m above sea level. The huts were used previously for evaluation of vector control tools [9], but the roofs, walls, floors, ceilings and verandahs of each hut were completely renovated for use in this study. The huts are located approximately 0.3 km from the reservoir shore of Gilgel Gibe hydroelectric power dam in Nada District, Oromia Regional State, Ethiopia. Earlier work showed that _An. arabiensis_ population from the study area was resistant to DDT, pyrethroids and malathion, while they were susceptible to primiphos-methyl and some of the carbamates used in malaria vector control [10].\n", - "\n", - "The six treatments in this study included:\n", - "\n", - "1. Control hut (no IRS, untreated net only).\n", - "2. Hut with PermaNet(r) 2.0 (deltamethrin) only (no IRS).\n", - "3. Hut with PermaNet(r) 3.0 (deltamethrin with PBO) only (no IRS).\n", - "4. Hut sprayed with Actcllic 300CS (1 g/m2) and untreated net.\n", - "5. Hut sprayed with Actcllic 300CS (1 g/m2) and PermaNet(r) 2.0.\n", - "6. Hut sprayed with Actcllic 300CS (1 g/m2) and PermaNet(r) 3.0.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Disclaimer\n", - "\n", - "The findings and conclusions in this manuscript are those of the authors and do not necessarily represent the views of the CDC. Use of trade names is for identification only and does not imply endorsement by the Centers for Disease Control and Prevention, the Public Health Service, or the US Department of Health and Human Services.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "Data supporting the conclusions of this article are included within the article.\n", - "\n", - "header: Indoor residual spraying (IRS)\n", - "\n", - "Actcllic(r) 300CS, a pirimiphos-methyl-based IRS insecticide, was applied to the three IRS treatment huts 1 week before the start of the trial. Pirimiphos-methyl is an organophosphate insecticide being used for IRS by the malaria elimination program of Ethiopia. During the spraying, filter papers were affixed to the wall surfaces at three heights (high, middle and low) to ensure the application was properly and uniformly applied and determine the concentration of the applied insecticide. The spray operators were trained on the spraying techniques and the wall surfaces of huts were lined with chalk to properly maintain the swath and avoid overlap following the WHO protocol.\n", - "\n", - "header: Wall bioassay\n", - "\n", - "Cone bioassays were conducted twice during the trial period to assess the bio-efficacy of Actclic 300CS. At each time point, three cones were fixed to the wall surfaces at three heights from the ground (high 160 cm, medium 100 cm and low 40 cm) of each hut and ten mosquitoes were used per cone with a total of 30 mosquitoes per hut, for each of the three sprayed huts and a control hut (120 mosquitoes in total). Mosquitoes were exposed for 30 min after which immediate knockdown was recorded and mortality was recorded after a 24 h holding period. Non-blood-fed, 3-5 day old adult female _Anopheles gambiae_ sensu lato (s.l.) were used for bioassays.\n", - "\n", - "The first cone bioassay was conducted 3 weeks after spray using a confirmed susceptible _An. arabiensis_ strain from Sekoru Insectary without pre-exposure to PBO synergist. The second bioassay was conducted at the end of the trial (10 weeks after spray). In the second bioassay, both susceptible _An. arabiensis_ laboratory strain from Sekoru Insectary and wild _An. gambiae_ s.l. were used. The assay was carried out with and without PBO pre-exposure for both strains. Wild populations of _An. gambiae_ s.l. used for the bioassays were raised from larvae and pupae collected from semi-permanent and permanent breeding habitats around Wolfkite area, central Ethiopia. They were reared to adults at Asendabo Field Insectary. Mosquitoes were exposed to papers treated with PBO (2%) in a WHO cylinder for 1 h.\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Abbreviations\n", - "\n", - "DDT: Dichroo-diphenyl-trichloroethane; ELISA: Enzyme-linked immunosorbent Assay; IRS: Indoor residual spray; ITS: Insecticide-treated net; PBO: Piperonyl butoxide; PCR Polymerase chain reaction; WHO: World Health Organization; WHORES: World Health Organization Pesticide Evaluation Scheme.\n", - "\n", - "header: Background\n", - "\n", - "Malaria is an important public health and socio-economic problem in Ethiopia. The main malaria vector in Ethiopia is _Anopheles arabiensis,_ while _Anopheles pharoetiss, Anopheles funestus_ and _Anopheles nili_ play a secondary role in malaria transmission. _Anopheles stephensi,_ a common and efficient urban malaria vector in Southeast Asia and the Mediterranean Region, has also recently been reported in Ethiopia and neighboring countries including Djibouti and Sudan [1]. There is widespread resistance to dichloro-diphenyl-trichloroethane (DDT) and pyrethroids in _An. arabiensis_ and resistance has also been detected to organophosphates in some populations. _Anopheles pharoensis_ was also reported to be highly resistant to DDT [2]. The _kdr_ mutation (L1014F) has been detected in _An. arabiensis_ from many sites, while _ace-1R_ and _kdr_ (L1014S) were not detected in all populations [3, 4, 5]. Bottle bioassay tests with _An. arabiensis_ populations from all surveyed areas of Ethiopia found resistance to both permethrin and deltamethrin. However, susceptibility to permethrin and deltamethrin was restored following pre-exposure of mosquitoes to the synergist piperonyl butoxide (PBO), indicating involvement of P450-based metabolic resistance mechanisms in the Ethiopian populations of _An. arabiensis_[6].\n", - "\n", - "Indoor residual spraying (IRS) and insecticide-treated nets (ITNs) are the main vector control interventions in Ethiopia. Ethiopia has a long history of IRS. It began spraying DDT in the late 1950s during the Malaria Eradication Programme and malathion was also used for IRS in a few areas until 2010. Deltamethrin, a pyrethroid insecticide, was used for IRS from 2009 to 2013, and since then, bendiocarb and propoxur (carbamate insecticides) and pirimihos-methyl (organophosphate insecticide) have been used for IRS in Ethiopia. The PMI VectorLink Ethiopia Project piloted the clothianidin (neonicotinoid)-based insecticides, SumiShield(r) 50WG and Fludora Fusion WP-SB, in 2020 in Menge District in the Benishangul Gumuz Region. Insecticide-treated nets have been widely distributed to households in malaria risk areas every 3 years mainly through the health extension programme [7].\n", - "\n", - "Recent studies in Tanzania showed that the impact of PBO nets could be comparable to the impact of pyrethroid-only nets when combined with IRS, and that there was no significant difference in malaria prevalence between the pyrethroid-only net + IRS and PBO net + IRS study arms [8]. This is of interest for malaria control operations in Ethiopia, as such data can inform future decisions on ITN procurements and strategic\n", - "distribution, as well as insecticide choices for IRS, which may reduce overall malaria vector control costs. In addition, it is also important to understand possible antagonistic effects of PBO and pirimiphos-methyl, as suggested by the World Health Organization (WHO), before recommending the combined use of PBO nets and pirimiphos methyl IRS for malaria control in Ethiopia.\n", - "\n", - "This study aimed at assessing the impact of the combination of currently available vector control tools (IRS, pyrethroid-only nets, and PBO nets) on mosquito behaviour, mortality and the possible antagonistic effect of PBO and pirimiphos-methyl using experimental hurts in Asendabo, Ethiopia. The hypothesis for the Ethiopia context was that the use of PBO nets in combination with IRS would better control malaria vectors than PBO nets alone and that the use of IRS in combination with pyrethroid-only nets would better control malaria vectors than pyrethroid-only nets alone.\n", - "\n", - "header: Abstract\n", - "\n", - "An experimental hut study evaluating the impact of pyrethroid-only and PBO nets alone and in combination with pirrimiphos-methyl-based IRS in Ethiopia\n", - "\n", - "Delenasaw Yevhalaw, Meshesha Balkew, Endalew Zermene, Sheleme Chibsa, Peter Mumba, Cecilia Flatley, Akiliu Seyoum, Melissa Yoshimizu, Sarah Zohdy, Dereje Dengela\n", - "\n", - "\n", - "\n", - "Pyrethroid resistance observed in populations of malaria vectors is widespread in Ethiopia and could potentially compromise the effectiveness of insecticide-based malaria vector control interventions. In this study, the impact of combining indoor residual spraying (IRS) and insecticide-treated nets (ITNs) on mosquito behaviour and mortality was evaluated using experimental huts.\n", - "\n", - "header: Use of nets for the study\n", - "\n", - "During the study, two types of nets (PermaNet(r) 2.0 and PermaNet(r) 3.0) with and without IRS were assessed. Moreover, an untreated net was used with IRS and untreated net without IRS was used as a negative control. Both PermaNet(r) 2.0 and PermaNet(r) 3.0 nets are treated with the pyrethroid deltamethrin, but PermaNet 3.0 has also PBO synergist. During the study, each ITN in each hut was replaced by a new replicate net every 3 weeks since the trial had no replicate huts. Eighteen holes (4 cm x 4 cm) were cut in each net purposefully to simulate a torn net [11].\n", - "\n", - "header: Results\n", - "\n", - "The personal protection rate of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 33.3% and 50%, respectively. The mean killing effect of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 2% and 49%, respectively. Huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone demonstrated significantly higher excito-repellency than the control hut. However, mosquito mortality in the hut with IRS + untreated net, hut with IRS + PermaNet(r) 2.0 and hut with IRS + PermaNet(r) 3.0 were not significantly different from each other (p > 0.05). Additionally, pre-exposure of both the susceptible _Anopheles arabiensis_ laboratory strain and wild _Anopheles gambiae_ sensu late to PBO in the cone bioassay tests of Actellite 300CS sprayed surfaces did not reduce mosquito mortality when compared to mortality without pre-exposure to PBO.\n", - "\n", - "header: Conclusion\n", - "\n", - "In this study, significantly higher mosquito mortality rates were recorded from treatment huts with IRS than huts with ITNs alone, regardless of net type. Interestingly, the hut with IRS + untreated net had similar mosquito mortality rates as huts with combinations of vector control tools (IRS + pyrethroid-only nets and IRS + PBO nets). Moreover, immediate mortality rate of mosquitoes in IRS + untreated net was significantly higher than PermaNet 2.0 and PermaNet 3.0 nets. These suggest that IRS alone provides the greatest vector control impact. Indoor residual spraying alone or in combination with ITNs offered significantly higher personal protection against mosquito bites than the control hut. Moreover, the proportion of mosquito mortality was significantly higher in huts with PBO nets than huts with pyrethroid-only nets, but remained significantly lower than the huts that received IRS. In general, the findings of this study revealed that IRS alone was as efficacious as combinations of vector tools (IRS + ITNs) for malaria vector control at least over the 9-week study period. Field studies to further assess the impact of combinations of vector tools on malaria vector control in different eco-epidemiological settings are also warranted. This study \n", - "provides additional data for considering future selection of the most appropriate vector control tools for improved malaria vector control and management of insecticide resistance. This study also indicated that there was no antagonistic effect between PBO and IRS with pirimib-phos-methyl. However, further studies may be needed to determine if there are antagonistic effects in large scale IRS applications to evaluate the efficacy of PBO vs. IRS against different resistant vector populations in Ethiopia for decision-making to deploy either PBO nets or pirimib-phos-based IRS intervention.\n", - "\n", - "header: Conclusion\n", - "\n", - "Mosquito mortality rates from the huts with IRS alone were similar to mosquito mortality rates from the huts with the combination of vector control intervention tools (IRS + ITNs) and mosquito mortality rates from huts with PBO nets alone were significantly higher than huts with pyrethroid-only nets. The findings of this study help inform studies to be conducted under field condition for decision-making for future selection of cost-effective vector control intervention tools.\n", - "\n", - "header: Competing interests\n", - "\n", - "We declare that we have no competing interests.\n", - "\n", - "header: Blood meal host source analysis and mosquito identification\n", - "\n", - "All the fed mosquitoes collected from the different huts were assayed to determine the blood meal host source using direct ELISA [13]. Moreover, a sub-sample of _An. gambiae_ s.l. was also molecularly identified to species using species-specific PCR following established protocol [14].\n", - "\n", - "header: Results\n", - "\n", - "Overall, a total of 386 mosquitoes, comprising 235 _Anopheles_ spp. (60.9%) and 151 _Culex_ spp. (39.1%), were collected during the study. Of the _Anopheles_ mosquitoes, _An. gambiae_ s.l, _An. pharoensis_ and _Anopheles__custani_ accounted for 228 (97.0%), 6 (2.6%) and 1 (0.4%), respectively. The proportion of the total _Anopheles_ mosquitoes collected from each hut is presented in Fig. 1. There were no significant differences in mean percentage of _Anopheles_ mosquitoes between the different treatment and control huts (p > 0.05).\n", - "\n", - "An immediate mosquito mortality of 100% was recorded from all three huts with IRS throughout the study period. The mean immediate mosquito mortality rates from the control, PermaNet(r) 2.0 and PermaNet(r) 3.0 huts were 13.3% (95% CI 3-23%), 20.0% (95% CI 6-33%) and 70.0% (95% CI 55-84%), respectively (Fig. 2). The immediate mosquito mortality rate from the hut with IRS + untreated net was significantly higher than the PermaNet(r) 3.0 hut (p < 0.001). Similarly, the immediate mosquito mortality rate from the hut with PermaNet(r) 3.0 was significantly higher than that from the control hut (p < 0.001) as well as the PermaNet(r) 2.0 (p < 0.001) hut. The mosquito mortality rate from the PermaNet(r) 2.0 hut was not significantly different from that of the control hut (p = 0.4). On average the killing effect of PermaNet(r) 2.0 and PermaNet(r) 3.0 compared to the untreated net were 2.2% and 48.9%, respectively. The killing effects in the huts with PermaNet(r) 2.0 and PermaNet(r) 3.0 increased to 60.0% and 75.5% when combined with IRS. Delayed mosquito mortality rates of 14.3% and 41.7% were recorded from huts with PermaNet(r) 2.0 and PermaNet(r) 3.0, respectively.\n", - "\n", - "Of the 50 sub-samples of _An. gambiae_ s.l. analysed using species-specific PCR, 46 (92%) were identified as _An. arabiensis_ and four mosquito samples failed to amplify. The blood-feeding rate of the _Anopheles_\n", - "\n", - "Fig. 1: Proportion of mosquitoes collected that were _Anopheles_ spp. in each experimental hut, Asendabo, Ethiopia. Control is no IRS and untreated net \n", - "collected from each of the huts is presented in Fig. 3. Overall, 26 of the _Anopheles_ (11.1%) were blood-fed upon collection. Of the fed mosquitoes, human, bovine and mixed human/bovine blood were detected in 14 (53.9%), 2 (7.7%), 5 (19.2%) of the specimens, respectively. Blood meals from the remaining 5 (19.2%) of the specimens were unidentified. The overall proportion of human blood-fed _Anopheles_ was 73.1% (n = 19). The personal protection rates of PermaNet(r) 2.0 and PermaNet(r) 3.0 nets were 33.3% and 50%, respectively. When combined with IRS, the personal protection rate of PermaNet(r) 2.0 increased to 83.3% while the personal protection rate of PermaNet(r) 2.0 decreased to 83.3%.\n", - "\n", - "\n", - "\n", - "The personal protection rate of PermaNet(r)\n", - "\n", - "\n", - "PernaNet(r) 3.0 remained the same (50%). The proportions of human blood-fed _Anopheles_ collected from the control, PernaNet(r) 2.0, PernaNet(r) 3.0 and combined IRS-treated huts were 13.3% (95% CI 3.4-23.3), 11.4% (95% CI 0.9-22.0), 7.5% (95% CI 0.0-15.7) and 5.2% (95% CI 1.2-9.3), respectively.\n", - "\n", - "Overall, the majority of _Anopheles_ were collected from the rooms of the huts. The proportions of _Anopheles_ collected from the verandah of the IRS-treated and the control huts were 16.5% and 13.3%, respectively (Fig. 4). The proportion of _Anopheles_ collected from verandah of a hut with PernaNet(r) 2.0 was significantly higher than the proportion of _Anopheles_ collected from the control hut (p = 0.02).\n", - "\n", - "The mean knockdown rates of the susceptible _An. arabiensis_ laboratory strain in the bioassays conducted 3 weeks post-spray were 20.2% and 2.9% in the IRS-treated and control huts, respectively. The mean 24 h mortality rates from IRS-treated and control huts were 100% and 2.9%, respectively (Fig. 5).\n", - "\n", - "The combined mean 30 min knockdown rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. exposed to IRS-treated huts 10 weeks post-spray, with and without pre-exposure to PBO, was 1.1% (Fig. 6). The 24 h mortality rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. at 10 weeks post-spray which were exposed to IRS-treated hut wall surfaces were 100%, irrespective of pre-exposure of mosquitoes to PBO.\n", - "\n", - "header: Variables\n", - "\n", - "Four study outcomes measured were:\n", - "\n", - "1. Deterrence--the reduction in hut entry by mosquitoes in treatment huts relative to the control hut (hut with untreated net and no IRS).\n", - "2. Exophily--the proportion of mosquitoes found resting on the walls of the verandah.\n", - "3. Blood-feeding inhibition--the reduction in blood-feeding in treatment huts in comparison with control hut (hut with untreated net and no IRS).\n", - "4. Immediate and delayed mortality--the proportion of mosquitoes entering the hut that were dead in the morning (immediate mortality) or after being caught alive and held for 24 h with access to a sugar solution (delayed mortality).\n", - "\n", - "header: Background: Methods\n", - "\n", - "A Latin Square Design was employed using six experimental huts to collect entomological data. Human volunteers slept in huts with different types of nets (pyrethroid-only net, PBO net, and untreated net) either with or without IRS (Actallic 300CS). The hut with no IRS and an untreated net served as a negative control. The study was conducted for a total of 54 nights. Both alive and dead mosquitoes were collected from inside nets, in the central rooms and verandah the following morning. Data were analysed using Stata/SE 14.0 software package (College Station, TX, USA).\n", - "\n", - "header: Data analysis\n", - "\n", - "Data from the five treatment huts were compared with data from the control hut to determine the insecticidal effects on the variables listed above.\n", - "\n", - "Personal protection, killing effect, and exophily were estimated using the following formulas [9, 11].\n", - "\n", - "\\[\\text{Personal protection }(\\%) = 100 \\times (B_{u} - B_{t} )/B_{u} ;\\]\n", - "\n", - "where \\(B_{t}\\) is the total number of freshly blood-fed mosquitoes in the huts with treated nets. \\(B_{u}\\) is the total number of freshly blood-fed mosquitoes in the huts with untreated nets.\n", - "\n", - "\\[\\text{Killing effect }(\\%) = 100 \\times (K_{t} - K_{u} )/T_{u} ;\\]\n", - "\n", - "where \\(K_{t}\\) is number of mosquitoes killed (immediate) in the huts with treated nets. \\(K_{u}\\) is number of mosquitoes killed (immediate) in the huts with untreated nets. \\(T_{u}\\) is the total number of mosquitoes collected from the huts with untreated nets.\n", - "\n", - "\n", - "Exophily (%) = (E_v/Et) x 100;\n", - "\n", - "where Ev is the number of mosquitoes found in verandah. Et is the total number of mosquitoes found inside the hut and verandah\n", - "\n", - "For all three parameters, mosquito entry was estimated by adding the number of dead and alive mosquitoes observed inside the hut and the verandah. Estimates of personal protection and killing effect were determined using mosquitoes from all collection nights.\n", - "\n", - "To test differences in mean mosquito density in each of the treatment huts, ANOVA was employed after log-transformation of non-normal distributed mosquito count data. T-tests were employed to determine the differences in mean proportions of blood-fed mosquitoes and mosquitoes exiting early from the different test huts and control hut.\n", - "\n", - "In all analyses, the hut with the untreated net and without IRS was used as a negative control, but comparisons were made between all treatment groups. In all analyses, individual huts and sleepers were included in the models as random effects.\n", - "\n", - "header: Discussion\n", - "\n", - "Malaria vector control interventions have been intensified over the last decade in Ethiopia resulting in remarkable progress, with a reduction in children under-five mortality rates from 123 deaths per 1000 live births in 2005 to 55 deaths per 1000 live births in 2019 [15]. The vector control activities including mass-distribution/replacement of ITNs every 3 years in accordance with WHO recommendations and deployment of IRS in targeted areas appear to have played vital roles in the successes obtained in malaria control in Ethiopia [16]. However, malaria still remains a public health challenge in the country, where an estimated 52% of the population lives in areas at risk of malaria. With the successes gained in malaria control, a national malaria elimination goal is set for 2030 [17]. This study evaluated the impact of combining currently available vector control tools on mosquito behaviour and mortality.\n", - "\n", - "Compared to PernaNet(r) 2.0, PernaNet(r) 3.0 is impregnated with a higher concentration of deltamethrin and the roof panel is treated with both deltamethrin and PBO. The higher killing effect of PernaNet(r) 3.0 compared to PernaNet(r) 2.0 in this study could be attributed to the presence of the PBO synergist on the roof panel of the net and/or higher dosage of deltamethrin in the net. The synergist PBO works to inhibit P450 detoxification of pyrethroid insecticides and can result in partial or complete restoration of susceptibility to certain pyrethroids, such as deltamethrin, hence enhancing efficacy of the insecticides [18]. The role of PBO in affecting susceptibility in both wild and laboratory strain mosquitoes exposed to Actellite(r) 300CS\n", - "\n", - "Fig. 4: Proportion of _Anopheles_ collected from inside nets, rooms and verandahs of different experimental huts, Asendabo, Ethiopia \n", - "sprayed walls could not be determined as mortality rates in all IRS treatment huts were 100%. PBO nets have been shown to provide high levels of protection against _An. gambiae_ in a recent experimental hut trial in Cote d'Ivoire [19]. Moreover, the improved protective role of PBO nets on malaria prevalence was also documented in Uganda [20]. Personal protective efficacy of PBO nets may also last longer compared to the standard nets [21]. PBO nets are particularly important as a malaria control tool in areas where the protection against PBO is not a viable alternative to the standard nets.\n", - "\n", - "Fig. 5: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain following wall bioassays 3 weeks after ActeIlic 300CS spraying, Asendabo, Ethiopia\n", - "\n", - "Fig. 6: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain and wild _An. gambiae_ s.l. (with and without pre-exposure to PBO) following wall bioassays 10 weeks after IRS using ActeIlic 300CS, Asendabo, Ethiopia \n", - "pyrethroid resistance is high in the vector populations [22] and is, therefore, under consideration for more widespread distribution in Ethiopia. Despite these added advantages of PBO nets, the cost is currently higher than pyrethroid nets which may limit their wider use in malaria vector control in malaria endemic areas. Additionally, this study provides an example of a setting with high levels of pyrethroid resistance where PBO nets may not be sufficient.\n", - "\n", - "The proportion of _Anopheles_ retrieved from the verandah of huts with both PermaNet 2.0 and PermaNet 3.0 was higher than those from the verandah of the control hut. Huts with PermaNet 2.0 induced significantly higher exito-repellency compared to control huts. Insecticides often induce toxicity to mosquitoes. However, the non-toxic 'exito-repellent' effects of insecticides are often less understood. Pyrethroid and organophosphate insecticides are also known to have these non-killing effects. The impact of the non-killing effects of the insecticides on the risk of malaria is not clearly understood. Though exito-repellency appears to reduce indoor human-vector contact, it may on the contrary enhance risk of outdoor mosquito biting [23].\n", - "\n", - "The role of IRS as a key malaria vector control intervention tool is evident. Immediate mortality was observed in mosquitoes collected from the three huts sprayed with Actellic(r) 300CS up to the end of the study at 10 weeks post-spray. The proportion of blood-fed _Anopheles_ was significantly lower in the IRS-treated huts compared to the control hut. This could be due to the fast-acting nature of Actellic(r) 300CS insecticide with both contact and fumigant effects. This shows the potential of Actellic(r) 300CS as an insecticide of choice for IRS in areas where the local vector population is susceptible to the insecticide. _Anopheles arabiensis_ is susceptible to pirimibos-methyl in most parts of Ethiopia [10, 24]. Some earlier studies conducted in Ethiopia showed the effectiveness of combining IRS with ITNs compared to ITNs alone in suppressing vector populations [25]. Added benefits of combining IRS and ITNs in malaria prevention was also reported from other areas in sub-Saharan Africa [26-28]. In contrast, limited or no added benefit of combining IRS with ITNs as compared to ITNs alone has been reported elsewhere [29, 30]. This inconsistency could be attributed to differences in the intensity of malaria transmission and insecticide resistance of the local vector populations. The impact of the combined use of available vector control interventions appears to be more pronounced when applied in high transmission areas, and where the local vector populations are susceptible to the insecticide used for the IRS component [25].\n", - "\n", - "The importance of combining IRS and ITNs for malaria vector control is believed partly to come from the low or inconsistent utilization of ITNs by users and short residual efficacy of IRS insecticides [31, 32]. In Ethiopia, household surveys have shown approximately 50% of children under five and pregnant women use their nets with geographic variation [33]. The gap often created as a result of low utilization of ITNs may be complemented with IRS. ITN utilization and care depends on personal decisions and behavior [34]. However, once properly implemented, IRS rapidly suppresses local vector populations with no additional behaviors required from the residents, hence reducing malaria incidence [35]. However, effectiveness of IRS for malaria vector control is highly affected by both physiological and behavioral resistance of the local vector population to the insecticide [36], apart from operational factors and higher costs.\n", - "\n", - "As the study was conducted during the dry season of the year, the mosquito population density was not high and, therefore, limits the generalizability of the results. However, the findings of this study could provide preliminary information for vector control programs for the rational choice of future vector control intervention tools. In addition, combining indoor residual spraying using pirimibos-methyl with PBO nets has been reported to be antagonistic in some studies, but a negative interaction or antagonism between PBO and pirimibos-methyl was not detected in this study.\n", - "\n", - "header: Funding\n", - "\n", - "This work was funded by the US President's Malaria initiative.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Abbreviations\n", - "\n", - "DDT: Dichroo-diphenyl-trichloroethane; ELISA: Enzyme-linked immunosorbent Assay; IRS: Indoor residual spray; ITS: Insecticide-treated net; PBO: Piperonyl butoxide; PCR Polymerase chain reaction; WHO: World Health Organization; WHORES: World Health Organization Pesticide Evaluation Scheme.\n", - "\n", - "header: Disclaimer\n", - "\n", - "The findings and conclusions in this manuscript are those of the authors and do not necessarily represent the views of the CDC. Use of trade names is for identification only and does not imply endorsement by the Centers for Disease Control and Prevention, the Public Health Service, or the US Department of Health and Human Services.\n", - "\n", - "header: Indoor residual spraying (IRS)\n", - "\n", - "Actcllic(r) 300CS, a pirimiphos-methyl-based IRS insecticide, was applied to the three IRS treatment huts 1 week before the start of the trial. Pirimiphos-methyl is an organophosphate insecticide being used for IRS by the malaria elimination program of Ethiopia. During the spraying, filter papers were affixed to the wall surfaces at three heights (high, middle and low) to ensure the application was properly and uniformly applied and determine the concentration of the applied insecticide. The spray operators were trained on the spraying techniques and the wall surfaces of huts were lined with chalk to properly maintain the swath and avoid overlap following the WHO protocol.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "Data supporting the conclusions of this article are included within the article.\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Abstract\n", - "\n", - "An experimental hut study evaluating the impact of pyrethroid-only and PBO nets alone and in combination with pirrimiphos-methyl-based IRS in Ethiopia\n", - "\n", - "Delenasaw Yevhalaw, Meshesha Balkew, Endalew Zermene, Sheleme Chibsa, Peter Mumba, Cecilia Flatley, Akiliu Seyoum, Melissa Yoshimizu, Sarah Zohdy, Dereje Dengela\n", - "\n", - "\n", - "\n", - "Pyrethroid resistance observed in populations of malaria vectors is widespread in Ethiopia and could potentially compromise the effectiveness of insecticide-based malaria vector control interventions. In this study, the impact of combining indoor residual spraying (IRS) and insecticide-treated nets (ITNs) on mosquito behaviour and mortality was evaluated using experimental huts.\n", - "\n", - "header: Wall bioassay\n", - "\n", - "Cone bioassays were conducted twice during the trial period to assess the bio-efficacy of Actclic 300CS. At each time point, three cones were fixed to the wall surfaces at three heights from the ground (high 160 cm, medium 100 cm and low 40 cm) of each hut and ten mosquitoes were used per cone with a total of 30 mosquitoes per hut, for each of the three sprayed huts and a control hut (120 mosquitoes in total). Mosquitoes were exposed for 30 min after which immediate knockdown was recorded and mortality was recorded after a 24 h holding period. Non-blood-fed, 3-5 day old adult female _Anopheles gambiae_ sensu lato (s.l.) were used for bioassays.\n", - "\n", - "The first cone bioassay was conducted 3 weeks after spray using a confirmed susceptible _An. arabiensis_ strain from Sekoru Insectary without pre-exposure to PBO synergist. The second bioassay was conducted at the end of the trial (10 weeks after spray). In the second bioassay, both susceptible _An. arabiensis_ laboratory strain from Sekoru Insectary and wild _An. gambiae_ s.l. were used. The assay was carried out with and without PBO pre-exposure for both strains. Wild populations of _An. gambiae_ s.l. used for the bioassays were raised from larvae and pupae collected from semi-permanent and permanent breeding habitats around Wolfkite area, central Ethiopia. They were reared to adults at Asendabo Field Insectary. Mosquitoes were exposed to papers treated with PBO (2%) in a WHO cylinder for 1 h.\n", - "\n", - "header: Background\n", - "\n", - "Malaria is an important public health and socio-economic problem in Ethiopia. The main malaria vector in Ethiopia is _Anopheles arabiensis,_ while _Anopheles pharoetiss, Anopheles funestus_ and _Anopheles nili_ play a secondary role in malaria transmission. _Anopheles stephensi,_ a common and efficient urban malaria vector in Southeast Asia and the Mediterranean Region, has also recently been reported in Ethiopia and neighboring countries including Djibouti and Sudan [1]. There is widespread resistance to dichloro-diphenyl-trichloroethane (DDT) and pyrethroids in _An. arabiensis_ and resistance has also been detected to organophosphates in some populations. _Anopheles pharoensis_ was also reported to be highly resistant to DDT [2]. The _kdr_ mutation (L1014F) has been detected in _An. arabiensis_ from many sites, while _ace-1R_ and _kdr_ (L1014S) were not detected in all populations [3, 4, 5]. Bottle bioassay tests with _An. arabiensis_ populations from all surveyed areas of Ethiopia found resistance to both permethrin and deltamethrin. However, susceptibility to permethrin and deltamethrin was restored following pre-exposure of mosquitoes to the synergist piperonyl butoxide (PBO), indicating involvement of P450-based metabolic resistance mechanisms in the Ethiopian populations of _An. arabiensis_[6].\n", - "\n", - "Indoor residual spraying (IRS) and insecticide-treated nets (ITNs) are the main vector control interventions in Ethiopia. Ethiopia has a long history of IRS. It began spraying DDT in the late 1950s during the Malaria Eradication Programme and malathion was also used for IRS in a few areas until 2010. Deltamethrin, a pyrethroid insecticide, was used for IRS from 2009 to 2013, and since then, bendiocarb and propoxur (carbamate insecticides) and pirimihos-methyl (organophosphate insecticide) have been used for IRS in Ethiopia. The PMI VectorLink Ethiopia Project piloted the clothianidin (neonicotinoid)-based insecticides, SumiShield(r) 50WG and Fludora Fusion WP-SB, in 2020 in Menge District in the Benishangul Gumuz Region. Insecticide-treated nets have been widely distributed to households in malaria risk areas every 3 years mainly through the health extension programme [7].\n", - "\n", - "Recent studies in Tanzania showed that the impact of PBO nets could be comparable to the impact of pyrethroid-only nets when combined with IRS, and that there was no significant difference in malaria prevalence between the pyrethroid-only net + IRS and PBO net + IRS study arms [8]. This is of interest for malaria control operations in Ethiopia, as such data can inform future decisions on ITN procurements and strategic\n", - "distribution, as well as insecticide choices for IRS, which may reduce overall malaria vector control costs. In addition, it is also important to understand possible antagonistic effects of PBO and pirimiphos-methyl, as suggested by the World Health Organization (WHO), before recommending the combined use of PBO nets and pirimiphos methyl IRS for malaria control in Ethiopia.\n", - "\n", - "This study aimed at assessing the impact of the combination of currently available vector control tools (IRS, pyrethroid-only nets, and PBO nets) on mosquito behaviour, mortality and the possible antagonistic effect of PBO and pirimiphos-methyl using experimental hurts in Asendabo, Ethiopia. The hypothesis for the Ethiopia context was that the use of PBO nets in combination with IRS would better control malaria vectors than PBO nets alone and that the use of IRS in combination with pyrethroid-only nets would better control malaria vectors than pyrethroid-only nets alone.\n", - "\n", - "header: Competing interests\n", - "\n", - "We declare that we have no competing interests.\n", - "\n", - "header: Results\n", - "\n", - "The personal protection rate of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 33.3% and 50%, respectively. The mean killing effect of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 2% and 49%, respectively. Huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone demonstrated significantly higher excito-repellency than the control hut. However, mosquito mortality in the hut with IRS + untreated net, hut with IRS + PermaNet(r) 2.0 and hut with IRS + PermaNet(r) 3.0 were not significantly different from each other (p > 0.05). Additionally, pre-exposure of both the susceptible _Anopheles arabiensis_ laboratory strain and wild _Anopheles gambiae_ sensu late to PBO in the cone bioassay tests of Actellite 300CS sprayed surfaces did not reduce mosquito mortality when compared to mortality without pre-exposure to PBO.\n", - "\n", - "header: Use of nets for the study\n", - "\n", - "During the study, two types of nets (PermaNet(r) 2.0 and PermaNet(r) 3.0) with and without IRS were assessed. Moreover, an untreated net was used with IRS and untreated net without IRS was used as a negative control. Both PermaNet(r) 2.0 and PermaNet(r) 3.0 nets are treated with the pyrethroid deltamethrin, but PermaNet 3.0 has also PBO synergist. During the study, each ITN in each hut was replaced by a new replicate net every 3 weeks since the trial had no replicate huts. Eighteen holes (4 cm x 4 cm) were cut in each net purposefully to simulate a torn net [11].\n", - "\n", - "header: Conclusion\n", - "\n", - "Mosquito mortality rates from the huts with IRS alone were similar to mosquito mortality rates from the huts with the combination of vector control intervention tools (IRS + ITNs) and mosquito mortality rates from huts with PBO nets alone were significantly higher than huts with pyrethroid-only nets. The findings of this study help inform studies to be conducted under field condition for decision-making for future selection of cost-effective vector control intervention tools.\n", - "\n", - "header: Conclusion\n", - "\n", - "In this study, significantly higher mosquito mortality rates were recorded from treatment huts with IRS than huts with ITNs alone, regardless of net type. Interestingly, the hut with IRS + untreated net had similar mosquito mortality rates as huts with combinations of vector control tools (IRS + pyrethroid-only nets and IRS + PBO nets). Moreover, immediate mortality rate of mosquitoes in IRS + untreated net was significantly higher than PermaNet 2.0 and PermaNet 3.0 nets. These suggest that IRS alone provides the greatest vector control impact. Indoor residual spraying alone or in combination with ITNs offered significantly higher personal protection against mosquito bites than the control hut. Moreover, the proportion of mosquito mortality was significantly higher in huts with PBO nets than huts with pyrethroid-only nets, but remained significantly lower than the huts that received IRS. In general, the findings of this study revealed that IRS alone was as efficacious as combinations of vector tools (IRS + ITNs) for malaria vector control at least over the 9-week study period. Field studies to further assess the impact of combinations of vector tools on malaria vector control in different eco-epidemiological settings are also warranted. This study \n", - "provides additional data for considering future selection of the most appropriate vector control tools for improved malaria vector control and management of insecticide resistance. This study also indicated that there was no antagonistic effect between PBO and IRS with pirimib-phos-methyl. However, further studies may be needed to determine if there are antagonistic effects in large scale IRS applications to evaluate the efficacy of PBO vs. IRS against different resistant vector populations in Ethiopia for decision-making to deploy either PBO nets or pirimib-phos-based IRS intervention.\n", - "\n", - "header: Results\n", - "\n", - "Overall, a total of 386 mosquitoes, comprising 235 _Anopheles_ spp. (60.9%) and 151 _Culex_ spp. (39.1%), were collected during the study. Of the _Anopheles_ mosquitoes, _An. gambiae_ s.l, _An. pharoensis_ and _Anopheles__custani_ accounted for 228 (97.0%), 6 (2.6%) and 1 (0.4%), respectively. The proportion of the total _Anopheles_ mosquitoes collected from each hut is presented in Fig. 1. There were no significant differences in mean percentage of _Anopheles_ mosquitoes between the different treatment and control huts (p > 0.05).\n", - "\n", - "An immediate mosquito mortality of 100% was recorded from all three huts with IRS throughout the study period. The mean immediate mosquito mortality rates from the control, PermaNet(r) 2.0 and PermaNet(r) 3.0 huts were 13.3% (95% CI 3-23%), 20.0% (95% CI 6-33%) and 70.0% (95% CI 55-84%), respectively (Fig. 2). The immediate mosquito mortality rate from the hut with IRS + untreated net was significantly higher than the PermaNet(r) 3.0 hut (p < 0.001). Similarly, the immediate mosquito mortality rate from the hut with PermaNet(r) 3.0 was significantly higher than that from the control hut (p < 0.001) as well as the PermaNet(r) 2.0 (p < 0.001) hut. The mosquito mortality rate from the PermaNet(r) 2.0 hut was not significantly different from that of the control hut (p = 0.4). On average the killing effect of PermaNet(r) 2.0 and PermaNet(r) 3.0 compared to the untreated net were 2.2% and 48.9%, respectively. The killing effects in the huts with PermaNet(r) 2.0 and PermaNet(r) 3.0 increased to 60.0% and 75.5% when combined with IRS. Delayed mosquito mortality rates of 14.3% and 41.7% were recorded from huts with PermaNet(r) 2.0 and PermaNet(r) 3.0, respectively.\n", - "\n", - "Of the 50 sub-samples of _An. gambiae_ s.l. analysed using species-specific PCR, 46 (92%) were identified as _An. arabiensis_ and four mosquito samples failed to amplify. The blood-feeding rate of the _Anopheles_\n", - "\n", - "Fig. 1: Proportion of mosquitoes collected that were _Anopheles_ spp. in each experimental hut, Asendabo, Ethiopia. Control is no IRS and untreated net \n", - "collected from each of the huts is presented in Fig. 3. Overall, 26 of the _Anopheles_ (11.1%) were blood-fed upon collection. Of the fed mosquitoes, human, bovine and mixed human/bovine blood were detected in 14 (53.9%), 2 (7.7%), 5 (19.2%) of the specimens, respectively. Blood meals from the remaining 5 (19.2%) of the specimens were unidentified. The overall proportion of human blood-fed _Anopheles_ was 73.1% (n = 19). The personal protection rates of PermaNet(r) 2.0 and PermaNet(r) 3.0 nets were 33.3% and 50%, respectively. When combined with IRS, the personal protection rate of PermaNet(r) 2.0 increased to 83.3% while the personal protection rate of PermaNet(r) 2.0 decreased to 83.3%.\n", - "\n", - "\n", - "\n", - "The personal protection rate of PermaNet(r)\n", - "\n", - "\n", - "PernaNet(r) 3.0 remained the same (50%). The proportions of human blood-fed _Anopheles_ collected from the control, PernaNet(r) 2.0, PernaNet(r) 3.0 and combined IRS-treated huts were 13.3% (95% CI 3.4-23.3), 11.4% (95% CI 0.9-22.0), 7.5% (95% CI 0.0-15.7) and 5.2% (95% CI 1.2-9.3), respectively.\n", - "\n", - "Overall, the majority of _Anopheles_ were collected from the rooms of the huts. The proportions of _Anopheles_ collected from the verandah of the IRS-treated and the control huts were 16.5% and 13.3%, respectively (Fig. 4). The proportion of _Anopheles_ collected from verandah of a hut with PernaNet(r) 2.0 was significantly higher than the proportion of _Anopheles_ collected from the control hut (p = 0.02).\n", - "\n", - "The mean knockdown rates of the susceptible _An. arabiensis_ laboratory strain in the bioassays conducted 3 weeks post-spray were 20.2% and 2.9% in the IRS-treated and control huts, respectively. The mean 24 h mortality rates from IRS-treated and control huts were 100% and 2.9%, respectively (Fig. 5).\n", - "\n", - "The combined mean 30 min knockdown rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. exposed to IRS-treated huts 10 weeks post-spray, with and without pre-exposure to PBO, was 1.1% (Fig. 6). The 24 h mortality rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. at 10 weeks post-spray which were exposed to IRS-treated hut wall surfaces were 100%, irrespective of pre-exposure of mosquitoes to PBO.\n", - "\n", - "header: Data analysis\n", - "\n", - "Data from the five treatment huts were compared with data from the control hut to determine the insecticidal effects on the variables listed above.\n", - "\n", - "Personal protection, killing effect, and exophily were estimated using the following formulas [9, 11].\n", - "\n", - "\\[\\text{Personal protection }(\\%) = 100 \\times (B_{u} - B_{t} )/B_{u} ;\\]\n", - "\n", - "where \\(B_{t}\\) is the total number of freshly blood-fed mosquitoes in the huts with treated nets. \\(B_{u}\\) is the total number of freshly blood-fed mosquitoes in the huts with untreated nets.\n", - "\n", - "\\[\\text{Killing effect }(\\%) = 100 \\times (K_{t} - K_{u} )/T_{u} ;\\]\n", - "\n", - "where \\(K_{t}\\) is number of mosquitoes killed (immediate) in the huts with treated nets. \\(K_{u}\\) is number of mosquitoes killed (immediate) in the huts with untreated nets. \\(T_{u}\\) is the total number of mosquitoes collected from the huts with untreated nets.\n", - "\n", - "\n", - "Exophily (%) = (E_v/Et) x 100;\n", - "\n", - "where Ev is the number of mosquitoes found in verandah. Et is the total number of mosquitoes found inside the hut and verandah\n", - "\n", - "For all three parameters, mosquito entry was estimated by adding the number of dead and alive mosquitoes observed inside the hut and the verandah. Estimates of personal protection and killing effect were determined using mosquitoes from all collection nights.\n", - "\n", - "To test differences in mean mosquito density in each of the treatment huts, ANOVA was employed after log-transformation of non-normal distributed mosquito count data. T-tests were employed to determine the differences in mean proportions of blood-fed mosquitoes and mosquitoes exiting early from the different test huts and control hut.\n", - "\n", - "In all analyses, the hut with the untreated net and without IRS was used as a negative control, but comparisons were made between all treatment groups. In all analyses, individual huts and sleepers were included in the models as random effects.\n", - "\n", - "header: Author details\n", - "\n", - "1School of Medical Laboratory Sciences, Faculty of Health Sciences, Jimma University, Jimma, Ethiopia. 2Tropical and Infectious Diseases Research Center, Jimma University, Jimma, Ethiopia. 3HAR Associates, PMI VectorLine Project Ethiopia, Addis Ababa, Ethiopia. 4US President's Malaria Initiative, USAID, Washington, DC, USA. 7US President's Malaria Initiative, Center for Disease Control and Prevention, Atlanta, GA, USA.\n", - "\n", - "header: Background: Methods\n", - "\n", - "A Latin Square Design was employed using six experimental huts to collect entomological data. Human volunteers slept in huts with different types of nets (pyrethroid-only net, PBO net, and untreated net) either with or without IRS (Actallic 300CS). The hut with no IRS and an untreated net served as a negative control. The study was conducted for a total of 54 nights. Both alive and dead mosquitoes were collected from inside nets, in the central rooms and verandah the following morning. Data were analysed using Stata/SE 14.0 software package (College Station, TX, USA).\n", - "\n", - "header: Variables\n", - "\n", - "Four study outcomes measured were:\n", - "\n", - "1. Deterrence--the reduction in hut entry by mosquitoes in treatment huts relative to the control hut (hut with untreated net and no IRS).\n", - "2. Exophily--the proportion of mosquitoes found resting on the walls of the verandah.\n", - "3. Blood-feeding inhibition--the reduction in blood-feeding in treatment huts in comparison with control hut (hut with untreated net and no IRS).\n", - "4. Immediate and delayed mortality--the proportion of mosquitoes entering the hut that were dead in the morning (immediate mortality) or after being caught alive and held for 24 h with access to a sugar solution (delayed mortality).\n", - "\n", - "header: Funding\n", - "\n", - "This work was funded by the US President's Malaria initiative.\n", - "\n", - "header: Blood meal host source analysis and mosquito identification\n", - "\n", - "All the fed mosquitoes collected from the different huts were assayed to determine the blood meal host source using direct ELISA [13]. Moreover, a sub-sample of _An. gambiae_ s.l. was also molecularly identified to species using species-specific PCR following established protocol [14].\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Ethiopia\",\"Site\":\"Asendabo\"}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_holed\":18.0,\"pHI_category\":\"Torn\",\"Synergist\":null},\"N02\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"deltamethrin\",\"Net_holed\":18.0,\"pHI_category\":\"Torn\",\"Synergist\":\"PBO\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Abbreviations\n", - "\n", - "DDT: Dichroo-diphenyl-trichloroethane; ELISA: Enzyme-linked immunosorbent Assay; IRS: Indoor residual spray; ITS: Insecticide-treated net; PBO: Piperonyl butoxide; PCR Polymerase chain reaction; WHO: World Health Organization; WHORES: World Health Organization Pesticide Evaluation Scheme.\n", - "\n", - "header: Disclaimer\n", - "\n", - "The findings and conclusions in this manuscript are those of the authors and do not necessarily represent the views of the CDC. Use of trade names is for identification only and does not imply endorsement by the Centers for Disease Control and Prevention, the Public Health Service, or the US Department of Health and Human Services.\n", - "\n", - "header: Indoor residual spraying (IRS)\n", - "\n", - "Actcllic(r) 300CS, a pirimiphos-methyl-based IRS insecticide, was applied to the three IRS treatment huts 1 week before the start of the trial. Pirimiphos-methyl is an organophosphate insecticide being used for IRS by the malaria elimination program of Ethiopia. During the spraying, filter papers were affixed to the wall surfaces at three heights (high, middle and low) to ensure the application was properly and uniformly applied and determine the concentration of the applied insecticide. The spray operators were trained on the spraying techniques and the wall surfaces of huts were lined with chalk to properly maintain the swath and avoid overlap following the WHO protocol.\n", - "\n", - "header: Availability of data and materials\n", - "\n", - "Data supporting the conclusions of this article are included within the article.\n", - "\n", - "header: Abstract\n", - "\n", - "An experimental hut study evaluating the impact of pyrethroid-only and PBO nets alone and in combination with pirrimiphos-methyl-based IRS in Ethiopia\n", - "\n", - "Delenasaw Yevhalaw, Meshesha Balkew, Endalew Zermene, Sheleme Chibsa, Peter Mumba, Cecilia Flatley, Akiliu Seyoum, Melissa Yoshimizu, Sarah Zohdy, Dereje Dengela\n", - "\n", - "\n", - "\n", - "Pyrethroid resistance observed in populations of malaria vectors is widespread in Ethiopia and could potentially compromise the effectiveness of insecticide-based malaria vector control interventions. In this study, the impact of combining indoor residual spraying (IRS) and insecticide-treated nets (ITNs) on mosquito behaviour and mortality was evaluated using experimental huts.\n", - "\n", - "header: Ethics approval and consent to participate: Consent for publication\n", - "\n", - "Not applicable.\n", - "\n", - "header: Background\n", - "\n", - "Malaria is an important public health and socio-economic problem in Ethiopia. The main malaria vector in Ethiopia is _Anopheles arabiensis,_ while _Anopheles pharoetiss, Anopheles funestus_ and _Anopheles nili_ play a secondary role in malaria transmission. _Anopheles stephensi,_ a common and efficient urban malaria vector in Southeast Asia and the Mediterranean Region, has also recently been reported in Ethiopia and neighboring countries including Djibouti and Sudan [1]. There is widespread resistance to dichloro-diphenyl-trichloroethane (DDT) and pyrethroids in _An. arabiensis_ and resistance has also been detected to organophosphates in some populations. _Anopheles pharoensis_ was also reported to be highly resistant to DDT [2]. The _kdr_ mutation (L1014F) has been detected in _An. arabiensis_ from many sites, while _ace-1R_ and _kdr_ (L1014S) were not detected in all populations [3, 4, 5]. Bottle bioassay tests with _An. arabiensis_ populations from all surveyed areas of Ethiopia found resistance to both permethrin and deltamethrin. However, susceptibility to permethrin and deltamethrin was restored following pre-exposure of mosquitoes to the synergist piperonyl butoxide (PBO), indicating involvement of P450-based metabolic resistance mechanisms in the Ethiopian populations of _An. arabiensis_[6].\n", - "\n", - "Indoor residual spraying (IRS) and insecticide-treated nets (ITNs) are the main vector control interventions in Ethiopia. Ethiopia has a long history of IRS. It began spraying DDT in the late 1950s during the Malaria Eradication Programme and malathion was also used for IRS in a few areas until 2010. Deltamethrin, a pyrethroid insecticide, was used for IRS from 2009 to 2013, and since then, bendiocarb and propoxur (carbamate insecticides) and pirimihos-methyl (organophosphate insecticide) have been used for IRS in Ethiopia. The PMI VectorLink Ethiopia Project piloted the clothianidin (neonicotinoid)-based insecticides, SumiShield(r) 50WG and Fludora Fusion WP-SB, in 2020 in Menge District in the Benishangul Gumuz Region. Insecticide-treated nets have been widely distributed to households in malaria risk areas every 3 years mainly through the health extension programme [7].\n", - "\n", - "Recent studies in Tanzania showed that the impact of PBO nets could be comparable to the impact of pyrethroid-only nets when combined with IRS, and that there was no significant difference in malaria prevalence between the pyrethroid-only net + IRS and PBO net + IRS study arms [8]. This is of interest for malaria control operations in Ethiopia, as such data can inform future decisions on ITN procurements and strategic\n", - "distribution, as well as insecticide choices for IRS, which may reduce overall malaria vector control costs. In addition, it is also important to understand possible antagonistic effects of PBO and pirimiphos-methyl, as suggested by the World Health Organization (WHO), before recommending the combined use of PBO nets and pirimiphos methyl IRS for malaria control in Ethiopia.\n", - "\n", - "This study aimed at assessing the impact of the combination of currently available vector control tools (IRS, pyrethroid-only nets, and PBO nets) on mosquito behaviour, mortality and the possible antagonistic effect of PBO and pirimiphos-methyl using experimental hurts in Asendabo, Ethiopia. The hypothesis for the Ethiopia context was that the use of PBO nets in combination with IRS would better control malaria vectors than PBO nets alone and that the use of IRS in combination with pyrethroid-only nets would better control malaria vectors than pyrethroid-only nets alone.\n", - "\n", - "header: Wall bioassay\n", - "\n", - "Cone bioassays were conducted twice during the trial period to assess the bio-efficacy of Actclic 300CS. At each time point, three cones were fixed to the wall surfaces at three heights from the ground (high 160 cm, medium 100 cm and low 40 cm) of each hut and ten mosquitoes were used per cone with a total of 30 mosquitoes per hut, for each of the three sprayed huts and a control hut (120 mosquitoes in total). Mosquitoes were exposed for 30 min after which immediate knockdown was recorded and mortality was recorded after a 24 h holding period. Non-blood-fed, 3-5 day old adult female _Anopheles gambiae_ sensu lato (s.l.) were used for bioassays.\n", - "\n", - "The first cone bioassay was conducted 3 weeks after spray using a confirmed susceptible _An. arabiensis_ strain from Sekoru Insectary without pre-exposure to PBO synergist. The second bioassay was conducted at the end of the trial (10 weeks after spray). In the second bioassay, both susceptible _An. arabiensis_ laboratory strain from Sekoru Insectary and wild _An. gambiae_ s.l. were used. The assay was carried out with and without PBO pre-exposure for both strains. Wild populations of _An. gambiae_ s.l. used for the bioassays were raised from larvae and pupae collected from semi-permanent and permanent breeding habitats around Wolfkite area, central Ethiopia. They were reared to adults at Asendabo Field Insectary. Mosquitoes were exposed to papers treated with PBO (2%) in a WHO cylinder for 1 h.\n", - "\n", - "header: Results\n", - "\n", - "The personal protection rate of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 33.3% and 50%, respectively. The mean killing effect of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 2% and 49%, respectively. Huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone demonstrated significantly higher excito-repellency than the control hut. However, mosquito mortality in the hut with IRS + untreated net, hut with IRS + PermaNet(r) 2.0 and hut with IRS + PermaNet(r) 3.0 were not significantly different from each other (p > 0.05). Additionally, pre-exposure of both the susceptible _Anopheles arabiensis_ laboratory strain and wild _Anopheles gambiae_ sensu late to PBO in the cone bioassay tests of Actellite 300CS sprayed surfaces did not reduce mosquito mortality when compared to mortality without pre-exposure to PBO.\n", - "\n", - "header: Use of nets for the study\n", - "\n", - "During the study, two types of nets (PermaNet(r) 2.0 and PermaNet(r) 3.0) with and without IRS were assessed. Moreover, an untreated net was used with IRS and untreated net without IRS was used as a negative control. Both PermaNet(r) 2.0 and PermaNet(r) 3.0 nets are treated with the pyrethroid deltamethrin, but PermaNet 3.0 has also PBO synergist. During the study, each ITN in each hut was replaced by a new replicate net every 3 weeks since the trial had no replicate huts. Eighteen holes (4 cm x 4 cm) were cut in each net purposefully to simulate a torn net [11].\n", - "\n", - "header: Competing interests\n", - "\n", - "We declare that we have no competing interests.\n", - "\n", - "header: Conclusion\n", - "\n", - "In this study, significantly higher mosquito mortality rates were recorded from treatment huts with IRS than huts with ITNs alone, regardless of net type. Interestingly, the hut with IRS + untreated net had similar mosquito mortality rates as huts with combinations of vector control tools (IRS + pyrethroid-only nets and IRS + PBO nets). Moreover, immediate mortality rate of mosquitoes in IRS + untreated net was significantly higher than PermaNet 2.0 and PermaNet 3.0 nets. These suggest that IRS alone provides the greatest vector control impact. Indoor residual spraying alone or in combination with ITNs offered significantly higher personal protection against mosquito bites than the control hut. Moreover, the proportion of mosquito mortality was significantly higher in huts with PBO nets than huts with pyrethroid-only nets, but remained significantly lower than the huts that received IRS. In general, the findings of this study revealed that IRS alone was as efficacious as combinations of vector tools (IRS + ITNs) for malaria vector control at least over the 9-week study period. Field studies to further assess the impact of combinations of vector tools on malaria vector control in different eco-epidemiological settings are also warranted. This study \n", - "provides additional data for considering future selection of the most appropriate vector control tools for improved malaria vector control and management of insecticide resistance. This study also indicated that there was no antagonistic effect between PBO and IRS with pirimib-phos-methyl. However, further studies may be needed to determine if there are antagonistic effects in large scale IRS applications to evaluate the efficacy of PBO vs. IRS against different resistant vector populations in Ethiopia for decision-making to deploy either PBO nets or pirimib-phos-based IRS intervention.\n", - "\n", - "header: Conclusion\n", - "\n", - "Mosquito mortality rates from the huts with IRS alone were similar to mosquito mortality rates from the huts with the combination of vector control intervention tools (IRS + ITNs) and mosquito mortality rates from huts with PBO nets alone were significantly higher than huts with pyrethroid-only nets. The findings of this study help inform studies to be conducted under field condition for decision-making for future selection of cost-effective vector control intervention tools.\n", - "\n", - "header: Results\n", - "\n", - "Overall, a total of 386 mosquitoes, comprising 235 _Anopheles_ spp. (60.9%) and 151 _Culex_ spp. (39.1%), were collected during the study. Of the _Anopheles_ mosquitoes, _An. gambiae_ s.l, _An. pharoensis_ and _Anopheles__custani_ accounted for 228 (97.0%), 6 (2.6%) and 1 (0.4%), respectively. The proportion of the total _Anopheles_ mosquitoes collected from each hut is presented in Fig. 1. There were no significant differences in mean percentage of _Anopheles_ mosquitoes between the different treatment and control huts (p > 0.05).\n", - "\n", - "An immediate mosquito mortality of 100% was recorded from all three huts with IRS throughout the study period. The mean immediate mosquito mortality rates from the control, PermaNet(r) 2.0 and PermaNet(r) 3.0 huts were 13.3% (95% CI 3-23%), 20.0% (95% CI 6-33%) and 70.0% (95% CI 55-84%), respectively (Fig. 2). The immediate mosquito mortality rate from the hut with IRS + untreated net was significantly higher than the PermaNet(r) 3.0 hut (p < 0.001). Similarly, the immediate mosquito mortality rate from the hut with PermaNet(r) 3.0 was significantly higher than that from the control hut (p < 0.001) as well as the PermaNet(r) 2.0 (p < 0.001) hut. The mosquito mortality rate from the PermaNet(r) 2.0 hut was not significantly different from that of the control hut (p = 0.4). On average the killing effect of PermaNet(r) 2.0 and PermaNet(r) 3.0 compared to the untreated net were 2.2% and 48.9%, respectively. The killing effects in the huts with PermaNet(r) 2.0 and PermaNet(r) 3.0 increased to 60.0% and 75.5% when combined with IRS. Delayed mosquito mortality rates of 14.3% and 41.7% were recorded from huts with PermaNet(r) 2.0 and PermaNet(r) 3.0, respectively.\n", - "\n", - "Of the 50 sub-samples of _An. gambiae_ s.l. analysed using species-specific PCR, 46 (92%) were identified as _An. arabiensis_ and four mosquito samples failed to amplify. The blood-feeding rate of the _Anopheles_\n", - "\n", - "Fig. 1: Proportion of mosquitoes collected that were _Anopheles_ spp. in each experimental hut, Asendabo, Ethiopia. Control is no IRS and untreated net \n", - "collected from each of the huts is presented in Fig. 3. Overall, 26 of the _Anopheles_ (11.1%) were blood-fed upon collection. Of the fed mosquitoes, human, bovine and mixed human/bovine blood were detected in 14 (53.9%), 2 (7.7%), 5 (19.2%) of the specimens, respectively. Blood meals from the remaining 5 (19.2%) of the specimens were unidentified. The overall proportion of human blood-fed _Anopheles_ was 73.1% (n = 19). The personal protection rates of PermaNet(r) 2.0 and PermaNet(r) 3.0 nets were 33.3% and 50%, respectively. When combined with IRS, the personal protection rate of PermaNet(r) 2.0 increased to 83.3% while the personal protection rate of PermaNet(r) 2.0 decreased to 83.3%.\n", - "\n", - "\n", - "\n", - "The personal protection rate of PermaNet(r)\n", - "\n", - "\n", - "PernaNet(r) 3.0 remained the same (50%). The proportions of human blood-fed _Anopheles_ collected from the control, PernaNet(r) 2.0, PernaNet(r) 3.0 and combined IRS-treated huts were 13.3% (95% CI 3.4-23.3), 11.4% (95% CI 0.9-22.0), 7.5% (95% CI 0.0-15.7) and 5.2% (95% CI 1.2-9.3), respectively.\n", - "\n", - "Overall, the majority of _Anopheles_ were collected from the rooms of the huts. The proportions of _Anopheles_ collected from the verandah of the IRS-treated and the control huts were 16.5% and 13.3%, respectively (Fig. 4). The proportion of _Anopheles_ collected from verandah of a hut with PernaNet(r) 2.0 was significantly higher than the proportion of _Anopheles_ collected from the control hut (p = 0.02).\n", - "\n", - "The mean knockdown rates of the susceptible _An. arabiensis_ laboratory strain in the bioassays conducted 3 weeks post-spray were 20.2% and 2.9% in the IRS-treated and control huts, respectively. The mean 24 h mortality rates from IRS-treated and control huts were 100% and 2.9%, respectively (Fig. 5).\n", - "\n", - "The combined mean 30 min knockdown rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. exposed to IRS-treated huts 10 weeks post-spray, with and without pre-exposure to PBO, was 1.1% (Fig. 6). The 24 h mortality rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. at 10 weeks post-spray which were exposed to IRS-treated hut wall surfaces were 100%, irrespective of pre-exposure of mosquitoes to PBO.\n", - "\n", - "header: Data analysis\n", - "\n", - "Data from the five treatment huts were compared with data from the control hut to determine the insecticidal effects on the variables listed above.\n", - "\n", - "Personal protection, killing effect, and exophily were estimated using the following formulas [9, 11].\n", - "\n", - "\\[\\text{Personal protection }(\\%) = 100 \\times (B_{u} - B_{t} )/B_{u} ;\\]\n", - "\n", - "where \\(B_{t}\\) is the total number of freshly blood-fed mosquitoes in the huts with treated nets. \\(B_{u}\\) is the total number of freshly blood-fed mosquitoes in the huts with untreated nets.\n", - "\n", - "\\[\\text{Killing effect }(\\%) = 100 \\times (K_{t} - K_{u} )/T_{u} ;\\]\n", - "\n", - "where \\(K_{t}\\) is number of mosquitoes killed (immediate) in the huts with treated nets. \\(K_{u}\\) is number of mosquitoes killed (immediate) in the huts with untreated nets. \\(T_{u}\\) is the total number of mosquitoes collected from the huts with untreated nets.\n", - "\n", - "\n", - "Exophily (%) = (E_v/Et) x 100;\n", - "\n", - "where Ev is the number of mosquitoes found in verandah. Et is the total number of mosquitoes found inside the hut and verandah\n", - "\n", - "For all three parameters, mosquito entry was estimated by adding the number of dead and alive mosquitoes observed inside the hut and the verandah. Estimates of personal protection and killing effect were determined using mosquitoes from all collection nights.\n", - "\n", - "To test differences in mean mosquito density in each of the treatment huts, ANOVA was employed after log-transformation of non-normal distributed mosquito count data. T-tests were employed to determine the differences in mean proportions of blood-fed mosquitoes and mosquitoes exiting early from the different test huts and control hut.\n", - "\n", - "In all analyses, the hut with the untreated net and without IRS was used as a negative control, but comparisons were made between all treatment groups. In all analyses, individual huts and sleepers were included in the models as random effects.\n", - "\n", - "header: Background: Methods\n", - "\n", - "A Latin Square Design was employed using six experimental huts to collect entomological data. Human volunteers slept in huts with different types of nets (pyrethroid-only net, PBO net, and untreated net) either with or without IRS (Actallic 300CS). The hut with no IRS and an untreated net served as a negative control. The study was conducted for a total of 54 nights. Both alive and dead mosquitoes were collected from inside nets, in the central rooms and verandah the following morning. Data were analysed using Stata/SE 14.0 software package (College Station, TX, USA).\n", - "\n", - "header: Variables\n", - "\n", - "Four study outcomes measured were:\n", - "\n", - "1. Deterrence--the reduction in hut entry by mosquitoes in treatment huts relative to the control hut (hut with untreated net and no IRS).\n", - "2. Exophily--the proportion of mosquitoes found resting on the walls of the verandah.\n", - "3. Blood-feeding inhibition--the reduction in blood-feeding in treatment huts in comparison with control hut (hut with untreated net and no IRS).\n", - "4. Immediate and delayed mortality--the proportion of mosquitoes entering the hut that were dead in the morning (immediate mortality) or after being caught alive and held for 24 h with access to a sugar solution (delayed mortality).\n", - "\n", - "header: Funding\n", - "\n", - "This work was funded by the US President's Malaria initiative.\n", - "\n", - "header: Discussion\n", - "\n", - "Malaria vector control interventions have been intensified over the last decade in Ethiopia resulting in remarkable progress, with a reduction in children under-five mortality rates from 123 deaths per 1000 live births in 2005 to 55 deaths per 1000 live births in 2019 [15]. The vector control activities including mass-distribution/replacement of ITNs every 3 years in accordance with WHO recommendations and deployment of IRS in targeted areas appear to have played vital roles in the successes obtained in malaria control in Ethiopia [16]. However, malaria still remains a public health challenge in the country, where an estimated 52% of the population lives in areas at risk of malaria. With the successes gained in malaria control, a national malaria elimination goal is set for 2030 [17]. This study evaluated the impact of combining currently available vector control tools on mosquito behaviour and mortality.\n", - "\n", - "Compared to PernaNet(r) 2.0, PernaNet(r) 3.0 is impregnated with a higher concentration of deltamethrin and the roof panel is treated with both deltamethrin and PBO. The higher killing effect of PernaNet(r) 3.0 compared to PernaNet(r) 2.0 in this study could be attributed to the presence of the PBO synergist on the roof panel of the net and/or higher dosage of deltamethrin in the net. The synergist PBO works to inhibit P450 detoxification of pyrethroid insecticides and can result in partial or complete restoration of susceptibility to certain pyrethroids, such as deltamethrin, hence enhancing efficacy of the insecticides [18]. The role of PBO in affecting susceptibility in both wild and laboratory strain mosquitoes exposed to Actellite(r) 300CS\n", - "\n", - "Fig. 4: Proportion of _Anopheles_ collected from inside nets, rooms and verandahs of different experimental huts, Asendabo, Ethiopia \n", - "sprayed walls could not be determined as mortality rates in all IRS treatment huts were 100%. PBO nets have been shown to provide high levels of protection against _An. gambiae_ in a recent experimental hut trial in Cote d'Ivoire [19]. Moreover, the improved protective role of PBO nets on malaria prevalence was also documented in Uganda [20]. Personal protective efficacy of PBO nets may also last longer compared to the standard nets [21]. PBO nets are particularly important as a malaria control tool in areas where the protection against PBO is not a viable alternative to the standard nets.\n", - "\n", - "Fig. 5: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain following wall bioassays 3 weeks after ActeIlic 300CS spraying, Asendabo, Ethiopia\n", - "\n", - "Fig. 6: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain and wild _An. gambiae_ s.l. (with and without pre-exposure to PBO) following wall bioassays 10 weeks after IRS using ActeIlic 300CS, Asendabo, Ethiopia \n", - "pyrethroid resistance is high in the vector populations [22] and is, therefore, under consideration for more widespread distribution in Ethiopia. Despite these added advantages of PBO nets, the cost is currently higher than pyrethroid nets which may limit their wider use in malaria vector control in malaria endemic areas. Additionally, this study provides an example of a setting with high levels of pyrethroid resistance where PBO nets may not be sufficient.\n", - "\n", - "The proportion of _Anopheles_ retrieved from the verandah of huts with both PermaNet 2.0 and PermaNet 3.0 was higher than those from the verandah of the control hut. Huts with PermaNet 2.0 induced significantly higher exito-repellency compared to control huts. Insecticides often induce toxicity to mosquitoes. However, the non-toxic 'exito-repellent' effects of insecticides are often less understood. Pyrethroid and organophosphate insecticides are also known to have these non-killing effects. The impact of the non-killing effects of the insecticides on the risk of malaria is not clearly understood. Though exito-repellency appears to reduce indoor human-vector contact, it may on the contrary enhance risk of outdoor mosquito biting [23].\n", - "\n", - "The role of IRS as a key malaria vector control intervention tool is evident. Immediate mortality was observed in mosquitoes collected from the three huts sprayed with Actellic(r) 300CS up to the end of the study at 10 weeks post-spray. The proportion of blood-fed _Anopheles_ was significantly lower in the IRS-treated huts compared to the control hut. This could be due to the fast-acting nature of Actellic(r) 300CS insecticide with both contact and fumigant effects. This shows the potential of Actellic(r) 300CS as an insecticide of choice for IRS in areas where the local vector population is susceptible to the insecticide. _Anopheles arabiensis_ is susceptible to pirimibos-methyl in most parts of Ethiopia [10, 24]. Some earlier studies conducted in Ethiopia showed the effectiveness of combining IRS with ITNs compared to ITNs alone in suppressing vector populations [25]. Added benefits of combining IRS and ITNs in malaria prevention was also reported from other areas in sub-Saharan Africa [26-28]. In contrast, limited or no added benefit of combining IRS with ITNs as compared to ITNs alone has been reported elsewhere [29, 30]. This inconsistency could be attributed to differences in the intensity of malaria transmission and insecticide resistance of the local vector populations. The impact of the combined use of available vector control interventions appears to be more pronounced when applied in high transmission areas, and where the local vector populations are susceptible to the insecticide used for the IRS component [25].\n", - "\n", - "The importance of combining IRS and ITNs for malaria vector control is believed partly to come from the low or inconsistent utilization of ITNs by users and short residual efficacy of IRS insecticides [31, 32]. In Ethiopia, household surveys have shown approximately 50% of children under five and pregnant women use their nets with geographic variation [33]. The gap often created as a result of low utilization of ITNs may be complemented with IRS. ITN utilization and care depends on personal decisions and behavior [34]. However, once properly implemented, IRS rapidly suppresses local vector populations with no additional behaviors required from the residents, hence reducing malaria incidence [35]. However, effectiveness of IRS for malaria vector control is highly affected by both physiological and behavioral resistance of the local vector population to the insecticide [36], apart from operational factors and higher costs.\n", - "\n", - "As the study was conducted during the dry season of the year, the mosquito population density was not high and, therefore, limits the generalizability of the results. However, the findings of this study could provide preliminary information for vector control programs for the rational choice of future vector control intervention tools. In addition, combining indoor residual spraying using pirimibos-methyl with PBO nets has been reported to be antagonistic in some studies, but a negative interaction or antagonism between PBO and pirimibos-methyl was not detected in this study.\n", - "\n", - "header: Blood meal host source analysis and mosquito identification\n", - "\n", - "All the fed mosquitoes collected from the different huts were assayed to determine the blood meal host source using direct ELISA [13]. Moreover, a sub-sample of _An. gambiae_ s.l. was also molecularly identified to species using species-specific PCR following established protocol [14].\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Ethiopia\",\"Site\":\"Asendabo\"}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_holed\":18.0,\"pHI_category\":\"Torn\",\"Synergist\":null},\"N02\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"deltamethrin\",\"Net_holed\":18.0,\"pHI_category\":\"Torn\",\"Synergist\":\"PBO\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Chemical analysis results\n", - "\n", - "For PermaNet 3.0, PBO was only recorded from the roof panel of the nets; for Olyset Plus, PBO was recorded on all 5 panels (Table 6). Compared to the pyrethroid component, much less PBO was retained in both types of pyrethroid-PBO ITNs after 20 washes (58.7% vs. 25% with Olyset Plus and 80.9% vs. 68.8% with PermaNet 3.0, P < 0.05). The decrease in PBO content after washing was more evident in Olyset Plus than in PermaNet 3.0 netting, hence the wash retention index of PBO was higher with PermaNet 3.0 compared to Olyset Plus (98.1% vs. 93.3%).\n", - "\n", - "Figure 4: Tunnel test mortality (%) of susceptible and resistant strains of _Anopheles gambiae_ s.l. exposed to Olyset Plus vs. Olyset Net\n", - "\n", - "Figure 3: Mortality (%) of susceptible and resistant strains of _An. gambiae_ s.l. in cone bioassays with Olyset Plus and Olyset Net. S = susceptible, R = resistant\n", - "\n", - "header: Supplementary laboratory bioassays\n", - "\n", - "To help further explain the results obtained in the experimental huts, WHO cone bioassays and tunnel tests were performed on samples of netting (\\(30\\times 30\\) cm) obtained from Olyset Net and Olyset Plus when unwashed and after 10 and 20 washes. Washing was performed in the laboratory following WHO guidelines [22]. PermaNet 3.0 was not tested in the laboratory bioassays owing to the restricted application of PBO to the roof of the net preventing a realistic direct comparison with Olyset Plus in bioassays especially tunnel tests. Net samples from each ITN type and each wash point were tested against the following strains:\n", - "\n", - "1. _An. gambiae_ sensu lato (s.l.) strains from Cove, Benin (Cove strain) which is highly pyrethroid resistant. It originates from the experimental hut station in Cove and has shown > 200-fold resistance compared to the susceptible Kisumu strain in susceptibility bioassays. Resistance is mediated by elevated levels of P450s and high frequencies of _kdr_ [20].\n", - "2. _An. gambiae_ VKPer strain, which originated from the Kou Valley in Burkina Faso. VKPer has moderate levels of pyrethroid resistance mediated only by high frequencies of _kdr_.\n", - "3. _An. gambiae_ s.s. Kisumu strain, a reference susceptible strain which originated from Kisumu Kenya.\n", - "\n", - "Approximately two hundred 2-5 days old mosquitoes of each strain were exposed for 3 min in cone bioassays to four net samples of each net type in cohorts of 5 mosquitoes per cone. Knock down in cone bioassays was recorded after 1 h and mortality after 24 h.\n", - "\n", - "Two to three hundred 5-8 days old mosquitoes of each strain were also exposed to each net type in tunnel tests in replicates of 50 mosquitoes per net sample. The tunnel test is a laboratory assay designed to simulate natural host-seeking behaviour of mosquitoes at night in the presence of a net. It consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections by means of a netting frame fitted into a slot across the tunnel. An anesthetized guinea pig was housed unconstrained in a small cage in one section, and mosquitoes were released in the other section at dusk and left overnight. The net samples were holed with nine 1-cm diameter holes to allow host-seeking mosquitoes to penetrate the baited chamber; an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 degC and 75-85% RH. The next morning, the numbers found alive or dead, fed, or unfed, in each section were recorded. Live mosquitoes were provided with sugar solution and delayed mortality recorded after 24 h. The guinea pigs used in this study were kept in accordance with institutional guidelines for animal care.\n", - "\n", - "header: Experimental hut treatments\n", - "\n", - "Olyset Plus and PermaNet 3.0 were compared in the experimental huts when unwashed and after 20 standardized washes. A WHO-recommended pyrethroid-only long-lasting net (Olyset Net) was included to demonstrate the added effect of PBO on the insecticide-resistant local vector species. Nets were washed using savon de Marseilles and rinsed twice following WHO procedures for washing nets for experimental hut studies [22].\n", - "\n", - "The following seven (7) treatments were thus tested in seven experimental huts:\n", - "\n", - "1. Untreated polyethylene net\n", - "2. Olyset Net unwashed (permethrin only)\n", - "3. Olyset Net washed 20 times.\n", - "4. PermaNet 3.0 unwashed (Roof: deltamethrin plus PBO; sides: deltamethrin only)\n", - "5. PermaNet 3.0 washed 20 times.\n", - "6. Olyset Plus unwashed (permethrin plus PBO on all panels)\n", - "7. Olyset Plus washed 20 times.\n", - "\n", - "header: Background: Methods\n", - "\n", - "An experimental hut trial was performed in Cove, Benin to compare PermaNet 3.0 (deltamethrin plus PBO on roof panel only) to Olyset Plus (permethrin plus PBO on all panels) against wild pyrethroid-resistant _Anopheles gambiae_ sensu lato (s.l) following World Health Organization (WHO) guidelines. Both nets were tested unwashed and after 20 standardized washes compared to Olyset Net. Laboratory bioassays were also performed to help explain findings in the experimental huts.\n", - "\n", - "header: Mosquito blood-feeding rates in experimental huts\n", - "\n", - "The blood-feeding rates of wild pyrethroid-resistant _An. gambiae s.l_ that entered the experimental huts are presented in Fig. 2 with further details on mosquito feeding provided in Table 4. The percentage blood-feeding was lower in huts with the unwashed pyrethroid-PBO ITNs and was lowest of all with unwashed Olyset Plus as compared to unwashed PermaNet 3.0 (8% vs 19%, P < 0.001). For all net types, the data showed an overall increase in blood feeding with washed nets compared to unwashed nets and a decrease in blood-feeding inhibition relative to the untreated net. Percentage blood-feeding when washed 20 times did not differ significantly between the pyrethroid-PBO types (38% with PermaNet 3.0 vs. 35% with Olyset Plus, P = 0.708). The proportions of mosquitoes collected resting in the nets were lowest with the\n", - "\n", - "Fig. 1: Mortality of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", - "unwashed pyrethroid-PBO nets (2-6%), which is consistent with the higher toxicity observed with this type of net. Personal protection with both types of pyrethroid-PBO ITMs were > 80% when unwashed but this declined after 20 washes to 53% with PermaNet 3.0 and 11% with Olyset Plus.\n", - "\n", - "header: Abstract\n", - "\n", - "Comparative efficacy of two pyrethroid-piperonyl butoxide nets (Olyset Plus and PermaNet 3.0) against pyrethroid resistant malaria vectors: a non-inferiority assessment\n", - "\n", - "Corine Ngufor, Josias Fagbohoun, Abel Agbevo, Hanafy Ismail, Joseph D. Challenger, Thomas S. Churcher, Mark Rowland\n", - "\n", - "\n", - "\n", - "Pyrethroid-PBO nets were conditionally recommended for control of malaria transmitted by mosquitoes with oxidase-based pyrethroid-resistance based on epidemiological evidence of additional protective effect with Olyset Plus compared to a pyrethroid-only net (Olyset Net). Entomological studies can be used to assess the comparative performance of other brands of pyrethroid-PBO ITNs to Olyset Plus.\n", - "\n", - "header: Table 4: Blood-feeding rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", - "footer: Values along a row bearing the same letter label are not significantly different (P > 0.05) * Value set to zero as more blood fed mosquitoes were caught in washed Olyset Net huts than control hut\n", - "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", - "\n", - "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total blood fed\",\"Control\":\"496\",\"Olyset Net\":\"324\",\"Olyset Net.1\":\"807\",\"PermaNet 3.0\":\"95\",\"PermaNet 3.0.1\":\"231\",\"Olyset Plus\":\"56\",\"Olyset Plus.1\":\"442\"},\"3\":{\"Net type\":\"% Blood fed\",\"Control\":\"52a\",\"Olyset Net\":\"29b\",\"Olyset Net.1\":\"52a\",\"PermaNet 3.0\":\"19c\",\"PermaNet 3.0.1\":\"38d\",\"Olyset Plus\":\"8e\",\"Olyset Plus.1\":\"35d\"},\"4\":{\"Net type\":\"95% conf intervals\",\"Control\":\"48.4\\u201354.7\",\"Olyset Net\":\"25.9\\u201331.2\",\"Olyset Net.1\":\"49.7\\u201354.7\",\"PermaNet 3.0\":\"15.9\\u201322.9\",\"PermaNet 3.0.1\":\"33.7\\u201341.3\",\"Olyset Plus\":\"6.1\\u201310.2\",\"Olyset Plus.1\":\"32.1\\u201337.3\"},\"5\":{\"Net type\":\"% Blood-feeding inhibition\",\"Control\":\"-\",\"Olyset Net\":\"44\",\"Olyset Net.1\":\"0\",\"PermaNet 3.0\":\"63\",\"PermaNet 3.0.1\":\"27\",\"Olyset Plus\":\"85\",\"Olyset Plus.1\":\"33\"},\"6\":{\"Net type\":\"inside net\",\"Control\":\"294\",\"Olyset Net\":\"184\",\"Olyset Net.1\":\"542\",\"PermaNet 3.0\":\"28\",\"PermaNet 3.0.1\":\"130\",\"Olyset Plus\":\"17\",\"Olyset Plus.1\":\"241\"},\"7\":{\"Net type\":\"inside net (%)\",\"Control\":\"31a\",\"Olyset Net\":\"16bc\",\"Olyset Net.1\":\"35a\",\"PermaNet 3.0\":\"6d\",\"PermaNet 3.0.1\":\"21b\",\"Olyset Plus\":\"2e\",\"Olyset Plus.1\":\"19c\"},\"8\":{\"Net type\":\"Personal protection (%)\",\"Control\":\"-\",\"Olyset Net\":\"35\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"81\",\"PermaNet 3.0.1\":\"53\",\"Olyset Plus\":\"89\",\"Olyset Plus.1\":\"11\"}}\n", - "\n", - "header: Mosquito entry and exiting rates in experimental huts: Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts\n", - "\n", - "Mortality rates of wild pyrethroid resistant mosquitoes that entered the experimental huts are presented in Fig. 1 with further details provided in Table 3. The lowest mortality was achieved with Olyset Net (18% before washing and 12% after 20 washes). Percentage mortality with unwashed pyrethroid-PBO nets was highest with PermaNet 3.0 (41%) but this declined significantly after 20 washes (17%, P < 0.001). Mortality with unwashed Olyset Plus was 28% and while this value was significantly lower than the mortality shown by unwashed PermaNet 3.0 (P < 0.001), it did not decrease significantly after 20 washes (28% vs. 24%, P = 0.433) whereas for PermaNet 3.0 it declined. Hence, Olyset Plus induced higher mortality rates than PermaNet 3.0 after 20 washes (24% vs 17%, P < 0.001). With respect to the pyrethroid-only ITN, both pyrethroid-PBO nets induced significantly higher mortality rates than Olyset Net with nets washed 20 times (P < 0.001) though the difference was higher with Olyset Plus (24% vs. 12%), than with PermaNet 3.0 (17% vs. 12%). After 20 washes, mortality with PermaNet 3.0 declined to the same level as the unwashed Olyset Net, (17% vs. 18%, P = 0.061) but remained significantly higher with Olyset Plus (24% vs. 17%, P = 0.036).\n", - "\n", - "header: Cone bioassay results: Tunnel test results\n", - "\n", - "The results from the tunnel tests comparing Olyset Plus and Olyset Net unwashed and after 10 and 20 washes against all three strains are presented in Figs. 4 and 5 for mortality and blood-feeding inhibition respectively. Mortality rates were generally higher in the tunnels tests compared to the cone bioassays and decreased as the strain become more pyrethroid-resistant (Fig. 4). Mortality rates with the Kisumu strain were very high with Olyset Net and Olyset Plus (> 95%). With the VKPer strain, mortality remained > 80% after 20 washes with both ITN types. With the Cove strain, mortality was significantly higher with Olyset Plus compared to Olyset Net at 0 and 10 washes but about the same after 20 washes. With unwashed nets, blood-feeding inhibition in the tunnel tests was consistently higher with Olyset Plus (> 90%) compared to Olyset Net (27-75%) for all three strains tested (Fig. 5). After 10 and 20 washes, blood-feeding inhibition of the Kisumu and VKPer strain remained > 80% with Olyset Plus and Olyset Net. With Cove strain, blood-feeding inhibition was also higher with Olyset Plus at 0 and 10 washes but declined to about the same level as Olyset Net after 20 washes (56%).\n", - "Mortality in the untreated control tunnel was < 10% with all three strains.\n", - "\n", - "header: Results\n", - "\n", - "Mortality with permethrin and alpha-cypermethrin treated papers was 100% with the laboratory-maintained pyrethroid-susceptible _An. gambiae_ Kisumu strain. With wild pyrethroid resistant _An. gambiae_ s.l. from Cove, mortality rates were <50% with all three pyrethroid insecticides tested (Table 1) thus confirming the high levels of pyrethroid resistance in this vector population. Mortality however increased from 19.2 to 52.5% with permethrin, 41.7% to 69.7% with deltamethrin and 0% to 82.4% with alphacypermethrin after pre-exposure of the Cove strain to PBO synergist (Table 1). This result demonstrated that mixed function oxidases are overexpressed in the wild Cove vector population and their effect can be effectively inhibited by the PBO synergist.\n", - "\n", - "header: Table 2 Entry and exiting rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", - "footer: Values along a row bearing the same letter label are not signi\u001d\n", - "cantly different (P>0.05)* Value set to zero as more mosquitoes caught in Olyset Net huts than control huts\n", - "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", - "\n", - "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"N collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"N females\\/night\",\"Control\":\"23a\",\"Olyset Net\":\"27ab\",\"Olyset Net.1\":\"37b\",\"PermaNet 3.0\":\"12c\",\"PermaNet 3.0.1\":\"15d\",\"Olyset Plus\":\"16d\",\"Olyset Plus.1\":\"30ab\"},\"3\":{\"Net type\":\"% deterrence\",\"Control\":null,\"Olyset Net\":\"0*\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"49\",\"PermaNet 3.0.1\":\"36\",\"Olyset Plus\":\"28\",\"Olyset Plus.1\":\"0\"},\"4\":{\"Net type\":\"N exiting\",\"Control\":\"429\",\"Olyset Net\":\"639\",\"Olyset Net.1\":\"669\",\"PermaNet 3.0\":\"319\",\"PermaNet 3.0.1\":\"370\",\"Olyset Plus\":\"468\",\"Olyset Plus.1\":\"712\"},\"5\":{\"Net type\":\"% exiting\",\"Control\":\"45a\",\"Olyset Net\":\"56b\",\"Olyset Net.1\":\"43a\",\"PermaNet 3.0\":\"65cd\",\"PermaNet 3.0.1\":\"60ce\",\"Olyset Plus\":\"68d\",\"Olyset Plus.1\":\"56be\"},\"6\":{\"Net type\":\"95% conf. limits\",\"Control\":\"41.5\\u201347.7\",\"Olyset Net\":\"53.4\\u201359.2\",\"Olyset Net.1\":\"40.8\\u201345.7\",\"PermaNet 3.0\":\"61.0\\u201369.5\",\"PermaNet 3.0.1\":\"56.2\\u201363.9\",\"Olyset Plus\":\"64.4\\u201371.4\",\"Olyset Plus.1\":\"53.1\\u201358.6\"}}\n", - "\n", - "header: Experimental hut site: Insecticide resistance bioassays\n", - "\n", - "To assess the frequency of pyrethroid resistance and presence of mixed function oxidases in the Cove vector population during the trial, adult mosquitoes that emerged from larvae collected from breeding sites close to experimental huts were tested in WHO cylinder bioassays with and without pre-exposure to PBO. A total of ~100 mosquitoes of the pyrethroid resistant _An. gambiae_ s.l. Cove strain and the pyrethroid susceptible _An. gambiae_ Kisumu strain were exposed to treated filter papers in WHO cylinder bioassays in batches of 25. Tests were performed with papers treated with permethrin 0.75%, alpha-cypermethrin 0.05% and deltamethrin 0.05%. To assess presence of MFO, some mosquitoes were also pre-exposed to papers treated with 4% PBO prior to exposure to insecticide-treated papers. Exposure to PBO and to insecticides lasted 1 h, knockdown was recorded after 60 min and mortality after 24 h.\n", - "\n", - "header: Background\n", - "\n", - "Long-lasting insecticidal nets (LLINs) remain one of the most powerful tools to reduce malaria transmission in a community and provide personal protection to the user [1, 2]. They have contributed significantly to recent reductions in malaria burden [3]. Their efficacy is however threatened by increasing resistance to pyrethroids [4, 5]; the insecticide of choice used on bed-nets owing to its safety, low cost and rapid activity on vector mosquitoes [6]. To maintain the effectiveness of insecticide treated nets for malaria control, new types of LLINs treated with alternative insecticides and compounds which can either replace or complement pyrethroids on bed-nets are urgently needed.\n", - "\n", - "A new class of insecticide treated nets (ITNs) combining pyrethroids and piperonyl butoxide (PBO) (pyrethroid-PBO ITNs) have been developed [7]. PBO is a synergist that inhibits specific metabolic enzymes such as mixed-function oxidases within mosquitoes that detoxify or sequester insecticides before they can have a toxic effect on the mosquito. Pyrethroid-PBO nets can therefore induce increased mortality of pyrethroid-resistant malaria vectors that express mixed function oxidase based pyrethroid resistance mechanisms that are inhibited by the PBO in the net. These nets were given an interim endorsement as a new WHO class of vector control products in 2017 based on epidemiological data from a cluster randomized controlled trial in North Eastern Tanzania [8], that demonstrated additional malaria control with one prototype pyrethroid-PBO net (Olyset Plus) compared to a pyrethroid-only net (Olyset Net), against pyrethroid resistant malaria vectors of moderate intensity, partly conferred by monooxygenase-based resistance mechanism. Pyrethroid-PBO ITNs are conditionally recommended for malaria vector control instead of pyrethroid-only ITNs in areas of confirmed intermediate levels of resistance mediated by monooxygenase-based resistance mechanism [9]. This endorsement has been followed by an increasing uptake of pyrethroid-PBO nets worldwide [10]; in sub-Saharan Africa for example, the proportion of pyrethroid-PBO nets of all nets delivered increased from 3% in 2018 to 35% in 2021.\n", - "\n", - "While Olyset Plus was the first in class pyrethroid-PBO net to demonstrate public health value as observed in the Tanzanian trial [8], there are currently five additional types of pyrethroid-PBO ITNs on the World Health Organization (WHO) list of prequalified vector control products: PermaNet 3.0, Veeralin, Tsara Boost, Tsara Plus and very recently DuraNet Plus [7]. These nets have all demonstrated superiority over pyrethroid-only nets in terms of mosquito mortality and blood-feeding inhibition in multiple experimental hut trials across Africa [11, 12, 13, 14, 15, 16, 17]. However, they differ from Olyset Plus in their design and specifications; typically, the location of PBO on the net (i.e., all panels vs. roof panel only), the type and dose of pyrethroid used, bioavailability and retention of PBO after washing and could, therefore, differ in entomological and epidemiological impact. A recent large cluster-randomized trial in Uganda, evaluating the efficacy of Olyset Plus and PermaNet 3.0 compared to pyrethroid-only nets in a setting of high pyrethroid resistance, also demonstrated better protection against malaria with pyrethroid-PBO nets compared to pyrethroid-only nets for up to 18 months confirming the findings of the Tanzanian trial [18]. While the Ugandan trial was not powered to directly compare between the different ITN brands tested, the results showed that the additional protective effect of the pyrethroid-PBO net compared to the pyrethroid-only net was initially large with PermaNet 3.0 at 6 months post-distribution but lasted only up to 12 months whereas additional protective effect with Olyset Plus appeared to have a delayed onset which was not observed at 6 months but became evident at 12 months and lasted up to 18 months. There are major differences in design between Olyset Plus and PermaNet 3.0, which could have implications on their epidemiological impact; Olyset Plus is a polyethylene net incorporated with permethrin and PBO on all panels while PermaNet 3.0 is a polyester net coated with deltamethrin with PBO restricted to the roof of the net.\n", - "\n", - "To generate assurance of comparative performance of new candidate products within an established WHO vector control product class, without the need for epidemiological evidence for each new product, the WHO has developed new experimental hut study guidelines for assessing their non-inferiority to a first in class product for which evidence of public health value has already been generated [19]. These provisional guidelines are to be piloted with pyrethroid-PBO nets by comparing other WHO/PQ-listed pyrethroid-PBO nets with the first in class product, Olyset Plus. This study compared the efficacy and wash resistance of Olyset Plus and PermaNet\n", - "3.0 and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against wild free-flying pyrethroid resistant malaria vectors in Southern Benin.\n", - "\n", - "header: Supplementary laboratory bioassays results\n", - "\n", - "The 3-min cone bioassay mortality results for all 3 mosquito strains and wash points tested are presented in Fig. 3. Unwashed Olyset Net induced very low mortality rates against the susceptible Kisumu strain (17-20%) and even lower mortality rates against the pyrethroid resistant strains (< 5%). Cone bioassay mortality rates with unwashed Olyset Plus were higher across all 3 strains compared to Olyset Net though mortality decreased as the strain tested became more pyrethroid-resistant. Cone bioassay mortality however dropped significantly with washed net samples. Mortality with the untreated net samples did not exceed 5% with any strain tested.\n", - "\n", - "header: Insecticide resistance in malaria vectors in Cove: Experimental hut trial results\n", - "\n", - "A total of 6711 pyrethroid resistant female _An. gambiae_ s.l. were collected during the experimental hut trial. The entry and exiting rates of wild pyrethroid resistant _An. gambiae_ s.l. from the experimental huts with the different ITN types tested in the trial are presented in Table 2. Compared to the control, Olyset Net did not deter mosquitoes from entering the experimental huts (0% when unwashed and after 20 washes). Mosquito deterrence was significantly higher with PermaNet 3.0 compared to Olyset Plus both unwashed (49% vs. 28%, P < 0.001) and after 20 washes (36% vs. 0%, P < 0.001). Nevertheless, early exiting of mosquitoes from the experimental huts into the veranda trap did not differ significantly between both pyrethroid-PBO net types both when unwashed (65% with PermaNet 3.0 vs 68% with Olyset Plus, P = 0.232) and after 20 washes (60% with PermaNet 3.0 vs. 56% with Olyset Plus, P = 0.053).\n", - "\\begin{table}\n", - "\\begin{tabular}{l c c c c c c}\n", - "**Net type** & **Control** & **Olyset Net** & & **PermNet 3.0** & **Olyset Plus** \\\\ Number of washes & 0 & 0 & 20 & 0 & 20 & 0 & 20 \\\\ N collected & 962 & 1135 & 1546 & 489 & 616 & 688 & 1275 \\\\ N females/night & 233 & 27\\({}^{\\text{hb}}\\) & 37\\({}^{\\text{b}}\\) & 12\\({}^{\\text{c}}\\) & 15\\({}^{\\text{d}}\\) & 16\\({}^{\\text{d}}\\) & 30\\({}^{\\text{hb}}\\) \\\\ \\% deterrence & – & 0\\({}^{\\text{a}}\\) & 0\\({}^{\\text{a}}\\) & 49 & 36 & 28 & 0 \\\\ N eating & 429 & 639 & 669 & 319 & 370 &\n", - "\n", - "header: Table 1: Mortality of pyrethroid resistant Anopheles gambiae s.l. from Cove in WHO cylinder bioassays with and without pre-exposure to PBO\n", - "footer: None\n", - "columns: ['Variable', 'N exposed', 'N dead', '% Dead']\n", - "\n", - "{\"0\":{\"Variable\":\"Control\",\"N exposed\":101,\"N dead\":0,\"% Dead\":0.0},\"1\":{\"Variable\":\"PBO 4% only\",\"N exposed\":103,\"N dead\":3,\"% Dead\":2.9},\"2\":{\"Variable\":\"Permethrin 0.75%\",\"N exposed\":104,\"N dead\":20,\"% Dead\":19.2},\"3\":{\"Variable\":\"Deltamethrin 0.05%\",\"N exposed\":91,\"N dead\":38,\"% Dead\":41.7},\"4\":{\"Variable\":\"Alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":0,\"% Dead\":0.0},\"5\":{\"Variable\":\"PBO 4% then permethrin 0.75%\",\"N exposed\":99,\"N dead\":52,\"% Dead\":52.5},\"6\":{\"Variable\":\"PBO 4% then deltamethrin 0.05%\",\"N exposed\":99,\"N dead\":69,\"% Dead\":69.7},\"7\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4},\"8\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4}}\n", - "\n", - "header: Chemical analysis\n", - "\n", - "At the end of the experimental hut trial, five pieces of netting (\\(25\\times 25\\) cm) obtained from the panels of replicate nets of each net type (before and after washing) used in the huts were assessed for deltamethrin, permethrin and PBO content using HPLC. Insecticide was extracted from each net piece with an area of 48 sq cm collected from the five net samples (\\(25\\times 25\\) cm) obtained from each whole net. The insecticide content of each sample was determined by injecting ten ul aliquots of the extract on a reverse-phase Hypersil GOLD C18 column (75 A, \\(250\\times 4.6\\) mm, 5-um particle size; Thermo Scientific) at room temperature. A mobile phase of 70% acetonitrile in water was used at a flow rate of 1 ml min\\({}^{-1}\\) to separate the target analyte. Chromatographic peaks of the insecticides and internal standard were detected at a wavelength of 232 nm with the Ultimate 3000 UV detector and analysed with Dionex Chromeleon(tm) 6.8 Chromatography Data System software. Quantities of insecticide were calculated from standard curves established by known concentrations of the insecticide authenticated standards and corrected by internal standard readings in each sample relative to control.\n", - "\n", - "Data from chemical analysis was used to calculate the percentage retention of each active ingredient after 20 washes relative to the unwashed net and the wash retention index. Wash-resistance index was calculated according to WHO guidelines [22] as indicated below:\n", - "\n", - "\\[\\text{Wash resistance index} = 100\\times\\text{n}\\sqrt{(\\text{tn}/\\text{t0})}\\] \\[\\left(\\text{free migration stage behaviour}\\right)\\]\n", - "\n", - "where \\(\\text{tn}=\\text{total active ingredient content after n washing cycles, t0=total active ingredient content before washing, n=number of washes.\n", - "\n", - "header: Results\n", - "\n", - "With unwashed nets, mosquito mortality was higher in huts with PermaNet 3.0 compared to Olyset Plus (41% vs. 28%, P < 0.001). After 20 washes, mortality declined significantly with PermaNet 3.0 (41% unwashed vs. 17% after washing P < 0.001), but not with Olyset Plus (28% unwashed vs. 24% after washing P = 0.433); Olyset Plus induced significantly higher mortality than PermaNet 3.0 and Olyset Net after 20 washes. PermaNet 3.0 showed a higher wash retention of PBO compared to Olyset Plus. A non-inferiority analysis performed with data from unwashed and washed nets together using a margin recommended by the WHO, showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality (25% with Olyset Plus vs. 27% with PermaNet 3.0, OR = 1.528, 95%Cl = 1.02-2.29) but not in reducing mosquito feeding (25% with Olyset Plus vs. 30% with PermaNet 3.0, OR = 1.192, 95%Cl = 0.77-1.84). Both pyrethroid-PBO nets were superior to Olyset Net.\n", - "\n", - "header: Table 3 Mortality of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", - "footer: Values along a row bearing the same letter label are not signi\u001d\n", - "cantly di\u001c\n", - "erent (P>0.05)\n", - "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", - "\n", - "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total dead\",\"Control\":\"12\",\"Olyset Net\":\"209\",\"Olyset Net.1\":\"284\",\"PermaNet 3.0\":\"198\",\"PermaNet 3.0.1\":\"103\",\"Olyset Plus\":\"190\",\"Olyset Plus.1\":\"297\"},\"3\":{\"Net type\":\"Mortality (%)\",\"Control\":\"1a\",\"Olyset Net\":\"18b\",\"Olyset Net.1\":\"12c\",\"PermaNet 3.0\":\"41d\",\"PermaNet 3.0.1\":\"17b\",\"Olyset Plus\":\"28e\",\"Olyset Plus.1\":\"24e\"},\"4\":{\"Net type\":\"95% conf. limits\",\"Control\":\"0.6\\u20132.0\",\"Olyset Net\":\"16.2\\u201320.1\",\"Olyset Net.1\":\"10.3\\u201313.5\",\"PermaNet 3.0\":\"36.1\\u201344.8\",\"PermaNet 3.0.1\":\"13.8\\u201319.8\",\"Olyset Plus\":\"24.4\\u201331.1\",\"Olyset Plus.1\":\"21.0\\u201325.6\"},\"5\":{\"Net type\":\"Corrected for control (%)\",\"Control\":\"-\",\"Olyset Net\":\"17\",\"Olyset Net.1\":\"11\",\"PermaNet 3.0\":\"41\",\"PermaNet 3.0.1\":\"17\",\"Olyset Plus\":\"27\",\"Olyset Plus.1\":\"22\"}}\n", - "\n", - "header: Discussion\n", - "\n", - "Following the interim endorsement of pyrethroid-PBO nets by the WHO [23], malaria vector control programmes are faced with additional choice of different brands of prequalified pyrethroid-PBO nets [7]. Considering the wide variations in design of the available brands of these nets, studies generating the required assurance of comparative performance to Olyset Plus (the first in class pyrethroid-PBO net to demonstrate empirical evidence of entomological and epidemiological impact) are necessary. This study compared the efficacy and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against pyrethroid resistant malaria vectors in a highly endemic country of West Africa, following WHO guidelines [19, 22].\n", - "\n", - "The WHO susceptibility bioassays confirmed the high levels of pyrethroid resistance in the vector population at the experimental hut site during the trial, corroborating previous findings [20]. The increased mortality achieved in bioassays with pre-exposure to PBO showed that pyrethroid-resistance was indeed at least partly mediated by increased mono-oxygenase activity. The experimental hut trial demonstrated improved levels of mortality and blood-feeding inhibition with both pyrethroid-PBO ITN types compared to a standard pyrethroid-only LLIN against a vector population that was very resistant to pyrethroids; this was supported by results from the laboratory assays which compared Olyset Plus to Olyset Net against pyrethroid-resistant mosquito strains. These observations are partly attributable to the synergistic effect of the PBO on pyrethroid resistance and are consistent with other experimental hut trials across Africa and epidemiological trials performed in Tanzania [8] and Uganda [18].\n", - "\n", - "Twenty washes in experimental hut studies are indicated by WHO as a proxy for the ability of an ITN to withstand multiple washes under operational use over a 3-year life span [19, 22]. With unwashed nets, the levels of improved mortality relative to the standard pyrethroid-only net were higher with PermaNet 3.0 than with Olyset Plus. However, unlike with Olyset Plus, this effect was lost with PermaNet 3.0 after twenty washes;\n", - "Figure 5: Blood-feeding inhibition (%) of susceptible and resistant strains of _An. gambiae s.l._ in tunnel tests with Olyset Plus and Olyset Net. Blood-feeding inhibition was calculated relative to the control tunnel. 5 = susceptible, R = Resistant\n", - "PermanNet 3.0 killed significantly lower proportions of mosquitoes than Olyset Plus and same proportions as an unwashed pyrethroid-only ITN. Though the RCT in Uganda was not powered to assess differences between the pyrethroid-PBO ITN brands tested (PermanNet 3.0 vs. Olyset Plus) [18], the results from our trial appear consistent with some of the differences in epidemiological effect observed between both brands: (1) The high experimental hut mortality with the unwashed PermaNet 3.0 supports the higher initial protective effect observed with the net in the Ugandan trial at the 6 months epidemiological survey which was not seen with Olyset Plus. (2) The higher rate of decline in experimental hut mortality after washing with PermaNet 3.0 compared to Olyset Plus is consistent with the shorter-lived epidemiological effect in the Ugandan trial with PermaNet 3.0 (up to 12 months) compared to Olyset Plus which remained more protective than the pyrethroid-only net at 18 months. However, care should be taken to not over-interpret the comparisons between results from our hut trial and Ugandan RCT considering the different geographical settings and the lack of sufficient power to differentiate between the epidemiological impact of both pyrethroid-PBO net type in the Ugandan trial.\n", - "\n", - "The difference in hut performance between both pyrethroid-PBO ITNs can be attributed to differences in the retention and movement of PBO across the polymer fibre in Olyset Plus compared to PermaNet 3.0 and/or differences in design and specification. Retention of biofeficacy of pyrethroid-PBO nets is a fine balance between migration and replenishment of PBO from the core to the surface of fibres and the maintenance of an internal reservoir sufficient to last the lifespan of the LLIN, which is typically set at 3 years of use [24]. The chemical analysis results showed a faster release of PBO in the Olyset Plus netting after 20 washes compared to PermaNet 3.0 though it is unclear whether this may have increased the bioavailability of the PBO on the surface of Olyset Plus after washing. Whether sufficient PBO would remain within the fibres of both pyrethroid-PBO nets after 3 years of household use is presently unknown and is the subject of ongoing WHO durability trials of Olyset Plus and PermaNet 3.0 which are not yet completed [18, 25]. Another factor which may contribute to the discrepancies in efficacy of the two pyrethroid-PBO ITNs are differences in design and specification: Olyset Plus is treated with the pyrethroid permethrin while PermaNet 3.0 is treated with deltamethrin, and Olyset Plus contains PBO on every panel whereas in PermaNet 3.0, PBO is available only on the top panel of the net. It is not clear whether the restricted application of PBO to the roof of the net would affect bioefficacy. This would require comparative trials of the PermaNet 3.0 with pyrethroid-PBO restricted to the upper panel and pyrethroid to side panels versus an ITN with all 5 panels treated with pyrethroid-PBO. Behavioural studies of mosquitoes around nets indicate that mosquitoes may first make multiple contacts with the roof panel in response to odour plumes [26]; however, experimental hut trials comparing restricted versus full PBO coverage on nets are too few to be definitive on the question of efficacy.\n", - "\n", - "Despite the differences in performance observed between both pyrethroid-PBO net types with regards to their impact after 20 standardized washes, the non-inferiority analysis performed in accordance with recent WHO guidelines [19] showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality but not with blood-feeding inhibition. The higher blood-feeding inhibition observed with Olyset Plus could be due to the high excito-repellency of permethrin in Olyset Plus compared to deltamethrin in PermaNet 3.0 [27]. Alternatively, the study may not have had sufficient power to demonstrate non-inferiority of PermaNet 3.0 to Olyset Plus for both endpoints; further studies are on-going to help guide power calculations for ITN non-inferiority studies. The non-inferiority margin used for the analysis was defined by WHO as an odds ratio of 0.7 in mosquito mortality and feeding between a candidate net and the first in class net considered acceptable for both products to be in the same policy class. According to these guidelines, if non-inferiority is demonstrated in two independent experimental hut trials in different geographical locations representative of where the products will be deployed, then PermaNet 3.0 will be placed in the same WHO vector control product class as Olyset Plus [19]. It is however not clear whether non-inferiority must be demonstrated for both endpoints (mortality and blood-feeding) for a second-in class product to become part of an intervention class. While the guidelines were developed more like a compromise between the risk of accepting an inferior product and the feasibility of conducting epidemiological trials, the findings from our trial show that non-inferiority experimental hut trials are complex, and results must be interpreted with care. Comparative performance between products may also depend on other location-specific factors, such as the intensity of insecticide resistance and behaviour of the target vector population which should be taken into consideration when choosing between products of the same class.\n", - "\n", - "While the present hut trial in Benin and earlier hut trials in Benin, Tanzania, Cameroon, Burkina Faso, Cote d'Ivoire and Vietnam where the vectors were also resistant have shown some additional effect of pyrethroid-PBO nets over a standard pyrethroid net [12, 13, 15-17], the margin appears to vary depending on the level of \n", - "pyrethroid-resistance encountered [28]. The absolute increase in hut trial mortality with Olyset Plus compared to Olyset Net in the present study (24-28% vs. 12-18%) conducted in an area of intense pyrethroid-resistance [20] is lower than what has been previously reported with Olyset Plus in another area in Northern Benin where pyrethroid resistance was less prevalent (67-81% vs. 36-42%) [16]. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors [29] mediated by complex and multiple insecticide resistance mechanisms which may not be effectively tackled by the synergistic effects of PBO in pyrethroid-PBO ITNs [4, 23]. It is therefore not clear whether a diminishment in experimental but mortality with pyrethroid-PBO nets due to increasing intensity of pyrethroid-resistance would translate to a reduced epidemiological effect of pyrethroid-PBO ITNs in West Africa compared to East Africa which has been the site of the only epidemiological trials so far.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Chemical analysis results\n", - "\n", - "For PermaNet 3.0, PBO was only recorded from the roof panel of the nets; for Olyset Plus, PBO was recorded on all 5 panels (Table 6). Compared to the pyrethroid component, much less PBO was retained in both types of pyrethroid-PBO ITNs after 20 washes (58.7% vs. 25% with Olyset Plus and 80.9% vs. 68.8% with PermaNet 3.0, P < 0.05). The decrease in PBO content after washing was more evident in Olyset Plus than in PermaNet 3.0 netting, hence the wash retention index of PBO was higher with PermaNet 3.0 compared to Olyset Plus (98.1% vs. 93.3%).\n", - "\n", - "Figure 4: Tunnel test mortality (%) of susceptible and resistant strains of _Anopheles gambiae_ s.l. exposed to Olyset Plus vs. Olyset Net\n", - "\n", - "Figure 3: Mortality (%) of susceptible and resistant strains of _An. gambiae_ s.l. in cone bioassays with Olyset Plus and Olyset Net. S = susceptible, R = resistant\n", - "\n", - "header: Abstract\n", - "\n", - "Comparative efficacy of two pyrethroid-piperonyl butoxide nets (Olyset Plus and PermaNet 3.0) against pyrethroid resistant malaria vectors: a non-inferiority assessment\n", - "\n", - "Corine Ngufor, Josias Fagbohoun, Abel Agbevo, Hanafy Ismail, Joseph D. Challenger, Thomas S. Churcher, Mark Rowland\n", - "\n", - "\n", - "\n", - "Pyrethroid-PBO nets were conditionally recommended for control of malaria transmitted by mosquitoes with oxidase-based pyrethroid-resistance based on epidemiological evidence of additional protective effect with Olyset Plus compared to a pyrethroid-only net (Olyset Net). Entomological studies can be used to assess the comparative performance of other brands of pyrethroid-PBO ITNs to Olyset Plus.\n", - "\n", - "header: Results\n", - "\n", - "Mortality with permethrin and alpha-cypermethrin treated papers was 100% with the laboratory-maintained pyrethroid-susceptible _An. gambiae_ Kisumu strain. With wild pyrethroid resistant _An. gambiae_ s.l. from Cove, mortality rates were <50% with all three pyrethroid insecticides tested (Table 1) thus confirming the high levels of pyrethroid resistance in this vector population. Mortality however increased from 19.2 to 52.5% with permethrin, 41.7% to 69.7% with deltamethrin and 0% to 82.4% with alphacypermethrin after pre-exposure of the Cove strain to PBO synergist (Table 1). This result demonstrated that mixed function oxidases are overexpressed in the wild Cove vector population and their effect can be effectively inhibited by the PBO synergist.\n", - "\n", - "header: Background: Methods\n", - "\n", - "An experimental hut trial was performed in Cove, Benin to compare PermaNet 3.0 (deltamethrin plus PBO on roof panel only) to Olyset Plus (permethrin plus PBO on all panels) against wild pyrethroid-resistant _Anopheles gambiae_ sensu lato (s.l) following World Health Organization (WHO) guidelines. Both nets were tested unwashed and after 20 standardized washes compared to Olyset Net. Laboratory bioassays were also performed to help explain findings in the experimental huts.\n", - "\n", - "header: Mosquito blood-feeding rates in experimental huts\n", - "\n", - "The blood-feeding rates of wild pyrethroid-resistant _An. gambiae s.l_ that entered the experimental huts are presented in Fig. 2 with further details on mosquito feeding provided in Table 4. The percentage blood-feeding was lower in huts with the unwashed pyrethroid-PBO ITNs and was lowest of all with unwashed Olyset Plus as compared to unwashed PermaNet 3.0 (8% vs 19%, P < 0.001). For all net types, the data showed an overall increase in blood feeding with washed nets compared to unwashed nets and a decrease in blood-feeding inhibition relative to the untreated net. Percentage blood-feeding when washed 20 times did not differ significantly between the pyrethroid-PBO types (38% with PermaNet 3.0 vs. 35% with Olyset Plus, P = 0.708). The proportions of mosquitoes collected resting in the nets were lowest with the\n", - "\n", - "Fig. 1: Mortality of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", - "unwashed pyrethroid-PBO nets (2-6%), which is consistent with the higher toxicity observed with this type of net. Personal protection with both types of pyrethroid-PBO ITMs were > 80% when unwashed but this declined after 20 washes to 53% with PermaNet 3.0 and 11% with Olyset Plus.\n", - "\n", - "header: Supplementary laboratory bioassays\n", - "\n", - "To help further explain the results obtained in the experimental huts, WHO cone bioassays and tunnel tests were performed on samples of netting (\\(30\\times 30\\) cm) obtained from Olyset Net and Olyset Plus when unwashed and after 10 and 20 washes. Washing was performed in the laboratory following WHO guidelines [22]. PermaNet 3.0 was not tested in the laboratory bioassays owing to the restricted application of PBO to the roof of the net preventing a realistic direct comparison with Olyset Plus in bioassays especially tunnel tests. Net samples from each ITN type and each wash point were tested against the following strains:\n", - "\n", - "1. _An. gambiae_ sensu lato (s.l.) strains from Cove, Benin (Cove strain) which is highly pyrethroid resistant. It originates from the experimental hut station in Cove and has shown > 200-fold resistance compared to the susceptible Kisumu strain in susceptibility bioassays. Resistance is mediated by elevated levels of P450s and high frequencies of _kdr_ [20].\n", - "2. _An. gambiae_ VKPer strain, which originated from the Kou Valley in Burkina Faso. VKPer has moderate levels of pyrethroid resistance mediated only by high frequencies of _kdr_.\n", - "3. _An. gambiae_ s.s. Kisumu strain, a reference susceptible strain which originated from Kisumu Kenya.\n", - "\n", - "Approximately two hundred 2-5 days old mosquitoes of each strain were exposed for 3 min in cone bioassays to four net samples of each net type in cohorts of 5 mosquitoes per cone. Knock down in cone bioassays was recorded after 1 h and mortality after 24 h.\n", - "\n", - "Two to three hundred 5-8 days old mosquitoes of each strain were also exposed to each net type in tunnel tests in replicates of 50 mosquitoes per net sample. The tunnel test is a laboratory assay designed to simulate natural host-seeking behaviour of mosquitoes at night in the presence of a net. It consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections by means of a netting frame fitted into a slot across the tunnel. An anesthetized guinea pig was housed unconstrained in a small cage in one section, and mosquitoes were released in the other section at dusk and left overnight. The net samples were holed with nine 1-cm diameter holes to allow host-seeking mosquitoes to penetrate the baited chamber; an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 degC and 75-85% RH. The next morning, the numbers found alive or dead, fed, or unfed, in each section were recorded. Live mosquitoes were provided with sugar solution and delayed mortality recorded after 24 h. The guinea pigs used in this study were kept in accordance with institutional guidelines for animal care.\n", - "\n", - "header: Supplementary laboratory bioassays results\n", - "\n", - "The 3-min cone bioassay mortality results for all 3 mosquito strains and wash points tested are presented in Fig. 3. Unwashed Olyset Net induced very low mortality rates against the susceptible Kisumu strain (17-20%) and even lower mortality rates against the pyrethroid resistant strains (< 5%). Cone bioassay mortality rates with unwashed Olyset Plus were higher across all 3 strains compared to Olyset Net though mortality decreased as the strain tested became more pyrethroid-resistant. Cone bioassay mortality however dropped significantly with washed net samples. Mortality with the untreated net samples did not exceed 5% with any strain tested.\n", - "\n", - "header: Experimental hut treatments\n", - "\n", - "Olyset Plus and PermaNet 3.0 were compared in the experimental huts when unwashed and after 20 standardized washes. A WHO-recommended pyrethroid-only long-lasting net (Olyset Net) was included to demonstrate the added effect of PBO on the insecticide-resistant local vector species. Nets were washed using savon de Marseilles and rinsed twice following WHO procedures for washing nets for experimental hut studies [22].\n", - "\n", - "The following seven (7) treatments were thus tested in seven experimental huts:\n", - "\n", - "1. Untreated polyethylene net\n", - "2. Olyset Net unwashed (permethrin only)\n", - "3. Olyset Net washed 20 times.\n", - "4. PermaNet 3.0 unwashed (Roof: deltamethrin plus PBO; sides: deltamethrin only)\n", - "5. PermaNet 3.0 washed 20 times.\n", - "6. Olyset Plus unwashed (permethrin plus PBO on all panels)\n", - "7. Olyset Plus washed 20 times.\n", - "\n", - "header: Experimental hut site: Insecticide resistance bioassays\n", - "\n", - "To assess the frequency of pyrethroid resistance and presence of mixed function oxidases in the Cove vector population during the trial, adult mosquitoes that emerged from larvae collected from breeding sites close to experimental huts were tested in WHO cylinder bioassays with and without pre-exposure to PBO. A total of ~100 mosquitoes of the pyrethroid resistant _An. gambiae_ s.l. Cove strain and the pyrethroid susceptible _An. gambiae_ Kisumu strain were exposed to treated filter papers in WHO cylinder bioassays in batches of 25. Tests were performed with papers treated with permethrin 0.75%, alpha-cypermethrin 0.05% and deltamethrin 0.05%. To assess presence of MFO, some mosquitoes were also pre-exposed to papers treated with 4% PBO prior to exposure to insecticide-treated papers. Exposure to PBO and to insecticides lasted 1 h, knockdown was recorded after 60 min and mortality after 24 h.\n", - "\n", - "header: Table 1: Mortality of pyrethroid resistant Anopheles gambiae s.l. from Cove in WHO cylinder bioassays with and without pre-exposure to PBO\n", - "footer: None\n", - "columns: ['Variable', 'N exposed', 'N dead', '% Dead']\n", - "\n", - "{\"0\":{\"Variable\":\"Control\",\"N exposed\":101,\"N dead\":0,\"% Dead\":0.0},\"1\":{\"Variable\":\"PBO 4% only\",\"N exposed\":103,\"N dead\":3,\"% Dead\":2.9},\"2\":{\"Variable\":\"Permethrin 0.75%\",\"N exposed\":104,\"N dead\":20,\"% Dead\":19.2},\"3\":{\"Variable\":\"Deltamethrin 0.05%\",\"N exposed\":91,\"N dead\":38,\"% Dead\":41.7},\"4\":{\"Variable\":\"Alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":0,\"% Dead\":0.0},\"5\":{\"Variable\":\"PBO 4% then permethrin 0.75%\",\"N exposed\":99,\"N dead\":52,\"% Dead\":52.5},\"6\":{\"Variable\":\"PBO 4% then deltamethrin 0.05%\",\"N exposed\":99,\"N dead\":69,\"% Dead\":69.7},\"7\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4},\"8\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4}}\n", - "\n", - "header: Table 4: Blood-feeding rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", - "footer: Values along a row bearing the same letter label are not significantly different (P > 0.05) * Value set to zero as more blood fed mosquitoes were caught in washed Olyset Net huts than control hut\n", - "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", - "\n", - "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total blood fed\",\"Control\":\"496\",\"Olyset Net\":\"324\",\"Olyset Net.1\":\"807\",\"PermaNet 3.0\":\"95\",\"PermaNet 3.0.1\":\"231\",\"Olyset Plus\":\"56\",\"Olyset Plus.1\":\"442\"},\"3\":{\"Net type\":\"% Blood fed\",\"Control\":\"52a\",\"Olyset Net\":\"29b\",\"Olyset Net.1\":\"52a\",\"PermaNet 3.0\":\"19c\",\"PermaNet 3.0.1\":\"38d\",\"Olyset Plus\":\"8e\",\"Olyset Plus.1\":\"35d\"},\"4\":{\"Net type\":\"95% conf intervals\",\"Control\":\"48.4\\u201354.7\",\"Olyset Net\":\"25.9\\u201331.2\",\"Olyset Net.1\":\"49.7\\u201354.7\",\"PermaNet 3.0\":\"15.9\\u201322.9\",\"PermaNet 3.0.1\":\"33.7\\u201341.3\",\"Olyset Plus\":\"6.1\\u201310.2\",\"Olyset Plus.1\":\"32.1\\u201337.3\"},\"5\":{\"Net type\":\"% Blood-feeding inhibition\",\"Control\":\"-\",\"Olyset Net\":\"44\",\"Olyset Net.1\":\"0\",\"PermaNet 3.0\":\"63\",\"PermaNet 3.0.1\":\"27\",\"Olyset Plus\":\"85\",\"Olyset Plus.1\":\"33\"},\"6\":{\"Net type\":\"inside net\",\"Control\":\"294\",\"Olyset Net\":\"184\",\"Olyset Net.1\":\"542\",\"PermaNet 3.0\":\"28\",\"PermaNet 3.0.1\":\"130\",\"Olyset Plus\":\"17\",\"Olyset Plus.1\":\"241\"},\"7\":{\"Net type\":\"inside net (%)\",\"Control\":\"31a\",\"Olyset Net\":\"16bc\",\"Olyset Net.1\":\"35a\",\"PermaNet 3.0\":\"6d\",\"PermaNet 3.0.1\":\"21b\",\"Olyset Plus\":\"2e\",\"Olyset Plus.1\":\"19c\"},\"8\":{\"Net type\":\"Personal protection (%)\",\"Control\":\"-\",\"Olyset Net\":\"35\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"81\",\"PermaNet 3.0.1\":\"53\",\"Olyset Plus\":\"89\",\"Olyset Plus.1\":\"11\"}}\n", - "\n", - "header: Mosquito entry and exiting rates in experimental huts: Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts\n", - "\n", - "Mortality rates of wild pyrethroid resistant mosquitoes that entered the experimental huts are presented in Fig. 1 with further details provided in Table 3. The lowest mortality was achieved with Olyset Net (18% before washing and 12% after 20 washes). Percentage mortality with unwashed pyrethroid-PBO nets was highest with PermaNet 3.0 (41%) but this declined significantly after 20 washes (17%, P < 0.001). Mortality with unwashed Olyset Plus was 28% and while this value was significantly lower than the mortality shown by unwashed PermaNet 3.0 (P < 0.001), it did not decrease significantly after 20 washes (28% vs. 24%, P = 0.433) whereas for PermaNet 3.0 it declined. Hence, Olyset Plus induced higher mortality rates than PermaNet 3.0 after 20 washes (24% vs 17%, P < 0.001). With respect to the pyrethroid-only ITN, both pyrethroid-PBO nets induced significantly higher mortality rates than Olyset Net with nets washed 20 times (P < 0.001) though the difference was higher with Olyset Plus (24% vs. 12%), than with PermaNet 3.0 (17% vs. 12%). After 20 washes, mortality with PermaNet 3.0 declined to the same level as the unwashed Olyset Net, (17% vs. 18%, P = 0.061) but remained significantly higher with Olyset Plus (24% vs. 17%, P = 0.036).\n", - "\n", - "header: Cone bioassay results: Tunnel test results\n", - "\n", - "The results from the tunnel tests comparing Olyset Plus and Olyset Net unwashed and after 10 and 20 washes against all three strains are presented in Figs. 4 and 5 for mortality and blood-feeding inhibition respectively. Mortality rates were generally higher in the tunnels tests compared to the cone bioassays and decreased as the strain become more pyrethroid-resistant (Fig. 4). Mortality rates with the Kisumu strain were very high with Olyset Net and Olyset Plus (> 95%). With the VKPer strain, mortality remained > 80% after 20 washes with both ITN types. With the Cove strain, mortality was significantly higher with Olyset Plus compared to Olyset Net at 0 and 10 washes but about the same after 20 washes. With unwashed nets, blood-feeding inhibition in the tunnel tests was consistently higher with Olyset Plus (> 90%) compared to Olyset Net (27-75%) for all three strains tested (Fig. 5). After 10 and 20 washes, blood-feeding inhibition of the Kisumu and VKPer strain remained > 80% with Olyset Plus and Olyset Net. With Cove strain, blood-feeding inhibition was also higher with Olyset Plus at 0 and 10 washes but declined to about the same level as Olyset Net after 20 washes (56%).\n", - "Mortality in the untreated control tunnel was < 10% with all three strains.\n", - "\n", - "header: Background\n", - "\n", - "Long-lasting insecticidal nets (LLINs) remain one of the most powerful tools to reduce malaria transmission in a community and provide personal protection to the user [1, 2]. They have contributed significantly to recent reductions in malaria burden [3]. Their efficacy is however threatened by increasing resistance to pyrethroids [4, 5]; the insecticide of choice used on bed-nets owing to its safety, low cost and rapid activity on vector mosquitoes [6]. To maintain the effectiveness of insecticide treated nets for malaria control, new types of LLINs treated with alternative insecticides and compounds which can either replace or complement pyrethroids on bed-nets are urgently needed.\n", - "\n", - "A new class of insecticide treated nets (ITNs) combining pyrethroids and piperonyl butoxide (PBO) (pyrethroid-PBO ITNs) have been developed [7]. PBO is a synergist that inhibits specific metabolic enzymes such as mixed-function oxidases within mosquitoes that detoxify or sequester insecticides before they can have a toxic effect on the mosquito. Pyrethroid-PBO nets can therefore induce increased mortality of pyrethroid-resistant malaria vectors that express mixed function oxidase based pyrethroid resistance mechanisms that are inhibited by the PBO in the net. These nets were given an interim endorsement as a new WHO class of vector control products in 2017 based on epidemiological data from a cluster randomized controlled trial in North Eastern Tanzania [8], that demonstrated additional malaria control with one prototype pyrethroid-PBO net (Olyset Plus) compared to a pyrethroid-only net (Olyset Net), against pyrethroid resistant malaria vectors of moderate intensity, partly conferred by monooxygenase-based resistance mechanism. Pyrethroid-PBO ITNs are conditionally recommended for malaria vector control instead of pyrethroid-only ITNs in areas of confirmed intermediate levels of resistance mediated by monooxygenase-based resistance mechanism [9]. This endorsement has been followed by an increasing uptake of pyrethroid-PBO nets worldwide [10]; in sub-Saharan Africa for example, the proportion of pyrethroid-PBO nets of all nets delivered increased from 3% in 2018 to 35% in 2021.\n", - "\n", - "While Olyset Plus was the first in class pyrethroid-PBO net to demonstrate public health value as observed in the Tanzanian trial [8], there are currently five additional types of pyrethroid-PBO ITNs on the World Health Organization (WHO) list of prequalified vector control products: PermaNet 3.0, Veeralin, Tsara Boost, Tsara Plus and very recently DuraNet Plus [7]. These nets have all demonstrated superiority over pyrethroid-only nets in terms of mosquito mortality and blood-feeding inhibition in multiple experimental hut trials across Africa [11, 12, 13, 14, 15, 16, 17]. However, they differ from Olyset Plus in their design and specifications; typically, the location of PBO on the net (i.e., all panels vs. roof panel only), the type and dose of pyrethroid used, bioavailability and retention of PBO after washing and could, therefore, differ in entomological and epidemiological impact. A recent large cluster-randomized trial in Uganda, evaluating the efficacy of Olyset Plus and PermaNet 3.0 compared to pyrethroid-only nets in a setting of high pyrethroid resistance, also demonstrated better protection against malaria with pyrethroid-PBO nets compared to pyrethroid-only nets for up to 18 months confirming the findings of the Tanzanian trial [18]. While the Ugandan trial was not powered to directly compare between the different ITN brands tested, the results showed that the additional protective effect of the pyrethroid-PBO net compared to the pyrethroid-only net was initially large with PermaNet 3.0 at 6 months post-distribution but lasted only up to 12 months whereas additional protective effect with Olyset Plus appeared to have a delayed onset which was not observed at 6 months but became evident at 12 months and lasted up to 18 months. There are major differences in design between Olyset Plus and PermaNet 3.0, which could have implications on their epidemiological impact; Olyset Plus is a polyethylene net incorporated with permethrin and PBO on all panels while PermaNet 3.0 is a polyester net coated with deltamethrin with PBO restricted to the roof of the net.\n", - "\n", - "To generate assurance of comparative performance of new candidate products within an established WHO vector control product class, without the need for epidemiological evidence for each new product, the WHO has developed new experimental hut study guidelines for assessing their non-inferiority to a first in class product for which evidence of public health value has already been generated [19]. These provisional guidelines are to be piloted with pyrethroid-PBO nets by comparing other WHO/PQ-listed pyrethroid-PBO nets with the first in class product, Olyset Plus. This study compared the efficacy and wash resistance of Olyset Plus and PermaNet\n", - "3.0 and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against wild free-flying pyrethroid resistant malaria vectors in Southern Benin.\n", - "\n", - "header: Conclusion\n", - "\n", - "Olyset Plus outperformed PermaNet 3.0 in terms of its ability to cause greater margins of improved mosquito mortality compared to a standard pyrethroid net, after multiple standardized washes. However, using a margin of non-inferiority defined by the WHO, PermaNet 3.0 was non-inferior to Olyset Plus in inducing mosquito mortality. Considering the low levels of mortality observed and increasing pyrethroid-resistance in West Africa, it is unclear whether either of these nets would demonstrate the same epidemiological impact observed in community trials in East Africa.\n", - "\n", - "header: Discussion\n", - "\n", - "Following the interim endorsement of pyrethroid-PBO nets by the WHO [23], malaria vector control programmes are faced with additional choice of different brands of prequalified pyrethroid-PBO nets [7]. Considering the wide variations in design of the available brands of these nets, studies generating the required assurance of comparative performance to Olyset Plus (the first in class pyrethroid-PBO net to demonstrate empirical evidence of entomological and epidemiological impact) are necessary. This study compared the efficacy and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against pyrethroid resistant malaria vectors in a highly endemic country of West Africa, following WHO guidelines [19, 22].\n", - "\n", - "The WHO susceptibility bioassays confirmed the high levels of pyrethroid resistance in the vector population at the experimental hut site during the trial, corroborating previous findings [20]. The increased mortality achieved in bioassays with pre-exposure to PBO showed that pyrethroid-resistance was indeed at least partly mediated by increased mono-oxygenase activity. The experimental hut trial demonstrated improved levels of mortality and blood-feeding inhibition with both pyrethroid-PBO ITN types compared to a standard pyrethroid-only LLIN against a vector population that was very resistant to pyrethroids; this was supported by results from the laboratory assays which compared Olyset Plus to Olyset Net against pyrethroid-resistant mosquito strains. These observations are partly attributable to the synergistic effect of the PBO on pyrethroid resistance and are consistent with other experimental hut trials across Africa and epidemiological trials performed in Tanzania [8] and Uganda [18].\n", - "\n", - "Twenty washes in experimental hut studies are indicated by WHO as a proxy for the ability of an ITN to withstand multiple washes under operational use over a 3-year life span [19, 22]. With unwashed nets, the levels of improved mortality relative to the standard pyrethroid-only net were higher with PermaNet 3.0 than with Olyset Plus. However, unlike with Olyset Plus, this effect was lost with PermaNet 3.0 after twenty washes;\n", - "Figure 5: Blood-feeding inhibition (%) of susceptible and resistant strains of _An. gambiae s.l._ in tunnel tests with Olyset Plus and Olyset Net. Blood-feeding inhibition was calculated relative to the control tunnel. 5 = susceptible, R = Resistant\n", - "PermanNet 3.0 killed significantly lower proportions of mosquitoes than Olyset Plus and same proportions as an unwashed pyrethroid-only ITN. Though the RCT in Uganda was not powered to assess differences between the pyrethroid-PBO ITN brands tested (PermanNet 3.0 vs. Olyset Plus) [18], the results from our trial appear consistent with some of the differences in epidemiological effect observed between both brands: (1) The high experimental hut mortality with the unwashed PermaNet 3.0 supports the higher initial protective effect observed with the net in the Ugandan trial at the 6 months epidemiological survey which was not seen with Olyset Plus. (2) The higher rate of decline in experimental hut mortality after washing with PermaNet 3.0 compared to Olyset Plus is consistent with the shorter-lived epidemiological effect in the Ugandan trial with PermaNet 3.0 (up to 12 months) compared to Olyset Plus which remained more protective than the pyrethroid-only net at 18 months. However, care should be taken to not over-interpret the comparisons between results from our hut trial and Ugandan RCT considering the different geographical settings and the lack of sufficient power to differentiate between the epidemiological impact of both pyrethroid-PBO net type in the Ugandan trial.\n", - "\n", - "The difference in hut performance between both pyrethroid-PBO ITNs can be attributed to differences in the retention and movement of PBO across the polymer fibre in Olyset Plus compared to PermaNet 3.0 and/or differences in design and specification. Retention of biofeficacy of pyrethroid-PBO nets is a fine balance between migration and replenishment of PBO from the core to the surface of fibres and the maintenance of an internal reservoir sufficient to last the lifespan of the LLIN, which is typically set at 3 years of use [24]. The chemical analysis results showed a faster release of PBO in the Olyset Plus netting after 20 washes compared to PermaNet 3.0 though it is unclear whether this may have increased the bioavailability of the PBO on the surface of Olyset Plus after washing. Whether sufficient PBO would remain within the fibres of both pyrethroid-PBO nets after 3 years of household use is presently unknown and is the subject of ongoing WHO durability trials of Olyset Plus and PermaNet 3.0 which are not yet completed [18, 25]. Another factor which may contribute to the discrepancies in efficacy of the two pyrethroid-PBO ITNs are differences in design and specification: Olyset Plus is treated with the pyrethroid permethrin while PermaNet 3.0 is treated with deltamethrin, and Olyset Plus contains PBO on every panel whereas in PermaNet 3.0, PBO is available only on the top panel of the net. It is not clear whether the restricted application of PBO to the roof of the net would affect bioefficacy. This would require comparative trials of the PermaNet 3.0 with pyrethroid-PBO restricted to the upper panel and pyrethroid to side panels versus an ITN with all 5 panels treated with pyrethroid-PBO. Behavioural studies of mosquitoes around nets indicate that mosquitoes may first make multiple contacts with the roof panel in response to odour plumes [26]; however, experimental hut trials comparing restricted versus full PBO coverage on nets are too few to be definitive on the question of efficacy.\n", - "\n", - "Despite the differences in performance observed between both pyrethroid-PBO net types with regards to their impact after 20 standardized washes, the non-inferiority analysis performed in accordance with recent WHO guidelines [19] showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality but not with blood-feeding inhibition. The higher blood-feeding inhibition observed with Olyset Plus could be due to the high excito-repellency of permethrin in Olyset Plus compared to deltamethrin in PermaNet 3.0 [27]. Alternatively, the study may not have had sufficient power to demonstrate non-inferiority of PermaNet 3.0 to Olyset Plus for both endpoints; further studies are on-going to help guide power calculations for ITN non-inferiority studies. The non-inferiority margin used for the analysis was defined by WHO as an odds ratio of 0.7 in mosquito mortality and feeding between a candidate net and the first in class net considered acceptable for both products to be in the same policy class. According to these guidelines, if non-inferiority is demonstrated in two independent experimental hut trials in different geographical locations representative of where the products will be deployed, then PermaNet 3.0 will be placed in the same WHO vector control product class as Olyset Plus [19]. It is however not clear whether non-inferiority must be demonstrated for both endpoints (mortality and blood-feeding) for a second-in class product to become part of an intervention class. While the guidelines were developed more like a compromise between the risk of accepting an inferior product and the feasibility of conducting epidemiological trials, the findings from our trial show that non-inferiority experimental hut trials are complex, and results must be interpreted with care. Comparative performance between products may also depend on other location-specific factors, such as the intensity of insecticide resistance and behaviour of the target vector population which should be taken into consideration when choosing between products of the same class.\n", - "\n", - "While the present hut trial in Benin and earlier hut trials in Benin, Tanzania, Cameroon, Burkina Faso, Cote d'Ivoire and Vietnam where the vectors were also resistant have shown some additional effect of pyrethroid-PBO nets over a standard pyrethroid net [12, 13, 15-17], the margin appears to vary depending on the level of \n", - "pyrethroid-resistance encountered [28]. The absolute increase in hut trial mortality with Olyset Plus compared to Olyset Net in the present study (24-28% vs. 12-18%) conducted in an area of intense pyrethroid-resistance [20] is lower than what has been previously reported with Olyset Plus in another area in Northern Benin where pyrethroid resistance was less prevalent (67-81% vs. 36-42%) [16]. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors [29] mediated by complex and multiple insecticide resistance mechanisms which may not be effectively tackled by the synergistic effects of PBO in pyrethroid-PBO ITNs [4, 23]. It is therefore not clear whether a diminishment in experimental but mortality with pyrethroid-PBO nets due to increasing intensity of pyrethroid-resistance would translate to a reduced epidemiological effect of pyrethroid-PBO ITNs in West Africa compared to East Africa which has been the site of the only epidemiological trials so far.\n", - "\n", - "header: Results\n", - "\n", - "With unwashed nets, mosquito mortality was higher in huts with PermaNet 3.0 compared to Olyset Plus (41% vs. 28%, P < 0.001). After 20 washes, mortality declined significantly with PermaNet 3.0 (41% unwashed vs. 17% after washing P < 0.001), but not with Olyset Plus (28% unwashed vs. 24% after washing P = 0.433); Olyset Plus induced significantly higher mortality than PermaNet 3.0 and Olyset Net after 20 washes. PermaNet 3.0 showed a higher wash retention of PBO compared to Olyset Plus. A non-inferiority analysis performed with data from unwashed and washed nets together using a margin recommended by the WHO, showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality (25% with Olyset Plus vs. 27% with PermaNet 3.0, OR = 1.528, 95%Cl = 1.02-2.29) but not in reducing mosquito feeding (25% with Olyset Plus vs. 30% with PermaNet 3.0, OR = 1.192, 95%Cl = 0.77-1.84). Both pyrethroid-PBO nets were superior to Olyset Net.\n", - "\n", - "header: Insecticide resistance in malaria vectors in Cove: Experimental hut trial results\n", - "\n", - "A total of 6711 pyrethroid resistant female _An. gambiae_ s.l. were collected during the experimental hut trial. The entry and exiting rates of wild pyrethroid resistant _An. gambiae_ s.l. from the experimental huts with the different ITN types tested in the trial are presented in Table 2. Compared to the control, Olyset Net did not deter mosquitoes from entering the experimental huts (0% when unwashed and after 20 washes). Mosquito deterrence was significantly higher with PermaNet 3.0 compared to Olyset Plus both unwashed (49% vs. 28%, P < 0.001) and after 20 washes (36% vs. 0%, P < 0.001). Nevertheless, early exiting of mosquitoes from the experimental huts into the veranda trap did not differ significantly between both pyrethroid-PBO net types both when unwashed (65% with PermaNet 3.0 vs 68% with Olyset Plus, P = 0.232) and after 20 washes (60% with PermaNet 3.0 vs. 56% with Olyset Plus, P = 0.053).\n", - "\\begin{table}\n", - "\\begin{tabular}{l c c c c c c}\n", - "**Net type** & **Control** & **Olyset Net** & & **PermNet 3.0** & **Olyset Plus** \\\\ Number of washes & 0 & 0 & 20 & 0 & 20 & 0 & 20 \\\\ N collected & 962 & 1135 & 1546 & 489 & 616 & 688 & 1275 \\\\ N females/night & 233 & 27\\({}^{\\text{hb}}\\) & 37\\({}^{\\text{b}}\\) & 12\\({}^{\\text{c}}\\) & 15\\({}^{\\text{d}}\\) & 16\\({}^{\\text{d}}\\) & 30\\({}^{\\text{hb}}\\) \\\\ \\% deterrence & – & 0\\({}^{\\text{a}}\\) & 0\\({}^{\\text{a}}\\) & 49 & 36 & 28 & 0 \\\\ N eating & 429 & 639 & 669 & 319 & 370 &\n", - "\n", - "header: Non-inferiority assessment\n", - "\n", - "According to recent provisional WHO guidelines [19], for a candidate pyrethroid-PBO ITN product to be included in this new WHO intervention class without the need for epidemiological evidence, it must demonstrate non-inferiority to the first in class product which has already demonstrated public health value (Olyset Plus) and superiority to a pyrethroid-only LLIN in experimental hut trials [19]. Briefly, the candidate pyrethroid-PBO product is deemed non-inferior if: (1) The lower 95% confidence interval estimate of the odds ratio describing the difference in mosquito mortality between the candidate and active comparator product is greater than 0.7. and (2) The upper 95% confidence interval estimate of the odds ratio describing the difference in mosquito blood-feeding between the candidate and active comparator product is less than 1.43. Following the WHO guidelines, both unwashed and washed data of each product were analysed together to generate single estimates of efficacy representative of the overall performance over the lifetime of the product in the field.\n", - "\n", - "Each primary endpoint for non-inferiority (mortality and blood-feeding rate for unwashed and washed nets combined), was assessed using binomial generalized linear mixed models (GLMMs) with a logit link function fitted using the 'lme4' package of R version 3.5.3 for Windows as described earlier. Results from the non-inferiority assessment of PermaNet 3.0 to Olyset Plus are presented in Table 5 below. The odds ratio for\n", - "Fig. 2: Blood-feeding rates of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", - "the difference in mosquito mortality between PermaNet 3.0 and Olyset Plus was 1.528 (95% confidence interval: 1.021-2.289) while the odds ratio for the difference in mosquito blood feeding was 1.192 (95% confidence interval: 0.772-1.841). Following the WHO criteria described above, PermaNet 3.0 was non-inferior to Olyset Plus in terms of its ability to kill wild pyrethroid- resistant _An. gambiae_ s.l. in the experimental hut trial in Cove Benin. In contrast PermaNet 3.0 was not non-inferior to Olyset Plus in terms of proportions of mosquitoes that blood-fed and, therefore, fails to demonstrate non-inferiority for blood feeding inhibition in this trial. The results also showed superiority of both pyrethroid-PBO net types to Olyset Net both in terms of mosquito mortality (25-27% vs. 15%, P < 0.001) and reducing blood-feeding (25%-30% vs. 42%, P < 0.001).\n", - "\n", - "header: Chemical analysis\n", - "\n", - "At the end of the experimental hut trial, five pieces of netting (\\(25\\times 25\\) cm) obtained from the panels of replicate nets of each net type (before and after washing) used in the huts were assessed for deltamethrin, permethrin and PBO content using HPLC. Insecticide was extracted from each net piece with an area of 48 sq cm collected from the five net samples (\\(25\\times 25\\) cm) obtained from each whole net. The insecticide content of each sample was determined by injecting ten ul aliquots of the extract on a reverse-phase Hypersil GOLD C18 column (75 A, \\(250\\times 4.6\\) mm, 5-um particle size; Thermo Scientific) at room temperature. A mobile phase of 70% acetonitrile in water was used at a flow rate of 1 ml min\\({}^{-1}\\) to separate the target analyte. Chromatographic peaks of the insecticides and internal standard were detected at a wavelength of 232 nm with the Ultimate 3000 UV detector and analysed with Dionex Chromeleon(tm) 6.8 Chromatography Data System software. Quantities of insecticide were calculated from standard curves established by known concentrations of the insecticide authenticated standards and corrected by internal standard readings in each sample relative to control.\n", - "\n", - "Data from chemical analysis was used to calculate the percentage retention of each active ingredient after 20 washes relative to the unwashed net and the wash retention index. Wash-resistance index was calculated according to WHO guidelines [22] as indicated below:\n", - "\n", - "\\[\\text{Wash resistance index} = 100\\times\\text{n}\\sqrt{(\\text{tn}/\\text{t0})}\\] \\[\\left(\\text{free migration stage behaviour}\\right)\\]\n", - "\n", - "where \\(\\text{tn}=\\text{total active ingredient content after n washing cycles, t0=total active ingredient content before washing, n=number of washes.\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Chemical analysis results\n", - "\n", - "For PermaNet 3.0, PBO was only recorded from the roof panel of the nets; for Olyset Plus, PBO was recorded on all 5 panels (Table 6). Compared to the pyrethroid component, much less PBO was retained in both types of pyrethroid-PBO ITNs after 20 washes (58.7% vs. 25% with Olyset Plus and 80.9% vs. 68.8% with PermaNet 3.0, P < 0.05). The decrease in PBO content after washing was more evident in Olyset Plus than in PermaNet 3.0 netting, hence the wash retention index of PBO was higher with PermaNet 3.0 compared to Olyset Plus (98.1% vs. 93.3%).\n", - "\n", - "Figure 4: Tunnel test mortality (%) of susceptible and resistant strains of _Anopheles gambiae_ s.l. exposed to Olyset Plus vs. Olyset Net\n", - "\n", - "Figure 3: Mortality (%) of susceptible and resistant strains of _An. gambiae_ s.l. in cone bioassays with Olyset Plus and Olyset Net. S = susceptible, R = resistant\n", - "\n", - "header: Supplementary laboratory bioassays results\n", - "\n", - "The 3-min cone bioassay mortality results for all 3 mosquito strains and wash points tested are presented in Fig. 3. Unwashed Olyset Net induced very low mortality rates against the susceptible Kisumu strain (17-20%) and even lower mortality rates against the pyrethroid resistant strains (< 5%). Cone bioassay mortality rates with unwashed Olyset Plus were higher across all 3 strains compared to Olyset Net though mortality decreased as the strain tested became more pyrethroid-resistant. Cone bioassay mortality however dropped significantly with washed net samples. Mortality with the untreated net samples did not exceed 5% with any strain tested.\n", - "\n", - "header: Mosquito entry and exiting rates in experimental huts: Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts\n", - "\n", - "Mortality rates of wild pyrethroid resistant mosquitoes that entered the experimental huts are presented in Fig. 1 with further details provided in Table 3. The lowest mortality was achieved with Olyset Net (18% before washing and 12% after 20 washes). Percentage mortality with unwashed pyrethroid-PBO nets was highest with PermaNet 3.0 (41%) but this declined significantly after 20 washes (17%, P < 0.001). Mortality with unwashed Olyset Plus was 28% and while this value was significantly lower than the mortality shown by unwashed PermaNet 3.0 (P < 0.001), it did not decrease significantly after 20 washes (28% vs. 24%, P = 0.433) whereas for PermaNet 3.0 it declined. Hence, Olyset Plus induced higher mortality rates than PermaNet 3.0 after 20 washes (24% vs 17%, P < 0.001). With respect to the pyrethroid-only ITN, both pyrethroid-PBO nets induced significantly higher mortality rates than Olyset Net with nets washed 20 times (P < 0.001) though the difference was higher with Olyset Plus (24% vs. 12%), than with PermaNet 3.0 (17% vs. 12%). After 20 washes, mortality with PermaNet 3.0 declined to the same level as the unwashed Olyset Net, (17% vs. 18%, P = 0.061) but remained significantly higher with Olyset Plus (24% vs. 17%, P = 0.036).\n", - "\n", - "header: Experimental hut treatments\n", - "\n", - "Olyset Plus and PermaNet 3.0 were compared in the experimental huts when unwashed and after 20 standardized washes. A WHO-recommended pyrethroid-only long-lasting net (Olyset Net) was included to demonstrate the added effect of PBO on the insecticide-resistant local vector species. Nets were washed using savon de Marseilles and rinsed twice following WHO procedures for washing nets for experimental hut studies [22].\n", - "\n", - "The following seven (7) treatments were thus tested in seven experimental huts:\n", - "\n", - "1. Untreated polyethylene net\n", - "2. Olyset Net unwashed (permethrin only)\n", - "3. Olyset Net washed 20 times.\n", - "4. PermaNet 3.0 unwashed (Roof: deltamethrin plus PBO; sides: deltamethrin only)\n", - "5. PermaNet 3.0 washed 20 times.\n", - "6. Olyset Plus unwashed (permethrin plus PBO on all panels)\n", - "7. Olyset Plus washed 20 times.\n", - "\n", - "header: Mosquito blood-feeding rates in experimental huts\n", - "\n", - "The blood-feeding rates of wild pyrethroid-resistant _An. gambiae s.l_ that entered the experimental huts are presented in Fig. 2 with further details on mosquito feeding provided in Table 4. The percentage blood-feeding was lower in huts with the unwashed pyrethroid-PBO ITNs and was lowest of all with unwashed Olyset Plus as compared to unwashed PermaNet 3.0 (8% vs 19%, P < 0.001). For all net types, the data showed an overall increase in blood feeding with washed nets compared to unwashed nets and a decrease in blood-feeding inhibition relative to the untreated net. Percentage blood-feeding when washed 20 times did not differ significantly between the pyrethroid-PBO types (38% with PermaNet 3.0 vs. 35% with Olyset Plus, P = 0.708). The proportions of mosquitoes collected resting in the nets were lowest with the\n", - "\n", - "Fig. 1: Mortality of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", - "unwashed pyrethroid-PBO nets (2-6%), which is consistent with the higher toxicity observed with this type of net. Personal protection with both types of pyrethroid-PBO ITMs were > 80% when unwashed but this declined after 20 washes to 53% with PermaNet 3.0 and 11% with Olyset Plus.\n", - "\n", - "header: Background: Methods\n", - "\n", - "An experimental hut trial was performed in Cove, Benin to compare PermaNet 3.0 (deltamethrin plus PBO on roof panel only) to Olyset Plus (permethrin plus PBO on all panels) against wild pyrethroid-resistant _Anopheles gambiae_ sensu lato (s.l) following World Health Organization (WHO) guidelines. Both nets were tested unwashed and after 20 standardized washes compared to Olyset Net. Laboratory bioassays were also performed to help explain findings in the experimental huts.\n", - "\n", - "header: Results\n", - "\n", - "Mortality with permethrin and alpha-cypermethrin treated papers was 100% with the laboratory-maintained pyrethroid-susceptible _An. gambiae_ Kisumu strain. With wild pyrethroid resistant _An. gambiae_ s.l. from Cove, mortality rates were <50% with all three pyrethroid insecticides tested (Table 1) thus confirming the high levels of pyrethroid resistance in this vector population. Mortality however increased from 19.2 to 52.5% with permethrin, 41.7% to 69.7% with deltamethrin and 0% to 82.4% with alphacypermethrin after pre-exposure of the Cove strain to PBO synergist (Table 1). This result demonstrated that mixed function oxidases are overexpressed in the wild Cove vector population and their effect can be effectively inhibited by the PBO synergist.\n", - "\n", - "header: Supplementary laboratory bioassays\n", - "\n", - "To help further explain the results obtained in the experimental huts, WHO cone bioassays and tunnel tests were performed on samples of netting (\\(30\\times 30\\) cm) obtained from Olyset Net and Olyset Plus when unwashed and after 10 and 20 washes. Washing was performed in the laboratory following WHO guidelines [22]. PermaNet 3.0 was not tested in the laboratory bioassays owing to the restricted application of PBO to the roof of the net preventing a realistic direct comparison with Olyset Plus in bioassays especially tunnel tests. Net samples from each ITN type and each wash point were tested against the following strains:\n", - "\n", - "1. _An. gambiae_ sensu lato (s.l.) strains from Cove, Benin (Cove strain) which is highly pyrethroid resistant. It originates from the experimental hut station in Cove and has shown > 200-fold resistance compared to the susceptible Kisumu strain in susceptibility bioassays. Resistance is mediated by elevated levels of P450s and high frequencies of _kdr_ [20].\n", - "2. _An. gambiae_ VKPer strain, which originated from the Kou Valley in Burkina Faso. VKPer has moderate levels of pyrethroid resistance mediated only by high frequencies of _kdr_.\n", - "3. _An. gambiae_ s.s. Kisumu strain, a reference susceptible strain which originated from Kisumu Kenya.\n", - "\n", - "Approximately two hundred 2-5 days old mosquitoes of each strain were exposed for 3 min in cone bioassays to four net samples of each net type in cohorts of 5 mosquitoes per cone. Knock down in cone bioassays was recorded after 1 h and mortality after 24 h.\n", - "\n", - "Two to three hundred 5-8 days old mosquitoes of each strain were also exposed to each net type in tunnel tests in replicates of 50 mosquitoes per net sample. The tunnel test is a laboratory assay designed to simulate natural host-seeking behaviour of mosquitoes at night in the presence of a net. It consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections by means of a netting frame fitted into a slot across the tunnel. An anesthetized guinea pig was housed unconstrained in a small cage in one section, and mosquitoes were released in the other section at dusk and left overnight. The net samples were holed with nine 1-cm diameter holes to allow host-seeking mosquitoes to penetrate the baited chamber; an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 degC and 75-85% RH. The next morning, the numbers found alive or dead, fed, or unfed, in each section were recorded. Live mosquitoes were provided with sugar solution and delayed mortality recorded after 24 h. The guinea pigs used in this study were kept in accordance with institutional guidelines for animal care.\n", - "\n", - "header: Cone bioassay results: Tunnel test results\n", - "\n", - "The results from the tunnel tests comparing Olyset Plus and Olyset Net unwashed and after 10 and 20 washes against all three strains are presented in Figs. 4 and 5 for mortality and blood-feeding inhibition respectively. Mortality rates were generally higher in the tunnels tests compared to the cone bioassays and decreased as the strain become more pyrethroid-resistant (Fig. 4). Mortality rates with the Kisumu strain were very high with Olyset Net and Olyset Plus (> 95%). With the VKPer strain, mortality remained > 80% after 20 washes with both ITN types. With the Cove strain, mortality was significantly higher with Olyset Plus compared to Olyset Net at 0 and 10 washes but about the same after 20 washes. With unwashed nets, blood-feeding inhibition in the tunnel tests was consistently higher with Olyset Plus (> 90%) compared to Olyset Net (27-75%) for all three strains tested (Fig. 5). After 10 and 20 washes, blood-feeding inhibition of the Kisumu and VKPer strain remained > 80% with Olyset Plus and Olyset Net. With Cove strain, blood-feeding inhibition was also higher with Olyset Plus at 0 and 10 washes but declined to about the same level as Olyset Net after 20 washes (56%).\n", - "Mortality in the untreated control tunnel was < 10% with all three strains.\n", - "\n", - "header: Abstract\n", - "\n", - "Comparative efficacy of two pyrethroid-piperonyl butoxide nets (Olyset Plus and PermaNet 3.0) against pyrethroid resistant malaria vectors: a non-inferiority assessment\n", - "\n", - "Corine Ngufor, Josias Fagbohoun, Abel Agbevo, Hanafy Ismail, Joseph D. Challenger, Thomas S. Churcher, Mark Rowland\n", - "\n", - "\n", - "\n", - "Pyrethroid-PBO nets were conditionally recommended for control of malaria transmitted by mosquitoes with oxidase-based pyrethroid-resistance based on epidemiological evidence of additional protective effect with Olyset Plus compared to a pyrethroid-only net (Olyset Net). Entomological studies can be used to assess the comparative performance of other brands of pyrethroid-PBO ITNs to Olyset Plus.\n", - "\n", - "header: Table 4: Blood-feeding rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", - "footer: Values along a row bearing the same letter label are not significantly different (P > 0.05) * Value set to zero as more blood fed mosquitoes were caught in washed Olyset Net huts than control hut\n", - "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", - "\n", - "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total blood fed\",\"Control\":\"496\",\"Olyset Net\":\"324\",\"Olyset Net.1\":\"807\",\"PermaNet 3.0\":\"95\",\"PermaNet 3.0.1\":\"231\",\"Olyset Plus\":\"56\",\"Olyset Plus.1\":\"442\"},\"3\":{\"Net type\":\"% Blood fed\",\"Control\":\"52a\",\"Olyset Net\":\"29b\",\"Olyset Net.1\":\"52a\",\"PermaNet 3.0\":\"19c\",\"PermaNet 3.0.1\":\"38d\",\"Olyset Plus\":\"8e\",\"Olyset Plus.1\":\"35d\"},\"4\":{\"Net type\":\"95% conf intervals\",\"Control\":\"48.4\\u201354.7\",\"Olyset Net\":\"25.9\\u201331.2\",\"Olyset Net.1\":\"49.7\\u201354.7\",\"PermaNet 3.0\":\"15.9\\u201322.9\",\"PermaNet 3.0.1\":\"33.7\\u201341.3\",\"Olyset Plus\":\"6.1\\u201310.2\",\"Olyset Plus.1\":\"32.1\\u201337.3\"},\"5\":{\"Net type\":\"% Blood-feeding inhibition\",\"Control\":\"-\",\"Olyset Net\":\"44\",\"Olyset Net.1\":\"0\",\"PermaNet 3.0\":\"63\",\"PermaNet 3.0.1\":\"27\",\"Olyset Plus\":\"85\",\"Olyset Plus.1\":\"33\"},\"6\":{\"Net type\":\"inside net\",\"Control\":\"294\",\"Olyset Net\":\"184\",\"Olyset Net.1\":\"542\",\"PermaNet 3.0\":\"28\",\"PermaNet 3.0.1\":\"130\",\"Olyset Plus\":\"17\",\"Olyset Plus.1\":\"241\"},\"7\":{\"Net type\":\"inside net (%)\",\"Control\":\"31a\",\"Olyset Net\":\"16bc\",\"Olyset Net.1\":\"35a\",\"PermaNet 3.0\":\"6d\",\"PermaNet 3.0.1\":\"21b\",\"Olyset Plus\":\"2e\",\"Olyset Plus.1\":\"19c\"},\"8\":{\"Net type\":\"Personal protection (%)\",\"Control\":\"-\",\"Olyset Net\":\"35\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"81\",\"PermaNet 3.0.1\":\"53\",\"Olyset Plus\":\"89\",\"Olyset Plus.1\":\"11\"}}\n", - "\n", - "header: Results\n", - "\n", - "With unwashed nets, mosquito mortality was higher in huts with PermaNet 3.0 compared to Olyset Plus (41% vs. 28%, P < 0.001). After 20 washes, mortality declined significantly with PermaNet 3.0 (41% unwashed vs. 17% after washing P < 0.001), but not with Olyset Plus (28% unwashed vs. 24% after washing P = 0.433); Olyset Plus induced significantly higher mortality than PermaNet 3.0 and Olyset Net after 20 washes. PermaNet 3.0 showed a higher wash retention of PBO compared to Olyset Plus. A non-inferiority analysis performed with data from unwashed and washed nets together using a margin recommended by the WHO, showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality (25% with Olyset Plus vs. 27% with PermaNet 3.0, OR = 1.528, 95%Cl = 1.02-2.29) but not in reducing mosquito feeding (25% with Olyset Plus vs. 30% with PermaNet 3.0, OR = 1.192, 95%Cl = 0.77-1.84). Both pyrethroid-PBO nets were superior to Olyset Net.\n", - "\n", - "header: Chemical analysis\n", - "\n", - "At the end of the experimental hut trial, five pieces of netting (\\(25\\times 25\\) cm) obtained from the panels of replicate nets of each net type (before and after washing) used in the huts were assessed for deltamethrin, permethrin and PBO content using HPLC. Insecticide was extracted from each net piece with an area of 48 sq cm collected from the five net samples (\\(25\\times 25\\) cm) obtained from each whole net. The insecticide content of each sample was determined by injecting ten ul aliquots of the extract on a reverse-phase Hypersil GOLD C18 column (75 A, \\(250\\times 4.6\\) mm, 5-um particle size; Thermo Scientific) at room temperature. A mobile phase of 70% acetonitrile in water was used at a flow rate of 1 ml min\\({}^{-1}\\) to separate the target analyte. Chromatographic peaks of the insecticides and internal standard were detected at a wavelength of 232 nm with the Ultimate 3000 UV detector and analysed with Dionex Chromeleon(tm) 6.8 Chromatography Data System software. Quantities of insecticide were calculated from standard curves established by known concentrations of the insecticide authenticated standards and corrected by internal standard readings in each sample relative to control.\n", - "\n", - "Data from chemical analysis was used to calculate the percentage retention of each active ingredient after 20 washes relative to the unwashed net and the wash retention index. Wash-resistance index was calculated according to WHO guidelines [22] as indicated below:\n", - "\n", - "\\[\\text{Wash resistance index} = 100\\times\\text{n}\\sqrt{(\\text{tn}/\\text{t0})}\\] \\[\\left(\\text{free migration stage behaviour}\\right)\\]\n", - "\n", - "where \\(\\text{tn}=\\text{total active ingredient content after n washing cycles, t0=total active ingredient content before washing, n=number of washes.\n", - "\n", - "header: Table 1: Mortality of pyrethroid resistant Anopheles gambiae s.l. from Cove in WHO cylinder bioassays with and without pre-exposure to PBO\n", - "footer: None\n", - "columns: ['Variable', 'N exposed', 'N dead', '% Dead']\n", - "\n", - "{\"0\":{\"Variable\":\"Control\",\"N exposed\":101,\"N dead\":0,\"% Dead\":0.0},\"1\":{\"Variable\":\"PBO 4% only\",\"N exposed\":103,\"N dead\":3,\"% Dead\":2.9},\"2\":{\"Variable\":\"Permethrin 0.75%\",\"N exposed\":104,\"N dead\":20,\"% Dead\":19.2},\"3\":{\"Variable\":\"Deltamethrin 0.05%\",\"N exposed\":91,\"N dead\":38,\"% Dead\":41.7},\"4\":{\"Variable\":\"Alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":0,\"% Dead\":0.0},\"5\":{\"Variable\":\"PBO 4% then permethrin 0.75%\",\"N exposed\":99,\"N dead\":52,\"% Dead\":52.5},\"6\":{\"Variable\":\"PBO 4% then deltamethrin 0.05%\",\"N exposed\":99,\"N dead\":69,\"% Dead\":69.7},\"7\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4},\"8\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4}}\n", - "\n", - "header: Background\n", - "\n", - "Long-lasting insecticidal nets (LLINs) remain one of the most powerful tools to reduce malaria transmission in a community and provide personal protection to the user [1, 2]. They have contributed significantly to recent reductions in malaria burden [3]. Their efficacy is however threatened by increasing resistance to pyrethroids [4, 5]; the insecticide of choice used on bed-nets owing to its safety, low cost and rapid activity on vector mosquitoes [6]. To maintain the effectiveness of insecticide treated nets for malaria control, new types of LLINs treated with alternative insecticides and compounds which can either replace or complement pyrethroids on bed-nets are urgently needed.\n", - "\n", - "A new class of insecticide treated nets (ITNs) combining pyrethroids and piperonyl butoxide (PBO) (pyrethroid-PBO ITNs) have been developed [7]. PBO is a synergist that inhibits specific metabolic enzymes such as mixed-function oxidases within mosquitoes that detoxify or sequester insecticides before they can have a toxic effect on the mosquito. Pyrethroid-PBO nets can therefore induce increased mortality of pyrethroid-resistant malaria vectors that express mixed function oxidase based pyrethroid resistance mechanisms that are inhibited by the PBO in the net. These nets were given an interim endorsement as a new WHO class of vector control products in 2017 based on epidemiological data from a cluster randomized controlled trial in North Eastern Tanzania [8], that demonstrated additional malaria control with one prototype pyrethroid-PBO net (Olyset Plus) compared to a pyrethroid-only net (Olyset Net), against pyrethroid resistant malaria vectors of moderate intensity, partly conferred by monooxygenase-based resistance mechanism. Pyrethroid-PBO ITNs are conditionally recommended for malaria vector control instead of pyrethroid-only ITNs in areas of confirmed intermediate levels of resistance mediated by monooxygenase-based resistance mechanism [9]. This endorsement has been followed by an increasing uptake of pyrethroid-PBO nets worldwide [10]; in sub-Saharan Africa for example, the proportion of pyrethroid-PBO nets of all nets delivered increased from 3% in 2018 to 35% in 2021.\n", - "\n", - "While Olyset Plus was the first in class pyrethroid-PBO net to demonstrate public health value as observed in the Tanzanian trial [8], there are currently five additional types of pyrethroid-PBO ITNs on the World Health Organization (WHO) list of prequalified vector control products: PermaNet 3.0, Veeralin, Tsara Boost, Tsara Plus and very recently DuraNet Plus [7]. These nets have all demonstrated superiority over pyrethroid-only nets in terms of mosquito mortality and blood-feeding inhibition in multiple experimental hut trials across Africa [11, 12, 13, 14, 15, 16, 17]. However, they differ from Olyset Plus in their design and specifications; typically, the location of PBO on the net (i.e., all panels vs. roof panel only), the type and dose of pyrethroid used, bioavailability and retention of PBO after washing and could, therefore, differ in entomological and epidemiological impact. A recent large cluster-randomized trial in Uganda, evaluating the efficacy of Olyset Plus and PermaNet 3.0 compared to pyrethroid-only nets in a setting of high pyrethroid resistance, also demonstrated better protection against malaria with pyrethroid-PBO nets compared to pyrethroid-only nets for up to 18 months confirming the findings of the Tanzanian trial [18]. While the Ugandan trial was not powered to directly compare between the different ITN brands tested, the results showed that the additional protective effect of the pyrethroid-PBO net compared to the pyrethroid-only net was initially large with PermaNet 3.0 at 6 months post-distribution but lasted only up to 12 months whereas additional protective effect with Olyset Plus appeared to have a delayed onset which was not observed at 6 months but became evident at 12 months and lasted up to 18 months. There are major differences in design between Olyset Plus and PermaNet 3.0, which could have implications on their epidemiological impact; Olyset Plus is a polyethylene net incorporated with permethrin and PBO on all panels while PermaNet 3.0 is a polyester net coated with deltamethrin with PBO restricted to the roof of the net.\n", - "\n", - "To generate assurance of comparative performance of new candidate products within an established WHO vector control product class, without the need for epidemiological evidence for each new product, the WHO has developed new experimental hut study guidelines for assessing their non-inferiority to a first in class product for which evidence of public health value has already been generated [19]. These provisional guidelines are to be piloted with pyrethroid-PBO nets by comparing other WHO/PQ-listed pyrethroid-PBO nets with the first in class product, Olyset Plus. This study compared the efficacy and wash resistance of Olyset Plus and PermaNet\n", - "3.0 and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against wild free-flying pyrethroid resistant malaria vectors in Southern Benin.\n", - "\n", - "header: Conclusion\n", - "\n", - "Olyset Plus outperformed PermaNet 3.0 in terms of its ability to cause greater margins of improved mosquito mortality compared to a standard pyrethroid net, after multiple standardized washes. However, using a margin of non-inferiority defined by the WHO, PermaNet 3.0 was non-inferior to Olyset Plus in inducing mosquito mortality. Considering the low levels of mortality observed and increasing pyrethroid-resistance in West Africa, it is unclear whether either of these nets would demonstrate the same epidemiological impact observed in community trials in East Africa.\n", - "\n", - "header: Experimental hut site: Insecticide resistance bioassays\n", - "\n", - "To assess the frequency of pyrethroid resistance and presence of mixed function oxidases in the Cove vector population during the trial, adult mosquitoes that emerged from larvae collected from breeding sites close to experimental huts were tested in WHO cylinder bioassays with and without pre-exposure to PBO. A total of ~100 mosquitoes of the pyrethroid resistant _An. gambiae_ s.l. Cove strain and the pyrethroid susceptible _An. gambiae_ Kisumu strain were exposed to treated filter papers in WHO cylinder bioassays in batches of 25. Tests were performed with papers treated with permethrin 0.75%, alpha-cypermethrin 0.05% and deltamethrin 0.05%. To assess presence of MFO, some mosquitoes were also pre-exposed to papers treated with 4% PBO prior to exposure to insecticide-treated papers. Exposure to PBO and to insecticides lasted 1 h, knockdown was recorded after 60 min and mortality after 24 h.\n", - "\n", - "header: Non-inferiority assessment\n", - "\n", - "According to recent provisional WHO guidelines [19], for a candidate pyrethroid-PBO ITN product to be included in this new WHO intervention class without the need for epidemiological evidence, it must demonstrate non-inferiority to the first in class product which has already demonstrated public health value (Olyset Plus) and superiority to a pyrethroid-only LLIN in experimental hut trials [19]. Briefly, the candidate pyrethroid-PBO product is deemed non-inferior if: (1) The lower 95% confidence interval estimate of the odds ratio describing the difference in mosquito mortality between the candidate and active comparator product is greater than 0.7. and (2) The upper 95% confidence interval estimate of the odds ratio describing the difference in mosquito blood-feeding between the candidate and active comparator product is less than 1.43. Following the WHO guidelines, both unwashed and washed data of each product were analysed together to generate single estimates of efficacy representative of the overall performance over the lifetime of the product in the field.\n", - "\n", - "Each primary endpoint for non-inferiority (mortality and blood-feeding rate for unwashed and washed nets combined), was assessed using binomial generalized linear mixed models (GLMMs) with a logit link function fitted using the 'lme4' package of R version 3.5.3 for Windows as described earlier. Results from the non-inferiority assessment of PermaNet 3.0 to Olyset Plus are presented in Table 5 below. The odds ratio for\n", - "Fig. 2: Blood-feeding rates of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", - "the difference in mosquito mortality between PermaNet 3.0 and Olyset Plus was 1.528 (95% confidence interval: 1.021-2.289) while the odds ratio for the difference in mosquito blood feeding was 1.192 (95% confidence interval: 0.772-1.841). Following the WHO criteria described above, PermaNet 3.0 was non-inferior to Olyset Plus in terms of its ability to kill wild pyrethroid- resistant _An. gambiae_ s.l. in the experimental hut trial in Cove Benin. In contrast PermaNet 3.0 was not non-inferior to Olyset Plus in terms of proportions of mosquitoes that blood-fed and, therefore, fails to demonstrate non-inferiority for blood feeding inhibition in this trial. The results also showed superiority of both pyrethroid-PBO net types to Olyset Net both in terms of mosquito mortality (25-27% vs. 15%, P < 0.001) and reducing blood-feeding (25%-30% vs. 42%, P < 0.001).\n", - "\n", - "header: Table 2 Entry and exiting rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", - "footer: Values along a row bearing the same letter label are not signi\u001d\n", - "cantly different (P>0.05)* Value set to zero as more mosquitoes caught in Olyset Net huts than control huts\n", - "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", - "\n", - "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"N collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"N females\\/night\",\"Control\":\"23a\",\"Olyset Net\":\"27ab\",\"Olyset Net.1\":\"37b\",\"PermaNet 3.0\":\"12c\",\"PermaNet 3.0.1\":\"15d\",\"Olyset Plus\":\"16d\",\"Olyset Plus.1\":\"30ab\"},\"3\":{\"Net type\":\"% deterrence\",\"Control\":null,\"Olyset Net\":\"0*\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"49\",\"PermaNet 3.0.1\":\"36\",\"Olyset Plus\":\"28\",\"Olyset Plus.1\":\"0\"},\"4\":{\"Net type\":\"N exiting\",\"Control\":\"429\",\"Olyset Net\":\"639\",\"Olyset Net.1\":\"669\",\"PermaNet 3.0\":\"319\",\"PermaNet 3.0.1\":\"370\",\"Olyset Plus\":\"468\",\"Olyset Plus.1\":\"712\"},\"5\":{\"Net type\":\"% exiting\",\"Control\":\"45a\",\"Olyset Net\":\"56b\",\"Olyset Net.1\":\"43a\",\"PermaNet 3.0\":\"65cd\",\"PermaNet 3.0.1\":\"60ce\",\"Olyset Plus\":\"68d\",\"Olyset Plus.1\":\"56be\"},\"6\":{\"Net type\":\"95% conf. limits\",\"Control\":\"41.5\\u201347.7\",\"Olyset Net\":\"53.4\\u201359.2\",\"Olyset Net.1\":\"40.8\\u201345.7\",\"PermaNet 3.0\":\"61.0\\u201369.5\",\"PermaNet 3.0.1\":\"56.2\\u201363.9\",\"Olyset Plus\":\"64.4\\u201371.4\",\"Olyset Plus.1\":\"53.1\\u201358.6\"}}\n", - "\n", - "header: Table 3 Mortality of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", - "footer: Values along a row bearing the same letter label are not signi\u001d\n", - "cantly di\u001c\n", - "erent (P>0.05)\n", - "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", - "\n", - "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total dead\",\"Control\":\"12\",\"Olyset Net\":\"209\",\"Olyset Net.1\":\"284\",\"PermaNet 3.0\":\"198\",\"PermaNet 3.0.1\":\"103\",\"Olyset Plus\":\"190\",\"Olyset Plus.1\":\"297\"},\"3\":{\"Net type\":\"Mortality (%)\",\"Control\":\"1a\",\"Olyset Net\":\"18b\",\"Olyset Net.1\":\"12c\",\"PermaNet 3.0\":\"41d\",\"PermaNet 3.0.1\":\"17b\",\"Olyset Plus\":\"28e\",\"Olyset Plus.1\":\"24e\"},\"4\":{\"Net type\":\"95% conf. limits\",\"Control\":\"0.6\\u20132.0\",\"Olyset Net\":\"16.2\\u201320.1\",\"Olyset Net.1\":\"10.3\\u201313.5\",\"PermaNet 3.0\":\"36.1\\u201344.8\",\"PermaNet 3.0.1\":\"13.8\\u201319.8\",\"Olyset Plus\":\"24.4\\u201331.1\",\"Olyset Plus.1\":\"21.0\\u201325.6\"},\"5\":{\"Net type\":\"Corrected for control (%)\",\"Control\":\"-\",\"Olyset Net\":\"17\",\"Olyset Net.1\":\"11\",\"PermaNet 3.0\":\"41\",\"PermaNet 3.0.1\":\"17\",\"Olyset Plus\":\"27\",\"Olyset Plus.1\":\"22\"}}\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cove\"}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"deltamethrin\",\"Synergist\":\"PBO\",\"Net_washed\":20.0,\"pHI_category\":\"All\"},\"N02\":{\"Net_type\":\"Olyset Plus\",\"Insecticide\":\"permethrin\",\"Synergist\":\"PBO\",\"Net_washed\":20.0,\"pHI_category\":\"All\"},\"N03\":{\"Net_type\":\"Olyset Net\",\"Insecticide\":\"permethrin\",\"Synergist\":null,\"Net_washed\":20.0,\"pHI_category\":\"All\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n", - "** Messages: **\n", - "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", - "Context information is below.\n", - "---------------------\n", - "header: Chemical analysis results\n", - "\n", - "For PermaNet 3.0, PBO was only recorded from the roof panel of the nets; for Olyset Plus, PBO was recorded on all 5 panels (Table 6). Compared to the pyrethroid component, much less PBO was retained in both types of pyrethroid-PBO ITNs after 20 washes (58.7% vs. 25% with Olyset Plus and 80.9% vs. 68.8% with PermaNet 3.0, P < 0.05). The decrease in PBO content after washing was more evident in Olyset Plus than in PermaNet 3.0 netting, hence the wash retention index of PBO was higher with PermaNet 3.0 compared to Olyset Plus (98.1% vs. 93.3%).\n", - "\n", - "Figure 4: Tunnel test mortality (%) of susceptible and resistant strains of _Anopheles gambiae_ s.l. exposed to Olyset Plus vs. Olyset Net\n", - "\n", - "Figure 3: Mortality (%) of susceptible and resistant strains of _An. gambiae_ s.l. in cone bioassays with Olyset Plus and Olyset Net. S = susceptible, R = resistant\n", - "\n", - "header: Supplementary laboratory bioassays results\n", - "\n", - "The 3-min cone bioassay mortality results for all 3 mosquito strains and wash points tested are presented in Fig. 3. Unwashed Olyset Net induced very low mortality rates against the susceptible Kisumu strain (17-20%) and even lower mortality rates against the pyrethroid resistant strains (< 5%). Cone bioassay mortality rates with unwashed Olyset Plus were higher across all 3 strains compared to Olyset Net though mortality decreased as the strain tested became more pyrethroid-resistant. Cone bioassay mortality however dropped significantly with washed net samples. Mortality with the untreated net samples did not exceed 5% with any strain tested.\n", - "\n", - "header: Experimental hut treatments\n", - "\n", - "Olyset Plus and PermaNet 3.0 were compared in the experimental huts when unwashed and after 20 standardized washes. A WHO-recommended pyrethroid-only long-lasting net (Olyset Net) was included to demonstrate the added effect of PBO on the insecticide-resistant local vector species. Nets were washed using savon de Marseilles and rinsed twice following WHO procedures for washing nets for experimental hut studies [22].\n", - "\n", - "The following seven (7) treatments were thus tested in seven experimental huts:\n", - "\n", - "1. Untreated polyethylene net\n", - "2. Olyset Net unwashed (permethrin only)\n", - "3. Olyset Net washed 20 times.\n", - "4. PermaNet 3.0 unwashed (Roof: deltamethrin plus PBO; sides: deltamethrin only)\n", - "5. PermaNet 3.0 washed 20 times.\n", - "6. Olyset Plus unwashed (permethrin plus PBO on all panels)\n", - "7. Olyset Plus washed 20 times.\n", - "\n", - "header: Background: Methods\n", - "\n", - "An experimental hut trial was performed in Cove, Benin to compare PermaNet 3.0 (deltamethrin plus PBO on roof panel only) to Olyset Plus (permethrin plus PBO on all panels) against wild pyrethroid-resistant _Anopheles gambiae_ sensu lato (s.l) following World Health Organization (WHO) guidelines. Both nets were tested unwashed and after 20 standardized washes compared to Olyset Net. Laboratory bioassays were also performed to help explain findings in the experimental huts.\n", - "\n", - "header: Abstract\n", - "\n", - "Comparative efficacy of two pyrethroid-piperonyl butoxide nets (Olyset Plus and PermaNet 3.0) against pyrethroid resistant malaria vectors: a non-inferiority assessment\n", - "\n", - "Corine Ngufor, Josias Fagbohoun, Abel Agbevo, Hanafy Ismail, Joseph D. Challenger, Thomas S. Churcher, Mark Rowland\n", - "\n", - "\n", - "\n", - "Pyrethroid-PBO nets were conditionally recommended for control of malaria transmitted by mosquitoes with oxidase-based pyrethroid-resistance based on epidemiological evidence of additional protective effect with Olyset Plus compared to a pyrethroid-only net (Olyset Net). Entomological studies can be used to assess the comparative performance of other brands of pyrethroid-PBO ITNs to Olyset Plus.\n", - "\n", - "header: Mosquito entry and exiting rates in experimental huts: Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts\n", - "\n", - "Mortality rates of wild pyrethroid resistant mosquitoes that entered the experimental huts are presented in Fig. 1 with further details provided in Table 3. The lowest mortality was achieved with Olyset Net (18% before washing and 12% after 20 washes). Percentage mortality with unwashed pyrethroid-PBO nets was highest with PermaNet 3.0 (41%) but this declined significantly after 20 washes (17%, P < 0.001). Mortality with unwashed Olyset Plus was 28% and while this value was significantly lower than the mortality shown by unwashed PermaNet 3.0 (P < 0.001), it did not decrease significantly after 20 washes (28% vs. 24%, P = 0.433) whereas for PermaNet 3.0 it declined. Hence, Olyset Plus induced higher mortality rates than PermaNet 3.0 after 20 washes (24% vs 17%, P < 0.001). With respect to the pyrethroid-only ITN, both pyrethroid-PBO nets induced significantly higher mortality rates than Olyset Net with nets washed 20 times (P < 0.001) though the difference was higher with Olyset Plus (24% vs. 12%), than with PermaNet 3.0 (17% vs. 12%). After 20 washes, mortality with PermaNet 3.0 declined to the same level as the unwashed Olyset Net, (17% vs. 18%, P = 0.061) but remained significantly higher with Olyset Plus (24% vs. 17%, P = 0.036).\n", - "\n", - "header: Mosquito blood-feeding rates in experimental huts\n", - "\n", - "The blood-feeding rates of wild pyrethroid-resistant _An. gambiae s.l_ that entered the experimental huts are presented in Fig. 2 with further details on mosquito feeding provided in Table 4. The percentage blood-feeding was lower in huts with the unwashed pyrethroid-PBO ITNs and was lowest of all with unwashed Olyset Plus as compared to unwashed PermaNet 3.0 (8% vs 19%, P < 0.001). For all net types, the data showed an overall increase in blood feeding with washed nets compared to unwashed nets and a decrease in blood-feeding inhibition relative to the untreated net. Percentage blood-feeding when washed 20 times did not differ significantly between the pyrethroid-PBO types (38% with PermaNet 3.0 vs. 35% with Olyset Plus, P = 0.708). The proportions of mosquitoes collected resting in the nets were lowest with the\n", - "\n", - "Fig. 1: Mortality of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", - "unwashed pyrethroid-PBO nets (2-6%), which is consistent with the higher toxicity observed with this type of net. Personal protection with both types of pyrethroid-PBO ITMs were > 80% when unwashed but this declined after 20 washes to 53% with PermaNet 3.0 and 11% with Olyset Plus.\n", - "\n", - "header: Cone bioassay results: Tunnel test results\n", - "\n", - "The results from the tunnel tests comparing Olyset Plus and Olyset Net unwashed and after 10 and 20 washes against all three strains are presented in Figs. 4 and 5 for mortality and blood-feeding inhibition respectively. Mortality rates were generally higher in the tunnels tests compared to the cone bioassays and decreased as the strain become more pyrethroid-resistant (Fig. 4). Mortality rates with the Kisumu strain were very high with Olyset Net and Olyset Plus (> 95%). With the VKPer strain, mortality remained > 80% after 20 washes with both ITN types. With the Cove strain, mortality was significantly higher with Olyset Plus compared to Olyset Net at 0 and 10 washes but about the same after 20 washes. With unwashed nets, blood-feeding inhibition in the tunnel tests was consistently higher with Olyset Plus (> 90%) compared to Olyset Net (27-75%) for all three strains tested (Fig. 5). After 10 and 20 washes, blood-feeding inhibition of the Kisumu and VKPer strain remained > 80% with Olyset Plus and Olyset Net. With Cove strain, blood-feeding inhibition was also higher with Olyset Plus at 0 and 10 washes but declined to about the same level as Olyset Net after 20 washes (56%).\n", - "Mortality in the untreated control tunnel was < 10% with all three strains.\n", - "\n", - "header: Results\n", - "\n", - "Mortality with permethrin and alpha-cypermethrin treated papers was 100% with the laboratory-maintained pyrethroid-susceptible _An. gambiae_ Kisumu strain. With wild pyrethroid resistant _An. gambiae_ s.l. from Cove, mortality rates were <50% with all three pyrethroid insecticides tested (Table 1) thus confirming the high levels of pyrethroid resistance in this vector population. Mortality however increased from 19.2 to 52.5% with permethrin, 41.7% to 69.7% with deltamethrin and 0% to 82.4% with alphacypermethrin after pre-exposure of the Cove strain to PBO synergist (Table 1). This result demonstrated that mixed function oxidases are overexpressed in the wild Cove vector population and their effect can be effectively inhibited by the PBO synergist.\n", - "\n", - "header: Supplementary laboratory bioassays\n", - "\n", - "To help further explain the results obtained in the experimental huts, WHO cone bioassays and tunnel tests were performed on samples of netting (\\(30\\times 30\\) cm) obtained from Olyset Net and Olyset Plus when unwashed and after 10 and 20 washes. Washing was performed in the laboratory following WHO guidelines [22]. PermaNet 3.0 was not tested in the laboratory bioassays owing to the restricted application of PBO to the roof of the net preventing a realistic direct comparison with Olyset Plus in bioassays especially tunnel tests. Net samples from each ITN type and each wash point were tested against the following strains:\n", - "\n", - "1. _An. gambiae_ sensu lato (s.l.) strains from Cove, Benin (Cove strain) which is highly pyrethroid resistant. It originates from the experimental hut station in Cove and has shown > 200-fold resistance compared to the susceptible Kisumu strain in susceptibility bioassays. Resistance is mediated by elevated levels of P450s and high frequencies of _kdr_ [20].\n", - "2. _An. gambiae_ VKPer strain, which originated from the Kou Valley in Burkina Faso. VKPer has moderate levels of pyrethroid resistance mediated only by high frequencies of _kdr_.\n", - "3. _An. gambiae_ s.s. Kisumu strain, a reference susceptible strain which originated from Kisumu Kenya.\n", - "\n", - "Approximately two hundred 2-5 days old mosquitoes of each strain were exposed for 3 min in cone bioassays to four net samples of each net type in cohorts of 5 mosquitoes per cone. Knock down in cone bioassays was recorded after 1 h and mortality after 24 h.\n", - "\n", - "Two to three hundred 5-8 days old mosquitoes of each strain were also exposed to each net type in tunnel tests in replicates of 50 mosquitoes per net sample. The tunnel test is a laboratory assay designed to simulate natural host-seeking behaviour of mosquitoes at night in the presence of a net. It consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections by means of a netting frame fitted into a slot across the tunnel. An anesthetized guinea pig was housed unconstrained in a small cage in one section, and mosquitoes were released in the other section at dusk and left overnight. The net samples were holed with nine 1-cm diameter holes to allow host-seeking mosquitoes to penetrate the baited chamber; an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 degC and 75-85% RH. The next morning, the numbers found alive or dead, fed, or unfed, in each section were recorded. Live mosquitoes were provided with sugar solution and delayed mortality recorded after 24 h. The guinea pigs used in this study were kept in accordance with institutional guidelines for animal care.\n", - "\n", - "header: Table 4: Blood-feeding rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", - "footer: Values along a row bearing the same letter label are not significantly different (P > 0.05) * Value set to zero as more blood fed mosquitoes were caught in washed Olyset Net huts than control hut\n", - "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", - "\n", - "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total blood fed\",\"Control\":\"496\",\"Olyset Net\":\"324\",\"Olyset Net.1\":\"807\",\"PermaNet 3.0\":\"95\",\"PermaNet 3.0.1\":\"231\",\"Olyset Plus\":\"56\",\"Olyset Plus.1\":\"442\"},\"3\":{\"Net type\":\"% Blood fed\",\"Control\":\"52a\",\"Olyset Net\":\"29b\",\"Olyset Net.1\":\"52a\",\"PermaNet 3.0\":\"19c\",\"PermaNet 3.0.1\":\"38d\",\"Olyset Plus\":\"8e\",\"Olyset Plus.1\":\"35d\"},\"4\":{\"Net type\":\"95% conf intervals\",\"Control\":\"48.4\\u201354.7\",\"Olyset Net\":\"25.9\\u201331.2\",\"Olyset Net.1\":\"49.7\\u201354.7\",\"PermaNet 3.0\":\"15.9\\u201322.9\",\"PermaNet 3.0.1\":\"33.7\\u201341.3\",\"Olyset Plus\":\"6.1\\u201310.2\",\"Olyset Plus.1\":\"32.1\\u201337.3\"},\"5\":{\"Net type\":\"% Blood-feeding inhibition\",\"Control\":\"-\",\"Olyset Net\":\"44\",\"Olyset Net.1\":\"0\",\"PermaNet 3.0\":\"63\",\"PermaNet 3.0.1\":\"27\",\"Olyset Plus\":\"85\",\"Olyset Plus.1\":\"33\"},\"6\":{\"Net type\":\"inside net\",\"Control\":\"294\",\"Olyset Net\":\"184\",\"Olyset Net.1\":\"542\",\"PermaNet 3.0\":\"28\",\"PermaNet 3.0.1\":\"130\",\"Olyset Plus\":\"17\",\"Olyset Plus.1\":\"241\"},\"7\":{\"Net type\":\"inside net (%)\",\"Control\":\"31a\",\"Olyset Net\":\"16bc\",\"Olyset Net.1\":\"35a\",\"PermaNet 3.0\":\"6d\",\"PermaNet 3.0.1\":\"21b\",\"Olyset Plus\":\"2e\",\"Olyset Plus.1\":\"19c\"},\"8\":{\"Net type\":\"Personal protection (%)\",\"Control\":\"-\",\"Olyset Net\":\"35\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"81\",\"PermaNet 3.0.1\":\"53\",\"Olyset Plus\":\"89\",\"Olyset Plus.1\":\"11\"}}\n", - "\n", - "header: Results\n", - "\n", - "With unwashed nets, mosquito mortality was higher in huts with PermaNet 3.0 compared to Olyset Plus (41% vs. 28%, P < 0.001). After 20 washes, mortality declined significantly with PermaNet 3.0 (41% unwashed vs. 17% after washing P < 0.001), but not with Olyset Plus (28% unwashed vs. 24% after washing P = 0.433); Olyset Plus induced significantly higher mortality than PermaNet 3.0 and Olyset Net after 20 washes. PermaNet 3.0 showed a higher wash retention of PBO compared to Olyset Plus. A non-inferiority analysis performed with data from unwashed and washed nets together using a margin recommended by the WHO, showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality (25% with Olyset Plus vs. 27% with PermaNet 3.0, OR = 1.528, 95%Cl = 1.02-2.29) but not in reducing mosquito feeding (25% with Olyset Plus vs. 30% with PermaNet 3.0, OR = 1.192, 95%Cl = 0.77-1.84). Both pyrethroid-PBO nets were superior to Olyset Net.\n", - "\n", - "header: Background\n", - "\n", - "Long-lasting insecticidal nets (LLINs) remain one of the most powerful tools to reduce malaria transmission in a community and provide personal protection to the user [1, 2]. They have contributed significantly to recent reductions in malaria burden [3]. Their efficacy is however threatened by increasing resistance to pyrethroids [4, 5]; the insecticide of choice used on bed-nets owing to its safety, low cost and rapid activity on vector mosquitoes [6]. To maintain the effectiveness of insecticide treated nets for malaria control, new types of LLINs treated with alternative insecticides and compounds which can either replace or complement pyrethroids on bed-nets are urgently needed.\n", - "\n", - "A new class of insecticide treated nets (ITNs) combining pyrethroids and piperonyl butoxide (PBO) (pyrethroid-PBO ITNs) have been developed [7]. PBO is a synergist that inhibits specific metabolic enzymes such as mixed-function oxidases within mosquitoes that detoxify or sequester insecticides before they can have a toxic effect on the mosquito. Pyrethroid-PBO nets can therefore induce increased mortality of pyrethroid-resistant malaria vectors that express mixed function oxidase based pyrethroid resistance mechanisms that are inhibited by the PBO in the net. These nets were given an interim endorsement as a new WHO class of vector control products in 2017 based on epidemiological data from a cluster randomized controlled trial in North Eastern Tanzania [8], that demonstrated additional malaria control with one prototype pyrethroid-PBO net (Olyset Plus) compared to a pyrethroid-only net (Olyset Net), against pyrethroid resistant malaria vectors of moderate intensity, partly conferred by monooxygenase-based resistance mechanism. Pyrethroid-PBO ITNs are conditionally recommended for malaria vector control instead of pyrethroid-only ITNs in areas of confirmed intermediate levels of resistance mediated by monooxygenase-based resistance mechanism [9]. This endorsement has been followed by an increasing uptake of pyrethroid-PBO nets worldwide [10]; in sub-Saharan Africa for example, the proportion of pyrethroid-PBO nets of all nets delivered increased from 3% in 2018 to 35% in 2021.\n", - "\n", - "While Olyset Plus was the first in class pyrethroid-PBO net to demonstrate public health value as observed in the Tanzanian trial [8], there are currently five additional types of pyrethroid-PBO ITNs on the World Health Organization (WHO) list of prequalified vector control products: PermaNet 3.0, Veeralin, Tsara Boost, Tsara Plus and very recently DuraNet Plus [7]. These nets have all demonstrated superiority over pyrethroid-only nets in terms of mosquito mortality and blood-feeding inhibition in multiple experimental hut trials across Africa [11, 12, 13, 14, 15, 16, 17]. However, they differ from Olyset Plus in their design and specifications; typically, the location of PBO on the net (i.e., all panels vs. roof panel only), the type and dose of pyrethroid used, bioavailability and retention of PBO after washing and could, therefore, differ in entomological and epidemiological impact. A recent large cluster-randomized trial in Uganda, evaluating the efficacy of Olyset Plus and PermaNet 3.0 compared to pyrethroid-only nets in a setting of high pyrethroid resistance, also demonstrated better protection against malaria with pyrethroid-PBO nets compared to pyrethroid-only nets for up to 18 months confirming the findings of the Tanzanian trial [18]. While the Ugandan trial was not powered to directly compare between the different ITN brands tested, the results showed that the additional protective effect of the pyrethroid-PBO net compared to the pyrethroid-only net was initially large with PermaNet 3.0 at 6 months post-distribution but lasted only up to 12 months whereas additional protective effect with Olyset Plus appeared to have a delayed onset which was not observed at 6 months but became evident at 12 months and lasted up to 18 months. There are major differences in design between Olyset Plus and PermaNet 3.0, which could have implications on their epidemiological impact; Olyset Plus is a polyethylene net incorporated with permethrin and PBO on all panels while PermaNet 3.0 is a polyester net coated with deltamethrin with PBO restricted to the roof of the net.\n", - "\n", - "To generate assurance of comparative performance of new candidate products within an established WHO vector control product class, without the need for epidemiological evidence for each new product, the WHO has developed new experimental hut study guidelines for assessing their non-inferiority to a first in class product for which evidence of public health value has already been generated [19]. These provisional guidelines are to be piloted with pyrethroid-PBO nets by comparing other WHO/PQ-listed pyrethroid-PBO nets with the first in class product, Olyset Plus. This study compared the efficacy and wash resistance of Olyset Plus and PermaNet\n", - "3.0 and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against wild free-flying pyrethroid resistant malaria vectors in Southern Benin.\n", - "\n", - "header: Table 1: Mortality of pyrethroid resistant Anopheles gambiae s.l. from Cove in WHO cylinder bioassays with and without pre-exposure to PBO\n", - "footer: None\n", - "columns: ['Variable', 'N exposed', 'N dead', '% Dead']\n", - "\n", - "{\"0\":{\"Variable\":\"Control\",\"N exposed\":101,\"N dead\":0,\"% Dead\":0.0},\"1\":{\"Variable\":\"PBO 4% only\",\"N exposed\":103,\"N dead\":3,\"% Dead\":2.9},\"2\":{\"Variable\":\"Permethrin 0.75%\",\"N exposed\":104,\"N dead\":20,\"% Dead\":19.2},\"3\":{\"Variable\":\"Deltamethrin 0.05%\",\"N exposed\":91,\"N dead\":38,\"% Dead\":41.7},\"4\":{\"Variable\":\"Alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":0,\"% Dead\":0.0},\"5\":{\"Variable\":\"PBO 4% then permethrin 0.75%\",\"N exposed\":99,\"N dead\":52,\"% Dead\":52.5},\"6\":{\"Variable\":\"PBO 4% then deltamethrin 0.05%\",\"N exposed\":99,\"N dead\":69,\"% Dead\":69.7},\"7\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4},\"8\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4}}\n", - "\n", - "header: Conclusion\n", - "\n", - "Olyset Plus outperformed PermaNet 3.0 in terms of its ability to cause greater margins of improved mosquito mortality compared to a standard pyrethroid net, after multiple standardized washes. However, using a margin of non-inferiority defined by the WHO, PermaNet 3.0 was non-inferior to Olyset Plus in inducing mosquito mortality. Considering the low levels of mortality observed and increasing pyrethroid-resistance in West Africa, it is unclear whether either of these nets would demonstrate the same epidemiological impact observed in community trials in East Africa.\n", - "\n", - "header: Experimental hut site: Insecticide resistance bioassays\n", - "\n", - "To assess the frequency of pyrethroid resistance and presence of mixed function oxidases in the Cove vector population during the trial, adult mosquitoes that emerged from larvae collected from breeding sites close to experimental huts were tested in WHO cylinder bioassays with and without pre-exposure to PBO. A total of ~100 mosquitoes of the pyrethroid resistant _An. gambiae_ s.l. Cove strain and the pyrethroid susceptible _An. gambiae_ Kisumu strain were exposed to treated filter papers in WHO cylinder bioassays in batches of 25. Tests were performed with papers treated with permethrin 0.75%, alpha-cypermethrin 0.05% and deltamethrin 0.05%. To assess presence of MFO, some mosquitoes were also pre-exposed to papers treated with 4% PBO prior to exposure to insecticide-treated papers. Exposure to PBO and to insecticides lasted 1 h, knockdown was recorded after 60 min and mortality after 24 h.\n", - "\n", - "header: Chemical analysis\n", - "\n", - "At the end of the experimental hut trial, five pieces of netting (\\(25\\times 25\\) cm) obtained from the panels of replicate nets of each net type (before and after washing) used in the huts were assessed for deltamethrin, permethrin and PBO content using HPLC. Insecticide was extracted from each net piece with an area of 48 sq cm collected from the five net samples (\\(25\\times 25\\) cm) obtained from each whole net. The insecticide content of each sample was determined by injecting ten ul aliquots of the extract on a reverse-phase Hypersil GOLD C18 column (75 A, \\(250\\times 4.6\\) mm, 5-um particle size; Thermo Scientific) at room temperature. A mobile phase of 70% acetonitrile in water was used at a flow rate of 1 ml min\\({}^{-1}\\) to separate the target analyte. Chromatographic peaks of the insecticides and internal standard were detected at a wavelength of 232 nm with the Ultimate 3000 UV detector and analysed with Dionex Chromeleon(tm) 6.8 Chromatography Data System software. Quantities of insecticide were calculated from standard curves established by known concentrations of the insecticide authenticated standards and corrected by internal standard readings in each sample relative to control.\n", - "\n", - "Data from chemical analysis was used to calculate the percentage retention of each active ingredient after 20 washes relative to the unwashed net and the wash retention index. Wash-resistance index was calculated according to WHO guidelines [22] as indicated below:\n", - "\n", - "\\[\\text{Wash resistance index} = 100\\times\\text{n}\\sqrt{(\\text{tn}/\\text{t0})}\\] \\[\\left(\\text{free migration stage behaviour}\\right)\\]\n", - "\n", - "where \\(\\text{tn}=\\text{total active ingredient content after n washing cycles, t0=total active ingredient content before washing, n=number of washes.\n", - "\n", - "header: Table 2 Entry and exiting rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", - "footer: Values along a row bearing the same letter label are not signi\u001d\n", - "cantly different (P>0.05)* Value set to zero as more mosquitoes caught in Olyset Net huts than control huts\n", - "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", - "\n", - "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"N collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"N females\\/night\",\"Control\":\"23a\",\"Olyset Net\":\"27ab\",\"Olyset Net.1\":\"37b\",\"PermaNet 3.0\":\"12c\",\"PermaNet 3.0.1\":\"15d\",\"Olyset Plus\":\"16d\",\"Olyset Plus.1\":\"30ab\"},\"3\":{\"Net type\":\"% deterrence\",\"Control\":null,\"Olyset Net\":\"0*\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"49\",\"PermaNet 3.0.1\":\"36\",\"Olyset Plus\":\"28\",\"Olyset Plus.1\":\"0\"},\"4\":{\"Net type\":\"N exiting\",\"Control\":\"429\",\"Olyset Net\":\"639\",\"Olyset Net.1\":\"669\",\"PermaNet 3.0\":\"319\",\"PermaNet 3.0.1\":\"370\",\"Olyset Plus\":\"468\",\"Olyset Plus.1\":\"712\"},\"5\":{\"Net type\":\"% exiting\",\"Control\":\"45a\",\"Olyset Net\":\"56b\",\"Olyset Net.1\":\"43a\",\"PermaNet 3.0\":\"65cd\",\"PermaNet 3.0.1\":\"60ce\",\"Olyset Plus\":\"68d\",\"Olyset Plus.1\":\"56be\"},\"6\":{\"Net type\":\"95% conf. limits\",\"Control\":\"41.5\\u201347.7\",\"Olyset Net\":\"53.4\\u201359.2\",\"Olyset Net.1\":\"40.8\\u201345.7\",\"PermaNet 3.0\":\"61.0\\u201369.5\",\"PermaNet 3.0.1\":\"56.2\\u201363.9\",\"Olyset Plus\":\"64.4\\u201371.4\",\"Olyset Plus.1\":\"53.1\\u201358.6\"}}\n", - "\n", - "header: Non-inferiority assessment\n", - "\n", - "According to recent provisional WHO guidelines [19], for a candidate pyrethroid-PBO ITN product to be included in this new WHO intervention class without the need for epidemiological evidence, it must demonstrate non-inferiority to the first in class product which has already demonstrated public health value (Olyset Plus) and superiority to a pyrethroid-only LLIN in experimental hut trials [19]. Briefly, the candidate pyrethroid-PBO product is deemed non-inferior if: (1) The lower 95% confidence interval estimate of the odds ratio describing the difference in mosquito mortality between the candidate and active comparator product is greater than 0.7. and (2) The upper 95% confidence interval estimate of the odds ratio describing the difference in mosquito blood-feeding between the candidate and active comparator product is less than 1.43. Following the WHO guidelines, both unwashed and washed data of each product were analysed together to generate single estimates of efficacy representative of the overall performance over the lifetime of the product in the field.\n", - "\n", - "Each primary endpoint for non-inferiority (mortality and blood-feeding rate for unwashed and washed nets combined), was assessed using binomial generalized linear mixed models (GLMMs) with a logit link function fitted using the 'lme4' package of R version 3.5.3 for Windows as described earlier. Results from the non-inferiority assessment of PermaNet 3.0 to Olyset Plus are presented in Table 5 below. The odds ratio for\n", - "Fig. 2: Blood-feeding rates of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", - "the difference in mosquito mortality between PermaNet 3.0 and Olyset Plus was 1.528 (95% confidence interval: 1.021-2.289) while the odds ratio for the difference in mosquito blood feeding was 1.192 (95% confidence interval: 0.772-1.841). Following the WHO criteria described above, PermaNet 3.0 was non-inferior to Olyset Plus in terms of its ability to kill wild pyrethroid- resistant _An. gambiae_ s.l. in the experimental hut trial in Cove Benin. In contrast PermaNet 3.0 was not non-inferior to Olyset Plus in terms of proportions of mosquitoes that blood-fed and, therefore, fails to demonstrate non-inferiority for blood feeding inhibition in this trial. The results also showed superiority of both pyrethroid-PBO net types to Olyset Net both in terms of mosquito mortality (25-27% vs. 15%, P < 0.001) and reducing blood-feeding (25%-30% vs. 42%, P < 0.001).\n", - "\n", - "header: Insecticide resistance in malaria vectors in Cove: Experimental hut trial results\n", - "\n", - "A total of 6711 pyrethroid resistant female _An. gambiae_ s.l. were collected during the experimental hut trial. The entry and exiting rates of wild pyrethroid resistant _An. gambiae_ s.l. from the experimental huts with the different ITN types tested in the trial are presented in Table 2. Compared to the control, Olyset Net did not deter mosquitoes from entering the experimental huts (0% when unwashed and after 20 washes). Mosquito deterrence was significantly higher with PermaNet 3.0 compared to Olyset Plus both unwashed (49% vs. 28%, P < 0.001) and after 20 washes (36% vs. 0%, P < 0.001). Nevertheless, early exiting of mosquitoes from the experimental huts into the veranda trap did not differ significantly between both pyrethroid-PBO net types both when unwashed (65% with PermaNet 3.0 vs 68% with Olyset Plus, P = 0.232) and after 20 washes (60% with PermaNet 3.0 vs. 56% with Olyset Plus, P = 0.053).\n", - "\\begin{table}\n", - "\\begin{tabular}{l c c c c c c}\n", - "**Net type** & **Control** & **Olyset Net** & & **PermNet 3.0** & **Olyset Plus** \\\\ Number of washes & 0 & 0 & 20 & 0 & 20 & 0 & 20 \\\\ N collected & 962 & 1135 & 1546 & 489 & 616 & 688 & 1275 \\\\ N females/night & 233 & 27\\({}^{\\text{hb}}\\) & 37\\({}^{\\text{b}}\\) & 12\\({}^{\\text{c}}\\) & 15\\({}^{\\text{d}}\\) & 16\\({}^{\\text{d}}\\) & 30\\({}^{\\text{hb}}\\) \\\\ \\% deterrence & – & 0\\({}^{\\text{a}}\\) & 0\\({}^{\\text{a}}\\) & 49 & 36 & 28 & 0 \\\\ N eating & 429 & 639 & 669 & 319 & 370 &\n", - "---------------------\n", - "Query: Your task is to extract data from a research paper.\n", - "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", - "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", - "\n", - "###Observation###\n", - "Schema:\n", - "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", - "Data:\n", - "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cove\"}}\n", - "\n", - "###ITNCondition###\n", - "Schema:\n", - "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", - "Data:\n", - "{\"N01\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"deltamethrin\",\"Synergist\":\"PBO\",\"Net_washed\":20.0,\"pHI_category\":\"All\"},\"N02\":{\"Net_type\":\"Olyset Plus\",\"Insecticide\":\"permethrin\",\"Synergist\":\"PBO\",\"Net_washed\":20.0,\"pHI_category\":\"All\"},\"N03\":{\"Net_type\":\"Olyset Net\",\"Insecticide\":\"permethrin\",\"Synergist\":null,\"Net_washed\":20.0,\"pHI_category\":\"All\"}}\n", - "\n", - "\n", - "Answer: \n", - "**************************************************\n", - "** Response: **\n", - "assistant: None\n", - "**************************************************\n", - "\n", - "\n" - ] - } - ], - "source": [ - "for ref, paper in tqdm(papers.loc[references].iterrows(), total=len(references)):\n", - " if ref in pred_extractions and pred_extractions[ref]: continue\n", - " \n", - " indexes[paper.name] = load_index(\n", - " paper, llm_model=llm_model, \n", - " embed_model=embed_model, \n", - " weaviate_client=weaviate_client,\n", - " index_name='LlamaIndexDocumentSections',\n", - " )\n", - "\n", - " ### comment out langfuse code \n", - " # global_handler.set_trace_params(\n", - " # name=f\"extract-{ref}\",\n", - " # session_id=ref,\n", - " # user_id='jonnytr',\n", - " # tags=['itn-recalibration', ref, 'complete-extraction']\n", - " # )\n", - "\n", - " pred_extractions[ref], responses[ref] = extract_paper(\n", - " paper, schema_structure=ss,\n", - " index=indexes[paper.name], \n", - " llm_models=[llm_model, 'gpt-4-turbo'], embed_model=embed_model, \n", - " verbose=2,\n", - " )" - ] - }, - { - "cell_type": "markdown", - "id": "38e7de0c-a1d9-460c-a649-6e3da0a7780b", - "metadata": {}, - "source": [ - "### View extraction results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "44975cd7-5132-4624-8d22-82de44851fb7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
accrombessi2023efficacymieguim2021insightsgebremariam2021evaluationgichuki2021bioefficacysyme2021whichzahouli2023smalldiouf2022evaluationibrahim2020exploringkibondo2022influencemeiwald2022associationmenze2022experimentalsyme2022pyrethroidtoe2018doyewhalaw2022experimentalngufor2022comparative
ITNCondition(3, 3)(9, 5)(4, 7)(2, 11)(1, 4)(6, 3)(5, 5)(5, 5)(3, 4)(3, 3)(3, 6)(3, 6)(6, 6)(2, 5)(3, 5)
Observation(3, 7)(1, 7)(1, 7)(1, 6)(1, 7)(1, 7)(2, 6)(1, 3)(1, 5)(1, 7)(2, 9)(1, 7)(2, 7)(1, 3)(1, 3)
ClinicalOutcome(3, 12)(1, 3)(1, 3)(2, 7)(1, 3)(1, 1)(1, 7)NaN(4, 4)NaN(3, 3)(3, 3)(2, 1)(2, 3)(2, 3)
EntomologicalOutcome(1, 6)(9, 6)(2, 6)(1, 9)(1, 3)(6, 8)(1, 1)(1, 7)(4, 7)(3, 5)(1, 7)(3, 9)(1, 2)(2, 8)(1, 10)
\n", - "
" - ], - "text/plain": [ - " accrombessi2023efficacy mieguim2021insights \\\n", - "ITNCondition (3, 3) (9, 5) \n", - "Observation (3, 7) (1, 7) \n", - "ClinicalOutcome (3, 12) (1, 3) \n", - "EntomologicalOutcome (1, 6) (9, 6) \n", - "\n", - " gebremariam2021evaluation gichuki2021bioefficacy \\\n", - "ITNCondition (4, 7) (2, 11) \n", - "Observation (1, 7) (1, 6) \n", - "ClinicalOutcome (1, 3) (2, 7) \n", - "EntomologicalOutcome (2, 6) (1, 9) \n", - "\n", - " syme2021which zahouli2023small diouf2022evaluation \\\n", - "ITNCondition (1, 4) (6, 3) (5, 5) \n", - "Observation (1, 7) (1, 7) (2, 6) \n", - "ClinicalOutcome (1, 3) (1, 1) (1, 7) \n", - "EntomologicalOutcome (1, 3) (6, 8) (1, 1) \n", - "\n", - " ibrahim2020exploring kibondo2022influence \\\n", - "ITNCondition (5, 5) (3, 4) \n", - "Observation (1, 3) (1, 5) \n", - "ClinicalOutcome NaN (4, 4) \n", - "EntomologicalOutcome (1, 7) (4, 7) \n", - "\n", - " meiwald2022association menze2022experimental \\\n", - "ITNCondition (3, 3) (3, 6) \n", - "Observation (1, 7) (2, 9) \n", - "ClinicalOutcome NaN (3, 3) \n", - "EntomologicalOutcome (3, 5) (1, 7) \n", - "\n", - " syme2022pyrethroid toe2018do yewhalaw2022experimental \\\n", - "ITNCondition (3, 6) (6, 6) (2, 5) \n", - "Observation (1, 7) (2, 7) (1, 3) \n", - "ClinicalOutcome (3, 3) (2, 1) (2, 3) \n", - "EntomologicalOutcome (3, 9) (1, 2) (2, 8) \n", - "\n", - " ngufor2022comparative \n", - "ITNCondition (3, 5) \n", - "Observation (1, 3) \n", - "ClinicalOutcome (2, 3) \n", - "EntomologicalOutcome (1, 10) " - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pd.DataFrame({ref: {k: v.dropna(axis=1, how='all').shape \\\n", - " for k,v in ext.items() if v.size} \\\n", - " for ref, ext in pred_extractions.items()})" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "42d68ac2-0b76-4e4f-9b17-068fe62dc7c1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
accrombessi2023efficacymieguim2021insightsgebremariam2021evaluationgichuki2021bioefficacysyme2021whichzahouli2023smalldiouf2022evaluationibrahim2020exploringkibondo2022influencemeiwald2022associationmenze2022experimentalsyme2022pyrethroidtoe2018doyewhalaw2022experimentalngufor2022comparative
ITNCondition(3, 3)(9, 5)(4, 7)(2, 11)(1, 4)(6, 3)(5, 5)(5, 5)(3, 4)(3, 3)(3, 6)(3, 6)(6, 6)(2, 5)(3, 5)
Observation(3, 7)(1, 7)(1, 7)(1, 6)(1, 7)(1, 7)(2, 6)(1, 3)(1, 5)(1, 7)(2, 9)(1, 7)(2, 7)(1, 3)(1, 3)
ClinicalOutcome(3, 12)(1, 3)(1, 3)(2, 7)(1, 3)(1, 1)(1, 7)NaN(4, 4)NaN(3, 3)(3, 3)(2, 1)(2, 3)(2, 3)
EntomologicalOutcome(1, 6)(9, 6)(2, 6)(1, 9)(1, 3)(6, 8)(1, 1)(1, 7)(4, 7)(3, 5)(1, 7)(3, 9)(1, 2)(2, 8)(1, 10)
\n", - "
" - ], - "text/plain": [ - " accrombessi2023efficacy mieguim2021insights \\\n", - "ITNCondition (3, 3) (9, 5) \n", - "Observation (3, 7) (1, 7) \n", - "ClinicalOutcome (3, 12) (1, 3) \n", - "EntomologicalOutcome (1, 6) (9, 6) \n", - "\n", - " gebremariam2021evaluation gichuki2021bioefficacy \\\n", - "ITNCondition (4, 7) (2, 11) \n", - "Observation (1, 7) (1, 6) \n", - "ClinicalOutcome (1, 3) (2, 7) \n", - "EntomologicalOutcome (2, 6) (1, 9) \n", - "\n", - " syme2021which zahouli2023small diouf2022evaluation \\\n", - "ITNCondition (1, 4) (6, 3) (5, 5) \n", - "Observation (1, 7) (1, 7) (2, 6) \n", - "ClinicalOutcome (1, 3) (1, 1) (1, 7) \n", - "EntomologicalOutcome (1, 3) (6, 8) (1, 1) \n", - "\n", - " ibrahim2020exploring kibondo2022influence \\\n", - "ITNCondition (5, 5) (3, 4) \n", - "Observation (1, 3) (1, 5) \n", - "ClinicalOutcome NaN (4, 4) \n", - "EntomologicalOutcome (1, 7) (4, 7) \n", - "\n", - " meiwald2022association menze2022experimental \\\n", - "ITNCondition (3, 3) (3, 6) \n", - "Observation (1, 7) (2, 9) \n", - "ClinicalOutcome NaN (3, 3) \n", - "EntomologicalOutcome (3, 5) (1, 7) \n", - "\n", - " syme2022pyrethroid toe2018do yewhalaw2022experimental \\\n", - "ITNCondition (3, 6) (6, 6) (2, 5) \n", - "Observation (1, 7) (2, 7) (1, 3) \n", - "ClinicalOutcome (3, 3) (2, 1) (2, 3) \n", - "EntomologicalOutcome (3, 9) (1, 2) (2, 8) \n", - "\n", - " ngufor2022comparative \n", - "ITNCondition (3, 5) \n", - "Observation (1, 3) \n", - "ClinicalOutcome (2, 3) \n", - "EntomologicalOutcome (1, 10) " - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pd.DataFrame({ref: {k: v.dropna(axis=1, how='all').shape \\\n", - " for k,v in ext.items() if v.size} \\\n", - " for ref, ext in pred_extractions.items()})" - ] - }, - { - "cell_type": "markdown", - "id": "c7c36b44-4dd9-4e9e-b38c-1ceb2f37cd61", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, - "source": [ - "# Evaluations" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f29f23f7-13d1-4f94-a2f0-edd00c099b7a", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[UserModel(id=UUID('6d8ee721-49b7-4d1f-bf4c-d6b0eb187c62'), first_name='Jonny', last_name='Tran', full_name='Jonny Tran', username='jonnytr', role=, workspaces=['jonnytr', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing'], api_key='a14427ea-9197-11ec-b909-0242ac120002', inserted_at=datetime.datetime(2024, 1, 11, 1, 48, 44, 477722), updated_at=datetime.datetime(2024, 3, 22, 6, 56, 39, 809768)),\n", - " UserModel(id=UUID('e96c9d89-36f4-4240-a592-9734087371d3'), first_name='Amelia', last_name='Bertozzi-Villa', full_name='Amelia Bertozzi-Villa', username='ameliabv', role=, workspaces=['ameliabv', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing'], api_key='9df5c40e-b5ce-4d19-ac07-50381a5c79aa', inserted_at=datetime.datetime(2024, 1, 11, 1, 48, 44, 549157), updated_at=datetime.datetime(2024, 3, 22, 6, 56, 39, 815293)),\n", - " UserModel(id=UUID('91b12ed4-2aff-46d6-9eb3-c15d44e00e2a'), first_name='Kate', last_name='Battle', full_name='Kate Battle', username='kateb', role=, workspaces=['kateb', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing'], api_key='27fc2244-e9a0-4e24-adb2-6c85b25b05c2', inserted_at=datetime.datetime(2024, 1, 11, 1, 48, 44, 553978), updated_at=datetime.datetime(2024, 3, 22, 6, 56, 39, 820769))]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "users = rg.Workspace.from_name('itn-recalibration').users\n", - "username_to_user = {u.username: u for u in users}\n", - "users" - ] - }, - { - "cell_type": "markdown", - "id": "2b7c2daa-a13a-40f8-99d1-c7555c7e1ea2", - "metadata": {}, - "source": [ - "### LLM v.s. Gold-standard" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "609d3528-89a9-4e97-96bb-cb8e9b39187b", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "c4e2940893be4da38738edd2833e1235", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "0it [00:00, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "true_extractions = {}\n", - "for ref, paper in tqdm(papers.loc[references].iterrows()):\n", - " true_extractions[paper.name] = get_paper_extractions(\n", - " paper, extraction_dataset, field='extraction', answer='extraction-correction', schemas=ss, users=username_to_user['jonnytr'])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ee696003-5b24-4a0b-9d75-3e861bdde993", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n" - ] - }, - { - "data": { - "text/html": [ - "
[05/20/24 14:31:26] WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
-       "                             Column Net_age has different dtypes: float64 and object                               \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m[05/20/24 14:31:26]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=313994;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=281588;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column Net_age has different dtypes: float64 and object \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
-       "                             Column Net_age has different dtypes: float64 and object                               \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=556840;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=355166;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column Net_age has different dtypes: float64 and object \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
-       "                             Column Net_age has different dtypes: float64 and object                               \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=959376;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=421327;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column Net_age has different dtypes: float64 and object \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n" - ] - }, - { - "data": { - "text/html": [ - "
[05/20/24 14:31:27] WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
-       "                             Column Start_month has different dtypes: int64 and float64                            \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m[05/20/24 14:31:27]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=128814;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=918999;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column Start_month has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
-       "                             Column End_month has different dtypes: int64 and float64                              \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=168465;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=668759;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column End_month has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
-       "                             Column End_year has different dtypes: int64 and float64                               \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=249416;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=613773;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column End_year has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
-       "                             Column Start_month has different dtypes: int64 and float64                            \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=361072;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=177476;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column Start_month has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
-       "                             Column End_month has different dtypes: int64 and float64                              \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=542229;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=491101;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column End_month has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
-       "                             Column End_year has different dtypes: int64 and float64                               \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=349467;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=494108;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column End_year has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - " return true_df, pred_df\n" - ] - }, - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
  grits
  con
  f1precisionrecall
ReferenceSchema   
padonou2012decreasedObservation0.7563030.6923080.833333
ITNCondition0.0833800.0469010.375210
EntomologicalOutcome0.3960720.4356790.363066
ClinicalOutcome0.0000000.0000001.000000
randriamaherijaona2015doObservation0.6422100.7224870.577989
ITNCondition0.5882050.7107480.501704
EntomologicalOutcome0.0718350.5706870.038330
ClinicalOutcome0.0000000.0000001.000000
quinones1998permethrinObservation0.5777780.8666670.433333
ITNCondition0.2285710.8000000.133333
EntomologicalOutcome0.3775210.5770680.280519
ClinicalOutcome0.0000000.0000001.000000
kilian2008longObservation0.6666671.0000000.500000
ITNCondition0.0931280.3362960.054048
EntomologicalOutcome0.2223990.5559970.138999
ClinicalOutcome0.0000000.0000001.000000
mosqueira2015pilotObservation0.5900000.9833330.421429
ITNCondition0.2705420.9468950.157816
EntomologicalOutcome0.2080570.3849050.142557
ClinicalOutcome0.0000000.0000001.000000
azizi2022implementingObservation0.4434520.5068030.394180
ITNCondition0.3407080.9274830.208684
EntomologicalOutcome0.0487240.4872410.025644
ClinicalOutcome0.0000000.0000001.000000
magesa1991trialObservation0.1173960.7865530.063432
ITNCondition0.4723080.5313470.425077
EntomologicalOutcome0.0476900.7153530.024667
ClinicalOutcome0.0000000.0000001.000000
clegban2021evaluationObservation0.7272731.0000000.571429
ITNCondition0.3407930.5963870.238555
EntomologicalOutcome0.3076670.7178910.195788
ClinicalOutcome0.0000000.0000001.000000
robert1991influenceObservation0.2395830.9583330.136905
ITNCondition0.4696550.4109480.547930
EntomologicalOutcome0.4034570.4827070.346559
ClinicalOutcome0.0000000.0000001.000000
pwalia2019highObservation0.4375000.3500000.583333
ITNCondition0.3250860.4876290.243815
EntomologicalOutcome0.2414660.3974120.173416
ClinicalOutcome1.0000001.0000001.000000
mnzava2001malariaObservation0.5411710.9470490.378819
ITNCondition0.1586010.1744610.145384
EntomologicalOutcome0.1724440.4526670.106510
ClinicalOutcome1.0000001.0000001.000000
kitau2012speciesObservation0.7500001.0000000.600000
ITNCondition0.8234270.8822430.771963
EntomologicalOutcome0.1542160.5367900.090042
ClinicalOutcome0.0000000.0000001.000000
apetogbo2022insecticideObservation0.0000000.0000001.000000
ITNCondition0.0000000.0000001.000000
EntomologicalOutcome0.0000000.0000001.000000
ClinicalOutcome0.0000000.0000001.000000
hougard2003efficacyObservation0.8571431.0000000.750000
ITNCondition0.1903580.6662550.111042
EntomologicalOutcome0.0886650.3546590.050666
ClinicalOutcome0.0000000.0000001.000000
ketoh2018efficacyObservation0.6296300.9444440.472222
ITNCondition0.6561520.9607940.498189
EntomologicalOutcome0.0923870.4586360.051367
ClinicalOutcome0.0000000.0000001.000000
kilian2011evidenceObservation0.7000000.8750000.583333
ITNCondition0.2159400.5614450.133677
EntomologicalOutcome0.8355580.8355580.835558
ClinicalOutcome0.1356560.0968970.226093
menze2020experimentalObservation0.5986390.6984130.523810
ITNCondition0.6108600.8144800.488688
EntomologicalOutcome0.0987660.3891850.056560
ClinicalOutcome0.0000000.0000001.000000
kawada2014smallObservation0.8000001.0000000.666667
ITNCondition0.5985160.6733300.538664
EntomologicalOutcome0.5439920.7797220.417708
ClinicalOutcome0.0000000.0000001.000000
mbogo1996impactObservation0.7142861.0000000.555556
ITNCondition0.4845510.6460670.387640
EntomologicalOutcome0.3219950.5903240.221372
ClinicalOutcome0.0000000.0000001.000000
darriet2005pyrethoidObservation1.0000001.0000001.000000
ITNCondition0.3544950.2481460.620366
EntomologicalOutcome0.5127550.5554850.476130
ClinicalOutcome0.0000000.0000001.000000
bamou2021increasedObservation0.8000001.0000000.666667
ITNCondition0.7681370.9601720.640114
EntomologicalOutcome0.2247330.2857320.185197
ClinicalOutcome0.0000000.0000001.000000
pennetier2013efficacyObservation0.8571430.9285710.795918
ITNCondition0.1977990.7582300.113734
EntomologicalOutcome0.0636790.6540740.033469
ClinicalOutcome0.0000000.0000001.000000
darriet2002experimentalObservation0.7407410.6666670.833333
ITNCondition0.6336790.7920980.528066
EntomologicalOutcome0.6139920.7674900.511660
ClinicalOutcome0.0000000.0000001.000000
kawada2014preventiveObservation0.4729730.3500000.729167
ITNCondition0.5000000.9166670.343750
EntomologicalOutcome0.7272731.0000000.571429
ClinicalOutcome0.0000000.0000001.000000
\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 83, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "llm_metrics = grits_from_batch(true_extractions, pred_extractions, exclude_columns=['Site'])\n", - "llm_metrics.style.background_gradient(axis=1, vmin=0, vmax=1, cmap='RdYlGn')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a60800ce-9a96-4508-ad8f-349c241540e6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 grits
 con
 f1precisionrecall
Schema   
Easy50.1%71.1%48.5%
Hard28.2%54.1%26.4%
\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 84, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = llm_metrics.query(\"Schema != 'ClinicalOutcome'\").groupby('Schema').mean()\n", - "df.groupby({'Observation': 'Easy', 'ITNCondition': 'Easy', 'EntomologicalOutcome': 'Hard', 'ClinicalOutcome': 'Hard'})\\\n", - " .mean(0).map(lambda n: '{:.1%}'.format(n)).style.background_gradient(axis=1, vmin=0, vmax=1, cmap='RdYlGn')" - ] - }, - { - "cell_type": "markdown", - "id": "71dfe132-d82e-46f6-b4b7-bdeb3e1bd23e", - "metadata": {}, - "source": [ - "## Precision of partial extractions" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5e07edc2-586c-448d-bc31-c21f61edec67", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(3, 3)" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "### comment out langfuse code \n", - "# true_tables = defaultdict(list)\n", - "# pred_tables = defaultdict(list)\n", - "# latencies = defaultdict(list)\n", - "# pred_sizes = defaultdict(list)\n", - "# costs = defaultdict(list)\n", - "# \n", - "# traces_iter = get_langfuse_traces(global_handler.langfuse, references=references, user_id='jonnytr', \n", - "# input_match='Please complete the following')\n", - "# for trace in traces_iter:\n", - "# reference = list(trace.metadata.get('metadata', {}).values())[0]['reference']\n", - "# schema = next((schema for schema in ss.schemas \\\n", - "# if set(schema.columns).intersection(trace.output['items'][0].keys()).difference({'observation_ref', 'reference', 'itncondition_ref'})), None)\n", - "# if not schema:\n", - "# continue\n", - "# \n", - "# pred_df = json_to_df(trace.output['items'], schema=schema).reset_index()\n", - "# \n", - "# pred_tables[schema.name].append(pred_df)\n", - "# true_tables[schema.name].append(true_extractions[reference][schema])\n", - "# latencies[schema.name].append((trace.end_time - trace.start_time).total_seconds())\n", - "# pred_sizes[schema.name].append(pred_df.size)\n", - "# costs[schema.name].append(trace.calculated_total_cost)\n", - "# \n", - "# pred_sizes = pd.concat([pd.Series(values, name=schema) for schema, values in pred_sizes.items()], axis=1).stack()\n", - "# pred_sizes.index.names = ['index', 'Schema']\n", - "# pred_sizes.name = 'N values'\n", - "# pred_sizes.index = pred_sizes.index.swaplevel()\n", - "# \n", - "# latencies = pd.concat([pd.Series(values, name=schema) for schema, values in latencies.items()], axis=1).stack()\n", - "# latencies.index.names = ['index', 'Schema']\n", - "# latencies.name = 'latencies'\n", - "# latencies.index = latencies.index.swaplevel()\n", - "# \n", - "# costs = pd.concat([pd.Series(values, name=schema) for schema, values in costs.items()], axis=1).stack()\n", - "# costs.index.names = ['index', 'Schema']\n", - "# costs.name = 'costs'\n", - "# costs.index = costs.index.swaplevel()\n", - "# \n", - "# len(pred_tables), len(true_tables)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f9f4c823-a3bc-4684-b4f8-d61902b3dfb6", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n" - ] - }, - { - "data": { - "text/html": [ - "
[06/13/24 00:51:34] WARNING  WARNING:extralit.metrics.utils:                                            utils.py:99\n",
-       "                             Column Mortality_rate has different dtypes: float64 and object                        \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m[06/13/24 00:51:34]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=440171;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=944946;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#99\u001b\\\u001b[2m99\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column Mortality_rate has different dtypes: float64 and object \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:99\n",
-       "                             Column Mortality_rate has different dtypes: float64 and object                        \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=5376;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=224478;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#99\u001b\\\u001b[2m99\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column Mortality_rate has different dtypes: float64 and object \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n", - "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", - "\n", - "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", - "\n" - ] - }, - { - "data": { - "text/html": [ - "
[06/13/24 00:51:38] WARNING  WARNING:extralit.metrics.utils:                                            utils.py:99\n",
-       "                             Column Net_holed has different dtypes: float64 and object                             \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m[06/13/24 00:51:38]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=807084;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=132183;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#99\u001b\\\u001b[2m99\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column Net_holed has different dtypes: float64 and object \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:99\n",
-       "                             Column Net_holed has different dtypes: float64 and object                             \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=853636;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=282247;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#99\u001b\\\u001b[2m99\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m Column Net_holed has different dtypes: float64 and object \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/yg/6jm_z4c91d30k5l7hm3s7h580000gp/T/ipykernel_49560/670417324.py:8: PerformanceWarning:\n", - "\n", - "indexing past lexsort depth may impact performance.\n", - "\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
SchemaN valueslatenciesf1precisionrecallSchema (counts)
index
0EntomologicalOutcome18.03.4450.6000000.4285711.000000EntomologicalOutcome (n=212)
1EntomologicalOutcome18.03.6510.6000000.4285711.000000EntomologicalOutcome (n=212)
2EntomologicalOutcome36.05.2311.0000001.0000001.000000EntomologicalOutcome (n=212)
3EntomologicalOutcome36.05.4891.0000001.0000001.000000EntomologicalOutcome (n=212)
4EntomologicalOutcome72.08.4770.6341461.0000000.464286EntomologicalOutcome (n=212)
........................
21Observation6.00.9220.7333330.8555560.641667Observation (n=26)
22Observation4.00.5820.6095240.7111110.533333Observation (n=26)
23Observation4.01.0040.6095240.7111110.533333Observation (n=26)
24Observation4.00.5870.6122450.7142860.535714Observation (n=26)
25Observation4.00.7340.6122450.7142860.535714Observation (n=26)
\n", - "

282 rows × 7 columns

\n", - "
" - ], - "text/plain": [ - " Schema N values latencies f1 precision \\\n", - "index \n", - "0 EntomologicalOutcome 18.0 3.445 0.600000 0.428571 \n", - "1 EntomologicalOutcome 18.0 3.651 0.600000 0.428571 \n", - "2 EntomologicalOutcome 36.0 5.231 1.000000 1.000000 \n", - "3 EntomologicalOutcome 36.0 5.489 1.000000 1.000000 \n", - "4 EntomologicalOutcome 72.0 8.477 0.634146 1.000000 \n", - "... ... ... ... ... ... \n", - "21 Observation 6.0 0.922 0.733333 0.855556 \n", - "22 Observation 4.0 0.582 0.609524 0.711111 \n", - "23 Observation 4.0 1.004 0.609524 0.711111 \n", - "24 Observation 4.0 0.587 0.612245 0.714286 \n", - "25 Observation 4.0 0.734 0.612245 0.714286 \n", - "\n", - " recall Schema (counts) \n", - "index \n", - "0 1.000000 EntomologicalOutcome (n=212) \n", - "1 1.000000 EntomologicalOutcome (n=212) \n", - "2 1.000000 EntomologicalOutcome (n=212) \n", - "3 1.000000 EntomologicalOutcome (n=212) \n", - "4 0.464286 EntomologicalOutcome (n=212) \n", - "... ... ... \n", - "21 0.641667 Observation (n=26) \n", - "22 0.533333 Observation (n=26) \n", - "23 0.533333 Observation (n=26) \n", - "24 0.535714 Observation (n=26) \n", - "25 0.535714 Observation (n=26) \n", - "\n", - "[282 rows x 7 columns]" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "### comment out langfuse code \n", - "# results = grits_from_batch(true_tables, pred_tables, \n", - "# index_columns=['reference', 'observation_ref', 'itncondition_ref'], \n", - "# index_names=['Schema', 'index'])\n", - "# \n", - "# results[pred_sizes.name] = results.index.map(pred_sizes)\n", - "# results[latencies.name] = results.index.map(latencies)\n", - "# \n", - "# results = pd.concat(([results[[pred_sizes.name, latencies.name]].droplevel(level=[1,2], axis=1), results[('grits', 'con')]]), axis=1)\n", - "# results = results.reset_index(level=['Schema'])\n", - "# results['Schema (counts)'] = results['Schema'].map({k:f'{k} (n={v})' for k,v in results.reset_index()['Schema'].value_counts().items()})\n", - "# results" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "264c86fc-a707-4c7e-b529-012ed390d793", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Schema\n", - "EntomologicalOutcome 0.936392\n", - "ITNCondition 0.761387\n", - "Observation 0.899817\n", - "Name: precision, dtype: float64" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "### comment out langfuse code \n", - "# results.groupby('Schema')['precision'].mean()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5bcde074-55c7-4911-984f-87edc8d29d35", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - " \n", - " " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ + "cells": [ { - "alignmentgroup": "True", - "hovertemplate": "Schema (counts)=EntomologicalOutcome (n=212)
Schema=%{x}
precision=%{y}", - "legendgroup": "EntomologicalOutcome (n=212)", - "marker": { - "color": "#636efa" - }, - "name": "EntomologicalOutcome (n=212)", - "notched": false, - "offsetgroup": "EntomologicalOutcome (n=212)", - "orientation": "v", - "showlegend": true, - "type": "box", - "x": [ - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome", - "EntomologicalOutcome" - ], - "x0": " ", - "xaxis": "x", - "y": [ - 0.42857142857142855, - 0.42857142857142855, - 1, - 1, - 1, - 1, - 1, - 1, - 0.9230769230769231, - 0.9230769230769231, - 0.9807692307692307, - 0.9807692307692307, - 1, - 1, - 1, - 1, - 0.8941798941798944, - 0.8941798941798944, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0.7333333333333333, - 0.7333333333333333, - 1, - 1, - 1, - 1, - 1, - 1, - 0.944927536231884, - 0.944927536231884, - 1, - 1, - 1, - 1, - 0.6049602571341699, - 0.6049602571341699, - 1, - 1, - 0.32919254658385094, - 0.32919254658385094, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0.9470899470899471, - 0.9470899470899471, - 1, - 1, - 0.95, - 0.95, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0.875, - 0.875, - 0.9285714285714286, - 0.9285714285714286, - 1, - 1, - 0.9714285714285714, - 0.9714285714285714, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0.9422222222222223, - 0.9422222222222223, - 0.9333333333333332, - 0.9333333333333332, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0.9166666666666666, - 0.9166666666666666, - 1, - 1, - 0, - 0, - 1, - 1, - 1, - 1, - 1, - 1, - 0.9423076923076923, - 0.9423076923076923, - 1, - 1, - 1, - 1, - 0.9523809523809524, - 0.9523809523809524, - 1, - 1, - 0.8333333333333333, - 0.8333333333333333, - 0.8181818181818182, - 0.8181818181818182, - 0.9, - 0.9, - 0.6166666666666667, - 0.6166666666666667, - 1, - 1, - 0.85, - 0.85, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0.9583333333333334, - 0.9583333333333334, - 1, - 1, - 0.9933333333333333, - 0.9933333333333333, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0.9166666666666666, - 0.9166666666666666, - 0.9583333333333334, - 0.9583333333333334, - 1, - 1, - 1, - 1, - 0.8266666666666667, - 0.8266666666666667, - 0.8666666666666666, - 0.8666666666666666, - 1, - 1, - 1, - 1, - 1, - 1, - 0.91875, - 0.91875, - 0.9821428571428571, - 0.9821428571428571, - 0.9189814814814815, - 0.9189814814814815, - 0.5, - 0.5, - 1, - 1, - 1, - 1, - 0.7626262626262627, - 0.7626262626262627, - 1, - 1, - 0.6432900432900434, - 0.6432900432900434, - 0.7955555555555556, - 0.7955555555555556, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1 - ], - "y0": " ", - "yaxis": "y" + "cell_type": "code", + "execution_count": 2, + "id": "25e3624f-beb0-4a8a-a02f-20d7525d9d5b", + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "# %load_ext heat" + ] }, { - "alignmentgroup": "True", - "hovertemplate": "Schema (counts)=ITNCondition (n=44)
Schema=%{x}
precision=%{y}", - "legendgroup": "ITNCondition (n=44)", - "marker": { - "color": "#EF553B" - }, - "name": "ITNCondition (n=44)", - "notched": false, - "offsetgroup": "ITNCondition (n=44)", - "orientation": "v", - "showlegend": true, - "type": "box", - "x": [ - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition", - "ITNCondition" - ], - "x0": " ", - "xaxis": "x", - "y": [ - 0.8529411764705882, - 0.8529411764705882, - 0.6724137931034483, - 0.6724137931034483, - 1, - 1, - 0.6666666666666666, - 0.6666666666666666, - 1, - 1, - 0.5361853832442067, - 0.5361853832442067, - 1, - 1, - 0.6666666666666666, - 0.6666666666666666, - 1, - 1, - 0.968421052631579, - 0.968421052631579, - 0.95, - 0.95, - 0.6957519746137631, - 0.6957519746137631, - 1, - 1, - 0.31962481962481964, - 0.31962481962481964, - 0.8263157894736842, - 0.8263157894736842, - 0.3346153846153846, - 0.3346153846153846, - 0.5619047619047618, - 0.5619047619047618, - 0.4693877551020407, - 0.4693877551020407, - 0.6158730158730158, - 0.6158730158730158, - 0.6137471655328798, - 0.6137471655328798, - 1, - 1, - 1, - 1 - ], - "y0": " ", - "yaxis": "y" + "cell_type": "code", + "execution_count": 3, + "id": "32c1921b-c936-4a0d-90d7-eb02cfcedc68", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/1_/cmltqwn11bqfmnz786mfyhgc0000gn/T/ipykernel_19247/3721118118.py:4: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from tqdm.autonotebook import tqdm\n", + "/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/pydantic/_internal/_config.py:295: PydanticDeprecatedSince20: Support for class-based `config` is deprecated, use ConfigDict instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.10/migration/\n", + " warnings.warn(DEPRECATION_MESSAGE, DeprecationWarning)\n" + ] + }, + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'argilla.client.feedback'; 'argilla.client' is not a package", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[3], line 14\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mrg\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mextralit\u001b[39;00m\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mextralit\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpipeline\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mingest\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpaper\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m get_paper_extractions\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# TEMP fix to use create_extraction_records from v0.2.3\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;66;03m# from extralit.pipeline.export.record import create_extraction_records\u001b[39;00m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpatch_pipeline_export_record\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m create_extraction_records\n", + "File \u001b[0;32m~/Projects/extralit/argilla-v1/src/extralit/pipeline/ingest/paper.py:6\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mrg\u001b[39;00m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpd\u001b[39;00m\n\u001b[0;32m----> 6\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclient\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mfeedback\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mschemas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mremote\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrecords\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m RemoteFeedbackRecord\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mextralit\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mconvert\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mjson_table\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m json_to_df, is_json_table\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mextralit\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mextraction\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmodels\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpaper\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m PaperExtraction\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'argilla.client.feedback'; 'argilla.client' is not a package" + ] + } + ], + "source": [ + "import uuid, sys, os, io, json, re, rich, glob, dill, itertools, ast\n", + "from IPython.display import HTML, JSON\n", + "from collections import Counter, defaultdict\n", + "from tqdm.autonotebook import tqdm\n", + "from dotenv import load_dotenv\n", + "load_dotenv(override=True)\n", + "# sys.path.insert(0, 'src')\n", + "\n", + "import pandas as pd\n", + "# import plotly.express as px\n", + "import argilla as rg\n", + "\n", + "import extralit\n", + "from extralit.pipeline.ingest.paper import get_paper_extractions\n", + "\n", + "# TEMP fix to use create_extraction_records from v0.2.3\n", + "# from extralit.pipeline.export.record import create_extraction_records\n", + "from patch_pipeline_export_record import create_extraction_records\n", + "\n", + "from extralit.pipeline.ingest.record import get_record_data\n", + "#from extralit.pipeline.ingest.trace import get_langfuse_traces\n", + "from extralit.pipeline.update import *\n", + "from extralit.metrics.extraction import grits_from_pandas, grits_from_batch, grits_paper, grits_multi_tables\n", + "from extralit.convert.json_table import df_to_json\n", + "from extralit.convert.markdown import read_markdown_table_to_df\n", + "from extralit.extraction.models import PaperExtraction, SchemaStructure\n", + "from extralit.convert.json_table import schema_to_json, json_to_df\n", + "\n", + "from extralit.extraction.schema import get_extraction_schema_model\n", + "from extralit.extraction.prompts import *\n", + "from extralit.extraction.extraction import *\n", + "from extralit.extraction.vector_index import *\n", + "\n", + "from extralit.server.models.extraction import ExtractionRequest\n", + "from extralit.server.context.datasets import get_argilla_dataset\n", + "from extralit.server.context.files import get_minio_client\n", + "from extralit.server.context.vectordb import get_weaviate_client\n", + "from extralit.server.context.llamaindex import get_langfuse_callback\n", + "\n", + "from llama_index.core.output_parsers import PydanticOutputParser\n", + "from llama_index.core.response.notebook_utils import display_source_node, display_response\n", + "from llama_index.core import set_global_handler, Settings, callbacks, PromptTemplate" + ] }, { - "alignmentgroup": "True", - "hovertemplate": "Schema (counts)=Observation (n=26)
Schema=%{x}
precision=%{y}", - "legendgroup": "Observation (n=26)", - "marker": { - "color": "#00cc96" - }, - "name": "Observation (n=26)", - "notched": false, - "offsetgroup": "Observation (n=26)", - "orientation": "v", - "showlegend": true, - "type": "box", - "x": [ - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation", - "Observation" - ], - "x0": " ", - "xaxis": "x", - "y": [ - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 1, - 0.5, - 0.5, - 1, - 1, - 1, - 1, - 0.9166666666666666, - 0.9166666666666666, - 1, - 1, - 0.8555555555555556, - 0.8555555555555556, - 0.7111111111111111, - 0.7111111111111111, - 0.7142857142857143, - 0.7142857142857143 - ], - "y0": " ", - "yaxis": "y" - } - ], - "layout": { - "boxmode": "overlay", - "height": 360, - "legend": { - "title": { - "text": "Schema (counts)" - }, - "tracegroupgap": 0 + "cell_type": "markdown", + "id": "ec9a9f71-1b32-4f36-8f29-12ec428dcac9", + "metadata": {}, + "source": [ + "## Connect clients" + ] }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + { + "cell_type": "code", + "execution_count": null, + "id": "1a209a15", + "metadata": {}, + "outputs": [ + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 2\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mweaviate\u001b[39;00m\n\u001b[0;32m----> 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mvector_stores\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mweaviate\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m WeaviateVectorStore\n\u001b[1;32m 4\u001b[0m weaviate_client \u001b[38;5;241m=\u001b[39m get_weaviate_client()\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/vector_stores/weaviate/__init__.py:1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mvector_stores\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mweaviate\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbase\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m WeaviateVectorStore\n\u001b[1;32m 3\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mWeaviateVectorStore\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/vector_stores/weaviate/base.py:11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mtyping\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Any, Dict, List, Optional, Union, cast\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01muuid\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m uuid4\n\u001b[0;32m---> 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbridge\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpydantic\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Field, PrivateAttr\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mschema\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BaseNode\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mvector_stores\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtypes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 14\u001b[0m BasePydanticVectorStore,\n\u001b[1;32m 15\u001b[0m MetadataFilters,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 18\u001b[0m VectorStoreQueryResult,\n\u001b[1;32m 19\u001b[0m )\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/core/__init__.py:10\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mtyping\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Callable, Optional\n\u001b[1;32m 9\u001b[0m \u001b[38;5;66;03m# response\u001b[39;00m\n\u001b[0;32m---> 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbase\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mresponse\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mschema\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Response\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# import global eval handler\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcallbacks\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mglobal_handlers\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m set_global_handler\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/core/base/response/schema.py:9\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01masync_utils\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m asyncio_run\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbridge\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpydantic\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BaseModel\n\u001b[0;32m----> 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mschema\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m NodeWithScore\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtypes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m TokenGen, TokenAsyncGen\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m truncate_text\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/core/schema.py:18\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbridge\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpydantic\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BaseModel, Field\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minstrumentation\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m DispatcherSpanMixin\n\u001b[0;32m---> 18\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mllama_index\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcore\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m SAMPLE_TEXT, truncate_text\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mtyping_extensions\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Self\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m TYPE_CHECKING:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/core/utils.py:89\u001b[0m\n\u001b[1;32m 85\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopwords \u001b[38;5;241m=\u001b[39m stopwords\u001b[38;5;241m.\u001b[39mwords(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124menglish\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n\u001b[1;32m 86\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_stopwords\n\u001b[0;32m---> 89\u001b[0m globals_helper \u001b[38;5;241m=\u001b[39m \u001b[43mGlobalsHelper\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[38;5;66;03m# Global Tokenizer\u001b[39;00m\n\u001b[1;32m 93\u001b[0m \u001b[38;5;129m@runtime_checkable\u001b[39m\n\u001b[1;32m 94\u001b[0m \u001b[38;5;28;01mclass\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mTokenizer\u001b[39;00m(Protocol):\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/llama_index/core/utils.py:45\u001b[0m, in \u001b[0;36mGlobalsHelper.__init__\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 43\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 44\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Initialize NLTK stopwords and punkt.\"\"\"\u001b[39;00m\n\u001b[0;32m---> 45\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\n\u001b[1;32m 47\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_nltk_data_dir \u001b[38;5;241m=\u001b[39m os\u001b[38;5;241m.\u001b[39menviron\u001b[38;5;241m.\u001b[39mget(\n\u001b[1;32m 48\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mNLTK_DATA\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 49\u001b[0m os\u001b[38;5;241m.\u001b[39mpath\u001b[38;5;241m.\u001b[39mjoin(\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 52\u001b[0m ),\n\u001b[1;32m 53\u001b[0m )\n\u001b[1;32m 55\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_nltk_data_dir \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m nltk\u001b[38;5;241m.\u001b[39mdata\u001b[38;5;241m.\u001b[39mpath:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/__init__.py:146\u001b[0m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mjsontags\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;66;03m###########################################################\u001b[39;00m\n\u001b[1;32m 143\u001b[0m \u001b[38;5;66;03m# PACKAGES\u001b[39;00m\n\u001b[1;32m 144\u001b[0m \u001b[38;5;66;03m###########################################################\u001b[39;00m\n\u001b[0;32m--> 146\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchunk\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minference\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/chunk/__init__.py:155\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Natural Language Toolkit: Chunkers\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Copyright (C) 2001-2024 NLTK Project\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;66;03m# For license information, see LICENSE.TXT\u001b[39;00m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;124;03mClasses and interfaces for identifying non-overlapping linguistic\u001b[39;00m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;124;03mgroups (such as base noun phrases) in unrestricted text. This task is\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 152\u001b[0m \u001b[38;5;124;03m pattern is valid.\u001b[39;00m\n\u001b[1;32m 153\u001b[0m \u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[0;32m--> 155\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchunk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mapi\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m ChunkParserI\n\u001b[1;32m 156\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchunk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mnamed_entity\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Maxent_NE_Chunker\n\u001b[1;32m 157\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchunk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mregexp\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m RegexpChunkParser, RegexpParser\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/chunk/api.py:13\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Natural Language Toolkit: Chunk parsing API\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Copyright (C) 2001-2024 NLTK Project\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m## Chunk Parser Interface\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;66;03m##//////////////////////////////////////////////////////\u001b[39;00m\n\u001b[0;32m---> 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mchunk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutil\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m ChunkScore\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01minternals\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m deprecated\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mparse\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m ParserI\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/chunk/util.py:12\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mre\u001b[39;00m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmetrics\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m accuracy \u001b[38;5;28;01mas\u001b[39;00m _accuracy\n\u001b[0;32m---> 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mmapping\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m map_tag\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutil\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m str2tuple\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtree\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Tree\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/tag/__init__.py:72\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mapi\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m TaggerI\n\u001b[1;32m 71\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutil\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m str2tuple, tuple2str, untag\n\u001b[0;32m---> 72\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01msequential\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 73\u001b[0m SequentialBackoffTagger,\n\u001b[1;32m 74\u001b[0m ContextTagger,\n\u001b[1;32m 75\u001b[0m DefaultTagger,\n\u001b[1;32m 76\u001b[0m NgramTagger,\n\u001b[1;32m 77\u001b[0m UnigramTagger,\n\u001b[1;32m 78\u001b[0m BigramTagger,\n\u001b[1;32m 79\u001b[0m TrigramTagger,\n\u001b[1;32m 80\u001b[0m AffixTagger,\n\u001b[1;32m 81\u001b[0m RegexpTagger,\n\u001b[1;32m 82\u001b[0m ClassifierBasedTagger,\n\u001b[1;32m 83\u001b[0m ClassifierBasedPOSTagger,\n\u001b[1;32m 84\u001b[0m )\n\u001b[1;32m 85\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbrill\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BrillTagger\n\u001b[1;32m 86\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbrill_trainer\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m BrillTaggerTrainer\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/tag/sequential.py:26\u001b[0m\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mtyping\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m List, Optional, Tuple\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m jsontags\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m NaiveBayesClassifier\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mprobability\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m ConditionalFreqDist\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtag\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mapi\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m FeaturesetTaggerI, TaggerI\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/classify/__init__.py:97\u001b[0m\n\u001b[1;32m 95\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpositivenaivebayes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m PositiveNaiveBayesClassifier\n\u001b[1;32m 96\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mrte_classify\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m RTEFeatureExtractor, rte_classifier, rte_features\n\u001b[0;32m---> 97\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mscikitlearn\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m SklearnClassifier\n\u001b[1;32m 98\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01msenna\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Senna\n\u001b[1;32m 99\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclassify\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mtextcat\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m TextCat\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/nltk/classify/scikitlearn.py:38\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnltk\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mprobability\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m DictionaryProbDist\n\u001b[1;32m 37\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 38\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01msklearn\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mfeature_extraction\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m DictVectorizer\n\u001b[1;32m 39\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01msklearn\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpreprocessing\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m LabelEncoder\n\u001b[1;32m 40\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/__init__.py:84\u001b[0m\n\u001b[1;32m 70\u001b[0m \u001b[38;5;66;03m# We are not importing the rest of scikit-learn during the build\u001b[39;00m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;66;03m# process, as it may not be compiled yet\u001b[39;00m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 78\u001b[0m \u001b[38;5;66;03m# later is linked to the OpenMP runtime to make it possible to introspect\u001b[39;00m\n\u001b[1;32m 79\u001b[0m \u001b[38;5;66;03m# it and importing it first would fail if the OpenMP dll cannot be found.\u001b[39;00m\n\u001b[1;32m 80\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 81\u001b[0m __check_build, \u001b[38;5;66;03m# noqa: F401\u001b[39;00m\n\u001b[1;32m 82\u001b[0m _distributor_init, \u001b[38;5;66;03m# noqa: F401\u001b[39;00m\n\u001b[1;32m 83\u001b[0m )\n\u001b[0;32m---> 84\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mbase\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m clone\n\u001b[1;32m 85\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_show_versions\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m show_versions\n\u001b[1;32m 87\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\n\u001b[1;32m 88\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcalibration\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 89\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mcluster\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 130\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mshow_versions\u001b[39m\u001b[38;5;124m\"\u001b[39m,\n\u001b[1;32m 131\u001b[0m ]\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/base.py:19\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m config_context, get_config\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mexceptions\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m InconsistentVersionWarning\n\u001b[0;32m---> 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_estimator_html_repr\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m _HTMLDocumentationLinkMixin, estimator_html_repr\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_metadata_requests\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m _MetadataRequester, _routing_enabled\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_param_validation\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m validate_parameter_constraints\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/__init__.py:11\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m _joblib, metadata_routing\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_bunch\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Bunch\n\u001b[0;32m---> 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_chunking\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m gen_batches, gen_even_slices\n\u001b[1;32m 12\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_estimator_html_repr\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m estimator_html_repr\n\u001b[1;32m 14\u001b[0m \u001b[38;5;66;03m# Make _safe_indexing importable from here for backward compat as this particular\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m# helper is considered semi-private and typically very useful for third-party\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# libraries that want to comply with scikit-learn's estimator API. In particular,\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;66;03m# _safe_indexing was included in our public API documentation despite the leading\u001b[39;00m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;66;03m# `_` in its name.\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/_chunking.py:8\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnumpy\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mnp\u001b[39;00m\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m get_config\n\u001b[0;32m----> 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_param_validation\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Interval, validate_params\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mchunk_generator\u001b[39m(gen, chunksize):\n\u001b[1;32m 12\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Chunk generator, ``gen`` into lists of length ``chunksize``. The last\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;124;03m chunk may have a length less than ``chunksize``.\"\"\"\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/_param_validation.py:14\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01msparse\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m csr_matrix, issparse\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m config_context, get_config\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mvalidation\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m _is_arraylike_not_scalar\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mclass\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mInvalidParameterError\u001b[39;00m(\u001b[38;5;167;01mValueError\u001b[39;00m, \u001b[38;5;167;01mTypeError\u001b[39;00m):\n\u001b[1;32m 18\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Custom exception to be raised when the parameter of a class/method/function\u001b[39;00m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;124;03m does not have a valid type or value.\u001b[39;00m\n\u001b[1;32m 20\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/validation.py:26\u001b[0m\n\u001b[1;32m 24\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m get_config \u001b[38;5;28;01mas\u001b[39;00m _get_config\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mexceptions\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m DataConversionWarning, NotFittedError, PositiveSpectrumWarning\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_array_api\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m _asarray_with_order, _is_numpy_namespace, get_namespace\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mfixes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m ComplexWarning, _preserve_dia_indices_dtype\n\u001b[1;32m 28\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_isfinite\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m FiniteStatus, cy_isfinite\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/_array_api.py:11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mspecial\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mspecial\u001b[39;00m\n\u001b[1;32m 10\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_config\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m get_config\n\u001b[0;32m---> 11\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mfixes\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m parse_version\n\u001b[1;32m 13\u001b[0m _NUMPY_NAMESPACE_NAMES \u001b[38;5;241m=\u001b[39m {\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnumpy\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124marray_api_compat.numpy\u001b[39m\u001b[38;5;124m\"\u001b[39m}\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21myield_namespaces\u001b[39m(include_numpy_namespaces\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mTrue\u001b[39;00m):\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/sklearn/utils/fixes.py:24\u001b[0m\n\u001b[1;32m 21\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mscipy\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mstats\u001b[39;00m\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 24\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpd\u001b[39;00m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m:\n\u001b[1;32m 26\u001b[0m pd \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/pandas/__init__.py:26\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[38;5;28;01mdel\u001b[39;00m _hard_dependencies, _dependency, _missing_dependencies\n\u001b[1;32m 24\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 25\u001b[0m \u001b[38;5;66;03m# numpy compat\u001b[39;00m\n\u001b[0;32m---> 26\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompat\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 27\u001b[0m is_numpy_dev \u001b[38;5;28;01mas\u001b[39;00m _is_numpy_dev, \u001b[38;5;66;03m# pyright: ignore[reportUnusedImport] # noqa: F401\u001b[39;00m\n\u001b[1;32m 28\u001b[0m )\n\u001b[1;32m 29\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m _err: \u001b[38;5;66;03m# pragma: no cover\u001b[39;00m\n\u001b[1;32m 30\u001b[0m _module \u001b[38;5;241m=\u001b[39m _err\u001b[38;5;241m.\u001b[39mname\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/pandas/compat/__init__.py:27\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompat\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompressors\u001b[39;00m\n\u001b[1;32m 26\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompat\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mnumpy\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m is_numpy_dev\n\u001b[0;32m---> 27\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mcompat\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpyarrow\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m (\n\u001b[1;32m 28\u001b[0m pa_version_under10p1,\n\u001b[1;32m 29\u001b[0m pa_version_under11p0,\n\u001b[1;32m 30\u001b[0m pa_version_under13p0,\n\u001b[1;32m 31\u001b[0m pa_version_under14p0,\n\u001b[1;32m 32\u001b[0m pa_version_under14p1,\n\u001b[1;32m 33\u001b[0m pa_version_under16p0,\n\u001b[1;32m 34\u001b[0m pa_version_under17p0,\n\u001b[1;32m 35\u001b[0m )\n\u001b[1;32m 37\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m TYPE_CHECKING:\n\u001b[1;32m 38\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_typing\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m F\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/pandas/compat/pyarrow.py:8\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpandas\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutil\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mversion\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Version\n\u001b[1;32m 7\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m----> 8\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpyarrow\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpa\u001b[39;00m\n\u001b[1;32m 10\u001b[0m _palv \u001b[38;5;241m=\u001b[39m Version(Version(pa\u001b[38;5;241m.\u001b[39m__version__)\u001b[38;5;241m.\u001b[39mbase_version)\n\u001b[1;32m 11\u001b[0m pa_version_under10p1 \u001b[38;5;241m=\u001b[39m _palv \u001b[38;5;241m<\u001b[39m Version(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m10.0.1\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/pyarrow/__init__.py:65\u001b[0m\n\u001b[1;32m 63\u001b[0m _gc_enabled \u001b[38;5;241m=\u001b[39m _gc\u001b[38;5;241m.\u001b[39misenabled()\n\u001b[1;32m 64\u001b[0m _gc\u001b[38;5;241m.\u001b[39mdisable()\n\u001b[0;32m---> 65\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpyarrow\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mlib\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mas\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01m_lib\u001b[39;00m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m _gc_enabled:\n\u001b[1;32m 67\u001b[0m _gc\u001b[38;5;241m.\u001b[39menable()\n", + "File \u001b[0;32m:398\u001b[0m, in \u001b[0;36mparent\u001b[0;34m(self)\u001b[0m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "source": [ + "import weaviate\n", + "from llama_index.vector_stores.weaviate import WeaviateVectorStore\n", + "\n", + "weaviate_client = get_weaviate_client()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d8998e65-c4f8-4af2-8ef7-a8d822288307", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['Extralit_itn_recalibration', 'LlamaIndexDocumentSections', 'Test_DSM_Embeddings'])" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" + "source": [ + "# Confirm weaviate connection and display available indexes\n", + "weaviate_client.is_connected()\n", + "collections = weaviate_client.collections.list_all(simple=False)\n", + "collections.keys()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3db50810-1602-4ad8-8b12-8c3ab04a68bf", + "metadata": { + "jupyter": { + "is_executing": true + } }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] - ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } + "outputs": [], + "source": [ + "#len(set([x['ref_doc_id'] for x in res.get['Extralit_itn_recalibration']]))\n", + "#res.get['Extralit_itn_recalibration']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4dc7bb0d-18e4-4dc5-8671-2229e39d611d", + "metadata": {}, + "outputs": [], + "source": [ + "# minio_client = get_minio_client()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ba6e8fae-c005-40c4-92c8-a6b966fb60d8", + "metadata": {}, + "outputs": [], + "source": [ + "### comment out langfuse code \n", + "# import langfuse\n", + "# from langfuse.llama_index import LlamaIndexCallbackHandler\n", + "\n", + "# langfuse_callback_handler = LlamaIndexCallbackHandler(\n", + "# public_key=os.environ['LANGFUSE_PUBLIC_KEY'],\n", + "# secret_key=os.environ['LANGFUSE_SECRET_KEY'],\n", + "# host=os.environ['LANGFUSE_HOST'],\n", + "# )\n", + "# if not Settings.callback_manager.handlers:\n", + "# Settings.callback_manager.add_handler(langfuse_callback_handler)\n", + "# set_global_handler(\"langfuse\")\n", + "\n", + "# from llama_index.core import global_handler\n", + "# global_handler\n", + "\n", + "# Ensure the global handler is NOT set to langfuse\n", + "set_global_handler(\"simple\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "80fd1176-dfb1-4dfe-b318-94bce659b1a8", + "metadata": { + "scrolled": true }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" + "outputs": [], + "source": [ + "ex.init(\n", + " api_url='http://extralit-public-demo.hf.space/',\n", + " api_key=\"386a5806-0182-41f6-8076-f4b557818f0b\", #argilla\n", + " # api_key='9df5c40e-b5ce-4d19-ac07-50381a5c79aa', #abv \n", + " workspace='itn-recalibration',\n", + ")\n", + "papers_dataset = ex.FeedbackDataset.from_argilla(name=\"1-Master-Paper-List\", workspace=\"itn-recalibration\", )\n", + "extraction_dataset = ex.FeedbackDataset.from_argilla(name=\"2-Data-Extractions\", workspace=\"itn-recalibration\", )\n", + "preprocessing_dataset = ex.FeedbackDataset.from_argilla(name=\"Table-Preprocessing\", workspace=\"itn-recalibration\")" + ] + }, + { + "cell_type": "markdown", + "id": "054f734f-a69e-4d5d-8f1a-e4ffed74d18a", + "metadata": {}, + "source": [ + "## Load papers" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8ac5c2db-ea2c-44d6-bf4a-cf9e632df058", + "metadata": { + "scrolled": true }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "sys:1: ResourceWarning: unclosed \n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n" + ] + } ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "source": [ + "papers = pd.read_parquet('config/extraction_queue_197papers_2024-04-03.parquet')\n", + "\n", + "# papers_preprocessed = list({r.metadata['reference'] \\\n", + "# for r in preprocessing_dataset.filter_by(\n", + "# response_status=['submitted'], \n", + "# metadata_filters=ex.TermsMetadataFilter(name='type', values=['table', 'Table'])).records})\n", + "# papers_uploaded = list({r.metadata['reference'] \\\n", + "# for r in extraction_dataset.filter_by(response_status=['submitted', 'draft']).records})\n", + "\n", + "# papers_queue = papers_preprocessed\n", + "# len(papers_preprocessed), len(papers_uploaded)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a21a61ef-7ec3-437a-93fe-370a683d79c7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(91, 32)" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } + "source": [ + "papers_queue = papers.loc[papers.index.isin(papers_preprocessed)]\n", + "papers_queue.shape" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28993312-b191-47a0-9fdd-a278853342f2", + "metadata": { + "scrolled": true }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Mendeley Reference KeyMeasured_outcomeApprox_num_rowsTables_countNotes_on_approx_num_rowsCheck_out_byCheck_in_byNeeds_digitizationNotes_on_extractiontitle...issnpmiddoicollectionsfile_idmime_typefile_namesizefilehashfile_path
reference
abdella2009doesAbdella2009Incidence (u5)42NoneCBCBFalseNoneDoes Insecticide Treated Mosquito Nets (ITNs) ......1573-3610 (Electronic)1895860710.1007/s10900-008-9132-6[Human Health Outcomes]6428579b-3ee9-2f91-2ec9-66250ba74834application/pdfAdbella_et_al_2009_J_Community_Health.pdf213444cada6d5613eff1204416c1e2a63038931eff40f2data/pdf/Adbella_et_al_2009_J_Community_Health...
abdulla2001impactAbdulla2001Parasitemia (u2)43NoneJSJSFalseNoneImpact on malaria morbidity of a programme sup......0959-8138 (Print)1115752710.1136/bmj.322.7281.270[Human Health Outcomes]177972f6-b129-e7c1-220d-03e95856f758application/pdfAbdulla_et_al___2001___Impact_on_malaria_morbi...285528ed77ef48bf6ca690b635d080eb3e1f38b8438fa5data/pdf/Abdulla_et_al___2001___Impact_on_mala...
abilio2015bioAbilio2015Vector susceptibility201-3, 5, 6NoneKBKBFalseNoneBio-efficacy of new long-lasting insecticide-t......NoneNone10.1186/s12936-015-0885-y[Entomological Outcomes]54ede4f1-a9e8-5e79-6cab-5b66c556bf18application/pdf12936_2015_Article_885_pdf.pdf2577795a507d55efd4cb88d2ebaf5cf8508a12dd92b1332data/pdf/12936_2015_Article_885_pdf.pdf
agossa2014laboratoryAgossa2014Vector susceptibility371-4Large row count due to repetition of experieme...KBKBTruedigitization updatedLaboratory and field evaluation of the impact ......1475-2875 (Electronic)2488450210.1186/1475-2875-13-193[Entomological Outcomes]64a054f4-66a9-8885-2345-13b33b3671c0application/pdfAgossa_et_al_2014_Mal_J.pdf6161758b4d0a6f39dc33ec547170e3c2629501a6960d64data/pdf/Agossa_et_al_2014_Mal_J.pdf
agossa2015impactAgossa2015Vector susceptibility231-4Maybe need to digitize/extract from fig 3KBKBFalseNoneImpact of Insecticide Resistance on the Effect......1932-6203 (Electronic)2667464310.1371/journal.pone.0145207[Entomological Outcomes]0aa9c155-7306-a71f-52fe-944db8e633a4application/pdf2015-Impact_of_Insecticide_Resistance_on_the_E...764912d4b9abf675a1604a02dd66231b62816d790b533adata/pdf/2015-Impact_of_Insecticide_Resistance...
..................................................................
lindblade2005evaluationLindblade2005Net durabilityNoneNoneNoneNoneNoneNoneNoneEvaluation of long-lasting insecticidal nets a......1360-2276None10.1111/j.1365-3156.2005.01501.x[Entomological Outcomes]15294800-a4a4-d26d-14b4-99c8b396e948application/pdflindblade2005evaluation.pdf1211405cfed926ae656cc33fb366423a257059585a1e4bdata/pdf/lindblade2005evaluation.pdf
norris2011efficacyNorris2011Vector susceptibilityNoneNoneNoneNoneNoneNoneNoneEfficacy of long-lasting insecticidal nets in ......1475-2875 (Electronic)2188014310.1186/1475-2875-10-254[Entomological Outcomes]11ea9233-51f9-4cff-377d-b585d8267094application/pdfEfficacy_of_long_lasting_insecticidal_nets_in_...143974296a5f52cd8d7ec1aba424a881c5d01aa940ca5fbdata/pdf/Efficacy_of_long_lasting_insecticidal...
ohashi2012efficacyOhashi2012Vector susceptibilityNoneNoneNoneNoneNoneNoneNoneEfficacy of pyriproxyfen-treated nets in steri......0022-2585 (Print)2302518610.1603/me12006[Entomological Outcomes]37e8cc37-85fa-6c5b-3e5d-ed37d0566158application/pdfEfficacy_of_pyriproxyfen_treated_nets_in_steri...284647a30942a6ef6ce47354e34ab23d4a0a22e6cdb179data/pdf/Efficacy_of_pyriproxyfen_treated_nets...
okumu2012implicationsOkumu2012Vector susceptibilityNoneNoneNoneNoneNoneNoneNoneImplications of bio-efficacy and persistence o......1475-2875 (Electronic)2316406210.1186/1475-2875-11-378[Entomological Outcomes]2525cc93-97af-6ef1-0860-3cd04be66be4application/pdfImplications_of_bio_efficacy_and_persistence_o...1032638e452bf88ce21236d63599f701156fab11520b304data/pdf/Implications_of_bio_efficacy_and_pers...
riveron2018highRiveron2018Vector susceptibilityNoneNoneNoneNoneNoneNoneNoneHigh Plasmodium Infection Rate and Reduced Bed......1537-6613 (Electronic)2908748410.1093/infdis/jix570[Entomological Outcomes]7ce097cb-884a-6401-3dc1-e552dee6a424application/pdfHigh_Plasmodium_Infection_Rate_and_Reduced_Bed...1131111cb0a6a5a59693e4406af3defddb2d223878592dedata/pdf/High_Plasmodium_Infection_Rate_and_Re...
\n", + "

111 rows × 32 columns

\n", + "
" + ], + "text/plain": [ + " Mendeley Reference Key Measured_outcome \\\n", + "reference \n", + "abdella2009does Abdella2009 Incidence (u5) \n", + "abdulla2001impact Abdulla2001 Parasitemia (u2) \n", + "abilio2015bio Abilio2015 Vector susceptibility \n", + "agossa2014laboratory Agossa2014 Vector susceptibility \n", + "agossa2015impact Agossa2015 Vector susceptibility \n", + "... ... ... \n", + "lindblade2005evaluation Lindblade2005 Net durability \n", + "norris2011efficacy Norris2011 Vector susceptibility \n", + "ohashi2012efficacy Ohashi2012 Vector susceptibility \n", + "okumu2012implications Okumu2012 Vector susceptibility \n", + "riveron2018high Riveron2018 Vector susceptibility \n", + "\n", + " Approx_num_rows Tables_count \\\n", + "reference \n", + "abdella2009does 4 2 \n", + "abdulla2001impact 4 3 \n", + "abilio2015bio 20 1-3, 5, 6 \n", + "agossa2014laboratory 37 1-4 \n", + "agossa2015impact 23 1-4 \n", + "... ... ... \n", + "lindblade2005evaluation None None \n", + "norris2011efficacy None None \n", + "ohashi2012efficacy None None \n", + "okumu2012implications None None \n", + "riveron2018high None None \n", + "\n", + " Notes_on_approx_num_rows \\\n", + "reference \n", + "abdella2009does None \n", + "abdulla2001impact None \n", + "abilio2015bio None \n", + "agossa2014laboratory Large row count due to repetition of experieme... \n", + "agossa2015impact Maybe need to digitize/extract from fig 3 \n", + "... ... \n", + "lindblade2005evaluation None \n", + "norris2011efficacy None \n", + "ohashi2012efficacy None \n", + "okumu2012implications None \n", + "riveron2018high None \n", + "\n", + " Check_out_by Check_in_by Needs_digitization \\\n", + "reference \n", + "abdella2009does CB CB False \n", + "abdulla2001impact JS JS False \n", + "abilio2015bio KB KB False \n", + "agossa2014laboratory KB KB True \n", + "agossa2015impact KB KB False \n", + "... ... ... ... \n", + "lindblade2005evaluation None None None \n", + "norris2011efficacy None None None \n", + "ohashi2012efficacy None None None \n", + "okumu2012implications None None None \n", + "riveron2018high None None None \n", + "\n", + " Notes_on_extraction \\\n", + "reference \n", + "abdella2009does None \n", + "abdulla2001impact None \n", + "abilio2015bio None \n", + "agossa2014laboratory digitization updated \n", + "agossa2015impact None \n", + "... ... \n", + "lindblade2005evaluation None \n", + "norris2011efficacy None \n", + "ohashi2012efficacy None \n", + "okumu2012implications None \n", + "riveron2018high None \n", + "\n", + " title \\\n", + "reference \n", + "abdella2009does Does Insecticide Treated Mosquito Nets (ITNs) ... \n", + "abdulla2001impact Impact on malaria morbidity of a programme sup... \n", + "abilio2015bio Bio-efficacy of new long-lasting insecticide-t... \n", + "agossa2014laboratory Laboratory and field evaluation of the impact ... \n", + "agossa2015impact Impact of Insecticide Resistance on the Effect... \n", + "... ... \n", + "lindblade2005evaluation Evaluation of long-lasting insecticidal nets a... \n", + "norris2011efficacy Efficacy of long-lasting insecticidal nets in ... \n", + "ohashi2012efficacy Efficacy of pyriproxyfen-treated nets in steri... \n", + "okumu2012implications Implications of bio-efficacy and persistence o... \n", + "riveron2018high High Plasmodium Infection Rate and Reduced Bed... \n", + "\n", + " ... issn pmid \\\n", + "reference ... \n", + "abdella2009does ... 1573-3610 (Electronic) 18958607 \n", + "abdulla2001impact ... 0959-8138 (Print) 11157527 \n", + "abilio2015bio ... None None \n", + "agossa2014laboratory ... 1475-2875 (Electronic) 24884502 \n", + "agossa2015impact ... 1932-6203 (Electronic) 26674643 \n", + "... ... ... ... \n", + "lindblade2005evaluation ... 1360-2276 None \n", + "norris2011efficacy ... 1475-2875 (Electronic) 21880143 \n", + "ohashi2012efficacy ... 0022-2585 (Print) 23025186 \n", + "okumu2012implications ... 1475-2875 (Electronic) 23164062 \n", + "riveron2018high ... 1537-6613 (Electronic) 29087484 \n", + "\n", + " doi \\\n", + "reference \n", + "abdella2009does 10.1007/s10900-008-9132-6 \n", + "abdulla2001impact 10.1136/bmj.322.7281.270 \n", + "abilio2015bio 10.1186/s12936-015-0885-y \n", + "agossa2014laboratory 10.1186/1475-2875-13-193 \n", + "agossa2015impact 10.1371/journal.pone.0145207 \n", + "... ... \n", + "lindblade2005evaluation 10.1111/j.1365-3156.2005.01501.x \n", + "norris2011efficacy 10.1186/1475-2875-10-254 \n", + "ohashi2012efficacy 10.1603/me12006 \n", + "okumu2012implications 10.1186/1475-2875-11-378 \n", + "riveron2018high 10.1093/infdis/jix570 \n", + "\n", + " collections \\\n", + "reference \n", + "abdella2009does [Human Health Outcomes] \n", + "abdulla2001impact [Human Health Outcomes] \n", + "abilio2015bio [Entomological Outcomes] \n", + "agossa2014laboratory [Entomological Outcomes] \n", + "agossa2015impact [Entomological Outcomes] \n", + "... ... \n", + "lindblade2005evaluation [Entomological Outcomes] \n", + "norris2011efficacy [Entomological Outcomes] \n", + "ohashi2012efficacy [Entomological Outcomes] \n", + "okumu2012implications [Entomological Outcomes] \n", + "riveron2018high [Entomological Outcomes] \n", + "\n", + " file_id \\\n", + "reference \n", + "abdella2009does 6428579b-3ee9-2f91-2ec9-66250ba74834 \n", + "abdulla2001impact 177972f6-b129-e7c1-220d-03e95856f758 \n", + "abilio2015bio 54ede4f1-a9e8-5e79-6cab-5b66c556bf18 \n", + "agossa2014laboratory 64a054f4-66a9-8885-2345-13b33b3671c0 \n", + "agossa2015impact 0aa9c155-7306-a71f-52fe-944db8e633a4 \n", + "... ... \n", + "lindblade2005evaluation 15294800-a4a4-d26d-14b4-99c8b396e948 \n", + "norris2011efficacy 11ea9233-51f9-4cff-377d-b585d8267094 \n", + "ohashi2012efficacy 37e8cc37-85fa-6c5b-3e5d-ed37d0566158 \n", + "okumu2012implications 2525cc93-97af-6ef1-0860-3cd04be66be4 \n", + "riveron2018high 7ce097cb-884a-6401-3dc1-e552dee6a424 \n", + "\n", + " mime_type \\\n", + "reference \n", + "abdella2009does application/pdf \n", + "abdulla2001impact application/pdf \n", + "abilio2015bio application/pdf \n", + "agossa2014laboratory application/pdf \n", + "agossa2015impact application/pdf \n", + "... ... \n", + "lindblade2005evaluation application/pdf \n", + "norris2011efficacy application/pdf \n", + "ohashi2012efficacy application/pdf \n", + "okumu2012implications application/pdf \n", + "riveron2018high application/pdf \n", + "\n", + " file_name \\\n", + "reference \n", + "abdella2009does Adbella_et_al_2009_J_Community_Health.pdf \n", + "abdulla2001impact Abdulla_et_al___2001___Impact_on_malaria_morbi... \n", + "abilio2015bio 12936_2015_Article_885_pdf.pdf \n", + "agossa2014laboratory Agossa_et_al_2014_Mal_J.pdf \n", + "agossa2015impact 2015-Impact_of_Insecticide_Resistance_on_the_E... \n", + "... ... \n", + "lindblade2005evaluation lindblade2005evaluation.pdf \n", + "norris2011efficacy Efficacy_of_long_lasting_insecticidal_nets_in_... \n", + "ohashi2012efficacy Efficacy_of_pyriproxyfen_treated_nets_in_steri... \n", + "okumu2012implications Implications_of_bio_efficacy_and_persistence_o... \n", + "riveron2018high High_Plasmodium_Infection_Rate_and_Reduced_Bed... \n", + "\n", + " size filehash \\\n", + "reference \n", + "abdella2009does 213444 cada6d5613eff1204416c1e2a63038931eff40f2 \n", + "abdulla2001impact 285528 ed77ef48bf6ca690b635d080eb3e1f38b8438fa5 \n", + "abilio2015bio 2577795 a507d55efd4cb88d2ebaf5cf8508a12dd92b1332 \n", + "agossa2014laboratory 616175 8b4d0a6f39dc33ec547170e3c2629501a6960d64 \n", + "agossa2015impact 764912 d4b9abf675a1604a02dd66231b62816d790b533a \n", + "... ... ... \n", + "lindblade2005evaluation 121140 5cfed926ae656cc33fb366423a257059585a1e4b \n", + "norris2011efficacy 1439742 96a5f52cd8d7ec1aba424a881c5d01aa940ca5fb \n", + "ohashi2012efficacy 284647 a30942a6ef6ce47354e34ab23d4a0a22e6cdb179 \n", + "okumu2012implications 1032638 e452bf88ce21236d63599f701156fab11520b304 \n", + "riveron2018high 1131111 cb0a6a5a59693e4406af3defddb2d223878592de \n", + "\n", + " file_path \n", + "reference \n", + "abdella2009does data/pdf/Adbella_et_al_2009_J_Community_Health... \n", + "abdulla2001impact data/pdf/Abdulla_et_al___2001___Impact_on_mala... \n", + "abilio2015bio data/pdf/12936_2015_Article_885_pdf.pdf \n", + "agossa2014laboratory data/pdf/Agossa_et_al_2014_Mal_J.pdf \n", + "agossa2015impact data/pdf/2015-Impact_of_Insecticide_Resistance... \n", + "... ... \n", + "lindblade2005evaluation data/pdf/lindblade2005evaluation.pdf \n", + "norris2011efficacy data/pdf/Efficacy_of_long_lasting_insecticidal... \n", + "ohashi2012efficacy data/pdf/Efficacy_of_pyriproxyfen_treated_nets... \n", + "okumu2012implications data/pdf/Implications_of_bio_efficacy_and_pers... \n", + "riveron2018high data/pdf/High_Plasmodium_Infection_Rate_and_Re... \n", + "\n", + "[111 rows x 32 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# prejonny papers\n", + "references = ['abdella2009does','abdulla2001impact','abilio2015bio','agossa2014laboratory','agossa2015impact','akoton2018experimental','allossogbe2017who','alonso1993malaria','anshebo2014estimation','asale2014evaluation','asidi2004experimental','asidi2005experimental','asidi2012loss','atieli2010effect','awolola2014impact','badolo2012experimental','bayili2017evaluation','bayili2019experimental','birhanu2019bio','bobanga2013field','bogh1998permethrin','boussougou2017physical','camara2018efficacy','chandre2010field','chouaibou2006efficacy','corbel2010field','curtis2003insecticide','curtis1998comparison','dabire2006personal','dalessandro1995mortality','darriet2011combining','djenontin2009managing','djenontin2010indoor','djenontin2015insecticidal','djenontin2018field','etang2004reduced','etang2007preliminary','fadel2019combination','fane2012anopheles','glunt2015long','guillet2001combined','hassan2008retention','hassan2012bioassay','hauser2019ability','hawley2003community','henry2005protective','hougard2002useful','howard2000evidence','hughes2020anopheles','ibrahim2019high','jones2012aging','kilian2015field','kolaczinski2000experimental','koudou2011efficacy','kulkarni2007efficacy','kweka2011durability','kweka2017efficacy','kweka2019bio','lines1987experimental','magbity1997effects','mahande2018bio','malima2008experimental','malima2009behavioural','malima2013evaluation','masalu2018potential','massue2016durability','maxwell1999comparison','maxwell2002effect','maxwell2003variation','maxwell2006tests','mosha2008experimental','msangi2008effects','murray2020barrier','musa2020long','nguessan2007reduced','nguessan2016chlorfenapyr','ngufor2014olyset','ngufor2014combining','ngufor2017which','obi2020monitoring','ochomo2017insecticide','okoyo2015comparing','omondi2017quantifying','oumbouke2019evaluation','oxborough2013itn','oxborough2015new','pmi2019tanzania','pmi2017madagascar','randriamaherijaona2017durability','sheikhi2017wash','solomon2018bed','soremekun2004measuring','spitzen2017effect','tami2004evaluation','tiono2018efficacy','tungu2015evaluation','vatandoost2006comparative','vatandoost2013wash','pmi2018mozambique','winkler2012efficacy','zhou2016insecticide','duchon2009mixture','etang2013evaluation','etang2016when','kayedi2015entomological','kolaczinski2000comparison','lindblade2005evaluation','norris2011efficacy','ohashi2012efficacy','okumu2012implications','riveron2018high']\n", + "papers_queue = papers.loc[references]\n", + "papers_queue" + ] + }, + { + "cell_type": "markdown", + "id": "69e52c30-f07e-4341-976d-45e1c76725aa", + "metadata": {}, + "source": [ + "# Predict extractions" + ] + }, + { + "cell_type": "markdown", + "id": "7c611c47-8c41-4dbb-a30c-7861d7a37914", + "metadata": {}, + "source": [ + "## Load schemas" + ] + }, + { + "cell_type": "markdown", + "id": "c27c5844-09c4-410d-9704-4c50f3bf4f80", + "metadata": {}, + "source": [ + "### Fetch latest schema version\n", + "Loading schemas into `SchemaStructure` is needed so the LLM can extract a table for each schemas in `schemas` argument" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "84797356-25f1-429f-a302-017adf890643", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" + "outputs": [], + "source": [ + "# ignore this until fetching schemas from minio works\n", + "\n", + "# ss = SchemaStructure.from_s3(workspace='itn-recalibration', minio_client=get_minio_client())\n", + "# ss.ordering" + ] + }, + { + "cell_type": "markdown", + "id": "373baa81-6b3c-43f7-ac25-77100842faa2", + "metadata": {}, + "source": [ + "### How to update schemas\n", + "\n", + "These steps are to easily make versioned updates to *existing* schemas or to add new schemas:\n", + "1. Update the schema specs in the `pandera.DataFrameSchema` classes located in the `schemas/*.py` files, then import the classes to load the changes.\n", + "2. Apply the changes to the server using `.to_s3`, which uploads these schema .json files to a MinIO file object storage server. If a schema already exists, then it would create a new version of the schema file, while keeping the old versions intact.\n", + " - Make sures that the `workspace` argument matches the Argilla workspace name for your project.\n", + " - You may browse and manipulate all uploaded files in the MinIO Console, if connected to the K8s cluster\n", + "3. The extraction tables in the Extralit web UI will automatically fetch the latest version of the schemas that were uploaded, or allow you to update to a new schema version if the table was built with an older version." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "87394620-24db-478d-8ad1-3134b60ec29b", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "outputs": [ + { + "data": { + "text/plain": [ + "['ITNCondition', 'Observation', 'ClinicalOutcome', 'EntomologicalOutcome']" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } + "source": [ + "from schemas import Observation, ITNCondition, EntomologicalOutcome, ClinicalOutcome, Publication\n", + "\n", + "ss = SchemaStructure(schemas=[Observation, ITNCondition, EntomologicalOutcome, ClinicalOutcome])\n", + "ss.ordering" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b94adb50-694d-4b6c-8243-a8b62f09cf15", + "metadata": { + "scrolled": true }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } + "outputs": [], + "source": [ + "# also ignore?\n", + "\n", + "# ss.to_s3(workspace='itn-recalibration', minio_client=minio_client)" + ] + }, + { + "cell_type": "markdown", + "id": "04c20e3d-a40d-42b3-ac0b-dbaff2a9a144", + "metadata": {}, + "source": [ + "## Select extraction references" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7b577217-8ff2-4b02-99e4-baff82c25eb1", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" + "outputs": [ + { + "data": { + "text/plain": [ + "'pinder2015efficacy, terlouw2010impact, tokponnon2014impact'" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" - ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" + "source": [ + "# references = ['Atieli2010effectgambiaeMalaria', 'Dabire2006personalpyrethroidsMalaria', 'Ochomo2017insecticidekenyaEmerging', 'Vatandoost2013washtestArthropod']\n", + "# references = ['apetogbo2022insecticide', 'azizi2022implementing', 'bamou2021increased', 'clegban2021evaluation',]\n", + "# references = ['padonou2012decreased', 'robert1991influence', 'curtis2000comparison', 'pwalia2019high', 'darriet2002experimental', 'mosqueira2015pilot']\n", + "# references = ['ketoh2018efficacy', 'darriet2005pyrethoid', 'magesa1991trial', 'quinones1998permethrin', 'kawada2014small', 'kawada2014preventive', 'randriamaherijaona2015do', 'kilian2011evidence',]\n", + "# references = ['mbogo1996impact', 'menze2020experimental', 'kitau2012species', 'kilian2008long', 'mnzava2001malaria', 'hougard2003efficacy', 'pennetier2013efficacy',]\n", + "# references = ['ngufor2016efficacy', 'okia2013bioefficacy', 'mosha2008comparative', 'quinones1997anopheles', 'ahoua2012status', 'sreehari2009wash', 'abdulla2005spatial', 'tan2016longitudinal',\n", + "# 'wills2013physical', 'marchant2002socially', 'nevill1996insecticide', 'msuya1991trial', 'tungu2021efficacy']\n", + "# references = ['hamel2011combination', 'ter2003impact', 'moiroux2014human', 'schellenberg2001effect', 'tamari2020protective', 'yewhalaw2022experimental', 'tungu2021field', 'sanou2021insecticide', 'kouassi2020susceptibility', 'mulatier2019prior', \n", + "# 'ngongang2022reduced', 'lorenz2020comparative', 'hien2021evidence', 'ngufor2020efficacy', 'sovi2022physical', 'adageba2022bio', 'githinji2020impact', 'grisales2021pyriproxyfen', 'tungu2021bio', 'tungu2021effectiveness',]\n", + "\n", + "references = ['pinder2015efficacy', 'terlouw2010impact', 'tokponnon2014impact']\n", + "\n", + "# references = [ 'accrombessi2023efficacy', 'mieguim2021insights', 'gebremariam2021evaluation', 'gichuki2021bioefficacy', 'syme2021which', 'zahouli2023small', 'diouf2022evaluation', 'ibrahim2020exploring', 'kibondo2022influence', 'meiwald2022association', 'menze2022experimental', 'syme2022pyrethroid', 'toe2018do', 'yewhalaw2022experimental', 'ngufor2022comparative' ]\n", + "\n", + "\n", + "', '.join(references)" ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9db560c2-f130-45d5-8b0e-46b5083d24d0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "15" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 1, - "#f0f921" + "source": [ + "len(references)" ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" + }, + { + "cell_type": "markdown", + "id": "508c3959-e4c9-44e8-a3bb-f8c258ebccf0", + "metadata": {}, + "source": [ + "## Run LLM extractions" + ] + }, + { + "cell_type": "markdown", + "id": "5143f215-378b-4ded-bee0-65366b7ca2ca", + "metadata": {}, + "source": [ + "### Select LLM and embedding models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d2938dbc-a94e-47f3-8349-9f6ea9eca993", + "metadata": {}, + "outputs": [], + "source": [ + "# llm_model = 'gpt-3.5-turbo'\n", + "# llm_model = 'gpt-4-turbo'\n", + "llm_model = 'gpt-4o'\n", + "\n", + "embed_model = 'text-embedding-3-small'\n", + "# embed_model = 'text-embedding-3-large'\n", + "\n", + "pred_extractions = defaultdict(lambda: {})\n", + "indexes = {}\n", + "responses = {}" + ] + }, + { + "cell_type": "markdown", + "id": "8183742a-9082-47f0-b502-2f9daadccc3f", + "metadata": {}, + "source": [ + "### Add model segments to Weaviate vector db" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24742f9a-efcf-4bb2-b54f-74b17e13d827", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "_RawGQLReturn(aggregate={'LlamaIndexDocumentSections': [{'meta': {'count': 3828}}]}, explore={}, get={}, errors=None)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 0.7777777777777778, - "#fb9f3a" + "source": [ + "# Verify the number of items in the index before\n", + "weaviate_client.graphql_raw_query(\"\"\"\n", + "{\n", + " Aggregate {\n", + " LlamaIndexDocumentSections {\n", + " meta {\n", + " count\n", + " }\n", + " }\n", + " }\n", + "}\n", + "\"\"\"\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0bc3ddf2-bd99-4423-964c-33fd1d262f76", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "a22619b907694ee79b5b0a0993f5b91a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/15 [00:00
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "### comment out langfuse code \n", - "# px.box(\n", - "# results, \n", - "# y='precision',\n", - "# x='Schema',\n", - "# color='Schema (counts)',\n", - "# title='Precision of LLM Partial Extraction Completions', \n", - "# boxmode='overlay',\n", - "# width=700,\n", - "# ).update_layout(\n", - "# xaxis_title='Schemas',\n", - "# yaxis_dtick=0.1,\n", - "# # showlegend=False,\n", - "# )" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "21b11403-7b51-4c49-9b2d-febbf8953554", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.plotly.v1+json": { - "config": { - "plotlyServerURL": "https://plot.ly" - }, - "data": [ { - "hovertemplate": "Schema=EntomologicalOutcome
N values=%{x}
latencies=%{y}", - "legendgroup": "EntomologicalOutcome", - "marker": { - "color": "#636efa", - "symbol": "circle" - }, - "mode": "markers", - "name": "EntomologicalOutcome", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - 18, - 18, - 36, - 36, - 72, - 72, - 27, - 27, - 84, - 84, - 72, - 72, - 60, - 60, - 36, - 36, - 24, - 24, - 36, - 36, - 5, - 5, - 5, - 5, - 5, - 5, - 5, - 5, - 6, - 6, - 6, - 6, - 6, - 6, - 6, - 6, - 66, - 66, - 66, - 66, - 66, - 66, - 66, - 66, - 69, - 69, - 88, - 88, - 6, - 6, - 6, - 6, - 6, - 6, - 12, - 12, - 18, - 18, - 6, - 6, - 40, - 40, - 12, - 12, - 12, - 12, - 12, - 12, - 3, - 3, - 3, - 3, - 6, - 6, - 3, - 3, - 18, - 18, - 18, - 18, - 18, - 18, - 9, - 9, - 3, - 3, - 3, - 3, - 72, - 72, - 12, - 12, - 27, - 27, - 15, - 15, - 9, - 9, - 7, - 7, - 4, - 4, - 3, - 3, - 21, - 21, - 21, - 21, - 28, - 28, - 21, - 21, - 5, - 5, - 3, - 3, - 3, - 3, - 6, - 6, - 3, - 3, - 3, - 3, - 30, - 30, - 27, - 27, - 27, - 27, - 24, - 24, - 4, - 4, - 36, - 36, - 36, - 36, - 18, - 18, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 120, - 120, - 72, - 72, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 15, - 18, - 18, - 9, - 9, - 72, - 72, - 72, - 72, - 3, - 3, - 3, - 3, - 3, - 3, - 42, - 42, - 6, - 6, - 28, - 28, - 3, - 3, - 3, - 3, - 3, - 3, - 60, - 60, - 30, - 30, - 40, - 40, - 72, - 72, - 3, - 3, - 15, - 15, - 60, - 60, - 72, - 72 - ], - "xaxis": "x", - "y": [ - 3.445, - 3.651, - 5.231, - 5.489, - 8.477, - 8.728, - 3.5, - 3.747, - 8.494, - 8.78, - 8.625, - 8.807, - 8.996, - 9.242, - 5.716, - 6.008, - 4.284, - 4.531, - 5.674, - 5.882, - 1.084, - 1.297, - 1.146, - 1.311, - 1.208, - 1.445, - 1.2, - 1.437, - 1.089, - 1.324, - 1.987, - 2.174, - 1.2, - 1.367, - 1.175, - 1.382, - 9.427, - 9.676, - 9.104, - 9.394, - 12.654, - 12.921, - 15.391, - 15.676, - 9.685, - 9.976, - 9.792, - 10.049, - 1.521, - 1.711, - 1.628, - 1.835, - 1.863, - 2.091, - 1.72, - 1.925, - 2.487, - 2.717, - 1.211, - 1.357, - 6.375, - 6.612, - 2.198, - 2.348, - 3.037, - 3.26, - 3.137, - 3.301, - 0.943, - 1.16, - 1.089, - 1.277, - 1.256, - 1.7, - 1.203, - 1.397, - 3.787, - 3.977, - 3.234, - 3.416, - 3.435, - 3.652, - 2.113, - 2.448, - 0.867, - 1.078, - 1.009, - 1.209, - 13.302, - 13.525, - 2.897, - 3.069, - 3.452, - 3.686, - 2.25, - 2.446, - 1.724, - 1.959, - 1.459, - 1.659, - 0.977, - 1.201, - 0.966, - 1.192, - 2.517, - 2.708, - 3.594, - 3.791, - 3.382, - 3.563, - 3.097, - 3.329, - 0.889, - 1.059, - 2.221, - 2.454, - 1.063, - 1.266, - 1.597, - 1.823, - 1.101, - 1.338, - 0.855, - 1.064, - 7.387, - 7.658, - 4.459, - 4.684, - 3.989, - 4.231, - 3.669, - 3.835, - 1.371, - 1.589, - 4.404, - 4.624, - 4.727, - 4.923, - 2.437, - 2.64, - 2.02, - 2.166, - 2.319, - 2.54, - 5.221, - 5.436, - 2.112, - 2.277, - 1.867, - 2.038, - 1.884, - 2.104, - 12.161, - 12.485, - 8.528, - 8.844, - 2.171, - 2.375, - 1.789, - 2.043, - 1.855, - 2.069, - 1.631, - 1.869, - 2.709, - 2.942, - 1.964, - 2.137, - 2.564, - 2.759, - 2.216, - 2.399, - 1.656, - 1.861, - 17.407, - 17.724, - 10.474, - 10.816, - 1.132, - 1.316, - 0.885, - 1.2, - 0.909, - 1.094, - 5.468, - 5.748, - 1.116, - 1.32, - 3.149, - 3.357, - 0.987, - 1.222, - 0.705, - 1.074, - 0.698, - 0.883, - 6.556, - 6.778, - 3.185, - 3.383, - 5.732, - 5.943, - 6.886, - 7.162, - 0.791, - 1.019, - 1.811, - 2.003, - 5.652, - 5.923, - 8.337, - 8.571 - ], - "yaxis": "y" + "cell_type": "code", + "execution_count": null, + "id": "54fdd92b-895b-47b8-bb7b-e6976bb0b80b", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "6cc9bd1172344b4f9ba5c841d87db51e", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/15 [00:0037.5degC or reported fever in the previous 48 h, and positive malaria rapid diagnostic test) in children enrolled in the active case detection cohort in the 2 years after net distribution. Visits of children in the cohort at health facilities were monitored and the results of malaria rapid diagnostic tests and any treatment given were recorded. However, it was difficult to assess with certainty if malaria rapid diagnostic tests were used only if the child was symptomatic (as our protocol specified); therefore, the passive data was not included in the primary analyses.\n", + "\n", + "Secondary clinical outcomes were malaria infection prevalence in all age groups and anaemia (defined as haemoglobin concentration <10 g/dL) prevalence in children aged 5 years or younger at 6 months and 18 months after net distribution.\n", + "\n", + "Type and duration of adverse events related to usage of nets were recorded using a prespecified questionnaire at each cohort visit and during net usage and cross-sectional surveys. Data on hospitalisation and death in children in the cohort were collected by interviewing the child's guardian and reviewing the hospital record, following receipt of consent.\n", + "\n", + "The primary entomological outcome was entomological inoculation rate, measured as the mean number of _Plasmodium_ spp infective malaria vectors collected per person per night measured indoors and outdoors. Secondary entomological outcomes were vector density (number of mosquitoes caught per person per night), sporozoite rate, and species composition. Centers for Disease Control and Prevention bottle bioassays were performed by exposing adult female _An gambiae_, collected as larvae, to alpha-cypermethrin for 30 min (1, 2, 5, and 10 times the diagnostic dose), and to chlorfenrapy (100 mg/bottle) and pyriproxyfen (100 mg/bottle) for 60 min each year.(r) Mortality was recorded at 30 min for all four doses of alpha-cypermethrin (insectidic resistance intensity measurement), and at 24, 48, and 72 h after exposure for chlorfenapyr. The reduction in fecundity rate induced by pyriproxyfen relative to unexposed mosquitoes was assessed by ovarian dissection, 3 days after pyriproxyfen exposure. Other outcomes included in the protocol (parity, resting behaviour, survivorship, and other resistance measures) are still to be analysed and will be published elsewhere.\n", + "\n", + "header: Statistical analysis\n", + "\n", + "The sample size calculations for epidemiological data collection were calculated using the method of Hayes and Moulton.(r) The study was designed to detect a 30% difference in malaria case incidence, assuming a control group incidence of 1 malaria case per child-year and a coefficient of variation of 0-3 between clusters. This design required 20 clusters per group and 25 (20+5 allowing for loss to follow-up) children per cluster followed up for 2 years to give 80% power. Due to the delay in enrolment, which resulted in a shorter follow-up time, the number of children per cluster was increased to 30 (1800 children total). This sample size calculation includes adjustment for multiple testing (allowing for the three groups) using a Bonferroni-corrected two-sided a of 2.5%.\n", + "\n", + "For malaria infection prevalence, it was assumed that the prevalence in the reference group was 40%, with a coefficient of variation between clusters of 0-3. With 72 individuals per cluster, the study had 80% power to detect a 30% lower prevalence in the intervention groups compared with the reference group, using a Bonferroni-corrected a for multiple comparisons.\n", + "\n", + "The primary intention-to-treat analysis was a comparison of incidence of clinical malaria episodes between each dual active-ingredient LLIN group and the\n", + "\n", + "header: Abstract\n", + "\n", + "Efficacy of pyriproxyfen-pyrethroid long-lasting insecticidalnets (LLINs) and chlorfenapyr-pyrethroid LLINs compared with pyrethroid-only LLINs for malaria control in Benin: a cluster-randomised, superiority trial\n", + "\n", + "Manfred Accomphesi\n", + "\n", + "\n", + "Background New classes of long-lasting insecticidal nets (LLINs) combining mixtures of insecticides with different modes of action could put malaria control back on track after rebounds in transmission across sub-Saharan Africa. We evaluated the relative efficacy of pyriproxyfen-pyrethroid LLINs and chlorfenapyr-pyrethroid LLINs compared with standard LLINs against malaria transmission in an area of high pyrethroid resistance in Benin.\n", + "\n", + "header: Results\n", + "\n", + "Between May 23 and June 24, 2019, 53854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. The households were delineated into 61 clusters, with one subsequently excluded due to extensive seasonal flooding (figure). Baseline cross-sectional epidemiological and entomological surveys were conducted between October and November, 2019 (table 1). The malaria infection prevalence was 43 5% (1924 of 4428 participants, cluster range 15 1-72 796) and population self-reported LLIN usage was 95 7% (3913 of 4088 participants). Cluster demographics and malaria prevalence were similar between groups (table 1). Entomological inoculation rate was 0 68 _Plasmodium_ spp infective bites per person per night (cluster range 0 00-3 80) indoors and 0 26 per person per night (0 00-1 88) outdoors.\n", + "\n", + "Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54 300 households in an updated census, with 97 1% of households receiving at least one net per household. Active ingredients in the new nets were found to be within or higher than the acceptable target limits depending on LLIN brand (appendix p 4). Study net usage was highest (5532 [76 8%] of 7206 participants) at 9 months after distribution, following a second hang-up campaign, but had decreased by 24 months (4032 [60 6%] of 6654). Study net coverage and usage indicators were similar between study groups up to 18 months after net distribution. At 24 months, pyriproxyfen-pyrethroid LLIN usage and ownership was the lowest (appendix pp 5-6). Use of any type of LLIN (study LLINs and others) remained greater than 80% up to 24 months after distribution (appendix p 7).\n", + "\n", + "In the 2283 households that were randomly selected for post-intervention cohort follow-up, 3129 children were eligible, 1829 of whom were randomly selected, and consent was obtained for 1806 (figure). Among the 2849 and 2771 households randomly selected at 6 months and 18 months after LLIN distribution for the malaria prevalence cross-sectional surveys, 4781 (85 1%) of 5620 households consent, with a similar proportion in the two surveys. The remaining households were either not available during the visit (775 [13 8%] of) or declined to participate (64 [1 1%]; appendix p 8).\n", + "\n", + "Children aged 6 months-9 years enrolled for active case detection were monitored for 21 months, for a total follow-up time of 2645 4- child-years at risk. Loss to follow-up was similar between groups (figure). At enrolment, children were balanced on age, sex, and net usage. During the 21-month follow-up period, we detected 2135 malaria cases through active case detection (table 2). The mean malaria case incidence over 21 months of follow-up was 1 03 cases per child-year (95% CI 0 96-1 09) in the pyrethroid-only LLIN reference group, 0 84 cases per child-year (0 78-70 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 86, 95% CI 0 65-1 46; p = 0 - 28), and 0 56 cases per child-year (0 51-0 64) in the chlorfenapry-pyrethroid LLIN group (HR 0 54, 95% CI 0 - 42-0 70; p < 0 0001; table 2). The strongest effect was observed in the first year of follow-up in the chlorfenapry-pyrethroid group (HR 0 46, 95% CI 0 30-0 72; p = 0 - 0005; table 2). When combining active and passive visits, the number of cases detected nearly doubled; however, the effect size in comparison to the reference group was similar for both intervention nets (appendix p 9).\n", + "\n", + "Malaria infection prevalence was 23 5% (1037 of 4409 participants) at 6 months and 34 9% (1554 of 4450) at 18 months after net distribution (table 3). There was strong evidence for a reduction of malaria infection prevalence in the chlorfenapry-pyrethroid LLIN group at 6 months (15 7%; odds ratio [OR] 0 47, 95% CI 0 32-0 69; p = 0 0002) and at 18 months (27 9%; OR 0 60 - 60, 0 - 43-0 85; p = 0 004) compared with the reference group (28 - 0% at 6 months and 38 7% at 18 months; table 3). In the pyriproxyfen-pyrethroid group, there was no evidence for a reduction in malaria prevalence at 6 months (26 9%; OR 0 - 92, 95% CI 0 63-1 35; p = 0 - 67) or 18 months (38 2%; OR 0 97 0, 0 69-1 37; p = 0 87) compared with the reference group. Results were similar for the per-protocol analysis (appendix p 1). There was no evidence of a reduction in moderate to severe anaemia prevalence in either intervention group (table 3). The post-hoc analysis adjusting for covariates used in the randomisation did not change the interpretation of the results (appendix pp 12-13).\n", + "\n", + "\n", + "Adverse events related to study nets were reported in 528 (45-496) of 1162 participants surveyed at 1 month after net distribution. The highest proportion of adverse events was reported in the pyrethroid-only LLIN group (247 [63-8%] of 387 participants), followed by the pyriproyfen-pyrethroid LLIN group (212 [52-5%] of 404) and then the chlorfenapy-pyrethroid LLIN group (69 [18-6%] of 371). Facial burning (392 [33-7%] of 1162 participants), and skin irritation or itchiness (244 [20-9%]) were the most common adverse events in all groups. Adverse events were rare in all three groups at all later timepoints (appendix P 14-15). We recorded 44 serious adverse events (including three deaths) in the cohort children, with 32 (72-7%) documented as severe malaria (11 cases in the pyriproyfen-pyrethroid LLIN group, ten in the chlorfenapy-pyrethroid LLIN group, and 11 in the pyrethroid-only LLIN group). No serious adverse events related to net use were reported.\n", + "\n", + "A total of 259265 mosquitoes were collected over 3840 collection nights indoors and outdoors, of which 20-9% (29814 from indoors and 24436 from outdoors) were malaria vectors, with _An gambiae_ sensu that the most predominant. Overall, indoor entomological inoculation rate was lower in both intervention groups than in the reference group, with a mean entomological inoculation rate of 0-90 infectious bites per night per person in the chlorfenapy-pyrethroid LLIN group (rate ratio [RR] 0-34, 95% CI 0-18-0-62; p=0-0005), 0-12 in the pyriproyfen-pyrethroid LLIN group (RR 0-42, 0-2-3-0-74; p=0-0028), and 0-28 in the pyrethroid-only LLIN group (table 4). Mean indoor vector density appeared to be lower in the chlorfenapy-pyrethroid LLIN group (10-18 bites per person per night, density ratio 0-44, 95% CI 0-2-30-84; p=0-014), and in the pyriproyfen-pyrethroid LLIN group (13-6 bites per person per night, density ratio 0-58, 0-30-1-12; p=0-011) than in the reference group (23-0 bites per person per night, but the latter difference was not statistically significant (table 4). Adjusting for baseline vector density in the models gave similar results (appendix P 16). There was no significant difference in sporozoite rate in any of the intervention groups compared with the reference group (table 4).\n", + "\n", + "Reduction in outdoor entomological inoculation rate compared with the reference group was observed only in the chlorfenapy-pyrethroid LLIN group (RR 0-30, 95% CI 0-13-0-67; p=0-0035; appendix P 17). There was very weak evidence for a reduction in outdoor entomological inoculation rate in the pyriproyfen-pyrethroid LLIN group compared with the pyrethroid-only group (RR 0-58, 0-30-1-13; p=0-11). Similar effects were observed for outdoor vector density for both intervention nets (appendix P 17).\n", + "\n", + "Post-intervention pyrethrold resistance intensity was high across the study groups in _An gambiae_ sensu lato, with mean mortality of 85% or less after exposure to 10 times the diagnostic concentrations of alpha-cypentrohin in year 2 (appendix P 18). No resistance to chlorfenapy was observed during either year after net distribution (appendix P 18). Exposure of _An gambiae_ sensu lato to pyriproyfen led to a high reduction in fecundity rate relative to unexposed control mosquitoes over the 2 years after net distribution (73-2%, 95% CI 62-2-82-4 in year 1, and 76-6%, 66-6-84-9 in year 2).\n", + "\n", + "header: Implications of all the available evidence\n", + "\n", + "Given the positive findings, both in Benin and Tanzania, for chlorfenapyr-pyrethroid LLINs, they are likely to become the first WHO-recommended LLINs impregnated with an insecticide class other than pyrethroids. The absence of superior efficacy of pyrioxyfen-pyrethroid LLINs compared with standard pyrethroid-only LLINs is consistent with the results of the previous Tanzania study and calls into question the role of the current pyrioxyfen-pyrethroid LLINs in future malaria vector strategies.\n", + "\n", + "header: Role of the funding source\n", + "\n", + "The funders of the study had no role in study design, data collection, data analysis, data interpretation, writing of the report, or in the decision to submit for publication.\n", + "\n", + "header: Procedures\n", + "\n", + "The nets tested in the trial were: Royal Guard (Disease Control Technologies, Greer, SC, USA), polyethylene netting (I20 deniers incorporating 220 mg/m2 pyriproyfen and 220 mg/m2 alpha-cypermethrin); Interceptor G2 (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 chlorfenapyr and 100 mg/m2 alpha-cypermethrin); and the reference net, Interceptor (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 of alpha-cypermethrin). Nets were distributed in collaboration with the Benin National Malaria Control Program. Households were asked to collect their nets from a central point and received one net per every two residents in their household, rounded up for odd numbers. Nets already in houses were not removed but households were encouraged to use the new study nets. Additionally, net hang-up campaigns to encourage net use took place at 1 month and 7 months after distribution. Net coverage surveys to assess net ownership and usage were done at 1, 9, and 24 months after distribution. Throughout the follow-up period, children enrolled in the analysis cohort and participants enrolled in the cross-sectional surveys were also asked about their net use.\n", + "\n", + "Insecticide content at baseline was assessed on 30 randomly selected new nets per LLIN brand, by gas chromatography with Flame Ionisation Detection, at the\n", + "Centre Wallon de Recherches Agronomiques, Gembloux, Belgium. The insecticidal and physical durability of the study nets is being assessed in a separate study.\n", + "\n", + "Due to the COVID-19 pandemic, there was a 3-month gap between the distribution of the nets and the enrolment of children in the cohort. At enrolment and at 1 year after distribution (April, 2021), children were treated with antimalarial drugs (atremether-lumefantrinity to clear any underlying infection. The cohort was monitored from August, 2020, to April, 2022, a 21-month period, which encompassed the first 2 years after net distribution. Study nurses visited children every 2 weeks during the transmission season (April-October) and every 1 month in the dry season (November-March). At each visit, children were clinically examined and if they were febrile or had a history of fever in the past 48 h, they were tested for malaria using a malaria rapid diagnostic test. If the test was positive, the child was treated with artemether-lumefantrine, according to national guidelines.\n", + "\n", + "During cross-sectional surveys, all participants were tested for malaria using a malaria rapid diagnostic test and received treatment if the test was positive, and children younger than 5 years were tested for anaemia. Information regarding net ownership and usage, and other household-level indicators were collected at the same time.\n", + "\n", + "Entomological monitoring was also delayed and took place every 3 months between June, 2020, and April, 2022. Volunteers recruited from study clusters collected mosquitoes that landed on their legs between 1900 h and 0700 h for 1 night at four randomly selected houses in each cluster at each timepoint. Mosquitoes were morphologically identified to species and a subsample of _Anopheles_ spp was tested for molecular species using PCR.(r) A random sample of _Anopheles_ spp (up to 30% from each nightly catch in each cluster) were tested for sporozoites using the ELISA circumsporozoite protein technique.(r)\n", + "\n", + "header: Discussion\n", + "\n", + "This trial assessed the efficacy of two dual active-ingredient LLINs in an area of Benin with malaria vectors that are highly resistant to pyrethroids and found that chlorfenapy-pyrethroid LLINs provided significantly better protection against malaria for up to 2 years after net distribution compared with pyrethroid-only LLINs. Children aged 6 months-10 years living in clusters that received chlorfenapy-pyrethroid LLINs had a 46% lower incidence of malaria over 2 years after LLIN distribution;\n", + "\n", + "\\begin{table}\n", + "\\begin{tabular}{c c c c c c c c c c} & **Malaria infection** & \\multicolumn{6}{c}{**Anaemia in children younger than 5 years**} \\\\ \\hline n/N & Prevalence & OR & 95\\% CI & p valuea & n/N & Prevalence & OR & 95\\% CI & p valuea \\\\ \\hline\n", + "**6 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 412/1471 & 28\\(\\,\\)0\\% & 1 (ref) & – & – & 992/41 & 41\\(\\,\\)1\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 394/1463 & 26\\(\\,\\)9\\% & 0\\(\\,\\)92 & 0\\(\\,\\)\n", + "\n", + "63\\(\\,\\)45 & 0\\(\\,\\)67 & 117/250 & 46\\(\\,\\)8\\% & 124 & 0.71–218 & 0.45 \\\\ LLIN group & & & & & & & & & \\\\ Chlorfenapy-pyrethroid & 231/1475 & 157\\(\\,\\)\\% & 0\\(\\,\\)47 & 0\\(\\,\\)32\\(\\,\\)0\\(\\,\\)669 & 0\\(\\,\\)0002 & 82/241 & 34\\(\\,\\)0\\% & 0.71 & 0.40–126 & 0.24 \\\\ LLIN group & & & & & & & & & \\\\\n", + "**18 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 576/14/849 & 38\\(\\,\\)7\\% & 1 (ref) & – & – & 118/25 & 46\\(\\,\\)8\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 564/14/83 & 38\\(\\,\\)2\\% & 0\\(\\,\\)97 & 0\\(\\,\\)69\\(\\,\\)13\\(\\,\\)07 & 0\\(\\,\\)87 & 108/245 & 44\\(\\,\\)1\\% & 0.84 & 0.40–179\n", + "\n", + "\n", + "participants of any age had 53% lower odds of malaria infection at 6 months and 40% lower odds at 18 months after LLIN distribution, and were exposed to a 66% reduction in entomological inoculation rate compared with those living in clusters that received pyrethroid-only LLINs. Similar gains were not observed with the pyriproxyfen-pyrethroid LLIN, with a small reduction in malaria incidence in the first year of the study that was attenuated in year 2, and no effect on malaria infection prevalence in either year, compared with the pyrethroid-only reference group. However, a 58% reduction in indoor entomological inoculation rate was detected with the pyriproxyfen-pyrethroid LLIN. Both dual active-ingredient LLINs provided a similar safety profile compared with standard pyrethroid-only LLINs, with short-lasting skin irritation and facial burning (commonly associated with the pyrethroid alpha-Cybermethrin) most frequently reported in participants using pyrethroid-only LLINs and pyriproxyfen-pyrethroid LLINs. A similar observation has been reported in another randomised controlled trial evaluating the same LLINs, and this is likely to be associated with the high concentration of alpha-Cybermethrin in those nets compared with the chlorfenapy-pyrethroid LLINs.\n", + "\n", + "To our knowledge, this is the second cluster-randomised trial to provide strong evidence of increased efficacy of chlorfenapy-pyrethroid LLINs relative to pyrethroid-only LLINs for malaria control in areas with pyrethroid-resistant vectors. Chlorfenapyr insecticide on nets has already shown improved control of pyrethroid-resistant _An gambiae_ in laboratory and semi-field experimental huts against resistant malaria vectors.3- The previous trial in Tanzania reported a malaria case incidence reduction of 44%, a 55% decrease in odds of malaria prevalence, and 85% reduction in entomological inoculation rate compared with the pyrethroid-only group, consistent with these results, despite the differing malaria vector populations and intensity of pyrethroid resistance in the mosquitoes.4 In both trials, per-protocol analyses suggested that individuals living in the chlorfenapy-pyrethroid clusters benefited regardless of whether they were using a study net, suggesting a community effect of the net, which was likely to be obtained by the overall reduction of mosquito density, which remained considerably lower than in the pyrethroid-only group in both years of this trial after net distribution. Community effect is also indicated by the reduction in both indoor and outdoor entomological indices in the chlorfenapy-pyrethroid group in the present study.\n", + "\n", + "Similar to the trial in Tanzania,4 the pyriproxyfen-pyrethroid LLINs we tested did not provide additional protection against malaria infection or disease compared with pyrethroid-only LLINs. However, there was evidence of an effect on indoor transmission, with the strongest effect seen in the first year after net distribution. Tino and colleagues5 have previously reported a 12% reduction in malaria incidence and 49% reduction in entomological \n", + "inoculation rate with a pyriproxyfen-pyrethroid LLIN compared with pyrethroid-only LLINs over 18 months in a stepped-wedge randomised trial in Burkina Faso. The different study design, length of follow-up, and brand of net might explain the differences seen between the two studies. In Benin, laboratory and semi-field experimental hut studies have shown the superior efficacy of pyriproxyfen-pyrethroid nets on entomological indicators compared with standard pyrethroid-only LLINs,2,3 and are consistent with the decrease in indoor vector density observed in our trial. However, the decrease in indoor vector density did not translate into significant disease reduction, suggesting that a larger effect on malaria transmission (entomological inoculation rate) is crucial to provide community protection. Although lower net usage in the pyriproxyfen-pyrethroid LLIN group could have partially contributed to the lack of effect, we are also assessing textile durability, sterilisation effects, and chemical content of pyriproxyfen-pyrethroid LLINs to fully understand these results.\n", + "\n", + "With several trials now showing the superior efficacy of next-generation LLINs over pyrethroid-only nets, the importance of developing new active ingredients to use on nets in the future is brought to the fore. The distribution of next-generation LLINs across sub-Saharan Africa has already begun, with the development of the brands of chlorfenapry-pyrethroid nets underway,3 as well as the development of chlorfenapry product formulations for indoor residual spraying.3 Although chlorfenapry-pyrethroid nets offer a superior alternative to pyrethroid-only nets in areas of pyrethroid resistance, to preserve their effectiveness optimal resistance-management strategies should be used. There was no evidence of the development of resistance to chlorfenapry during the 2 years of this trial; however, the wide-scale deployment of one type of insecticide risks the rapid development of resistance, which could result in a similar situation to the current widespread resistance to pyrethroids. The nets should be deployed ideally alongside other insecticides as part of a strategy aimed to reduce selection pressure for development of resistance in mosquito vectors. Given the significant effect of the pyriproxyfen-pyrethroid LLINs on malaria transmission during the first year after net distribution, additional studies are necessary to evaluate the potential value of active ingredients such as pyriproxyfen, which are not primarily intended to kill resistant adult mosquitoes but rather to sterilise them. There might still be a role for these hormone growth-regulator insecticides in combination with other active ingredients for net treatment in long-term resistance management.\n", + "\n", + "If WHO policy recommendations are made on the basis of this trial's results, future chlorfenapry-pyrethroid nets might not have to undergo the rigorous trial testing that Interceptor G2 has. Caution should, however, be taken to assess the comparative efficacy, quality, and durability of the second-in-class chlorfenapry-pyrethroid nets as they might use different concentrations of chlorfenapry, different pyrethroids, or different net materials. Considering the time and resources required to generate evidence of epidemiological effect using randomised trials, non-inferiority experimental hut trials, recently proposed by WHO,3 might be a useful alternative for second-in-class chlorfenapry-pyrethroid LLINs. Further work to investigate the capacity of such entomological studies to predict the performance of the trial nets against clinical malaria is ongoing.3\n", + "\n", + "Footnote 3: endnote: [https://www.thelanct.com/Vol.401](https://www.thelanct.com/Vol.401). February 11, 2023\n", + "\n", + "Our study has some limitations. First, net ownership and use were high throughout the study; however, this did not always equate to study net use, which was approximately 60% at 2 years after net distribution, with overall usage of greater than 80%. Similar findings have been observed in other bednet trials, and probably indicate populations choosing to discard damaged nets when other nets are readily available. Second, the three types of nets were not completely identical and differences in textile material and size might have resulted in differential net usage between the groups. As our net use indicator was primarily self-reporting, it is also possible that net usage was overestimated. Third, our primary measure of incidence was based on active detection, involving visits every 2 weeks or every month. The passive data collected alongside the trial suggests that this frequency of visit resulted in some cases being missed, meaning the absolute effect of the nets might be greater than reported here. However, the relative effect of the nets remained similar when the active and passive data were combined. Finally, cost-effectiveness was not assessed; however, the trial in Tanzania' showed that dual active-ingredient LLINs can be highly cost-effective and even cost-saving compared with pyrethroid-only LLINs when providing sufficient protection.\n", + "\n", + "New classes of vector control interventions currently require clinical trial evaluation in two different geographical settings, after 24 months of community use.4 Currently, the only class of next-generation LLIN to receive a WHO recommendation are the PBO synergism nets. However, previous publications have shown concerns about the durability of these nets.5 This trial provides the second key evidence for the effectiveness of chlorfenapry-pyrethroid nets in an area with pyrethroid-resistant vectors and will therefore support a WHO policy recommendation. However, the effect of the nets was reduced in the second year of the trial, and there is no evidence for the efficacy of the nets in their third year of use. Many studies report that the durability of nets is much less than the 3 years required to be designated as long lasting.5 The next-generation LLINs might face the same problems of fabric integrity and durability of insecticidal content unless standards of manufacture are improved. Different channels of distribution (eg, school-based, antenatal care visits, or expanded programme immunisation visits) could play a key role in maintaining high levels of net use in communities.5\n", + "Although generating this evidence to support a WHO recommendation for another class of bednet is a key turning point in malaria control, without new insecticides and new ways to deploy them, we risk repeating the mistakes of the past. Now is the time for more innovation and less complacency.\n", + "\n", + "header: Study design and participants: Randomisation and masking\n", + "\n", + "We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (1:1:1), to receive nets containing either pyriproxyfen and alpha-cypermethrin (pyrethroid), chlorfenapyr and alpha-cypermethrin, or alpha-cypermethrin only (reference). Restricted randomisation was used to ensure balanced cluster allocation between study groups with respect to population size, malaria infection prevalence (measured in the baseline survey), district (n=3), and socioeconomic status.\n", + "\n", + "To mask the net types from the participants and the field workers, the nets were designed to look as similar as possible. Each net was rectangular, was requested to be the same size (1-8 m length, 1-9 m width, and 1-8 m height), and blue. To differentiate the nets in the field, a colour-coded loop was attached to the net. All data analyses were performed masked.\n", + "\n", + "header: Methods\n", + "\n", + "We conducted a cluster-randomised, superiority trial in Zou Department, Benin. Clusters were villages or groups of villages with a minimum of 100 houses. We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (I:1:1): to receive nets containing either pyriproxyfen and alpha-Cypermethrin (pyrethroid), chlorfenapyr and alpha-Cypermethrin only (reference). Households received one LLIN for every two people. The field team, laboratory staff, analyses team, and community members were masked to the group allocation. The primary outcome was malaria case incidence measured over 2 years after net distribution in a cohort of children aged 6 months-10 years, in the intention-to-treat population. This study is ongoing and is registered with ClinicalTrials.gov, NCT03931473.\n", + "\n", + "Findings Between May 23 and June 24, 2019, 53 854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54030 households in an updated census. A cross-sectional survey showed that study LLIN usage was highest 9 months after distribution (5532 [76 * 986] of 7206 participants), but decreased by 24 months (4032 [60 * 696] of 6654). Mean malaria incidence over 2 years after LLIN distribution was 1-03 cases per child-year (95% CI 0 * 96-1 * 09) in the pyrethroid-only LLIN reference group. 0 * 84 cases per child-year (0.78-0 * 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 * 86, 95% CI 0 * 65-1* 14; p=0 * 28), and 0 * 56 cases per child-year (0 * 51-0 * 61) in the chlorfenapyr-pyrethroid LLIN group (HR 0 * 54, 95% CI 0 * 42-0 * 70; p<0 * 0001).\n", + "\n", + "Interpretation Over 2 years, chlorfenapyr-pyrethroid LLINs provided greater protection from malaria than pyrethroid-only LLINs in an area with pyrethroid-resistant mosquitoes. Pyriproxyfen-pyrethroid LLINs conferred protection similar to pyrethroid-only LLINs. These findings provide crucial second-trial evidence to enable WHO to make policy recommendations on these new LLIN classes. This study confirms the importance of chlorfenapyr as an LLIN treatment to control malaria in areas with pyrethroid-resistant vectors. However, an arsenal of new active ingredients is required for successful long-term resistance management, and additional innovations, including pyriproxyfen, need to be further investigated for effective vector control strategies.\n", + "\n", + "header: Contributions\n", + "\n", + "NP, JC, and CN conceived and designed the study, with contributions from MR, IK, LAM, and MCA, JC and MA led the development of the analysis plan, with input from BA, Aso, and NP, MA, CA, JC, NP, FT, and MCA coordinated the trial implementation with local and national authorities, RA, and AO-H. MA, BF, HA, Aso, and LA led the data collection in the field with and Aso, and AP, each of them, MCA, JC, and NP and NP. Also, BC, BA, and KAB led the molecular laboratory work.\n", + "\n", + "header: Methods\n", + "\n", + "We conducted a three-group, cluster-randomised, superiority trial in three districts (Cove, Zagnanado, and Ouinhi) in Zou Department, central Benin. Malaria is highly endemic in the region, with a peak during the wet season (May-October). The main vector control strategy in the study area is use of pyrethroid-only LLINs distributed en masse once every 3 years, and through routine service delivery by antenatal clinics and vaccination programmes. The primary vectors in the setting are _Anopheles coluzzi_ and _Anopheles gambiae_. There is a high intensity of pyrethroid resistance in the main local vector populations.11\n", + "\n", + "A demographic census of all 123 villages in the study area was done in June, 2019. Clusters consisted of villages, or several villages. To reduce contamination between study groups, clusters consisted of a core (minimum 100 households) surrounded by a buffer, ensuring that core areas of neighbouring clusters were separated by at least 1000 m. Households in the buffer and core received the intervention, but measurement of outcomes only took place in core areas. A detailed description of the study protocol is published elsewhere.\"\n", + "\n", + "Ethics approval was obtained from the Benin Ministry of Health ethics committee (6/30/MS/DC/SGM/DRFMT/CNERS/SA), the London School of Hygiene & Tropical Medicine ethics committee (16237), and the WHO Research Ethics Review Committee (ERC.0003153). The trial was independently monitored by a data safety monitoring board and a trial steering committee.\n", + "\n", + "Epidemiological effect was estimated through measuring malaria case incidence in the 2 years after net distribution by active case detection in a cohort of children. A cohort of approximately 30 children aged 6 months-9 years randomly selected (by simple random sampling using a random number generator) from each cluster (1800 in total) was enrolled in July, 2020. Children were eligible for inclusion if they were permanent residents in the cluster, had no serious illnesses, and written informed consent was obtained from their guardians.\n", + "\n", + "Malaria infection prevalence (in all ages) was measured by cross-sectional surveys at 6 months and 18 months after net distribution. 72 individuals residing in the core of each cluster were randomly selected (using a random number generator) from the census for each cross-sectional survey. Each prevalence surveyed collected data on malaria infection, measured using malaria rapid diagnostic tests (CareStart malaria HRP2/PLDH [pf/pan] combo, DiaSy, UK), net ownership and use, sex, and household assets (as a proxy for socioeconomic status).\n", + "\n", + "Entomological effects were measured using human landing catches in four randomly selected houses every 3 months in each cluster. Insecticide resistance intensity was measured in two clusters per group (six clusters total) at baseline and in each follow-up year.\n", + "\n", + "Written informed consent was obtained from all participants, or from guardians for participants younger than 18 years. Assent was sought for children aged between 10 and 18 years. Written consent was also obtained from volunteer mosquito collectors who were all aged 18 years or older and who were vaccinated against yellow fever. All participation was voluntary, and participants could withdraw at any time. Study investigators sought consent in French or local languages.\n", + "\n", + "header: Table 1: Baseline characteristics\n", + "footer: Data are n or %; n/N unless otherwise stated. EIR=entomological inoculation rate. LLIN=long-lasting insecticidal net. *Proportion of households in the poorest tercile based on the wealth index of the entire study area. †Anaemia defined as haemoglobin concentration of <10 g/dL. ‡Malaria vectors included Anopheles gambiae, Anophelesfunestus, and Anopheles nili\n", + "columns: ['Unnamed: 0_level_0 - Clusters', 'Pyriproxyfen-pyrethroid LLIN group - Clusters', 'Chlorfenapyr-pyrethroid LLIN group - Clusters', 'Pyrethroid-only LLIN group - Clusters']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of clusters\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"20\",\"Pyrethroid-only LLIN group - Clusters\":\"20\"},\"1\":{\"Unnamed: 0_level_0 - Clusters\":\"Total population in core and buffer areas\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"74822\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"70989\",\"Pyrethroid-only LLIN group - Clusters\":\"69239\"},\"2\":{\"Unnamed: 0_level_0 - Clusters\":\"Mean population in core area of clusters (range)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"1096.1 (225-4524)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"1120.5 (243-5040)\",\"Pyrethroid-only LLIN group - Clusters\":\"1058.1 (252-5217)\"},\"3\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of people per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"4.0 (2.3)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"3.9 (2.3)\",\"Pyrethroid-only LLIN group - Clusters\":\"4.1 (2.4)\"},\"4\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of sleeping spaces per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"2.2 (1.2)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"2.1 (1.1)\",\"Pyrethroid-only LLIN group - Clusters\":\"2.2 (1.2)\"},\"5\":{\"Unnamed: 0_level_0 - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyrethroid-only LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\"},\"6\":{\"Unnamed: 0_level_0 - Clusters\":\"Low socioeconomic status*\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"35.8%; 529\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"36.2%; 533\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"29.0%; 431\\/1487\"},\"7\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN ownership (at least one LLIN in the household)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"96.4%; 1426\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"97.1%; 1431\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"95.1%; 1415\\/1488\"},\"8\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN usage in all age groups the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"95.8%; 1312\\/1370\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"94.9%; 1258\\/1326\",\"Pyrethroid-only LLIN group - Clusters\":\"96.5%; 1343\\/1392\"},\"9\":{\"Unnamed: 0_level_0 - Clusters\":\"Malaria infection prevalence in all age groups\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"43.1%; 636\\/1475\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"40.7%; 598\\/1468\",\"Pyrethroid-only LLIN group - Clusters\":\"46.5%; 690\\/1485\"},\"10\":{\"Unnamed: 0_level_0 - Clusters\":\"Anaemia prevalence in children aged 6 months-4 years\\u2020\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"53.3%; 136\\/255\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"53.3%; 131\\/246\",\"Pyrethroid-only LLIN group - Clusters\":\"50.2%; 122\\/243\"},\"11\":{\"Unnamed: 0_level_0 - Clusters\":\"Entomological characteristics\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Pyrethroid-only LLIN group - Clusters\":\"Entomological characteristics\"},\"12\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night indoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"32.9 (28.9)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"21.6 (21.0)\",\"Pyrethroid-only LLIN group - Clusters\":\"29.2 (25.3)\"},\"13\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night outdoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20.3 (17.6)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"16.4 (17.4)\",\"Pyrethroid-only LLIN group - Clusters\":\"20.6 (20.2)\"},\"14\":{\"Unnamed: 0_level_0 - Clusters\":\"Indoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.62 (0.93)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.48 (0.65)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.96 (1.18)\"},\"15\":{\"Unnamed: 0_level_0 - Clusters\":\"Outdoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.27 (0.45)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.17 (0.44)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.33 (0.45)\"},\"16\":{\"Unnamed: 0_level_0 - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyrethroid-only LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\"},\"17\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of children younger than 5 years\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"52.3%; 316\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"50.6%; 304\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"53.6%; 322\\/601\"},\"18\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of female children\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"47.2%; 285\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"48.4%; 291\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"48.8%; 293\\/601\"},\"19\":{\"Unnamed: 0_level_0 - Clusters\":\"Net usage the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"99.0%; 598\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"98.7%; 593\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"99.2%; 596\\/601\"}}\n", + "\n", + "header: Methods\n", + "\n", + "Data collected for the study, including deidentified participant data and data dictionaries, might be made available at the end of the third year of trial follow-up upon reasonable request to the corresponding author.\n", + "\n", + "header: Funding UNITAID, The Global Fund.\n", + "\n", + "Pyrethroid-treated long-lasting insecticidal nets (LLINs) are the main malaria prevention intervention in sub-Saharan Africa and have been the major contributor to the estimated 1 * 5 billion malaria cases and 7 * 6 million malaria deaths averted in the past two decades. However, since 2015, the decline in malaria cases has stalled, and between 2019 and 2020, a rebound in malaria transmission was reported in some areas of sub-Saharan Africa.1 This rebound is likely to be a consequence of the continued spread of resistance to pyrethroid insecticides in malaria-transmitting mosquitoes, coinciding with a plateau in malaria control investment, leading to suboptimal coverage of interventions. Urgent actions are needed to prevent malaria resurgences, which were previously observed in sub-Saharan Africa in the 1980s after malaria control measures were scaled down.2\n", + "In the past 10 years, new insecticide-treated nets containing non-pyrethroid insecticides and insecticide synergists, in combination with pyrethroids, have been shown to be safe and efficacious against malaria mosquito vectors.14 The first net combined a pyrethroid insecticide and the synergistic piperonyl butoxide (PBO) and, following a randomised controlled trial,1 received a WHO policy recommendation in 2017. Other next-generation LLINs have shown encouraging results against resistant vectors in laboratory and small-scale entomological studies.47 One of these nets is a dual active-ingredient LLIN combining a pyrethroid and a pyrrole (chlorfenapyr). Both insecticides lead to mosquito mortality, with chlorfenapyr disrupting the production of cellular energy rather than targeting the nervous system, as pyrethroids do. Another dual active-ingredient LLIN combines a pyrethroid with an insect growth regulator (pyriprosyfen), which leads to sterility in exposed adult mosquitoes.\n", + "\n", + "The first randomised trial of these two products was conducted in Tanzania and showed that the chlorfenapyr-pyrethroid LLINs nearly halved malaria infection over 2 years in villages that received chlorfenapyr-pyrethroid LLINs compared with villages that received pyrethroid-only LLINs. PBO-pyrethroid LLINs were consistently found to be more effective than pyrethroid-only LLINs; however, the duration of the superior effect varied from 12 months to 21 months according to the different trials.\n", + "\n", + "header: Table 2: Malaria case incidence in children aged 6 months–10 years per year of follow-up and overall (including active visits only)\n", + "footer: Each intervention was compared with the pyrethroid-only LLIN group for the same timepoint. LLIN=long-lasting insecticidal net. *A p value of <0·025 was considered significant after Bonferroni correction\n", + "columns: ['Unnamed: 0_level_0 - Overall', 'Number of clinical malaria episodes - Overall', 'Child- years of follow-up - Overall', 'Incidence, cases per child-year (95% Cl) - Overall', 'Hazard ratio - Overall', '95%Cl - Overall', 'p value* - Overall']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"897\",\"Child- years of follow-up - Overall\":\"874.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.03 (0.96-1.09)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"1\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"744\",\"Child- years of follow-up - Overall\":\"883.8\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.84 (0.78-0.90)\",\"Hazard ratio - Overall\":\"0.86\",\"95%Cl - Overall\":\"0.65-1.14\",\"p value* - Overall\":\"0.28\"},\"2\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"494\",\"Child- years of follow-up - Overall\":\"887.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.56 (0.51-0.61)\",\"Hazard ratio - Overall\":\"0.54\",\"95%Cl - Overall\":\"0.42-0.70\",\"p value* - Overall\":\"<0.0001\"},\"3\":{\"Unnamed: 0_level_0 - Overall\":\"Year 1\",\"Number of clinical malaria episodes - Overall\":\"Year 1\",\"Child- years of follow-up - Overall\":\"Year 1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 1\",\"Hazard ratio - Overall\":\"Year 1\",\"95%Cl - Overall\":\"Year 1\",\"p value* - Overall\":\"Year 1\"},\"4\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"267\",\"Child- years of follow-up - Overall\":\"344.4\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.77 (0.69-0.87)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"5\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"211\",\"Child- years of follow-up - Overall\":\"342.7\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.62 (0.54-0.70)\",\"Hazard ratio - Overall\":\"0.83\",\"95%Cl - Overall\":\"0.51-1.35\",\"p value* - Overall\":\"0.46\"},\"6\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"124\",\"Child- years of follow-up - Overall\":\"349.2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.36 (0.30-0.42)\",\"Hazard ratio - Overall\":\"0.46\",\"95%Cl - Overall\":\"0.30-0.72\",\"p value* - Overall\":\"0.0005\"},\"7\":{\"Unnamed: 0_level_0 - Overall\":\"Year 2\",\"Number of clinical malaria episodes - Overall\":\"Year 2\",\"Child- years of follow-up - Overall\":\"Year 2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 2\",\"Hazard ratio - Overall\":\"Year 2\",\"95%Cl - Overall\":\"Year 2\",\"p value* - Overall\":\"Year 2\"},\"8\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"630\",\"Child- years of follow-up - Overall\":\"529.9\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.19 (1.10-1.29)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"9\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"533\",\"Child- years of follow-up - Overall\":\"541.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.98 (0.90-1.07)\",\"Hazard ratio - Overall\":\"0.88\",\"95%Cl - Overall\":\"0.68-1.13\",\"p value* - Overall\":\"0.31\"},\"10\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"370\",\"Child- years of follow-up - Overall\":\"538.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.69 (0.62-0.76)\",\"Hazard ratio - Overall\":\"0.57\",\"95%Cl - Overall\":\"0.45-0.73\",\"p value* - Overall\":\"<0.0001\"}}\n", + "\n", + "header: Table 3: Malaria infection and anaemia prevalence in the study population at 6 months and 18 months after net distribution (intention-to-treat analysis)\n", + "footer: Anaemia was defined as a haemogloblin concentration of <10 g/dL. LLIN=long-lasting insecticidal net. OR=odds ratio. *A p value of <0·025 was considered significant after Bonferroni correction\n", + "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution', 'Malaria infection - n/N - 6 months after net distribution', 'Malaria infection - Prevalence - 6 months after net distribution', 'Malaria infection - OR - 6 months after net distribution', 'Malaria infection - 95% Cl - 6 months after net distribution', 'Malaria infection - p value* - 6 months after net distribution', 'Anaemia in children younger than 5 years - n/N - 6 months after net distribution', 'Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution', 'Anaemia in children younger than 5 years - OR - 6 months after net distribution', 'Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution', 'Anaemia in children younger than 5 years - p value* - 6 months after net distribution']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"412\\/1471\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"28.0%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"99\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"41.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"394\\/1463\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"26.9 %\",\"Malaria infection - OR - 6 months after net distribution\":\"0.92\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.63-1.35\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.67\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"117\\/250\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.24\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.71-2.18\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.45\"},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"231\\/1475\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"15.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.47\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.32-0.69\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0002\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"82\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"34.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.71\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.26\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0-24\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - p value* - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"18 months after net distribution\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"576\\/1489\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/252\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"564\\/1478\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.2%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.97\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.69-1.37.\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.87\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"108\\/245\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"44.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.84\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.79\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.65\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"414\\/1483\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"27.9%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.60\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.43-0.85\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0041\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/246\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"48.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.08\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.51-2.28\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.84\"}}\n", + "\n", + "header: Introduction: Added value of this study\n", + "\n", + "To our knowledge, this is the second study aiming to compare the efficacy of the next generation of LLINs combining _p_iprosyfen or chlorfenapyr and pyrethroid versus standard pyrethroid-only LLINs, and the first of its kind to be conducted in west Africa. This trial confirmed the superior efficacy of chlorfenapyr-pyrethroid LLINs, in terms of malaria case incidence, prevalence, and transmission in children, over 2 years of use in the community, in an area of moderate malaria transmission and with high insecticide resistance intensity in malaria vectors, in Benin. However, pyrioxyfen-pyrethroid LLINs did not offer additional protection against malaria outcomes compared with pyrethroid-only LLINs.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Data sharing: Acknowledgments\n", + "\n", + "This trial was funded by a grant to the London School of Hygiene & Tropical Medicine from UNITAD and The Global Fund via the Innovative Vector Control Consortium. This trial is part of a larger project. The New Nets project: We thank the communities from the three study districts (Cow, Zagnanado, Ouinhi), particularly the participants, children and their parents, community health workers, staff in health clinics, and the regional study team. We thank colleagues and staff at the Centre de Recherche Entomologique de Cotonou and those at the National Malaria Control Program. We also thank the trial system committee, the data safety monitoring board, and Charles Dickinson (School of Epidemiology and Public Health, University of Ottawa, Ottawa, ON, Canada) for supporting the mapping and cluster delineation.\n", + "\n", + "header: Methods\n", + "\n", + "Data collected for the study, including deidentified participant data and data dictionaries, might be made available at the end of the third year of trial follow-up upon reasonable request to the corresponding author.\n", + "\n", + "header: Outcomes\n", + "\n", + "The primary outcome was malaria case incidence (infrared frontal temperature >37.5degC or reported fever in the previous 48 h, and positive malaria rapid diagnostic test) in children enrolled in the active case detection cohort in the 2 years after net distribution. Visits of children in the cohort at health facilities were monitored and the results of malaria rapid diagnostic tests and any treatment given were recorded. However, it was difficult to assess with certainty if malaria rapid diagnostic tests were used only if the child was symptomatic (as our protocol specified); therefore, the passive data was not included in the primary analyses.\n", + "\n", + "Secondary clinical outcomes were malaria infection prevalence in all age groups and anaemia (defined as haemoglobin concentration <10 g/dL) prevalence in children aged 5 years or younger at 6 months and 18 months after net distribution.\n", + "\n", + "Type and duration of adverse events related to usage of nets were recorded using a prespecified questionnaire at each cohort visit and during net usage and cross-sectional surveys. Data on hospitalisation and death in children in the cohort were collected by interviewing the child's guardian and reviewing the hospital record, following receipt of consent.\n", + "\n", + "The primary entomological outcome was entomological inoculation rate, measured as the mean number of _Plasmodium_ spp infective malaria vectors collected per person per night measured indoors and outdoors. Secondary entomological outcomes were vector density (number of mosquitoes caught per person per night), sporozoite rate, and species composition. Centers for Disease Control and Prevention bottle bioassays were performed by exposing adult female _An gambiae_, collected as larvae, to alpha-cypermethrin for 30 min (1, 2, 5, and 10 times the diagnostic dose), and to chlorfenrapy (100 mg/bottle) and pyriproxyfen (100 mg/bottle) for 60 min each year.(r) Mortality was recorded at 30 min for all four doses of alpha-cypermethrin (insectidic resistance intensity measurement), and at 24, 48, and 72 h after exposure for chlorfenapyr. The reduction in fecundity rate induced by pyriproxyfen relative to unexposed mosquitoes was assessed by ovarian dissection, 3 days after pyriproxyfen exposure. Other outcomes included in the protocol (parity, resting behaviour, survivorship, and other resistance measures) are still to be analysed and will be published elsewhere.\n", + "\n", + "header: Statistical analysis\n", + "\n", + "The sample size calculations for epidemiological data collection were calculated using the method of Hayes and Moulton.(r) The study was designed to detect a 30% difference in malaria case incidence, assuming a control group incidence of 1 malaria case per child-year and a coefficient of variation of 0-3 between clusters. This design required 20 clusters per group and 25 (20+5 allowing for loss to follow-up) children per cluster followed up for 2 years to give 80% power. Due to the delay in enrolment, which resulted in a shorter follow-up time, the number of children per cluster was increased to 30 (1800 children total). This sample size calculation includes adjustment for multiple testing (allowing for the three groups) using a Bonferroni-corrected two-sided a of 2.5%.\n", + "\n", + "For malaria infection prevalence, it was assumed that the prevalence in the reference group was 40%, with a coefficient of variation between clusters of 0-3. With 72 individuals per cluster, the study had 80% power to detect a 30% lower prevalence in the intervention groups compared with the reference group, using a Bonferroni-corrected a for multiple comparisons.\n", + "\n", + "The primary intention-to-treat analysis was a comparison of incidence of clinical malaria episodes between each dual active-ingredient LLIN group and the\n", + "\n", + "header: Abstract\n", + "\n", + "Efficacy of pyriproxyfen-pyrethroid long-lasting insecticidalnets (LLINs) and chlorfenapyr-pyrethroid LLINs compared with pyrethroid-only LLINs for malaria control in Benin: a cluster-randomised, superiority trial\n", + "\n", + "Manfred Accomphesi\n", + "\n", + "\n", + "Background New classes of long-lasting insecticidal nets (LLINs) combining mixtures of insecticides with different modes of action could put malaria control back on track after rebounds in transmission across sub-Saharan Africa. We evaluated the relative efficacy of pyriproxyfen-pyrethroid LLINs and chlorfenapyr-pyrethroid LLINs compared with standard LLINs against malaria transmission in an area of high pyrethroid resistance in Benin.\n", + "\n", + "header: Implications of all the available evidence\n", + "\n", + "Given the positive findings, both in Benin and Tanzania, for chlorfenapyr-pyrethroid LLINs, they are likely to become the first WHO-recommended LLINs impregnated with an insecticide class other than pyrethroids. The absence of superior efficacy of pyrioxyfen-pyrethroid LLINs compared with standard pyrethroid-only LLINs is consistent with the results of the previous Tanzania study and calls into question the role of the current pyrioxyfen-pyrethroid LLINs in future malaria vector strategies.\n", + "\n", + "header: Study design and participants: Randomisation and masking\n", + "\n", + "We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (1:1:1), to receive nets containing either pyriproxyfen and alpha-cypermethrin (pyrethroid), chlorfenapyr and alpha-cypermethrin, or alpha-cypermethrin only (reference). Restricted randomisation was used to ensure balanced cluster allocation between study groups with respect to population size, malaria infection prevalence (measured in the baseline survey), district (n=3), and socioeconomic status.\n", + "\n", + "To mask the net types from the participants and the field workers, the nets were designed to look as similar as possible. Each net was rectangular, was requested to be the same size (1-8 m length, 1-9 m width, and 1-8 m height), and blue. To differentiate the nets in the field, a colour-coded loop was attached to the net. All data analyses were performed masked.\n", + "\n", + "header: Role of the funding source\n", + "\n", + "The funders of the study had no role in study design, data collection, data analysis, data interpretation, writing of the report, or in the decision to submit for publication.\n", + "\n", + "header: Results\n", + "\n", + "Between May 23 and June 24, 2019, 53854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. The households were delineated into 61 clusters, with one subsequently excluded due to extensive seasonal flooding (figure). Baseline cross-sectional epidemiological and entomological surveys were conducted between October and November, 2019 (table 1). The malaria infection prevalence was 43 5% (1924 of 4428 participants, cluster range 15 1-72 796) and population self-reported LLIN usage was 95 7% (3913 of 4088 participants). Cluster demographics and malaria prevalence were similar between groups (table 1). Entomological inoculation rate was 0 68 _Plasmodium_ spp infective bites per person per night (cluster range 0 00-3 80) indoors and 0 26 per person per night (0 00-1 88) outdoors.\n", + "\n", + "Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54 300 households in an updated census, with 97 1% of households receiving at least one net per household. Active ingredients in the new nets were found to be within or higher than the acceptable target limits depending on LLIN brand (appendix p 4). Study net usage was highest (5532 [76 8%] of 7206 participants) at 9 months after distribution, following a second hang-up campaign, but had decreased by 24 months (4032 [60 6%] of 6654). Study net coverage and usage indicators were similar between study groups up to 18 months after net distribution. At 24 months, pyriproxyfen-pyrethroid LLIN usage and ownership was the lowest (appendix pp 5-6). Use of any type of LLIN (study LLINs and others) remained greater than 80% up to 24 months after distribution (appendix p 7).\n", + "\n", + "In the 2283 households that were randomly selected for post-intervention cohort follow-up, 3129 children were eligible, 1829 of whom were randomly selected, and consent was obtained for 1806 (figure). Among the 2849 and 2771 households randomly selected at 6 months and 18 months after LLIN distribution for the malaria prevalence cross-sectional surveys, 4781 (85 1%) of 5620 households consent, with a similar proportion in the two surveys. The remaining households were either not available during the visit (775 [13 8%] of) or declined to participate (64 [1 1%]; appendix p 8).\n", + "\n", + "Children aged 6 months-9 years enrolled for active case detection were monitored for 21 months, for a total follow-up time of 2645 4- child-years at risk. Loss to follow-up was similar between groups (figure). At enrolment, children were balanced on age, sex, and net usage. During the 21-month follow-up period, we detected 2135 malaria cases through active case detection (table 2). The mean malaria case incidence over 21 months of follow-up was 1 03 cases per child-year (95% CI 0 96-1 09) in the pyrethroid-only LLIN reference group, 0 84 cases per child-year (0 78-70 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 86, 95% CI 0 65-1 46; p = 0 - 28), and 0 56 cases per child-year (0 51-0 64) in the chlorfenapry-pyrethroid LLIN group (HR 0 54, 95% CI 0 - 42-0 70; p < 0 0001; table 2). The strongest effect was observed in the first year of follow-up in the chlorfenapry-pyrethroid group (HR 0 46, 95% CI 0 30-0 72; p = 0 - 0005; table 2). When combining active and passive visits, the number of cases detected nearly doubled; however, the effect size in comparison to the reference group was similar for both intervention nets (appendix p 9).\n", + "\n", + "Malaria infection prevalence was 23 5% (1037 of 4409 participants) at 6 months and 34 9% (1554 of 4450) at 18 months after net distribution (table 3). There was strong evidence for a reduction of malaria infection prevalence in the chlorfenapry-pyrethroid LLIN group at 6 months (15 7%; odds ratio [OR] 0 47, 95% CI 0 32-0 69; p = 0 0002) and at 18 months (27 9%; OR 0 60 - 60, 0 - 43-0 85; p = 0 004) compared with the reference group (28 - 0% at 6 months and 38 7% at 18 months; table 3). In the pyriproxyfen-pyrethroid group, there was no evidence for a reduction in malaria prevalence at 6 months (26 9%; OR 0 - 92, 95% CI 0 63-1 35; p = 0 - 67) or 18 months (38 2%; OR 0 97 0, 0 69-1 37; p = 0 87) compared with the reference group. Results were similar for the per-protocol analysis (appendix p 1). There was no evidence of a reduction in moderate to severe anaemia prevalence in either intervention group (table 3). The post-hoc analysis adjusting for covariates used in the randomisation did not change the interpretation of the results (appendix pp 12-13).\n", + "\n", + "\n", + "Adverse events related to study nets were reported in 528 (45-496) of 1162 participants surveyed at 1 month after net distribution. The highest proportion of adverse events was reported in the pyrethroid-only LLIN group (247 [63-8%] of 387 participants), followed by the pyriproyfen-pyrethroid LLIN group (212 [52-5%] of 404) and then the chlorfenapy-pyrethroid LLIN group (69 [18-6%] of 371). Facial burning (392 [33-7%] of 1162 participants), and skin irritation or itchiness (244 [20-9%]) were the most common adverse events in all groups. Adverse events were rare in all three groups at all later timepoints (appendix P 14-15). We recorded 44 serious adverse events (including three deaths) in the cohort children, with 32 (72-7%) documented as severe malaria (11 cases in the pyriproyfen-pyrethroid LLIN group, ten in the chlorfenapy-pyrethroid LLIN group, and 11 in the pyrethroid-only LLIN group). No serious adverse events related to net use were reported.\n", + "\n", + "A total of 259265 mosquitoes were collected over 3840 collection nights indoors and outdoors, of which 20-9% (29814 from indoors and 24436 from outdoors) were malaria vectors, with _An gambiae_ sensu that the most predominant. Overall, indoor entomological inoculation rate was lower in both intervention groups than in the reference group, with a mean entomological inoculation rate of 0-90 infectious bites per night per person in the chlorfenapy-pyrethroid LLIN group (rate ratio [RR] 0-34, 95% CI 0-18-0-62; p=0-0005), 0-12 in the pyriproyfen-pyrethroid LLIN group (RR 0-42, 0-2-3-0-74; p=0-0028), and 0-28 in the pyrethroid-only LLIN group (table 4). Mean indoor vector density appeared to be lower in the chlorfenapy-pyrethroid LLIN group (10-18 bites per person per night, density ratio 0-44, 95% CI 0-2-30-84; p=0-014), and in the pyriproyfen-pyrethroid LLIN group (13-6 bites per person per night, density ratio 0-58, 0-30-1-12; p=0-011) than in the reference group (23-0 bites per person per night, but the latter difference was not statistically significant (table 4). Adjusting for baseline vector density in the models gave similar results (appendix P 16). There was no significant difference in sporozoite rate in any of the intervention groups compared with the reference group (table 4).\n", + "\n", + "Reduction in outdoor entomological inoculation rate compared with the reference group was observed only in the chlorfenapy-pyrethroid LLIN group (RR 0-30, 95% CI 0-13-0-67; p=0-0035; appendix P 17). There was very weak evidence for a reduction in outdoor entomological inoculation rate in the pyriproyfen-pyrethroid LLIN group compared with the pyrethroid-only group (RR 0-58, 0-30-1-13; p=0-11). Similar effects were observed for outdoor vector density for both intervention nets (appendix P 17).\n", + "\n", + "Post-intervention pyrethrold resistance intensity was high across the study groups in _An gambiae_ sensu lato, with mean mortality of 85% or less after exposure to 10 times the diagnostic concentrations of alpha-cypentrohin in year 2 (appendix P 18). No resistance to chlorfenapy was observed during either year after net distribution (appendix P 18). Exposure of _An gambiae_ sensu lato to pyriproyfen led to a high reduction in fecundity rate relative to unexposed control mosquitoes over the 2 years after net distribution (73-2%, 95% CI 62-2-82-4 in year 1, and 76-6%, 66-6-84-9 in year 2).\n", + "\n", + "header: Discussion\n", + "\n", + "This trial assessed the efficacy of two dual active-ingredient LLINs in an area of Benin with malaria vectors that are highly resistant to pyrethroids and found that chlorfenapy-pyrethroid LLINs provided significantly better protection against malaria for up to 2 years after net distribution compared with pyrethroid-only LLINs. Children aged 6 months-10 years living in clusters that received chlorfenapy-pyrethroid LLINs had a 46% lower incidence of malaria over 2 years after LLIN distribution;\n", + "\n", + "\\begin{table}\n", + "\\begin{tabular}{c c c c c c c c c c} & **Malaria infection** & \\multicolumn{6}{c}{**Anaemia in children younger than 5 years**} \\\\ \\hline n/N & Prevalence & OR & 95\\% CI & p valuea & n/N & Prevalence & OR & 95\\% CI & p valuea \\\\ \\hline\n", + "**6 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 412/1471 & 28\\(\\,\\)0\\% & 1 (ref) & – & – & 992/41 & 41\\(\\,\\)1\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 394/1463 & 26\\(\\,\\)9\\% & 0\\(\\,\\)92 & 0\\(\\,\\)\n", + "\n", + "63\\(\\,\\)45 & 0\\(\\,\\)67 & 117/250 & 46\\(\\,\\)8\\% & 124 & 0.71–218 & 0.45 \\\\ LLIN group & & & & & & & & & \\\\ Chlorfenapy-pyrethroid & 231/1475 & 157\\(\\,\\)\\% & 0\\(\\,\\)47 & 0\\(\\,\\)32\\(\\,\\)0\\(\\,\\)669 & 0\\(\\,\\)0002 & 82/241 & 34\\(\\,\\)0\\% & 0.71 & 0.40–126 & 0.24 \\\\ LLIN group & & & & & & & & & \\\\\n", + "**18 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 576/14/849 & 38\\(\\,\\)7\\% & 1 (ref) & – & – & 118/25 & 46\\(\\,\\)8\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 564/14/83 & 38\\(\\,\\)2\\% & 0\\(\\,\\)97 & 0\\(\\,\\)69\\(\\,\\)13\\(\\,\\)07 & 0\\(\\,\\)87 & 108/245 & 44\\(\\,\\)1\\% & 0.84 & 0.40–179\n", + "\n", + "\n", + "participants of any age had 53% lower odds of malaria infection at 6 months and 40% lower odds at 18 months after LLIN distribution, and were exposed to a 66% reduction in entomological inoculation rate compared with those living in clusters that received pyrethroid-only LLINs. Similar gains were not observed with the pyriproxyfen-pyrethroid LLIN, with a small reduction in malaria incidence in the first year of the study that was attenuated in year 2, and no effect on malaria infection prevalence in either year, compared with the pyrethroid-only reference group. However, a 58% reduction in indoor entomological inoculation rate was detected with the pyriproxyfen-pyrethroid LLIN. Both dual active-ingredient LLINs provided a similar safety profile compared with standard pyrethroid-only LLINs, with short-lasting skin irritation and facial burning (commonly associated with the pyrethroid alpha-Cybermethrin) most frequently reported in participants using pyrethroid-only LLINs and pyriproxyfen-pyrethroid LLINs. A similar observation has been reported in another randomised controlled trial evaluating the same LLINs, and this is likely to be associated with the high concentration of alpha-Cybermethrin in those nets compared with the chlorfenapy-pyrethroid LLINs.\n", + "\n", + "To our knowledge, this is the second cluster-randomised trial to provide strong evidence of increased efficacy of chlorfenapy-pyrethroid LLINs relative to pyrethroid-only LLINs for malaria control in areas with pyrethroid-resistant vectors. Chlorfenapyr insecticide on nets has already shown improved control of pyrethroid-resistant _An gambiae_ in laboratory and semi-field experimental huts against resistant malaria vectors.3- The previous trial in Tanzania reported a malaria case incidence reduction of 44%, a 55% decrease in odds of malaria prevalence, and 85% reduction in entomological inoculation rate compared with the pyrethroid-only group, consistent with these results, despite the differing malaria vector populations and intensity of pyrethroid resistance in the mosquitoes.4 In both trials, per-protocol analyses suggested that individuals living in the chlorfenapy-pyrethroid clusters benefited regardless of whether they were using a study net, suggesting a community effect of the net, which was likely to be obtained by the overall reduction of mosquito density, which remained considerably lower than in the pyrethroid-only group in both years of this trial after net distribution. Community effect is also indicated by the reduction in both indoor and outdoor entomological indices in the chlorfenapy-pyrethroid group in the present study.\n", + "\n", + "Similar to the trial in Tanzania,4 the pyriproxyfen-pyrethroid LLINs we tested did not provide additional protection against malaria infection or disease compared with pyrethroid-only LLINs. However, there was evidence of an effect on indoor transmission, with the strongest effect seen in the first year after net distribution. Tino and colleagues5 have previously reported a 12% reduction in malaria incidence and 49% reduction in entomological \n", + "inoculation rate with a pyriproxyfen-pyrethroid LLIN compared with pyrethroid-only LLINs over 18 months in a stepped-wedge randomised trial in Burkina Faso. The different study design, length of follow-up, and brand of net might explain the differences seen between the two studies. In Benin, laboratory and semi-field experimental hut studies have shown the superior efficacy of pyriproxyfen-pyrethroid nets on entomological indicators compared with standard pyrethroid-only LLINs,2,3 and are consistent with the decrease in indoor vector density observed in our trial. However, the decrease in indoor vector density did not translate into significant disease reduction, suggesting that a larger effect on malaria transmission (entomological inoculation rate) is crucial to provide community protection. Although lower net usage in the pyriproxyfen-pyrethroid LLIN group could have partially contributed to the lack of effect, we are also assessing textile durability, sterilisation effects, and chemical content of pyriproxyfen-pyrethroid LLINs to fully understand these results.\n", + "\n", + "With several trials now showing the superior efficacy of next-generation LLINs over pyrethroid-only nets, the importance of developing new active ingredients to use on nets in the future is brought to the fore. The distribution of next-generation LLINs across sub-Saharan Africa has already begun, with the development of the brands of chlorfenapry-pyrethroid nets underway,3 as well as the development of chlorfenapry product formulations for indoor residual spraying.3 Although chlorfenapry-pyrethroid nets offer a superior alternative to pyrethroid-only nets in areas of pyrethroid resistance, to preserve their effectiveness optimal resistance-management strategies should be used. There was no evidence of the development of resistance to chlorfenapry during the 2 years of this trial; however, the wide-scale deployment of one type of insecticide risks the rapid development of resistance, which could result in a similar situation to the current widespread resistance to pyrethroids. The nets should be deployed ideally alongside other insecticides as part of a strategy aimed to reduce selection pressure for development of resistance in mosquito vectors. Given the significant effect of the pyriproxyfen-pyrethroid LLINs on malaria transmission during the first year after net distribution, additional studies are necessary to evaluate the potential value of active ingredients such as pyriproxyfen, which are not primarily intended to kill resistant adult mosquitoes but rather to sterilise them. There might still be a role for these hormone growth-regulator insecticides in combination with other active ingredients for net treatment in long-term resistance management.\n", + "\n", + "If WHO policy recommendations are made on the basis of this trial's results, future chlorfenapry-pyrethroid nets might not have to undergo the rigorous trial testing that Interceptor G2 has. Caution should, however, be taken to assess the comparative efficacy, quality, and durability of the second-in-class chlorfenapry-pyrethroid nets as they might use different concentrations of chlorfenapry, different pyrethroids, or different net materials. Considering the time and resources required to generate evidence of epidemiological effect using randomised trials, non-inferiority experimental hut trials, recently proposed by WHO,3 might be a useful alternative for second-in-class chlorfenapry-pyrethroid LLINs. Further work to investigate the capacity of such entomological studies to predict the performance of the trial nets against clinical malaria is ongoing.3\n", + "\n", + "Footnote 3: endnote: [https://www.thelanct.com/Vol.401](https://www.thelanct.com/Vol.401). February 11, 2023\n", + "\n", + "Our study has some limitations. First, net ownership and use were high throughout the study; however, this did not always equate to study net use, which was approximately 60% at 2 years after net distribution, with overall usage of greater than 80%. Similar findings have been observed in other bednet trials, and probably indicate populations choosing to discard damaged nets when other nets are readily available. Second, the three types of nets were not completely identical and differences in textile material and size might have resulted in differential net usage between the groups. As our net use indicator was primarily self-reporting, it is also possible that net usage was overestimated. Third, our primary measure of incidence was based on active detection, involving visits every 2 weeks or every month. The passive data collected alongside the trial suggests that this frequency of visit resulted in some cases being missed, meaning the absolute effect of the nets might be greater than reported here. However, the relative effect of the nets remained similar when the active and passive data were combined. Finally, cost-effectiveness was not assessed; however, the trial in Tanzania' showed that dual active-ingredient LLINs can be highly cost-effective and even cost-saving compared with pyrethroid-only LLINs when providing sufficient protection.\n", + "\n", + "New classes of vector control interventions currently require clinical trial evaluation in two different geographical settings, after 24 months of community use.4 Currently, the only class of next-generation LLIN to receive a WHO recommendation are the PBO synergism nets. However, previous publications have shown concerns about the durability of these nets.5 This trial provides the second key evidence for the effectiveness of chlorfenapry-pyrethroid nets in an area with pyrethroid-resistant vectors and will therefore support a WHO policy recommendation. However, the effect of the nets was reduced in the second year of the trial, and there is no evidence for the efficacy of the nets in their third year of use. Many studies report that the durability of nets is much less than the 3 years required to be designated as long lasting.5 The next-generation LLINs might face the same problems of fabric integrity and durability of insecticidal content unless standards of manufacture are improved. Different channels of distribution (eg, school-based, antenatal care visits, or expanded programme immunisation visits) could play a key role in maintaining high levels of net use in communities.5\n", + "Although generating this evidence to support a WHO recommendation for another class of bednet is a key turning point in malaria control, without new insecticides and new ways to deploy them, we risk repeating the mistakes of the past. Now is the time for more innovation and less complacency.\n", + "\n", + "header: Methods\n", + "\n", + "We conducted a cluster-randomised, superiority trial in Zou Department, Benin. Clusters were villages or groups of villages with a minimum of 100 houses. We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (I:1:1): to receive nets containing either pyriproxyfen and alpha-Cypermethrin (pyrethroid), chlorfenapyr and alpha-Cypermethrin only (reference). Households received one LLIN for every two people. The field team, laboratory staff, analyses team, and community members were masked to the group allocation. The primary outcome was malaria case incidence measured over 2 years after net distribution in a cohort of children aged 6 months-10 years, in the intention-to-treat population. This study is ongoing and is registered with ClinicalTrials.gov, NCT03931473.\n", + "\n", + "Findings Between May 23 and June 24, 2019, 53 854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54030 households in an updated census. A cross-sectional survey showed that study LLIN usage was highest 9 months after distribution (5532 [76 * 986] of 7206 participants), but decreased by 24 months (4032 [60 * 696] of 6654). Mean malaria incidence over 2 years after LLIN distribution was 1-03 cases per child-year (95% CI 0 * 96-1 * 09) in the pyrethroid-only LLIN reference group. 0 * 84 cases per child-year (0.78-0 * 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 * 86, 95% CI 0 * 65-1* 14; p=0 * 28), and 0 * 56 cases per child-year (0 * 51-0 * 61) in the chlorfenapyr-pyrethroid LLIN group (HR 0 * 54, 95% CI 0 * 42-0 * 70; p<0 * 0001).\n", + "\n", + "Interpretation Over 2 years, chlorfenapyr-pyrethroid LLINs provided greater protection from malaria than pyrethroid-only LLINs in an area with pyrethroid-resistant mosquitoes. Pyriproxyfen-pyrethroid LLINs conferred protection similar to pyrethroid-only LLINs. These findings provide crucial second-trial evidence to enable WHO to make policy recommendations on these new LLIN classes. This study confirms the importance of chlorfenapyr as an LLIN treatment to control malaria in areas with pyrethroid-resistant vectors. However, an arsenal of new active ingredients is required for successful long-term resistance management, and additional innovations, including pyriproxyfen, need to be further investigated for effective vector control strategies.\n", + "\n", + "header: Contributions\n", + "\n", + "NP, JC, and CN conceived and designed the study, with contributions from MR, IK, LAM, and MCA, JC and MA led the development of the analysis plan, with input from BA, Aso, and NP, MA, CA, JC, NP, FT, and MCA coordinated the trial implementation with local and national authorities, RA, and AO-H. MA, BF, HA, Aso, and LA led the data collection in the field with and Aso, and AP, each of them, MCA, JC, and NP and NP. Also, BC, BA, and KAB led the molecular laboratory work.\n", + "\n", + "header: Funding UNITAID, The Global Fund.\n", + "\n", + "Pyrethroid-treated long-lasting insecticidal nets (LLINs) are the main malaria prevention intervention in sub-Saharan Africa and have been the major contributor to the estimated 1 * 5 billion malaria cases and 7 * 6 million malaria deaths averted in the past two decades. However, since 2015, the decline in malaria cases has stalled, and between 2019 and 2020, a rebound in malaria transmission was reported in some areas of sub-Saharan Africa.1 This rebound is likely to be a consequence of the continued spread of resistance to pyrethroid insecticides in malaria-transmitting mosquitoes, coinciding with a plateau in malaria control investment, leading to suboptimal coverage of interventions. Urgent actions are needed to prevent malaria resurgences, which were previously observed in sub-Saharan Africa in the 1980s after malaria control measures were scaled down.2\n", + "In the past 10 years, new insecticide-treated nets containing non-pyrethroid insecticides and insecticide synergists, in combination with pyrethroids, have been shown to be safe and efficacious against malaria mosquito vectors.14 The first net combined a pyrethroid insecticide and the synergistic piperonyl butoxide (PBO) and, following a randomised controlled trial,1 received a WHO policy recommendation in 2017. Other next-generation LLINs have shown encouraging results against resistant vectors in laboratory and small-scale entomological studies.47 One of these nets is a dual active-ingredient LLIN combining a pyrethroid and a pyrrole (chlorfenapyr). Both insecticides lead to mosquito mortality, with chlorfenapyr disrupting the production of cellular energy rather than targeting the nervous system, as pyrethroids do. Another dual active-ingredient LLIN combines a pyrethroid with an insect growth regulator (pyriprosyfen), which leads to sterility in exposed adult mosquitoes.\n", + "\n", + "The first randomised trial of these two products was conducted in Tanzania and showed that the chlorfenapyr-pyrethroid LLINs nearly halved malaria infection over 2 years in villages that received chlorfenapyr-pyrethroid LLINs compared with villages that received pyrethroid-only LLINs. PBO-pyrethroid LLINs were consistently found to be more effective than pyrethroid-only LLINs; however, the duration of the superior effect varied from 12 months to 21 months according to the different trials.\n", + "\n", + "header: Procedures\n", + "\n", + "The nets tested in the trial were: Royal Guard (Disease Control Technologies, Greer, SC, USA), polyethylene netting (I20 deniers incorporating 220 mg/m2 pyriproyfen and 220 mg/m2 alpha-cypermethrin); Interceptor G2 (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 chlorfenapyr and 100 mg/m2 alpha-cypermethrin); and the reference net, Interceptor (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 of alpha-cypermethrin). Nets were distributed in collaboration with the Benin National Malaria Control Program. Households were asked to collect their nets from a central point and received one net per every two residents in their household, rounded up for odd numbers. Nets already in houses were not removed but households were encouraged to use the new study nets. Additionally, net hang-up campaigns to encourage net use took place at 1 month and 7 months after distribution. Net coverage surveys to assess net ownership and usage were done at 1, 9, and 24 months after distribution. Throughout the follow-up period, children enrolled in the analysis cohort and participants enrolled in the cross-sectional surveys were also asked about their net use.\n", + "\n", + "Insecticide content at baseline was assessed on 30 randomly selected new nets per LLIN brand, by gas chromatography with Flame Ionisation Detection, at the\n", + "Centre Wallon de Recherches Agronomiques, Gembloux, Belgium. The insecticidal and physical durability of the study nets is being assessed in a separate study.\n", + "\n", + "Due to the COVID-19 pandemic, there was a 3-month gap between the distribution of the nets and the enrolment of children in the cohort. At enrolment and at 1 year after distribution (April, 2021), children were treated with antimalarial drugs (atremether-lumefantrinity to clear any underlying infection. The cohort was monitored from August, 2020, to April, 2022, a 21-month period, which encompassed the first 2 years after net distribution. Study nurses visited children every 2 weeks during the transmission season (April-October) and every 1 month in the dry season (November-March). At each visit, children were clinically examined and if they were febrile or had a history of fever in the past 48 h, they were tested for malaria using a malaria rapid diagnostic test. If the test was positive, the child was treated with artemether-lumefantrine, according to national guidelines.\n", + "\n", + "During cross-sectional surveys, all participants were tested for malaria using a malaria rapid diagnostic test and received treatment if the test was positive, and children younger than 5 years were tested for anaemia. Information regarding net ownership and usage, and other household-level indicators were collected at the same time.\n", + "\n", + "Entomological monitoring was also delayed and took place every 3 months between June, 2020, and April, 2022. Volunteers recruited from study clusters collected mosquitoes that landed on their legs between 1900 h and 0700 h for 1 night at four randomly selected houses in each cluster at each timepoint. Mosquitoes were morphologically identified to species and a subsample of _Anopheles_ spp was tested for molecular species using PCR.(r) A random sample of _Anopheles_ spp (up to 30% from each nightly catch in each cluster) were tested for sporozoites using the ELISA circumsporozoite protein technique.(r)\n", + "\n", + "header: Methods\n", + "\n", + "We conducted a three-group, cluster-randomised, superiority trial in three districts (Cove, Zagnanado, and Ouinhi) in Zou Department, central Benin. Malaria is highly endemic in the region, with a peak during the wet season (May-October). The main vector control strategy in the study area is use of pyrethroid-only LLINs distributed en masse once every 3 years, and through routine service delivery by antenatal clinics and vaccination programmes. The primary vectors in the setting are _Anopheles coluzzi_ and _Anopheles gambiae_. There is a high intensity of pyrethroid resistance in the main local vector populations.11\n", + "\n", + "A demographic census of all 123 villages in the study area was done in June, 2019. Clusters consisted of villages, or several villages. To reduce contamination between study groups, clusters consisted of a core (minimum 100 households) surrounded by a buffer, ensuring that core areas of neighbouring clusters were separated by at least 1000 m. Households in the buffer and core received the intervention, but measurement of outcomes only took place in core areas. A detailed description of the study protocol is published elsewhere.\"\n", + "\n", + "Ethics approval was obtained from the Benin Ministry of Health ethics committee (6/30/MS/DC/SGM/DRFMT/CNERS/SA), the London School of Hygiene & Tropical Medicine ethics committee (16237), and the WHO Research Ethics Review Committee (ERC.0003153). The trial was independently monitored by a data safety monitoring board and a trial steering committee.\n", + "\n", + "Epidemiological effect was estimated through measuring malaria case incidence in the 2 years after net distribution by active case detection in a cohort of children. A cohort of approximately 30 children aged 6 months-9 years randomly selected (by simple random sampling using a random number generator) from each cluster (1800 in total) was enrolled in July, 2020. Children were eligible for inclusion if they were permanent residents in the cluster, had no serious illnesses, and written informed consent was obtained from their guardians.\n", + "\n", + "Malaria infection prevalence (in all ages) was measured by cross-sectional surveys at 6 months and 18 months after net distribution. 72 individuals residing in the core of each cluster were randomly selected (using a random number generator) from the census for each cross-sectional survey. Each prevalence surveyed collected data on malaria infection, measured using malaria rapid diagnostic tests (CareStart malaria HRP2/PLDH [pf/pan] combo, DiaSy, UK), net ownership and use, sex, and household assets (as a proxy for socioeconomic status).\n", + "\n", + "Entomological effects were measured using human landing catches in four randomly selected houses every 3 months in each cluster. Insecticide resistance intensity was measured in two clusters per group (six clusters total) at baseline and in each follow-up year.\n", + "\n", + "Written informed consent was obtained from all participants, or from guardians for participants younger than 18 years. Assent was sought for children aged between 10 and 18 years. Written consent was also obtained from volunteer mosquito collectors who were all aged 18 years or older and who were vaccinated against yellow fever. All participation was voluntary, and participants could withdraw at any time. Study investigators sought consent in French or local languages.\n", + "\n", + "header: Table 2: Malaria case incidence in children aged 6 months–10 years per year of follow-up and overall (including active visits only)\n", + "footer: Each intervention was compared with the pyrethroid-only LLIN group for the same timepoint. LLIN=long-lasting insecticidal net. *A p value of <0·025 was considered significant after Bonferroni correction\n", + "columns: ['Unnamed: 0_level_0 - Overall', 'Number of clinical malaria episodes - Overall', 'Child- years of follow-up - Overall', 'Incidence, cases per child-year (95% Cl) - Overall', 'Hazard ratio - Overall', '95%Cl - Overall', 'p value* - Overall']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"897\",\"Child- years of follow-up - Overall\":\"874.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.03 (0.96-1.09)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"1\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"744\",\"Child- years of follow-up - Overall\":\"883.8\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.84 (0.78-0.90)\",\"Hazard ratio - Overall\":\"0.86\",\"95%Cl - Overall\":\"0.65-1.14\",\"p value* - Overall\":\"0.28\"},\"2\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"494\",\"Child- years of follow-up - Overall\":\"887.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.56 (0.51-0.61)\",\"Hazard ratio - Overall\":\"0.54\",\"95%Cl - Overall\":\"0.42-0.70\",\"p value* - Overall\":\"<0.0001\"},\"3\":{\"Unnamed: 0_level_0 - Overall\":\"Year 1\",\"Number of clinical malaria episodes - Overall\":\"Year 1\",\"Child- years of follow-up - Overall\":\"Year 1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 1\",\"Hazard ratio - Overall\":\"Year 1\",\"95%Cl - Overall\":\"Year 1\",\"p value* - Overall\":\"Year 1\"},\"4\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"267\",\"Child- years of follow-up - Overall\":\"344.4\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.77 (0.69-0.87)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"5\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"211\",\"Child- years of follow-up - Overall\":\"342.7\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.62 (0.54-0.70)\",\"Hazard ratio - Overall\":\"0.83\",\"95%Cl - Overall\":\"0.51-1.35\",\"p value* - Overall\":\"0.46\"},\"6\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"124\",\"Child- years of follow-up - Overall\":\"349.2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.36 (0.30-0.42)\",\"Hazard ratio - Overall\":\"0.46\",\"95%Cl - Overall\":\"0.30-0.72\",\"p value* - Overall\":\"0.0005\"},\"7\":{\"Unnamed: 0_level_0 - Overall\":\"Year 2\",\"Number of clinical malaria episodes - Overall\":\"Year 2\",\"Child- years of follow-up - Overall\":\"Year 2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 2\",\"Hazard ratio - Overall\":\"Year 2\",\"95%Cl - Overall\":\"Year 2\",\"p value* - Overall\":\"Year 2\"},\"8\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"630\",\"Child- years of follow-up - Overall\":\"529.9\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.19 (1.10-1.29)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"9\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"533\",\"Child- years of follow-up - Overall\":\"541.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.98 (0.90-1.07)\",\"Hazard ratio - Overall\":\"0.88\",\"95%Cl - Overall\":\"0.68-1.13\",\"p value* - Overall\":\"0.31\"},\"10\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"370\",\"Child- years of follow-up - Overall\":\"538.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.69 (0.62-0.76)\",\"Hazard ratio - Overall\":\"0.57\",\"95%Cl - Overall\":\"0.45-0.73\",\"p value* - Overall\":\"<0.0001\"}}\n", + "\n", + "header: Table 1: Baseline characteristics\n", + "footer: Data are n or %; n/N unless otherwise stated. EIR=entomological inoculation rate. LLIN=long-lasting insecticidal net. *Proportion of households in the poorest tercile based on the wealth index of the entire study area. †Anaemia defined as haemoglobin concentration of <10 g/dL. ‡Malaria vectors included Anopheles gambiae, Anophelesfunestus, and Anopheles nili\n", + "columns: ['Unnamed: 0_level_0 - Clusters', 'Pyriproxyfen-pyrethroid LLIN group - Clusters', 'Chlorfenapyr-pyrethroid LLIN group - Clusters', 'Pyrethroid-only LLIN group - Clusters']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of clusters\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"20\",\"Pyrethroid-only LLIN group - Clusters\":\"20\"},\"1\":{\"Unnamed: 0_level_0 - Clusters\":\"Total population in core and buffer areas\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"74822\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"70989\",\"Pyrethroid-only LLIN group - Clusters\":\"69239\"},\"2\":{\"Unnamed: 0_level_0 - Clusters\":\"Mean population in core area of clusters (range)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"1096.1 (225-4524)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"1120.5 (243-5040)\",\"Pyrethroid-only LLIN group - Clusters\":\"1058.1 (252-5217)\"},\"3\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of people per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"4.0 (2.3)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"3.9 (2.3)\",\"Pyrethroid-only LLIN group - Clusters\":\"4.1 (2.4)\"},\"4\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of sleeping spaces per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"2.2 (1.2)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"2.1 (1.1)\",\"Pyrethroid-only LLIN group - Clusters\":\"2.2 (1.2)\"},\"5\":{\"Unnamed: 0_level_0 - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyrethroid-only LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\"},\"6\":{\"Unnamed: 0_level_0 - Clusters\":\"Low socioeconomic status*\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"35.8%; 529\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"36.2%; 533\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"29.0%; 431\\/1487\"},\"7\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN ownership (at least one LLIN in the household)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"96.4%; 1426\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"97.1%; 1431\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"95.1%; 1415\\/1488\"},\"8\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN usage in all age groups the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"95.8%; 1312\\/1370\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"94.9%; 1258\\/1326\",\"Pyrethroid-only LLIN group - Clusters\":\"96.5%; 1343\\/1392\"},\"9\":{\"Unnamed: 0_level_0 - Clusters\":\"Malaria infection prevalence in all age groups\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"43.1%; 636\\/1475\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"40.7%; 598\\/1468\",\"Pyrethroid-only LLIN group - Clusters\":\"46.5%; 690\\/1485\"},\"10\":{\"Unnamed: 0_level_0 - Clusters\":\"Anaemia prevalence in children aged 6 months-4 years\\u2020\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"53.3%; 136\\/255\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"53.3%; 131\\/246\",\"Pyrethroid-only LLIN group - Clusters\":\"50.2%; 122\\/243\"},\"11\":{\"Unnamed: 0_level_0 - Clusters\":\"Entomological characteristics\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Pyrethroid-only LLIN group - Clusters\":\"Entomological characteristics\"},\"12\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night indoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"32.9 (28.9)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"21.6 (21.0)\",\"Pyrethroid-only LLIN group - Clusters\":\"29.2 (25.3)\"},\"13\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night outdoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20.3 (17.6)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"16.4 (17.4)\",\"Pyrethroid-only LLIN group - Clusters\":\"20.6 (20.2)\"},\"14\":{\"Unnamed: 0_level_0 - Clusters\":\"Indoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.62 (0.93)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.48 (0.65)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.96 (1.18)\"},\"15\":{\"Unnamed: 0_level_0 - Clusters\":\"Outdoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.27 (0.45)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.17 (0.44)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.33 (0.45)\"},\"16\":{\"Unnamed: 0_level_0 - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyrethroid-only LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\"},\"17\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of children younger than 5 years\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"52.3%; 316\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"50.6%; 304\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"53.6%; 322\\/601\"},\"18\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of female children\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"47.2%; 285\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"48.4%; 291\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"48.8%; 293\\/601\"},\"19\":{\"Unnamed: 0_level_0 - Clusters\":\"Net usage the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"99.0%; 598\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"98.7%; 593\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"99.2%; 596\\/601\"}}\n", + "\n", + "header: Introduction: Added value of this study\n", + "\n", + "To our knowledge, this is the second study aiming to compare the efficacy of the next generation of LLINs combining _p_iprosyfen or chlorfenapyr and pyrethroid versus standard pyrethroid-only LLINs, and the first of its kind to be conducted in west Africa. This trial confirmed the superior efficacy of chlorfenapyr-pyrethroid LLINs, in terms of malaria case incidence, prevalence, and transmission in children, over 2 years of use in the community, in an area of moderate malaria transmission and with high insecticide resistance intensity in malaria vectors, in Benin. However, pyrioxyfen-pyrethroid LLINs did not offer additional protection against malaria outcomes compared with pyrethroid-only LLINs.\n", + "\n", + "header: Table 3: Malaria infection and anaemia prevalence in the study population at 6 months and 18 months after net distribution (intention-to-treat analysis)\n", + "footer: Anaemia was defined as a haemogloblin concentration of <10 g/dL. LLIN=long-lasting insecticidal net. OR=odds ratio. *A p value of <0·025 was considered significant after Bonferroni correction\n", + "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution', 'Malaria infection - n/N - 6 months after net distribution', 'Malaria infection - Prevalence - 6 months after net distribution', 'Malaria infection - OR - 6 months after net distribution', 'Malaria infection - 95% Cl - 6 months after net distribution', 'Malaria infection - p value* - 6 months after net distribution', 'Anaemia in children younger than 5 years - n/N - 6 months after net distribution', 'Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution', 'Anaemia in children younger than 5 years - OR - 6 months after net distribution', 'Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution', 'Anaemia in children younger than 5 years - p value* - 6 months after net distribution']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"412\\/1471\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"28.0%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"99\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"41.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"394\\/1463\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"26.9 %\",\"Malaria infection - OR - 6 months after net distribution\":\"0.92\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.63-1.35\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.67\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"117\\/250\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.24\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.71-2.18\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.45\"},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"231\\/1475\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"15.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.47\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.32-0.69\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0002\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"82\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"34.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.71\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.26\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0-24\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - p value* - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"18 months after net distribution\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"576\\/1489\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/252\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"564\\/1478\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.2%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.97\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.69-1.37.\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.87\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"108\\/245\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"44.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.84\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.79\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.65\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"414\\/1483\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"27.9%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.60\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.43-0.85\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0041\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/246\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"48.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.08\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.51-2.28\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.84\"}}\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Data sharing: Acknowledgments\n", + "\n", + "This trial was funded by a grant to the London School of Hygiene & Tropical Medicine from UNITAD and The Global Fund via the Innovative Vector Control Consortium. This trial is part of a larger project. The New Nets project: We thank the communities from the three study districts (Cow, Zagnanado, Ouinhi), particularly the participants, children and their parents, community health workers, staff in health clinics, and the regional study team. We thank colleagues and staff at the Centre de Recherche Entomologique de Cotonou and those at the National Malaria Control Program. We also thank the trial system committee, the data safety monitoring board, and Charles Dickinson (School of Epidemiology and Public Health, University of Ottawa, Ottawa, ON, Canada) for supporting the mapping and cluster delineation.\n", + "\n", + "header: Role of the funding source\n", + "\n", + "The funders of the study had no role in study design, data collection, data analysis, data interpretation, writing of the report, or in the decision to submit for publication.\n", + "\n", + "header: Outcomes\n", + "\n", + "The primary outcome was malaria case incidence (infrared frontal temperature >37.5degC or reported fever in the previous 48 h, and positive malaria rapid diagnostic test) in children enrolled in the active case detection cohort in the 2 years after net distribution. Visits of children in the cohort at health facilities were monitored and the results of malaria rapid diagnostic tests and any treatment given were recorded. However, it was difficult to assess with certainty if malaria rapid diagnostic tests were used only if the child was symptomatic (as our protocol specified); therefore, the passive data was not included in the primary analyses.\n", + "\n", + "Secondary clinical outcomes were malaria infection prevalence in all age groups and anaemia (defined as haemoglobin concentration <10 g/dL) prevalence in children aged 5 years or younger at 6 months and 18 months after net distribution.\n", + "\n", + "Type and duration of adverse events related to usage of nets were recorded using a prespecified questionnaire at each cohort visit and during net usage and cross-sectional surveys. Data on hospitalisation and death in children in the cohort were collected by interviewing the child's guardian and reviewing the hospital record, following receipt of consent.\n", + "\n", + "The primary entomological outcome was entomological inoculation rate, measured as the mean number of _Plasmodium_ spp infective malaria vectors collected per person per night measured indoors and outdoors. Secondary entomological outcomes were vector density (number of mosquitoes caught per person per night), sporozoite rate, and species composition. Centers for Disease Control and Prevention bottle bioassays were performed by exposing adult female _An gambiae_, collected as larvae, to alpha-cypermethrin for 30 min (1, 2, 5, and 10 times the diagnostic dose), and to chlorfenrapy (100 mg/bottle) and pyriproxyfen (100 mg/bottle) for 60 min each year.(r) Mortality was recorded at 30 min for all four doses of alpha-cypermethrin (insectidic resistance intensity measurement), and at 24, 48, and 72 h after exposure for chlorfenapyr. The reduction in fecundity rate induced by pyriproxyfen relative to unexposed mosquitoes was assessed by ovarian dissection, 3 days after pyriproxyfen exposure. Other outcomes included in the protocol (parity, resting behaviour, survivorship, and other resistance measures) are still to be analysed and will be published elsewhere.\n", + "\n", + "header: Statistical analysis\n", + "\n", + "The sample size calculations for epidemiological data collection were calculated using the method of Hayes and Moulton.(r) The study was designed to detect a 30% difference in malaria case incidence, assuming a control group incidence of 1 malaria case per child-year and a coefficient of variation of 0-3 between clusters. This design required 20 clusters per group and 25 (20+5 allowing for loss to follow-up) children per cluster followed up for 2 years to give 80% power. Due to the delay in enrolment, which resulted in a shorter follow-up time, the number of children per cluster was increased to 30 (1800 children total). This sample size calculation includes adjustment for multiple testing (allowing for the three groups) using a Bonferroni-corrected two-sided a of 2.5%.\n", + "\n", + "For malaria infection prevalence, it was assumed that the prevalence in the reference group was 40%, with a coefficient of variation between clusters of 0-3. With 72 individuals per cluster, the study had 80% power to detect a 30% lower prevalence in the intervention groups compared with the reference group, using a Bonferroni-corrected a for multiple comparisons.\n", + "\n", + "The primary intention-to-treat analysis was a comparison of incidence of clinical malaria episodes between each dual active-ingredient LLIN group and the\n", + "\n", + "header: Implications of all the available evidence\n", + "\n", + "Given the positive findings, both in Benin and Tanzania, for chlorfenapyr-pyrethroid LLINs, they are likely to become the first WHO-recommended LLINs impregnated with an insecticide class other than pyrethroids. The absence of superior efficacy of pyrioxyfen-pyrethroid LLINs compared with standard pyrethroid-only LLINs is consistent with the results of the previous Tanzania study and calls into question the role of the current pyrioxyfen-pyrethroid LLINs in future malaria vector strategies.\n", + "\n", + "header: Methods\n", + "\n", + "Data collected for the study, including deidentified participant data and data dictionaries, might be made available at the end of the third year of trial follow-up upon reasonable request to the corresponding author.\n", + "\n", + "header: Results\n", + "\n", + "Between May 23 and June 24, 2019, 53854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. The households were delineated into 61 clusters, with one subsequently excluded due to extensive seasonal flooding (figure). Baseline cross-sectional epidemiological and entomological surveys were conducted between October and November, 2019 (table 1). The malaria infection prevalence was 43 5% (1924 of 4428 participants, cluster range 15 1-72 796) and population self-reported LLIN usage was 95 7% (3913 of 4088 participants). Cluster demographics and malaria prevalence were similar between groups (table 1). Entomological inoculation rate was 0 68 _Plasmodium_ spp infective bites per person per night (cluster range 0 00-3 80) indoors and 0 26 per person per night (0 00-1 88) outdoors.\n", + "\n", + "Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54 300 households in an updated census, with 97 1% of households receiving at least one net per household. Active ingredients in the new nets were found to be within or higher than the acceptable target limits depending on LLIN brand (appendix p 4). Study net usage was highest (5532 [76 8%] of 7206 participants) at 9 months after distribution, following a second hang-up campaign, but had decreased by 24 months (4032 [60 6%] of 6654). Study net coverage and usage indicators were similar between study groups up to 18 months after net distribution. At 24 months, pyriproxyfen-pyrethroid LLIN usage and ownership was the lowest (appendix pp 5-6). Use of any type of LLIN (study LLINs and others) remained greater than 80% up to 24 months after distribution (appendix p 7).\n", + "\n", + "In the 2283 households that were randomly selected for post-intervention cohort follow-up, 3129 children were eligible, 1829 of whom were randomly selected, and consent was obtained for 1806 (figure). Among the 2849 and 2771 households randomly selected at 6 months and 18 months after LLIN distribution for the malaria prevalence cross-sectional surveys, 4781 (85 1%) of 5620 households consent, with a similar proportion in the two surveys. The remaining households were either not available during the visit (775 [13 8%] of) or declined to participate (64 [1 1%]; appendix p 8).\n", + "\n", + "Children aged 6 months-9 years enrolled for active case detection were monitored for 21 months, for a total follow-up time of 2645 4- child-years at risk. Loss to follow-up was similar between groups (figure). At enrolment, children were balanced on age, sex, and net usage. During the 21-month follow-up period, we detected 2135 malaria cases through active case detection (table 2). The mean malaria case incidence over 21 months of follow-up was 1 03 cases per child-year (95% CI 0 96-1 09) in the pyrethroid-only LLIN reference group, 0 84 cases per child-year (0 78-70 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 86, 95% CI 0 65-1 46; p = 0 - 28), and 0 56 cases per child-year (0 51-0 64) in the chlorfenapry-pyrethroid LLIN group (HR 0 54, 95% CI 0 - 42-0 70; p < 0 0001; table 2). The strongest effect was observed in the first year of follow-up in the chlorfenapry-pyrethroid group (HR 0 46, 95% CI 0 30-0 72; p = 0 - 0005; table 2). When combining active and passive visits, the number of cases detected nearly doubled; however, the effect size in comparison to the reference group was similar for both intervention nets (appendix p 9).\n", + "\n", + "Malaria infection prevalence was 23 5% (1037 of 4409 participants) at 6 months and 34 9% (1554 of 4450) at 18 months after net distribution (table 3). There was strong evidence for a reduction of malaria infection prevalence in the chlorfenapry-pyrethroid LLIN group at 6 months (15 7%; odds ratio [OR] 0 47, 95% CI 0 32-0 69; p = 0 0002) and at 18 months (27 9%; OR 0 60 - 60, 0 - 43-0 85; p = 0 004) compared with the reference group (28 - 0% at 6 months and 38 7% at 18 months; table 3). In the pyriproxyfen-pyrethroid group, there was no evidence for a reduction in malaria prevalence at 6 months (26 9%; OR 0 - 92, 95% CI 0 63-1 35; p = 0 - 67) or 18 months (38 2%; OR 0 97 0, 0 69-1 37; p = 0 87) compared with the reference group. Results were similar for the per-protocol analysis (appendix p 1). There was no evidence of a reduction in moderate to severe anaemia prevalence in either intervention group (table 3). The post-hoc analysis adjusting for covariates used in the randomisation did not change the interpretation of the results (appendix pp 12-13).\n", + "\n", + "\n", + "Adverse events related to study nets were reported in 528 (45-496) of 1162 participants surveyed at 1 month after net distribution. The highest proportion of adverse events was reported in the pyrethroid-only LLIN group (247 [63-8%] of 387 participants), followed by the pyriproyfen-pyrethroid LLIN group (212 [52-5%] of 404) and then the chlorfenapy-pyrethroid LLIN group (69 [18-6%] of 371). Facial burning (392 [33-7%] of 1162 participants), and skin irritation or itchiness (244 [20-9%]) were the most common adverse events in all groups. Adverse events were rare in all three groups at all later timepoints (appendix P 14-15). We recorded 44 serious adverse events (including three deaths) in the cohort children, with 32 (72-7%) documented as severe malaria (11 cases in the pyriproyfen-pyrethroid LLIN group, ten in the chlorfenapy-pyrethroid LLIN group, and 11 in the pyrethroid-only LLIN group). No serious adverse events related to net use were reported.\n", + "\n", + "A total of 259265 mosquitoes were collected over 3840 collection nights indoors and outdoors, of which 20-9% (29814 from indoors and 24436 from outdoors) were malaria vectors, with _An gambiae_ sensu that the most predominant. Overall, indoor entomological inoculation rate was lower in both intervention groups than in the reference group, with a mean entomological inoculation rate of 0-90 infectious bites per night per person in the chlorfenapy-pyrethroid LLIN group (rate ratio [RR] 0-34, 95% CI 0-18-0-62; p=0-0005), 0-12 in the pyriproyfen-pyrethroid LLIN group (RR 0-42, 0-2-3-0-74; p=0-0028), and 0-28 in the pyrethroid-only LLIN group (table 4). Mean indoor vector density appeared to be lower in the chlorfenapy-pyrethroid LLIN group (10-18 bites per person per night, density ratio 0-44, 95% CI 0-2-30-84; p=0-014), and in the pyriproyfen-pyrethroid LLIN group (13-6 bites per person per night, density ratio 0-58, 0-30-1-12; p=0-011) than in the reference group (23-0 bites per person per night, but the latter difference was not statistically significant (table 4). Adjusting for baseline vector density in the models gave similar results (appendix P 16). There was no significant difference in sporozoite rate in any of the intervention groups compared with the reference group (table 4).\n", + "\n", + "Reduction in outdoor entomological inoculation rate compared with the reference group was observed only in the chlorfenapy-pyrethroid LLIN group (RR 0-30, 95% CI 0-13-0-67; p=0-0035; appendix P 17). There was very weak evidence for a reduction in outdoor entomological inoculation rate in the pyriproyfen-pyrethroid LLIN group compared with the pyrethroid-only group (RR 0-58, 0-30-1-13; p=0-11). Similar effects were observed for outdoor vector density for both intervention nets (appendix P 17).\n", + "\n", + "Post-intervention pyrethrold resistance intensity was high across the study groups in _An gambiae_ sensu lato, with mean mortality of 85% or less after exposure to 10 times the diagnostic concentrations of alpha-cypentrohin in year 2 (appendix P 18). No resistance to chlorfenapy was observed during either year after net distribution (appendix P 18). Exposure of _An gambiae_ sensu lato to pyriproyfen led to a high reduction in fecundity rate relative to unexposed control mosquitoes over the 2 years after net distribution (73-2%, 95% CI 62-2-82-4 in year 1, and 76-6%, 66-6-84-9 in year 2).\n", + "\n", + "header: Discussion\n", + "\n", + "This trial assessed the efficacy of two dual active-ingredient LLINs in an area of Benin with malaria vectors that are highly resistant to pyrethroids and found that chlorfenapy-pyrethroid LLINs provided significantly better protection against malaria for up to 2 years after net distribution compared with pyrethroid-only LLINs. Children aged 6 months-10 years living in clusters that received chlorfenapy-pyrethroid LLINs had a 46% lower incidence of malaria over 2 years after LLIN distribution;\n", + "\n", + "\\begin{table}\n", + "\\begin{tabular}{c c c c c c c c c c} & **Malaria infection** & \\multicolumn{6}{c}{**Anaemia in children younger than 5 years**} \\\\ \\hline n/N & Prevalence & OR & 95\\% CI & p valuea & n/N & Prevalence & OR & 95\\% CI & p valuea \\\\ \\hline\n", + "**6 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 412/1471 & 28\\(\\,\\)0\\% & 1 (ref) & – & – & 992/41 & 41\\(\\,\\)1\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 394/1463 & 26\\(\\,\\)9\\% & 0\\(\\,\\)92 & 0\\(\\,\\)\n", + "\n", + "63\\(\\,\\)45 & 0\\(\\,\\)67 & 117/250 & 46\\(\\,\\)8\\% & 124 & 0.71–218 & 0.45 \\\\ LLIN group & & & & & & & & & \\\\ Chlorfenapy-pyrethroid & 231/1475 & 157\\(\\,\\)\\% & 0\\(\\,\\)47 & 0\\(\\,\\)32\\(\\,\\)0\\(\\,\\)669 & 0\\(\\,\\)0002 & 82/241 & 34\\(\\,\\)0\\% & 0.71 & 0.40–126 & 0.24 \\\\ LLIN group & & & & & & & & & \\\\\n", + "**18 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 576/14/849 & 38\\(\\,\\)7\\% & 1 (ref) & – & – & 118/25 & 46\\(\\,\\)8\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 564/14/83 & 38\\(\\,\\)2\\% & 0\\(\\,\\)97 & 0\\(\\,\\)69\\(\\,\\)13\\(\\,\\)07 & 0\\(\\,\\)87 & 108/245 & 44\\(\\,\\)1\\% & 0.84 & 0.40–179\n", + "\n", + "\n", + "participants of any age had 53% lower odds of malaria infection at 6 months and 40% lower odds at 18 months after LLIN distribution, and were exposed to a 66% reduction in entomological inoculation rate compared with those living in clusters that received pyrethroid-only LLINs. Similar gains were not observed with the pyriproxyfen-pyrethroid LLIN, with a small reduction in malaria incidence in the first year of the study that was attenuated in year 2, and no effect on malaria infection prevalence in either year, compared with the pyrethroid-only reference group. However, a 58% reduction in indoor entomological inoculation rate was detected with the pyriproxyfen-pyrethroid LLIN. Both dual active-ingredient LLINs provided a similar safety profile compared with standard pyrethroid-only LLINs, with short-lasting skin irritation and facial burning (commonly associated with the pyrethroid alpha-Cybermethrin) most frequently reported in participants using pyrethroid-only LLINs and pyriproxyfen-pyrethroid LLINs. A similar observation has been reported in another randomised controlled trial evaluating the same LLINs, and this is likely to be associated with the high concentration of alpha-Cybermethrin in those nets compared with the chlorfenapy-pyrethroid LLINs.\n", + "\n", + "To our knowledge, this is the second cluster-randomised trial to provide strong evidence of increased efficacy of chlorfenapy-pyrethroid LLINs relative to pyrethroid-only LLINs for malaria control in areas with pyrethroid-resistant vectors. Chlorfenapyr insecticide on nets has already shown improved control of pyrethroid-resistant _An gambiae_ in laboratory and semi-field experimental huts against resistant malaria vectors.3- The previous trial in Tanzania reported a malaria case incidence reduction of 44%, a 55% decrease in odds of malaria prevalence, and 85% reduction in entomological inoculation rate compared with the pyrethroid-only group, consistent with these results, despite the differing malaria vector populations and intensity of pyrethroid resistance in the mosquitoes.4 In both trials, per-protocol analyses suggested that individuals living in the chlorfenapy-pyrethroid clusters benefited regardless of whether they were using a study net, suggesting a community effect of the net, which was likely to be obtained by the overall reduction of mosquito density, which remained considerably lower than in the pyrethroid-only group in both years of this trial after net distribution. Community effect is also indicated by the reduction in both indoor and outdoor entomological indices in the chlorfenapy-pyrethroid group in the present study.\n", + "\n", + "Similar to the trial in Tanzania,4 the pyriproxyfen-pyrethroid LLINs we tested did not provide additional protection against malaria infection or disease compared with pyrethroid-only LLINs. However, there was evidence of an effect on indoor transmission, with the strongest effect seen in the first year after net distribution. Tino and colleagues5 have previously reported a 12% reduction in malaria incidence and 49% reduction in entomological \n", + "inoculation rate with a pyriproxyfen-pyrethroid LLIN compared with pyrethroid-only LLINs over 18 months in a stepped-wedge randomised trial in Burkina Faso. The different study design, length of follow-up, and brand of net might explain the differences seen between the two studies. In Benin, laboratory and semi-field experimental hut studies have shown the superior efficacy of pyriproxyfen-pyrethroid nets on entomological indicators compared with standard pyrethroid-only LLINs,2,3 and are consistent with the decrease in indoor vector density observed in our trial. However, the decrease in indoor vector density did not translate into significant disease reduction, suggesting that a larger effect on malaria transmission (entomological inoculation rate) is crucial to provide community protection. Although lower net usage in the pyriproxyfen-pyrethroid LLIN group could have partially contributed to the lack of effect, we are also assessing textile durability, sterilisation effects, and chemical content of pyriproxyfen-pyrethroid LLINs to fully understand these results.\n", + "\n", + "With several trials now showing the superior efficacy of next-generation LLINs over pyrethroid-only nets, the importance of developing new active ingredients to use on nets in the future is brought to the fore. The distribution of next-generation LLINs across sub-Saharan Africa has already begun, with the development of the brands of chlorfenapry-pyrethroid nets underway,3 as well as the development of chlorfenapry product formulations for indoor residual spraying.3 Although chlorfenapry-pyrethroid nets offer a superior alternative to pyrethroid-only nets in areas of pyrethroid resistance, to preserve their effectiveness optimal resistance-management strategies should be used. There was no evidence of the development of resistance to chlorfenapry during the 2 years of this trial; however, the wide-scale deployment of one type of insecticide risks the rapid development of resistance, which could result in a similar situation to the current widespread resistance to pyrethroids. The nets should be deployed ideally alongside other insecticides as part of a strategy aimed to reduce selection pressure for development of resistance in mosquito vectors. Given the significant effect of the pyriproxyfen-pyrethroid LLINs on malaria transmission during the first year after net distribution, additional studies are necessary to evaluate the potential value of active ingredients such as pyriproxyfen, which are not primarily intended to kill resistant adult mosquitoes but rather to sterilise them. There might still be a role for these hormone growth-regulator insecticides in combination with other active ingredients for net treatment in long-term resistance management.\n", + "\n", + "If WHO policy recommendations are made on the basis of this trial's results, future chlorfenapry-pyrethroid nets might not have to undergo the rigorous trial testing that Interceptor G2 has. Caution should, however, be taken to assess the comparative efficacy, quality, and durability of the second-in-class chlorfenapry-pyrethroid nets as they might use different concentrations of chlorfenapry, different pyrethroids, or different net materials. Considering the time and resources required to generate evidence of epidemiological effect using randomised trials, non-inferiority experimental hut trials, recently proposed by WHO,3 might be a useful alternative for second-in-class chlorfenapry-pyrethroid LLINs. Further work to investigate the capacity of such entomological studies to predict the performance of the trial nets against clinical malaria is ongoing.3\n", + "\n", + "Footnote 3: endnote: [https://www.thelanct.com/Vol.401](https://www.thelanct.com/Vol.401). February 11, 2023\n", + "\n", + "Our study has some limitations. First, net ownership and use were high throughout the study; however, this did not always equate to study net use, which was approximately 60% at 2 years after net distribution, with overall usage of greater than 80%. Similar findings have been observed in other bednet trials, and probably indicate populations choosing to discard damaged nets when other nets are readily available. Second, the three types of nets were not completely identical and differences in textile material and size might have resulted in differential net usage between the groups. As our net use indicator was primarily self-reporting, it is also possible that net usage was overestimated. Third, our primary measure of incidence was based on active detection, involving visits every 2 weeks or every month. The passive data collected alongside the trial suggests that this frequency of visit resulted in some cases being missed, meaning the absolute effect of the nets might be greater than reported here. However, the relative effect of the nets remained similar when the active and passive data were combined. Finally, cost-effectiveness was not assessed; however, the trial in Tanzania' showed that dual active-ingredient LLINs can be highly cost-effective and even cost-saving compared with pyrethroid-only LLINs when providing sufficient protection.\n", + "\n", + "New classes of vector control interventions currently require clinical trial evaluation in two different geographical settings, after 24 months of community use.4 Currently, the only class of next-generation LLIN to receive a WHO recommendation are the PBO synergism nets. However, previous publications have shown concerns about the durability of these nets.5 This trial provides the second key evidence for the effectiveness of chlorfenapry-pyrethroid nets in an area with pyrethroid-resistant vectors and will therefore support a WHO policy recommendation. However, the effect of the nets was reduced in the second year of the trial, and there is no evidence for the efficacy of the nets in their third year of use. Many studies report that the durability of nets is much less than the 3 years required to be designated as long lasting.5 The next-generation LLINs might face the same problems of fabric integrity and durability of insecticidal content unless standards of manufacture are improved. Different channels of distribution (eg, school-based, antenatal care visits, or expanded programme immunisation visits) could play a key role in maintaining high levels of net use in communities.5\n", + "Although generating this evidence to support a WHO recommendation for another class of bednet is a key turning point in malaria control, without new insecticides and new ways to deploy them, we risk repeating the mistakes of the past. Now is the time for more innovation and less complacency.\n", + "\n", + "header: Abstract\n", + "\n", + "Efficacy of pyriproxyfen-pyrethroid long-lasting insecticidalnets (LLINs) and chlorfenapyr-pyrethroid LLINs compared with pyrethroid-only LLINs for malaria control in Benin: a cluster-randomised, superiority trial\n", + "\n", + "Manfred Accomphesi\n", + "\n", + "\n", + "Background New classes of long-lasting insecticidal nets (LLINs) combining mixtures of insecticides with different modes of action could put malaria control back on track after rebounds in transmission across sub-Saharan Africa. We evaluated the relative efficacy of pyriproxyfen-pyrethroid LLINs and chlorfenapyr-pyrethroid LLINs compared with standard LLINs against malaria transmission in an area of high pyrethroid resistance in Benin.\n", + "\n", + "header: Procedures\n", + "\n", + "The nets tested in the trial were: Royal Guard (Disease Control Technologies, Greer, SC, USA), polyethylene netting (I20 deniers incorporating 220 mg/m2 pyriproyfen and 220 mg/m2 alpha-cypermethrin); Interceptor G2 (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 chlorfenapyr and 100 mg/m2 alpha-cypermethrin); and the reference net, Interceptor (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 of alpha-cypermethrin). Nets were distributed in collaboration with the Benin National Malaria Control Program. Households were asked to collect their nets from a central point and received one net per every two residents in their household, rounded up for odd numbers. Nets already in houses were not removed but households were encouraged to use the new study nets. Additionally, net hang-up campaigns to encourage net use took place at 1 month and 7 months after distribution. Net coverage surveys to assess net ownership and usage were done at 1, 9, and 24 months after distribution. Throughout the follow-up period, children enrolled in the analysis cohort and participants enrolled in the cross-sectional surveys were also asked about their net use.\n", + "\n", + "Insecticide content at baseline was assessed on 30 randomly selected new nets per LLIN brand, by gas chromatography with Flame Ionisation Detection, at the\n", + "Centre Wallon de Recherches Agronomiques, Gembloux, Belgium. The insecticidal and physical durability of the study nets is being assessed in a separate study.\n", + "\n", + "Due to the COVID-19 pandemic, there was a 3-month gap between the distribution of the nets and the enrolment of children in the cohort. At enrolment and at 1 year after distribution (April, 2021), children were treated with antimalarial drugs (atremether-lumefantrinity to clear any underlying infection. The cohort was monitored from August, 2020, to April, 2022, a 21-month period, which encompassed the first 2 years after net distribution. Study nurses visited children every 2 weeks during the transmission season (April-October) and every 1 month in the dry season (November-March). At each visit, children were clinically examined and if they were febrile or had a history of fever in the past 48 h, they were tested for malaria using a malaria rapid diagnostic test. If the test was positive, the child was treated with artemether-lumefantrine, according to national guidelines.\n", + "\n", + "During cross-sectional surveys, all participants were tested for malaria using a malaria rapid diagnostic test and received treatment if the test was positive, and children younger than 5 years were tested for anaemia. Information regarding net ownership and usage, and other household-level indicators were collected at the same time.\n", + "\n", + "Entomological monitoring was also delayed and took place every 3 months between June, 2020, and April, 2022. Volunteers recruited from study clusters collected mosquitoes that landed on their legs between 1900 h and 0700 h for 1 night at four randomly selected houses in each cluster at each timepoint. Mosquitoes were morphologically identified to species and a subsample of _Anopheles_ spp was tested for molecular species using PCR.(r) A random sample of _Anopheles_ spp (up to 30% from each nightly catch in each cluster) were tested for sporozoites using the ELISA circumsporozoite protein technique.(r)\n", + "\n", + "header: Contributions\n", + "\n", + "NP, JC, and CN conceived and designed the study, with contributions from MR, IK, LAM, and MCA, JC and MA led the development of the analysis plan, with input from BA, Aso, and NP, MA, CA, JC, NP, FT, and MCA coordinated the trial implementation with local and national authorities, RA, and AO-H. MA, BF, HA, Aso, and LA led the data collection in the field with and Aso, and AP, each of them, MCA, JC, and NP and NP. Also, BC, BA, and KAB led the molecular laboratory work.\n", + "\n", + "header: Methods\n", + "\n", + "We conducted a cluster-randomised, superiority trial in Zou Department, Benin. Clusters were villages or groups of villages with a minimum of 100 houses. We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (I:1:1): to receive nets containing either pyriproxyfen and alpha-Cypermethrin (pyrethroid), chlorfenapyr and alpha-Cypermethrin only (reference). Households received one LLIN for every two people. The field team, laboratory staff, analyses team, and community members were masked to the group allocation. The primary outcome was malaria case incidence measured over 2 years after net distribution in a cohort of children aged 6 months-10 years, in the intention-to-treat population. This study is ongoing and is registered with ClinicalTrials.gov, NCT03931473.\n", + "\n", + "Findings Between May 23 and June 24, 2019, 53 854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54030 households in an updated census. A cross-sectional survey showed that study LLIN usage was highest 9 months after distribution (5532 [76 * 986] of 7206 participants), but decreased by 24 months (4032 [60 * 696] of 6654). Mean malaria incidence over 2 years after LLIN distribution was 1-03 cases per child-year (95% CI 0 * 96-1 * 09) in the pyrethroid-only LLIN reference group. 0 * 84 cases per child-year (0.78-0 * 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 * 86, 95% CI 0 * 65-1* 14; p=0 * 28), and 0 * 56 cases per child-year (0 * 51-0 * 61) in the chlorfenapyr-pyrethroid LLIN group (HR 0 * 54, 95% CI 0 * 42-0 * 70; p<0 * 0001).\n", + "\n", + "Interpretation Over 2 years, chlorfenapyr-pyrethroid LLINs provided greater protection from malaria than pyrethroid-only LLINs in an area with pyrethroid-resistant mosquitoes. Pyriproxyfen-pyrethroid LLINs conferred protection similar to pyrethroid-only LLINs. These findings provide crucial second-trial evidence to enable WHO to make policy recommendations on these new LLIN classes. This study confirms the importance of chlorfenapyr as an LLIN treatment to control malaria in areas with pyrethroid-resistant vectors. However, an arsenal of new active ingredients is required for successful long-term resistance management, and additional innovations, including pyriproxyfen, need to be further investigated for effective vector control strategies.\n", + "\n", + "header: Methods\n", + "\n", + "We conducted a three-group, cluster-randomised, superiority trial in three districts (Cove, Zagnanado, and Ouinhi) in Zou Department, central Benin. Malaria is highly endemic in the region, with a peak during the wet season (May-October). The main vector control strategy in the study area is use of pyrethroid-only LLINs distributed en masse once every 3 years, and through routine service delivery by antenatal clinics and vaccination programmes. The primary vectors in the setting are _Anopheles coluzzi_ and _Anopheles gambiae_. There is a high intensity of pyrethroid resistance in the main local vector populations.11\n", + "\n", + "A demographic census of all 123 villages in the study area was done in June, 2019. Clusters consisted of villages, or several villages. To reduce contamination between study groups, clusters consisted of a core (minimum 100 households) surrounded by a buffer, ensuring that core areas of neighbouring clusters were separated by at least 1000 m. Households in the buffer and core received the intervention, but measurement of outcomes only took place in core areas. A detailed description of the study protocol is published elsewhere.\"\n", + "\n", + "Ethics approval was obtained from the Benin Ministry of Health ethics committee (6/30/MS/DC/SGM/DRFMT/CNERS/SA), the London School of Hygiene & Tropical Medicine ethics committee (16237), and the WHO Research Ethics Review Committee (ERC.0003153). The trial was independently monitored by a data safety monitoring board and a trial steering committee.\n", + "\n", + "Epidemiological effect was estimated through measuring malaria case incidence in the 2 years after net distribution by active case detection in a cohort of children. A cohort of approximately 30 children aged 6 months-9 years randomly selected (by simple random sampling using a random number generator) from each cluster (1800 in total) was enrolled in July, 2020. Children were eligible for inclusion if they were permanent residents in the cluster, had no serious illnesses, and written informed consent was obtained from their guardians.\n", + "\n", + "Malaria infection prevalence (in all ages) was measured by cross-sectional surveys at 6 months and 18 months after net distribution. 72 individuals residing in the core of each cluster were randomly selected (using a random number generator) from the census for each cross-sectional survey. Each prevalence surveyed collected data on malaria infection, measured using malaria rapid diagnostic tests (CareStart malaria HRP2/PLDH [pf/pan] combo, DiaSy, UK), net ownership and use, sex, and household assets (as a proxy for socioeconomic status).\n", + "\n", + "Entomological effects were measured using human landing catches in four randomly selected houses every 3 months in each cluster. Insecticide resistance intensity was measured in two clusters per group (six clusters total) at baseline and in each follow-up year.\n", + "\n", + "Written informed consent was obtained from all participants, or from guardians for participants younger than 18 years. Assent was sought for children aged between 10 and 18 years. Written consent was also obtained from volunteer mosquito collectors who were all aged 18 years or older and who were vaccinated against yellow fever. All participation was voluntary, and participants could withdraw at any time. Study investigators sought consent in French or local languages.\n", + "\n", + "header: Funding UNITAID, The Global Fund.\n", + "\n", + "Pyrethroid-treated long-lasting insecticidal nets (LLINs) are the main malaria prevention intervention in sub-Saharan Africa and have been the major contributor to the estimated 1 * 5 billion malaria cases and 7 * 6 million malaria deaths averted in the past two decades. However, since 2015, the decline in malaria cases has stalled, and between 2019 and 2020, a rebound in malaria transmission was reported in some areas of sub-Saharan Africa.1 This rebound is likely to be a consequence of the continued spread of resistance to pyrethroid insecticides in malaria-transmitting mosquitoes, coinciding with a plateau in malaria control investment, leading to suboptimal coverage of interventions. Urgent actions are needed to prevent malaria resurgences, which were previously observed in sub-Saharan Africa in the 1980s after malaria control measures were scaled down.2\n", + "In the past 10 years, new insecticide-treated nets containing non-pyrethroid insecticides and insecticide synergists, in combination with pyrethroids, have been shown to be safe and efficacious against malaria mosquito vectors.14 The first net combined a pyrethroid insecticide and the synergistic piperonyl butoxide (PBO) and, following a randomised controlled trial,1 received a WHO policy recommendation in 2017. Other next-generation LLINs have shown encouraging results against resistant vectors in laboratory and small-scale entomological studies.47 One of these nets is a dual active-ingredient LLIN combining a pyrethroid and a pyrrole (chlorfenapyr). Both insecticides lead to mosquito mortality, with chlorfenapyr disrupting the production of cellular energy rather than targeting the nervous system, as pyrethroids do. Another dual active-ingredient LLIN combines a pyrethroid with an insect growth regulator (pyriprosyfen), which leads to sterility in exposed adult mosquitoes.\n", + "\n", + "The first randomised trial of these two products was conducted in Tanzania and showed that the chlorfenapyr-pyrethroid LLINs nearly halved malaria infection over 2 years in villages that received chlorfenapyr-pyrethroid LLINs compared with villages that received pyrethroid-only LLINs. PBO-pyrethroid LLINs were consistently found to be more effective than pyrethroid-only LLINs; however, the duration of the superior effect varied from 12 months to 21 months according to the different trials.\n", + "\n", + "header: Table 1: Baseline characteristics\n", + "footer: Data are n or %; n/N unless otherwise stated. EIR=entomological inoculation rate. LLIN=long-lasting insecticidal net. *Proportion of households in the poorest tercile based on the wealth index of the entire study area. †Anaemia defined as haemoglobin concentration of <10 g/dL. ‡Malaria vectors included Anopheles gambiae, Anophelesfunestus, and Anopheles nili\n", + "columns: ['Unnamed: 0_level_0 - Clusters', 'Pyriproxyfen-pyrethroid LLIN group - Clusters', 'Chlorfenapyr-pyrethroid LLIN group - Clusters', 'Pyrethroid-only LLIN group - Clusters']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of clusters\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"20\",\"Pyrethroid-only LLIN group - Clusters\":\"20\"},\"1\":{\"Unnamed: 0_level_0 - Clusters\":\"Total population in core and buffer areas\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"74822\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"70989\",\"Pyrethroid-only LLIN group - Clusters\":\"69239\"},\"2\":{\"Unnamed: 0_level_0 - Clusters\":\"Mean population in core area of clusters (range)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"1096.1 (225-4524)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"1120.5 (243-5040)\",\"Pyrethroid-only LLIN group - Clusters\":\"1058.1 (252-5217)\"},\"3\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of people per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"4.0 (2.3)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"3.9 (2.3)\",\"Pyrethroid-only LLIN group - Clusters\":\"4.1 (2.4)\"},\"4\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of sleeping spaces per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"2.2 (1.2)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"2.1 (1.1)\",\"Pyrethroid-only LLIN group - Clusters\":\"2.2 (1.2)\"},\"5\":{\"Unnamed: 0_level_0 - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyrethroid-only LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\"},\"6\":{\"Unnamed: 0_level_0 - Clusters\":\"Low socioeconomic status*\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"35.8%; 529\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"36.2%; 533\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"29.0%; 431\\/1487\"},\"7\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN ownership (at least one LLIN in the household)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"96.4%; 1426\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"97.1%; 1431\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"95.1%; 1415\\/1488\"},\"8\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN usage in all age groups the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"95.8%; 1312\\/1370\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"94.9%; 1258\\/1326\",\"Pyrethroid-only LLIN group - Clusters\":\"96.5%; 1343\\/1392\"},\"9\":{\"Unnamed: 0_level_0 - Clusters\":\"Malaria infection prevalence in all age groups\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"43.1%; 636\\/1475\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"40.7%; 598\\/1468\",\"Pyrethroid-only LLIN group - Clusters\":\"46.5%; 690\\/1485\"},\"10\":{\"Unnamed: 0_level_0 - Clusters\":\"Anaemia prevalence in children aged 6 months-4 years\\u2020\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"53.3%; 136\\/255\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"53.3%; 131\\/246\",\"Pyrethroid-only LLIN group - Clusters\":\"50.2%; 122\\/243\"},\"11\":{\"Unnamed: 0_level_0 - Clusters\":\"Entomological characteristics\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Pyrethroid-only LLIN group - Clusters\":\"Entomological characteristics\"},\"12\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night indoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"32.9 (28.9)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"21.6 (21.0)\",\"Pyrethroid-only LLIN group - Clusters\":\"29.2 (25.3)\"},\"13\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night outdoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20.3 (17.6)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"16.4 (17.4)\",\"Pyrethroid-only LLIN group - Clusters\":\"20.6 (20.2)\"},\"14\":{\"Unnamed: 0_level_0 - Clusters\":\"Indoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.62 (0.93)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.48 (0.65)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.96 (1.18)\"},\"15\":{\"Unnamed: 0_level_0 - Clusters\":\"Outdoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.27 (0.45)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.17 (0.44)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.33 (0.45)\"},\"16\":{\"Unnamed: 0_level_0 - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyrethroid-only LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\"},\"17\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of children younger than 5 years\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"52.3%; 316\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"50.6%; 304\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"53.6%; 322\\/601\"},\"18\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of female children\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"47.2%; 285\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"48.4%; 291\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"48.8%; 293\\/601\"},\"19\":{\"Unnamed: 0_level_0 - Clusters\":\"Net usage the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"99.0%; 598\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"98.7%; 593\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"99.2%; 596\\/601\"}}\n", + "\n", + "header: Study design and participants: Randomisation and masking\n", + "\n", + "We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (1:1:1), to receive nets containing either pyriproxyfen and alpha-cypermethrin (pyrethroid), chlorfenapyr and alpha-cypermethrin, or alpha-cypermethrin only (reference). Restricted randomisation was used to ensure balanced cluster allocation between study groups with respect to population size, malaria infection prevalence (measured in the baseline survey), district (n=3), and socioeconomic status.\n", + "\n", + "To mask the net types from the participants and the field workers, the nets were designed to look as similar as possible. Each net was rectangular, was requested to be the same size (1-8 m length, 1-9 m width, and 1-8 m height), and blue. To differentiate the nets in the field, a colour-coded loop was attached to the net. All data analyses were performed masked.\n", + "\n", + "header: Table 2: Malaria case incidence in children aged 6 months–10 years per year of follow-up and overall (including active visits only)\n", + "footer: Each intervention was compared with the pyrethroid-only LLIN group for the same timepoint. LLIN=long-lasting insecticidal net. *A p value of <0·025 was considered significant after Bonferroni correction\n", + "columns: ['Unnamed: 0_level_0 - Overall', 'Number of clinical malaria episodes - Overall', 'Child- years of follow-up - Overall', 'Incidence, cases per child-year (95% Cl) - Overall', 'Hazard ratio - Overall', '95%Cl - Overall', 'p value* - Overall']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"897\",\"Child- years of follow-up - Overall\":\"874.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.03 (0.96-1.09)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"1\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"744\",\"Child- years of follow-up - Overall\":\"883.8\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.84 (0.78-0.90)\",\"Hazard ratio - Overall\":\"0.86\",\"95%Cl - Overall\":\"0.65-1.14\",\"p value* - Overall\":\"0.28\"},\"2\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"494\",\"Child- years of follow-up - Overall\":\"887.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.56 (0.51-0.61)\",\"Hazard ratio - Overall\":\"0.54\",\"95%Cl - Overall\":\"0.42-0.70\",\"p value* - Overall\":\"<0.0001\"},\"3\":{\"Unnamed: 0_level_0 - Overall\":\"Year 1\",\"Number of clinical malaria episodes - Overall\":\"Year 1\",\"Child- years of follow-up - Overall\":\"Year 1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 1\",\"Hazard ratio - Overall\":\"Year 1\",\"95%Cl - Overall\":\"Year 1\",\"p value* - Overall\":\"Year 1\"},\"4\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"267\",\"Child- years of follow-up - Overall\":\"344.4\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.77 (0.69-0.87)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"5\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"211\",\"Child- years of follow-up - Overall\":\"342.7\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.62 (0.54-0.70)\",\"Hazard ratio - Overall\":\"0.83\",\"95%Cl - Overall\":\"0.51-1.35\",\"p value* - Overall\":\"0.46\"},\"6\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"124\",\"Child- years of follow-up - Overall\":\"349.2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.36 (0.30-0.42)\",\"Hazard ratio - Overall\":\"0.46\",\"95%Cl - Overall\":\"0.30-0.72\",\"p value* - Overall\":\"0.0005\"},\"7\":{\"Unnamed: 0_level_0 - Overall\":\"Year 2\",\"Number of clinical malaria episodes - Overall\":\"Year 2\",\"Child- years of follow-up - Overall\":\"Year 2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 2\",\"Hazard ratio - Overall\":\"Year 2\",\"95%Cl - Overall\":\"Year 2\",\"p value* - Overall\":\"Year 2\"},\"8\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"630\",\"Child- years of follow-up - Overall\":\"529.9\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.19 (1.10-1.29)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"9\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"533\",\"Child- years of follow-up - Overall\":\"541.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.98 (0.90-1.07)\",\"Hazard ratio - Overall\":\"0.88\",\"95%Cl - Overall\":\"0.68-1.13\",\"p value* - Overall\":\"0.31\"},\"10\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"370\",\"Child- years of follow-up - Overall\":\"538.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.69 (0.62-0.76)\",\"Hazard ratio - Overall\":\"0.57\",\"95%Cl - Overall\":\"0.45-0.73\",\"p value* - Overall\":\"<0.0001\"}}\n", + "\n", + "header: Table 3: Malaria infection and anaemia prevalence in the study population at 6 months and 18 months after net distribution (intention-to-treat analysis)\n", + "footer: Anaemia was defined as a haemogloblin concentration of <10 g/dL. LLIN=long-lasting insecticidal net. OR=odds ratio. *A p value of <0·025 was considered significant after Bonferroni correction\n", + "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution', 'Malaria infection - n/N - 6 months after net distribution', 'Malaria infection - Prevalence - 6 months after net distribution', 'Malaria infection - OR - 6 months after net distribution', 'Malaria infection - 95% Cl - 6 months after net distribution', 'Malaria infection - p value* - 6 months after net distribution', 'Anaemia in children younger than 5 years - n/N - 6 months after net distribution', 'Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution', 'Anaemia in children younger than 5 years - OR - 6 months after net distribution', 'Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution', 'Anaemia in children younger than 5 years - p value* - 6 months after net distribution']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"412\\/1471\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"28.0%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"99\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"41.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"394\\/1463\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"26.9 %\",\"Malaria infection - OR - 6 months after net distribution\":\"0.92\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.63-1.35\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.67\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"117\\/250\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.24\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.71-2.18\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.45\"},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"231\\/1475\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"15.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.47\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.32-0.69\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0002\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"82\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"34.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.71\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.26\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0-24\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - p value* - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"18 months after net distribution\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"576\\/1489\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/252\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"564\\/1478\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.2%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.97\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.69-1.37.\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.87\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"108\\/245\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"44.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.84\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.79\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.65\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"414\\/1483\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"27.9%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.60\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.43-0.85\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0041\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/246\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"48.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.08\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.51-2.28\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.84\"}}\n", + "\n", + "header: Introduction: Added value of this study\n", + "\n", + "To our knowledge, this is the second study aiming to compare the efficacy of the next generation of LLINs combining _p_iprosyfen or chlorfenapyr and pyrethroid versus standard pyrethroid-only LLINs, and the first of its kind to be conducted in west Africa. This trial confirmed the superior efficacy of chlorfenapyr-pyrethroid LLINs, in terms of malaria case incidence, prevalence, and transmission in children, over 2 years of use in the community, in an area of moderate malaria transmission and with high insecticide resistance intensity in malaria vectors, in Benin. However, pyrioxyfen-pyrethroid LLINs did not offer additional protection against malaria outcomes compared with pyrethroid-only LLINs.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Cove\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019},\"S02\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Zagnanado\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019},\"S03\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Ouinhi\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Royal Guard\",\"Insecticide\":\"pyriproyfen, alpha-cypermethrin\",\"Concentration_initial\":\"220 mg\\/m2, 220 mg\\/m2\"},\"N02\":{\"Net_type\":\"Interceptor G2\",\"Insecticide\":\"chlorfenapyr, alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2, 100 mg\\/m2\"},\"N03\":{\"Net_type\":\"Interceptor\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Data sharing: Acknowledgments\n", + "\n", + "This trial was funded by a grant to the London School of Hygiene & Tropical Medicine from UNITAD and The Global Fund via the Innovative Vector Control Consortium. This trial is part of a larger project. The New Nets project: We thank the communities from the three study districts (Cow, Zagnanado, Ouinhi), particularly the participants, children and their parents, community health workers, staff in health clinics, and the regional study team. We thank colleagues and staff at the Centre de Recherche Entomologique de Cotonou and those at the National Malaria Control Program. We also thank the trial system committee, the data safety monitoring board, and Charles Dickinson (School of Epidemiology and Public Health, University of Ottawa, Ottawa, ON, Canada) for supporting the mapping and cluster delineation.\n", + "\n", + "header: Role of the funding source\n", + "\n", + "The funders of the study had no role in study design, data collection, data analysis, data interpretation, writing of the report, or in the decision to submit for publication.\n", + "\n", + "header: Outcomes\n", + "\n", + "The primary outcome was malaria case incidence (infrared frontal temperature >37.5degC or reported fever in the previous 48 h, and positive malaria rapid diagnostic test) in children enrolled in the active case detection cohort in the 2 years after net distribution. Visits of children in the cohort at health facilities were monitored and the results of malaria rapid diagnostic tests and any treatment given were recorded. However, it was difficult to assess with certainty if malaria rapid diagnostic tests were used only if the child was symptomatic (as our protocol specified); therefore, the passive data was not included in the primary analyses.\n", + "\n", + "Secondary clinical outcomes were malaria infection prevalence in all age groups and anaemia (defined as haemoglobin concentration <10 g/dL) prevalence in children aged 5 years or younger at 6 months and 18 months after net distribution.\n", + "\n", + "Type and duration of adverse events related to usage of nets were recorded using a prespecified questionnaire at each cohort visit and during net usage and cross-sectional surveys. Data on hospitalisation and death in children in the cohort were collected by interviewing the child's guardian and reviewing the hospital record, following receipt of consent.\n", + "\n", + "The primary entomological outcome was entomological inoculation rate, measured as the mean number of _Plasmodium_ spp infective malaria vectors collected per person per night measured indoors and outdoors. Secondary entomological outcomes were vector density (number of mosquitoes caught per person per night), sporozoite rate, and species composition. Centers for Disease Control and Prevention bottle bioassays were performed by exposing adult female _An gambiae_, collected as larvae, to alpha-cypermethrin for 30 min (1, 2, 5, and 10 times the diagnostic dose), and to chlorfenrapy (100 mg/bottle) and pyriproxyfen (100 mg/bottle) for 60 min each year.(r) Mortality was recorded at 30 min for all four doses of alpha-cypermethrin (insectidic resistance intensity measurement), and at 24, 48, and 72 h after exposure for chlorfenapyr. The reduction in fecundity rate induced by pyriproxyfen relative to unexposed mosquitoes was assessed by ovarian dissection, 3 days after pyriproxyfen exposure. Other outcomes included in the protocol (parity, resting behaviour, survivorship, and other resistance measures) are still to be analysed and will be published elsewhere.\n", + "\n", + "header: Methods\n", + "\n", + "Data collected for the study, including deidentified participant data and data dictionaries, might be made available at the end of the third year of trial follow-up upon reasonable request to the corresponding author.\n", + "\n", + "header: Statistical analysis\n", + "\n", + "The sample size calculations for epidemiological data collection were calculated using the method of Hayes and Moulton.(r) The study was designed to detect a 30% difference in malaria case incidence, assuming a control group incidence of 1 malaria case per child-year and a coefficient of variation of 0-3 between clusters. This design required 20 clusters per group and 25 (20+5 allowing for loss to follow-up) children per cluster followed up for 2 years to give 80% power. Due to the delay in enrolment, which resulted in a shorter follow-up time, the number of children per cluster was increased to 30 (1800 children total). This sample size calculation includes adjustment for multiple testing (allowing for the three groups) using a Bonferroni-corrected two-sided a of 2.5%.\n", + "\n", + "For malaria infection prevalence, it was assumed that the prevalence in the reference group was 40%, with a coefficient of variation between clusters of 0-3. With 72 individuals per cluster, the study had 80% power to detect a 30% lower prevalence in the intervention groups compared with the reference group, using a Bonferroni-corrected a for multiple comparisons.\n", + "\n", + "The primary intention-to-treat analysis was a comparison of incidence of clinical malaria episodes between each dual active-ingredient LLIN group and the\n", + "\n", + "header: Contributions\n", + "\n", + "NP, JC, and CN conceived and designed the study, with contributions from MR, IK, LAM, and MCA, JC and MA led the development of the analysis plan, with input from BA, Aso, and NP, MA, CA, JC, NP, FT, and MCA coordinated the trial implementation with local and national authorities, RA, and AO-H. MA, BF, HA, Aso, and LA led the data collection in the field with and Aso, and AP, each of them, MCA, JC, and NP and NP. Also, BC, BA, and KAB led the molecular laboratory work.\n", + "\n", + "header: Implications of all the available evidence\n", + "\n", + "Given the positive findings, both in Benin and Tanzania, for chlorfenapyr-pyrethroid LLINs, they are likely to become the first WHO-recommended LLINs impregnated with an insecticide class other than pyrethroids. The absence of superior efficacy of pyrioxyfen-pyrethroid LLINs compared with standard pyrethroid-only LLINs is consistent with the results of the previous Tanzania study and calls into question the role of the current pyrioxyfen-pyrethroid LLINs in future malaria vector strategies.\n", + "\n", + "header: Results\n", + "\n", + "Between May 23 and June 24, 2019, 53854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. The households were delineated into 61 clusters, with one subsequently excluded due to extensive seasonal flooding (figure). Baseline cross-sectional epidemiological and entomological surveys were conducted between October and November, 2019 (table 1). The malaria infection prevalence was 43 5% (1924 of 4428 participants, cluster range 15 1-72 796) and population self-reported LLIN usage was 95 7% (3913 of 4088 participants). Cluster demographics and malaria prevalence were similar between groups (table 1). Entomological inoculation rate was 0 68 _Plasmodium_ spp infective bites per person per night (cluster range 0 00-3 80) indoors and 0 26 per person per night (0 00-1 88) outdoors.\n", + "\n", + "Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54 300 households in an updated census, with 97 1% of households receiving at least one net per household. Active ingredients in the new nets were found to be within or higher than the acceptable target limits depending on LLIN brand (appendix p 4). Study net usage was highest (5532 [76 8%] of 7206 participants) at 9 months after distribution, following a second hang-up campaign, but had decreased by 24 months (4032 [60 6%] of 6654). Study net coverage and usage indicators were similar between study groups up to 18 months after net distribution. At 24 months, pyriproxyfen-pyrethroid LLIN usage and ownership was the lowest (appendix pp 5-6). Use of any type of LLIN (study LLINs and others) remained greater than 80% up to 24 months after distribution (appendix p 7).\n", + "\n", + "In the 2283 households that were randomly selected for post-intervention cohort follow-up, 3129 children were eligible, 1829 of whom were randomly selected, and consent was obtained for 1806 (figure). Among the 2849 and 2771 households randomly selected at 6 months and 18 months after LLIN distribution for the malaria prevalence cross-sectional surveys, 4781 (85 1%) of 5620 households consent, with a similar proportion in the two surveys. The remaining households were either not available during the visit (775 [13 8%] of) or declined to participate (64 [1 1%]; appendix p 8).\n", + "\n", + "Children aged 6 months-9 years enrolled for active case detection were monitored for 21 months, for a total follow-up time of 2645 4- child-years at risk. Loss to follow-up was similar between groups (figure). At enrolment, children were balanced on age, sex, and net usage. During the 21-month follow-up period, we detected 2135 malaria cases through active case detection (table 2). The mean malaria case incidence over 21 months of follow-up was 1 03 cases per child-year (95% CI 0 96-1 09) in the pyrethroid-only LLIN reference group, 0 84 cases per child-year (0 78-70 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 86, 95% CI 0 65-1 46; p = 0 - 28), and 0 56 cases per child-year (0 51-0 64) in the chlorfenapry-pyrethroid LLIN group (HR 0 54, 95% CI 0 - 42-0 70; p < 0 0001; table 2). The strongest effect was observed in the first year of follow-up in the chlorfenapry-pyrethroid group (HR 0 46, 95% CI 0 30-0 72; p = 0 - 0005; table 2). When combining active and passive visits, the number of cases detected nearly doubled; however, the effect size in comparison to the reference group was similar for both intervention nets (appendix p 9).\n", + "\n", + "Malaria infection prevalence was 23 5% (1037 of 4409 participants) at 6 months and 34 9% (1554 of 4450) at 18 months after net distribution (table 3). There was strong evidence for a reduction of malaria infection prevalence in the chlorfenapry-pyrethroid LLIN group at 6 months (15 7%; odds ratio [OR] 0 47, 95% CI 0 32-0 69; p = 0 0002) and at 18 months (27 9%; OR 0 60 - 60, 0 - 43-0 85; p = 0 004) compared with the reference group (28 - 0% at 6 months and 38 7% at 18 months; table 3). In the pyriproxyfen-pyrethroid group, there was no evidence for a reduction in malaria prevalence at 6 months (26 9%; OR 0 - 92, 95% CI 0 63-1 35; p = 0 - 67) or 18 months (38 2%; OR 0 97 0, 0 69-1 37; p = 0 87) compared with the reference group. Results were similar for the per-protocol analysis (appendix p 1). There was no evidence of a reduction in moderate to severe anaemia prevalence in either intervention group (table 3). The post-hoc analysis adjusting for covariates used in the randomisation did not change the interpretation of the results (appendix pp 12-13).\n", + "\n", + "\n", + "Adverse events related to study nets were reported in 528 (45-496) of 1162 participants surveyed at 1 month after net distribution. The highest proportion of adverse events was reported in the pyrethroid-only LLIN group (247 [63-8%] of 387 participants), followed by the pyriproyfen-pyrethroid LLIN group (212 [52-5%] of 404) and then the chlorfenapy-pyrethroid LLIN group (69 [18-6%] of 371). Facial burning (392 [33-7%] of 1162 participants), and skin irritation or itchiness (244 [20-9%]) were the most common adverse events in all groups. Adverse events were rare in all three groups at all later timepoints (appendix P 14-15). We recorded 44 serious adverse events (including three deaths) in the cohort children, with 32 (72-7%) documented as severe malaria (11 cases in the pyriproyfen-pyrethroid LLIN group, ten in the chlorfenapy-pyrethroid LLIN group, and 11 in the pyrethroid-only LLIN group). No serious adverse events related to net use were reported.\n", + "\n", + "A total of 259265 mosquitoes were collected over 3840 collection nights indoors and outdoors, of which 20-9% (29814 from indoors and 24436 from outdoors) were malaria vectors, with _An gambiae_ sensu that the most predominant. Overall, indoor entomological inoculation rate was lower in both intervention groups than in the reference group, with a mean entomological inoculation rate of 0-90 infectious bites per night per person in the chlorfenapy-pyrethroid LLIN group (rate ratio [RR] 0-34, 95% CI 0-18-0-62; p=0-0005), 0-12 in the pyriproyfen-pyrethroid LLIN group (RR 0-42, 0-2-3-0-74; p=0-0028), and 0-28 in the pyrethroid-only LLIN group (table 4). Mean indoor vector density appeared to be lower in the chlorfenapy-pyrethroid LLIN group (10-18 bites per person per night, density ratio 0-44, 95% CI 0-2-30-84; p=0-014), and in the pyriproyfen-pyrethroid LLIN group (13-6 bites per person per night, density ratio 0-58, 0-30-1-12; p=0-011) than in the reference group (23-0 bites per person per night, but the latter difference was not statistically significant (table 4). Adjusting for baseline vector density in the models gave similar results (appendix P 16). There was no significant difference in sporozoite rate in any of the intervention groups compared with the reference group (table 4).\n", + "\n", + "Reduction in outdoor entomological inoculation rate compared with the reference group was observed only in the chlorfenapy-pyrethroid LLIN group (RR 0-30, 95% CI 0-13-0-67; p=0-0035; appendix P 17). There was very weak evidence for a reduction in outdoor entomological inoculation rate in the pyriproyfen-pyrethroid LLIN group compared with the pyrethroid-only group (RR 0-58, 0-30-1-13; p=0-11). Similar effects were observed for outdoor vector density for both intervention nets (appendix P 17).\n", + "\n", + "Post-intervention pyrethrold resistance intensity was high across the study groups in _An gambiae_ sensu lato, with mean mortality of 85% or less after exposure to 10 times the diagnostic concentrations of alpha-cypentrohin in year 2 (appendix P 18). No resistance to chlorfenapy was observed during either year after net distribution (appendix P 18). Exposure of _An gambiae_ sensu lato to pyriproyfen led to a high reduction in fecundity rate relative to unexposed control mosquitoes over the 2 years after net distribution (73-2%, 95% CI 62-2-82-4 in year 1, and 76-6%, 66-6-84-9 in year 2).\n", + "\n", + "header: Discussion\n", + "\n", + "This trial assessed the efficacy of two dual active-ingredient LLINs in an area of Benin with malaria vectors that are highly resistant to pyrethroids and found that chlorfenapy-pyrethroid LLINs provided significantly better protection against malaria for up to 2 years after net distribution compared with pyrethroid-only LLINs. Children aged 6 months-10 years living in clusters that received chlorfenapy-pyrethroid LLINs had a 46% lower incidence of malaria over 2 years after LLIN distribution;\n", + "\n", + "\\begin{table}\n", + "\\begin{tabular}{c c c c c c c c c c} & **Malaria infection** & \\multicolumn{6}{c}{**Anaemia in children younger than 5 years**} \\\\ \\hline n/N & Prevalence & OR & 95\\% CI & p valuea & n/N & Prevalence & OR & 95\\% CI & p valuea \\\\ \\hline\n", + "**6 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 412/1471 & 28\\(\\,\\)0\\% & 1 (ref) & – & – & 992/41 & 41\\(\\,\\)1\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 394/1463 & 26\\(\\,\\)9\\% & 0\\(\\,\\)92 & 0\\(\\,\\)\n", + "\n", + "63\\(\\,\\)45 & 0\\(\\,\\)67 & 117/250 & 46\\(\\,\\)8\\% & 124 & 0.71–218 & 0.45 \\\\ LLIN group & & & & & & & & & \\\\ Chlorfenapy-pyrethroid & 231/1475 & 157\\(\\,\\)\\% & 0\\(\\,\\)47 & 0\\(\\,\\)32\\(\\,\\)0\\(\\,\\)669 & 0\\(\\,\\)0002 & 82/241 & 34\\(\\,\\)0\\% & 0.71 & 0.40–126 & 0.24 \\\\ LLIN group & & & & & & & & & \\\\\n", + "**18 months after net distribution** & & & & & & & & \\\\ Pyrethroid-only LLIN group & 576/14/849 & 38\\(\\,\\)7\\% & 1 (ref) & – & – & 118/25 & 46\\(\\,\\)8\\% & 1 (ref) & – & – \\\\ Pyriproyfen-pyrethroid & 564/14/83 & 38\\(\\,\\)2\\% & 0\\(\\,\\)97 & 0\\(\\,\\)69\\(\\,\\)13\\(\\,\\)07 & 0\\(\\,\\)87 & 108/245 & 44\\(\\,\\)1\\% & 0.84 & 0.40–179\n", + "\n", + "\n", + "participants of any age had 53% lower odds of malaria infection at 6 months and 40% lower odds at 18 months after LLIN distribution, and were exposed to a 66% reduction in entomological inoculation rate compared with those living in clusters that received pyrethroid-only LLINs. Similar gains were not observed with the pyriproxyfen-pyrethroid LLIN, with a small reduction in malaria incidence in the first year of the study that was attenuated in year 2, and no effect on malaria infection prevalence in either year, compared with the pyrethroid-only reference group. However, a 58% reduction in indoor entomological inoculation rate was detected with the pyriproxyfen-pyrethroid LLIN. Both dual active-ingredient LLINs provided a similar safety profile compared with standard pyrethroid-only LLINs, with short-lasting skin irritation and facial burning (commonly associated with the pyrethroid alpha-Cybermethrin) most frequently reported in participants using pyrethroid-only LLINs and pyriproxyfen-pyrethroid LLINs. A similar observation has been reported in another randomised controlled trial evaluating the same LLINs, and this is likely to be associated with the high concentration of alpha-Cybermethrin in those nets compared with the chlorfenapy-pyrethroid LLINs.\n", + "\n", + "To our knowledge, this is the second cluster-randomised trial to provide strong evidence of increased efficacy of chlorfenapy-pyrethroid LLINs relative to pyrethroid-only LLINs for malaria control in areas with pyrethroid-resistant vectors. Chlorfenapyr insecticide on nets has already shown improved control of pyrethroid-resistant _An gambiae_ in laboratory and semi-field experimental huts against resistant malaria vectors.3- The previous trial in Tanzania reported a malaria case incidence reduction of 44%, a 55% decrease in odds of malaria prevalence, and 85% reduction in entomological inoculation rate compared with the pyrethroid-only group, consistent with these results, despite the differing malaria vector populations and intensity of pyrethroid resistance in the mosquitoes.4 In both trials, per-protocol analyses suggested that individuals living in the chlorfenapy-pyrethroid clusters benefited regardless of whether they were using a study net, suggesting a community effect of the net, which was likely to be obtained by the overall reduction of mosquito density, which remained considerably lower than in the pyrethroid-only group in both years of this trial after net distribution. Community effect is also indicated by the reduction in both indoor and outdoor entomological indices in the chlorfenapy-pyrethroid group in the present study.\n", + "\n", + "Similar to the trial in Tanzania,4 the pyriproxyfen-pyrethroid LLINs we tested did not provide additional protection against malaria infection or disease compared with pyrethroid-only LLINs. However, there was evidence of an effect on indoor transmission, with the strongest effect seen in the first year after net distribution. Tino and colleagues5 have previously reported a 12% reduction in malaria incidence and 49% reduction in entomological \n", + "inoculation rate with a pyriproxyfen-pyrethroid LLIN compared with pyrethroid-only LLINs over 18 months in a stepped-wedge randomised trial in Burkina Faso. The different study design, length of follow-up, and brand of net might explain the differences seen between the two studies. In Benin, laboratory and semi-field experimental hut studies have shown the superior efficacy of pyriproxyfen-pyrethroid nets on entomological indicators compared with standard pyrethroid-only LLINs,2,3 and are consistent with the decrease in indoor vector density observed in our trial. However, the decrease in indoor vector density did not translate into significant disease reduction, suggesting that a larger effect on malaria transmission (entomological inoculation rate) is crucial to provide community protection. Although lower net usage in the pyriproxyfen-pyrethroid LLIN group could have partially contributed to the lack of effect, we are also assessing textile durability, sterilisation effects, and chemical content of pyriproxyfen-pyrethroid LLINs to fully understand these results.\n", + "\n", + "With several trials now showing the superior efficacy of next-generation LLINs over pyrethroid-only nets, the importance of developing new active ingredients to use on nets in the future is brought to the fore. The distribution of next-generation LLINs across sub-Saharan Africa has already begun, with the development of the brands of chlorfenapry-pyrethroid nets underway,3 as well as the development of chlorfenapry product formulations for indoor residual spraying.3 Although chlorfenapry-pyrethroid nets offer a superior alternative to pyrethroid-only nets in areas of pyrethroid resistance, to preserve their effectiveness optimal resistance-management strategies should be used. There was no evidence of the development of resistance to chlorfenapry during the 2 years of this trial; however, the wide-scale deployment of one type of insecticide risks the rapid development of resistance, which could result in a similar situation to the current widespread resistance to pyrethroids. The nets should be deployed ideally alongside other insecticides as part of a strategy aimed to reduce selection pressure for development of resistance in mosquito vectors. Given the significant effect of the pyriproxyfen-pyrethroid LLINs on malaria transmission during the first year after net distribution, additional studies are necessary to evaluate the potential value of active ingredients such as pyriproxyfen, which are not primarily intended to kill resistant adult mosquitoes but rather to sterilise them. There might still be a role for these hormone growth-regulator insecticides in combination with other active ingredients for net treatment in long-term resistance management.\n", + "\n", + "If WHO policy recommendations are made on the basis of this trial's results, future chlorfenapry-pyrethroid nets might not have to undergo the rigorous trial testing that Interceptor G2 has. Caution should, however, be taken to assess the comparative efficacy, quality, and durability of the second-in-class chlorfenapry-pyrethroid nets as they might use different concentrations of chlorfenapry, different pyrethroids, or different net materials. Considering the time and resources required to generate evidence of epidemiological effect using randomised trials, non-inferiority experimental hut trials, recently proposed by WHO,3 might be a useful alternative for second-in-class chlorfenapry-pyrethroid LLINs. Further work to investigate the capacity of such entomological studies to predict the performance of the trial nets against clinical malaria is ongoing.3\n", + "\n", + "Footnote 3: endnote: [https://www.thelanct.com/Vol.401](https://www.thelanct.com/Vol.401). February 11, 2023\n", + "\n", + "Our study has some limitations. First, net ownership and use were high throughout the study; however, this did not always equate to study net use, which was approximately 60% at 2 years after net distribution, with overall usage of greater than 80%. Similar findings have been observed in other bednet trials, and probably indicate populations choosing to discard damaged nets when other nets are readily available. Second, the three types of nets were not completely identical and differences in textile material and size might have resulted in differential net usage between the groups. As our net use indicator was primarily self-reporting, it is also possible that net usage was overestimated. Third, our primary measure of incidence was based on active detection, involving visits every 2 weeks or every month. The passive data collected alongside the trial suggests that this frequency of visit resulted in some cases being missed, meaning the absolute effect of the nets might be greater than reported here. However, the relative effect of the nets remained similar when the active and passive data were combined. Finally, cost-effectiveness was not assessed; however, the trial in Tanzania' showed that dual active-ingredient LLINs can be highly cost-effective and even cost-saving compared with pyrethroid-only LLINs when providing sufficient protection.\n", + "\n", + "New classes of vector control interventions currently require clinical trial evaluation in two different geographical settings, after 24 months of community use.4 Currently, the only class of next-generation LLIN to receive a WHO recommendation are the PBO synergism nets. However, previous publications have shown concerns about the durability of these nets.5 This trial provides the second key evidence for the effectiveness of chlorfenapry-pyrethroid nets in an area with pyrethroid-resistant vectors and will therefore support a WHO policy recommendation. However, the effect of the nets was reduced in the second year of the trial, and there is no evidence for the efficacy of the nets in their third year of use. Many studies report that the durability of nets is much less than the 3 years required to be designated as long lasting.5 The next-generation LLINs might face the same problems of fabric integrity and durability of insecticidal content unless standards of manufacture are improved. Different channels of distribution (eg, school-based, antenatal care visits, or expanded programme immunisation visits) could play a key role in maintaining high levels of net use in communities.5\n", + "Although generating this evidence to support a WHO recommendation for another class of bednet is a key turning point in malaria control, without new insecticides and new ways to deploy them, we risk repeating the mistakes of the past. Now is the time for more innovation and less complacency.\n", + "\n", + "header: Abstract\n", + "\n", + "Efficacy of pyriproxyfen-pyrethroid long-lasting insecticidalnets (LLINs) and chlorfenapyr-pyrethroid LLINs compared with pyrethroid-only LLINs for malaria control in Benin: a cluster-randomised, superiority trial\n", + "\n", + "Manfred Accomphesi\n", + "\n", + "\n", + "Background New classes of long-lasting insecticidal nets (LLINs) combining mixtures of insecticides with different modes of action could put malaria control back on track after rebounds in transmission across sub-Saharan Africa. We evaluated the relative efficacy of pyriproxyfen-pyrethroid LLINs and chlorfenapyr-pyrethroid LLINs compared with standard LLINs against malaria transmission in an area of high pyrethroid resistance in Benin.\n", + "\n", + "header: Procedures\n", + "\n", + "The nets tested in the trial were: Royal Guard (Disease Control Technologies, Greer, SC, USA), polyethylene netting (I20 deniers incorporating 220 mg/m2 pyriproyfen and 220 mg/m2 alpha-cypermethrin); Interceptor G2 (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 chlorfenapyr and 100 mg/m2 alpha-cypermethrin); and the reference net, Interceptor (BASF SE, Ludwigshafen, Germany), polyester netting (100 deniers coated with 200 mg/m2 of alpha-cypermethrin). Nets were distributed in collaboration with the Benin National Malaria Control Program. Households were asked to collect their nets from a central point and received one net per every two residents in their household, rounded up for odd numbers. Nets already in houses were not removed but households were encouraged to use the new study nets. Additionally, net hang-up campaigns to encourage net use took place at 1 month and 7 months after distribution. Net coverage surveys to assess net ownership and usage were done at 1, 9, and 24 months after distribution. Throughout the follow-up period, children enrolled in the analysis cohort and participants enrolled in the cross-sectional surveys were also asked about their net use.\n", + "\n", + "Insecticide content at baseline was assessed on 30 randomly selected new nets per LLIN brand, by gas chromatography with Flame Ionisation Detection, at the\n", + "Centre Wallon de Recherches Agronomiques, Gembloux, Belgium. The insecticidal and physical durability of the study nets is being assessed in a separate study.\n", + "\n", + "Due to the COVID-19 pandemic, there was a 3-month gap between the distribution of the nets and the enrolment of children in the cohort. At enrolment and at 1 year after distribution (April, 2021), children were treated with antimalarial drugs (atremether-lumefantrinity to clear any underlying infection. The cohort was monitored from August, 2020, to April, 2022, a 21-month period, which encompassed the first 2 years after net distribution. Study nurses visited children every 2 weeks during the transmission season (April-October) and every 1 month in the dry season (November-March). At each visit, children were clinically examined and if they were febrile or had a history of fever in the past 48 h, they were tested for malaria using a malaria rapid diagnostic test. If the test was positive, the child was treated with artemether-lumefantrine, according to national guidelines.\n", + "\n", + "During cross-sectional surveys, all participants were tested for malaria using a malaria rapid diagnostic test and received treatment if the test was positive, and children younger than 5 years were tested for anaemia. Information regarding net ownership and usage, and other household-level indicators were collected at the same time.\n", + "\n", + "Entomological monitoring was also delayed and took place every 3 months between June, 2020, and April, 2022. Volunteers recruited from study clusters collected mosquitoes that landed on their legs between 1900 h and 0700 h for 1 night at four randomly selected houses in each cluster at each timepoint. Mosquitoes were morphologically identified to species and a subsample of _Anopheles_ spp was tested for molecular species using PCR.(r) A random sample of _Anopheles_ spp (up to 30% from each nightly catch in each cluster) were tested for sporozoites using the ELISA circumsporozoite protein technique.(r)\n", + "\n", + "header: Methods\n", + "\n", + "We conducted a cluster-randomised, superiority trial in Zou Department, Benin. Clusters were villages or groups of villages with a minimum of 100 houses. We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (I:1:1): to receive nets containing either pyriproxyfen and alpha-Cypermethrin (pyrethroid), chlorfenapyr and alpha-Cypermethrin only (reference). Households received one LLIN for every two people. The field team, laboratory staff, analyses team, and community members were masked to the group allocation. The primary outcome was malaria case incidence measured over 2 years after net distribution in a cohort of children aged 6 months-10 years, in the intention-to-treat population. This study is ongoing and is registered with ClinicalTrials.gov, NCT03931473.\n", + "\n", + "Findings Between May 23 and June 24, 2019, 53 854 households and 216 289 inhabitants were accounted for in the initial census and included in the study. Between March 19 and 22, 2020, 115 323 LLINs were distributed to 54030 households in an updated census. A cross-sectional survey showed that study LLIN usage was highest 9 months after distribution (5532 [76 * 986] of 7206 participants), but decreased by 24 months (4032 [60 * 696] of 6654). Mean malaria incidence over 2 years after LLIN distribution was 1-03 cases per child-year (95% CI 0 * 96-1 * 09) in the pyrethroid-only LLIN reference group. 0 * 84 cases per child-year (0.78-0 * 90) in the pyriproxyfen-pyrethroid LLIN group (hazard ratio [HR] 0 * 86, 95% CI 0 * 65-1* 14; p=0 * 28), and 0 * 56 cases per child-year (0 * 51-0 * 61) in the chlorfenapyr-pyrethroid LLIN group (HR 0 * 54, 95% CI 0 * 42-0 * 70; p<0 * 0001).\n", + "\n", + "Interpretation Over 2 years, chlorfenapyr-pyrethroid LLINs provided greater protection from malaria than pyrethroid-only LLINs in an area with pyrethroid-resistant mosquitoes. Pyriproxyfen-pyrethroid LLINs conferred protection similar to pyrethroid-only LLINs. These findings provide crucial second-trial evidence to enable WHO to make policy recommendations on these new LLIN classes. This study confirms the importance of chlorfenapyr as an LLIN treatment to control malaria in areas with pyrethroid-resistant vectors. However, an arsenal of new active ingredients is required for successful long-term resistance management, and additional innovations, including pyriproxyfen, need to be further investigated for effective vector control strategies.\n", + "\n", + "header: Funding UNITAID, The Global Fund.\n", + "\n", + "Pyrethroid-treated long-lasting insecticidal nets (LLINs) are the main malaria prevention intervention in sub-Saharan Africa and have been the major contributor to the estimated 1 * 5 billion malaria cases and 7 * 6 million malaria deaths averted in the past two decades. However, since 2015, the decline in malaria cases has stalled, and between 2019 and 2020, a rebound in malaria transmission was reported in some areas of sub-Saharan Africa.1 This rebound is likely to be a consequence of the continued spread of resistance to pyrethroid insecticides in malaria-transmitting mosquitoes, coinciding with a plateau in malaria control investment, leading to suboptimal coverage of interventions. Urgent actions are needed to prevent malaria resurgences, which were previously observed in sub-Saharan Africa in the 1980s after malaria control measures were scaled down.2\n", + "In the past 10 years, new insecticide-treated nets containing non-pyrethroid insecticides and insecticide synergists, in combination with pyrethroids, have been shown to be safe and efficacious against malaria mosquito vectors.14 The first net combined a pyrethroid insecticide and the synergistic piperonyl butoxide (PBO) and, following a randomised controlled trial,1 received a WHO policy recommendation in 2017. Other next-generation LLINs have shown encouraging results against resistant vectors in laboratory and small-scale entomological studies.47 One of these nets is a dual active-ingredient LLIN combining a pyrethroid and a pyrrole (chlorfenapyr). Both insecticides lead to mosquito mortality, with chlorfenapyr disrupting the production of cellular energy rather than targeting the nervous system, as pyrethroids do. Another dual active-ingredient LLIN combines a pyrethroid with an insect growth regulator (pyriprosyfen), which leads to sterility in exposed adult mosquitoes.\n", + "\n", + "The first randomised trial of these two products was conducted in Tanzania and showed that the chlorfenapyr-pyrethroid LLINs nearly halved malaria infection over 2 years in villages that received chlorfenapyr-pyrethroid LLINs compared with villages that received pyrethroid-only LLINs. PBO-pyrethroid LLINs were consistently found to be more effective than pyrethroid-only LLINs; however, the duration of the superior effect varied from 12 months to 21 months according to the different trials.\n", + "\n", + "header: Methods\n", + "\n", + "We conducted a three-group, cluster-randomised, superiority trial in three districts (Cove, Zagnanado, and Ouinhi) in Zou Department, central Benin. Malaria is highly endemic in the region, with a peak during the wet season (May-October). The main vector control strategy in the study area is use of pyrethroid-only LLINs distributed en masse once every 3 years, and through routine service delivery by antenatal clinics and vaccination programmes. The primary vectors in the setting are _Anopheles coluzzi_ and _Anopheles gambiae_. There is a high intensity of pyrethroid resistance in the main local vector populations.11\n", + "\n", + "A demographic census of all 123 villages in the study area was done in June, 2019. Clusters consisted of villages, or several villages. To reduce contamination between study groups, clusters consisted of a core (minimum 100 households) surrounded by a buffer, ensuring that core areas of neighbouring clusters were separated by at least 1000 m. Households in the buffer and core received the intervention, but measurement of outcomes only took place in core areas. A detailed description of the study protocol is published elsewhere.\"\n", + "\n", + "Ethics approval was obtained from the Benin Ministry of Health ethics committee (6/30/MS/DC/SGM/DRFMT/CNERS/SA), the London School of Hygiene & Tropical Medicine ethics committee (16237), and the WHO Research Ethics Review Committee (ERC.0003153). The trial was independently monitored by a data safety monitoring board and a trial steering committee.\n", + "\n", + "Epidemiological effect was estimated through measuring malaria case incidence in the 2 years after net distribution by active case detection in a cohort of children. A cohort of approximately 30 children aged 6 months-9 years randomly selected (by simple random sampling using a random number generator) from each cluster (1800 in total) was enrolled in July, 2020. Children were eligible for inclusion if they were permanent residents in the cluster, had no serious illnesses, and written informed consent was obtained from their guardians.\n", + "\n", + "Malaria infection prevalence (in all ages) was measured by cross-sectional surveys at 6 months and 18 months after net distribution. 72 individuals residing in the core of each cluster were randomly selected (using a random number generator) from the census for each cross-sectional survey. Each prevalence surveyed collected data on malaria infection, measured using malaria rapid diagnostic tests (CareStart malaria HRP2/PLDH [pf/pan] combo, DiaSy, UK), net ownership and use, sex, and household assets (as a proxy for socioeconomic status).\n", + "\n", + "Entomological effects were measured using human landing catches in four randomly selected houses every 3 months in each cluster. Insecticide resistance intensity was measured in two clusters per group (six clusters total) at baseline and in each follow-up year.\n", + "\n", + "Written informed consent was obtained from all participants, or from guardians for participants younger than 18 years. Assent was sought for children aged between 10 and 18 years. Written consent was also obtained from volunteer mosquito collectors who were all aged 18 years or older and who were vaccinated against yellow fever. All participation was voluntary, and participants could withdraw at any time. Study investigators sought consent in French or local languages.\n", + "\n", + "header: Study design and participants: Randomisation and masking\n", + "\n", + "We used restricted randomisation to randomly assign 60 clusters to one of three LLIN groups (1:1:1), to receive nets containing either pyriproxyfen and alpha-cypermethrin (pyrethroid), chlorfenapyr and alpha-cypermethrin, or alpha-cypermethrin only (reference). Restricted randomisation was used to ensure balanced cluster allocation between study groups with respect to population size, malaria infection prevalence (measured in the baseline survey), district (n=3), and socioeconomic status.\n", + "\n", + "To mask the net types from the participants and the field workers, the nets were designed to look as similar as possible. Each net was rectangular, was requested to be the same size (1-8 m length, 1-9 m width, and 1-8 m height), and blue. To differentiate the nets in the field, a colour-coded loop was attached to the net. All data analyses were performed masked.\n", + "\n", + "header: Table 1: Baseline characteristics\n", + "footer: Data are n or %; n/N unless otherwise stated. EIR=entomological inoculation rate. LLIN=long-lasting insecticidal net. *Proportion of households in the poorest tercile based on the wealth index of the entire study area. †Anaemia defined as haemoglobin concentration of <10 g/dL. ‡Malaria vectors included Anopheles gambiae, Anophelesfunestus, and Anopheles nili\n", + "columns: ['Unnamed: 0_level_0 - Clusters', 'Pyriproxyfen-pyrethroid LLIN group - Clusters', 'Chlorfenapyr-pyrethroid LLIN group - Clusters', 'Pyrethroid-only LLIN group - Clusters']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of clusters\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"20\",\"Pyrethroid-only LLIN group - Clusters\":\"20\"},\"1\":{\"Unnamed: 0_level_0 - Clusters\":\"Total population in core and buffer areas\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"74822\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"70989\",\"Pyrethroid-only LLIN group - Clusters\":\"69239\"},\"2\":{\"Unnamed: 0_level_0 - Clusters\":\"Mean population in core area of clusters (range)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"1096.1 (225-4524)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"1120.5 (243-5040)\",\"Pyrethroid-only LLIN group - Clusters\":\"1058.1 (252-5217)\"},\"3\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of people per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"4.0 (2.3)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"3.9 (2.3)\",\"Pyrethroid-only LLIN group - Clusters\":\"4.1 (2.4)\"},\"4\":{\"Unnamed: 0_level_0 - Clusters\":\"Number of sleeping spaces per household, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"2.2 (1.2)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"2.1 (1.1)\",\"Pyrethroid-only LLIN group - Clusters\":\"2.2 (1.2)\"},\"5\":{\"Unnamed: 0_level_0 - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\",\"Pyrethroid-only LLIN group - Clusters\":\"Household and participant characteristics in the baseline cross-sectional survey\"},\"6\":{\"Unnamed: 0_level_0 - Clusters\":\"Low socioeconomic status*\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"35.8%; 529\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"36.2%; 533\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"29.0%; 431\\/1487\"},\"7\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN ownership (at least one LLIN in the household)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"96.4%; 1426\\/1479\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"97.1%; 1431\\/1474\",\"Pyrethroid-only LLIN group - Clusters\":\"95.1%; 1415\\/1488\"},\"8\":{\"Unnamed: 0_level_0 - Clusters\":\"LLIN usage in all age groups the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"95.8%; 1312\\/1370\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"94.9%; 1258\\/1326\",\"Pyrethroid-only LLIN group - Clusters\":\"96.5%; 1343\\/1392\"},\"9\":{\"Unnamed: 0_level_0 - Clusters\":\"Malaria infection prevalence in all age groups\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"43.1%; 636\\/1475\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"40.7%; 598\\/1468\",\"Pyrethroid-only LLIN group - Clusters\":\"46.5%; 690\\/1485\"},\"10\":{\"Unnamed: 0_level_0 - Clusters\":\"Anaemia prevalence in children aged 6 months-4 years\\u2020\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"53.3%; 136\\/255\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"53.3%; 131\\/246\",\"Pyrethroid-only LLIN group - Clusters\":\"50.2%; 122\\/243\"},\"11\":{\"Unnamed: 0_level_0 - Clusters\":\"Entomological characteristics\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Entomological characteristics\",\"Pyrethroid-only LLIN group - Clusters\":\"Entomological characteristics\"},\"12\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night indoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"32.9 (28.9)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"21.6 (21.0)\",\"Pyrethroid-only LLIN group - Clusters\":\"29.2 (25.3)\"},\"13\":{\"Unnamed: 0_level_0 - Clusters\":\"Human biting density per person per night outdoors\\u2021, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"20.3 (17.6)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"16.4 (17.4)\",\"Pyrethroid-only LLIN group - Clusters\":\"20.6 (20.2)\"},\"14\":{\"Unnamed: 0_level_0 - Clusters\":\"Indoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.62 (0.93)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.48 (0.65)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.96 (1.18)\"},\"15\":{\"Unnamed: 0_level_0 - Clusters\":\"Outdoor EIR per person per night, mean (SD)\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"0.27 (0.45)\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"0.17 (0.44)\",\"Pyrethroid-only LLIN group - Clusters\":\"0.33 (0.45)\"},\"16\":{\"Unnamed: 0_level_0 - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\",\"Pyrethroid-only LLIN group - Clusters\":\"Children (aged 6 months-10 years) at cohort enrolment\"},\"17\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of children younger than 5 years\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"52.3%; 316\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"50.6%; 304\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"53.6%; 322\\/601\"},\"18\":{\"Unnamed: 0_level_0 - Clusters\":\"Proportion of female children\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"47.2%; 285\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"48.4%; 291\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"48.8%; 293\\/601\"},\"19\":{\"Unnamed: 0_level_0 - Clusters\":\"Net usage the night before survey\",\"Pyriproxyfen-pyrethroid LLIN group - Clusters\":\"99.0%; 598\\/604\",\"Chlorfenapyr-pyrethroid LLIN group - Clusters\":\"98.7%; 593\\/601\",\"Pyrethroid-only LLIN group - Clusters\":\"99.2%; 596\\/601\"}}\n", + "\n", + "header: Table 2: Malaria case incidence in children aged 6 months–10 years per year of follow-up and overall (including active visits only)\n", + "footer: Each intervention was compared with the pyrethroid-only LLIN group for the same timepoint. LLIN=long-lasting insecticidal net. *A p value of <0·025 was considered significant after Bonferroni correction\n", + "columns: ['Unnamed: 0_level_0 - Overall', 'Number of clinical malaria episodes - Overall', 'Child- years of follow-up - Overall', 'Incidence, cases per child-year (95% Cl) - Overall', 'Hazard ratio - Overall', '95%Cl - Overall', 'p value* - Overall']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"897\",\"Child- years of follow-up - Overall\":\"874.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.03 (0.96-1.09)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"1\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"744\",\"Child- years of follow-up - Overall\":\"883.8\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.84 (0.78-0.90)\",\"Hazard ratio - Overall\":\"0.86\",\"95%Cl - Overall\":\"0.65-1.14\",\"p value* - Overall\":\"0.28\"},\"2\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"494\",\"Child- years of follow-up - Overall\":\"887.3\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.56 (0.51-0.61)\",\"Hazard ratio - Overall\":\"0.54\",\"95%Cl - Overall\":\"0.42-0.70\",\"p value* - Overall\":\"<0.0001\"},\"3\":{\"Unnamed: 0_level_0 - Overall\":\"Year 1\",\"Number of clinical malaria episodes - Overall\":\"Year 1\",\"Child- years of follow-up - Overall\":\"Year 1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 1\",\"Hazard ratio - Overall\":\"Year 1\",\"95%Cl - Overall\":\"Year 1\",\"p value* - Overall\":\"Year 1\"},\"4\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"267\",\"Child- years of follow-up - Overall\":\"344.4\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.77 (0.69-0.87)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"5\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"211\",\"Child- years of follow-up - Overall\":\"342.7\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.62 (0.54-0.70)\",\"Hazard ratio - Overall\":\"0.83\",\"95%Cl - Overall\":\"0.51-1.35\",\"p value* - Overall\":\"0.46\"},\"6\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"124\",\"Child- years of follow-up - Overall\":\"349.2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.36 (0.30-0.42)\",\"Hazard ratio - Overall\":\"0.46\",\"95%Cl - Overall\":\"0.30-0.72\",\"p value* - Overall\":\"0.0005\"},\"7\":{\"Unnamed: 0_level_0 - Overall\":\"Year 2\",\"Number of clinical malaria episodes - Overall\":\"Year 2\",\"Child- years of follow-up - Overall\":\"Year 2\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"Year 2\",\"Hazard ratio - Overall\":\"Year 2\",\"95%Cl - Overall\":\"Year 2\",\"p value* - Overall\":\"Year 2\"},\"8\":{\"Unnamed: 0_level_0 - Overall\":\"Pyrethroid-only LLIN group\",\"Number of clinical malaria episodes - Overall\":\"630\",\"Child- years of follow-up - Overall\":\"529.9\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"1.19 (1.10-1.29)\",\"Hazard ratio - Overall\":\"1 (ref)\",\"95%Cl - Overall\":null,\"p value* - Overall\":null},\"9\":{\"Unnamed: 0_level_0 - Overall\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"533\",\"Child- years of follow-up - Overall\":\"541.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.98 (0.90-1.07)\",\"Hazard ratio - Overall\":\"0.88\",\"95%Cl - Overall\":\"0.68-1.13\",\"p value* - Overall\":\"0.31\"},\"10\":{\"Unnamed: 0_level_0 - Overall\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Number of clinical malaria episodes - Overall\":\"370\",\"Child- years of follow-up - Overall\":\"538.1\",\"Incidence, cases per child-year (95% Cl) - Overall\":\"0.69 (0.62-0.76)\",\"Hazard ratio - Overall\":\"0.57\",\"95%Cl - Overall\":\"0.45-0.73\",\"p value* - Overall\":\"<0.0001\"}}\n", + "\n", + "header: Table 3: Malaria infection and anaemia prevalence in the study population at 6 months and 18 months after net distribution (intention-to-treat analysis)\n", + "footer: Anaemia was defined as a haemogloblin concentration of <10 g/dL. LLIN=long-lasting insecticidal net. OR=odds ratio. *A p value of <0·025 was considered significant after Bonferroni correction\n", + "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution', 'Malaria infection - n/N - 6 months after net distribution', 'Malaria infection - Prevalence - 6 months after net distribution', 'Malaria infection - OR - 6 months after net distribution', 'Malaria infection - 95% Cl - 6 months after net distribution', 'Malaria infection - p value* - 6 months after net distribution', 'Anaemia in children younger than 5 years - n/N - 6 months after net distribution', 'Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution', 'Anaemia in children younger than 5 years - OR - 6 months after net distribution', 'Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution', 'Anaemia in children younger than 5 years - p value* - 6 months after net distribution']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"412\\/1471\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"28.0%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"99\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"41.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"394\\/1463\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"26.9 %\",\"Malaria infection - OR - 6 months after net distribution\":\"0.92\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.63-1.35\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.67\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"117\\/250\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.24\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.71-2.18\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.45\"},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"231\\/1475\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"15.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.47\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.32-0.69\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0002\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"82\\/241\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"34.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.71\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.26\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0-24\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Malaria infection - p value* - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"18 months after net distribution\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"18 months after net distribution\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyrethroid-only LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"576\\/1489\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.7%\",\"Malaria infection - OR - 6 months after net distribution\":\"1 (ref)\",\"Malaria infection - 95% Cl - 6 months after net distribution\":null,\"Malaria infection - p value* - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/252\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"46.8%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1 (ref)\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":null,\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Pyriproxyfen-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"564\\/1478\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"38.2%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.97\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.69-1.37.\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.87\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"108\\/245\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"44.1%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"0.84\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.40-1.79\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.65\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1 - 6 months after net distribution\":\"Chlorfenapyr-pyrethroid LLIN group\",\"Malaria infection - n\\/N - 6 months after net distribution\":\"414\\/1483\",\"Malaria infection - Prevalence - 6 months after net distribution\":\"27.9%\",\"Malaria infection - OR - 6 months after net distribution\":\"0.60\",\"Malaria infection - 95% Cl - 6 months after net distribution\":\"0.43-0.85\",\"Malaria infection - p value* - 6 months after net distribution\":\"0.0041\",\"Anaemia in children younger than 5 years - n\\/N - 6 months after net distribution\":\"118\\/246\",\"Anaemia in children younger than 5 years - Prevalence - 6 months after net distribution\":\"48.0%\",\"Anaemia in children younger than 5 years - OR - 6 months after net distribution\":\"1.08\",\"Anaemia in children younger than 5 years - 95% Cl - 6 months after net distribution\":\"0.51-2.28\",\"Anaemia in children younger than 5 years - p value* - 6 months after net distribution\":\"0.84\"}}\n", + "\n", + "header: Introduction: Added value of this study\n", + "\n", + "To our knowledge, this is the second study aiming to compare the efficacy of the next generation of LLINs combining _p_iprosyfen or chlorfenapyr and pyrethroid versus standard pyrethroid-only LLINs, and the first of its kind to be conducted in west Africa. This trial confirmed the superior efficacy of chlorfenapyr-pyrethroid LLINs, in terms of malaria case incidence, prevalence, and transmission in children, over 2 years of use in the community, in an area of moderate malaria transmission and with high insecticide resistance intensity in malaria vectors, in Benin. However, pyrioxyfen-pyrethroid LLINs did not offer additional protection against malaria outcomes compared with pyrethroid-only LLINs.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Cove\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019},\"S02\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Zagnanado\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019},\"S03\":{\"Study_type\":\"Village trial\",\"Country\":\"Benin\",\"Site\":\"Ouinhi\",\"Start_month\":5,\"Start_year\":2019,\"End_month\":6,\"End_year\":2019}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Royal Guard\",\"Insecticide\":\"pyriproyfen, alpha-cypermethrin\",\"Concentration_initial\":\"220 mg\\/m2, 220 mg\\/m2\"},\"N02\":{\"Net_type\":\"Interceptor G2\",\"Insecticide\":\"chlorfenapyr, alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2, 100 mg\\/m2\"},\"N03\":{\"Net_type\":\"Interceptor\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Funding\n", + "\n", + "This research was funded by the Royal Society of Tropical Medicine and Hygiene (RSTM#) through a small grant awarded to DM and the Wellcome Trust through a Wellcome Trust Training fellowship in public health and tropical medicine to CN (102543/2/13/2). The RSTM# and the Wellcome Trust have no role in the design of the study and collection, analysis, and interpretation of data and in writing the manuscript.\n", + "\n", + "header: Author details\n", + "\n", + "1 Laboratory of Parasitology and Ecology, Faculty of Sciences, University of Yaoundet i P.O. Box 812, Yaoundet, Cameroon. 1 Institute for the Recherche de Yaoundet (FR), Organizing the Coordination pour la Tutte Contre les Endrines en Afrique Centrale (OCEAC), PO. Box 283, Yaoundet, Cameroon. 3 Department of Biological Sciences, Faculty of Medicine and Pharmaceutical Sciences, University of Ouala, PO. Box 2415, Ouala, Cameroon. 4 Department of Parasitology and Microbiology, Centre for Research in Infectious Diseases (RDI), PO. Box 13591, Yaounde, Cameroon. 5 Animal Organisms Laboratory, Faculty of Sciences, University of Ouala, PO. Box 24157, Douala, Cameroon.\n", + "\n", + "header: Bed net coverage, use and maintenance\n", + "\n", + "Bed net ownership was investigated in 80 of 97 the households that currently make up the village through visual inspection. The heads of these households or their representatives were questioned on their use of nets and their maintenance. The number of people living in each house was recorded to estimate net coverage. Household net ownership was defined as the percentage of households owning at least one LLIN. Net coverage defined as the percentage of households with at least one LLIN for every two people was also determined.\n", + "\n", + "header: Insecticide bioassays and knockdown resistance detection\n", + "\n", + "Larvae of _An. gambiae_ (_s.l._) were collected in stagnant pools of water and reared in the insectary of the medical entomology laboratory of OCEAC. F1 adults that emerged from those larvae were fed with 10% sucrose solution made by dissolving 100 g of ordinary white sugar in 1 L of water [22]. _Anopheles funestus_ was not tested due to the low number of adults obtained following larval collections and rearing. The susceptibility of the F1 adults to 0.75% permethrin and 0.05% deltamethrin, both pyrethroid pesticides, was assessed using a World Health Organization (WHO) standard test procedure [23]. Tests were performed at 25 +- 2 degC, 806 +- 10% relative humidity (RH). For each insecticide, four batches of 20-25 field F1 females, aged between 2 and 5 days, were exposed to insecticide-impregnated papers in WHO test-tube for 1 h. At the same time, two batches of the same number of mosquitoes were exposed to untreated papers as control. At the end of the insecticide exposure period, the number of knocked-down mosquitoes was recorded, following which the mosquitoes were transferred into holding tubes. Cotton balls that had first been soaked in a 10% sugar solution and then the moisture squeezed out were placed at the mouth of the tubes. The mortality was recorded 24 h later. Mortality rate in the tested samples was corrected using Abbott's formula [24], when the mortality in the control tubes varied between 5 to 20%. The knockdown resistance (_kdr_) mutation L1014F, which is responsible of cross resistance to DDT (dichlorodiphenyl-trichloroethane) and pyrethroids was genotyped using the protocol described by Martinez-Tores et al. [25].\n", + "\n", + "header: Abbreviations\n", + "\n", + "DDT: Dichlorodiphenyltrichloroethane; ER: Entomological inoculation rate; ELISA CSP: Enzyme-linked immunosorbent assay to detect the circumsporolite protein; HL: Human landing catch method; Adv: Knockdown resistance; LINK: long-lasting insecticidal net; pH: Proportionate hole index; WHORES: World Health Organization Pesticides Evaluation Scheme\n", + "\n", + "header: Possession, coverage and use of LLINs\n", + "\n", + "In general, 81.25% of the households inspected possessed at least one LLIN. Despite this high level of ownership, the proportion of households that met the ratio of one net for two persons was only 47.69%. Fortunately, 81.54% of the people interviewed affirmed they used their bed nets every night (Table 3). Of the LLINs available, 92.3% were acquired during the government free mass distribution campaigns of 2011-2012 and 2015-2016. Although almost 70% of the study population affirmed that they have been educated by the public health community agents during the distribution campaigns, only 10.52% knew bed nets should be dried in the shade before usage or after washing. Moreover, 56.46% of respondents had washed their bet nets at least once; 63.15% used water and ordinary soap while 36.85% used detergents soap and bleach (Table 3).\n", + "\n", + "header: Physical integrity and effectiveness of LLINs\n", + "\n", + "Ten LLINs aged 3-7 years old were sampled to assess their physical integrity and bio-efficacy. A total of 161 holes belonging to all the four different types described by WHOPES (the size of a person's thumb, fist or head, or larger than a head) were counted, with a mean of 17 holes per bed net. The proportion of these holes per type was 52.79% (thumb size), 32.29% (fist size), 9.93% (head size) and 4.96% (large than head size). Of the ten LLINs examined, seven (70%) were damaged and were found to be in poor condition (pHI > 300) (Table 4).\n", + "\n", + "A total of 2000 specimens of the _An. gambiae_ (_s.l._) susceptible Kisumu strain were exposed to the ten bed nets. Eight of these nets were effective against this strain, with mortality rates > 80%. Exposure of the same number of _An. gambiae_ (_s.l._) field F1 mosquitoes to these LLINs revealed that they were all ineffective, with mortalities ranging from 0 to 11.5% (Table 4).\n", + "\n", + "header: Bed net integrity and bio-efficacy\n", + "\n", + "Ten bed nets were randomly collected from ten selected houses and immediately replaced by new ones. The physical integrity of the nets collected was determined by counting, per category, the number of holes that were approximately the size of a person's thumb, fist or head, or larger than a head, on any of the four faces and the top of the bed net [26, 27]. The proportionate hole index (pH) was calculated using the WHO Pesticide Evaluation Scheme (WHOPES ) guidelines [11] and nets were classified into four classes accordingly [28, 29]. Nets with a pHI <25 were classified as \"good\"; those with a pH ranging between 25 and 174, as \"fair\"; those nets with a pHI ranging from 175 to 299, as \"mediocre\"; and those with a pHI > 300, as \"poor\".\n", + "\n", + "\n", + "Cone assays were performed on each net to test for its bio-efficacy as described in WHO guidelines [30]. Four cones were fixed by their widest opening onto four different parts of each face (4 sides and 1 roof) of each net. Ten unfed _An. gambiae_ (_s.l._) female mosquitoes aged 2-5 days were introduced into each cone using a mouth aspirator, for a total of 200 specimens per net. After 3 min of exposure, the mosquitoes were removed from the cones, then transferred into paper cups and fed with a 10% sugar solution. The assay was conducted at 25 +- 1 degC, 80% +- 5% RH, and the number of mosquitoes knocked-down and dead were recorded after 60 min and 24 h, respectively. An untreated net was used as the negative control.\n", + "\n", + "header: Table 3 Origin, use and maintenance of long‑lasting insecticidal nets\n", + "footer: LLIN, Long-lasting insecticidal net\n", + "columns: ['Variables related to LLIN', 'N', 'Frequency (%)']\n", + "\n", + "{\"0\":{\"Variables related to LLIN\":\"Possession\",\"N\":\"Possession\",\"Frequency (%)\":\"Possession\"},\"1\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"65\",\"Frequency (%)\":\"81.25\"},\"2\":{\"Variables related to LLIN\":\"No\",\"N\":\"15\",\"Frequency (%)\":\"18.75\"},\"3\":{\"Variables related to LLIN\":\"Origin\",\"N\":\"Origin\",\"Frequency (%)\":\"Origin\"},\"4\":{\"Variables related to LLIN\":\"Government\",\"N\":\"60\",\"Frequency (%)\":\"92.3\"},\"5\":{\"Variables related to LLIN\":\"Market\",\"N\":\"5\",\"Frequency (%)\":\"7.7\"},\"6\":{\"Variables related to LLIN\":\"Installed\",\"N\":\"Installed\",\"Frequency (%)\":\"Installed\"},\"7\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"59\",\"Frequency (%)\":\"90.76\"},\"8\":{\"Variables related to LLIN\":\"No\",\"N\":\"6\",\"Frequency (%)\":\"9.24\"},\"9\":{\"Variables related to LLIN\":\"Presence per 2 persons\",\"N\":\"Presence per 2 persons\",\"Frequency (%)\":\"Presence per 2 persons\"},\"10\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"31\",\"Frequency (%)\":\"47.7\"},\"11\":{\"Variables related to LLIN\":\"No\",\"N\":\"34\",\"Frequency (%)\":\"52.3\"},\"12\":{\"Variables related to LLIN\":\"Usage\",\"N\":\"Usage\",\"Frequency (%)\":\"Usage\"},\"13\":{\"Variables related to LLIN\":\"Every night\",\"N\":\"53\",\"Frequency (%)\":\"81.54\"},\"14\":{\"Variables related to LLIN\":\"Not every night\",\"N\":\"12\",\"Frequency (%)\":\"18.46\"},\"15\":{\"Variables related to LLIN\":\"Education received on LLINs during distribution\",\"N\":\"Education received on LLINs during distribution\",\"Frequency (%)\":\"Education received on LLINs during distribution\"},\"16\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"45\",\"Frequency (%)\":\"69.92\"},\"17\":{\"Variables related to LLIN\":\"No\",\"N\":\"20\",\"Frequency (%)\":\"30.78\"},\"18\":{\"Variables related to LLIN\":\"Had LLIN been washed\",\"N\":\"Had LLIN been washed\",\"Frequency (%)\":\"Had LLIN been washed\"},\"19\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"38\",\"Frequency (%)\":\"58.46\"},\"20\":{\"Variables related to LLIN\":\"No\",\"N\":\"27\",\"Frequency (%)\":\"41.54\"},\"21\":{\"Variables related to LLIN\":\"Substance used for washing\",\"N\":\"Substance used for washing\",\"Frequency (%)\":\"Substance used for washing\"},\"22\":{\"Variables related to LLIN\":\"Ordinary soap\",\"N\":\"24\",\"Frequency (%)\":\"63.15\"},\"23\":{\"Variables related to LLIN\":\"Detergent and bleach\",\"N\":\"14\",\"Frequency (%)\":\"36.85\"},\"24\":{\"Variables related to LLIN\":\"Drying place\",\"N\":\"Drying place\",\"Frequency (%)\":\"Drying place\"},\"25\":{\"Variables related to LLIN\":\"In sun\",\"N\":\"34\",\"Frequency (%)\":\"89.48\"},\"26\":{\"Variables related to LLIN\":\"In shade\",\"N\":\"4\",\"Frequency (%)\":\"10.52\"}}\n", + "\n", + "header: Table 1 Plasmodium circumsporozoite index, human biting rate and monthly entomological inoculation rate of Anopheles species in Mvoua between August 2018 and April 2019\n", + "footer: Human-biting rate (HBR) is the average number of bites received per person per night; (ii) Plasmodium circumsporozoite index (infection rate) is the proportion of mosquitoes found with Plasmodium circumsporozoite antigen in the heads and thoraces; entomological inoculation rate is the product of the HBR and circumsporozoite rateNC not calculated\n", + "columns: ['Anopheles species', 'Tested (N)', 'Positive (N)', 'Entomological parameters - Plasmodium circumsporozoite index (%)', 'Entomological parameters - Human biting rate', 'Entomological parameters - Human biting rate.1', 'Entomological parameters - Entomological inoculation rate/ month']\n", + "\n", + "{\"0\":{\"Anopheles species\":\"An. funestus (s.l.)\",\"Tested (N)\":65,\"Positive (N)\":7,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"10.77\",\"Entomological parameters - Human biting rate\":0.55,\"Entomological parameters - Human biting rate.1\":0.55,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.5\"},\"1\":{\"Anopheles species\":\"An. gambiae (s.l.)\",\"Tested (N)\":42,\"Positive (N)\":6,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"14.29\",\"Entomological parameters - Human biting rate\":0.35,\"Entomological parameters - Human biting rate.1\":0.35,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.2\"},\"2\":{\"Anopheles species\":\"An. ziemanii\",\"Tested (N)\":3,\"Positive (N)\":0,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"0\",\"Entomological parameters - Human biting rate\":0.02,\"Entomological parameters - Human biting rate.1\":0.02,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"NC\"},\"3\":{\"Anopheles species\":\"Total\",\"Tested (N)\":110,\"Positive (N)\":13,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"11.81%\",\"Entomological parameters - Human biting rate\":0.93,\"Entomological parameters - Human biting rate.1\":0.93,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"2.7\"}}\n", + "\n", + "header: Competing interests\n", + "\n", + "The authors declare they have no competing interests.\n", + "\n", + "header: Table 4 Hole index and mortality of An. gambiae (s.l.) after being exposed to the long‑lasting insecticidal nets\n", + "footer: Not eff., not e\u001d\n", + "fficient; PHI, proportionate hole index\n", + "columns: ['Nets', 'Date of impregnation', 'Brand', 'Physical integrity of LLIN - pHI', 'Physical integrity of LLIN - Status', 'Bio‑efficacy of LLIN (%) - Kisumu control strain', 'Bio‑efficacy of LLIN (%) - Field strain', 'Decision - Unnamed: 7_level_1']\n", + "\n", + "{\"0\":{\"Nets\":\"Net 1\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":0,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":83.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"1\":{\"Nets\":\"Net 2\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":916,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":80.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":0.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"2\":{\"Nets\":\"Net 3\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1939,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":69.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"3\":{\"Nets\":\"Net 4\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":581,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":88.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"4\":{\"Nets\":\"Net 5\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":13,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":99.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":8.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"5\":{\"Nets\":\"Net 6\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":651,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":85.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"6\":{\"Nets\":\"Net 7\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":2225,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":72.4,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"7\":{\"Nets\":\"Net 8\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":98.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":9.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"8\":{\"Nets\":\"Net 9\",\"Date of impregnation\":\"May 2014\",\"Brand\":\"Royal sentry\",\"Physical integrity of LLIN - pHI\":1180,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":95.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"9\":{\"Nets\":\"Net 10\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":1395,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":87.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"}}\n", + "\n", + "header: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Ethics approval and consent to participate\n", + "\n", + "The study was approved by the Carneroonian National Ethical Committee for Research on Human Health (Statement No 2018/07/20/CE/NIRER/SFD). One week before the beginning of field activities, the population received a notice of information explaining the objectives, methodology, expected benefits and possible risks of the study. A consent form was sought from the head of households and for participants aged > 18 years for mosquito collection. They were given the opportunity to ask questions and they were informed that they are free to withdraw from the study at any time, without penalty or loss of benefits. At the end of each sampling period, all mosquito collectors were given anti-malaria prophylaxis based on artesunate/amodiaquine according to the national guide for malaria treatment.\n", + "\n", + "header: Data analysis\n", + "\n", + "Data were analyzed using SPSS software version 25 (IBM Corp., Armonk, NY, USA). The entomological parameters that were considered were: (i) human-biting rate (HBR), i.e. the average number of bites received per person per night; (ii) infection rate, i.e. the proportion of mosquitoes found with _Plasmodium_ circumsporozoite antigen in the heads and thoraces; (iii) entomological inoculation rate (EIR), i.e. the product of the HBR and circumsporozoite rate. Chi-square statistics was used to compare mosquito densities between seasons while mosquitoes' seasonal aggressiveness (HBR) were compared by the Kruskal-Wallis test. Differences were considered statistically significant at \\(P\\) < 0.05.\n", + "\n", + "header: Abstract\n", + "\n", + "Insights into factors sustaining persistence of high malaria transmission in forested areas of sub-Saharan Africa: the case of Mvoua, South Cameroon\n", + "\n", + "Dominique Mieguim Ngninpogni\n", + "\n", + "\n", + "**Background:** In Mvoua, a village situated in a forested area of Cameroon, recent studies have reported high prevalence of _Plasmodium falciparum_ infection among the population. In order to understand factors that can sustain such a high malaria transmission, we investigated the biology of _Anopheles_ vectors and its susceptibility to insecticides, as well as long-lasting insecticidal net (LLIN) coverage, use and bio-efficacy.\n", + "\n", + "**Methods:** A longitudinal entomological survey was conducted from July 2018 to April 2019. Adult mosquitoes were collected using the human landing catch (HLC) method and identified using morphological and molecular techniques. _Anopheles gambiae (s.l)_ larvae were sampled from several stagnant water pools throughout the village and reared to generate F1 adults. The presence of _P. falciparum_ circumsporozoite antigen was detected in the heads and thoraces of mosquitoes collected as adults using an enzyme-linked immunosorbent assay. The insecticide susceptibility status of the local _An. gambiae (s.l)_ F1 population to the pyrethroid insecticides deltamethrin 0.5% and permethrin 0.75% was determined using World Health Organization-tube bioassays, while the frequency of the knockdown resistance (_kdt_) mutation was determined by PCR. Coverage, use and physical integrity of LLINs were assessed in households, then cone assays were used to test for their bio-efficacy on both the reference insecticide-susceptible Kisumu strain and on field F1 _An. gambiae (s.l)_\n", + "\n", + "**Results:** In total, 110 _Anopheles_ mosquitoes were collected, of which 59.1% were identified as _Anopheles funestus (s.l)_, 38.18% as _An. gambiae (s.l)_ and 2.72% as _An. Ziemanili. Anopheles funestus_ was the most abundant species except in the long rainy season, when _An. gambiae (s.l)_ predominated (65.8%). In the dry seasons, vectors were principally endophagous (76% of those collected indoors) while they tended to be esophagus (66% of those collected outdoors) in rainy seasons. High _Plasmodium_ infection was observed in _An. gambiae (s.l)_ and _An. funestus_, with a circumsporozoite rate of 14.29 and 10.77%, respectively. _Anopheles gambiae (s.l)_ was highly resistant to pyrethroid insecticides (mortality rates: 32% for permethrin and 5% for deltamethrin) and harbored the _kdt_-L1014F mutation at a high frequency (89.74%). Of the 80 households surveyed, only 47.69% had achieved universal coverage with LLINs. Around 70% of the LLINs\n", + "sampled were in poor physical condition, with a proportionate hole index > 300. Of the ten LLNs tested, eight were effective against the _An. gambiae_ reference insecticide-susceptible Kisumu strain, showing mortality rate of > 80%, while none of these LLINs were efficient against local _An. gamabie_ (\\(x_{l}\\)) populations (mortality rates < 11.5%).\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "The datasets generated and/or analysed during the current study are available from the corresponding author on reasonable request.\n", + "\n", + "header: Table 2 Anopheles gambiae complex species composition and the frequency of the knockdown resistance L1014F mutation\n", + "footer: kdr-L1014F, Knockdown resistance L1014F mutation; R resistance; S, susceptible\n", + "columns: ['Anopheles species - Unnamed: 0_level_1', 'Composition - N', 'Composition - %', 'kdr-L1014F genotypes - RR', 'kdr-L1014F genotypes - RS', 'kdr-L1014F genotypes - SS', 'kdr-L1014F alleles (%) - R', 'kdr-L1014F alleles (%) - S']\n", + "\n", + "{\"0\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. gambiae\",\"Composition - N\":28,\"Composition - %\":71.8,\"kdr-L1014F genotypes - RR\":27,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":0,\"kdr-L1014F alleles (%) - R\":98.21,\"kdr-L1014F alleles (%) - S\":1.79},\"1\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. coluzzii\",\"Composition - N\":11,\"Composition - %\":28.2,\"kdr-L1014F genotypes - RR\":8,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":77.27,\"kdr-L1014F alleles (%) - S\":22.73},\"2\":{\"Anopheles species - Unnamed: 0_level_1\":\"Total\",\"Composition - N\":39,\"Composition - %\":100.0,\"kdr-L1014F genotypes - RR\":35,\"kdr-L1014F genotypes - RS\":2,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":92.31,\"kdr-L1014F alleles (%) - S\":7.69}}\n", + "\n", + "header: Results\n", + "\n", + "In total, 129 adult mosquitoes were collected during eight nights. These belonged to four genera, of which _Anopheles_ (_N_ = 110; 85.27%) was the most prevalent, followed in decreasing order of prevalence by _Mansonia_ (_N_ = 11; 8.53%), _Aedes_ (_N_ = 6; 4.65%) and _Culex_ (_N_ = 2; 1.55%). Three _Anopheles_ species were collected namely _An. funestus_ (_s.l._) (59.1%), _An. gambiae_ (_s.l._) (38.18%) and _An. zienanii_ (2.72%). _Anopheles. sp_ were most abundant in the short dry season followed by the long rainy season (49.09% of the total _Anopheles_ collected) and the long rainy season (34.54%).\n", + "\n", + "In terms of seasonal species abundance, _An. funestus_ was the most abundant species collected (59.1%) over the period of study, with the exception of the long rainy season when _An. gambiae_ (_s.l._) predominated (Fig. 1).\n", + "\n", + "header: Study area: Adult mosquito collection\n", + "\n", + "Collections of adult host-seeking mosquitoes were undertaken employing both the CDC light trap (CDC-LT) and human landing catch (HLC) methods. Because no mosquito was collected using the CDC-LTs after two consecutive nights of sampling, this method was discarded.\n", + "\n", + "Sampling using the HLC method was performed in ten randomly selected houses situated at least 100 m apart. The method involved persons sitting with their lower legs exposed and then collecting mosquitoes that just landed on them [14]. Adult mosquitoes were sampled both indoors and outdoors during two consecutive nights, once per each of the four seasons. Mosquitoes collected each hour were placed into separate bags, labeled accordingly and brought back to the laboratory for further analysis. To avoid bias due to sleep and tiredness, one team of collectors worked from 18:00 h to midnight, and was replaced by another team which worked from midnight to 6:00 h.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Author details\n", + "\n", + "1 Laboratory of Parasitology and Ecology, Faculty of Sciences, University of Yaoundet i P.O. Box 812, Yaoundet, Cameroon. 1 Institute for the Recherche de Yaoundet (FR), Organizing the Coordination pour la Tutte Contre les Endrines en Afrique Centrale (OCEAC), PO. Box 283, Yaoundet, Cameroon. 3 Department of Biological Sciences, Faculty of Medicine and Pharmaceutical Sciences, University of Ouala, PO. Box 2415, Ouala, Cameroon. 4 Department of Parasitology and Microbiology, Centre for Research in Infectious Diseases (RDI), PO. Box 13591, Yaounde, Cameroon. 5 Animal Organisms Laboratory, Faculty of Sciences, University of Ouala, PO. Box 24157, Douala, Cameroon.\n", + "\n", + "header: Insecticide bioassays and knockdown resistance detection\n", + "\n", + "Larvae of _An. gambiae_ (_s.l._) were collected in stagnant pools of water and reared in the insectary of the medical entomology laboratory of OCEAC. F1 adults that emerged from those larvae were fed with 10% sucrose solution made by dissolving 100 g of ordinary white sugar in 1 L of water [22]. _Anopheles funestus_ was not tested due to the low number of adults obtained following larval collections and rearing. The susceptibility of the F1 adults to 0.75% permethrin and 0.05% deltamethrin, both pyrethroid pesticides, was assessed using a World Health Organization (WHO) standard test procedure [23]. Tests were performed at 25 +- 2 degC, 806 +- 10% relative humidity (RH). For each insecticide, four batches of 20-25 field F1 females, aged between 2 and 5 days, were exposed to insecticide-impregnated papers in WHO test-tube for 1 h. At the same time, two batches of the same number of mosquitoes were exposed to untreated papers as control. At the end of the insecticide exposure period, the number of knocked-down mosquitoes was recorded, following which the mosquitoes were transferred into holding tubes. Cotton balls that had first been soaked in a 10% sugar solution and then the moisture squeezed out were placed at the mouth of the tubes. The mortality was recorded 24 h later. Mortality rate in the tested samples was corrected using Abbott's formula [24], when the mortality in the control tubes varied between 5 to 20%. The knockdown resistance (_kdr_) mutation L1014F, which is responsible of cross resistance to DDT (dichlorodiphenyl-trichloroethane) and pyrethroids was genotyped using the protocol described by Martinez-Tores et al. [25].\n", + "\n", + "header: Funding\n", + "\n", + "This research was funded by the Royal Society of Tropical Medicine and Hygiene (RSTM#) through a small grant awarded to DM and the Wellcome Trust through a Wellcome Trust Training fellowship in public health and tropical medicine to CN (102543/2/13/2). The RSTM# and the Wellcome Trust have no role in the design of the study and collection, analysis, and interpretation of data and in writing the manuscript.\n", + "\n", + "header: Bed net coverage, use and maintenance\n", + "\n", + "Bed net ownership was investigated in 80 of 97 the households that currently make up the village through visual inspection. The heads of these households or their representatives were questioned on their use of nets and their maintenance. The number of people living in each house was recorded to estimate net coverage. Household net ownership was defined as the percentage of households owning at least one LLIN. Net coverage defined as the percentage of households with at least one LLIN for every two people was also determined.\n", + "\n", + "header: Abbreviations\n", + "\n", + "DDT: Dichlorodiphenyltrichloroethane; ER: Entomological inoculation rate; ELISA CSP: Enzyme-linked immunosorbent assay to detect the circumsporolite protein; HL: Human landing catch method; Adv: Knockdown resistance; LINK: long-lasting insecticidal net; pH: Proportionate hole index; WHORES: World Health Organization Pesticides Evaluation Scheme\n", + "\n", + "header: Conclusion\n", + "\n", + "A combination of elevated _P. falciparum_ infection in _Anopheles_ vector populations, insufficient coverage and loss of effectiveness of LLINs due to physical degradation, as well as high resistance to pyrethroid insecticides is responsible for the persistence of high malaria transmission in forested rural area of Mvoua, Cameroon.\n", + "\n", + "header: Physical integrity and effectiveness of LLINs\n", + "\n", + "Ten LLINs aged 3-7 years old were sampled to assess their physical integrity and bio-efficacy. A total of 161 holes belonging to all the four different types described by WHOPES (the size of a person's thumb, fist or head, or larger than a head) were counted, with a mean of 17 holes per bed net. The proportion of these holes per type was 52.79% (thumb size), 32.29% (fist size), 9.93% (head size) and 4.96% (large than head size). Of the ten LLINs examined, seven (70%) were damaged and were found to be in poor condition (pHI > 300) (Table 4).\n", + "\n", + "A total of 2000 specimens of the _An. gambiae_ (_s.l._) susceptible Kisumu strain were exposed to the ten bed nets. Eight of these nets were effective against this strain, with mortality rates > 80%. Exposure of the same number of _An. gambiae_ (_s.l._) field F1 mosquitoes to these LLINs revealed that they were all ineffective, with mortalities ranging from 0 to 11.5% (Table 4).\n", + "\n", + "header: Possession, coverage and use of LLINs\n", + "\n", + "In general, 81.25% of the households inspected possessed at least one LLIN. Despite this high level of ownership, the proportion of households that met the ratio of one net for two persons was only 47.69%. Fortunately, 81.54% of the people interviewed affirmed they used their bed nets every night (Table 3). Of the LLINs available, 92.3% were acquired during the government free mass distribution campaigns of 2011-2012 and 2015-2016. Although almost 70% of the study population affirmed that they have been educated by the public health community agents during the distribution campaigns, only 10.52% knew bed nets should be dried in the shade before usage or after washing. Moreover, 56.46% of respondents had washed their bet nets at least once; 63.15% used water and ordinary soap while 36.85% used detergents soap and bleach (Table 3).\n", + "\n", + "header: Bed net integrity and bio-efficacy\n", + "\n", + "Ten bed nets were randomly collected from ten selected houses and immediately replaced by new ones. The physical integrity of the nets collected was determined by counting, per category, the number of holes that were approximately the size of a person's thumb, fist or head, or larger than a head, on any of the four faces and the top of the bed net [26, 27]. The proportionate hole index (pH) was calculated using the WHO Pesticide Evaluation Scheme (WHOPES ) guidelines [11] and nets were classified into four classes accordingly [28, 29]. Nets with a pHI <25 were classified as \"good\"; those with a pH ranging between 25 and 174, as \"fair\"; those nets with a pHI ranging from 175 to 299, as \"mediocre\"; and those with a pHI > 300, as \"poor\".\n", + "\n", + "\n", + "Cone assays were performed on each net to test for its bio-efficacy as described in WHO guidelines [30]. Four cones were fixed by their widest opening onto four different parts of each face (4 sides and 1 roof) of each net. Ten unfed _An. gambiae_ (_s.l._) female mosquitoes aged 2-5 days were introduced into each cone using a mouth aspirator, for a total of 200 specimens per net. After 3 min of exposure, the mosquitoes were removed from the cones, then transferred into paper cups and fed with a 10% sugar solution. The assay was conducted at 25 +- 1 degC, 80% +- 5% RH, and the number of mosquitoes knocked-down and dead were recorded after 60 min and 24 h, respectively. An untreated net was used as the negative control.\n", + "\n", + "header: Data analysis\n", + "\n", + "Data were analyzed using SPSS software version 25 (IBM Corp., Armonk, NY, USA). The entomological parameters that were considered were: (i) human-biting rate (HBR), i.e. the average number of bites received per person per night; (ii) infection rate, i.e. the proportion of mosquitoes found with _Plasmodium_ circumsporozoite antigen in the heads and thoraces; (iii) entomological inoculation rate (EIR), i.e. the product of the HBR and circumsporozoite rate. Chi-square statistics was used to compare mosquito densities between seasons while mosquitoes' seasonal aggressiveness (HBR) were compared by the Kruskal-Wallis test. Differences were considered statistically significant at \\(P\\) < 0.05.\n", + "\n", + "header: Table 1 Plasmodium circumsporozoite index, human biting rate and monthly entomological inoculation rate of Anopheles species in Mvoua between August 2018 and April 2019\n", + "footer: Human-biting rate (HBR) is the average number of bites received per person per night; (ii) Plasmodium circumsporozoite index (infection rate) is the proportion of mosquitoes found with Plasmodium circumsporozoite antigen in the heads and thoraces; entomological inoculation rate is the product of the HBR and circumsporozoite rateNC not calculated\n", + "columns: ['Anopheles species', 'Tested (N)', 'Positive (N)', 'Entomological parameters - Plasmodium circumsporozoite index (%)', 'Entomological parameters - Human biting rate', 'Entomological parameters - Human biting rate.1', 'Entomological parameters - Entomological inoculation rate/ month']\n", + "\n", + "{\"0\":{\"Anopheles species\":\"An. funestus (s.l.)\",\"Tested (N)\":65,\"Positive (N)\":7,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"10.77\",\"Entomological parameters - Human biting rate\":0.55,\"Entomological parameters - Human biting rate.1\":0.55,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.5\"},\"1\":{\"Anopheles species\":\"An. gambiae (s.l.)\",\"Tested (N)\":42,\"Positive (N)\":6,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"14.29\",\"Entomological parameters - Human biting rate\":0.35,\"Entomological parameters - Human biting rate.1\":0.35,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.2\"},\"2\":{\"Anopheles species\":\"An. ziemanii\",\"Tested (N)\":3,\"Positive (N)\":0,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"0\",\"Entomological parameters - Human biting rate\":0.02,\"Entomological parameters - Human biting rate.1\":0.02,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"NC\"},\"3\":{\"Anopheles species\":\"Total\",\"Tested (N)\":110,\"Positive (N)\":13,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"11.81%\",\"Entomological parameters - Human biting rate\":0.93,\"Entomological parameters - Human biting rate.1\":0.93,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"2.7\"}}\n", + "\n", + "header: Competing interests\n", + "\n", + "The authors declare they have no competing interests.\n", + "\n", + "header: Ethics approval and consent to participate\n", + "\n", + "The study was approved by the Carneroonian National Ethical Committee for Research on Human Health (Statement No 2018/07/20/CE/NIRER/SFD). One week before the beginning of field activities, the population received a notice of information explaining the objectives, methodology, expected benefits and possible risks of the study. A consent form was sought from the head of households and for participants aged > 18 years for mosquito collection. They were given the opportunity to ask questions and they were informed that they are free to withdraw from the study at any time, without penalty or loss of benefits. At the end of each sampling period, all mosquito collectors were given anti-malaria prophylaxis based on artesunate/amodiaquine according to the national guide for malaria treatment.\n", + "\n", + "header: Conclusion\n", + "\n", + "The findings of this study highlight high and perennial malaria transmission in Mvoua, with the highest infection rate in _Anopheles_ vectors observed in the short dry season. Three major vectors, namely _An. funestus_, _An. coluzzizi_ and _An. gambiae_, were responsible for the transmission of the disease. This vector displayed a high level of resistance to pyrethroid insecticides due to the _kdr_ mutation, but also probably due to metabolic mechanisms. Although there was a high level of LLIN possession among the households, universal coverage was not reached and LLINs found in the locality were no longer effective against the local _An. gambiae_ (_s.l._) strain. The National Malaria Control Program should provide the locality with new LLINs every 3 years, as recommended by WHO. Preferably, to manage the high pyrethroid resistance observed, these LLINs should incorporate a synergism to block the action of detoxification enzymes. People should be educated on the use and maintenance of LLINs, with an emphasis on the importance of sleeping under LLINs irrespective of season, as well as on the damaging impact of detergents used for their washing.\n", + "\n", + "header: Table 2 Anopheles gambiae complex species composition and the frequency of the knockdown resistance L1014F mutation\n", + "footer: kdr-L1014F, Knockdown resistance L1014F mutation; R resistance; S, susceptible\n", + "columns: ['Anopheles species - Unnamed: 0_level_1', 'Composition - N', 'Composition - %', 'kdr-L1014F genotypes - RR', 'kdr-L1014F genotypes - RS', 'kdr-L1014F genotypes - SS', 'kdr-L1014F alleles (%) - R', 'kdr-L1014F alleles (%) - S']\n", + "\n", + "{\"0\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. gambiae\",\"Composition - N\":28,\"Composition - %\":71.8,\"kdr-L1014F genotypes - RR\":27,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":0,\"kdr-L1014F alleles (%) - R\":98.21,\"kdr-L1014F alleles (%) - S\":1.79},\"1\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. coluzzii\",\"Composition - N\":11,\"Composition - %\":28.2,\"kdr-L1014F genotypes - RR\":8,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":77.27,\"kdr-L1014F alleles (%) - S\":22.73},\"2\":{\"Anopheles species - Unnamed: 0_level_1\":\"Total\",\"Composition - N\":39,\"Composition - %\":100.0,\"kdr-L1014F genotypes - RR\":35,\"kdr-L1014F genotypes - RS\":2,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":92.31,\"kdr-L1014F alleles (%) - S\":7.69}}\n", + "\n", + "header: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Abstract\n", + "\n", + "Insights into factors sustaining persistence of high malaria transmission in forested areas of sub-Saharan Africa: the case of Mvoua, South Cameroon\n", + "\n", + "Dominique Mieguim Ngninpogni\n", + "\n", + "\n", + "**Background:** In Mvoua, a village situated in a forested area of Cameroon, recent studies have reported high prevalence of _Plasmodium falciparum_ infection among the population. In order to understand factors that can sustain such a high malaria transmission, we investigated the biology of _Anopheles_ vectors and its susceptibility to insecticides, as well as long-lasting insecticidal net (LLIN) coverage, use and bio-efficacy.\n", + "\n", + "**Methods:** A longitudinal entomological survey was conducted from July 2018 to April 2019. Adult mosquitoes were collected using the human landing catch (HLC) method and identified using morphological and molecular techniques. _Anopheles gambiae (s.l)_ larvae were sampled from several stagnant water pools throughout the village and reared to generate F1 adults. The presence of _P. falciparum_ circumsporozoite antigen was detected in the heads and thoraces of mosquitoes collected as adults using an enzyme-linked immunosorbent assay. The insecticide susceptibility status of the local _An. gambiae (s.l)_ F1 population to the pyrethroid insecticides deltamethrin 0.5% and permethrin 0.75% was determined using World Health Organization-tube bioassays, while the frequency of the knockdown resistance (_kdt_) mutation was determined by PCR. Coverage, use and physical integrity of LLINs were assessed in households, then cone assays were used to test for their bio-efficacy on both the reference insecticide-susceptible Kisumu strain and on field F1 _An. gambiae (s.l)_\n", + "\n", + "**Results:** In total, 110 _Anopheles_ mosquitoes were collected, of which 59.1% were identified as _Anopheles funestus (s.l)_, 38.18% as _An. gambiae (s.l)_ and 2.72% as _An. Ziemanili. Anopheles funestus_ was the most abundant species except in the long rainy season, when _An. gambiae (s.l)_ predominated (65.8%). In the dry seasons, vectors were principally endophagous (76% of those collected indoors) while they tended to be esophagus (66% of those collected outdoors) in rainy seasons. High _Plasmodium_ infection was observed in _An. gambiae (s.l)_ and _An. funestus_, with a circumsporozoite rate of 14.29 and 10.77%, respectively. _Anopheles gambiae (s.l)_ was highly resistant to pyrethroid insecticides (mortality rates: 32% for permethrin and 5% for deltamethrin) and harbored the _kdt_-L1014F mutation at a high frequency (89.74%). Of the 80 households surveyed, only 47.69% had achieved universal coverage with LLINs. Around 70% of the LLINs\n", + "sampled were in poor physical condition, with a proportionate hole index > 300. Of the ten LLNs tested, eight were effective against the _An. gambiae_ reference insecticide-susceptible Kisumu strain, showing mortality rate of > 80%, while none of these LLINs were efficient against local _An. gamabie_ (\\(x_{l}\\)) populations (mortality rates < 11.5%).\n", + "\n", + "header: Mosquito identification and detection of _Plasmodium infection_\n", + "\n", + "Adult mosquitoes collected using the HLC method were identified based on morphological criteria following the identification keys of Gillies and De Meillon [15] and Gillies and Coetzee [16]. Female _Anopheles_ mosquitoes were sorted from other _Culicinae_, stored in Eppendorf tubes with silica gel (desiccant) and taken to the medical entomology laboratory of OCEAC (Organisation de Coordination pour la lutte Contre les Endemies en Afrique Centrale) for subsequent analyses. Heads and thoraces were processed for detection of _P. falciparum_ circumsporozoite protein (CSP) using an enzyme-linked immunosorbent assay (ELISA) method as previously described [17, 18]. DNA extracted from the abdomen and legs [19] was used for the molecular identification of sibling species by PCR, as described previously [20, 21].\n", + "\n", + "header: Results\n", + "\n", + "In total, 129 adult mosquitoes were collected during eight nights. These belonged to four genera, of which _Anopheles_ (_N_ = 110; 85.27%) was the most prevalent, followed in decreasing order of prevalence by _Mansonia_ (_N_ = 11; 8.53%), _Aedes_ (_N_ = 6; 4.65%) and _Culex_ (_N_ = 2; 1.55%). Three _Anopheles_ species were collected namely _An. funestus_ (_s.l._) (59.1%), _An. gambiae_ (_s.l._) (38.18%) and _An. zienanii_ (2.72%). _Anopheles. sp_ were most abundant in the short dry season followed by the long rainy season (49.09% of the total _Anopheles_ collected) and the long rainy season (34.54%).\n", + "\n", + "In terms of seasonal species abundance, _An. funestus_ was the most abundant species collected (59.1%) over the period of study, with the exception of the long rainy season when _An. gambiae_ (_s.l._) predominated (Fig. 1).\n", + "\n", + "header: Table 4 Hole index and mortality of An. gambiae (s.l.) after being exposed to the long‑lasting insecticidal nets\n", + "footer: Not eff., not e\u001d\n", + "fficient; PHI, proportionate hole index\n", + "columns: ['Nets', 'Date of impregnation', 'Brand', 'Physical integrity of LLIN - pHI', 'Physical integrity of LLIN - Status', 'Bio‑efficacy of LLIN (%) - Kisumu control strain', 'Bio‑efficacy of LLIN (%) - Field strain', 'Decision - Unnamed: 7_level_1']\n", + "\n", + "{\"0\":{\"Nets\":\"Net 1\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":0,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":83.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"1\":{\"Nets\":\"Net 2\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":916,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":80.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":0.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"2\":{\"Nets\":\"Net 3\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1939,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":69.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"3\":{\"Nets\":\"Net 4\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":581,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":88.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"4\":{\"Nets\":\"Net 5\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":13,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":99.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":8.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"5\":{\"Nets\":\"Net 6\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":651,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":85.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"6\":{\"Nets\":\"Net 7\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":2225,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":72.4,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"7\":{\"Nets\":\"Net 8\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":98.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":9.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"8\":{\"Nets\":\"Net 9\",\"Date of impregnation\":\"May 2014\",\"Brand\":\"Royal sentry\",\"Physical integrity of LLIN - pHI\":1180,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":95.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"9\":{\"Nets\":\"Net 10\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":1395,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":87.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"}}\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Funding\n", + "\n", + "This research was funded by the Royal Society of Tropical Medicine and Hygiene (RSTM#) through a small grant awarded to DM and the Wellcome Trust through a Wellcome Trust Training fellowship in public health and tropical medicine to CN (102543/2/13/2). The RSTM# and the Wellcome Trust have no role in the design of the study and collection, analysis, and interpretation of data and in writing the manuscript.\n", + "\n", + "header: Abbreviations\n", + "\n", + "DDT: Dichlorodiphenyltrichloroethane; ER: Entomological inoculation rate; ELISA CSP: Enzyme-linked immunosorbent assay to detect the circumsporolite protein; HL: Human landing catch method; Adv: Knockdown resistance; LINK: long-lasting insecticidal net; pH: Proportionate hole index; WHORES: World Health Organization Pesticides Evaluation Scheme\n", + "\n", + "header: Author details\n", + "\n", + "1 Laboratory of Parasitology and Ecology, Faculty of Sciences, University of Yaoundet i P.O. Box 812, Yaoundet, Cameroon. 1 Institute for the Recherche de Yaoundet (FR), Organizing the Coordination pour la Tutte Contre les Endrines en Afrique Centrale (OCEAC), PO. Box 283, Yaoundet, Cameroon. 3 Department of Biological Sciences, Faculty of Medicine and Pharmaceutical Sciences, University of Ouala, PO. Box 2415, Ouala, Cameroon. 4 Department of Parasitology and Microbiology, Centre for Research in Infectious Diseases (RDI), PO. Box 13591, Yaounde, Cameroon. 5 Animal Organisms Laboratory, Faculty of Sciences, University of Ouala, PO. Box 24157, Douala, Cameroon.\n", + "\n", + "header: Insecticide bioassays and knockdown resistance detection\n", + "\n", + "Larvae of _An. gambiae_ (_s.l._) were collected in stagnant pools of water and reared in the insectary of the medical entomology laboratory of OCEAC. F1 adults that emerged from those larvae were fed with 10% sucrose solution made by dissolving 100 g of ordinary white sugar in 1 L of water [22]. _Anopheles funestus_ was not tested due to the low number of adults obtained following larval collections and rearing. The susceptibility of the F1 adults to 0.75% permethrin and 0.05% deltamethrin, both pyrethroid pesticides, was assessed using a World Health Organization (WHO) standard test procedure [23]. Tests were performed at 25 +- 2 degC, 806 +- 10% relative humidity (RH). For each insecticide, four batches of 20-25 field F1 females, aged between 2 and 5 days, were exposed to insecticide-impregnated papers in WHO test-tube for 1 h. At the same time, two batches of the same number of mosquitoes were exposed to untreated papers as control. At the end of the insecticide exposure period, the number of knocked-down mosquitoes was recorded, following which the mosquitoes were transferred into holding tubes. Cotton balls that had first been soaked in a 10% sugar solution and then the moisture squeezed out were placed at the mouth of the tubes. The mortality was recorded 24 h later. Mortality rate in the tested samples was corrected using Abbott's formula [24], when the mortality in the control tubes varied between 5 to 20%. The knockdown resistance (_kdr_) mutation L1014F, which is responsible of cross resistance to DDT (dichlorodiphenyl-trichloroethane) and pyrethroids was genotyped using the protocol described by Martinez-Tores et al. [25].\n", + "\n", + "header: Table 1 Plasmodium circumsporozoite index, human biting rate and monthly entomological inoculation rate of Anopheles species in Mvoua between August 2018 and April 2019\n", + "footer: Human-biting rate (HBR) is the average number of bites received per person per night; (ii) Plasmodium circumsporozoite index (infection rate) is the proportion of mosquitoes found with Plasmodium circumsporozoite antigen in the heads and thoraces; entomological inoculation rate is the product of the HBR and circumsporozoite rateNC not calculated\n", + "columns: ['Anopheles species', 'Tested (N)', 'Positive (N)', 'Entomological parameters - Plasmodium circumsporozoite index (%)', 'Entomological parameters - Human biting rate', 'Entomological parameters - Human biting rate.1', 'Entomological parameters - Entomological inoculation rate/ month']\n", + "\n", + "{\"0\":{\"Anopheles species\":\"An. funestus (s.l.)\",\"Tested (N)\":65,\"Positive (N)\":7,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"10.77\",\"Entomological parameters - Human biting rate\":0.55,\"Entomological parameters - Human biting rate.1\":0.55,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.5\"},\"1\":{\"Anopheles species\":\"An. gambiae (s.l.)\",\"Tested (N)\":42,\"Positive (N)\":6,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"14.29\",\"Entomological parameters - Human biting rate\":0.35,\"Entomological parameters - Human biting rate.1\":0.35,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.2\"},\"2\":{\"Anopheles species\":\"An. ziemanii\",\"Tested (N)\":3,\"Positive (N)\":0,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"0\",\"Entomological parameters - Human biting rate\":0.02,\"Entomological parameters - Human biting rate.1\":0.02,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"NC\"},\"3\":{\"Anopheles species\":\"Total\",\"Tested (N)\":110,\"Positive (N)\":13,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"11.81%\",\"Entomological parameters - Human biting rate\":0.93,\"Entomological parameters - Human biting rate.1\":0.93,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"2.7\"}}\n", + "\n", + "header: Bed net coverage, use and maintenance\n", + "\n", + "Bed net ownership was investigated in 80 of 97 the households that currently make up the village through visual inspection. The heads of these households or their representatives were questioned on their use of nets and their maintenance. The number of people living in each house was recorded to estimate net coverage. Household net ownership was defined as the percentage of households owning at least one LLIN. Net coverage defined as the percentage of households with at least one LLIN for every two people was also determined.\n", + "\n", + "header: Ethics approval and consent to participate\n", + "\n", + "The study was approved by the Carneroonian National Ethical Committee for Research on Human Health (Statement No 2018/07/20/CE/NIRER/SFD). One week before the beginning of field activities, the population received a notice of information explaining the objectives, methodology, expected benefits and possible risks of the study. A consent form was sought from the head of households and for participants aged > 18 years for mosquito collection. They were given the opportunity to ask questions and they were informed that they are free to withdraw from the study at any time, without penalty or loss of benefits. At the end of each sampling period, all mosquito collectors were given anti-malaria prophylaxis based on artesunate/amodiaquine according to the national guide for malaria treatment.\n", + "\n", + "header: Competing interests\n", + "\n", + "The authors declare they have no competing interests.\n", + "\n", + "header: Data analysis\n", + "\n", + "Data were analyzed using SPSS software version 25 (IBM Corp., Armonk, NY, USA). The entomological parameters that were considered were: (i) human-biting rate (HBR), i.e. the average number of bites received per person per night; (ii) infection rate, i.e. the proportion of mosquitoes found with _Plasmodium_ circumsporozoite antigen in the heads and thoraces; (iii) entomological inoculation rate (EIR), i.e. the product of the HBR and circumsporozoite rate. Chi-square statistics was used to compare mosquito densities between seasons while mosquitoes' seasonal aggressiveness (HBR) were compared by the Kruskal-Wallis test. Differences were considered statistically significant at \\(P\\) < 0.05.\n", + "\n", + "header: Possession, coverage and use of LLINs\n", + "\n", + "In general, 81.25% of the households inspected possessed at least one LLIN. Despite this high level of ownership, the proportion of households that met the ratio of one net for two persons was only 47.69%. Fortunately, 81.54% of the people interviewed affirmed they used their bed nets every night (Table 3). Of the LLINs available, 92.3% were acquired during the government free mass distribution campaigns of 2011-2012 and 2015-2016. Although almost 70% of the study population affirmed that they have been educated by the public health community agents during the distribution campaigns, only 10.52% knew bed nets should be dried in the shade before usage or after washing. Moreover, 56.46% of respondents had washed their bet nets at least once; 63.15% used water and ordinary soap while 36.85% used detergents soap and bleach (Table 3).\n", + "\n", + "header: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Table 2 Anopheles gambiae complex species composition and the frequency of the knockdown resistance L1014F mutation\n", + "footer: kdr-L1014F, Knockdown resistance L1014F mutation; R resistance; S, susceptible\n", + "columns: ['Anopheles species - Unnamed: 0_level_1', 'Composition - N', 'Composition - %', 'kdr-L1014F genotypes - RR', 'kdr-L1014F genotypes - RS', 'kdr-L1014F genotypes - SS', 'kdr-L1014F alleles (%) - R', 'kdr-L1014F alleles (%) - S']\n", + "\n", + "{\"0\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. gambiae\",\"Composition - N\":28,\"Composition - %\":71.8,\"kdr-L1014F genotypes - RR\":27,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":0,\"kdr-L1014F alleles (%) - R\":98.21,\"kdr-L1014F alleles (%) - S\":1.79},\"1\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. coluzzii\",\"Composition - N\":11,\"Composition - %\":28.2,\"kdr-L1014F genotypes - RR\":8,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":77.27,\"kdr-L1014F alleles (%) - S\":22.73},\"2\":{\"Anopheles species - Unnamed: 0_level_1\":\"Total\",\"Composition - N\":39,\"Composition - %\":100.0,\"kdr-L1014F genotypes - RR\":35,\"kdr-L1014F genotypes - RS\":2,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":92.31,\"kdr-L1014F alleles (%) - S\":7.69}}\n", + "\n", + "header: Bed net integrity and bio-efficacy\n", + "\n", + "Ten bed nets were randomly collected from ten selected houses and immediately replaced by new ones. The physical integrity of the nets collected was determined by counting, per category, the number of holes that were approximately the size of a person's thumb, fist or head, or larger than a head, on any of the four faces and the top of the bed net [26, 27]. The proportionate hole index (pH) was calculated using the WHO Pesticide Evaluation Scheme (WHOPES ) guidelines [11] and nets were classified into four classes accordingly [28, 29]. Nets with a pHI <25 were classified as \"good\"; those with a pH ranging between 25 and 174, as \"fair\"; those nets with a pHI ranging from 175 to 299, as \"mediocre\"; and those with a pHI > 300, as \"poor\".\n", + "\n", + "\n", + "Cone assays were performed on each net to test for its bio-efficacy as described in WHO guidelines [30]. Four cones were fixed by their widest opening onto four different parts of each face (4 sides and 1 roof) of each net. Ten unfed _An. gambiae_ (_s.l._) female mosquitoes aged 2-5 days were introduced into each cone using a mouth aspirator, for a total of 200 specimens per net. After 3 min of exposure, the mosquitoes were removed from the cones, then transferred into paper cups and fed with a 10% sugar solution. The assay was conducted at 25 +- 1 degC, 80% +- 5% RH, and the number of mosquitoes knocked-down and dead were recorded after 60 min and 24 h, respectively. An untreated net was used as the negative control.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "The datasets generated and/or analysed during the current study are available from the corresponding author on reasonable request.\n", + "\n", + "header: Physical integrity and effectiveness of LLINs\n", + "\n", + "Ten LLINs aged 3-7 years old were sampled to assess their physical integrity and bio-efficacy. A total of 161 holes belonging to all the four different types described by WHOPES (the size of a person's thumb, fist or head, or larger than a head) were counted, with a mean of 17 holes per bed net. The proportion of these holes per type was 52.79% (thumb size), 32.29% (fist size), 9.93% (head size) and 4.96% (large than head size). Of the ten LLINs examined, seven (70%) were damaged and were found to be in poor condition (pHI > 300) (Table 4).\n", + "\n", + "A total of 2000 specimens of the _An. gambiae_ (_s.l._) susceptible Kisumu strain were exposed to the ten bed nets. Eight of these nets were effective against this strain, with mortality rates > 80%. Exposure of the same number of _An. gambiae_ (_s.l._) field F1 mosquitoes to these LLINs revealed that they were all ineffective, with mortalities ranging from 0 to 11.5% (Table 4).\n", + "\n", + "header: Study area: Adult mosquito collection\n", + "\n", + "Collections of adult host-seeking mosquitoes were undertaken employing both the CDC light trap (CDC-LT) and human landing catch (HLC) methods. Because no mosquito was collected using the CDC-LTs after two consecutive nights of sampling, this method was discarded.\n", + "\n", + "Sampling using the HLC method was performed in ten randomly selected houses situated at least 100 m apart. The method involved persons sitting with their lower legs exposed and then collecting mosquitoes that just landed on them [14]. Adult mosquitoes were sampled both indoors and outdoors during two consecutive nights, once per each of the four seasons. Mosquitoes collected each hour were placed into separate bags, labeled accordingly and brought back to the laboratory for further analysis. To avoid bias due to sleep and tiredness, one team of collectors worked from 18:00 h to midnight, and was replaced by another team which worked from midnight to 6:00 h.\n", + "\n", + "header: Conclusion\n", + "\n", + "A combination of elevated _P. falciparum_ infection in _Anopheles_ vector populations, insufficient coverage and loss of effectiveness of LLINs due to physical degradation, as well as high resistance to pyrethroid insecticides is responsible for the persistence of high malaria transmission in forested rural area of Mvoua, Cameroon.\n", + "\n", + "header: Table 4 Hole index and mortality of An. gambiae (s.l.) after being exposed to the long‑lasting insecticidal nets\n", + "footer: Not eff., not e\u001d\n", + "fficient; PHI, proportionate hole index\n", + "columns: ['Nets', 'Date of impregnation', 'Brand', 'Physical integrity of LLIN - pHI', 'Physical integrity of LLIN - Status', 'Bio‑efficacy of LLIN (%) - Kisumu control strain', 'Bio‑efficacy of LLIN (%) - Field strain', 'Decision - Unnamed: 7_level_1']\n", + "\n", + "{\"0\":{\"Nets\":\"Net 1\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":0,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":83.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"1\":{\"Nets\":\"Net 2\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":916,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":80.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":0.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"2\":{\"Nets\":\"Net 3\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1939,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":69.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"3\":{\"Nets\":\"Net 4\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":581,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":88.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"4\":{\"Nets\":\"Net 5\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":13,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":99.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":8.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"5\":{\"Nets\":\"Net 6\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":651,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":85.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"6\":{\"Nets\":\"Net 7\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":2225,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":72.4,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"7\":{\"Nets\":\"Net 8\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":98.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":9.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"8\":{\"Nets\":\"Net 9\",\"Date of impregnation\":\"May 2014\",\"Brand\":\"Royal sentry\",\"Physical integrity of LLIN - pHI\":1180,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":95.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"9\":{\"Nets\":\"Net 10\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":1395,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":87.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"}}\n", + "\n", + "header: Results\n", + "\n", + "In total, 129 adult mosquitoes were collected during eight nights. These belonged to four genera, of which _Anopheles_ (_N_ = 110; 85.27%) was the most prevalent, followed in decreasing order of prevalence by _Mansonia_ (_N_ = 11; 8.53%), _Aedes_ (_N_ = 6; 4.65%) and _Culex_ (_N_ = 2; 1.55%). Three _Anopheles_ species were collected namely _An. funestus_ (_s.l._) (59.1%), _An. gambiae_ (_s.l._) (38.18%) and _An. zienanii_ (2.72%). _Anopheles. sp_ were most abundant in the short dry season followed by the long rainy season (49.09% of the total _Anopheles_ collected) and the long rainy season (34.54%).\n", + "\n", + "In terms of seasonal species abundance, _An. funestus_ was the most abundant species collected (59.1%) over the period of study, with the exception of the long rainy season when _An. gambiae_ (_s.l._) predominated (Fig. 1).\n", + "\n", + "header: Table 3 Origin, use and maintenance of long‑lasting insecticidal nets\n", + "footer: LLIN, Long-lasting insecticidal net\n", + "columns: ['Variables related to LLIN', 'N', 'Frequency (%)']\n", + "\n", + "{\"0\":{\"Variables related to LLIN\":\"Possession\",\"N\":\"Possession\",\"Frequency (%)\":\"Possession\"},\"1\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"65\",\"Frequency (%)\":\"81.25\"},\"2\":{\"Variables related to LLIN\":\"No\",\"N\":\"15\",\"Frequency (%)\":\"18.75\"},\"3\":{\"Variables related to LLIN\":\"Origin\",\"N\":\"Origin\",\"Frequency (%)\":\"Origin\"},\"4\":{\"Variables related to LLIN\":\"Government\",\"N\":\"60\",\"Frequency (%)\":\"92.3\"},\"5\":{\"Variables related to LLIN\":\"Market\",\"N\":\"5\",\"Frequency (%)\":\"7.7\"},\"6\":{\"Variables related to LLIN\":\"Installed\",\"N\":\"Installed\",\"Frequency (%)\":\"Installed\"},\"7\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"59\",\"Frequency (%)\":\"90.76\"},\"8\":{\"Variables related to LLIN\":\"No\",\"N\":\"6\",\"Frequency (%)\":\"9.24\"},\"9\":{\"Variables related to LLIN\":\"Presence per 2 persons\",\"N\":\"Presence per 2 persons\",\"Frequency (%)\":\"Presence per 2 persons\"},\"10\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"31\",\"Frequency (%)\":\"47.7\"},\"11\":{\"Variables related to LLIN\":\"No\",\"N\":\"34\",\"Frequency (%)\":\"52.3\"},\"12\":{\"Variables related to LLIN\":\"Usage\",\"N\":\"Usage\",\"Frequency (%)\":\"Usage\"},\"13\":{\"Variables related to LLIN\":\"Every night\",\"N\":\"53\",\"Frequency (%)\":\"81.54\"},\"14\":{\"Variables related to LLIN\":\"Not every night\",\"N\":\"12\",\"Frequency (%)\":\"18.46\"},\"15\":{\"Variables related to LLIN\":\"Education received on LLINs during distribution\",\"N\":\"Education received on LLINs during distribution\",\"Frequency (%)\":\"Education received on LLINs during distribution\"},\"16\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"45\",\"Frequency (%)\":\"69.92\"},\"17\":{\"Variables related to LLIN\":\"No\",\"N\":\"20\",\"Frequency (%)\":\"30.78\"},\"18\":{\"Variables related to LLIN\":\"Had LLIN been washed\",\"N\":\"Had LLIN been washed\",\"Frequency (%)\":\"Had LLIN been washed\"},\"19\":{\"Variables related to LLIN\":\"Yes\",\"N\":\"38\",\"Frequency (%)\":\"58.46\"},\"20\":{\"Variables related to LLIN\":\"No\",\"N\":\"27\",\"Frequency (%)\":\"41.54\"},\"21\":{\"Variables related to LLIN\":\"Substance used for washing\",\"N\":\"Substance used for washing\",\"Frequency (%)\":\"Substance used for washing\"},\"22\":{\"Variables related to LLIN\":\"Ordinary soap\",\"N\":\"24\",\"Frequency (%)\":\"63.15\"},\"23\":{\"Variables related to LLIN\":\"Detergent and bleach\",\"N\":\"14\",\"Frequency (%)\":\"36.85\"},\"24\":{\"Variables related to LLIN\":\"Drying place\",\"N\":\"Drying place\",\"Frequency (%)\":\"Drying place\"},\"25\":{\"Variables related to LLIN\":\"In sun\",\"N\":\"34\",\"Frequency (%)\":\"89.48\"},\"26\":{\"Variables related to LLIN\":\"In shade\",\"N\":\"4\",\"Frequency (%)\":\"10.52\"}}\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Cameroon\",\"Site\":\"Mvoua\",\"Start_month\":7,\"Start_year\":2018,\"End_month\":4,\"End_year\":2019}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}, \"pHI_lower_bound\": {\"title\": \"Phi Lower Bound\", \"description\": \"lowest pHI detected.\"}, \"pHI_upper_bound\": {\"title\": \"Phi Upper Bound\", \"description\": \"lowest pHI detected.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":0.0,\"pHI_upper_bound\":916.0},\"N02\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":0.0,\"pHI_upper_bound\":916.0},\"N03\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":581.0,\"pHI_upper_bound\":1939.0},\"N05\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":13.0,\"pHI_upper_bound\":13.0},\"N06\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":651.0,\"pHI_upper_bound\":651.0},\"N07\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":2225.0,\"pHI_upper_bound\":2225.0},\"N08\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":1.0,\"pHI_upper_bound\":1.0},\"N09\":{\"Net_type\":\"Royal sentry\",\"Net_age\":9.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":1180.0,\"pHI_upper_bound\":1180.0},\"N10\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":1395.0,\"pHI_upper_bound\":1395.0}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Funding\n", + "\n", + "This research was funded by the Royal Society of Tropical Medicine and Hygiene (RSTM#) through a small grant awarded to DM and the Wellcome Trust through a Wellcome Trust Training fellowship in public health and tropical medicine to CN (102543/2/13/2). The RSTM# and the Wellcome Trust have no role in the design of the study and collection, analysis, and interpretation of data and in writing the manuscript.\n", + "\n", + "header: Abbreviations\n", + "\n", + "DDT: Dichlorodiphenyltrichloroethane; ER: Entomological inoculation rate; ELISA CSP: Enzyme-linked immunosorbent assay to detect the circumsporolite protein; HL: Human landing catch method; Adv: Knockdown resistance; LINK: long-lasting insecticidal net; pH: Proportionate hole index; WHORES: World Health Organization Pesticides Evaluation Scheme\n", + "\n", + "header: Insecticide bioassays and knockdown resistance detection\n", + "\n", + "Larvae of _An. gambiae_ (_s.l._) were collected in stagnant pools of water and reared in the insectary of the medical entomology laboratory of OCEAC. F1 adults that emerged from those larvae were fed with 10% sucrose solution made by dissolving 100 g of ordinary white sugar in 1 L of water [22]. _Anopheles funestus_ was not tested due to the low number of adults obtained following larval collections and rearing. The susceptibility of the F1 adults to 0.75% permethrin and 0.05% deltamethrin, both pyrethroid pesticides, was assessed using a World Health Organization (WHO) standard test procedure [23]. Tests were performed at 25 +- 2 degC, 806 +- 10% relative humidity (RH). For each insecticide, four batches of 20-25 field F1 females, aged between 2 and 5 days, were exposed to insecticide-impregnated papers in WHO test-tube for 1 h. At the same time, two batches of the same number of mosquitoes were exposed to untreated papers as control. At the end of the insecticide exposure period, the number of knocked-down mosquitoes was recorded, following which the mosquitoes were transferred into holding tubes. Cotton balls that had first been soaked in a 10% sugar solution and then the moisture squeezed out were placed at the mouth of the tubes. The mortality was recorded 24 h later. Mortality rate in the tested samples was corrected using Abbott's formula [24], when the mortality in the control tubes varied between 5 to 20%. The knockdown resistance (_kdr_) mutation L1014F, which is responsible of cross resistance to DDT (dichlorodiphenyl-trichloroethane) and pyrethroids was genotyped using the protocol described by Martinez-Tores et al. [25].\n", + "\n", + "header: Author details\n", + "\n", + "1 Laboratory of Parasitology and Ecology, Faculty of Sciences, University of Yaoundet i P.O. Box 812, Yaoundet, Cameroon. 1 Institute for the Recherche de Yaoundet (FR), Organizing the Coordination pour la Tutte Contre les Endrines en Afrique Centrale (OCEAC), PO. Box 283, Yaoundet, Cameroon. 3 Department of Biological Sciences, Faculty of Medicine and Pharmaceutical Sciences, University of Ouala, PO. Box 2415, Ouala, Cameroon. 4 Department of Parasitology and Microbiology, Centre for Research in Infectious Diseases (RDI), PO. Box 13591, Yaounde, Cameroon. 5 Animal Organisms Laboratory, Faculty of Sciences, University of Ouala, PO. Box 24157, Douala, Cameroon.\n", + "\n", + "header: Table 1 Plasmodium circumsporozoite index, human biting rate and monthly entomological inoculation rate of Anopheles species in Mvoua between August 2018 and April 2019\n", + "footer: Human-biting rate (HBR) is the average number of bites received per person per night; (ii) Plasmodium circumsporozoite index (infection rate) is the proportion of mosquitoes found with Plasmodium circumsporozoite antigen in the heads and thoraces; entomological inoculation rate is the product of the HBR and circumsporozoite rateNC not calculated\n", + "columns: ['Anopheles species', 'Tested (N)', 'Positive (N)', 'Entomological parameters - Plasmodium circumsporozoite index (%)', 'Entomological parameters - Human biting rate', 'Entomological parameters - Human biting rate.1', 'Entomological parameters - Entomological inoculation rate/ month']\n", + "\n", + "{\"0\":{\"Anopheles species\":\"An. funestus (s.l.)\",\"Tested (N)\":65,\"Positive (N)\":7,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"10.77\",\"Entomological parameters - Human biting rate\":0.55,\"Entomological parameters - Human biting rate.1\":0.55,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.5\"},\"1\":{\"Anopheles species\":\"An. gambiae (s.l.)\",\"Tested (N)\":42,\"Positive (N)\":6,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"14.29\",\"Entomological parameters - Human biting rate\":0.35,\"Entomological parameters - Human biting rate.1\":0.35,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"1.2\"},\"2\":{\"Anopheles species\":\"An. ziemanii\",\"Tested (N)\":3,\"Positive (N)\":0,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"0\",\"Entomological parameters - Human biting rate\":0.02,\"Entomological parameters - Human biting rate.1\":0.02,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"NC\"},\"3\":{\"Anopheles species\":\"Total\",\"Tested (N)\":110,\"Positive (N)\":13,\"Entomological parameters - Plasmodium circumsporozoite index (%)\":\"11.81%\",\"Entomological parameters - Human biting rate\":0.93,\"Entomological parameters - Human biting rate.1\":0.93,\"Entomological parameters - Entomological inoculation rate\\/ month\":\"2.7\"}}\n", + "\n", + "header: Bed net coverage, use and maintenance\n", + "\n", + "Bed net ownership was investigated in 80 of 97 the households that currently make up the village through visual inspection. The heads of these households or their representatives were questioned on their use of nets and their maintenance. The number of people living in each house was recorded to estimate net coverage. Household net ownership was defined as the percentage of households owning at least one LLIN. Net coverage defined as the percentage of households with at least one LLIN for every two people was also determined.\n", + "\n", + "header: Competing interests\n", + "\n", + "The authors declare they have no competing interests.\n", + "\n", + "header: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Ethics approval and consent to participate\n", + "\n", + "The study was approved by the Carneroonian National Ethical Committee for Research on Human Health (Statement No 2018/07/20/CE/NIRER/SFD). One week before the beginning of field activities, the population received a notice of information explaining the objectives, methodology, expected benefits and possible risks of the study. A consent form was sought from the head of households and for participants aged > 18 years for mosquito collection. They were given the opportunity to ask questions and they were informed that they are free to withdraw from the study at any time, without penalty or loss of benefits. At the end of each sampling period, all mosquito collectors were given anti-malaria prophylaxis based on artesunate/amodiaquine according to the national guide for malaria treatment.\n", + "\n", + "header: Possession, coverage and use of LLINs\n", + "\n", + "In general, 81.25% of the households inspected possessed at least one LLIN. Despite this high level of ownership, the proportion of households that met the ratio of one net for two persons was only 47.69%. Fortunately, 81.54% of the people interviewed affirmed they used their bed nets every night (Table 3). Of the LLINs available, 92.3% were acquired during the government free mass distribution campaigns of 2011-2012 and 2015-2016. Although almost 70% of the study population affirmed that they have been educated by the public health community agents during the distribution campaigns, only 10.52% knew bed nets should be dried in the shade before usage or after washing. Moreover, 56.46% of respondents had washed their bet nets at least once; 63.15% used water and ordinary soap while 36.85% used detergents soap and bleach (Table 3).\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "The datasets generated and/or analysed during the current study are available from the corresponding author on reasonable request.\n", + "\n", + "header: Data analysis\n", + "\n", + "Data were analyzed using SPSS software version 25 (IBM Corp., Armonk, NY, USA). The entomological parameters that were considered were: (i) human-biting rate (HBR), i.e. the average number of bites received per person per night; (ii) infection rate, i.e. the proportion of mosquitoes found with _Plasmodium_ circumsporozoite antigen in the heads and thoraces; (iii) entomological inoculation rate (EIR), i.e. the product of the HBR and circumsporozoite rate. Chi-square statistics was used to compare mosquito densities between seasons while mosquitoes' seasonal aggressiveness (HBR) were compared by the Kruskal-Wallis test. Differences were considered statistically significant at \\(P\\) < 0.05.\n", + "\n", + "header: Bed net integrity and bio-efficacy\n", + "\n", + "Ten bed nets were randomly collected from ten selected houses and immediately replaced by new ones. The physical integrity of the nets collected was determined by counting, per category, the number of holes that were approximately the size of a person's thumb, fist or head, or larger than a head, on any of the four faces and the top of the bed net [26, 27]. The proportionate hole index (pH) was calculated using the WHO Pesticide Evaluation Scheme (WHOPES ) guidelines [11] and nets were classified into four classes accordingly [28, 29]. Nets with a pHI <25 were classified as \"good\"; those with a pH ranging between 25 and 174, as \"fair\"; those nets with a pHI ranging from 175 to 299, as \"mediocre\"; and those with a pHI > 300, as \"poor\".\n", + "\n", + "\n", + "Cone assays were performed on each net to test for its bio-efficacy as described in WHO guidelines [30]. Four cones were fixed by their widest opening onto four different parts of each face (4 sides and 1 roof) of each net. Ten unfed _An. gambiae_ (_s.l._) female mosquitoes aged 2-5 days were introduced into each cone using a mouth aspirator, for a total of 200 specimens per net. After 3 min of exposure, the mosquitoes were removed from the cones, then transferred into paper cups and fed with a 10% sugar solution. The assay was conducted at 25 +- 1 degC, 80% +- 5% RH, and the number of mosquitoes knocked-down and dead were recorded after 60 min and 24 h, respectively. An untreated net was used as the negative control.\n", + "\n", + "header: Table 2 Anopheles gambiae complex species composition and the frequency of the knockdown resistance L1014F mutation\n", + "footer: kdr-L1014F, Knockdown resistance L1014F mutation; R resistance; S, susceptible\n", + "columns: ['Anopheles species - Unnamed: 0_level_1', 'Composition - N', 'Composition - %', 'kdr-L1014F genotypes - RR', 'kdr-L1014F genotypes - RS', 'kdr-L1014F genotypes - SS', 'kdr-L1014F alleles (%) - R', 'kdr-L1014F alleles (%) - S']\n", + "\n", + "{\"0\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. gambiae\",\"Composition - N\":28,\"Composition - %\":71.8,\"kdr-L1014F genotypes - RR\":27,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":0,\"kdr-L1014F alleles (%) - R\":98.21,\"kdr-L1014F alleles (%) - S\":1.79},\"1\":{\"Anopheles species - Unnamed: 0_level_1\":\"An. coluzzii\",\"Composition - N\":11,\"Composition - %\":28.2,\"kdr-L1014F genotypes - RR\":8,\"kdr-L1014F genotypes - RS\":1,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":77.27,\"kdr-L1014F alleles (%) - S\":22.73},\"2\":{\"Anopheles species - Unnamed: 0_level_1\":\"Total\",\"Composition - N\":39,\"Composition - %\":100.0,\"kdr-L1014F genotypes - RR\":35,\"kdr-L1014F genotypes - RS\":2,\"kdr-L1014F genotypes - SS\":2,\"kdr-L1014F alleles (%) - R\":92.31,\"kdr-L1014F alleles (%) - S\":7.69}}\n", + "\n", + "header: Conclusion\n", + "\n", + "A combination of elevated _P. falciparum_ infection in _Anopheles_ vector populations, insufficient coverage and loss of effectiveness of LLINs due to physical degradation, as well as high resistance to pyrethroid insecticides is responsible for the persistence of high malaria transmission in forested rural area of Mvoua, Cameroon.\n", + "\n", + "header: Physical integrity and effectiveness of LLINs\n", + "\n", + "Ten LLINs aged 3-7 years old were sampled to assess their physical integrity and bio-efficacy. A total of 161 holes belonging to all the four different types described by WHOPES (the size of a person's thumb, fist or head, or larger than a head) were counted, with a mean of 17 holes per bed net. The proportion of these holes per type was 52.79% (thumb size), 32.29% (fist size), 9.93% (head size) and 4.96% (large than head size). Of the ten LLINs examined, seven (70%) were damaged and were found to be in poor condition (pHI > 300) (Table 4).\n", + "\n", + "A total of 2000 specimens of the _An. gambiae_ (_s.l._) susceptible Kisumu strain were exposed to the ten bed nets. Eight of these nets were effective against this strain, with mortality rates > 80%. Exposure of the same number of _An. gambiae_ (_s.l._) field F1 mosquitoes to these LLINs revealed that they were all ineffective, with mortalities ranging from 0 to 11.5% (Table 4).\n", + "\n", + "header: Table 4 Hole index and mortality of An. gambiae (s.l.) after being exposed to the long‑lasting insecticidal nets\n", + "footer: Not eff., not e\u001d\n", + "fficient; PHI, proportionate hole index\n", + "columns: ['Nets', 'Date of impregnation', 'Brand', 'Physical integrity of LLIN - pHI', 'Physical integrity of LLIN - Status', 'Bio‑efficacy of LLIN (%) - Kisumu control strain', 'Bio‑efficacy of LLIN (%) - Field strain', 'Decision - Unnamed: 7_level_1']\n", + "\n", + "{\"0\":{\"Nets\":\"Net 1\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":0,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":83.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"1\":{\"Nets\":\"Net 2\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":916,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":80.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":0.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"2\":{\"Nets\":\"Net 3\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1939,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":69.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"3\":{\"Nets\":\"Net 4\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":581,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":88.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"4\":{\"Nets\":\"Net 5\",\"Date of impregnation\":\"February 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":13,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":99.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":8.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"5\":{\"Nets\":\"Net 6\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":651,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":85.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"6\":{\"Nets\":\"Net 7\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":2225,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":72.4,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":3.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"7\":{\"Nets\":\"Net 8\",\"Date of impregnation\":\"October 2011\",\"Brand\":\"Permanet\",\"Physical integrity of LLIN - pHI\":1,\"Physical integrity of LLIN - Status\":\"Good\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":98.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":9.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"8\":{\"Nets\":\"Net 9\",\"Date of impregnation\":\"May 2014\",\"Brand\":\"Royal sentry\",\"Physical integrity of LLIN - pHI\":1180,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":95.0,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":11.5,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"},\"9\":{\"Nets\":\"Net 10\",\"Date of impregnation\":\"October 2015\",\"Brand\":\"Olyset\",\"Physical integrity of LLIN - pHI\":1395,\"Physical integrity of LLIN - Status\":\"Poor\",\"Bio\\u2011efficacy of LLIN (%) - Kisumu control strain\":87.5,\"Bio\\u2011efficacy of LLIN (%) - Field strain\":2.0,\"Decision - Unnamed: 7_level_1\":\"Not efficient\"}}\n", + "\n", + "header: Study area: Adult mosquito collection\n", + "\n", + "Collections of adult host-seeking mosquitoes were undertaken employing both the CDC light trap (CDC-LT) and human landing catch (HLC) methods. Because no mosquito was collected using the CDC-LTs after two consecutive nights of sampling, this method was discarded.\n", + "\n", + "Sampling using the HLC method was performed in ten randomly selected houses situated at least 100 m apart. The method involved persons sitting with their lower legs exposed and then collecting mosquitoes that just landed on them [14]. Adult mosquitoes were sampled both indoors and outdoors during two consecutive nights, once per each of the four seasons. Mosquitoes collected each hour were placed into separate bags, labeled accordingly and brought back to the laboratory for further analysis. To avoid bias due to sleep and tiredness, one team of collectors worked from 18:00 h to midnight, and was replaced by another team which worked from midnight to 6:00 h.\n", + "\n", + "header: Results\n", + "\n", + "In total, 129 adult mosquitoes were collected during eight nights. These belonged to four genera, of which _Anopheles_ (_N_ = 110; 85.27%) was the most prevalent, followed in decreasing order of prevalence by _Mansonia_ (_N_ = 11; 8.53%), _Aedes_ (_N_ = 6; 4.65%) and _Culex_ (_N_ = 2; 1.55%). Three _Anopheles_ species were collected namely _An. funestus_ (_s.l._) (59.1%), _An. gambiae_ (_s.l._) (38.18%) and _An. zienanii_ (2.72%). _Anopheles. sp_ were most abundant in the short dry season followed by the long rainy season (49.09% of the total _Anopheles_ collected) and the long rainy season (34.54%).\n", + "\n", + "In terms of seasonal species abundance, _An. funestus_ was the most abundant species collected (59.1%) over the period of study, with the exception of the long rainy season when _An. gambiae_ (_s.l._) predominated (Fig. 1).\n", + "\n", + "header: Conclusion\n", + "\n", + "The findings of this study highlight high and perennial malaria transmission in Mvoua, with the highest infection rate in _Anopheles_ vectors observed in the short dry season. Three major vectors, namely _An. funestus_, _An. coluzzizi_ and _An. gambiae_, were responsible for the transmission of the disease. This vector displayed a high level of resistance to pyrethroid insecticides due to the _kdr_ mutation, but also probably due to metabolic mechanisms. Although there was a high level of LLIN possession among the households, universal coverage was not reached and LLINs found in the locality were no longer effective against the local _An. gambiae_ (_s.l._) strain. The National Malaria Control Program should provide the locality with new LLINs every 3 years, as recommended by WHO. Preferably, to manage the high pyrethroid resistance observed, these LLINs should incorporate a synergism to block the action of detoxification enzymes. People should be educated on the use and maintenance of LLINs, with an emphasis on the importance of sleeping under LLINs irrespective of season, as well as on the damaging impact of detergents used for their washing.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Cameroon\",\"Site\":\"Mvoua\",\"Start_month\":7,\"Start_year\":2018,\"End_month\":4,\"End_year\":2019}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}, \"pHI_lower_bound\": {\"title\": \"Phi Lower Bound\", \"description\": \"lowest pHI detected.\"}, \"pHI_upper_bound\": {\"title\": \"Phi Upper Bound\", \"description\": \"lowest pHI detected.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":0.0,\"pHI_upper_bound\":916.0},\"N02\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":0.0,\"pHI_upper_bound\":916.0},\"N03\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":581.0,\"pHI_upper_bound\":1939.0},\"N05\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":13.0,\"pHI_upper_bound\":13.0},\"N06\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":651.0,\"pHI_upper_bound\":651.0},\"N07\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":2225.0,\"pHI_upper_bound\":2225.0},\"N08\":{\"Net_type\":\"Permanet\",\"Net_age\":11.0,\"pHI_category\":\"Good\",\"pHI_lower_bound\":1.0,\"pHI_upper_bound\":1.0},\"N09\":{\"Net_type\":\"Royal sentry\",\"Net_age\":9.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":1180.0,\"pHI_upper_bound\":1180.0},\"N10\":{\"Net_type\":\"Olyset\",\"Net_age\":7.0,\"pHI_category\":\"Poor\",\"pHI_lower_bound\":1395.0,\"pHI_upper_bound\":1395.0}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Background: Methods\n", + "\n", + "A laboratory and a semi-field conditions experimental huts against _Anopheles_ Mosquitoes were conducted in southwestern Ethiopia from September 2015 to January 2016. The bio efficacy of DuraNet(r) was evaluated using the WHO cone bioassay test and then its field efficacy was evaluated using experimental huts against the malaria vector population.\n", + "\n", + "header: CONCLUSION\n", + "\n", + "Both DuraNet(r) and PermanNet 2.0 moderate efficacy against a pyrethroid-resistant population of _An. araabensis_ from Ethiopia. The bio efficacy of DuraNet(r) was found below the WHO recommendation. Therefore, the real impact of the observed insecticide resistance against DuraNet(r) to be further studied under phase-III trials, the need for new alternative vector control tools remains critical.\n", + "\n", + "header: Study area and period: Mosquito rearing and cone bioassay testing.\n", + "\n", + "Anopheles mosquito larvae were collected from field sites near Gilgel-Gibe hydroelectric power production reservoir and reared to adults under standard conditions (25 \\(\\pm\\) 20*C temperature,80 \\(\\pm\\) 4% relative humidity) in tropical and infectious diseases research institute, Sekoru campus, Jimma University, Ethiopia. For WHO cone bioassay test, five 2-5 days age unfed female _An. gambiae s.l._ (presumably _An. ankiensis_ according to Yewhalaw et al., (2009))\\(\\%\\) mosquitoes were used per cone. Twenty mosquitoes (5 mosquito\\({}^{\\text{\\textregistered}}\\) per-cone \\(\\times\\) 4 cone-per sub-sample net piece) were introduced into the cone facing net sample for 3 minutes and then moved to holding paper cups. Then mosquitoes were supplied with a 10% sucrose solution. The number of mosquitoes knocked down and the number of dead mosquitoes were recorded every 10 minute within 60 minutes and 24 hours, respectively. Mosquitoes exposed to untreated DuraNet\\({}^{*}\\) pieces were used as controls and experiment conditions were set to be 27 \\(\\pm\\) 2*C temperature and 75 \\(\\pm\\) 10% relative humidity (RH) throughout the study. Thus, a total of 1260 mosquitoes (63 net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used for complete bioassay testing and another 180 mosquitoes (9 untreated net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used as control.\n", + "\n", + "For net pieces washing each net sub-samples (25 cm \\(\\times\\) 25 cm) were introduced individually into 1-1 beakers containing 0.5 l deionized water, with 2 g/l WHO recommended soap (Savon de Marseille; pH 10-11) added and fully dissolved just before washing. The beakers were then introduced into a water-bath at 30*C and shaken for 10 min at 155 movements per minute. The samples were then removed, rinsed twice for 10 min in clean, deionized water under the same shaking conditions as above, dried at room temperature and stored at 30*C in the dark between washes.\n", + "\n", + "header: Limitation\n", + "\n", + "In this study, supplementary test like chemical assays were not conducted to measure the total insecticide content of the netting before and after wash resistance studies that support better interpretation of the results.\n", + "\n", + "header: Mosquito mortality, blood feeding and exit rates.\n", + "\n", + "Mosquito blood feeding rates, mortality rates and exit rates of the 5 treatments are presented in Table 1. The mean blood feeding rate was significantly lower (_P_ <.001) in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. However, there was no significance difference (_P_ >.05) in blood feeding rate among huts containing untreated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet*2.0. The mean mortality rate was significantly higher (_P_ <.001) among huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*. Higher mean number of mosquitoes were caught while exiting the huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*, however, there was no significant difference (_P_ >.05) among the treatments.\n", + "\n", + "header: Blood feeding inhibition and personal protection.\n", + "\n", + "Unwashed DuraNet* showed strong and better bio-efficacy in terms of blood feeding inhibition when compared to untreated DuraNet* and the rest of the treatment arms. The mean blood feeding rate of mosquitoes collected from a hut with unwashed DuraNet*, Unwashed PernaNet 2.0, twenty times washed DuraNet*, 20 times washed PernaNet 2.0 and Untreated DuraNet*, was 0.8/person-night, 4.1/person-night, 5.7/person-night, 6.0/person-night, and 7.0/person-night respectively. There was significant reduction (_P_ <.001) in blood feeding inhibition in all the treatment arms (hut with unwashed DuraNet*, but with 20 times washed DuraNet*, but with\n", + "\n", + "Figure 2: Mean percent knockdown and mortality of _An. arabiensis_ exposed in 3 minutes cone bioassay to DuraNet®, dimma, and southwestern Ethiopia.\n", + "\n", + "\n", + "unwashed PermaNet 2.0, hut with 20 times washed permanent 2.0) when compared to hut with untreated DuraNet*(control). Blood feeding inhibition can be also expressed as personal protection and unwashed DuraNet* showed the highest personal protection 88.7%, 100%, and 93.3% against _An. arabiensis, An. pbaroensis_, and _An. coustani_, respectively. Both PermaNet 2.0 twenty times washed and DuraNet* washed twenty times showed low to moderate personal protection (45.6% against _An. arabiensis_ to 83% against _An. pbaroensis_) when compared to untreated DuraNet* (Table 2).\n", + "\n", + "header: Discussion\n", + "\n", + "Insecticide resistance remains major threat against the efficacy of long-lasting insecticidal nets, which are key intervention tools in controlling malaria vector. In this study laboratory bioassay was initially conducted using field collected larvae raised to adult population of _An. arabiensis_ to assess the bio-efficacy of unwashed DuraNet* (candidate bed net) and untreated DuraNet* (negative control). Furthermore, field experimental study was conducted on bio-efficacy of unwashed DuraNet* and PermaNet 2.0 following WHOPES standard guidelines in order to corroborate the laboratory findings.5\n", + "\n", + "The cone bioassay tests indicated that exposure of population of _An. arabiensis_ mosquitoes from Gilgel-Gibe area, southwestern Ethiopia, to sections of DuraNet* LLIN resulted in mean knockdown and mean mortality of 93% and 78%, respectively. The mortality result is slightly lower than the range of WHO recommendation (>80%) for public health application. The knockdown effect also is slightly below the required WHOPES recommended levels of 95% and above. In contrast to the above results earlier bio efficacy tests conducted using unwashed DuraNet* in India (Sood et al10; Gunasekaran et al11) showed 100% efficacy when tested against populations of different species of _amopheles_. The slight decline in bio-efficacy of DuraNet* in this study may be due to resistance development of vector populations of _An. arabiensis_ in the study area.8,12 In Ethiopia, Previous studies indicate that populations of _An. Arabiensis_ have developed resistance against insecticides used for net impregnation.13-17\n", + "\n", + "Wash resistant long-lasting insecticidal nets treated with pyrethroids are viewed as an important device in the area of vector control that would lessen the difficulties related to retreating conventional insecticide treated nets.[18] DuraNet*, the alpha-cypermethrin treated net, has similar conditions as that of Interceptor* LLIN and PermaNet* 3.0, which had been given interim but full recommendation since June 2017 by WHOPES.[19]\n", + "\n", + "In current study, DuraNet* showed reduced washing resistance. This is reflected in continues decrease of both mean percent knockdown and mean percent mortality of population of _An. arabiensis_ on exposure to the DuraNet* washed 0 and 20 times, respectively. This is in contrast to the study done by Sood et al[10] which showed no significant difference in percent mortality and percent knockdown of population of _An. caliticiacis_ between unwashed and 20 times washed DuraNet* in India. However, in the same study by Sood et al,[10] DuraNet* showed 100% knockdown but only 45% mortality after 20 washes against _Anopheles gambiae_ which is also consistent with current results. Wash resistance technology is added to the LLIN's materials with the assumption of pyrethroid chemicals such as Alphacypermethrin should have a strong affinity to the polyester netting fibers so that even after forceful washing a thin layer of pyrethroid, practically undetectable by High Performance Liquid Chromatography yet adequately bio active to encourage knockdown and mortality should still continue bound to the fibers.\n", + "\n", + "Comparison of mosquito density collected from experimental huts with (unwashed DuraNet*, 20 times washed DuraNet*, unwashed PermaNet*2.0, 20 times washed PermaNet*2.0, and untreated DuraNet*) showed no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the unwashed DuraNet* compared to untreated DuraNet*. Likewise, a study carried out by Asale et al[8] using experimental huts in the study area showed the absence of significance variation in deterrence among huts containing unwashed PermaNet*2.0, untreated net and DDT sprayed hut. The possible explanation for the absence of significant variation in mosquito density among treatment arms could be accounted to low number of mosquito catches during the study period but the impact of insecticide resistance on the efficacy of the nets to be further studied in phase-III trials.\n", + "\n", + "In this study significant reduction in blood feeding rate was observed in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. Similarly, higher mean mosquito mortality rate was recorded among huts containing treatment arms when compared to hut containing control net (untreated DuraNet*). The results for DuraNet* are new report from Jimma area thus we could not corroborate but, Vector population of _An. arabiensis_ from the study area showed no significant reduction of mortality rate, exit pattern and blood feeding inhibition when tested against PermaNet 2.0.[8]\n", + "\n", + "In this study, DuraNet* and PermaNet 2.0 showed low to moderate killing efficacy against vector population of _An. arabiensis_. Moreover, both DuraNet* and PermaNet 2.0 showed no evidence of killing effect against _An. pbarensis_. According to Kitau et al[20] LLINs and ITNs treated with pyrethroids were more effective at killing _An. gambiae_ and _An. fintetus_ than _An. arabiensis_. Thus, the variations in the outcome variables of Anopheles shown above (DuraNet* and PermaNet 2.0) may be due to different susceptibility status and species differences.\n", + "\n", + "header: Table 1: Mean blood feeding, mortality and exit rates of populations of An. arabiensis exposed to different bed net types in field experimental huts in southwestern Ethiopia.\n", + "footer: Means within the same column and with different letters are signi\u001fcantly different using Tukey means separation test.**Significant at P<.001. *Significant at P<.05.\n", + "\n", + "\n", + "columns: ['TREATMENTS', 'BLOOD-FEEDING RATE MEAN ± SE', 'MORTALITY RATE MEAN ± SE', 'EXIT RATE MEAN ± SE']\n", + "\n", + "{\"0\":{\"TREATMENTS\":\"Untreated DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"77.70 \\u00b1 7.30\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"6.61 \\u00b1 3.80**\",\"EXIT RATE MEAN \\u00b1 SE\":\"26.77 \\u00b1 5.51\"},\"1\":{\"TREATMENTS\":\"Unwashed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"5.80 \\u00b1 2.32**\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"52.38 \\u00b1 5.62\",\"EXIT RATE MEAN \\u00b1 SE\":\"40.42 \\u00b1 5.22\"},\"2\":{\"TREATMENTS\":\"20\\u00d7 washed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"55.94 \\u00b1 6.78\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"28.17 \\u00b1 6.57*\",\"EXIT RATE MEAN \\u00b1 SE\":\"36.24 \\u00b1 5.50\"},\"3\":{\"TREATMENTS\":\"Unwashed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.39 \\u00b1 5.89\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"61.74 \\u00b1 6.09\",\"EXIT RATE MEAN \\u00b1 SE\":\"48.16 \\u00b1 5.53\"},\"4\":{\"TREATMENTS\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.35 \\u00b1 7.01\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"39.87 \\u00b1 6.34\",\"EXIT RATE MEAN \\u00b1 SE\":\"35.32 \\u00b1 5.78\"}}\n", + "\n", + "header: Abstract\n", + "\n", + "Evaluation of Long-Lasting Insecticidal Nets (DuraNet(r)) Under laboratory and Semi-Field Conditions Using Experimental Huts Against _Anopheles Mosquitoes_ in\n", + "\n", + "Jimma Zone\n", + "\n", + " Southwestern Ethiopia\n", + "\n", + "B. Gebremariam(r), W. Birke, W. Zeine, A. Ambelu\n", + "\n", + "\n", + "\n", + "Long-Lasting insecticidal Nets (LLINs) efficacy could be compromised due to a lot of influences together with user compliance and vector population insecticide resistance status. Thus, this study was to assess the biological efficacy of DuraNet(r) with the help of the World Health Organization cone bioassay and field experimental hut.\n", + "\n", + "header: Results\n", + "\n", + "World Health Organization cone bioassay tests against pyrethroid-resistant _An. araabensis_ led to mean percent mortality and knockdown of 78% and 93%, respectively. Washing of DuraNet(r) successively reduced its efficacy from 93% knockdown (0 wash) to 45% knockdown (20 washes). Similarly, mean mortality decreased from 84% (wash) to 47% (20 washes). A total of 1575 female mosquitoes were collected over 40 nights out of which 13738(87.8%) were _An. amabise._ Is Title (74%) were _An. amabensis_. The mean blood-feeding rate was significantly lower (_P_<.001) in hut containing unwashed DuraNet(r) when compared to hut containing untreated DuraNet(r). The mean mortality rate was significantly higher (_P_<.001) in hut containing DuraNet(r) when compared to hut containing untreated DuraNet(r). Unwashed DuraNet(r) showed the highest personal protection 88.7% and 100% against _An. araabensis_ and _An. araabensis_, respectively.\n", + "\n", + "header: The killing effect DuraNet*\n", + "\n", + "DuraNet* (both unwashed and 20 times washed) showed low to moderate killing efficacy (65.93% to 54.03%) against vector population of _An. arabiensis_. Whereas, against _An. pbaroensis_, both unwashed and washed DuraNet* showed no evidence of killing effect (0.00 to 9.0%). Similarly, PermaNet 2.0 (unwashed and washed) showed low to moderate killing effect against population of _An. arabiensis_ (Table 3).\n", + "\n", + "header: Experimental but establishment.: Treatment arms and sleepers rotation\n", + "\n", + "In this experiment, 5 different treatment arms were used. These include (1) Untreated unwashed DuraNet(Negative control) (2) Unwashed treated DuraNet(3) treated DuraNet(20 times washed (4) PermaNet(4) 2.0 20 times washed, and (5) unwashed PermaNet(4) 2.0 (positive control). All nets were 75 denier polyethylene and polyester nets respectively. To simulate wear and tear condition of nets under usage 6 (4 cm \\(\\times\\) 4 cm size) holes were cut in each net (2 holes on each of the sides and 1 hole at each end). The DuraNet(4) LLIN and PermaNet(4) 2.0 were washed according to World Health Organization Stage II washing procedure [5]. For washing, the nets were put in to aluminum bowl with 10 l of tap water and 2g/l of savon de Marseille soap. The nets were agitated for 3 minutes, then soaked for 4 minutes, and agitated again for 3 minutes. The nets were agitated manually by stirring them with a pole at 20 rotations per minute. Thus, each net was washed for a total of 10 minute and then rinsed with clean water by a similar procedure, dried horizontally in the shade and stored at ambient temperature between washes. WHO recognized PermaNet(4) 2.0 LLIN washed 20 times, was used as a positive control to assess DuraNet(4) LLIN performance.\n", + "\n", + "In each data collection night, 2 non-smoker male volunteers aged 20 to 25 were allowed to sleep in each experimental hut with its door remain closed between 19:00 and 07:00 hours. Each team was rotated between treatments on successive nights within a week to avoid possible bias which could arise due to individual attractiveness to mosquitoes. There were 5 successive collection nights (Monday to Friday) and 2 successive break nights for hut ventilation per week. Thus, there were 25 collection nights in order to complete the whole study. Informed written consent was obtained from each sleeper.\n", + "\n", + "header: Cone bioassay and washing resistance: Experimental but trial\n", + "\n", + "_Mosquito entry into the bus._ A total of 1575 Anopheles mosquitoes were entered and collected in the 40 nights during the trial. These consisted of 1373 (87.8%) _An. gambiae_ s.l. presumably _An. arabiensis_ (Yewhalaw et al., 2009), 116 (7.4%) _Angelo custani_ (Laveran), and 107 (6.8%) _An. phareensis_ (Theobald). The mean number of mosquitoes caught per night was 8.75 for _An. arabiensis_, 5.52 for _An. Coastani_, and 6.33 for _An. pharensis._ The mean mosquito entry is not significantly different among the treatment arms (F = 1.277, \\(P\\) >.05). There was no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the Unwashed DuraNet* compared to treated DuraNet* and PernaNet* 2.0 (Table 2).\n", + "\n", + "header: Table 2. Blood-feeding inhibition and personal protection due to DuraNet® LLIN in the experimental huts, southwestern Ethiopia.\n", + "footer: *Significant at P<.05. **Significant at P<.01.\n", + "columns: ['TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2', 'PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)']\n", + "\n", + "{\"0\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Untreated DuraNet\\u00ae (NC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"232 (0**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"43 (0**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"30 (0*)\"},\"1\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"24 (88.7**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"00 (100**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"2 (93.3*)\"},\"2\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"176 (42.4)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"27 (62.8)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"5 (83.3*)\"},\"3\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"131 (45.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"11 (83**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"16 (46.6)\"},\"4\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"192 (38.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"6 (75)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"33 (0*)\"}}\n", + "\n", + "header: Methods\n", + "\n", + "This study was conducted from September 2015 to January 2016 near the Gilgel-Gibe hydroelectric dam area, southwestern Ethiopia. The hydroelectric dam is one of the major hydroelectric dams in Ethiopia with artificial reservoir occupying an estimated area of 62 kmsq,6 It produces around 184 MWh and is located 260 km southwest of the capital Addis Ababa. It has been functional since 2004. The study area is located between latitudes 7*42*50*7N and 07*53*50*7N and longitudes 37*11*22*7E and 37*20*36*E with an altitude ranging from 1672-1864 m above sea level. The area has a sub-humid, warm to hot climate, obtains between 1300 and 1800 mm of rainfall annually and has a mean annual temperature of 19*C. Mostly, the 2 peak seasonal transmissions of malaria occur during the months of September to December and March to May in the study area.\n", + "\n", + "Bio-efficacy testing of LLIN (DuraNet\\({}^{\\text{\\text{\\textregistered}}}\\)) under laboratory setting\n", + "\n", + "\\(LLIN\\)_sample preparation and washing process._ DuraNet\\({}^{*}\\) LLINs (Karur, Tamil Nadu 639006, and India) is treated with alpha-cypermethrin at a target dose of 250 mg/m\\({}^{2}\\) of netting material. It contains 0.55% W/W \\(\\pm\\) 15% alpha-cypermethrin. The alpha-cypermethrin chemical is coated onto filaments at bursting strength of 450 kPa of netting material and of 145 \\(\\pm\\) 5% for seam sub-section per denier yarn. Prior to testing the production date and batch number of all nets were recorded. Seven sub-samples per net (1 from the roof, the rest from side of the net) were taken from each net and prepared for standard LLINs cone tests by cutting 25 cm \\(\\times\\) 25 cm pieces following WHO protocol.7 In this study, 9 candidate nets were used for bio-efficacy testing. Thus, a total of 63 sub-sample net pieces (7 sub-sample pieces from each net \\(\\times\\) 9 DuraNet\\({}^{*}\\)s) individually rolled up in aluminum foil, labeled (by net type, net number and sample area) and kept in a refrigerator prior to the assay. Concurrently 9 (1 sub-sample piece from each untreated DuraNet\\({}^{*}\\)\\(\\times\\) 9 untreated DuraNet\\({}^{*}\\)s) sub-samples (30 cm \\(\\times\\) 30 cm) were individually rolled up in aluminum foil, labeled and kept in a refrigerator prior to the assay.\n", + "\n", + "header: Results\n", + "\n", + "Exposure of wild population of _An. arabiensis_ mosquitoes to net sections of DuraNet* LLIN in WHO bioassay tests gives mean mortality rate of 78% as well as mean knockdown effect of 93%. Mean percent knockdown and percent mortality of DuraNet* LLIN showed significant relationship (\\(R^{2}\\) = 0.797, n = 260, \\(P\\) <.001). The wash resistance activity of DuraNet* LLINs, measured in terms of percent knockdown and mortality is presented in Figure 2. The mean percent knockdown of wild population of _An. arabiensis_ decreased from 93% to 45% up on exposure to the DuraNet* washed 0 and 20 times respectively. The mean percent mortality decreased from 84% to 47% on exposure to the DuraNet* washed 0 and 20 times, respectively. Wash resistance has negative correlation with percent knockdown and percent mortality which means as number of wash increase, percent knockdown and percent mortality declined (\\(r^{2}\\) = 0.333, 96KD = 89.16 \\(\\pm\\) 2.15, \\(P\\) <.001 and \\(r^{2}\\) = 0.236, 90Mt = 81.94 \\(\\pm\\) 1.68, \\(P\\) <.001), respectively.\n", + "\n", + "header: Introduction\n", + "\n", + "Malaria is still one of highest health risks in developing countries with high morbidity and mortality in under 5 children. Assessment of overall economic impact of the disease shows that it accounts for 40% of health cost spending, 30% to 50% of inpatient charges, and up to 50% of outpatient official visits in areas with great malaria.1 According to the world health organization, there were 216 million new incidents of malaria leading to 445 000 death, of which 90% occurred in African countries.2\n", + "\n", + "Footnote 1: [https://developers.com/en/article/](https://developers.com/en/article/)\n", + "\n", + "Long-Lasting insecticidal Nets (LLINs) are uppermost community health apparatuses and, when used by children and pregnant women, subsidize to improving motherly, neonatal, and infant health, with long-lasting reimbursements to the emerging child.3 These nets provide personal barrier from bite by mosquitoes in addition those nets lessen also the transmission of malaria and have excito-repellency effect.4 A total of 505 million insecticidal nets (ITNs) were distributed in developing countries between 2014 and 2016 with household ownership of at least 1 insecticidal net, improved from 50% in 2010 to 80% in 2016. Nevertheless, the ratio of houses with adequate bed nets (ie, 1 net for every 2 people) is very low (43%).2 Following the high demand of bed nets as key vector control intervention, companies are ramping up production and new brand nets are being introduced for public health utilization.\n", + "\n", + "Footnote 2: [https://developers.com/en/article/](https://developers.com/en/article/)\n", + "\n", + "In order for any new long-lasting insecticidal nets to be used in public health, it must gain WHOPES approval.5 The approval process passes through 3 stages of efficacy testing (laboratory, small-scale semi-field, and large-scale field trial). To be classified as a long-lasting insecticidal net, it must \n", + "maintain their effective biological activity for at least 20 World Health Organization recommended washes typical washes under laboratory conditions and 3 years of suggested use under semi-field and field condition.\n", + "\n", + "DuraNet\\({}^{*}\\) is an LLIN developed by the Shobikaa Impex pvt Ltd (Karur, Tamil Nadu 639006, and India). It contains 0.55% w/w \\(\\pm\\) 15% alpha-cypermethrin. The net is a polyethylene fiber coated with a proprietary polymer containing target dose of alpha-cypermethrin at 250 mg/m\\({}^{2}\\). The polymer binds to the fiber and can withstand multiple washings, the active ingredient diffusing in a controlled manner to the surface of the polymer coat to maintain insecticidal efficacy.\n", + "\n", + "Thus, this study was conducted to verify the intended efficacy of the product in the presence of pyrethroid resistance vector population of _An. gambiae_ s.l. using cone bioassay and semi-field experimental huts in southwestern Ethiopia. The cone bioassays were conducted in Tropical and Infectious diseases research institute, Jimma University. The experimental hut study trials were undertaken near the Gilgel-Gibe hydroelectric power dam-I.\n", + "\n", + "header: Mosquito collection, identification and key parameters measured in determination of LLINs efficacy\n", + "\n", + "Mosquitoes were collected from 6:00 to 7:00 each morning inside bed nets, floors, walls, ceilings, and verandas of each experimental hut by the help of mouth aspirators and torches. Then the collected mosquitoes were recorded as dead or alive. Live mosquitoes were held in paper cups and supplied with 10% sucrose solution. The collected mosquitoes were transported to Asendabo Vector Biology Laboratory, Jimma University, where mosquitoes were sorted by genus, sex and morphologically identified using taxonomic keys [9]. Mosquitoes were also scored for their physiological state as unfed, fed, half gravid and gravid. Delayed mortality was recorded after 24 hours. To evaluate the efficacy of DuraNet LLIN against the resistant populations of _An. arabiensis_, different entomological parameters (deterrence, exit, blood feeding inhibition, and mortality rates) were derived from basic measurements.\n", + "\n", + "The primary outcomes were:\n", + "\n", + "1. Deterrence--the reduction in entry in to treatment hut relative to the control hut (ie, huts holding untreated nets);\n", + "2. Mortality--the proportion of mosquitoes killed relative to the total catch size;\n", + "3. Killing effect--the numbers killed by a treatment relative to the untreated control, as derived from the formula; \\[\\text{Killing effect}\\left( \\% \\right) = \\left( \\frac{Kt-Ku}{Tu} \\right) \\ast 100\\]\n", + "\n", + "Where **Kt** is the number dead mosquitoes in the huts with treated nets, **Ku** is the number dead mosquitoes in the huts with untreated nets, and **Tu** is the total entering the huts with untreated nets.\n", + "\n", + "1. Blood Feeding Inhibition-The proportional reduction in blood feeding in huts with treated nets relative to controls with untreated nets.\n", + "\n", + "Figure 1: Experimental hut design of the study.\n", + "\n", + "\n", + "5. Personal Protection--The reduction in mosquito biting by treated nets relative to untreated nets, as derived from the formula \\[\\%\\text{personal protection} = (\\frac{Bu-Bt}{Bu})*100\\]\n", + "\n", + "Where Bu is the total number blood fed mosquitoes in the huts with untreated nets, and Bt is the total number blood fed in the huts with treated nets.\n", + "\n", + "header: Bio-efficacy testing of DuraNet\\({}^{*}\\) LLIN using experimental but\n", + "\n", + "Five experimental huts of West African style, each with 1 room and screened veranda trap were established approximately 500 m from Gilgel-Gibe reservoir shore, southwestern Ethiopia following world health protocol developed for field evaluation of long-lasting insecticidal nets.5 The huts were made from concrete bricks with a corrugated iron roof, a ceiling of white cotton sheeting and a concrete base surrounded by a water filled moat to prevent the entry of ants. Details of the dimensions of the hut, the Verenda trap and \n", + "materials from which the tukuls made were described elsewhere [8]. The slits were constructed from pieces of metal shutters, fixed at an angle of 45\\({}^{\\circ}\\) to create a funnel of 1 cm between slits. The design of window slit allows the inward flight of mosquitoes coming from filed but it will be hardly possible for them to escape once they entered the hut. A veranda trap made of iron mesh (22 mm diameter) was set at the back of each hut for trapping exophilic mosquitoes (Figure 1). It is presumed that some mosquitoes (inherently exophilic or mosquitoes repelled due to the exit-repellency effect of the chemicals impregnated into LLINs) will exit the hut once they enter and then after feeding on their host of choice. Thus, the verenda trap was designed to trap and quantify the proportion of mosquitoes exit the experimental hut and by virtue the efficacy of LLINs under test for its exito-repellent effect. Each night mosquitoes were allowed to enter into the hut via the window slits from the environment and freely move between the room and the verenda trap.\n", + "\n", + "header: Table 3. The overall killing effect of DuraNet® LLIN in experimental hut.\n", + "footer: None\n", + "columns: ['TREATMENT', 'OVERALL KILLING EFFECT (%) - AN. ARABIENSIS', 'OVERALL KILLING EFFECT (%) - AN. PHAROENSIS', 'OVERALL KILLING EFFECT (%) - AN. COUSTANI']\n", + "\n", + "{\"0\":{\"TREATMENT\":\"Unwashed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":65.93,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"0.0*\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":12.33},\"1\":{\"TREATMENT\":\"20\\u00d7washed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":54.03,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":13.4},\"2\":{\"TREATMENT\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":64.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"2.25\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":39.7},\"3\":{\"TREATMENT\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":39.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":20.0}}\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: CONCLUSION\n", + "\n", + "Both DuraNet(r) and PermanNet 2.0 moderate efficacy against a pyrethroid-resistant population of _An. araabensis_ from Ethiopia. The bio efficacy of DuraNet(r) was found below the WHO recommendation. Therefore, the real impact of the observed insecticide resistance against DuraNet(r) to be further studied under phase-III trials, the need for new alternative vector control tools remains critical.\n", + "\n", + "header: Background: Methods\n", + "\n", + "A laboratory and a semi-field conditions experimental huts against _Anopheles_ Mosquitoes were conducted in southwestern Ethiopia from September 2015 to January 2016. The bio efficacy of DuraNet(r) was evaluated using the WHO cone bioassay test and then its field efficacy was evaluated using experimental huts against the malaria vector population.\n", + "\n", + "header: Limitation\n", + "\n", + "In this study, supplementary test like chemical assays were not conducted to measure the total insecticide content of the netting before and after wash resistance studies that support better interpretation of the results.\n", + "\n", + "header: Mosquito mortality, blood feeding and exit rates.\n", + "\n", + "Mosquito blood feeding rates, mortality rates and exit rates of the 5 treatments are presented in Table 1. The mean blood feeding rate was significantly lower (_P_ <.001) in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. However, there was no significance difference (_P_ >.05) in blood feeding rate among huts containing untreated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet*2.0. The mean mortality rate was significantly higher (_P_ <.001) among huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*. Higher mean number of mosquitoes were caught while exiting the huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*, however, there was no significant difference (_P_ >.05) among the treatments.\n", + "\n", + "header: Blood feeding inhibition and personal protection.\n", + "\n", + "Unwashed DuraNet* showed strong and better bio-efficacy in terms of blood feeding inhibition when compared to untreated DuraNet* and the rest of the treatment arms. The mean blood feeding rate of mosquitoes collected from a hut with unwashed DuraNet*, Unwashed PernaNet 2.0, twenty times washed DuraNet*, 20 times washed PernaNet 2.0 and Untreated DuraNet*, was 0.8/person-night, 4.1/person-night, 5.7/person-night, 6.0/person-night, and 7.0/person-night respectively. There was significant reduction (_P_ <.001) in blood feeding inhibition in all the treatment arms (hut with unwashed DuraNet*, but with 20 times washed DuraNet*, but with\n", + "\n", + "Figure 2: Mean percent knockdown and mortality of _An. arabiensis_ exposed in 3 minutes cone bioassay to DuraNet®, dimma, and southwestern Ethiopia.\n", + "\n", + "\n", + "unwashed PermaNet 2.0, hut with 20 times washed permanent 2.0) when compared to hut with untreated DuraNet*(control). Blood feeding inhibition can be also expressed as personal protection and unwashed DuraNet* showed the highest personal protection 88.7%, 100%, and 93.3% against _An. arabiensis, An. pbaroensis_, and _An. coustani_, respectively. Both PermaNet 2.0 twenty times washed and DuraNet* washed twenty times showed low to moderate personal protection (45.6% against _An. arabiensis_ to 83% against _An. pbaroensis_) when compared to untreated DuraNet* (Table 2).\n", + "\n", + "header: Table 1: Mean blood feeding, mortality and exit rates of populations of An. arabiensis exposed to different bed net types in field experimental huts in southwestern Ethiopia.\n", + "footer: Means within the same column and with different letters are signi\u001fcantly different using Tukey means separation test.**Significant at P<.001. *Significant at P<.05.\n", + "\n", + "\n", + "columns: ['TREATMENTS', 'BLOOD-FEEDING RATE MEAN ± SE', 'MORTALITY RATE MEAN ± SE', 'EXIT RATE MEAN ± SE']\n", + "\n", + "{\"0\":{\"TREATMENTS\":\"Untreated DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"77.70 \\u00b1 7.30\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"6.61 \\u00b1 3.80**\",\"EXIT RATE MEAN \\u00b1 SE\":\"26.77 \\u00b1 5.51\"},\"1\":{\"TREATMENTS\":\"Unwashed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"5.80 \\u00b1 2.32**\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"52.38 \\u00b1 5.62\",\"EXIT RATE MEAN \\u00b1 SE\":\"40.42 \\u00b1 5.22\"},\"2\":{\"TREATMENTS\":\"20\\u00d7 washed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"55.94 \\u00b1 6.78\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"28.17 \\u00b1 6.57*\",\"EXIT RATE MEAN \\u00b1 SE\":\"36.24 \\u00b1 5.50\"},\"3\":{\"TREATMENTS\":\"Unwashed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.39 \\u00b1 5.89\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"61.74 \\u00b1 6.09\",\"EXIT RATE MEAN \\u00b1 SE\":\"48.16 \\u00b1 5.53\"},\"4\":{\"TREATMENTS\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.35 \\u00b1 7.01\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"39.87 \\u00b1 6.34\",\"EXIT RATE MEAN \\u00b1 SE\":\"35.32 \\u00b1 5.78\"}}\n", + "\n", + "header: Cone bioassay and washing resistance: Experimental but trial\n", + "\n", + "_Mosquito entry into the bus._ A total of 1575 Anopheles mosquitoes were entered and collected in the 40 nights during the trial. These consisted of 1373 (87.8%) _An. gambiae_ s.l. presumably _An. arabiensis_ (Yewhalaw et al., 2009), 116 (7.4%) _Angelo custani_ (Laveran), and 107 (6.8%) _An. phareensis_ (Theobald). The mean number of mosquitoes caught per night was 8.75 for _An. arabiensis_, 5.52 for _An. Coastani_, and 6.33 for _An. pharensis._ The mean mosquito entry is not significantly different among the treatment arms (F = 1.277, \\(P\\) >.05). There was no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the Unwashed DuraNet* compared to treated DuraNet* and PernaNet* 2.0 (Table 2).\n", + "\n", + "header: Results\n", + "\n", + "World Health Organization cone bioassay tests against pyrethroid-resistant _An. araabensis_ led to mean percent mortality and knockdown of 78% and 93%, respectively. Washing of DuraNet(r) successively reduced its efficacy from 93% knockdown (0 wash) to 45% knockdown (20 washes). Similarly, mean mortality decreased from 84% (wash) to 47% (20 washes). A total of 1575 female mosquitoes were collected over 40 nights out of which 13738(87.8%) were _An. amabise._ Is Title (74%) were _An. amabensis_. The mean blood-feeding rate was significantly lower (_P_<.001) in hut containing unwashed DuraNet(r) when compared to hut containing untreated DuraNet(r). The mean mortality rate was significantly higher (_P_<.001) in hut containing DuraNet(r) when compared to hut containing untreated DuraNet(r). Unwashed DuraNet(r) showed the highest personal protection 88.7% and 100% against _An. araabensis_ and _An. araabensis_, respectively.\n", + "\n", + "header: Discussion\n", + "\n", + "Insecticide resistance remains major threat against the efficacy of long-lasting insecticidal nets, which are key intervention tools in controlling malaria vector. In this study laboratory bioassay was initially conducted using field collected larvae raised to adult population of _An. arabiensis_ to assess the bio-efficacy of unwashed DuraNet* (candidate bed net) and untreated DuraNet* (negative control). Furthermore, field experimental study was conducted on bio-efficacy of unwashed DuraNet* and PermaNet 2.0 following WHOPES standard guidelines in order to corroborate the laboratory findings.5\n", + "\n", + "The cone bioassay tests indicated that exposure of population of _An. arabiensis_ mosquitoes from Gilgel-Gibe area, southwestern Ethiopia, to sections of DuraNet* LLIN resulted in mean knockdown and mean mortality of 93% and 78%, respectively. The mortality result is slightly lower than the range of WHO recommendation (>80%) for public health application. The knockdown effect also is slightly below the required WHOPES recommended levels of 95% and above. In contrast to the above results earlier bio efficacy tests conducted using unwashed DuraNet* in India (Sood et al10; Gunasekaran et al11) showed 100% efficacy when tested against populations of different species of _amopheles_. The slight decline in bio-efficacy of DuraNet* in this study may be due to resistance development of vector populations of _An. arabiensis_ in the study area.8,12 In Ethiopia, Previous studies indicate that populations of _An. Arabiensis_ have developed resistance against insecticides used for net impregnation.13-17\n", + "\n", + "Wash resistant long-lasting insecticidal nets treated with pyrethroids are viewed as an important device in the area of vector control that would lessen the difficulties related to retreating conventional insecticide treated nets.[18] DuraNet*, the alpha-cypermethrin treated net, has similar conditions as that of Interceptor* LLIN and PermaNet* 3.0, which had been given interim but full recommendation since June 2017 by WHOPES.[19]\n", + "\n", + "In current study, DuraNet* showed reduced washing resistance. This is reflected in continues decrease of both mean percent knockdown and mean percent mortality of population of _An. arabiensis_ on exposure to the DuraNet* washed 0 and 20 times, respectively. This is in contrast to the study done by Sood et al[10] which showed no significant difference in percent mortality and percent knockdown of population of _An. caliticiacis_ between unwashed and 20 times washed DuraNet* in India. However, in the same study by Sood et al,[10] DuraNet* showed 100% knockdown but only 45% mortality after 20 washes against _Anopheles gambiae_ which is also consistent with current results. Wash resistance technology is added to the LLIN's materials with the assumption of pyrethroid chemicals such as Alphacypermethrin should have a strong affinity to the polyester netting fibers so that even after forceful washing a thin layer of pyrethroid, practically undetectable by High Performance Liquid Chromatography yet adequately bio active to encourage knockdown and mortality should still continue bound to the fibers.\n", + "\n", + "Comparison of mosquito density collected from experimental huts with (unwashed DuraNet*, 20 times washed DuraNet*, unwashed PermaNet*2.0, 20 times washed PermaNet*2.0, and untreated DuraNet*) showed no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the unwashed DuraNet* compared to untreated DuraNet*. Likewise, a study carried out by Asale et al[8] using experimental huts in the study area showed the absence of significance variation in deterrence among huts containing unwashed PermaNet*2.0, untreated net and DDT sprayed hut. The possible explanation for the absence of significant variation in mosquito density among treatment arms could be accounted to low number of mosquito catches during the study period but the impact of insecticide resistance on the efficacy of the nets to be further studied in phase-III trials.\n", + "\n", + "In this study significant reduction in blood feeding rate was observed in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. Similarly, higher mean mosquito mortality rate was recorded among huts containing treatment arms when compared to hut containing control net (untreated DuraNet*). The results for DuraNet* are new report from Jimma area thus we could not corroborate but, Vector population of _An. arabiensis_ from the study area showed no significant reduction of mortality rate, exit pattern and blood feeding inhibition when tested against PermaNet 2.0.[8]\n", + "\n", + "In this study, DuraNet* and PermaNet 2.0 showed low to moderate killing efficacy against vector population of _An. arabiensis_. Moreover, both DuraNet* and PermaNet 2.0 showed no evidence of killing effect against _An. pbarensis_. According to Kitau et al[20] LLINs and ITNs treated with pyrethroids were more effective at killing _An. gambiae_ and _An. fintetus_ than _An. arabiensis_. Thus, the variations in the outcome variables of Anopheles shown above (DuraNet* and PermaNet 2.0) may be due to different susceptibility status and species differences.\n", + "\n", + "header: The killing effect DuraNet*\n", + "\n", + "DuraNet* (both unwashed and 20 times washed) showed low to moderate killing efficacy (65.93% to 54.03%) against vector population of _An. arabiensis_. Whereas, against _An. pbaroensis_, both unwashed and washed DuraNet* showed no evidence of killing effect (0.00 to 9.0%). Similarly, PermaNet 2.0 (unwashed and washed) showed low to moderate killing effect against population of _An. arabiensis_ (Table 3).\n", + "\n", + "header: Study area and period: Mosquito rearing and cone bioassay testing.\n", + "\n", + "Anopheles mosquito larvae were collected from field sites near Gilgel-Gibe hydroelectric power production reservoir and reared to adults under standard conditions (25 \\(\\pm\\) 20*C temperature,80 \\(\\pm\\) 4% relative humidity) in tropical and infectious diseases research institute, Sekoru campus, Jimma University, Ethiopia. For WHO cone bioassay test, five 2-5 days age unfed female _An. gambiae s.l._ (presumably _An. ankiensis_ according to Yewhalaw et al., (2009))\\(\\%\\) mosquitoes were used per cone. Twenty mosquitoes (5 mosquito\\({}^{\\text{\\textregistered}}\\) per-cone \\(\\times\\) 4 cone-per sub-sample net piece) were introduced into the cone facing net sample for 3 minutes and then moved to holding paper cups. Then mosquitoes were supplied with a 10% sucrose solution. The number of mosquitoes knocked down and the number of dead mosquitoes were recorded every 10 minute within 60 minutes and 24 hours, respectively. Mosquitoes exposed to untreated DuraNet\\({}^{*}\\) pieces were used as controls and experiment conditions were set to be 27 \\(\\pm\\) 2*C temperature and 75 \\(\\pm\\) 10% relative humidity (RH) throughout the study. Thus, a total of 1260 mosquitoes (63 net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used for complete bioassay testing and another 180 mosquitoes (9 untreated net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used as control.\n", + "\n", + "For net pieces washing each net sub-samples (25 cm \\(\\times\\) 25 cm) were introduced individually into 1-1 beakers containing 0.5 l deionized water, with 2 g/l WHO recommended soap (Savon de Marseille; pH 10-11) added and fully dissolved just before washing. The beakers were then introduced into a water-bath at 30*C and shaken for 10 min at 155 movements per minute. The samples were then removed, rinsed twice for 10 min in clean, deionized water under the same shaking conditions as above, dried at room temperature and stored at 30*C in the dark between washes.\n", + "\n", + "header: Abstract\n", + "\n", + "Evaluation of Long-Lasting Insecticidal Nets (DuraNet(r)) Under laboratory and Semi-Field Conditions Using Experimental Huts Against _Anopheles Mosquitoes_ in\n", + "\n", + "Jimma Zone\n", + "\n", + " Southwestern Ethiopia\n", + "\n", + "B. Gebremariam(r), W. Birke, W. Zeine, A. Ambelu\n", + "\n", + "\n", + "\n", + "Long-Lasting insecticidal Nets (LLINs) efficacy could be compromised due to a lot of influences together with user compliance and vector population insecticide resistance status. Thus, this study was to assess the biological efficacy of DuraNet(r) with the help of the World Health Organization cone bioassay and field experimental hut.\n", + "\n", + "header: ORCID iD\n", + "\n", + "Brhane Gebremariam (c) [https://orcid.org/0000-0002-0824-3221](https://orcid.org/0000-0002-0824-3221)\n", + "\n", + "header: Table 2. Blood-feeding inhibition and personal protection due to DuraNet® LLIN in the experimental huts, southwestern Ethiopia.\n", + "footer: *Significant at P<.05. **Significant at P<.01.\n", + "columns: ['TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2', 'PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)']\n", + "\n", + "{\"0\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Untreated DuraNet\\u00ae (NC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"232 (0**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"43 (0**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"30 (0*)\"},\"1\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"24 (88.7**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"00 (100**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"2 (93.3*)\"},\"2\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"176 (42.4)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"27 (62.8)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"5 (83.3*)\"},\"3\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"131 (45.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"11 (83**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"16 (46.6)\"},\"4\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"192 (38.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"6 (75)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"33 (0*)\"}}\n", + "\n", + "header: Results\n", + "\n", + "Exposure of wild population of _An. arabiensis_ mosquitoes to net sections of DuraNet* LLIN in WHO bioassay tests gives mean mortality rate of 78% as well as mean knockdown effect of 93%. Mean percent knockdown and percent mortality of DuraNet* LLIN showed significant relationship (\\(R^{2}\\) = 0.797, n = 260, \\(P\\) <.001). The wash resistance activity of DuraNet* LLINs, measured in terms of percent knockdown and mortality is presented in Figure 2. The mean percent knockdown of wild population of _An. arabiensis_ decreased from 93% to 45% up on exposure to the DuraNet* washed 0 and 20 times respectively. The mean percent mortality decreased from 84% to 47% on exposure to the DuraNet* washed 0 and 20 times, respectively. Wash resistance has negative correlation with percent knockdown and percent mortality which means as number of wash increase, percent knockdown and percent mortality declined (\\(r^{2}\\) = 0.333, 96KD = 89.16 \\(\\pm\\) 2.15, \\(P\\) <.001 and \\(r^{2}\\) = 0.236, 90Mt = 81.94 \\(\\pm\\) 1.68, \\(P\\) <.001), respectively.\n", + "\n", + "header: Experimental but establishment.: Treatment arms and sleepers rotation\n", + "\n", + "In this experiment, 5 different treatment arms were used. These include (1) Untreated unwashed DuraNet(Negative control) (2) Unwashed treated DuraNet(3) treated DuraNet(20 times washed (4) PermaNet(4) 2.0 20 times washed, and (5) unwashed PermaNet(4) 2.0 (positive control). All nets were 75 denier polyethylene and polyester nets respectively. To simulate wear and tear condition of nets under usage 6 (4 cm \\(\\times\\) 4 cm size) holes were cut in each net (2 holes on each of the sides and 1 hole at each end). The DuraNet(4) LLIN and PermaNet(4) 2.0 were washed according to World Health Organization Stage II washing procedure [5]. For washing, the nets were put in to aluminum bowl with 10 l of tap water and 2g/l of savon de Marseille soap. The nets were agitated for 3 minutes, then soaked for 4 minutes, and agitated again for 3 minutes. The nets were agitated manually by stirring them with a pole at 20 rotations per minute. Thus, each net was washed for a total of 10 minute and then rinsed with clean water by a similar procedure, dried horizontally in the shade and stored at ambient temperature between washes. WHO recognized PermaNet(4) 2.0 LLIN washed 20 times, was used as a positive control to assess DuraNet(4) LLIN performance.\n", + "\n", + "In each data collection night, 2 non-smoker male volunteers aged 20 to 25 were allowed to sleep in each experimental hut with its door remain closed between 19:00 and 07:00 hours. Each team was rotated between treatments on successive nights within a week to avoid possible bias which could arise due to individual attractiveness to mosquitoes. There were 5 successive collection nights (Monday to Friday) and 2 successive break nights for hut ventilation per week. Thus, there were 25 collection nights in order to complete the whole study. Informed written consent was obtained from each sleeper.\n", + "\n", + "header: Mosquito collection, identification and key parameters measured in determination of LLINs efficacy\n", + "\n", + "Mosquitoes were collected from 6:00 to 7:00 each morning inside bed nets, floors, walls, ceilings, and verandas of each experimental hut by the help of mouth aspirators and torches. Then the collected mosquitoes were recorded as dead or alive. Live mosquitoes were held in paper cups and supplied with 10% sucrose solution. The collected mosquitoes were transported to Asendabo Vector Biology Laboratory, Jimma University, where mosquitoes were sorted by genus, sex and morphologically identified using taxonomic keys [9]. Mosquitoes were also scored for their physiological state as unfed, fed, half gravid and gravid. Delayed mortality was recorded after 24 hours. To evaluate the efficacy of DuraNet LLIN against the resistant populations of _An. arabiensis_, different entomological parameters (deterrence, exit, blood feeding inhibition, and mortality rates) were derived from basic measurements.\n", + "\n", + "The primary outcomes were:\n", + "\n", + "1. Deterrence--the reduction in entry in to treatment hut relative to the control hut (ie, huts holding untreated nets);\n", + "2. Mortality--the proportion of mosquitoes killed relative to the total catch size;\n", + "3. Killing effect--the numbers killed by a treatment relative to the untreated control, as derived from the formula; \\[\\text{Killing effect}\\left( \\% \\right) = \\left( \\frac{Kt-Ku}{Tu} \\right) \\ast 100\\]\n", + "\n", + "Where **Kt** is the number dead mosquitoes in the huts with treated nets, **Ku** is the number dead mosquitoes in the huts with untreated nets, and **Tu** is the total entering the huts with untreated nets.\n", + "\n", + "1. Blood Feeding Inhibition-The proportional reduction in blood feeding in huts with treated nets relative to controls with untreated nets.\n", + "\n", + "Figure 1: Experimental hut design of the study.\n", + "\n", + "\n", + "5. Personal Protection--The reduction in mosquito biting by treated nets relative to untreated nets, as derived from the formula \\[\\%\\text{personal protection} = (\\frac{Bu-Bt}{Bu})*100\\]\n", + "\n", + "Where Bu is the total number blood fed mosquitoes in the huts with untreated nets, and Bt is the total number blood fed in the huts with treated nets.\n", + "\n", + "header: Table 3. The overall killing effect of DuraNet® LLIN in experimental hut.\n", + "footer: None\n", + "columns: ['TREATMENT', 'OVERALL KILLING EFFECT (%) - AN. ARABIENSIS', 'OVERALL KILLING EFFECT (%) - AN. PHAROENSIS', 'OVERALL KILLING EFFECT (%) - AN. COUSTANI']\n", + "\n", + "{\"0\":{\"TREATMENT\":\"Unwashed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":65.93,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"0.0*\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":12.33},\"1\":{\"TREATMENT\":\"20\\u00d7washed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":54.03,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":13.4},\"2\":{\"TREATMENT\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":64.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"2.25\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":39.7},\"3\":{\"TREATMENT\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":39.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":20.0}}\n", + "\n", + "header: Methods\n", + "\n", + "This study was conducted from September 2015 to January 2016 near the Gilgel-Gibe hydroelectric dam area, southwestern Ethiopia. The hydroelectric dam is one of the major hydroelectric dams in Ethiopia with artificial reservoir occupying an estimated area of 62 kmsq,6 It produces around 184 MWh and is located 260 km southwest of the capital Addis Ababa. It has been functional since 2004. The study area is located between latitudes 7*42*50*7N and 07*53*50*7N and longitudes 37*11*22*7E and 37*20*36*E with an altitude ranging from 1672-1864 m above sea level. The area has a sub-humid, warm to hot climate, obtains between 1300 and 1800 mm of rainfall annually and has a mean annual temperature of 19*C. Mostly, the 2 peak seasonal transmissions of malaria occur during the months of September to December and March to May in the study area.\n", + "\n", + "Bio-efficacy testing of LLIN (DuraNet\\({}^{\\text{\\text{\\textregistered}}}\\)) under laboratory setting\n", + "\n", + "\\(LLIN\\)_sample preparation and washing process._ DuraNet\\({}^{*}\\) LLINs (Karur, Tamil Nadu 639006, and India) is treated with alpha-cypermethrin at a target dose of 250 mg/m\\({}^{2}\\) of netting material. It contains 0.55% W/W \\(\\pm\\) 15% alpha-cypermethrin. The alpha-cypermethrin chemical is coated onto filaments at bursting strength of 450 kPa of netting material and of 145 \\(\\pm\\) 5% for seam sub-section per denier yarn. Prior to testing the production date and batch number of all nets were recorded. Seven sub-samples per net (1 from the roof, the rest from side of the net) were taken from each net and prepared for standard LLINs cone tests by cutting 25 cm \\(\\times\\) 25 cm pieces following WHO protocol.7 In this study, 9 candidate nets were used for bio-efficacy testing. Thus, a total of 63 sub-sample net pieces (7 sub-sample pieces from each net \\(\\times\\) 9 DuraNet\\({}^{*}\\)s) individually rolled up in aluminum foil, labeled (by net type, net number and sample area) and kept in a refrigerator prior to the assay. Concurrently 9 (1 sub-sample piece from each untreated DuraNet\\({}^{*}\\)\\(\\times\\) 9 untreated DuraNet\\({}^{*}\\)s) sub-samples (30 cm \\(\\times\\) 30 cm) were individually rolled up in aluminum foil, labeled and kept in a refrigerator prior to the assay.\n", + "\n", + "header: Introduction\n", + "\n", + "Malaria is still one of highest health risks in developing countries with high morbidity and mortality in under 5 children. Assessment of overall economic impact of the disease shows that it accounts for 40% of health cost spending, 30% to 50% of inpatient charges, and up to 50% of outpatient official visits in areas with great malaria.1 According to the world health organization, there were 216 million new incidents of malaria leading to 445 000 death, of which 90% occurred in African countries.2\n", + "\n", + "Footnote 1: [https://developers.com/en/article/](https://developers.com/en/article/)\n", + "\n", + "Long-Lasting insecticidal Nets (LLINs) are uppermost community health apparatuses and, when used by children and pregnant women, subsidize to improving motherly, neonatal, and infant health, with long-lasting reimbursements to the emerging child.3 These nets provide personal barrier from bite by mosquitoes in addition those nets lessen also the transmission of malaria and have excito-repellency effect.4 A total of 505 million insecticidal nets (ITNs) were distributed in developing countries between 2014 and 2016 with household ownership of at least 1 insecticidal net, improved from 50% in 2010 to 80% in 2016. Nevertheless, the ratio of houses with adequate bed nets (ie, 1 net for every 2 people) is very low (43%).2 Following the high demand of bed nets as key vector control intervention, companies are ramping up production and new brand nets are being introduced for public health utilization.\n", + "\n", + "Footnote 2: [https://developers.com/en/article/](https://developers.com/en/article/)\n", + "\n", + "In order for any new long-lasting insecticidal nets to be used in public health, it must gain WHOPES approval.5 The approval process passes through 3 stages of efficacy testing (laboratory, small-scale semi-field, and large-scale field trial). To be classified as a long-lasting insecticidal net, it must \n", + "maintain their effective biological activity for at least 20 World Health Organization recommended washes typical washes under laboratory conditions and 3 years of suggested use under semi-field and field condition.\n", + "\n", + "DuraNet\\({}^{*}\\) is an LLIN developed by the Shobikaa Impex pvt Ltd (Karur, Tamil Nadu 639006, and India). It contains 0.55% w/w \\(\\pm\\) 15% alpha-cypermethrin. The net is a polyethylene fiber coated with a proprietary polymer containing target dose of alpha-cypermethrin at 250 mg/m\\({}^{2}\\). The polymer binds to the fiber and can withstand multiple washings, the active ingredient diffusing in a controlled manner to the surface of the polymer coat to maintain insecticidal efficacy.\n", + "\n", + "Thus, this study was conducted to verify the intended efficacy of the product in the presence of pyrethroid resistance vector population of _An. gambiae_ s.l. using cone bioassay and semi-field experimental huts in southwestern Ethiopia. The cone bioassays were conducted in Tropical and Infectious diseases research institute, Jimma University. The experimental hut study trials were undertaken near the Gilgel-Gibe hydroelectric power dam-I.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Limitation\n", + "\n", + "In this study, supplementary test like chemical assays were not conducted to measure the total insecticide content of the netting before and after wash resistance studies that support better interpretation of the results.\n", + "\n", + "header: Blood feeding inhibition and personal protection.\n", + "\n", + "Unwashed DuraNet* showed strong and better bio-efficacy in terms of blood feeding inhibition when compared to untreated DuraNet* and the rest of the treatment arms. The mean blood feeding rate of mosquitoes collected from a hut with unwashed DuraNet*, Unwashed PernaNet 2.0, twenty times washed DuraNet*, 20 times washed PernaNet 2.0 and Untreated DuraNet*, was 0.8/person-night, 4.1/person-night, 5.7/person-night, 6.0/person-night, and 7.0/person-night respectively. There was significant reduction (_P_ <.001) in blood feeding inhibition in all the treatment arms (hut with unwashed DuraNet*, but with 20 times washed DuraNet*, but with\n", + "\n", + "Figure 2: Mean percent knockdown and mortality of _An. arabiensis_ exposed in 3 minutes cone bioassay to DuraNet®, dimma, and southwestern Ethiopia.\n", + "\n", + "\n", + "unwashed PermaNet 2.0, hut with 20 times washed permanent 2.0) when compared to hut with untreated DuraNet*(control). Blood feeding inhibition can be also expressed as personal protection and unwashed DuraNet* showed the highest personal protection 88.7%, 100%, and 93.3% against _An. arabiensis, An. pbaroensis_, and _An. coustani_, respectively. Both PermaNet 2.0 twenty times washed and DuraNet* washed twenty times showed low to moderate personal protection (45.6% against _An. arabiensis_ to 83% against _An. pbaroensis_) when compared to untreated DuraNet* (Table 2).\n", + "\n", + "header: Background: Methods\n", + "\n", + "A laboratory and a semi-field conditions experimental huts against _Anopheles_ Mosquitoes were conducted in southwestern Ethiopia from September 2015 to January 2016. The bio efficacy of DuraNet(r) was evaluated using the WHO cone bioassay test and then its field efficacy was evaluated using experimental huts against the malaria vector population.\n", + "\n", + "header: CONCLUSION\n", + "\n", + "Both DuraNet(r) and PermanNet 2.0 moderate efficacy against a pyrethroid-resistant population of _An. araabensis_ from Ethiopia. The bio efficacy of DuraNet(r) was found below the WHO recommendation. Therefore, the real impact of the observed insecticide resistance against DuraNet(r) to be further studied under phase-III trials, the need for new alternative vector control tools remains critical.\n", + "\n", + "header: The killing effect DuraNet*\n", + "\n", + "DuraNet* (both unwashed and 20 times washed) showed low to moderate killing efficacy (65.93% to 54.03%) against vector population of _An. arabiensis_. Whereas, against _An. pbaroensis_, both unwashed and washed DuraNet* showed no evidence of killing effect (0.00 to 9.0%). Similarly, PermaNet 2.0 (unwashed and washed) showed low to moderate killing effect against population of _An. arabiensis_ (Table 3).\n", + "\n", + "header: Results\n", + "\n", + "World Health Organization cone bioassay tests against pyrethroid-resistant _An. araabensis_ led to mean percent mortality and knockdown of 78% and 93%, respectively. Washing of DuraNet(r) successively reduced its efficacy from 93% knockdown (0 wash) to 45% knockdown (20 washes). Similarly, mean mortality decreased from 84% (wash) to 47% (20 washes). A total of 1575 female mosquitoes were collected over 40 nights out of which 13738(87.8%) were _An. amabise._ Is Title (74%) were _An. amabensis_. The mean blood-feeding rate was significantly lower (_P_<.001) in hut containing unwashed DuraNet(r) when compared to hut containing untreated DuraNet(r). The mean mortality rate was significantly higher (_P_<.001) in hut containing DuraNet(r) when compared to hut containing untreated DuraNet(r). Unwashed DuraNet(r) showed the highest personal protection 88.7% and 100% against _An. araabensis_ and _An. araabensis_, respectively.\n", + "\n", + "header: Mosquito mortality, blood feeding and exit rates.\n", + "\n", + "Mosquito blood feeding rates, mortality rates and exit rates of the 5 treatments are presented in Table 1. The mean blood feeding rate was significantly lower (_P_ <.001) in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. However, there was no significance difference (_P_ >.05) in blood feeding rate among huts containing untreated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet*2.0. The mean mortality rate was significantly higher (_P_ <.001) among huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*. Higher mean number of mosquitoes were caught while exiting the huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*, however, there was no significant difference (_P_ >.05) among the treatments.\n", + "\n", + "header: Discussion\n", + "\n", + "Insecticide resistance remains major threat against the efficacy of long-lasting insecticidal nets, which are key intervention tools in controlling malaria vector. In this study laboratory bioassay was initially conducted using field collected larvae raised to adult population of _An. arabiensis_ to assess the bio-efficacy of unwashed DuraNet* (candidate bed net) and untreated DuraNet* (negative control). Furthermore, field experimental study was conducted on bio-efficacy of unwashed DuraNet* and PermaNet 2.0 following WHOPES standard guidelines in order to corroborate the laboratory findings.5\n", + "\n", + "The cone bioassay tests indicated that exposure of population of _An. arabiensis_ mosquitoes from Gilgel-Gibe area, southwestern Ethiopia, to sections of DuraNet* LLIN resulted in mean knockdown and mean mortality of 93% and 78%, respectively. The mortality result is slightly lower than the range of WHO recommendation (>80%) for public health application. The knockdown effect also is slightly below the required WHOPES recommended levels of 95% and above. In contrast to the above results earlier bio efficacy tests conducted using unwashed DuraNet* in India (Sood et al10; Gunasekaran et al11) showed 100% efficacy when tested against populations of different species of _amopheles_. The slight decline in bio-efficacy of DuraNet* in this study may be due to resistance development of vector populations of _An. arabiensis_ in the study area.8,12 In Ethiopia, Previous studies indicate that populations of _An. Arabiensis_ have developed resistance against insecticides used for net impregnation.13-17\n", + "\n", + "Wash resistant long-lasting insecticidal nets treated with pyrethroids are viewed as an important device in the area of vector control that would lessen the difficulties related to retreating conventional insecticide treated nets.[18] DuraNet*, the alpha-cypermethrin treated net, has similar conditions as that of Interceptor* LLIN and PermaNet* 3.0, which had been given interim but full recommendation since June 2017 by WHOPES.[19]\n", + "\n", + "In current study, DuraNet* showed reduced washing resistance. This is reflected in continues decrease of both mean percent knockdown and mean percent mortality of population of _An. arabiensis_ on exposure to the DuraNet* washed 0 and 20 times, respectively. This is in contrast to the study done by Sood et al[10] which showed no significant difference in percent mortality and percent knockdown of population of _An. caliticiacis_ between unwashed and 20 times washed DuraNet* in India. However, in the same study by Sood et al,[10] DuraNet* showed 100% knockdown but only 45% mortality after 20 washes against _Anopheles gambiae_ which is also consistent with current results. Wash resistance technology is added to the LLIN's materials with the assumption of pyrethroid chemicals such as Alphacypermethrin should have a strong affinity to the polyester netting fibers so that even after forceful washing a thin layer of pyrethroid, practically undetectable by High Performance Liquid Chromatography yet adequately bio active to encourage knockdown and mortality should still continue bound to the fibers.\n", + "\n", + "Comparison of mosquito density collected from experimental huts with (unwashed DuraNet*, 20 times washed DuraNet*, unwashed PermaNet*2.0, 20 times washed PermaNet*2.0, and untreated DuraNet*) showed no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the unwashed DuraNet* compared to untreated DuraNet*. Likewise, a study carried out by Asale et al[8] using experimental huts in the study area showed the absence of significance variation in deterrence among huts containing unwashed PermaNet*2.0, untreated net and DDT sprayed hut. The possible explanation for the absence of significant variation in mosquito density among treatment arms could be accounted to low number of mosquito catches during the study period but the impact of insecticide resistance on the efficacy of the nets to be further studied in phase-III trials.\n", + "\n", + "In this study significant reduction in blood feeding rate was observed in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. Similarly, higher mean mosquito mortality rate was recorded among huts containing treatment arms when compared to hut containing control net (untreated DuraNet*). The results for DuraNet* are new report from Jimma area thus we could not corroborate but, Vector population of _An. arabiensis_ from the study area showed no significant reduction of mortality rate, exit pattern and blood feeding inhibition when tested against PermaNet 2.0.[8]\n", + "\n", + "In this study, DuraNet* and PermaNet 2.0 showed low to moderate killing efficacy against vector population of _An. arabiensis_. Moreover, both DuraNet* and PermaNet 2.0 showed no evidence of killing effect against _An. pbarensis_. According to Kitau et al[20] LLINs and ITNs treated with pyrethroids were more effective at killing _An. gambiae_ and _An. fintetus_ than _An. arabiensis_. Thus, the variations in the outcome variables of Anopheles shown above (DuraNet* and PermaNet 2.0) may be due to different susceptibility status and species differences.\n", + "\n", + "header: Study area and period: Mosquito rearing and cone bioassay testing.\n", + "\n", + "Anopheles mosquito larvae were collected from field sites near Gilgel-Gibe hydroelectric power production reservoir and reared to adults under standard conditions (25 \\(\\pm\\) 20*C temperature,80 \\(\\pm\\) 4% relative humidity) in tropical and infectious diseases research institute, Sekoru campus, Jimma University, Ethiopia. For WHO cone bioassay test, five 2-5 days age unfed female _An. gambiae s.l._ (presumably _An. ankiensis_ according to Yewhalaw et al., (2009))\\(\\%\\) mosquitoes were used per cone. Twenty mosquitoes (5 mosquito\\({}^{\\text{\\textregistered}}\\) per-cone \\(\\times\\) 4 cone-per sub-sample net piece) were introduced into the cone facing net sample for 3 minutes and then moved to holding paper cups. Then mosquitoes were supplied with a 10% sucrose solution. The number of mosquitoes knocked down and the number of dead mosquitoes were recorded every 10 minute within 60 minutes and 24 hours, respectively. Mosquitoes exposed to untreated DuraNet\\({}^{*}\\) pieces were used as controls and experiment conditions were set to be 27 \\(\\pm\\) 2*C temperature and 75 \\(\\pm\\) 10% relative humidity (RH) throughout the study. Thus, a total of 1260 mosquitoes (63 net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used for complete bioassay testing and another 180 mosquitoes (9 untreated net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used as control.\n", + "\n", + "For net pieces washing each net sub-samples (25 cm \\(\\times\\) 25 cm) were introduced individually into 1-1 beakers containing 0.5 l deionized water, with 2 g/l WHO recommended soap (Savon de Marseille; pH 10-11) added and fully dissolved just before washing. The beakers were then introduced into a water-bath at 30*C and shaken for 10 min at 155 movements per minute. The samples were then removed, rinsed twice for 10 min in clean, deionized water under the same shaking conditions as above, dried at room temperature and stored at 30*C in the dark between washes.\n", + "\n", + "header: Results\n", + "\n", + "Exposure of wild population of _An. arabiensis_ mosquitoes to net sections of DuraNet* LLIN in WHO bioassay tests gives mean mortality rate of 78% as well as mean knockdown effect of 93%. Mean percent knockdown and percent mortality of DuraNet* LLIN showed significant relationship (\\(R^{2}\\) = 0.797, n = 260, \\(P\\) <.001). The wash resistance activity of DuraNet* LLINs, measured in terms of percent knockdown and mortality is presented in Figure 2. The mean percent knockdown of wild population of _An. arabiensis_ decreased from 93% to 45% up on exposure to the DuraNet* washed 0 and 20 times respectively. The mean percent mortality decreased from 84% to 47% on exposure to the DuraNet* washed 0 and 20 times, respectively. Wash resistance has negative correlation with percent knockdown and percent mortality which means as number of wash increase, percent knockdown and percent mortality declined (\\(r^{2}\\) = 0.333, 96KD = 89.16 \\(\\pm\\) 2.15, \\(P\\) <.001 and \\(r^{2}\\) = 0.236, 90Mt = 81.94 \\(\\pm\\) 1.68, \\(P\\) <.001), respectively.\n", + "\n", + "header: Table 1: Mean blood feeding, mortality and exit rates of populations of An. arabiensis exposed to different bed net types in field experimental huts in southwestern Ethiopia.\n", + "footer: Means within the same column and with different letters are signi\u001fcantly different using Tukey means separation test.**Significant at P<.001. *Significant at P<.05.\n", + "\n", + "\n", + "columns: ['TREATMENTS', 'BLOOD-FEEDING RATE MEAN ± SE', 'MORTALITY RATE MEAN ± SE', 'EXIT RATE MEAN ± SE']\n", + "\n", + "{\"0\":{\"TREATMENTS\":\"Untreated DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"77.70 \\u00b1 7.30\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"6.61 \\u00b1 3.80**\",\"EXIT RATE MEAN \\u00b1 SE\":\"26.77 \\u00b1 5.51\"},\"1\":{\"TREATMENTS\":\"Unwashed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"5.80 \\u00b1 2.32**\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"52.38 \\u00b1 5.62\",\"EXIT RATE MEAN \\u00b1 SE\":\"40.42 \\u00b1 5.22\"},\"2\":{\"TREATMENTS\":\"20\\u00d7 washed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"55.94 \\u00b1 6.78\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"28.17 \\u00b1 6.57*\",\"EXIT RATE MEAN \\u00b1 SE\":\"36.24 \\u00b1 5.50\"},\"3\":{\"TREATMENTS\":\"Unwashed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.39 \\u00b1 5.89\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"61.74 \\u00b1 6.09\",\"EXIT RATE MEAN \\u00b1 SE\":\"48.16 \\u00b1 5.53\"},\"4\":{\"TREATMENTS\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.35 \\u00b1 7.01\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"39.87 \\u00b1 6.34\",\"EXIT RATE MEAN \\u00b1 SE\":\"35.32 \\u00b1 5.78\"}}\n", + "\n", + "header: Cone bioassay and washing resistance: Experimental but trial\n", + "\n", + "_Mosquito entry into the bus._ A total of 1575 Anopheles mosquitoes were entered and collected in the 40 nights during the trial. These consisted of 1373 (87.8%) _An. gambiae_ s.l. presumably _An. arabiensis_ (Yewhalaw et al., 2009), 116 (7.4%) _Angelo custani_ (Laveran), and 107 (6.8%) _An. phareensis_ (Theobald). The mean number of mosquitoes caught per night was 8.75 for _An. arabiensis_, 5.52 for _An. Coastani_, and 6.33 for _An. pharensis._ The mean mosquito entry is not significantly different among the treatment arms (F = 1.277, \\(P\\) >.05). There was no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the Unwashed DuraNet* compared to treated DuraNet* and PernaNet* 2.0 (Table 2).\n", + "\n", + "header: Table 2. Blood-feeding inhibition and personal protection due to DuraNet® LLIN in the experimental huts, southwestern Ethiopia.\n", + "footer: *Significant at P<.05. **Significant at P<.01.\n", + "columns: ['TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2', 'PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)']\n", + "\n", + "{\"0\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Untreated DuraNet\\u00ae (NC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"232 (0**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"43 (0**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"30 (0*)\"},\"1\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"24 (88.7**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"00 (100**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"2 (93.3*)\"},\"2\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"176 (42.4)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"27 (62.8)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"5 (83.3*)\"},\"3\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"131 (45.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"11 (83**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"16 (46.6)\"},\"4\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"192 (38.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"6 (75)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"33 (0*)\"}}\n", + "\n", + "header: Experimental but establishment.: Treatment arms and sleepers rotation\n", + "\n", + "In this experiment, 5 different treatment arms were used. These include (1) Untreated unwashed DuraNet(Negative control) (2) Unwashed treated DuraNet(3) treated DuraNet(20 times washed (4) PermaNet(4) 2.0 20 times washed, and (5) unwashed PermaNet(4) 2.0 (positive control). All nets were 75 denier polyethylene and polyester nets respectively. To simulate wear and tear condition of nets under usage 6 (4 cm \\(\\times\\) 4 cm size) holes were cut in each net (2 holes on each of the sides and 1 hole at each end). The DuraNet(4) LLIN and PermaNet(4) 2.0 were washed according to World Health Organization Stage II washing procedure [5]. For washing, the nets were put in to aluminum bowl with 10 l of tap water and 2g/l of savon de Marseille soap. The nets were agitated for 3 minutes, then soaked for 4 minutes, and agitated again for 3 minutes. The nets were agitated manually by stirring them with a pole at 20 rotations per minute. Thus, each net was washed for a total of 10 minute and then rinsed with clean water by a similar procedure, dried horizontally in the shade and stored at ambient temperature between washes. WHO recognized PermaNet(4) 2.0 LLIN washed 20 times, was used as a positive control to assess DuraNet(4) LLIN performance.\n", + "\n", + "In each data collection night, 2 non-smoker male volunteers aged 20 to 25 were allowed to sleep in each experimental hut with its door remain closed between 19:00 and 07:00 hours. Each team was rotated between treatments on successive nights within a week to avoid possible bias which could arise due to individual attractiveness to mosquitoes. There were 5 successive collection nights (Monday to Friday) and 2 successive break nights for hut ventilation per week. Thus, there were 25 collection nights in order to complete the whole study. Informed written consent was obtained from each sleeper.\n", + "\n", + "header: Table 3. The overall killing effect of DuraNet® LLIN in experimental hut.\n", + "footer: None\n", + "columns: ['TREATMENT', 'OVERALL KILLING EFFECT (%) - AN. ARABIENSIS', 'OVERALL KILLING EFFECT (%) - AN. PHAROENSIS', 'OVERALL KILLING EFFECT (%) - AN. COUSTANI']\n", + "\n", + "{\"0\":{\"TREATMENT\":\"Unwashed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":65.93,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"0.0*\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":12.33},\"1\":{\"TREATMENT\":\"20\\u00d7washed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":54.03,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":13.4},\"2\":{\"TREATMENT\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":64.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"2.25\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":39.7},\"3\":{\"TREATMENT\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":39.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":20.0}}\n", + "\n", + "header: Methods\n", + "\n", + "This study was conducted from September 2015 to January 2016 near the Gilgel-Gibe hydroelectric dam area, southwestern Ethiopia. The hydroelectric dam is one of the major hydroelectric dams in Ethiopia with artificial reservoir occupying an estimated area of 62 kmsq,6 It produces around 184 MWh and is located 260 km southwest of the capital Addis Ababa. It has been functional since 2004. The study area is located between latitudes 7*42*50*7N and 07*53*50*7N and longitudes 37*11*22*7E and 37*20*36*E with an altitude ranging from 1672-1864 m above sea level. The area has a sub-humid, warm to hot climate, obtains between 1300 and 1800 mm of rainfall annually and has a mean annual temperature of 19*C. Mostly, the 2 peak seasonal transmissions of malaria occur during the months of September to December and March to May in the study area.\n", + "\n", + "Bio-efficacy testing of LLIN (DuraNet\\({}^{\\text{\\text{\\textregistered}}}\\)) under laboratory setting\n", + "\n", + "\\(LLIN\\)_sample preparation and washing process._ DuraNet\\({}^{*}\\) LLINs (Karur, Tamil Nadu 639006, and India) is treated with alpha-cypermethrin at a target dose of 250 mg/m\\({}^{2}\\) of netting material. It contains 0.55% W/W \\(\\pm\\) 15% alpha-cypermethrin. The alpha-cypermethrin chemical is coated onto filaments at bursting strength of 450 kPa of netting material and of 145 \\(\\pm\\) 5% for seam sub-section per denier yarn. Prior to testing the production date and batch number of all nets were recorded. Seven sub-samples per net (1 from the roof, the rest from side of the net) were taken from each net and prepared for standard LLINs cone tests by cutting 25 cm \\(\\times\\) 25 cm pieces following WHO protocol.7 In this study, 9 candidate nets were used for bio-efficacy testing. Thus, a total of 63 sub-sample net pieces (7 sub-sample pieces from each net \\(\\times\\) 9 DuraNet\\({}^{*}\\)s) individually rolled up in aluminum foil, labeled (by net type, net number and sample area) and kept in a refrigerator prior to the assay. Concurrently 9 (1 sub-sample piece from each untreated DuraNet\\({}^{*}\\)\\(\\times\\) 9 untreated DuraNet\\({}^{*}\\)s) sub-samples (30 cm \\(\\times\\) 30 cm) were individually rolled up in aluminum foil, labeled and kept in a refrigerator prior to the assay.\n", + "\n", + "header: Abstract\n", + "\n", + "Evaluation of Long-Lasting Insecticidal Nets (DuraNet(r)) Under laboratory and Semi-Field Conditions Using Experimental Huts Against _Anopheles Mosquitoes_ in\n", + "\n", + "Jimma Zone\n", + "\n", + " Southwestern Ethiopia\n", + "\n", + "B. Gebremariam(r), W. Birke, W. Zeine, A. Ambelu\n", + "\n", + "\n", + "\n", + "Long-Lasting insecticidal Nets (LLINs) efficacy could be compromised due to a lot of influences together with user compliance and vector population insecticide resistance status. Thus, this study was to assess the biological efficacy of DuraNet(r) with the help of the World Health Organization cone bioassay and field experimental hut.\n", + "\n", + "header: Mosquito collection, identification and key parameters measured in determination of LLINs efficacy\n", + "\n", + "Mosquitoes were collected from 6:00 to 7:00 each morning inside bed nets, floors, walls, ceilings, and verandas of each experimental hut by the help of mouth aspirators and torches. Then the collected mosquitoes were recorded as dead or alive. Live mosquitoes were held in paper cups and supplied with 10% sucrose solution. The collected mosquitoes were transported to Asendabo Vector Biology Laboratory, Jimma University, where mosquitoes were sorted by genus, sex and morphologically identified using taxonomic keys [9]. Mosquitoes were also scored for their physiological state as unfed, fed, half gravid and gravid. Delayed mortality was recorded after 24 hours. To evaluate the efficacy of DuraNet LLIN against the resistant populations of _An. arabiensis_, different entomological parameters (deterrence, exit, blood feeding inhibition, and mortality rates) were derived from basic measurements.\n", + "\n", + "The primary outcomes were:\n", + "\n", + "1. Deterrence--the reduction in entry in to treatment hut relative to the control hut (ie, huts holding untreated nets);\n", + "2. Mortality--the proportion of mosquitoes killed relative to the total catch size;\n", + "3. Killing effect--the numbers killed by a treatment relative to the untreated control, as derived from the formula; \\[\\text{Killing effect}\\left( \\% \\right) = \\left( \\frac{Kt-Ku}{Tu} \\right) \\ast 100\\]\n", + "\n", + "Where **Kt** is the number dead mosquitoes in the huts with treated nets, **Ku** is the number dead mosquitoes in the huts with untreated nets, and **Tu** is the total entering the huts with untreated nets.\n", + "\n", + "1. Blood Feeding Inhibition-The proportional reduction in blood feeding in huts with treated nets relative to controls with untreated nets.\n", + "\n", + "Figure 1: Experimental hut design of the study.\n", + "\n", + "\n", + "5. Personal Protection--The reduction in mosquito biting by treated nets relative to untreated nets, as derived from the formula \\[\\%\\text{personal protection} = (\\frac{Bu-Bt}{Bu})*100\\]\n", + "\n", + "Where Bu is the total number blood fed mosquitoes in the huts with untreated nets, and Bt is the total number blood fed in the huts with treated nets.\n", + "\n", + "header: Introduction\n", + "\n", + "Malaria is still one of highest health risks in developing countries with high morbidity and mortality in under 5 children. Assessment of overall economic impact of the disease shows that it accounts for 40% of health cost spending, 30% to 50% of inpatient charges, and up to 50% of outpatient official visits in areas with great malaria.1 According to the world health organization, there were 216 million new incidents of malaria leading to 445 000 death, of which 90% occurred in African countries.2\n", + "\n", + "Footnote 1: [https://developers.com/en/article/](https://developers.com/en/article/)\n", + "\n", + "Long-Lasting insecticidal Nets (LLINs) are uppermost community health apparatuses and, when used by children and pregnant women, subsidize to improving motherly, neonatal, and infant health, with long-lasting reimbursements to the emerging child.3 These nets provide personal barrier from bite by mosquitoes in addition those nets lessen also the transmission of malaria and have excito-repellency effect.4 A total of 505 million insecticidal nets (ITNs) were distributed in developing countries between 2014 and 2016 with household ownership of at least 1 insecticidal net, improved from 50% in 2010 to 80% in 2016. Nevertheless, the ratio of houses with adequate bed nets (ie, 1 net for every 2 people) is very low (43%).2 Following the high demand of bed nets as key vector control intervention, companies are ramping up production and new brand nets are being introduced for public health utilization.\n", + "\n", + "Footnote 2: [https://developers.com/en/article/](https://developers.com/en/article/)\n", + "\n", + "In order for any new long-lasting insecticidal nets to be used in public health, it must gain WHOPES approval.5 The approval process passes through 3 stages of efficacy testing (laboratory, small-scale semi-field, and large-scale field trial). To be classified as a long-lasting insecticidal net, it must \n", + "maintain their effective biological activity for at least 20 World Health Organization recommended washes typical washes under laboratory conditions and 3 years of suggested use under semi-field and field condition.\n", + "\n", + "DuraNet\\({}^{*}\\) is an LLIN developed by the Shobikaa Impex pvt Ltd (Karur, Tamil Nadu 639006, and India). It contains 0.55% w/w \\(\\pm\\) 15% alpha-cypermethrin. The net is a polyethylene fiber coated with a proprietary polymer containing target dose of alpha-cypermethrin at 250 mg/m\\({}^{2}\\). The polymer binds to the fiber and can withstand multiple washings, the active ingredient diffusing in a controlled manner to the surface of the polymer coat to maintain insecticidal efficacy.\n", + "\n", + "Thus, this study was conducted to verify the intended efficacy of the product in the presence of pyrethroid resistance vector population of _An. gambiae_ s.l. using cone bioassay and semi-field experimental huts in southwestern Ethiopia. The cone bioassays were conducted in Tropical and Infectious diseases research institute, Jimma University. The experimental hut study trials were undertaken near the Gilgel-Gibe hydroelectric power dam-I.\n", + "\n", + "header: ORCID iD\n", + "\n", + "Brhane Gebremariam (c) [https://orcid.org/0000-0002-0824-3221](https://orcid.org/0000-0002-0824-3221)\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Ethiopia\",\"Site\":\"Southwestern Ethiopia\",\"Start_month\":9,\"Start_year\":2015,\"End_month\":1,\"End_year\":2016}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"0.55% W\\/W \\u00b1 15%\",\"Net_washed\":0.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N02\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"0.55% W\\/W \\u00b1 15%\",\"Net_washed\":20.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N03\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"pyrethroid\",\"Concentration_initial\":null,\"Net_washed\":0.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N04\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"pyrethroid\",\"Concentration_initial\":null,\"Net_washed\":20.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Background: Methods\n", + "\n", + "A laboratory and a semi-field conditions experimental huts against _Anopheles_ Mosquitoes were conducted in southwestern Ethiopia from September 2015 to January 2016. The bio efficacy of DuraNet(r) was evaluated using the WHO cone bioassay test and then its field efficacy was evaluated using experimental huts against the malaria vector population.\n", + "\n", + "header: Blood feeding inhibition and personal protection.\n", + "\n", + "Unwashed DuraNet* showed strong and better bio-efficacy in terms of blood feeding inhibition when compared to untreated DuraNet* and the rest of the treatment arms. The mean blood feeding rate of mosquitoes collected from a hut with unwashed DuraNet*, Unwashed PernaNet 2.0, twenty times washed DuraNet*, 20 times washed PernaNet 2.0 and Untreated DuraNet*, was 0.8/person-night, 4.1/person-night, 5.7/person-night, 6.0/person-night, and 7.0/person-night respectively. There was significant reduction (_P_ <.001) in blood feeding inhibition in all the treatment arms (hut with unwashed DuraNet*, but with 20 times washed DuraNet*, but with\n", + "\n", + "Figure 2: Mean percent knockdown and mortality of _An. arabiensis_ exposed in 3 minutes cone bioassay to DuraNet®, dimma, and southwestern Ethiopia.\n", + "\n", + "\n", + "unwashed PermaNet 2.0, hut with 20 times washed permanent 2.0) when compared to hut with untreated DuraNet*(control). Blood feeding inhibition can be also expressed as personal protection and unwashed DuraNet* showed the highest personal protection 88.7%, 100%, and 93.3% against _An. arabiensis, An. pbaroensis_, and _An. coustani_, respectively. Both PermaNet 2.0 twenty times washed and DuraNet* washed twenty times showed low to moderate personal protection (45.6% against _An. arabiensis_ to 83% against _An. pbaroensis_) when compared to untreated DuraNet* (Table 2).\n", + "\n", + "header: Limitation\n", + "\n", + "In this study, supplementary test like chemical assays were not conducted to measure the total insecticide content of the netting before and after wash resistance studies that support better interpretation of the results.\n", + "\n", + "header: CONCLUSION\n", + "\n", + "Both DuraNet(r) and PermanNet 2.0 moderate efficacy against a pyrethroid-resistant population of _An. araabensis_ from Ethiopia. The bio efficacy of DuraNet(r) was found below the WHO recommendation. Therefore, the real impact of the observed insecticide resistance against DuraNet(r) to be further studied under phase-III trials, the need for new alternative vector control tools remains critical.\n", + "\n", + "header: Mosquito mortality, blood feeding and exit rates.\n", + "\n", + "Mosquito blood feeding rates, mortality rates and exit rates of the 5 treatments are presented in Table 1. The mean blood feeding rate was significantly lower (_P_ <.001) in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. However, there was no significance difference (_P_ >.05) in blood feeding rate among huts containing untreated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet*2.0. The mean mortality rate was significantly higher (_P_ <.001) among huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*. Higher mean number of mosquitoes were caught while exiting the huts containing treated DuraNet*, 20 times washed DuraNet*, unwashed PernaNet* 2.0 and 20 times washed PernaNet* 2.0 when compared to hut containing untreated DuraNet*, however, there was no significant difference (_P_ >.05) among the treatments.\n", + "\n", + "header: The killing effect DuraNet*\n", + "\n", + "DuraNet* (both unwashed and 20 times washed) showed low to moderate killing efficacy (65.93% to 54.03%) against vector population of _An. arabiensis_. Whereas, against _An. pbaroensis_, both unwashed and washed DuraNet* showed no evidence of killing effect (0.00 to 9.0%). Similarly, PermaNet 2.0 (unwashed and washed) showed low to moderate killing effect against population of _An. arabiensis_ (Table 3).\n", + "\n", + "header: Results\n", + "\n", + "World Health Organization cone bioassay tests against pyrethroid-resistant _An. araabensis_ led to mean percent mortality and knockdown of 78% and 93%, respectively. Washing of DuraNet(r) successively reduced its efficacy from 93% knockdown (0 wash) to 45% knockdown (20 washes). Similarly, mean mortality decreased from 84% (wash) to 47% (20 washes). A total of 1575 female mosquitoes were collected over 40 nights out of which 13738(87.8%) were _An. amabise._ Is Title (74%) were _An. amabensis_. The mean blood-feeding rate was significantly lower (_P_<.001) in hut containing unwashed DuraNet(r) when compared to hut containing untreated DuraNet(r). The mean mortality rate was significantly higher (_P_<.001) in hut containing DuraNet(r) when compared to hut containing untreated DuraNet(r). Unwashed DuraNet(r) showed the highest personal protection 88.7% and 100% against _An. araabensis_ and _An. araabensis_, respectively.\n", + "\n", + "header: Results\n", + "\n", + "Exposure of wild population of _An. arabiensis_ mosquitoes to net sections of DuraNet* LLIN in WHO bioassay tests gives mean mortality rate of 78% as well as mean knockdown effect of 93%. Mean percent knockdown and percent mortality of DuraNet* LLIN showed significant relationship (\\(R^{2}\\) = 0.797, n = 260, \\(P\\) <.001). The wash resistance activity of DuraNet* LLINs, measured in terms of percent knockdown and mortality is presented in Figure 2. The mean percent knockdown of wild population of _An. arabiensis_ decreased from 93% to 45% up on exposure to the DuraNet* washed 0 and 20 times respectively. The mean percent mortality decreased from 84% to 47% on exposure to the DuraNet* washed 0 and 20 times, respectively. Wash resistance has negative correlation with percent knockdown and percent mortality which means as number of wash increase, percent knockdown and percent mortality declined (\\(r^{2}\\) = 0.333, 96KD = 89.16 \\(\\pm\\) 2.15, \\(P\\) <.001 and \\(r^{2}\\) = 0.236, 90Mt = 81.94 \\(\\pm\\) 1.68, \\(P\\) <.001), respectively.\n", + "\n", + "header: Table 1: Mean blood feeding, mortality and exit rates of populations of An. arabiensis exposed to different bed net types in field experimental huts in southwestern Ethiopia.\n", + "footer: Means within the same column and with different letters are signi\u001fcantly different using Tukey means separation test.**Significant at P<.001. *Significant at P<.05.\n", + "\n", + "\n", + "columns: ['TREATMENTS', 'BLOOD-FEEDING RATE MEAN ± SE', 'MORTALITY RATE MEAN ± SE', 'EXIT RATE MEAN ± SE']\n", + "\n", + "{\"0\":{\"TREATMENTS\":\"Untreated DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"77.70 \\u00b1 7.30\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"6.61 \\u00b1 3.80**\",\"EXIT RATE MEAN \\u00b1 SE\":\"26.77 \\u00b1 5.51\"},\"1\":{\"TREATMENTS\":\"Unwashed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"5.80 \\u00b1 2.32**\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"52.38 \\u00b1 5.62\",\"EXIT RATE MEAN \\u00b1 SE\":\"40.42 \\u00b1 5.22\"},\"2\":{\"TREATMENTS\":\"20\\u00d7 washed DuraNet\\u00ae\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"55.94 \\u00b1 6.78\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"28.17 \\u00b1 6.57*\",\"EXIT RATE MEAN \\u00b1 SE\":\"36.24 \\u00b1 5.50\"},\"3\":{\"TREATMENTS\":\"Unwashed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.39 \\u00b1 5.89\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"61.74 \\u00b1 6.09\",\"EXIT RATE MEAN \\u00b1 SE\":\"48.16 \\u00b1 5.53\"},\"4\":{\"TREATMENTS\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"BLOOD-FEEDING RATE MEAN \\u00b1 SE\":\"53.35 \\u00b1 7.01\",\"MORTALITY RATE MEAN \\u00b1 SE\":\"39.87 \\u00b1 6.34\",\"EXIT RATE MEAN \\u00b1 SE\":\"35.32 \\u00b1 5.78\"}}\n", + "\n", + "header: Discussion\n", + "\n", + "Insecticide resistance remains major threat against the efficacy of long-lasting insecticidal nets, which are key intervention tools in controlling malaria vector. In this study laboratory bioassay was initially conducted using field collected larvae raised to adult population of _An. arabiensis_ to assess the bio-efficacy of unwashed DuraNet* (candidate bed net) and untreated DuraNet* (negative control). Furthermore, field experimental study was conducted on bio-efficacy of unwashed DuraNet* and PermaNet 2.0 following WHOPES standard guidelines in order to corroborate the laboratory findings.5\n", + "\n", + "The cone bioassay tests indicated that exposure of population of _An. arabiensis_ mosquitoes from Gilgel-Gibe area, southwestern Ethiopia, to sections of DuraNet* LLIN resulted in mean knockdown and mean mortality of 93% and 78%, respectively. The mortality result is slightly lower than the range of WHO recommendation (>80%) for public health application. The knockdown effect also is slightly below the required WHOPES recommended levels of 95% and above. In contrast to the above results earlier bio efficacy tests conducted using unwashed DuraNet* in India (Sood et al10; Gunasekaran et al11) showed 100% efficacy when tested against populations of different species of _amopheles_. The slight decline in bio-efficacy of DuraNet* in this study may be due to resistance development of vector populations of _An. arabiensis_ in the study area.8,12 In Ethiopia, Previous studies indicate that populations of _An. Arabiensis_ have developed resistance against insecticides used for net impregnation.13-17\n", + "\n", + "Wash resistant long-lasting insecticidal nets treated with pyrethroids are viewed as an important device in the area of vector control that would lessen the difficulties related to retreating conventional insecticide treated nets.[18] DuraNet*, the alpha-cypermethrin treated net, has similar conditions as that of Interceptor* LLIN and PermaNet* 3.0, which had been given interim but full recommendation since June 2017 by WHOPES.[19]\n", + "\n", + "In current study, DuraNet* showed reduced washing resistance. This is reflected in continues decrease of both mean percent knockdown and mean percent mortality of population of _An. arabiensis_ on exposure to the DuraNet* washed 0 and 20 times, respectively. This is in contrast to the study done by Sood et al[10] which showed no significant difference in percent mortality and percent knockdown of population of _An. caliticiacis_ between unwashed and 20 times washed DuraNet* in India. However, in the same study by Sood et al,[10] DuraNet* showed 100% knockdown but only 45% mortality after 20 washes against _Anopheles gambiae_ which is also consistent with current results. Wash resistance technology is added to the LLIN's materials with the assumption of pyrethroid chemicals such as Alphacypermethrin should have a strong affinity to the polyester netting fibers so that even after forceful washing a thin layer of pyrethroid, practically undetectable by High Performance Liquid Chromatography yet adequately bio active to encourage knockdown and mortality should still continue bound to the fibers.\n", + "\n", + "Comparison of mosquito density collected from experimental huts with (unwashed DuraNet*, 20 times washed DuraNet*, unwashed PermaNet*2.0, 20 times washed PermaNet*2.0, and untreated DuraNet*) showed no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the unwashed DuraNet* compared to untreated DuraNet*. Likewise, a study carried out by Asale et al[8] using experimental huts in the study area showed the absence of significance variation in deterrence among huts containing unwashed PermaNet*2.0, untreated net and DDT sprayed hut. The possible explanation for the absence of significant variation in mosquito density among treatment arms could be accounted to low number of mosquito catches during the study period but the impact of insecticide resistance on the efficacy of the nets to be further studied in phase-III trials.\n", + "\n", + "In this study significant reduction in blood feeding rate was observed in hut containing unwashed DuraNet* when compared to hut containing untreated DuraNet*. Similarly, higher mean mosquito mortality rate was recorded among huts containing treatment arms when compared to hut containing control net (untreated DuraNet*). The results for DuraNet* are new report from Jimma area thus we could not corroborate but, Vector population of _An. arabiensis_ from the study area showed no significant reduction of mortality rate, exit pattern and blood feeding inhibition when tested against PermaNet 2.0.[8]\n", + "\n", + "In this study, DuraNet* and PermaNet 2.0 showed low to moderate killing efficacy against vector population of _An. arabiensis_. Moreover, both DuraNet* and PermaNet 2.0 showed no evidence of killing effect against _An. pbarensis_. According to Kitau et al[20] LLINs and ITNs treated with pyrethroids were more effective at killing _An. gambiae_ and _An. fintetus_ than _An. arabiensis_. Thus, the variations in the outcome variables of Anopheles shown above (DuraNet* and PermaNet 2.0) may be due to different susceptibility status and species differences.\n", + "\n", + "header: Study area and period: Mosquito rearing and cone bioassay testing.\n", + "\n", + "Anopheles mosquito larvae were collected from field sites near Gilgel-Gibe hydroelectric power production reservoir and reared to adults under standard conditions (25 \\(\\pm\\) 20*C temperature,80 \\(\\pm\\) 4% relative humidity) in tropical and infectious diseases research institute, Sekoru campus, Jimma University, Ethiopia. For WHO cone bioassay test, five 2-5 days age unfed female _An. gambiae s.l._ (presumably _An. ankiensis_ according to Yewhalaw et al., (2009))\\(\\%\\) mosquitoes were used per cone. Twenty mosquitoes (5 mosquito\\({}^{\\text{\\textregistered}}\\) per-cone \\(\\times\\) 4 cone-per sub-sample net piece) were introduced into the cone facing net sample for 3 minutes and then moved to holding paper cups. Then mosquitoes were supplied with a 10% sucrose solution. The number of mosquitoes knocked down and the number of dead mosquitoes were recorded every 10 minute within 60 minutes and 24 hours, respectively. Mosquitoes exposed to untreated DuraNet\\({}^{*}\\) pieces were used as controls and experiment conditions were set to be 27 \\(\\pm\\) 2*C temperature and 75 \\(\\pm\\) 10% relative humidity (RH) throughout the study. Thus, a total of 1260 mosquitoes (63 net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used for complete bioassay testing and another 180 mosquitoes (9 untreated net sub-samples \\(\\times\\) 20 mosquitoes per sub-sample net) were used as control.\n", + "\n", + "For net pieces washing each net sub-samples (25 cm \\(\\times\\) 25 cm) were introduced individually into 1-1 beakers containing 0.5 l deionized water, with 2 g/l WHO recommended soap (Savon de Marseille; pH 10-11) added and fully dissolved just before washing. The beakers were then introduced into a water-bath at 30*C and shaken for 10 min at 155 movements per minute. The samples were then removed, rinsed twice for 10 min in clean, deionized water under the same shaking conditions as above, dried at room temperature and stored at 30*C in the dark between washes.\n", + "\n", + "header: Table 2. Blood-feeding inhibition and personal protection due to DuraNet® LLIN in the experimental huts, southwestern Ethiopia.\n", + "footer: *Significant at P<.05. **Significant at P<.01.\n", + "columns: ['TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2', 'PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)', 'PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)']\n", + "\n", + "{\"0\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Untreated DuraNet\\u00ae (NC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"232 (0**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"43 (0**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"30 (0*)\"},\"1\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"24 (88.7**)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"00 (100**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"2 (93.3*)\"},\"2\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed DuraNet\\u00ae\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"176 (42.4)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"27 (62.8)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"5 (83.3*)\"},\"3\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"131 (45.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"11 (83**)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"16 (46.6)\"},\"4\":{\"TREATMENT - Unnamed: 0_level_1 - Unnamed: 0_level_2\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"PERSONAL PROTECTION - AN. ARABIENSIS (WILD) - N (%)\":\"192 (38.6)\",\"PERSONAL PROTECTION - AN. PHAROENSIS (WILD) - N (%)\":\"6 (75)\",\"PERSONAL PROTECTION - AN. COUSTANI (WILD) - N (%)\":\"33 (0*)\"}}\n", + "\n", + "header: Cone bioassay and washing resistance: Experimental but trial\n", + "\n", + "_Mosquito entry into the bus._ A total of 1575 Anopheles mosquitoes were entered and collected in the 40 nights during the trial. These consisted of 1373 (87.8%) _An. gambiae_ s.l. presumably _An. arabiensis_ (Yewhalaw et al., 2009), 116 (7.4%) _Angelo custani_ (Laveran), and 107 (6.8%) _An. phareensis_ (Theobald). The mean number of mosquitoes caught per night was 8.75 for _An. arabiensis_, 5.52 for _An. Coastani_, and 6.33 for _An. pharensis._ The mean mosquito entry is not significantly different among the treatment arms (F = 1.277, \\(P\\) >.05). There was no clear evidence of deterrence associated with any of the treatments however; there were fewer _An. Arabiensis_ in huts with the Unwashed DuraNet* compared to treated DuraNet* and PernaNet* 2.0 (Table 2).\n", + "\n", + "header: Experimental but establishment.: Treatment arms and sleepers rotation\n", + "\n", + "In this experiment, 5 different treatment arms were used. These include (1) Untreated unwashed DuraNet(Negative control) (2) Unwashed treated DuraNet(3) treated DuraNet(20 times washed (4) PermaNet(4) 2.0 20 times washed, and (5) unwashed PermaNet(4) 2.0 (positive control). All nets were 75 denier polyethylene and polyester nets respectively. To simulate wear and tear condition of nets under usage 6 (4 cm \\(\\times\\) 4 cm size) holes were cut in each net (2 holes on each of the sides and 1 hole at each end). The DuraNet(4) LLIN and PermaNet(4) 2.0 were washed according to World Health Organization Stage II washing procedure [5]. For washing, the nets were put in to aluminum bowl with 10 l of tap water and 2g/l of savon de Marseille soap. The nets were agitated for 3 minutes, then soaked for 4 minutes, and agitated again for 3 minutes. The nets were agitated manually by stirring them with a pole at 20 rotations per minute. Thus, each net was washed for a total of 10 minute and then rinsed with clean water by a similar procedure, dried horizontally in the shade and stored at ambient temperature between washes. WHO recognized PermaNet(4) 2.0 LLIN washed 20 times, was used as a positive control to assess DuraNet(4) LLIN performance.\n", + "\n", + "In each data collection night, 2 non-smoker male volunteers aged 20 to 25 were allowed to sleep in each experimental hut with its door remain closed between 19:00 and 07:00 hours. Each team was rotated between treatments on successive nights within a week to avoid possible bias which could arise due to individual attractiveness to mosquitoes. There were 5 successive collection nights (Monday to Friday) and 2 successive break nights for hut ventilation per week. Thus, there were 25 collection nights in order to complete the whole study. Informed written consent was obtained from each sleeper.\n", + "\n", + "header: ORCID iD\n", + "\n", + "Brhane Gebremariam (c) [https://orcid.org/0000-0002-0824-3221](https://orcid.org/0000-0002-0824-3221)\n", + "\n", + "header: Table 3. The overall killing effect of DuraNet® LLIN in experimental hut.\n", + "footer: None\n", + "columns: ['TREATMENT', 'OVERALL KILLING EFFECT (%) - AN. ARABIENSIS', 'OVERALL KILLING EFFECT (%) - AN. PHAROENSIS', 'OVERALL KILLING EFFECT (%) - AN. COUSTANI']\n", + "\n", + "{\"0\":{\"TREATMENT\":\"Unwashed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":65.93,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"0.0*\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":12.33},\"1\":{\"TREATMENT\":\"20\\u00d7washed DuraNet\\u00ae\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":54.03,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":13.4},\"2\":{\"TREATMENT\":\"Unwashed PermaNet\\u00ae 2.0 (PC)\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":64.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"2.25\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":39.7},\"3\":{\"TREATMENT\":\"20\\u00d7 washed PermaNet\\u00ae 2.0\",\"OVERALL KILLING EFFECT (%) - AN. ARABIENSIS\":39.81,\"OVERALL KILLING EFFECT (%) - AN. PHAROENSIS\":\"9.0\",\"OVERALL KILLING EFFECT (%) - AN. COUSTANI\":20.0}}\n", + "\n", + "header: Methods\n", + "\n", + "This study was conducted from September 2015 to January 2016 near the Gilgel-Gibe hydroelectric dam area, southwestern Ethiopia. The hydroelectric dam is one of the major hydroelectric dams in Ethiopia with artificial reservoir occupying an estimated area of 62 kmsq,6 It produces around 184 MWh and is located 260 km southwest of the capital Addis Ababa. It has been functional since 2004. The study area is located between latitudes 7*42*50*7N and 07*53*50*7N and longitudes 37*11*22*7E and 37*20*36*E with an altitude ranging from 1672-1864 m above sea level. The area has a sub-humid, warm to hot climate, obtains between 1300 and 1800 mm of rainfall annually and has a mean annual temperature of 19*C. Mostly, the 2 peak seasonal transmissions of malaria occur during the months of September to December and March to May in the study area.\n", + "\n", + "Bio-efficacy testing of LLIN (DuraNet\\({}^{\\text{\\text{\\textregistered}}}\\)) under laboratory setting\n", + "\n", + "\\(LLIN\\)_sample preparation and washing process._ DuraNet\\({}^{*}\\) LLINs (Karur, Tamil Nadu 639006, and India) is treated with alpha-cypermethrin at a target dose of 250 mg/m\\({}^{2}\\) of netting material. It contains 0.55% W/W \\(\\pm\\) 15% alpha-cypermethrin. The alpha-cypermethrin chemical is coated onto filaments at bursting strength of 450 kPa of netting material and of 145 \\(\\pm\\) 5% for seam sub-section per denier yarn. Prior to testing the production date and batch number of all nets were recorded. Seven sub-samples per net (1 from the roof, the rest from side of the net) were taken from each net and prepared for standard LLINs cone tests by cutting 25 cm \\(\\times\\) 25 cm pieces following WHO protocol.7 In this study, 9 candidate nets were used for bio-efficacy testing. Thus, a total of 63 sub-sample net pieces (7 sub-sample pieces from each net \\(\\times\\) 9 DuraNet\\({}^{*}\\)s) individually rolled up in aluminum foil, labeled (by net type, net number and sample area) and kept in a refrigerator prior to the assay. Concurrently 9 (1 sub-sample piece from each untreated DuraNet\\({}^{*}\\)\\(\\times\\) 9 untreated DuraNet\\({}^{*}\\)s) sub-samples (30 cm \\(\\times\\) 30 cm) were individually rolled up in aluminum foil, labeled and kept in a refrigerator prior to the assay.\n", + "\n", + "header: Abstract\n", + "\n", + "Evaluation of Long-Lasting Insecticidal Nets (DuraNet(r)) Under laboratory and Semi-Field Conditions Using Experimental Huts Against _Anopheles Mosquitoes_ in\n", + "\n", + "Jimma Zone\n", + "\n", + " Southwestern Ethiopia\n", + "\n", + "B. Gebremariam(r), W. Birke, W. Zeine, A. Ambelu\n", + "\n", + "\n", + "\n", + "Long-Lasting insecticidal Nets (LLINs) efficacy could be compromised due to a lot of influences together with user compliance and vector population insecticide resistance status. Thus, this study was to assess the biological efficacy of DuraNet(r) with the help of the World Health Organization cone bioassay and field experimental hut.\n", + "\n", + "header: Introduction\n", + "\n", + "Malaria is still one of highest health risks in developing countries with high morbidity and mortality in under 5 children. Assessment of overall economic impact of the disease shows that it accounts for 40% of health cost spending, 30% to 50% of inpatient charges, and up to 50% of outpatient official visits in areas with great malaria.1 According to the world health organization, there were 216 million new incidents of malaria leading to 445 000 death, of which 90% occurred in African countries.2\n", + "\n", + "Footnote 1: [https://developers.com/en/article/](https://developers.com/en/article/)\n", + "\n", + "Long-Lasting insecticidal Nets (LLINs) are uppermost community health apparatuses and, when used by children and pregnant women, subsidize to improving motherly, neonatal, and infant health, with long-lasting reimbursements to the emerging child.3 These nets provide personal barrier from bite by mosquitoes in addition those nets lessen also the transmission of malaria and have excito-repellency effect.4 A total of 505 million insecticidal nets (ITNs) were distributed in developing countries between 2014 and 2016 with household ownership of at least 1 insecticidal net, improved from 50% in 2010 to 80% in 2016. Nevertheless, the ratio of houses with adequate bed nets (ie, 1 net for every 2 people) is very low (43%).2 Following the high demand of bed nets as key vector control intervention, companies are ramping up production and new brand nets are being introduced for public health utilization.\n", + "\n", + "Footnote 2: [https://developers.com/en/article/](https://developers.com/en/article/)\n", + "\n", + "In order for any new long-lasting insecticidal nets to be used in public health, it must gain WHOPES approval.5 The approval process passes through 3 stages of efficacy testing (laboratory, small-scale semi-field, and large-scale field trial). To be classified as a long-lasting insecticidal net, it must \n", + "maintain their effective biological activity for at least 20 World Health Organization recommended washes typical washes under laboratory conditions and 3 years of suggested use under semi-field and field condition.\n", + "\n", + "DuraNet\\({}^{*}\\) is an LLIN developed by the Shobikaa Impex pvt Ltd (Karur, Tamil Nadu 639006, and India). It contains 0.55% w/w \\(\\pm\\) 15% alpha-cypermethrin. The net is a polyethylene fiber coated with a proprietary polymer containing target dose of alpha-cypermethrin at 250 mg/m\\({}^{2}\\). The polymer binds to the fiber and can withstand multiple washings, the active ingredient diffusing in a controlled manner to the surface of the polymer coat to maintain insecticidal efficacy.\n", + "\n", + "Thus, this study was conducted to verify the intended efficacy of the product in the presence of pyrethroid resistance vector population of _An. gambiae_ s.l. using cone bioassay and semi-field experimental huts in southwestern Ethiopia. The cone bioassays were conducted in Tropical and Infectious diseases research institute, Jimma University. The experimental hut study trials were undertaken near the Gilgel-Gibe hydroelectric power dam-I.\n", + "\n", + "header: Mosquito collection, identification and key parameters measured in determination of LLINs efficacy\n", + "\n", + "Mosquitoes were collected from 6:00 to 7:00 each morning inside bed nets, floors, walls, ceilings, and verandas of each experimental hut by the help of mouth aspirators and torches. Then the collected mosquitoes were recorded as dead or alive. Live mosquitoes were held in paper cups and supplied with 10% sucrose solution. The collected mosquitoes were transported to Asendabo Vector Biology Laboratory, Jimma University, where mosquitoes were sorted by genus, sex and morphologically identified using taxonomic keys [9]. Mosquitoes were also scored for their physiological state as unfed, fed, half gravid and gravid. Delayed mortality was recorded after 24 hours. To evaluate the efficacy of DuraNet LLIN against the resistant populations of _An. arabiensis_, different entomological parameters (deterrence, exit, blood feeding inhibition, and mortality rates) were derived from basic measurements.\n", + "\n", + "The primary outcomes were:\n", + "\n", + "1. Deterrence--the reduction in entry in to treatment hut relative to the control hut (ie, huts holding untreated nets);\n", + "2. Mortality--the proportion of mosquitoes killed relative to the total catch size;\n", + "3. Killing effect--the numbers killed by a treatment relative to the untreated control, as derived from the formula; \\[\\text{Killing effect}\\left( \\% \\right) = \\left( \\frac{Kt-Ku}{Tu} \\right) \\ast 100\\]\n", + "\n", + "Where **Kt** is the number dead mosquitoes in the huts with treated nets, **Ku** is the number dead mosquitoes in the huts with untreated nets, and **Tu** is the total entering the huts with untreated nets.\n", + "\n", + "1. Blood Feeding Inhibition-The proportional reduction in blood feeding in huts with treated nets relative to controls with untreated nets.\n", + "\n", + "Figure 1: Experimental hut design of the study.\n", + "\n", + "\n", + "5. Personal Protection--The reduction in mosquito biting by treated nets relative to untreated nets, as derived from the formula \\[\\%\\text{personal protection} = (\\frac{Bu-Bt}{Bu})*100\\]\n", + "\n", + "Where Bu is the total number blood fed mosquitoes in the huts with untreated nets, and Bt is the total number blood fed in the huts with treated nets.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Ethiopia\",\"Site\":\"Southwestern Ethiopia\",\"Start_month\":9,\"Start_year\":2015,\"End_month\":1,\"End_year\":2016}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"0.55% W\\/W \\u00b1 15%\",\"Net_washed\":0.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N02\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"0.55% W\\/W \\u00b1 15%\",\"Net_washed\":20.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N03\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"pyrethroid\",\"Concentration_initial\":null,\"Net_washed\":0.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"},\"N04\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"pyrethroid\",\"Concentration_initial\":null,\"Net_washed\":20.0,\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"NA\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Results\n", + "\n", + "Among the 1784 participating homesteads with a population of 10 325, a total of 1551 households participated in the study (Table 1). Most of the heads of the households (age: 17-96 years) had received formal education and practiced farming (96.6%).\n", + "\n", + "Out of 100 heads of households with Olyset(r) Plus interviewed for adverse events, 44% reported itching, 4% eye irritation, and 7% unpleasant smell. Among the Olyset(r) Net users, 7% each reported nasal discharge and eye irritation. These were reported to be mild symptoms lasting for one or two days. To reduce these effects, 43% users of Olyset(r) Plus ventilated nets for a day in the open under the sun and 33% under the shade. Among Olyset(r) Net users, similar actions were taken by 44% and 39%, respectively.\n", + "\n", + "header: Table 7 Comparison of the estimates of the mean pHI and the mean hole area for O lyset® Plus and Olyset® Net\n", + "footer: pHI proportionate Hole Index\n", + "columns: ['Survey month', 'Olyset® Plus - No. of nets inspected', 'Olyset® Plus - Mean hole area in cm2 (± SD)', 'Olyset® Plus - Mean pHI (± SD)', 'Olyset® Net - No. of nets inspected', 'Olyset® Net - Mean hole area in cm2 (± SD)', 'Olyset® Net - Mean pHI (± SD)']\n", + "\n", + "{\"0\":{\"Survey month\":6,\"Olyset\\u00ae Plus - No. of nets inspected\":250,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"52.3 \\u00b1 230.5\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"93.3 \\u00b1 313.6\",\"Olyset\\u00ae Net - No. of nets inspected\":250,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"123.3 \\u00b1 272.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"110.5 \\u00b1 221.8\"},\"1\":{\"Survey month\":12,\"Olyset\\u00ae Plus - No. of nets inspected\":243,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"229.2 \\u00b1 574.2\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"153.6 \\u00b1 437.0\",\"Olyset\\u00ae Net - No. of nets inspected\":249,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"192.5 \\u00b1 376.2\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"156.8 \\u00b1 306.5\"},\"2\":{\"Survey month\":24,\"Olyset\\u00ae Plus - No. of nets inspected\":231,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"389.8 \\u00b1 975.4\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"317.6 \\u00b1 794.7\",\"Olyset\\u00ae Net - No. of nets inspected\":226,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"873.9 \\u00b1 353.4\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"279.4 \\u00b1 428.1\"},\"3\":{\"Survey month\":36,\"Olyset\\u00ae Plus - No. of nets inspected\":228,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"630.7 \\u00b1 1191.8\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"513.9 \\u00b1 970.9\",\"Olyset\\u00ae Net - No. of nets inspected\":216,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"621.5 \\u00b1 1710.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"506.4 \\u00b1 1393.2\"}}\n", + "\n", + "header: Table 5 Mean permethrin and PBO contents (relative standard deviation) in nets at baseline, and at 12, 24 and 36 months\n", + "footer: a Within net variation (relative standard deviation) in permethrin and PBO contents at baseline was 2.2% and 3.7%, respectively (Olyset® Plus). – not applicable, PBOpiperonyl butoxideb Within net variation (relative standard deviation) in permethrin content at baseline was 1.2% (Olyset® Net)\n", + "columns: ['Sampling month', 'Olyset® Plus - Mean permethrin content in g/kg (95% CI)', 'Olyset® Plus - Permethrin content lost (%)', 'Olyset® Plus - PBO content in g/ kg (95% CI)', 'Olyset® Plus - PBO content lost (%)', 'Olyset® Net - Mean permethrin content in g/kg (95% CI)', 'Olyset® Net - Permethrin content lost (%)']\n", + "\n", + "{\"0\":{\"Sampling month\":0,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"18.4 (18.3\\u201318.6)a\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"8.98 (8.86\\u20139.10)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"19.6 (19.5\\u201319.7)b\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"\\u2013\"},\"1\":{\"Sampling month\":12,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.7 (10.6\\u201312.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"36\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"3.01 (2.30\\u20133.80)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"66\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"16.5 (16.0\\u201317.0)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"16\"},\"2\":{\"Sampling month\":24,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.1 (10.2\\u201312.0)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"40\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.70 (1.20\\u20132.20)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"81\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"15.9 (15.1\\u201316.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"19\"},\"3\":{\"Sampling month\":36,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"8.8 (7.9\\u20139.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"52\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.16 (0.8\\u20131.5)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"87\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"14.8 (13.9\\u201315.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"24\"}}\n", + "\n", + "header: Net sampling scheme\n", + "\n", + "The scheme of sampling nets at different time points for bioassays and chemical assays is given in Table 2. The netting pieces were cut from the sampled nets from positions 1-9 for bioassays, and positions HP1-HP5 (at time 0) or positions HP2-HP5 (at time 12, 24 and 36 months) for chemical content assays (Fig. 1). All the nets which were sampled and retrieved at the given survey points were replaced with new ones.\n", + "\n", + "header: Chemical contents\n", + "\n", + "At time 0 (baseline), the contents of permethrin and PBO in Olyset(r) Plus were within the target tolerance limits of 20 +- 5 g/kg and 10 +- 2.5 g/kg, respectively; while the permethrin content in Olyset(r) Net was also within the target tolerance limit of 20 +- 3 g/kg (Table 5). The within net variation (relative standard deviation, RSD) in permethrin and PBO contents for Olyset(r) Plus at baseline were 2.2% and 3.7%, respectively, and were within the acceptable tolerance limits. The within net variation in the permethrin content in Olyset(r) Net at the baseline was 1.2% and was also within the acceptable tolerance limit. At the end of years 1, 2 and 3 of net usage, the permethrin content in Olyset(r) Plus decreased by 36%, 40% and 52%, and the PBO content showed a marked reduction of 66%, 81% and 87%, respectively. The loss of the permethrin in Olyset(r) Net\n", + "\n", + "\\begin{table}\n", + "\\begin{tabular}{c c c c c c c c} \\hline\n", + "**Survey month** & **No. of** & **Mean 1 h** & **Mean 24 h** & **\\% of nets passed by** & **\\% of nets passed by** & **No. of nets passed by** & **Overall pass rate in** \\\\\n", + "**nets** & **KD (\\%)** & **mortality** & **KD criteria alone(r)** & **mortality criteria** & **requiring tunnel** & **percentage (95\\% CI)(r)** \\\\\n", + "**Olyset(r) Plus** & & & & & & & \\\\\n", + "0 & 30 & 99.5 & 100 & 100 & 100 & 0 & 100 (80–100) \\\\\n", + "6 & 30 & 97.0 & 88.2 & 83.3 & 73.3 & 4 & 96.7 (82–99) \\\\\n", + "12 & 30 & 9\n", + "\n", + "4.2 & 74.3 & 76.7 & 43.3 & 6 & 93.3 (78–99) \\\\\n", + "18 & 30 & 82.9 & 65.9 & 36.7 & 36.7 & 16 & 86.7 (69–96) \\\\\n", + "24 & 30 & 77.4 & 75.3 & 0.0 & 46.7 & 15 & 76.7 (57–90) \\\\\n", + "30 & 30 & 60.4 & 56.9 & 0.0 & 10.0 & 27 & 70.0 (50–85) \\\\\n", + "**Olyset(r) Net** & & & & & & & \\\\\n", + "0 & 30 & 99.1 & 100 & 100 & 100 & 0 & 100 (88–100) \\\\\n", + "6 & 30 & 96.9 & 79.8 & 80.0 & 60.0 & 4 & 93.3 (77–99) \\\\\n", + "12 & 30 & 68.5 & 54.7 & 20.0 & 3.3 & 24 & 83.3 (65–94) \\\\\n", + "18 & 30 & 72.1 & 50.2 & 30.0 & 20.0 & 18 & 73.3 (54–87) \\\\\n", + "24 & 30 & 79.8 & 68.9 & 3.3 & 46.7 & 18 & 66.7 (47–83) \\\\\n", + "30 & 30 & 50.9 & 50.9 & 0.0 & 3.3 & 29 & 60.0\n", + "\n", + "\n", + "was 16% at year 1 and did not change much at year 2 and 3 (19 and 24%, respectively).\n", + "\n", + "header: Abstract\n", + "\n", + "Bioefficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide-treated insecticidal net in a 3-year long trial in Kenya\n", + "\n", + "Paul M. Gichuki, Anna Kamau, Kiambo Niagi, Solomon Karoki, Njoroge Muigai, Damaris Matoke-Muhia, Nabie Bayoh, Evan Mathenge\n", + "\n", + "\n", + "**Background:** Long-lasting insecticide nets (LLINs) are a core malaria intervention. LLINs should retain efficacy against mosquito vectors for a minimum of three years. Efficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide (PBO) treated LLIN, was evaluated versus permethrin treated Olyset(r) Net. In the absence of WHO guidelines of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated as a pyrethroid LILN.\n", + "\n", + "**Methods:** This was a household randomized controlled trial in a malaria endemic rice cultivation zone of Kirinyaga County, Kenya between 2014 and 2017. Cone bioassays and tunnel tests were done against _Anopheles gambiae_ Kisumu. The chemical content, fabric integrity and LLIN survivorship were monitored. Comparisons between nets were tested for significance using the Chi-square test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. The WHO efficacy criteria used were >= 95% knockdown and/or >= 80% mortality rate in cone bioassays and >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests.\n", + "\n", + "**Results:** At 36 months, Olyset(r) Plus lost 52% permethrin and 87% PBO content; Olyset(r) Net lost 24% permethrin. Over 80% of Olyset(r) Plus and Olyset(r) Net passed the WHO efficacy criteria for LLINs up to 18 and 12 months, respectively. At month 36, 91.2% Olyset(r) Plus and 86.4% Olyset(r) Net survived, while 72% and 63% developed at least one hole. The proportionate Hole Index (pHI) values representing nets in good, serviceable and torn condition were 49.6%, 27.1% and 23.2%, respectively for Olyset(r) Plus, and 44.9%, 32.8% and 22.2%, respectively for Olyset(r) Net but were not significantly different.\n", + "\n", + "**Conclusions:** Olyset(r) Plus retained efficacy above or close to the WHO efficacy criteria for about 2 years than Olyset(r) Net (1-1.5 years). Both nets did not meet the 3-year WHO efficacy criteria, and showed little attrition, comparable physical durability and survivorship, with 50% of Olyset(r) Plus having good and serviceable condition after 3 years. Better community education on appropriate use and upkeep of LLINs is essential to ensure effectiveness of LLIN based malaria interventions.\n", + "\n", + "**Keywords:**_Anopheles gambiae, Bioefficacy, Durability, Kenya, Long-lasting insecticidal net, Olyset(r) Net, Olyset(r) Plus, Permeability, Piperonyl butoxide_\n", + "\n", + "header: Assessment of durability of cohort nets\n", + "\n", + "To monitor durability of nets (i.e. survivorship and changes in physical integrity) during their routine use, 250 each of Olyset(r) Plus and Olyset(r) Net were distributed in separate households (2 nets per household) in the same villages by simple randomization. From these cohorts of nets, all nets available at the households at the time of surveys at 6, 12, 24 and 36 months were inspected for their presence and physical integrity. For this, the nets were retracted from the sleeping places, individually hung up on a rectangular frame held outside the house and inspected for presence of any holes on the side and roof panels. The holes were counted for each net, their diameter was measured, and they were classified in the following categories according to the WHO criteria for hole sizes [3, 11]:\n", + "\n", + "Size A1: 0.5-2 cm diameter, Size A2: 2-10 cm diameter, Size A3: 10-25 cm diameter, Size A4: 25 cm diameter.\n", + "\n", + "The parameters for assessing the integrity of nets included the proportions of Olyset(r) Plus and Olyset(r) Net with any size holes or tears, and the proportionate Hole Index (pHI) for each net, which was calculated as follows [11]:\n", + "\n", + "\\[\\text{pH} = \\left( {1.23 \\times \\text{ No.~of~size~A1~holes}} \\right) + \\left( {28.28 \\times \\text{ No.~of~size~A2~holes}} \\right) + \\left( {240.56 \\times \\text{ No.~of~size~A3~holes}} \\right) + \\left( {706.95 \\times \\text{ No.~of~size~A4~holes}} \\right)\\]\n", + "\n", + "Using the pHI values, Olyset(r) Plus and Olyset(r) Net were categorized as those in 'good condition' (pHI: 0-64), nets in 'acceptable' condition (pHI: 65-642), and torn nets that were likely to provide no protective efficacy (pHI > 642) [15]. The number of nets in 'good' and\n", + "\n", + "Fig. 1: A rectangular net and its individual panels showing positions for cutting netting pieces (positions 1–9 for bioassays; HP1–HPS for chemical assays)\n", + "'acceptable condition' together were taken to estimate the survival of nets over time.\n", + "\n", + "The sampled nets were also inspected for any repairs of holes or tears done by the households. After inspection, the nets were returned to the same sleeping place in the same household.\n", + "\n", + "header: Net survivorship and fabric integrity\n", + "\n", + "At the end of year 1, Olyset(r) Plus reported survivorship rates of 97.2% (_n_ = 243), with Olyset(r) Net recording 99.6% (_n_ = 249). At year 2, there were 92.4% (_n_ = 231) Olyset(r) Plus and 90.4% (_n_ = 226) of Olyset(r) Nets still surviving. At the end of the 3 years of study, the survivorship rates for Olyset(r) Plus and Olyset(r) Net were at 91.2% (_n_ = 228) and 86.4% (_n_ = 216), respectively.\n", + "\n", + "The pH values of the nets showed that 87.6% of Olyset(r) Plus were in good condition at 6 months, 7.6% were in acceptable/serviceable condition, and 4.8% were too torn (Table 6). These proportions increased gradually during the study and at 36 months, 49.6% were in good condition, 27.1% in acceptable/serviceable condition, and 23.2% were too torn. A similar trend of attrition was seen for Olyset(r) Net, with 44.9%, 32.8% and 22.2% nets being in good condition, acceptable condition or too torn at 36 months, respectively.\n", + "\n", + "Data on the comparison of estimates of the mean pH values and the mean hole area for Olyset(r) Plus and Olyset(r) Net are given in Table 7.\n", + "\n", + "The proportion of Olyset(r) Plus nets having been repaired by households increased from 6% (95% CI: 3.4-9.7) at month 6 to 17.9% (95% CI: 13.2-23.6) at months\n", + "\n", + "36, while that of Olyset(r) Net increased from 5% (95% CI: 2.8-8.7) to 12% (95% CI: 8.0-17.1) in the same period.\n", + "\n", + "\n", + "Olyset(r) Net incorporated with permethrin alone was included in the trial as a positive control net. A net was considered to have passed the WHO efficacy criteria if it caused >= 80% mortality and/or >= 95% knockdown in cone bioassays or >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests [3]. Most of the Olyset(r) Plus and Olyset(r) Net lost the knockdown effect during the 24-36 months follow-up. Overall, neither Olyset(r) Plus nor Olyset(r) Net performed as they should even after 2 years and did not meet the WHO efficacy criteria of a 3-year LLIN.\n", + "\n", + "Previous studies have demonstrated enhanced efficacy of Olyset(r) Plus against resistant _An. gambiae_ attributable to PBO [16-18]. A recent randomised controlled field trial in Tanzania with high levels of pyrethroid resistance in malaria vectors _An. gambiae_ and _An. arabiensis_ also attributed higher impact on malaria of Olyset(r) Plus over Olyset(r) Net to the presence of PBO that was sustained after 21 months of the trial [19]. However, there is a view that these two nets are not comparable and that the higher efficacy of Olyset(r) Plus was due to much more bleed rate of permethrin into its surface and not due to PBO that was incorporated in small amount and dwindled rapidly over time [20]. In this trial, Olyset(r) Plus was evaluated as a pyrethroid LLIN since there were no guidelines published by WHO of how to evaluate PBO nets at the time of this trial, and considering the manufacturer's product claim.\n", + "\n", + "While, it was reported that high intensity insecticide resistance will reduce the level of personal and community protection of pyrethroid LLINs [21] and PBO nets could be effective against malaria in some resistance scenarios [22], a recent WHO multi-country study found no evidence of an association between insecticide resistance and malaria infection prevalence or incidence [23]. There is also a view that at present there is limited evidence that recent reduction in the impact on malaria in sub-Saharan Africa was due to increasing resistance in malaria vectors to the pyrethroid insecticides used in treating nets [24].\n", + "\n", + "The initial permethrin content in both nets was more or less similar but the enhanced efficacy of Olyset(r) Plus was mainly due to the higher release of permethrin into the surface fibres and presence of PBO than Olyset(r) Net. The gradual decline in efficacy of both nets is consistent with the loss of permethrin and PBO in Olyset(r) Plus and of permethrin in Olyset(r) Net over time during their routine usage by the community. The decline in permethrin content was more rapid in Olyset(r) Plus than Olyset(r) Net. This explains why Olyset(r) Plus having permethrin and PBO was relatively superior than Olyset(r) Net initially, i.e., until 18 months, but after that their performance was below the WHO efficacy cut off. While the PBO content in Olyset(r) Plus at the baseline was within the target tolerance limits, 66% of the PBO content was lost within one year of net usage, and the loss increased to 81% at year 2 and 87% at year 3. Previous studies have reported that the insecticidal content in LLINs decay over time [6]. While permethrin and PBO contents may be lost due to natural decay and evaporation, washing of nets frequently and drying them under direct sunlight are known to contribute to such losses [25, 26]. In this study, despite manufacturer's label recommendation not to expose nets to direct sunlight, a good proportion of both type of nets were exposed to bright sunlight before use and left to dry in the sun after washing. This would have reduced both permethrin and PBO contents and consequently reduced the biological efficacy of these nets and should be borne in mind when considering these results. Even though Kisumu strain was tested, the loss of PBO would have affected efficacy of Olyset Plus as PBO can improve net performance even against susceptible strains, which too have P450s, and PBO is also known to act as a good solvent that can aid cuticular penetration and help improve insecticidal activity. The operational implication of rapid loss of PBO is that Olyset(r) Plus was unlikely to remain effective even against pyrethroid resistant mosquitoes for 2 or 3 years of use.\n", + "\n", + "Community net wash practices were comparable between the two nets. During the first 6 months, no net was reported to have been washed. At 1 year, 7% of Olyset(r) Plus and 7% of Olyset(r) Net were reported to have been washed at least once. At month 36 months, about 17% and 21% of Olyset(r) Plus and Olyset(r) Net\n", + "respectfully had been washed at least once. LLINs are usually recommended to be washed at most every 3 months [5], although this frequency depends on local cultural practices and water availability. Different net washing frequencies have been reported in other studies spanning from a high of 8 washes per month in Mali [27] to 4-7 times in Tanzania [28] to a low average of 1.5 washes per year in Uganda [29]. In coastal Kenya, on average nets were washed twice in 6 months, with blue colour nets least often washed than white or green colour nets, and older nets washed more frequently [30]. In western Kenya lowlands, three quarter of nets were washed once within 3 months and a third of them were dried under the sun [31]. The main reasons for low reported wash rates during the annual surveys in our study could be attributed to net users' poor recall of the net washing frequencies, and people's apprehension that washing of nets reduce net efficacy, although there was no water scarcity in the trial area being located in a rice irrigation area.\n", + "\n", + "The study participants reported experiencing certain transient adverse effects during the first two days of use of nets, but these could be prompted reactions since the community members had been informed about the possibility of such effects at the time of net distribution. The higher side effects from use of Olyset(r) Plus is in line with the higher release of permethrin as mentioned above. Users resorted to ventilating their nets in direct sunlight to reduce the effects although our project team had advised to dry up and keep the nets under shade. Ventilating new nets or drying washed nets under direct sunlight might have contributed to a significant reduction in active ingredient content and bio-efficacy of nets.\n", + "\n", + "At the end of the 3-year period, among the two cohorts of 250 nets each, only about 9% Olyset(r) Plus and about 14% Olyset(r) Net were reported to have been lost showing a high net survivorship. These results are in line with the expected 75% net survivorship rate reported by the NetCALC 3-year serviceable prediction model [32]. Previous studies have reported varying rate of net survivorship in African countries, such as 58% nets were lost within two years in Rwanda [33], only 39% of distributed nets remained both present and in serviceable physical condition 2-4 years after a mass campaign in Tanzania [34], but in Western Uganda an estimated attrition rate of just 12% after three years of use was observed for a polyester net [35]. In four African countries of Mozambique, Nigeria, DRC and Zanzibar, Tanzania, survival in serviceable condition of polyethylene and polyester LLINs after 31-37 months of use varied between different sites from 17 to 80% with median survival from 1.6 to 5.3 years [36]. In our study, the observed low attrition rate of nets appears to be also due to the 'Hawthorne effect' as the households included in the two cohorts of nets were visited every 6 or 12 months to inspect the nets. So, the awareness among study participants that the nets were regularly being followed could have modified their behaviour in favour of more careful upkeep and maintenance of the nets and as such may have been a limitation in this study.\n", + "\n", + "Studies have shown that despite small to medium size holes (64 < PHI < 642), LLINs are still protective against mosquito bites due to the excito-repellent effects of insecticides [35]. However, the nets may become ineffective when the overall hole area in nets reaches a certain threshold [37]. In our study, both Olyset(r) Plus and Olyset(r) Net recorded high fabric integrity up to the 3-year trial period. At 12 months after distribution, 78.1% of Olyset Plus and 63.8% of Olyset(r) Net were in good/acceptable condition, 12.3% Olyset(r) Plus and 30.5% Olyset(r) Net were in serviceable condition, while 9.4% Olyset(r) Plus and 5.6% Olyset(r) Net were completely torn and required to be replaced. At the end of the 3-year trial period, 49.5% of Olyset(r) Plus and 44.9% of Olyset(r) Net were in good/acceptable condition, 27.1% Olyset(r) Plus and 32.8% Olyset(r) Net in serviceable condition, while 23.2% Olyset(r) Plus and 22.2% Olyset(r) Net were completely torn and required replacement.\n", + "\n", + "Although Olyset(r) Net retained a higher permethrin content that Olyset(r) Plus, the latter showed longer duration of efficacy than the former, i.e., 18 months compared with 12 months above the WHO efficacy cut off, and higher efficacy thereafter i.e., the efficacy of Olyset(r) Plus declined to 42% at the end of 3-year trial period and that of Olyset(r) Net to 36% over the same period. This could be attributed to higher release of permethrin into the netting surface, and also because PBO can make nets perform better even against susceptible mosquitoes. Pyrethroid-PBO nets have previously been associated with higher mosquito mortality and lower blood-feeding rates in areas of high-level insecticide resistance than were non-PBO LLINs [38, 39]. Although in our study we did not test nets with a pyrethroid resistant mosquito strain, it is likely that the fast decline of PBO in Olyset(r) Plus was caused by the inappropriate exposure to sunlight, as well as the normal loss through washing would have reduced efficacy against resistant mosquitoes in the same way that it reduced efficacy against the susceptible mosquitoes tested here.\n", + "\n", + "Appropriate testing guidelines and field studies are thus required to evaluate the operational effectiveness of PBO nets against pyrethroid resistant mosquitoes and considering the PBO retention and release properties. The revised WHO LLIN guidelines should clarify for how long PBO nets should be effective and if the \n", + "current WHO efficacy criteria for a 3-year LLIN should be reduced to fit the chemistry.\n", + "\n", + "A limitation of our trial was that we did not evaluate efficacy of Olysset(r) Plus against resistant _An. gambling_ mosquitoes. Instead, we tested its efficacy for the presence of permethrin alone using a susceptible malaria vector strain, although inclusion of PBO in nets has the potential of increasing insecticidal efficacy due to increased cuticular penetration and presence of P450s in susceptible insects. There is thus a need for suitable testing guidelines and a much more validation of the impact of PBO in pyrethroid-PBO nets.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "All the relevant datasets supporting the conclusions of this article are included within the article.\n", + "\n", + "header: Table 6 Progression of hole formation and proportionate Hole Index (pHI) values for Olyset® Plus and Olyset® Net\n", + "footer: None\n", + "columns: ['Net brand', 'Follow up months', 'No. of nets sampled', 'Number of nets with any size holes (%; 95% CI)', 'No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)', 'No. of nets by pHI values (%; 95% CI) - pHI 65–642 (in acceptable condition)', 'No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)']\n", + "\n", + "{\"0\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":6,\"No. of nets sampled\":250,\"Number of nets with any size holes (%; 95% CI)\":\"115 (46.0; 39.9\\u201352.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"219 (87.6; 82.9\\u201391.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"19 (7.6; 4.9\\u201311.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"12 (4.8; 2.8\\u20138.2)\"},\"1\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":12,\"No. of nets sampled\":243,\"Number of nets with any size holes (%; 95% CI)\":\"131 (54.0; 47.6\\u201360.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"190 (78.2; 72.6\\u201382.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"30 (12.4; 8.8\\u201317.0)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"23 (9.5; 6.3\\u201313.8)\"},\"2\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":24,\"No. of nets sampled\":231,\"Number of nets with any size holes (%; 95% CI)\":\"120 (52.0; 45.5\\u201358.3)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"145 (62.8; 56.7\\u201368.7)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"58 (25.1; 19.9\\u201331.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"28 (12.0; 8.5\\u201316.9)\"},\"3\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":36,\"No. of nets sampled\":228,\"Number of nets with any size holes (%; 95% CI)\":\"144 (63.0; 56.7\\u201369.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"113 (49.6; 43.1\\u201356.0)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"62 (27.1; 21.8\\u201333.3)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"53 (23.2; 18.2\\u201329.2)\"},\"4\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":6,\"No. of nets sampled\":250,\"Number of nets with any size holes (%; 95% CI)\":\"157 (63.0; 56.7\\u201368.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"186 (74.4; 68.7\\u201379.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"57 (22.8; 18.1\\u201328.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"7 (2.8; 1.3\\u20135.7)\"},\"5\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":12,\"No. of nets sampled\":249,\"Number of nets with any size holes (%; 95% CI)\":\"169 (68.0; 61.8\\u201373.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"159 (63.9; 57.7\\u201369.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"76 (30.5; 25.1\\u201336.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"14 (5.6; 3.4\\u20139.2)\"},\"6\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":24,\"No. of nets sampled\":226,\"Number of nets with any size holes (%; 95% CI)\":\"147 (65.0; 58.6\\u201370.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"120 (53.1; 46.6\\u201359.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"71 (31.4; 25.7\\u201337.7)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"35 (15.5; 11.4\\u201320.8)\"},\"7\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":36,\"No. of nets sampled\":216,\"Number of nets with any size holes (%; 95% CI)\":\"156 (72.0; 65.9\\u201377.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"97 (44.9; 38.4\\u201351.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"71 (32.8; 26.9\\u201339.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"48 (22.2; 17.2\\u201328.2)\"}}\n", + "\n", + "header: Statistical analysis\n", + "\n", + "The data collected were entered in excel spreadsheets and cross-checked for accuracy. Data were analyzed using STATA version 14.0 (Stata Corporation, College Station, TX, USA). Comparisons between the two types of nets were tested for significance using the Chi-square (kh2) test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. For continuous variables, the arithmetic mean was used depending on the distribution of values compared to a normal distribution.\n", + "\n", + "The nets were considered to have passed the WHO efficacy criteria if the mosquito knockdown rate was found to be >= 95% and/or mortality rate >= 80% in cone bioassays. For the tunnel tests, nets were considered to have passed the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90% [3]. The procedure for calculation of proportionate Hole Index (pHI) for nets is already described above.\n", + "\n", + "header: Bioassays\n", + "\n", + "The insecticidal effect of the nets was evaluated using cone bioassays and where required tunnel tests, as per the WHO guidelines [3]. The bioassays were done at time zero (baseline) and then at every 6 months up to 36 months. On each of the netting pieces cut for bioassays, standard WHO plastic cones were held in place using a plastic manifold and a total of 50 laboratory bred, susceptible Kisumu strain _Anopheles gambiae_ (non-blood fed, 2-5 day old) were exposed for 3 min (5 pieces per net x 5 mosquitoes per test x 2 replicates). After the exposure, the mosquitoes were removed gently from\n", + "the cones and kept separately in plastic cups provided with cotton-wool moistened with 10% glucose solution. Knockdown (KD) was recorded at 60 min and mortality at 24 h after exposure. Mosquitoes exposed to untreated polyester net pieces were used as untreated controls. The bioassays were carried out at 27 +- 2 degC temperature and 80% +- 10% relative humidity. When the mosquito knockdown rate was < 95% and mortality < 80%, the mortality and blood-feeding inhibition effect of such nets was assessed in a tunnel test according to the WHO guidelines [3].\n", + "\n", + "For each net, only one netting piece with which mosquito mortality was found closest to the average mortality in the cone test was tested in the tunnel test [3]. One hundred, non-blood fed female _An. gambiae_ Kisumu mosquitoes, aged 5-8 days were released at the longer end of a tunnel equipment made of glass. At each end of the tunnel, a 25 cm square cage covered with a polyester netting was fitted. At the shorter end of the tunnel, a rabbit which could not move but was available for mosquito biting was placed. The mosquitoes were released at 18:00 and mosquitoes recovered at 09:00 on the following morning. During the test, the tunnel was kept in a place maintained at 27 +- 2 degC and 80% +- 10% relative humidity in full darkness. Another tunnel with untreated netting was used as control. The mean mortality rate and percentage blood-feeding inhibition were recorded, as follows:\n", + "\n", + "1. Mortality = this was measured by pooling the mortality rates of mosquitoes from the two sections of the tunnel. If mortalities in the control recorded more than 10%, the test was considered invalid.\n", + "\n", + "\\[\\text{Blood} - \\text{feeding\\,inhibition}(\\%) = \\left[ {100 \\times \\left( {\\text{Bfc} - \\text{Bfc}} \\right)} \\right]/\\text{Bfc}\\]\n", + "\n", + "where, Bfc is the proportion of blood-fed mosquitoes in the control tunnel and Bft is the proportion of blood-fed mosquitoes in the tunnel with the treated net. The treated net was considered to have met the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90%.\n", + "\n", + "header: Chemical content analysis\n", + "\n", + "The chemical contents in the nets were determined at the beginning and at years 1, 2 and 3 by samplings nets according to the scheme described earlier. The netting pieces cut for determination of active ingredient content were individually rolled up and placed in new, clean and labeled aluminum foils and sent to the Phyto-pharmacy Department of the Walloon Agricultural Research Centre, Gembloux, Belgium, a WHO Collaborating Centre, for chemical analysis.\n", + "\n", + "header: Funding\n", + "\n", + "The work was funded as a collaborative project by the WHO Pesticide Evaluation Scheme, Geneva, Switzerland.\n", + "\n", + "header: Conclusions\n", + "\n", + "Olysset(r) Plus did not meet the WHO criteria for efficacy of LLINs in this 3-year Phase III study, which could have resulted from faster loss of permethrin and PBO and users not following the manufacturer's recommendations to not leave the nets under direct sunlight. Better community education is therefore essential to ensure appropriate use and upkeep of nets in areas with LLIN-based interventions in order to maximize their operational impact on the prevention, control and elimination of malaria. Failure to do this would result in operational implications requiring early replenishment with new nets to ensure that such an LLIN based malaria intervention remains effective.\n", + "\n", + "header: Trial design and study area\n", + "\n", + "We did a prospective, household randomized controlled, large-scale 3-year field trial in a rice irrigation area of Kirinyaga County, Kenya from 2014 to 2017. The area is located about 100 km northeast of Nairobi at the base of Mt Kenya at an altitude of about 1200 m above sea level [14]. It receives mean annual rainfall of 1200-1600 mm with long rains in March-June and short rains in October-December. Due to high densities of mosquitoes year-round, many local people use mosquito nets. Several bed net trials have previously been conducted here for national product registration. Over 80% of the inhabitants of the area have only primary level education. Most of the houses in the area are made of mud walls with roofs of corrugated iron sheets [14].\n", + "\n", + "Four villages of Maendeleo, Huruma, Kiratina and Kasarani were selected by a simple randomization, of which the first two villages were randomly allocated Olyset(r) Plus and the other two villages received Olyset(r) Net (Table 1). In each of the selected village, households were randomly selected.\n", + "\n", + "header: Table 3 Frequency of washing nets by the users at different time points\n", + "footer: The reported wash rate was zero at 6 months\n", + "columns: ['Period (months)', 'Olyset® Plus - No. of nets sampled', 'Olyset® Plus - No. of nets washed once (%)', 'Olyset® Plus - No. of nets washed twice (%)', 'Olyset® Plus - No. of nets washed > 2 times (%)', 'Olyset® Net - No. of nets sampled', 'Olyset® Net - No. of nets washed at once (%)', 'Olyset® Net - No. of nets washed twice (%)', 'Olyset® Net - No. of nets washed > 2 times (%)']\n", + "\n", + "{\"0\":{\"Period (months)\":6,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"\\u2013\"},\"1\":{\"Period (months)\":12,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"1 (3)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"2\":{\"Period (months)\":24,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"4 (12)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"1 (3)\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"3 (11)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"3\":{\"Period (months)\":36,\"Olyset\\u00ae Plus - No. of nets sampled\":50,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"9 (17)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"5 (10)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"3 (6)\",\"Olyset\\u00ae Net - No. of nets sampled\":50,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"11 (21)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"8 (6)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"3 (6)\"}}\n", + "\n", + "header: Background\n", + "\n", + "Insecticide-treated nets reduce child mortality, number of _Plasmodium falciparum_ cases and probably the number of _P. vivax_ cases per person/year [1]. Factory-produced long-lasting insecticide nets (LLINs) are a core malaria intervention for the global elimination of malaria led by the World Health Organization (WHO) [2]. According to the WHO definition, LLINs should retain efficacy against mosquito vectors for a minimum of 20 standard washes under laboratory conditions and a minimum of 3 years of use under field conditions [3]. When used by most of the people in a population, insecticide-treated nets can protect all people in the community, including those who do not sleep under nets [4]. Currently, the National Malaria Control Programme (NMCP) in Kenya has been scaling up the use of LLINs in malaria endemic and high-risk areas to achieve universal coverage, which is defined by WHO as access to one LLIN for every 1.8 persons in each household [2, 5].\n", + "\n", + "Pyrethroid LLINs were the first brands of treated nets recommended by WHO for malaria control. However, it was believed that insecticide resistance was worsening in Africa and would present a major threat to malaria control [6-8], and that pyrethroid-LLINs were becoming less effective at killing mosquitoes in household conditions when pyrethroid resistance develops [9, 10]. Consequently, piperonyl butoxide (PBO) was incorporated in nets with the intension to improve their efficacy against pyrethroid resistant mosquitoes by acting as a metabolic enzyme inhibitor targeting the P450 cytochrome or mixed function oxidases that metabolise pyrethroids and enhance the efficacy of pyrethroid treated nets. Olyset(r) Plus has been prequalified by WHO as the first in class PBO net.\n", + "\n", + "However, at the time of beginning the trial due to the absence of guidelines published by WHO of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated only as a pyrethroid LLIN against a pyrethroid susceptible mosquito strain rather than against a resistant strain. This paper presents results of a 3-year long-term (Phase III) field trial of the candidate product, Olyset(r) Plus, along with a positive control product Olyset(r) Net, in a malaria endemic rice cultivation area of Kirinyaga County, Kenya.\n", + "\n", + "header: Test products\n", + "\n", + "Bioefficacy and physical durability of the Olyset(r) Plus and Olyset(r) Net both manufactured by Sumitomo Chemical were evaluated. The former is a polyethylene mono-filament net incorporated with 2% permethrin corresponding to 20 g permethrin active ingredient (AI)/kg or 800 mg permethrin AI/m\\({}^{2}\\) and 1% PBO (corresponding to 10 g PBO AI/kg or 400 mg PBO AI/m\\({}^{2}\\)). The latter is a polyethylene mono-filament net incorporated with 2% permethrin (w/w) (corresponding to 800 mg permethrin AI/m\\({}^{2}\\)). Olyset(r) Net was recommended in 2009 by the WHO Pesticide Evaluation Scheme (WHOPES) for use in malaria control [12], while Olyset(r) Plus was given interim recommendation by WHO in 2012 with the requirement to evaluate the product in a 3-year long-term trial to confirm its long-lasting efficacy in field [13].\n", + "\n", + "header: Table 4 Bioefficacy of Olyset® Plus and Olyset® Net against Anopheles. gambiae Kisumu in cone and tunnel tests\n", + "footer: a KD, knockdown≥95%; b mortality≥80%; c taking into account the KD and mortality rates in cone bioassays, and blood-feeding inhibition and mortality rates in tunnel tests\n", + "columns: ['Survey month', 'No. of nets tested', 'Mean 1 h KD (%)', 'Mean 24 h mortality (%)', '% of nets passed by KD criteria alonea', '% of nets passed mortality criteria aloneb', 'No. of nets requiring tunnel test', 'Overall pass rate in percentage (95% CI)c']\n", + "\n", + "{\"0\":{\"Survey month\":\"Olyset\\u00ae Plus\",\"No. of nets tested\":\"Olyset\\u00ae Plus\",\"Mean 1 h KD (%)\":\"Olyset\\u00ae Plus\",\"Mean 24 h mortality (%)\":\"Olyset\\u00ae Plus\",\"% of nets passed by KD criteria alonea\":\"Olyset\\u00ae Plus\",\"% of nets passed mortality criteria aloneb\":\"Olyset\\u00ae Plus\",\"No. of nets requiring tunnel test\":\"Olyset\\u00ae Plus\",\"Overall pass rate in percentage (95% CI)c\":\"Olyset\\u00ae Plus\"},\"1\":{\"Survey month\":\"0\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"99.5\",\"Mean 24 h mortality (%)\":\"100\",\"% of nets passed by KD criteria alonea\":\"100\",\"% of nets passed mortality criteria aloneb\":\"100\",\"No. of nets requiring tunnel test\":\"0\",\"Overall pass rate in percentage (95% CI)c\":\"100 (80\\u2013100)\"},\"2\":{\"Survey month\":\"6\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"97.0\",\"Mean 24 h mortality (%)\":\"88.2\",\"% of nets passed by KD criteria alonea\":\"83.3\",\"% of nets passed mortality criteria aloneb\":\"73.3\",\"No. of nets requiring tunnel test\":\"4\",\"Overall pass rate in percentage (95% CI)c\":\"96.7 (82\\u201399)\"},\"3\":{\"Survey month\":\"12\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"94.2\",\"Mean 24 h mortality (%)\":\"74.3\",\"% of nets passed by KD criteria alonea\":\"76.7\",\"% of nets passed mortality criteria aloneb\":\"43.3\",\"No. of nets requiring tunnel test\":\"6\",\"Overall pass rate in percentage (95% CI)c\":\"93.3 (78\\u201399)\"},\"4\":{\"Survey month\":\"18\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"82.9\",\"Mean 24 h mortality (%)\":\"65.9\",\"% of nets passed by KD criteria alonea\":\"36.7\",\"% of nets passed mortality criteria aloneb\":\"36.7\",\"No. of nets requiring tunnel test\":\"16\",\"Overall pass rate in percentage (95% CI)c\":\"86.7 (69\\u201396)\"},\"5\":{\"Survey month\":\"24\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"77.4\",\"Mean 24 h mortality (%)\":\"75.3\",\"% of nets passed by KD criteria alonea\":\"0.0\",\"% of nets passed mortality criteria aloneb\":\"46.7\",\"No. of nets requiring tunnel test\":\"15\",\"Overall pass rate in percentage (95% CI)c\":\"76.7 (57\\u201390)\"},\"6\":{\"Survey month\":\"30\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"60.4\",\"Mean 24 h mortality (%)\":\"56.9\",\"% of nets passed by KD criteria alonea\":\"0.0\",\"% of nets passed mortality criteria aloneb\":\"10.0\",\"No. of nets requiring tunnel test\":\"27\",\"Overall pass rate in percentage (95% CI)c\":\"70.0 (50\\u201385)\"},\"7\":{\"Survey month\":\"36\",\"No. of nets tested\":\"50\",\"Mean 1 h KD (%)\":\"66.4\",\"Mean 24 h mortality (%)\":\"51.5\",\"% of nets passed by KD criteria alonea\":\"2.0\",\"% of nets passed mortality criteria aloneb\":\"8.0\",\"No. of nets requiring tunnel test\":\"24\",\"Overall pass rate in percentage (95% CI)c\":\"42.0 (28\\u201356)\"},\"8\":{\"Survey month\":\"Olyset\\u00ae Net\",\"No. of nets tested\":\"Olyset\\u00ae Net\",\"Mean 1 h KD (%)\":\"Olyset\\u00ae Net\",\"Mean 24 h mortality (%)\":\"Olyset\\u00ae Net\",\"% of nets passed by KD criteria alonea\":\"Olyset\\u00ae Net\",\"% of nets passed mortality criteria aloneb\":\"Olyset\\u00ae Net\",\"No. of nets requiring tunnel test\":\"Olyset\\u00ae Net\",\"Overall pass rate in percentage (95% CI)c\":\"Olyset\\u00ae Net\"},\"9\":{\"Survey month\":\"0\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"99.1\",\"Mean 24 h mortality (%)\":\"100\",\"% of nets passed by KD criteria alonea\":\"100\",\"% of nets passed mortality criteria aloneb\":\"100\",\"No. of nets requiring tunnel test\":\"0\",\"Overall pass rate in percentage (95% CI)c\":\"100 (88\\u2013100)\"},\"10\":{\"Survey month\":\"6\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"96.9\",\"Mean 24 h mortality (%)\":\"79.8\",\"% of nets passed by KD criteria alonea\":\"80.0\",\"% of nets passed mortality criteria aloneb\":\"60.0\",\"No. of nets requiring tunnel test\":\"4\",\"Overall pass rate in percentage (95% CI)c\":\"93.3 (77\\u201399)\"},\"11\":{\"Survey month\":\"12\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"68.5\",\"Mean 24 h mortality (%)\":\"54.7\",\"% of nets passed by KD criteria alonea\":\"20.0\",\"% of nets passed mortality criteria aloneb\":\"3.3\",\"No. of nets requiring tunnel test\":\"24\",\"Overall pass rate in percentage (95% CI)c\":\"83.3 (65\\u201394)\"},\"12\":{\"Survey month\":\"18\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"72.1\",\"Mean 24 h mortality (%)\":\"50.2\",\"% of nets passed by KD criteria alonea\":\"30.0\",\"% of nets passed mortality criteria aloneb\":\"20.0\",\"No. of nets requiring tunnel test\":\"18\",\"Overall pass rate in percentage (95% CI)c\":\"73.3 (54\\u201387)\"},\"13\":{\"Survey month\":\"24\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"79.8\",\"Mean 24 h mortality (%)\":\"68.9\",\"% of nets passed by KD criteria alonea\":\"3.3\",\"% of nets passed mortality criteria aloneb\":\"46.7\",\"No. of nets requiring tunnel test\":\"18\",\"Overall pass rate in percentage (95% CI)c\":\"66.7 (47\\u201383)\"},\"14\":{\"Survey month\":\"30\",\"No. of nets tested\":\"30\",\"Mean 1 h KD (%)\":\"50.9\",\"Mean 24 h mortality (%)\":\"50.9\",\"% of nets passed by KD criteria alonea\":\"0.0\",\"% of nets passed mortality criteria aloneb\":\"3.3\",\"No. of nets requiring tunnel test\":\"29\",\"Overall pass rate in percentage (95% CI)c\":\"60.0 (40\\u201377)\"},\"15\":{\"Survey month\":\"36\",\"No. of nets tested\":\"50\",\"Mean 1 h KD (%)\":\"66.3\",\"Mean 24 h mortality (%)\":\"51.9\",\"% of nets passed by KD criteria alonea\":\"0.0\",\"% of nets passed mortality criteria aloneb\":\"8.0\",\"No. of nets requiring tunnel test\":\"26\",\"Overall pass rate in percentage (95% CI)c\":\"36.0 (23\\u201350)\"}}\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Results\n", + "\n", + "Among the 1784 participating homesteads with a population of 10 325, a total of 1551 households participated in the study (Table 1). Most of the heads of the households (age: 17-96 years) had received formal education and practiced farming (96.6%).\n", + "\n", + "Out of 100 heads of households with Olyset(r) Plus interviewed for adverse events, 44% reported itching, 4% eye irritation, and 7% unpleasant smell. Among the Olyset(r) Net users, 7% each reported nasal discharge and eye irritation. These were reported to be mild symptoms lasting for one or two days. To reduce these effects, 43% users of Olyset(r) Plus ventilated nets for a day in the open under the sun and 33% under the shade. Among Olyset(r) Net users, similar actions were taken by 44% and 39%, respectively.\n", + "\n", + "header: Abstract\n", + "\n", + "Bioefficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide-treated insecticidal net in a 3-year long trial in Kenya\n", + "\n", + "Paul M. Gichuki, Anna Kamau, Kiambo Niagi, Solomon Karoki, Njoroge Muigai, Damaris Matoke-Muhia, Nabie Bayoh, Evan Mathenge\n", + "\n", + "\n", + "**Background:** Long-lasting insecticide nets (LLINs) are a core malaria intervention. LLINs should retain efficacy against mosquito vectors for a minimum of three years. Efficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide (PBO) treated LLIN, was evaluated versus permethrin treated Olyset(r) Net. In the absence of WHO guidelines of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated as a pyrethroid LILN.\n", + "\n", + "**Methods:** This was a household randomized controlled trial in a malaria endemic rice cultivation zone of Kirinyaga County, Kenya between 2014 and 2017. Cone bioassays and tunnel tests were done against _Anopheles gambiae_ Kisumu. The chemical content, fabric integrity and LLIN survivorship were monitored. Comparisons between nets were tested for significance using the Chi-square test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. The WHO efficacy criteria used were >= 95% knockdown and/or >= 80% mortality rate in cone bioassays and >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests.\n", + "\n", + "**Results:** At 36 months, Olyset(r) Plus lost 52% permethrin and 87% PBO content; Olyset(r) Net lost 24% permethrin. Over 80% of Olyset(r) Plus and Olyset(r) Net passed the WHO efficacy criteria for LLINs up to 18 and 12 months, respectively. At month 36, 91.2% Olyset(r) Plus and 86.4% Olyset(r) Net survived, while 72% and 63% developed at least one hole. The proportionate Hole Index (pHI) values representing nets in good, serviceable and torn condition were 49.6%, 27.1% and 23.2%, respectively for Olyset(r) Plus, and 44.9%, 32.8% and 22.2%, respectively for Olyset(r) Net but were not significantly different.\n", + "\n", + "**Conclusions:** Olyset(r) Plus retained efficacy above or close to the WHO efficacy criteria for about 2 years than Olyset(r) Net (1-1.5 years). Both nets did not meet the 3-year WHO efficacy criteria, and showed little attrition, comparable physical durability and survivorship, with 50% of Olyset(r) Plus having good and serviceable condition after 3 years. Better community education on appropriate use and upkeep of LLINs is essential to ensure effectiveness of LLIN based malaria interventions.\n", + "\n", + "**Keywords:**_Anopheles gambiae, Bioefficacy, Durability, Kenya, Long-lasting insecticidal net, Olyset(r) Net, Olyset(r) Plus, Permeability, Piperonyl butoxide_\n", + "\n", + "header: Conclusions\n", + "\n", + "Olysset(r) Plus did not meet the WHO criteria for efficacy of LLINs in this 3-year Phase III study, which could have resulted from faster loss of permethrin and PBO and users not following the manufacturer's recommendations to not leave the nets under direct sunlight. Better community education is therefore essential to ensure appropriate use and upkeep of nets in areas with LLIN-based interventions in order to maximize their operational impact on the prevention, control and elimination of malaria. Failure to do this would result in operational implications requiring early replenishment with new nets to ensure that such an LLIN based malaria intervention remains effective.\n", + "\n", + "header: Chemical contents\n", + "\n", + "At time 0 (baseline), the contents of permethrin and PBO in Olyset(r) Plus were within the target tolerance limits of 20 +- 5 g/kg and 10 +- 2.5 g/kg, respectively; while the permethrin content in Olyset(r) Net was also within the target tolerance limit of 20 +- 3 g/kg (Table 5). The within net variation (relative standard deviation, RSD) in permethrin and PBO contents for Olyset(r) Plus at baseline were 2.2% and 3.7%, respectively, and were within the acceptable tolerance limits. The within net variation in the permethrin content in Olyset(r) Net at the baseline was 1.2% and was also within the acceptable tolerance limit. At the end of years 1, 2 and 3 of net usage, the permethrin content in Olyset(r) Plus decreased by 36%, 40% and 52%, and the PBO content showed a marked reduction of 66%, 81% and 87%, respectively. The loss of the permethrin in Olyset(r) Net\n", + "\n", + "\\begin{table}\n", + "\\begin{tabular}{c c c c c c c c} \\hline\n", + "**Survey month** & **No. of** & **Mean 1 h** & **Mean 24 h** & **\\% of nets passed by** & **\\% of nets passed by** & **No. of nets passed by** & **Overall pass rate in** \\\\\n", + "**nets** & **KD (\\%)** & **mortality** & **KD criteria alone(r)** & **mortality criteria** & **requiring tunnel** & **percentage (95\\% CI)(r)** \\\\\n", + "**Olyset(r) Plus** & & & & & & & \\\\\n", + "0 & 30 & 99.5 & 100 & 100 & 100 & 0 & 100 (80–100) \\\\\n", + "6 & 30 & 97.0 & 88.2 & 83.3 & 73.3 & 4 & 96.7 (82–99) \\\\\n", + "12 & 30 & 9\n", + "\n", + "4.2 & 74.3 & 76.7 & 43.3 & 6 & 93.3 (78–99) \\\\\n", + "18 & 30 & 82.9 & 65.9 & 36.7 & 36.7 & 16 & 86.7 (69–96) \\\\\n", + "24 & 30 & 77.4 & 75.3 & 0.0 & 46.7 & 15 & 76.7 (57–90) \\\\\n", + "30 & 30 & 60.4 & 56.9 & 0.0 & 10.0 & 27 & 70.0 (50–85) \\\\\n", + "**Olyset(r) Net** & & & & & & & \\\\\n", + "0 & 30 & 99.1 & 100 & 100 & 100 & 0 & 100 (88–100) \\\\\n", + "6 & 30 & 96.9 & 79.8 & 80.0 & 60.0 & 4 & 93.3 (77–99) \\\\\n", + "12 & 30 & 68.5 & 54.7 & 20.0 & 3.3 & 24 & 83.3 (65–94) \\\\\n", + "18 & 30 & 72.1 & 50.2 & 30.0 & 20.0 & 18 & 73.3 (54–87) \\\\\n", + "24 & 30 & 79.8 & 68.9 & 3.3 & 46.7 & 18 & 66.7 (47–83) \\\\\n", + "30 & 30 & 50.9 & 50.9 & 0.0 & 3.3 & 29 & 60.0\n", + "\n", + "\n", + "was 16% at year 1 and did not change much at year 2 and 3 (19 and 24%, respectively).\n", + "\n", + "header: Table 5 Mean permethrin and PBO contents (relative standard deviation) in nets at baseline, and at 12, 24 and 36 months\n", + "footer: a Within net variation (relative standard deviation) in permethrin and PBO contents at baseline was 2.2% and 3.7%, respectively (Olyset® Plus). – not applicable, PBOpiperonyl butoxideb Within net variation (relative standard deviation) in permethrin content at baseline was 1.2% (Olyset® Net)\n", + "columns: ['Sampling month', 'Olyset® Plus - Mean permethrin content in g/kg (95% CI)', 'Olyset® Plus - Permethrin content lost (%)', 'Olyset® Plus - PBO content in g/ kg (95% CI)', 'Olyset® Plus - PBO content lost (%)', 'Olyset® Net - Mean permethrin content in g/kg (95% CI)', 'Olyset® Net - Permethrin content lost (%)']\n", + "\n", + "{\"0\":{\"Sampling month\":0,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"18.4 (18.3\\u201318.6)a\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"8.98 (8.86\\u20139.10)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"19.6 (19.5\\u201319.7)b\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"\\u2013\"},\"1\":{\"Sampling month\":12,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.7 (10.6\\u201312.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"36\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"3.01 (2.30\\u20133.80)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"66\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"16.5 (16.0\\u201317.0)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"16\"},\"2\":{\"Sampling month\":24,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.1 (10.2\\u201312.0)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"40\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.70 (1.20\\u20132.20)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"81\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"15.9 (15.1\\u201316.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"19\"},\"3\":{\"Sampling month\":36,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"8.8 (7.9\\u20139.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"52\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.16 (0.8\\u20131.5)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"87\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"14.8 (13.9\\u201315.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"24\"}}\n", + "\n", + "header: Net survivorship and fabric integrity\n", + "\n", + "At the end of year 1, Olyset(r) Plus reported survivorship rates of 97.2% (_n_ = 243), with Olyset(r) Net recording 99.6% (_n_ = 249). At year 2, there were 92.4% (_n_ = 231) Olyset(r) Plus and 90.4% (_n_ = 226) of Olyset(r) Nets still surviving. At the end of the 3 years of study, the survivorship rates for Olyset(r) Plus and Olyset(r) Net were at 91.2% (_n_ = 228) and 86.4% (_n_ = 216), respectively.\n", + "\n", + "The pH values of the nets showed that 87.6% of Olyset(r) Plus were in good condition at 6 months, 7.6% were in acceptable/serviceable condition, and 4.8% were too torn (Table 6). These proportions increased gradually during the study and at 36 months, 49.6% were in good condition, 27.1% in acceptable/serviceable condition, and 23.2% were too torn. A similar trend of attrition was seen for Olyset(r) Net, with 44.9%, 32.8% and 22.2% nets being in good condition, acceptable condition or too torn at 36 months, respectively.\n", + "\n", + "Data on the comparison of estimates of the mean pH values and the mean hole area for Olyset(r) Plus and Olyset(r) Net are given in Table 7.\n", + "\n", + "The proportion of Olyset(r) Plus nets having been repaired by households increased from 6% (95% CI: 3.4-9.7) at month 6 to 17.9% (95% CI: 13.2-23.6) at months\n", + "\n", + "36, while that of Olyset(r) Net increased from 5% (95% CI: 2.8-8.7) to 12% (95% CI: 8.0-17.1) in the same period.\n", + "\n", + "\n", + "Olyset(r) Net incorporated with permethrin alone was included in the trial as a positive control net. A net was considered to have passed the WHO efficacy criteria if it caused >= 80% mortality and/or >= 95% knockdown in cone bioassays or >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests [3]. Most of the Olyset(r) Plus and Olyset(r) Net lost the knockdown effect during the 24-36 months follow-up. Overall, neither Olyset(r) Plus nor Olyset(r) Net performed as they should even after 2 years and did not meet the WHO efficacy criteria of a 3-year LLIN.\n", + "\n", + "Previous studies have demonstrated enhanced efficacy of Olyset(r) Plus against resistant _An. gambiae_ attributable to PBO [16-18]. A recent randomised controlled field trial in Tanzania with high levels of pyrethroid resistance in malaria vectors _An. gambiae_ and _An. arabiensis_ also attributed higher impact on malaria of Olyset(r) Plus over Olyset(r) Net to the presence of PBO that was sustained after 21 months of the trial [19]. However, there is a view that these two nets are not comparable and that the higher efficacy of Olyset(r) Plus was due to much more bleed rate of permethrin into its surface and not due to PBO that was incorporated in small amount and dwindled rapidly over time [20]. In this trial, Olyset(r) Plus was evaluated as a pyrethroid LLIN since there were no guidelines published by WHO of how to evaluate PBO nets at the time of this trial, and considering the manufacturer's product claim.\n", + "\n", + "While, it was reported that high intensity insecticide resistance will reduce the level of personal and community protection of pyrethroid LLINs [21] and PBO nets could be effective against malaria in some resistance scenarios [22], a recent WHO multi-country study found no evidence of an association between insecticide resistance and malaria infection prevalence or incidence [23]. There is also a view that at present there is limited evidence that recent reduction in the impact on malaria in sub-Saharan Africa was due to increasing resistance in malaria vectors to the pyrethroid insecticides used in treating nets [24].\n", + "\n", + "The initial permethrin content in both nets was more or less similar but the enhanced efficacy of Olyset(r) Plus was mainly due to the higher release of permethrin into the surface fibres and presence of PBO than Olyset(r) Net. The gradual decline in efficacy of both nets is consistent with the loss of permethrin and PBO in Olyset(r) Plus and of permethrin in Olyset(r) Net over time during their routine usage by the community. The decline in permethrin content was more rapid in Olyset(r) Plus than Olyset(r) Net. This explains why Olyset(r) Plus having permethrin and PBO was relatively superior than Olyset(r) Net initially, i.e., until 18 months, but after that their performance was below the WHO efficacy cut off. While the PBO content in Olyset(r) Plus at the baseline was within the target tolerance limits, 66% of the PBO content was lost within one year of net usage, and the loss increased to 81% at year 2 and 87% at year 3. Previous studies have reported that the insecticidal content in LLINs decay over time [6]. While permethrin and PBO contents may be lost due to natural decay and evaporation, washing of nets frequently and drying them under direct sunlight are known to contribute to such losses [25, 26]. In this study, despite manufacturer's label recommendation not to expose nets to direct sunlight, a good proportion of both type of nets were exposed to bright sunlight before use and left to dry in the sun after washing. This would have reduced both permethrin and PBO contents and consequently reduced the biological efficacy of these nets and should be borne in mind when considering these results. Even though Kisumu strain was tested, the loss of PBO would have affected efficacy of Olyset Plus as PBO can improve net performance even against susceptible strains, which too have P450s, and PBO is also known to act as a good solvent that can aid cuticular penetration and help improve insecticidal activity. The operational implication of rapid loss of PBO is that Olyset(r) Plus was unlikely to remain effective even against pyrethroid resistant mosquitoes for 2 or 3 years of use.\n", + "\n", + "Community net wash practices were comparable between the two nets. During the first 6 months, no net was reported to have been washed. At 1 year, 7% of Olyset(r) Plus and 7% of Olyset(r) Net were reported to have been washed at least once. At month 36 months, about 17% and 21% of Olyset(r) Plus and Olyset(r) Net\n", + "respectfully had been washed at least once. LLINs are usually recommended to be washed at most every 3 months [5], although this frequency depends on local cultural practices and water availability. Different net washing frequencies have been reported in other studies spanning from a high of 8 washes per month in Mali [27] to 4-7 times in Tanzania [28] to a low average of 1.5 washes per year in Uganda [29]. In coastal Kenya, on average nets were washed twice in 6 months, with blue colour nets least often washed than white or green colour nets, and older nets washed more frequently [30]. In western Kenya lowlands, three quarter of nets were washed once within 3 months and a third of them were dried under the sun [31]. The main reasons for low reported wash rates during the annual surveys in our study could be attributed to net users' poor recall of the net washing frequencies, and people's apprehension that washing of nets reduce net efficacy, although there was no water scarcity in the trial area being located in a rice irrigation area.\n", + "\n", + "The study participants reported experiencing certain transient adverse effects during the first two days of use of nets, but these could be prompted reactions since the community members had been informed about the possibility of such effects at the time of net distribution. The higher side effects from use of Olyset(r) Plus is in line with the higher release of permethrin as mentioned above. Users resorted to ventilating their nets in direct sunlight to reduce the effects although our project team had advised to dry up and keep the nets under shade. Ventilating new nets or drying washed nets under direct sunlight might have contributed to a significant reduction in active ingredient content and bio-efficacy of nets.\n", + "\n", + "At the end of the 3-year period, among the two cohorts of 250 nets each, only about 9% Olyset(r) Plus and about 14% Olyset(r) Net were reported to have been lost showing a high net survivorship. These results are in line with the expected 75% net survivorship rate reported by the NetCALC 3-year serviceable prediction model [32]. Previous studies have reported varying rate of net survivorship in African countries, such as 58% nets were lost within two years in Rwanda [33], only 39% of distributed nets remained both present and in serviceable physical condition 2-4 years after a mass campaign in Tanzania [34], but in Western Uganda an estimated attrition rate of just 12% after three years of use was observed for a polyester net [35]. In four African countries of Mozambique, Nigeria, DRC and Zanzibar, Tanzania, survival in serviceable condition of polyethylene and polyester LLINs after 31-37 months of use varied between different sites from 17 to 80% with median survival from 1.6 to 5.3 years [36]. In our study, the observed low attrition rate of nets appears to be also due to the 'Hawthorne effect' as the households included in the two cohorts of nets were visited every 6 or 12 months to inspect the nets. So, the awareness among study participants that the nets were regularly being followed could have modified their behaviour in favour of more careful upkeep and maintenance of the nets and as such may have been a limitation in this study.\n", + "\n", + "Studies have shown that despite small to medium size holes (64 < PHI < 642), LLINs are still protective against mosquito bites due to the excito-repellent effects of insecticides [35]. However, the nets may become ineffective when the overall hole area in nets reaches a certain threshold [37]. In our study, both Olyset(r) Plus and Olyset(r) Net recorded high fabric integrity up to the 3-year trial period. At 12 months after distribution, 78.1% of Olyset Plus and 63.8% of Olyset(r) Net were in good/acceptable condition, 12.3% Olyset(r) Plus and 30.5% Olyset(r) Net were in serviceable condition, while 9.4% Olyset(r) Plus and 5.6% Olyset(r) Net were completely torn and required to be replaced. At the end of the 3-year trial period, 49.5% of Olyset(r) Plus and 44.9% of Olyset(r) Net were in good/acceptable condition, 27.1% Olyset(r) Plus and 32.8% Olyset(r) Net in serviceable condition, while 23.2% Olyset(r) Plus and 22.2% Olyset(r) Net were completely torn and required replacement.\n", + "\n", + "Although Olyset(r) Net retained a higher permethrin content that Olyset(r) Plus, the latter showed longer duration of efficacy than the former, i.e., 18 months compared with 12 months above the WHO efficacy cut off, and higher efficacy thereafter i.e., the efficacy of Olyset(r) Plus declined to 42% at the end of 3-year trial period and that of Olyset(r) Net to 36% over the same period. This could be attributed to higher release of permethrin into the netting surface, and also because PBO can make nets perform better even against susceptible mosquitoes. Pyrethroid-PBO nets have previously been associated with higher mosquito mortality and lower blood-feeding rates in areas of high-level insecticide resistance than were non-PBO LLINs [38, 39]. Although in our study we did not test nets with a pyrethroid resistant mosquito strain, it is likely that the fast decline of PBO in Olyset(r) Plus was caused by the inappropriate exposure to sunlight, as well as the normal loss through washing would have reduced efficacy against resistant mosquitoes in the same way that it reduced efficacy against the susceptible mosquitoes tested here.\n", + "\n", + "Appropriate testing guidelines and field studies are thus required to evaluate the operational effectiveness of PBO nets against pyrethroid resistant mosquitoes and considering the PBO retention and release properties. The revised WHO LLIN guidelines should clarify for how long PBO nets should be effective and if the \n", + "current WHO efficacy criteria for a 3-year LLIN should be reduced to fit the chemistry.\n", + "\n", + "A limitation of our trial was that we did not evaluate efficacy of Olysset(r) Plus against resistant _An. gambling_ mosquitoes. Instead, we tested its efficacy for the presence of permethrin alone using a susceptible malaria vector strain, although inclusion of PBO in nets has the potential of increasing insecticidal efficacy due to increased cuticular penetration and presence of P450s in susceptible insects. There is thus a need for suitable testing guidelines and a much more validation of the impact of PBO in pyrethroid-PBO nets.\n", + "\n", + "header: Bioassays\n", + "\n", + "The insecticidal effect of the nets was evaluated using cone bioassays and where required tunnel tests, as per the WHO guidelines [3]. The bioassays were done at time zero (baseline) and then at every 6 months up to 36 months. On each of the netting pieces cut for bioassays, standard WHO plastic cones were held in place using a plastic manifold and a total of 50 laboratory bred, susceptible Kisumu strain _Anopheles gambiae_ (non-blood fed, 2-5 day old) were exposed for 3 min (5 pieces per net x 5 mosquitoes per test x 2 replicates). After the exposure, the mosquitoes were removed gently from\n", + "the cones and kept separately in plastic cups provided with cotton-wool moistened with 10% glucose solution. Knockdown (KD) was recorded at 60 min and mortality at 24 h after exposure. Mosquitoes exposed to untreated polyester net pieces were used as untreated controls. The bioassays were carried out at 27 +- 2 degC temperature and 80% +- 10% relative humidity. When the mosquito knockdown rate was < 95% and mortality < 80%, the mortality and blood-feeding inhibition effect of such nets was assessed in a tunnel test according to the WHO guidelines [3].\n", + "\n", + "For each net, only one netting piece with which mosquito mortality was found closest to the average mortality in the cone test was tested in the tunnel test [3]. One hundred, non-blood fed female _An. gambiae_ Kisumu mosquitoes, aged 5-8 days were released at the longer end of a tunnel equipment made of glass. At each end of the tunnel, a 25 cm square cage covered with a polyester netting was fitted. At the shorter end of the tunnel, a rabbit which could not move but was available for mosquito biting was placed. The mosquitoes were released at 18:00 and mosquitoes recovered at 09:00 on the following morning. During the test, the tunnel was kept in a place maintained at 27 +- 2 degC and 80% +- 10% relative humidity in full darkness. Another tunnel with untreated netting was used as control. The mean mortality rate and percentage blood-feeding inhibition were recorded, as follows:\n", + "\n", + "1. Mortality = this was measured by pooling the mortality rates of mosquitoes from the two sections of the tunnel. If mortalities in the control recorded more than 10%, the test was considered invalid.\n", + "\n", + "\\[\\text{Blood} - \\text{feeding\\,inhibition}(\\%) = \\left[ {100 \\times \\left( {\\text{Bfc} - \\text{Bfc}} \\right)} \\right]/\\text{Bfc}\\]\n", + "\n", + "where, Bfc is the proportion of blood-fed mosquitoes in the control tunnel and Bft is the proportion of blood-fed mosquitoes in the tunnel with the treated net. The treated net was considered to have met the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90%.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "All the relevant datasets supporting the conclusions of this article are included within the article.\n", + "\n", + "header: Table 7 Comparison of the estimates of the mean pHI and the mean hole area for O lyset® Plus and Olyset® Net\n", + "footer: pHI proportionate Hole Index\n", + "columns: ['Survey month', 'Olyset® Plus - No. of nets inspected', 'Olyset® Plus - Mean hole area in cm2 (± SD)', 'Olyset® Plus - Mean pHI (± SD)', 'Olyset® Net - No. of nets inspected', 'Olyset® Net - Mean hole area in cm2 (± SD)', 'Olyset® Net - Mean pHI (± SD)']\n", + "\n", + "{\"0\":{\"Survey month\":6,\"Olyset\\u00ae Plus - No. of nets inspected\":250,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"52.3 \\u00b1 230.5\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"93.3 \\u00b1 313.6\",\"Olyset\\u00ae Net - No. of nets inspected\":250,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"123.3 \\u00b1 272.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"110.5 \\u00b1 221.8\"},\"1\":{\"Survey month\":12,\"Olyset\\u00ae Plus - No. of nets inspected\":243,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"229.2 \\u00b1 574.2\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"153.6 \\u00b1 437.0\",\"Olyset\\u00ae Net - No. of nets inspected\":249,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"192.5 \\u00b1 376.2\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"156.8 \\u00b1 306.5\"},\"2\":{\"Survey month\":24,\"Olyset\\u00ae Plus - No. of nets inspected\":231,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"389.8 \\u00b1 975.4\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"317.6 \\u00b1 794.7\",\"Olyset\\u00ae Net - No. of nets inspected\":226,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"873.9 \\u00b1 353.4\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"279.4 \\u00b1 428.1\"},\"3\":{\"Survey month\":36,\"Olyset\\u00ae Plus - No. of nets inspected\":228,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"630.7 \\u00b1 1191.8\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"513.9 \\u00b1 970.9\",\"Olyset\\u00ae Net - No. of nets inspected\":216,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"621.5 \\u00b1 1710.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"506.4 \\u00b1 1393.2\"}}\n", + "\n", + "header: Chemical content analysis\n", + "\n", + "The chemical contents in the nets were determined at the beginning and at years 1, 2 and 3 by samplings nets according to the scheme described earlier. The netting pieces cut for determination of active ingredient content were individually rolled up and placed in new, clean and labeled aluminum foils and sent to the Phyto-pharmacy Department of the Walloon Agricultural Research Centre, Gembloux, Belgium, a WHO Collaborating Centre, for chemical analysis.\n", + "\n", + "header: Trial design and study area\n", + "\n", + "We did a prospective, household randomized controlled, large-scale 3-year field trial in a rice irrigation area of Kirinyaga County, Kenya from 2014 to 2017. The area is located about 100 km northeast of Nairobi at the base of Mt Kenya at an altitude of about 1200 m above sea level [14]. It receives mean annual rainfall of 1200-1600 mm with long rains in March-June and short rains in October-December. Due to high densities of mosquitoes year-round, many local people use mosquito nets. Several bed net trials have previously been conducted here for national product registration. Over 80% of the inhabitants of the area have only primary level education. Most of the houses in the area are made of mud walls with roofs of corrugated iron sheets [14].\n", + "\n", + "Four villages of Maendeleo, Huruma, Kiratina and Kasarani were selected by a simple randomization, of which the first two villages were randomly allocated Olyset(r) Plus and the other two villages received Olyset(r) Net (Table 1). In each of the selected village, households were randomly selected.\n", + "\n", + "header: Methods\n", + "\n", + "The field trial was conducted according to the WHO guidelines [3, 11]. The description of the test products and trial procedures are described below.\n", + "\n", + "header: Statistical analysis\n", + "\n", + "The data collected were entered in excel spreadsheets and cross-checked for accuracy. Data were analyzed using STATA version 14.0 (Stata Corporation, College Station, TX, USA). Comparisons between the two types of nets were tested for significance using the Chi-square (kh2) test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. For continuous variables, the arithmetic mean was used depending on the distribution of values compared to a normal distribution.\n", + "\n", + "The nets were considered to have passed the WHO efficacy criteria if the mosquito knockdown rate was found to be >= 95% and/or mortality rate >= 80% in cone bioassays. For the tunnel tests, nets were considered to have passed the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90% [3]. The procedure for calculation of proportionate Hole Index (pHI) for nets is already described above.\n", + "\n", + "header: Abbreviations\n", + "\n", + "_Cl_ Confidence interval; CHW: Community Health Workers; KD: Knockdown; LINK: long-lasting insecticidal nets; NMD: National Malaria Control Programme; pH: proportionate Hole Index; PBO: Papernot by duakoc. Relative standard deviation; SD: Standard deviation; WHO: World Health Organization.\n", + "\n", + "header: Table 6 Progression of hole formation and proportionate Hole Index (pHI) values for Olyset® Plus and Olyset® Net\n", + "footer: None\n", + "columns: ['Net brand', 'Follow up months', 'No. of nets sampled', 'Number of nets with any size holes (%; 95% CI)', 'No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)', 'No. of nets by pHI values (%; 95% CI) - pHI 65–642 (in acceptable condition)', 'No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)']\n", + "\n", + "{\"0\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":6,\"No. of nets sampled\":250,\"Number of nets with any size holes (%; 95% CI)\":\"115 (46.0; 39.9\\u201352.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"219 (87.6; 82.9\\u201391.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"19 (7.6; 4.9\\u201311.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"12 (4.8; 2.8\\u20138.2)\"},\"1\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":12,\"No. of nets sampled\":243,\"Number of nets with any size holes (%; 95% CI)\":\"131 (54.0; 47.6\\u201360.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"190 (78.2; 72.6\\u201382.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"30 (12.4; 8.8\\u201317.0)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"23 (9.5; 6.3\\u201313.8)\"},\"2\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":24,\"No. of nets sampled\":231,\"Number of nets with any size holes (%; 95% CI)\":\"120 (52.0; 45.5\\u201358.3)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"145 (62.8; 56.7\\u201368.7)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"58 (25.1; 19.9\\u201331.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"28 (12.0; 8.5\\u201316.9)\"},\"3\":{\"Net brand\":\"Olyset\\u00ae Plus\",\"Follow up months\":36,\"No. of nets sampled\":228,\"Number of nets with any size holes (%; 95% CI)\":\"144 (63.0; 56.7\\u201369.1)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"113 (49.6; 43.1\\u201356.0)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"62 (27.1; 21.8\\u201333.3)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"53 (23.2; 18.2\\u201329.2)\"},\"4\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":6,\"No. of nets sampled\":250,\"Number of nets with any size holes (%; 95% CI)\":\"157 (63.0; 56.7\\u201368.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"186 (74.4; 68.7\\u201379.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"57 (22.8; 18.1\\u201328.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"7 (2.8; 1.3\\u20135.7)\"},\"5\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":12,\"No. of nets sampled\":249,\"Number of nets with any size holes (%; 95% CI)\":\"169 (68.0; 61.8\\u201373.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"159 (63.9; 57.7\\u201369.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"76 (30.5; 25.1\\u201336.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"14 (5.6; 3.4\\u20139.2)\"},\"6\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":24,\"No. of nets sampled\":226,\"Number of nets with any size holes (%; 95% CI)\":\"147 (65.0; 58.6\\u201370.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"120 (53.1; 46.6\\u201359.5)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"71 (31.4; 25.7\\u201337.7)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"35 (15.5; 11.4\\u201320.8)\"},\"7\":{\"Net brand\":\"Olyset\\u00ae Net\",\"Follow up months\":36,\"No. of nets sampled\":216,\"Number of nets with any size holes (%; 95% CI)\":\"156 (72.0; 65.9\\u201377.9)\",\"No. of nets by pHI values (%; 95% CI) - pHI < 65 (in good condition)\":\"97 (44.9; 38.4\\u201351.6)\",\"No. of nets by pHI values (%; 95% CI) - pHI 65\\u2013642 (in acceptable condition)\":\"71 (32.8; 26.9\\u201339.4)\",\"No. of nets by pHI values (%; 95% CI) - pHI > 642 (too torn nets)\":\"48 (22.2; 17.2\\u201328.2)\"}}\n", + "\n", + "header: Net sampling scheme\n", + "\n", + "The scheme of sampling nets at different time points for bioassays and chemical assays is given in Table 2. The netting pieces were cut from the sampled nets from positions 1-9 for bioassays, and positions HP1-HP5 (at time 0) or positions HP2-HP5 (at time 12, 24 and 36 months) for chemical content assays (Fig. 1). All the nets which were sampled and retrieved at the given survey points were replaced with new ones.\n", + "\n", + "header: Ethics approval and consent to participate: Consent to publication\n", + "\n", + "This paper is published with the authority from the Director General, Kenya Medical Research Institute (KEMR).\n", + "\n", + "header: Background\n", + "\n", + "Insecticide-treated nets reduce child mortality, number of _Plasmodium falciparum_ cases and probably the number of _P. vivax_ cases per person/year [1]. Factory-produced long-lasting insecticide nets (LLINs) are a core malaria intervention for the global elimination of malaria led by the World Health Organization (WHO) [2]. According to the WHO definition, LLINs should retain efficacy against mosquito vectors for a minimum of 20 standard washes under laboratory conditions and a minimum of 3 years of use under field conditions [3]. When used by most of the people in a population, insecticide-treated nets can protect all people in the community, including those who do not sleep under nets [4]. Currently, the National Malaria Control Programme (NMCP) in Kenya has been scaling up the use of LLINs in malaria endemic and high-risk areas to achieve universal coverage, which is defined by WHO as access to one LLIN for every 1.8 persons in each household [2, 5].\n", + "\n", + "Pyrethroid LLINs were the first brands of treated nets recommended by WHO for malaria control. However, it was believed that insecticide resistance was worsening in Africa and would present a major threat to malaria control [6-8], and that pyrethroid-LLINs were becoming less effective at killing mosquitoes in household conditions when pyrethroid resistance develops [9, 10]. Consequently, piperonyl butoxide (PBO) was incorporated in nets with the intension to improve their efficacy against pyrethroid resistant mosquitoes by acting as a metabolic enzyme inhibitor targeting the P450 cytochrome or mixed function oxidases that metabolise pyrethroids and enhance the efficacy of pyrethroid treated nets. Olyset(r) Plus has been prequalified by WHO as the first in class PBO net.\n", + "\n", + "However, at the time of beginning the trial due to the absence of guidelines published by WHO of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated only as a pyrethroid LLIN against a pyrethroid susceptible mosquito strain rather than against a resistant strain. This paper presents results of a 3-year long-term (Phase III) field trial of the candidate product, Olyset(r) Plus, along with a positive control product Olyset(r) Net, in a malaria endemic rice cultivation area of Kirinyaga County, Kenya.\n", + "\n", + "header: Test products\n", + "\n", + "Bioefficacy and physical durability of the Olyset(r) Plus and Olyset(r) Net both manufactured by Sumitomo Chemical were evaluated. The former is a polyethylene mono-filament net incorporated with 2% permethrin corresponding to 20 g permethrin active ingredient (AI)/kg or 800 mg permethrin AI/m\\({}^{2}\\) and 1% PBO (corresponding to 10 g PBO AI/kg or 400 mg PBO AI/m\\({}^{2}\\)). The latter is a polyethylene mono-filament net incorporated with 2% permethrin (w/w) (corresponding to 800 mg permethrin AI/m\\({}^{2}\\)). Olyset(r) Net was recommended in 2009 by the WHO Pesticide Evaluation Scheme (WHOPES) for use in malaria control [12], while Olyset(r) Plus was given interim recommendation by WHO in 2012 with the requirement to evaluate the product in a 3-year long-term trial to confirm its long-lasting efficacy in field [13].\n", + "\n", + "header: Assessment of durability of cohort nets\n", + "\n", + "To monitor durability of nets (i.e. survivorship and changes in physical integrity) during their routine use, 250 each of Olyset(r) Plus and Olyset(r) Net were distributed in separate households (2 nets per household) in the same villages by simple randomization. From these cohorts of nets, all nets available at the households at the time of surveys at 6, 12, 24 and 36 months were inspected for their presence and physical integrity. For this, the nets were retracted from the sleeping places, individually hung up on a rectangular frame held outside the house and inspected for presence of any holes on the side and roof panels. The holes were counted for each net, their diameter was measured, and they were classified in the following categories according to the WHO criteria for hole sizes [3, 11]:\n", + "\n", + "Size A1: 0.5-2 cm diameter, Size A2: 2-10 cm diameter, Size A3: 10-25 cm diameter, Size A4: 25 cm diameter.\n", + "\n", + "The parameters for assessing the integrity of nets included the proportions of Olyset(r) Plus and Olyset(r) Net with any size holes or tears, and the proportionate Hole Index (pHI) for each net, which was calculated as follows [11]:\n", + "\n", + "\\[\\text{pH} = \\left( {1.23 \\times \\text{ No.~of~size~A1~holes}} \\right) + \\left( {28.28 \\times \\text{ No.~of~size~A2~holes}} \\right) + \\left( {240.56 \\times \\text{ No.~of~size~A3~holes}} \\right) + \\left( {706.95 \\times \\text{ No.~of~size~A4~holes}} \\right)\\]\n", + "\n", + "Using the pHI values, Olyset(r) Plus and Olyset(r) Net were categorized as those in 'good condition' (pHI: 0-64), nets in 'acceptable' condition (pHI: 65-642), and torn nets that were likely to provide no protective efficacy (pHI > 642) [15]. The number of nets in 'good' and\n", + "\n", + "Fig. 1: A rectangular net and its individual panels showing positions for cutting netting pieces (positions 1–9 for bioassays; HP1–HPS for chemical assays)\n", + "'acceptable condition' together were taken to estimate the survival of nets over time.\n", + "\n", + "The sampled nets were also inspected for any repairs of holes or tears done by the households. After inspection, the nets were returned to the same sleeping place in the same household.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Results\n", + "\n", + "Among the 1784 participating homesteads with a population of 10 325, a total of 1551 households participated in the study (Table 1). Most of the heads of the households (age: 17-96 years) had received formal education and practiced farming (96.6%).\n", + "\n", + "Out of 100 heads of households with Olyset(r) Plus interviewed for adverse events, 44% reported itching, 4% eye irritation, and 7% unpleasant smell. Among the Olyset(r) Net users, 7% each reported nasal discharge and eye irritation. These were reported to be mild symptoms lasting for one or two days. To reduce these effects, 43% users of Olyset(r) Plus ventilated nets for a day in the open under the sun and 33% under the shade. Among Olyset(r) Net users, similar actions were taken by 44% and 39%, respectively.\n", + "\n", + "header: Funding\n", + "\n", + "The work was funded as a collaborative project by the WHO Pesticide Evaluation Scheme, Geneva, Switzerland.\n", + "\n", + "header: Chemical contents\n", + "\n", + "At time 0 (baseline), the contents of permethrin and PBO in Olyset(r) Plus were within the target tolerance limits of 20 +- 5 g/kg and 10 +- 2.5 g/kg, respectively; while the permethrin content in Olyset(r) Net was also within the target tolerance limit of 20 +- 3 g/kg (Table 5). The within net variation (relative standard deviation, RSD) in permethrin and PBO contents for Olyset(r) Plus at baseline were 2.2% and 3.7%, respectively, and were within the acceptable tolerance limits. The within net variation in the permethrin content in Olyset(r) Net at the baseline was 1.2% and was also within the acceptable tolerance limit. At the end of years 1, 2 and 3 of net usage, the permethrin content in Olyset(r) Plus decreased by 36%, 40% and 52%, and the PBO content showed a marked reduction of 66%, 81% and 87%, respectively. The loss of the permethrin in Olyset(r) Net\n", + "\n", + "\\begin{table}\n", + "\\begin{tabular}{c c c c c c c c} \\hline\n", + "**Survey month** & **No. of** & **Mean 1 h** & **Mean 24 h** & **\\% of nets passed by** & **\\% of nets passed by** & **No. of nets passed by** & **Overall pass rate in** \\\\\n", + "**nets** & **KD (\\%)** & **mortality** & **KD criteria alone(r)** & **mortality criteria** & **requiring tunnel** & **percentage (95\\% CI)(r)** \\\\\n", + "**Olyset(r) Plus** & & & & & & & \\\\\n", + "0 & 30 & 99.5 & 100 & 100 & 100 & 0 & 100 (80–100) \\\\\n", + "6 & 30 & 97.0 & 88.2 & 83.3 & 73.3 & 4 & 96.7 (82–99) \\\\\n", + "12 & 30 & 9\n", + "\n", + "4.2 & 74.3 & 76.7 & 43.3 & 6 & 93.3 (78–99) \\\\\n", + "18 & 30 & 82.9 & 65.9 & 36.7 & 36.7 & 16 & 86.7 (69–96) \\\\\n", + "24 & 30 & 77.4 & 75.3 & 0.0 & 46.7 & 15 & 76.7 (57–90) \\\\\n", + "30 & 30 & 60.4 & 56.9 & 0.0 & 10.0 & 27 & 70.0 (50–85) \\\\\n", + "**Olyset(r) Net** & & & & & & & \\\\\n", + "0 & 30 & 99.1 & 100 & 100 & 100 & 0 & 100 (88–100) \\\\\n", + "6 & 30 & 96.9 & 79.8 & 80.0 & 60.0 & 4 & 93.3 (77–99) \\\\\n", + "12 & 30 & 68.5 & 54.7 & 20.0 & 3.3 & 24 & 83.3 (65–94) \\\\\n", + "18 & 30 & 72.1 & 50.2 & 30.0 & 20.0 & 18 & 73.3 (54–87) \\\\\n", + "24 & 30 & 79.8 & 68.9 & 3.3 & 46.7 & 18 & 66.7 (47–83) \\\\\n", + "30 & 30 & 50.9 & 50.9 & 0.0 & 3.3 & 29 & 60.0\n", + "\n", + "\n", + "was 16% at year 1 and did not change much at year 2 and 3 (19 and 24%, respectively).\n", + "\n", + "header: Abbreviations\n", + "\n", + "_Cl_ Confidence interval; CHW: Community Health Workers; KD: Knockdown; LINK: long-lasting insecticidal nets; NMD: National Malaria Control Programme; pH: proportionate Hole Index; PBO: Papernot by duakoc. Relative standard deviation; SD: Standard deviation; WHO: World Health Organization.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "All the relevant datasets supporting the conclusions of this article are included within the article.\n", + "\n", + "header: Net sampling scheme\n", + "\n", + "The scheme of sampling nets at different time points for bioassays and chemical assays is given in Table 2. The netting pieces were cut from the sampled nets from positions 1-9 for bioassays, and positions HP1-HP5 (at time 0) or positions HP2-HP5 (at time 12, 24 and 36 months) for chemical content assays (Fig. 1). All the nets which were sampled and retrieved at the given survey points were replaced with new ones.\n", + "\n", + "header: Conclusions\n", + "\n", + "Olysset(r) Plus did not meet the WHO criteria for efficacy of LLINs in this 3-year Phase III study, which could have resulted from faster loss of permethrin and PBO and users not following the manufacturer's recommendations to not leave the nets under direct sunlight. Better community education is therefore essential to ensure appropriate use and upkeep of nets in areas with LLIN-based interventions in order to maximize their operational impact on the prevention, control and elimination of malaria. Failure to do this would result in operational implications requiring early replenishment with new nets to ensure that such an LLIN based malaria intervention remains effective.\n", + "\n", + "header: Table 5 Mean permethrin and PBO contents (relative standard deviation) in nets at baseline, and at 12, 24 and 36 months\n", + "footer: a Within net variation (relative standard deviation) in permethrin and PBO contents at baseline was 2.2% and 3.7%, respectively (Olyset® Plus). – not applicable, PBOpiperonyl butoxideb Within net variation (relative standard deviation) in permethrin content at baseline was 1.2% (Olyset® Net)\n", + "columns: ['Sampling month', 'Olyset® Plus - Mean permethrin content in g/kg (95% CI)', 'Olyset® Plus - Permethrin content lost (%)', 'Olyset® Plus - PBO content in g/ kg (95% CI)', 'Olyset® Plus - PBO content lost (%)', 'Olyset® Net - Mean permethrin content in g/kg (95% CI)', 'Olyset® Net - Permethrin content lost (%)']\n", + "\n", + "{\"0\":{\"Sampling month\":0,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"18.4 (18.3\\u201318.6)a\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"8.98 (8.86\\u20139.10)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"19.6 (19.5\\u201319.7)b\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"\\u2013\"},\"1\":{\"Sampling month\":12,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.7 (10.6\\u201312.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"36\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"3.01 (2.30\\u20133.80)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"66\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"16.5 (16.0\\u201317.0)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"16\"},\"2\":{\"Sampling month\":24,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.1 (10.2\\u201312.0)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"40\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.70 (1.20\\u20132.20)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"81\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"15.9 (15.1\\u201316.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"19\"},\"3\":{\"Sampling month\":36,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"8.8 (7.9\\u20139.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"52\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.16 (0.8\\u20131.5)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"87\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"14.8 (13.9\\u201315.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"24\"}}\n", + "\n", + "header: Methods\n", + "\n", + "The field trial was conducted according to the WHO guidelines [3, 11]. The description of the test products and trial procedures are described below.\n", + "\n", + "header: Recording of adverse events\n", + "\n", + "One month after net distribution, a survey was carried out to record adverse events reported by net users, and overall experiences of net usage. A pre-tested questionnaire adapted from the WHO guidelines [11] was administered to the heads or an adult person of the households after obtaining informed consent.\n", + "\n", + "header: Chemical content analysis\n", + "\n", + "The chemical contents in the nets were determined at the beginning and at years 1, 2 and 3 by samplings nets according to the scheme described earlier. The netting pieces cut for determination of active ingredient content were individually rolled up and placed in new, clean and labeled aluminum foils and sent to the Phyto-pharmacy Department of the Walloon Agricultural Research Centre, Gembloux, Belgium, a WHO Collaborating Centre, for chemical analysis.\n", + "\n", + "header: Statistical analysis\n", + "\n", + "The data collected were entered in excel spreadsheets and cross-checked for accuracy. Data were analyzed using STATA version 14.0 (Stata Corporation, College Station, TX, USA). Comparisons between the two types of nets were tested for significance using the Chi-square (kh2) test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. For continuous variables, the arithmetic mean was used depending on the distribution of values compared to a normal distribution.\n", + "\n", + "The nets were considered to have passed the WHO efficacy criteria if the mosquito knockdown rate was found to be >= 95% and/or mortality rate >= 80% in cone bioassays. For the tunnel tests, nets were considered to have passed the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90% [3]. The procedure for calculation of proportionate Hole Index (pHI) for nets is already described above.\n", + "\n", + "header: Table 3 Frequency of washing nets by the users at different time points\n", + "footer: The reported wash rate was zero at 6 months\n", + "columns: ['Period (months)', 'Olyset® Plus - No. of nets sampled', 'Olyset® Plus - No. of nets washed once (%)', 'Olyset® Plus - No. of nets washed twice (%)', 'Olyset® Plus - No. of nets washed > 2 times (%)', 'Olyset® Net - No. of nets sampled', 'Olyset® Net - No. of nets washed at once (%)', 'Olyset® Net - No. of nets washed twice (%)', 'Olyset® Net - No. of nets washed > 2 times (%)']\n", + "\n", + "{\"0\":{\"Period (months)\":6,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"\\u2013\"},\"1\":{\"Period (months)\":12,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"1 (3)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"2\":{\"Period (months)\":24,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"4 (12)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"1 (3)\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"3 (11)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"3\":{\"Period (months)\":36,\"Olyset\\u00ae Plus - No. of nets sampled\":50,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"9 (17)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"5 (10)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"3 (6)\",\"Olyset\\u00ae Net - No. of nets sampled\":50,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"11 (21)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"8 (6)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"3 (6)\"}}\n", + "\n", + "header: Household net washing practices\n", + "\n", + "The net washing practices by households were evaluated using a questionnaire at 6, 12, 24 and 36 months after net distribution.\n", + "\n", + "header: Bioassays\n", + "\n", + "The insecticidal effect of the nets was evaluated using cone bioassays and where required tunnel tests, as per the WHO guidelines [3]. The bioassays were done at time zero (baseline) and then at every 6 months up to 36 months. On each of the netting pieces cut for bioassays, standard WHO plastic cones were held in place using a plastic manifold and a total of 50 laboratory bred, susceptible Kisumu strain _Anopheles gambiae_ (non-blood fed, 2-5 day old) were exposed for 3 min (5 pieces per net x 5 mosquitoes per test x 2 replicates). After the exposure, the mosquitoes were removed gently from\n", + "the cones and kept separately in plastic cups provided with cotton-wool moistened with 10% glucose solution. Knockdown (KD) was recorded at 60 min and mortality at 24 h after exposure. Mosquitoes exposed to untreated polyester net pieces were used as untreated controls. The bioassays were carried out at 27 +- 2 degC temperature and 80% +- 10% relative humidity. When the mosquito knockdown rate was < 95% and mortality < 80%, the mortality and blood-feeding inhibition effect of such nets was assessed in a tunnel test according to the WHO guidelines [3].\n", + "\n", + "For each net, only one netting piece with which mosquito mortality was found closest to the average mortality in the cone test was tested in the tunnel test [3]. One hundred, non-blood fed female _An. gambiae_ Kisumu mosquitoes, aged 5-8 days were released at the longer end of a tunnel equipment made of glass. At each end of the tunnel, a 25 cm square cage covered with a polyester netting was fitted. At the shorter end of the tunnel, a rabbit which could not move but was available for mosquito biting was placed. The mosquitoes were released at 18:00 and mosquitoes recovered at 09:00 on the following morning. During the test, the tunnel was kept in a place maintained at 27 +- 2 degC and 80% +- 10% relative humidity in full darkness. Another tunnel with untreated netting was used as control. The mean mortality rate and percentage blood-feeding inhibition were recorded, as follows:\n", + "\n", + "1. Mortality = this was measured by pooling the mortality rates of mosquitoes from the two sections of the tunnel. If mortalities in the control recorded more than 10%, the test was considered invalid.\n", + "\n", + "\\[\\text{Blood} - \\text{feeding\\,inhibition}(\\%) = \\left[ {100 \\times \\left( {\\text{Bfc} - \\text{Bfc}} \\right)} \\right]/\\text{Bfc}\\]\n", + "\n", + "where, Bfc is the proportion of blood-fed mosquitoes in the control tunnel and Bft is the proportion of blood-fed mosquitoes in the tunnel with the treated net. The treated net was considered to have met the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90%.\n", + "\n", + "header: Competing interests\n", + "\n", + "The authors declare no competing interests. As a collaborative project, RSY, a WHO professional staff, reviewed and agreed with the study design and contributed to writing the manuscript.\n", + "\n", + "header: Net survivorship and fabric integrity\n", + "\n", + "At the end of year 1, Olyset(r) Plus reported survivorship rates of 97.2% (_n_ = 243), with Olyset(r) Net recording 99.6% (_n_ = 249). At year 2, there were 92.4% (_n_ = 231) Olyset(r) Plus and 90.4% (_n_ = 226) of Olyset(r) Nets still surviving. At the end of the 3 years of study, the survivorship rates for Olyset(r) Plus and Olyset(r) Net were at 91.2% (_n_ = 228) and 86.4% (_n_ = 216), respectively.\n", + "\n", + "The pH values of the nets showed that 87.6% of Olyset(r) Plus were in good condition at 6 months, 7.6% were in acceptable/serviceable condition, and 4.8% were too torn (Table 6). These proportions increased gradually during the study and at 36 months, 49.6% were in good condition, 27.1% in acceptable/serviceable condition, and 23.2% were too torn. A similar trend of attrition was seen for Olyset(r) Net, with 44.9%, 32.8% and 22.2% nets being in good condition, acceptable condition or too torn at 36 months, respectively.\n", + "\n", + "Data on the comparison of estimates of the mean pH values and the mean hole area for Olyset(r) Plus and Olyset(r) Net are given in Table 7.\n", + "\n", + "The proportion of Olyset(r) Plus nets having been repaired by households increased from 6% (95% CI: 3.4-9.7) at month 6 to 17.9% (95% CI: 13.2-23.6) at months\n", + "\n", + "36, while that of Olyset(r) Net increased from 5% (95% CI: 2.8-8.7) to 12% (95% CI: 8.0-17.1) in the same period.\n", + "\n", + "\n", + "Olyset(r) Net incorporated with permethrin alone was included in the trial as a positive control net. A net was considered to have passed the WHO efficacy criteria if it caused >= 80% mortality and/or >= 95% knockdown in cone bioassays or >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests [3]. Most of the Olyset(r) Plus and Olyset(r) Net lost the knockdown effect during the 24-36 months follow-up. Overall, neither Olyset(r) Plus nor Olyset(r) Net performed as they should even after 2 years and did not meet the WHO efficacy criteria of a 3-year LLIN.\n", + "\n", + "Previous studies have demonstrated enhanced efficacy of Olyset(r) Plus against resistant _An. gambiae_ attributable to PBO [16-18]. A recent randomised controlled field trial in Tanzania with high levels of pyrethroid resistance in malaria vectors _An. gambiae_ and _An. arabiensis_ also attributed higher impact on malaria of Olyset(r) Plus over Olyset(r) Net to the presence of PBO that was sustained after 21 months of the trial [19]. However, there is a view that these two nets are not comparable and that the higher efficacy of Olyset(r) Plus was due to much more bleed rate of permethrin into its surface and not due to PBO that was incorporated in small amount and dwindled rapidly over time [20]. In this trial, Olyset(r) Plus was evaluated as a pyrethroid LLIN since there were no guidelines published by WHO of how to evaluate PBO nets at the time of this trial, and considering the manufacturer's product claim.\n", + "\n", + "While, it was reported that high intensity insecticide resistance will reduce the level of personal and community protection of pyrethroid LLINs [21] and PBO nets could be effective against malaria in some resistance scenarios [22], a recent WHO multi-country study found no evidence of an association between insecticide resistance and malaria infection prevalence or incidence [23]. There is also a view that at present there is limited evidence that recent reduction in the impact on malaria in sub-Saharan Africa was due to increasing resistance in malaria vectors to the pyrethroid insecticides used in treating nets [24].\n", + "\n", + "The initial permethrin content in both nets was more or less similar but the enhanced efficacy of Olyset(r) Plus was mainly due to the higher release of permethrin into the surface fibres and presence of PBO than Olyset(r) Net. The gradual decline in efficacy of both nets is consistent with the loss of permethrin and PBO in Olyset(r) Plus and of permethrin in Olyset(r) Net over time during their routine usage by the community. The decline in permethrin content was more rapid in Olyset(r) Plus than Olyset(r) Net. This explains why Olyset(r) Plus having permethrin and PBO was relatively superior than Olyset(r) Net initially, i.e., until 18 months, but after that their performance was below the WHO efficacy cut off. While the PBO content in Olyset(r) Plus at the baseline was within the target tolerance limits, 66% of the PBO content was lost within one year of net usage, and the loss increased to 81% at year 2 and 87% at year 3. Previous studies have reported that the insecticidal content in LLINs decay over time [6]. While permethrin and PBO contents may be lost due to natural decay and evaporation, washing of nets frequently and drying them under direct sunlight are known to contribute to such losses [25, 26]. In this study, despite manufacturer's label recommendation not to expose nets to direct sunlight, a good proportion of both type of nets were exposed to bright sunlight before use and left to dry in the sun after washing. This would have reduced both permethrin and PBO contents and consequently reduced the biological efficacy of these nets and should be borne in mind when considering these results. Even though Kisumu strain was tested, the loss of PBO would have affected efficacy of Olyset Plus as PBO can improve net performance even against susceptible strains, which too have P450s, and PBO is also known to act as a good solvent that can aid cuticular penetration and help improve insecticidal activity. The operational implication of rapid loss of PBO is that Olyset(r) Plus was unlikely to remain effective even against pyrethroid resistant mosquitoes for 2 or 3 years of use.\n", + "\n", + "Community net wash practices were comparable between the two nets. During the first 6 months, no net was reported to have been washed. At 1 year, 7% of Olyset(r) Plus and 7% of Olyset(r) Net were reported to have been washed at least once. At month 36 months, about 17% and 21% of Olyset(r) Plus and Olyset(r) Net\n", + "respectfully had been washed at least once. LLINs are usually recommended to be washed at most every 3 months [5], although this frequency depends on local cultural practices and water availability. Different net washing frequencies have been reported in other studies spanning from a high of 8 washes per month in Mali [27] to 4-7 times in Tanzania [28] to a low average of 1.5 washes per year in Uganda [29]. In coastal Kenya, on average nets were washed twice in 6 months, with blue colour nets least often washed than white or green colour nets, and older nets washed more frequently [30]. In western Kenya lowlands, three quarter of nets were washed once within 3 months and a third of them were dried under the sun [31]. The main reasons for low reported wash rates during the annual surveys in our study could be attributed to net users' poor recall of the net washing frequencies, and people's apprehension that washing of nets reduce net efficacy, although there was no water scarcity in the trial area being located in a rice irrigation area.\n", + "\n", + "The study participants reported experiencing certain transient adverse effects during the first two days of use of nets, but these could be prompted reactions since the community members had been informed about the possibility of such effects at the time of net distribution. The higher side effects from use of Olyset(r) Plus is in line with the higher release of permethrin as mentioned above. Users resorted to ventilating their nets in direct sunlight to reduce the effects although our project team had advised to dry up and keep the nets under shade. Ventilating new nets or drying washed nets under direct sunlight might have contributed to a significant reduction in active ingredient content and bio-efficacy of nets.\n", + "\n", + "At the end of the 3-year period, among the two cohorts of 250 nets each, only about 9% Olyset(r) Plus and about 14% Olyset(r) Net were reported to have been lost showing a high net survivorship. These results are in line with the expected 75% net survivorship rate reported by the NetCALC 3-year serviceable prediction model [32]. Previous studies have reported varying rate of net survivorship in African countries, such as 58% nets were lost within two years in Rwanda [33], only 39% of distributed nets remained both present and in serviceable physical condition 2-4 years after a mass campaign in Tanzania [34], but in Western Uganda an estimated attrition rate of just 12% after three years of use was observed for a polyester net [35]. In four African countries of Mozambique, Nigeria, DRC and Zanzibar, Tanzania, survival in serviceable condition of polyethylene and polyester LLINs after 31-37 months of use varied between different sites from 17 to 80% with median survival from 1.6 to 5.3 years [36]. In our study, the observed low attrition rate of nets appears to be also due to the 'Hawthorne effect' as the households included in the two cohorts of nets were visited every 6 or 12 months to inspect the nets. So, the awareness among study participants that the nets were regularly being followed could have modified their behaviour in favour of more careful upkeep and maintenance of the nets and as such may have been a limitation in this study.\n", + "\n", + "Studies have shown that despite small to medium size holes (64 < PHI < 642), LLINs are still protective against mosquito bites due to the excito-repellent effects of insecticides [35]. However, the nets may become ineffective when the overall hole area in nets reaches a certain threshold [37]. In our study, both Olyset(r) Plus and Olyset(r) Net recorded high fabric integrity up to the 3-year trial period. At 12 months after distribution, 78.1% of Olyset Plus and 63.8% of Olyset(r) Net were in good/acceptable condition, 12.3% Olyset(r) Plus and 30.5% Olyset(r) Net were in serviceable condition, while 9.4% Olyset(r) Plus and 5.6% Olyset(r) Net were completely torn and required to be replaced. At the end of the 3-year trial period, 49.5% of Olyset(r) Plus and 44.9% of Olyset(r) Net were in good/acceptable condition, 27.1% Olyset(r) Plus and 32.8% Olyset(r) Net in serviceable condition, while 23.2% Olyset(r) Plus and 22.2% Olyset(r) Net were completely torn and required replacement.\n", + "\n", + "Although Olyset(r) Net retained a higher permethrin content that Olyset(r) Plus, the latter showed longer duration of efficacy than the former, i.e., 18 months compared with 12 months above the WHO efficacy cut off, and higher efficacy thereafter i.e., the efficacy of Olyset(r) Plus declined to 42% at the end of 3-year trial period and that of Olyset(r) Net to 36% over the same period. This could be attributed to higher release of permethrin into the netting surface, and also because PBO can make nets perform better even against susceptible mosquitoes. Pyrethroid-PBO nets have previously been associated with higher mosquito mortality and lower blood-feeding rates in areas of high-level insecticide resistance than were non-PBO LLINs [38, 39]. Although in our study we did not test nets with a pyrethroid resistant mosquito strain, it is likely that the fast decline of PBO in Olyset(r) Plus was caused by the inappropriate exposure to sunlight, as well as the normal loss through washing would have reduced efficacy against resistant mosquitoes in the same way that it reduced efficacy against the susceptible mosquitoes tested here.\n", + "\n", + "Appropriate testing guidelines and field studies are thus required to evaluate the operational effectiveness of PBO nets against pyrethroid resistant mosquitoes and considering the PBO retention and release properties. The revised WHO LLIN guidelines should clarify for how long PBO nets should be effective and if the \n", + "current WHO efficacy criteria for a 3-year LLIN should be reduced to fit the chemistry.\n", + "\n", + "A limitation of our trial was that we did not evaluate efficacy of Olysset(r) Plus against resistant _An. gambling_ mosquitoes. Instead, we tested its efficacy for the presence of permethrin alone using a susceptible malaria vector strain, although inclusion of PBO in nets has the potential of increasing insecticidal efficacy due to increased cuticular penetration and presence of P450s in susceptible insects. There is thus a need for suitable testing guidelines and a much more validation of the impact of PBO in pyrethroid-PBO nets.\n", + "\n", + "header: Table 7 Comparison of the estimates of the mean pHI and the mean hole area for O lyset® Plus and Olyset® Net\n", + "footer: pHI proportionate Hole Index\n", + "columns: ['Survey month', 'Olyset® Plus - No. of nets inspected', 'Olyset® Plus - Mean hole area in cm2 (± SD)', 'Olyset® Plus - Mean pHI (± SD)', 'Olyset® Net - No. of nets inspected', 'Olyset® Net - Mean hole area in cm2 (± SD)', 'Olyset® Net - Mean pHI (± SD)']\n", + "\n", + "{\"0\":{\"Survey month\":6,\"Olyset\\u00ae Plus - No. of nets inspected\":250,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"52.3 \\u00b1 230.5\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"93.3 \\u00b1 313.6\",\"Olyset\\u00ae Net - No. of nets inspected\":250,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"123.3 \\u00b1 272.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"110.5 \\u00b1 221.8\"},\"1\":{\"Survey month\":12,\"Olyset\\u00ae Plus - No. of nets inspected\":243,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"229.2 \\u00b1 574.2\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"153.6 \\u00b1 437.0\",\"Olyset\\u00ae Net - No. of nets inspected\":249,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"192.5 \\u00b1 376.2\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"156.8 \\u00b1 306.5\"},\"2\":{\"Survey month\":24,\"Olyset\\u00ae Plus - No. of nets inspected\":231,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"389.8 \\u00b1 975.4\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"317.6 \\u00b1 794.7\",\"Olyset\\u00ae Net - No. of nets inspected\":226,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"873.9 \\u00b1 353.4\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"279.4 \\u00b1 428.1\"},\"3\":{\"Survey month\":36,\"Olyset\\u00ae Plus - No. of nets inspected\":228,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"630.7 \\u00b1 1191.8\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"513.9 \\u00b1 970.9\",\"Olyset\\u00ae Net - No. of nets inspected\":216,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"621.5 \\u00b1 1710.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"506.4 \\u00b1 1393.2\"}}\n", + "\n", + "header: Test products\n", + "\n", + "Bioefficacy and physical durability of the Olyset(r) Plus and Olyset(r) Net both manufactured by Sumitomo Chemical were evaluated. The former is a polyethylene mono-filament net incorporated with 2% permethrin corresponding to 20 g permethrin active ingredient (AI)/kg or 800 mg permethrin AI/m\\({}^{2}\\) and 1% PBO (corresponding to 10 g PBO AI/kg or 400 mg PBO AI/m\\({}^{2}\\)). The latter is a polyethylene mono-filament net incorporated with 2% permethrin (w/w) (corresponding to 800 mg permethrin AI/m\\({}^{2}\\)). Olyset(r) Net was recommended in 2009 by the WHO Pesticide Evaluation Scheme (WHOPES) for use in malaria control [12], while Olyset(r) Plus was given interim recommendation by WHO in 2012 with the requirement to evaluate the product in a 3-year long-term trial to confirm its long-lasting efficacy in field [13].\n", + "\n", + "header: Assessment of durability of cohort nets\n", + "\n", + "To monitor durability of nets (i.e. survivorship and changes in physical integrity) during their routine use, 250 each of Olyset(r) Plus and Olyset(r) Net were distributed in separate households (2 nets per household) in the same villages by simple randomization. From these cohorts of nets, all nets available at the households at the time of surveys at 6, 12, 24 and 36 months were inspected for their presence and physical integrity. For this, the nets were retracted from the sleeping places, individually hung up on a rectangular frame held outside the house and inspected for presence of any holes on the side and roof panels. The holes were counted for each net, their diameter was measured, and they were classified in the following categories according to the WHO criteria for hole sizes [3, 11]:\n", + "\n", + "Size A1: 0.5-2 cm diameter, Size A2: 2-10 cm diameter, Size A3: 10-25 cm diameter, Size A4: 25 cm diameter.\n", + "\n", + "The parameters for assessing the integrity of nets included the proportions of Olyset(r) Plus and Olyset(r) Net with any size holes or tears, and the proportionate Hole Index (pHI) for each net, which was calculated as follows [11]:\n", + "\n", + "\\[\\text{pH} = \\left( {1.23 \\times \\text{ No.~of~size~A1~holes}} \\right) + \\left( {28.28 \\times \\text{ No.~of~size~A2~holes}} \\right) + \\left( {240.56 \\times \\text{ No.~of~size~A3~holes}} \\right) + \\left( {706.95 \\times \\text{ No.~of~size~A4~holes}} \\right)\\]\n", + "\n", + "Using the pHI values, Olyset(r) Plus and Olyset(r) Net were categorized as those in 'good condition' (pHI: 0-64), nets in 'acceptable' condition (pHI: 65-642), and torn nets that were likely to provide no protective efficacy (pHI > 642) [15]. The number of nets in 'good' and\n", + "\n", + "Fig. 1: A rectangular net and its individual panels showing positions for cutting netting pieces (positions 1–9 for bioassays; HP1–HPS for chemical assays)\n", + "'acceptable condition' together were taken to estimate the survival of nets over time.\n", + "\n", + "The sampled nets were also inspected for any repairs of holes or tears done by the households. After inspection, the nets were returned to the same sleeping place in the same household.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Village trial\",\"Country\":\"Kenya\",\"Site\":\"Kirinyaga County\",\"Start_year\":2014,\"End_month\":12,\"End_year\":2017}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Concentration\": {\"title\": \"Insecticide concentration (measured mean)\", \"description\": \"Enter the measured concentration of the insecticide(s) for the active ingredient(s), in the net type.If multiple sides (e.g. roof or sides) of the net were tested, provide the mean value.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}, \"median_pHI\": {\"title\": \"Median Proportional hole index\", \"description\": \"Usually provided only for those nets with holes. This value should be provided in the text or a table of the paper. If it requires your own calculations, skip it. \\nDefinition: Numerator is total number of each LN product with at least one hole of size 1\\u20134; Denominator is Total number of each LN product found and assessed in surveyed households.\"}, \"pHI_lower_IQR\": {\"title\": \"pHI lower inter-quartile\", \"description\": \"Lower inter-quartile range of `pHI_median`.\"}, \"pHI_upper_IQR\": {\"title\": \"pHI upper inter-quartile\", \"description\": \"Upper inter-quartile range of `pHI_median`.\"}, \"pHI_upper_bound\": {\"title\": \"Phi Upper Bound\", \"description\": \"lowest pHI detected.\"}, \"median_hole_size\": {\"title\": \"Median hole surface area in cm^2\", \"description\": \"Usually provided only for those nets with holes. This value should be provided in the text or a table of the paper. If it requires your own calculations, skip it.\"}, \"hole_size_upper_IQR\": {\"title\": \"hole size upper inter-quartile\", \"description\": \"Upper inter-quartile range of `hole_size_median`.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Olyset\\u00ae Plus\",\"Insecticide\":\"Permethrin, Piperonyl Butoxide\",\"Concentration_initial\":\"18.4, 8.98\",\"Concentration\":\"8.8, 1.16\",\"pHI_category\":\"Good\",\"median_pHI\":49.6,\"pHI_lower_IQR\":43.1,\"pHI_upper_IQR\":56.0,\"pHI_upper_bound\":642.0,\"median_hole_size\":52.3,\"hole_size_upper_IQR\":230.5},\"N02\":{\"Net_type\":\"Olyset\\u00ae Net\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"19.6\",\"Concentration\":\"14.8\",\"pHI_category\":\"Good\",\"median_pHI\":44.9,\"pHI_lower_IQR\":38.4,\"pHI_upper_IQR\":51.6,\"pHI_upper_bound\":642.0,\"median_hole_size\":123.3,\"hole_size_upper_IQR\":272.3}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Results\n", + "\n", + "Among the 1784 participating homesteads with a population of 10 325, a total of 1551 households participated in the study (Table 1). Most of the heads of the households (age: 17-96 years) had received formal education and practiced farming (96.6%).\n", + "\n", + "Out of 100 heads of households with Olyset(r) Plus interviewed for adverse events, 44% reported itching, 4% eye irritation, and 7% unpleasant smell. Among the Olyset(r) Net users, 7% each reported nasal discharge and eye irritation. These were reported to be mild symptoms lasting for one or two days. To reduce these effects, 43% users of Olyset(r) Plus ventilated nets for a day in the open under the sun and 33% under the shade. Among Olyset(r) Net users, similar actions were taken by 44% and 39%, respectively.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "All the relevant datasets supporting the conclusions of this article are included within the article.\n", + "\n", + "header: Chemical contents\n", + "\n", + "At time 0 (baseline), the contents of permethrin and PBO in Olyset(r) Plus were within the target tolerance limits of 20 +- 5 g/kg and 10 +- 2.5 g/kg, respectively; while the permethrin content in Olyset(r) Net was also within the target tolerance limit of 20 +- 3 g/kg (Table 5). The within net variation (relative standard deviation, RSD) in permethrin and PBO contents for Olyset(r) Plus at baseline were 2.2% and 3.7%, respectively, and were within the acceptable tolerance limits. The within net variation in the permethrin content in Olyset(r) Net at the baseline was 1.2% and was also within the acceptable tolerance limit. At the end of years 1, 2 and 3 of net usage, the permethrin content in Olyset(r) Plus decreased by 36%, 40% and 52%, and the PBO content showed a marked reduction of 66%, 81% and 87%, respectively. The loss of the permethrin in Olyset(r) Net\n", + "\n", + "\\begin{table}\n", + "\\begin{tabular}{c c c c c c c c} \\hline\n", + "**Survey month** & **No. of** & **Mean 1 h** & **Mean 24 h** & **\\% of nets passed by** & **\\% of nets passed by** & **No. of nets passed by** & **Overall pass rate in** \\\\\n", + "**nets** & **KD (\\%)** & **mortality** & **KD criteria alone(r)** & **mortality criteria** & **requiring tunnel** & **percentage (95\\% CI)(r)** \\\\\n", + "**Olyset(r) Plus** & & & & & & & \\\\\n", + "0 & 30 & 99.5 & 100 & 100 & 100 & 0 & 100 (80–100) \\\\\n", + "6 & 30 & 97.0 & 88.2 & 83.3 & 73.3 & 4 & 96.7 (82–99) \\\\\n", + "12 & 30 & 9\n", + "\n", + "4.2 & 74.3 & 76.7 & 43.3 & 6 & 93.3 (78–99) \\\\\n", + "18 & 30 & 82.9 & 65.9 & 36.7 & 36.7 & 16 & 86.7 (69–96) \\\\\n", + "24 & 30 & 77.4 & 75.3 & 0.0 & 46.7 & 15 & 76.7 (57–90) \\\\\n", + "30 & 30 & 60.4 & 56.9 & 0.0 & 10.0 & 27 & 70.0 (50–85) \\\\\n", + "**Olyset(r) Net** & & & & & & & \\\\\n", + "0 & 30 & 99.1 & 100 & 100 & 100 & 0 & 100 (88–100) \\\\\n", + "6 & 30 & 96.9 & 79.8 & 80.0 & 60.0 & 4 & 93.3 (77–99) \\\\\n", + "12 & 30 & 68.5 & 54.7 & 20.0 & 3.3 & 24 & 83.3 (65–94) \\\\\n", + "18 & 30 & 72.1 & 50.2 & 30.0 & 20.0 & 18 & 73.3 (54–87) \\\\\n", + "24 & 30 & 79.8 & 68.9 & 3.3 & 46.7 & 18 & 66.7 (47–83) \\\\\n", + "30 & 30 & 50.9 & 50.9 & 0.0 & 3.3 & 29 & 60.0\n", + "\n", + "\n", + "was 16% at year 1 and did not change much at year 2 and 3 (19 and 24%, respectively).\n", + "\n", + "header: Conclusions\n", + "\n", + "Olysset(r) Plus did not meet the WHO criteria for efficacy of LLINs in this 3-year Phase III study, which could have resulted from faster loss of permethrin and PBO and users not following the manufacturer's recommendations to not leave the nets under direct sunlight. Better community education is therefore essential to ensure appropriate use and upkeep of nets in areas with LLIN-based interventions in order to maximize their operational impact on the prevention, control and elimination of malaria. Failure to do this would result in operational implications requiring early replenishment with new nets to ensure that such an LLIN based malaria intervention remains effective.\n", + "\n", + "header: Recording of adverse events\n", + "\n", + "One month after net distribution, a survey was carried out to record adverse events reported by net users, and overall experiences of net usage. A pre-tested questionnaire adapted from the WHO guidelines [11] was administered to the heads or an adult person of the households after obtaining informed consent.\n", + "\n", + "header: Funding\n", + "\n", + "The work was funded as a collaborative project by the WHO Pesticide Evaluation Scheme, Geneva, Switzerland.\n", + "\n", + "header: Table 5 Mean permethrin and PBO contents (relative standard deviation) in nets at baseline, and at 12, 24 and 36 months\n", + "footer: a Within net variation (relative standard deviation) in permethrin and PBO contents at baseline was 2.2% and 3.7%, respectively (Olyset® Plus). – not applicable, PBOpiperonyl butoxideb Within net variation (relative standard deviation) in permethrin content at baseline was 1.2% (Olyset® Net)\n", + "columns: ['Sampling month', 'Olyset® Plus - Mean permethrin content in g/kg (95% CI)', 'Olyset® Plus - Permethrin content lost (%)', 'Olyset® Plus - PBO content in g/ kg (95% CI)', 'Olyset® Plus - PBO content lost (%)', 'Olyset® Net - Mean permethrin content in g/kg (95% CI)', 'Olyset® Net - Permethrin content lost (%)']\n", + "\n", + "{\"0\":{\"Sampling month\":0,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"18.4 (18.3\\u201318.6)a\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"8.98 (8.86\\u20139.10)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"\\u2013\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"19.6 (19.5\\u201319.7)b\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"\\u2013\"},\"1\":{\"Sampling month\":12,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.7 (10.6\\u201312.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"36\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"3.01 (2.30\\u20133.80)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"66\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"16.5 (16.0\\u201317.0)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"16\"},\"2\":{\"Sampling month\":24,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"11.1 (10.2\\u201312.0)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"40\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.70 (1.20\\u20132.20)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"81\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"15.9 (15.1\\u201316.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"19\"},\"3\":{\"Sampling month\":36,\"Olyset\\u00ae Plus - Mean permethrin content in g\\/kg (95% CI)\":\"8.8 (7.9\\u20139.7)\",\"Olyset\\u00ae Plus - Permethrin content lost (%)\":\"52\",\"Olyset\\u00ae Plus - PBO content in g\\/ kg (95% CI)\":\"1.16 (0.8\\u20131.5)\",\"Olyset\\u00ae Plus - PBO content lost (%)\":\"87\",\"Olyset\\u00ae Net - Mean permethrin content in g\\/kg (95% CI)\":\"14.8 (13.9\\u201315.7)\",\"Olyset\\u00ae Net - Permethrin content lost (%)\":\"24\"}}\n", + "\n", + "header: Net sampling scheme\n", + "\n", + "The scheme of sampling nets at different time points for bioassays and chemical assays is given in Table 2. The netting pieces were cut from the sampled nets from positions 1-9 for bioassays, and positions HP1-HP5 (at time 0) or positions HP2-HP5 (at time 12, 24 and 36 months) for chemical content assays (Fig. 1). All the nets which were sampled and retrieved at the given survey points were replaced with new ones.\n", + "\n", + "header: Bioassays\n", + "\n", + "The insecticidal effect of the nets was evaluated using cone bioassays and where required tunnel tests, as per the WHO guidelines [3]. The bioassays were done at time zero (baseline) and then at every 6 months up to 36 months. On each of the netting pieces cut for bioassays, standard WHO plastic cones were held in place using a plastic manifold and a total of 50 laboratory bred, susceptible Kisumu strain _Anopheles gambiae_ (non-blood fed, 2-5 day old) were exposed for 3 min (5 pieces per net x 5 mosquitoes per test x 2 replicates). After the exposure, the mosquitoes were removed gently from\n", + "the cones and kept separately in plastic cups provided with cotton-wool moistened with 10% glucose solution. Knockdown (KD) was recorded at 60 min and mortality at 24 h after exposure. Mosquitoes exposed to untreated polyester net pieces were used as untreated controls. The bioassays were carried out at 27 +- 2 degC temperature and 80% +- 10% relative humidity. When the mosquito knockdown rate was < 95% and mortality < 80%, the mortality and blood-feeding inhibition effect of such nets was assessed in a tunnel test according to the WHO guidelines [3].\n", + "\n", + "For each net, only one netting piece with which mosquito mortality was found closest to the average mortality in the cone test was tested in the tunnel test [3]. One hundred, non-blood fed female _An. gambiae_ Kisumu mosquitoes, aged 5-8 days were released at the longer end of a tunnel equipment made of glass. At each end of the tunnel, a 25 cm square cage covered with a polyester netting was fitted. At the shorter end of the tunnel, a rabbit which could not move but was available for mosquito biting was placed. The mosquitoes were released at 18:00 and mosquitoes recovered at 09:00 on the following morning. During the test, the tunnel was kept in a place maintained at 27 +- 2 degC and 80% +- 10% relative humidity in full darkness. Another tunnel with untreated netting was used as control. The mean mortality rate and percentage blood-feeding inhibition were recorded, as follows:\n", + "\n", + "1. Mortality = this was measured by pooling the mortality rates of mosquitoes from the two sections of the tunnel. If mortalities in the control recorded more than 10%, the test was considered invalid.\n", + "\n", + "\\[\\text{Blood} - \\text{feeding\\,inhibition}(\\%) = \\left[ {100 \\times \\left( {\\text{Bfc} - \\text{Bfc}} \\right)} \\right]/\\text{Bfc}\\]\n", + "\n", + "where, Bfc is the proportion of blood-fed mosquitoes in the control tunnel and Bft is the proportion of blood-fed mosquitoes in the tunnel with the treated net. The treated net was considered to have met the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90%.\n", + "\n", + "header: Table 3 Frequency of washing nets by the users at different time points\n", + "footer: The reported wash rate was zero at 6 months\n", + "columns: ['Period (months)', 'Olyset® Plus - No. of nets sampled', 'Olyset® Plus - No. of nets washed once (%)', 'Olyset® Plus - No. of nets washed twice (%)', 'Olyset® Plus - No. of nets washed > 2 times (%)', 'Olyset® Net - No. of nets sampled', 'Olyset® Net - No. of nets washed at once (%)', 'Olyset® Net - No. of nets washed twice (%)', 'Olyset® Net - No. of nets washed > 2 times (%)']\n", + "\n", + "{\"0\":{\"Period (months)\":6,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"\\u2013\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"\\u2013\"},\"1\":{\"Period (months)\":12,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"1 (3)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"0\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"2\":{\"Period (months)\":24,\"Olyset\\u00ae Plus - No. of nets sampled\":30,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"4 (12)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"1 (3)\",\"Olyset\\u00ae Net - No. of nets sampled\":30,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"3 (11)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"2 (7)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"0\"},\"3\":{\"Period (months)\":36,\"Olyset\\u00ae Plus - No. of nets sampled\":50,\"Olyset\\u00ae Plus - No. of nets washed once (%)\":\"9 (17)\",\"Olyset\\u00ae Plus - No. of nets washed twice (%)\":\"5 (10)\",\"Olyset\\u00ae Plus - No. of nets washed > 2 times (%)\":\"3 (6)\",\"Olyset\\u00ae Net - No. of nets sampled\":50,\"Olyset\\u00ae Net - No. of nets washed at once (%)\":\"11 (21)\",\"Olyset\\u00ae Net - No. of nets washed twice (%)\":\"8 (6)\",\"Olyset\\u00ae Net - No. of nets washed > 2 times (%)\":\"3 (6)\"}}\n", + "\n", + "header: Statistical analysis\n", + "\n", + "The data collected were entered in excel spreadsheets and cross-checked for accuracy. Data were analyzed using STATA version 14.0 (Stata Corporation, College Station, TX, USA). Comparisons between the two types of nets were tested for significance using the Chi-square (kh2) test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. For continuous variables, the arithmetic mean was used depending on the distribution of values compared to a normal distribution.\n", + "\n", + "The nets were considered to have passed the WHO efficacy criteria if the mosquito knockdown rate was found to be >= 95% and/or mortality rate >= 80% in cone bioassays. For the tunnel tests, nets were considered to have passed the WHO efficacy criteria when mortality in mosquitoes was >= 80% and/or blood-feeding inhibition was >= 90% [3]. The procedure for calculation of proportionate Hole Index (pHI) for nets is already described above.\n", + "\n", + "header: Abbreviations\n", + "\n", + "_Cl_ Confidence interval; CHW: Community Health Workers; KD: Knockdown; LINK: long-lasting insecticidal nets; NMD: National Malaria Control Programme; pH: proportionate Hole Index; PBO: Papernot by duakoc. Relative standard deviation; SD: Standard deviation; WHO: World Health Organization.\n", + "\n", + "header: Table 7 Comparison of the estimates of the mean pHI and the mean hole area for O lyset® Plus and Olyset® Net\n", + "footer: pHI proportionate Hole Index\n", + "columns: ['Survey month', 'Olyset® Plus - No. of nets inspected', 'Olyset® Plus - Mean hole area in cm2 (± SD)', 'Olyset® Plus - Mean pHI (± SD)', 'Olyset® Net - No. of nets inspected', 'Olyset® Net - Mean hole area in cm2 (± SD)', 'Olyset® Net - Mean pHI (± SD)']\n", + "\n", + "{\"0\":{\"Survey month\":6,\"Olyset\\u00ae Plus - No. of nets inspected\":250,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"52.3 \\u00b1 230.5\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"93.3 \\u00b1 313.6\",\"Olyset\\u00ae Net - No. of nets inspected\":250,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"123.3 \\u00b1 272.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"110.5 \\u00b1 221.8\"},\"1\":{\"Survey month\":12,\"Olyset\\u00ae Plus - No. of nets inspected\":243,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"229.2 \\u00b1 574.2\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"153.6 \\u00b1 437.0\",\"Olyset\\u00ae Net - No. of nets inspected\":249,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"192.5 \\u00b1 376.2\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"156.8 \\u00b1 306.5\"},\"2\":{\"Survey month\":24,\"Olyset\\u00ae Plus - No. of nets inspected\":231,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"389.8 \\u00b1 975.4\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"317.6 \\u00b1 794.7\",\"Olyset\\u00ae Net - No. of nets inspected\":226,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"873.9 \\u00b1 353.4\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"279.4 \\u00b1 428.1\"},\"3\":{\"Survey month\":36,\"Olyset\\u00ae Plus - No. of nets inspected\":228,\"Olyset\\u00ae Plus - Mean hole area in cm2 (\\u00b1 SD)\":\"630.7 \\u00b1 1191.8\",\"Olyset\\u00ae Plus - Mean pHI (\\u00b1 SD)\":\"513.9 \\u00b1 970.9\",\"Olyset\\u00ae Net - No. of nets inspected\":216,\"Olyset\\u00ae Net - Mean hole area in cm2 (\\u00b1 SD)\":\"621.5 \\u00b1 1710.3\",\"Olyset\\u00ae Net - Mean pHI (\\u00b1 SD)\":\"506.4 \\u00b1 1393.2\"}}\n", + "\n", + "header: Methods\n", + "\n", + "The field trial was conducted according to the WHO guidelines [3, 11]. The description of the test products and trial procedures are described below.\n", + "\n", + "header: Household net washing practices\n", + "\n", + "The net washing practices by households were evaluated using a questionnaire at 6, 12, 24 and 36 months after net distribution.\n", + "\n", + "header: Competing interests\n", + "\n", + "The authors declare no competing interests. As a collaborative project, RSY, a WHO professional staff, reviewed and agreed with the study design and contributed to writing the manuscript.\n", + "\n", + "header: Abstract\n", + "\n", + "Bioefficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide-treated insecticidal net in a 3-year long trial in Kenya\n", + "\n", + "Paul M. Gichuki, Anna Kamau, Kiambo Niagi, Solomon Karoki, Njoroge Muigai, Damaris Matoke-Muhia, Nabie Bayoh, Evan Mathenge\n", + "\n", + "\n", + "**Background:** Long-lasting insecticide nets (LLINs) are a core malaria intervention. LLINs should retain efficacy against mosquito vectors for a minimum of three years. Efficacy and durability of Olyset(r) Plus, a permethrin and piperonyl butoxide (PBO) treated LLIN, was evaluated versus permethrin treated Olyset(r) Net. In the absence of WHO guidelines of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated as a pyrethroid LILN.\n", + "\n", + "**Methods:** This was a household randomized controlled trial in a malaria endemic rice cultivation zone of Kirinyaga County, Kenya between 2014 and 2017. Cone bioassays and tunnel tests were done against _Anopheles gambiae_ Kisumu. The chemical content, fabric integrity and LLIN survivorship were monitored. Comparisons between nets were tested for significance using the Chi-square test. Exact binomial distribution with 95% confidence intervals (95% CI) was used for percentages. The WHO efficacy criteria used were >= 95% knockdown and/or >= 80% mortality rate in cone bioassays and >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests.\n", + "\n", + "**Results:** At 36 months, Olyset(r) Plus lost 52% permethrin and 87% PBO content; Olyset(r) Net lost 24% permethrin. Over 80% of Olyset(r) Plus and Olyset(r) Net passed the WHO efficacy criteria for LLINs up to 18 and 12 months, respectively. At month 36, 91.2% Olyset(r) Plus and 86.4% Olyset(r) Net survived, while 72% and 63% developed at least one hole. The proportionate Hole Index (pHI) values representing nets in good, serviceable and torn condition were 49.6%, 27.1% and 23.2%, respectively for Olyset(r) Plus, and 44.9%, 32.8% and 22.2%, respectively for Olyset(r) Net but were not significantly different.\n", + "\n", + "**Conclusions:** Olyset(r) Plus retained efficacy above or close to the WHO efficacy criteria for about 2 years than Olyset(r) Net (1-1.5 years). Both nets did not meet the 3-year WHO efficacy criteria, and showed little attrition, comparable physical durability and survivorship, with 50% of Olyset(r) Plus having good and serviceable condition after 3 years. Better community education on appropriate use and upkeep of LLINs is essential to ensure effectiveness of LLIN based malaria interventions.\n", + "\n", + "**Keywords:**_Anopheles gambiae, Bioefficacy, Durability, Kenya, Long-lasting insecticidal net, Olyset(r) Net, Olyset(r) Plus, Permeability, Piperonyl butoxide_\n", + "\n", + "header: Net survivorship and fabric integrity\n", + "\n", + "At the end of year 1, Olyset(r) Plus reported survivorship rates of 97.2% (_n_ = 243), with Olyset(r) Net recording 99.6% (_n_ = 249). At year 2, there were 92.4% (_n_ = 231) Olyset(r) Plus and 90.4% (_n_ = 226) of Olyset(r) Nets still surviving. At the end of the 3 years of study, the survivorship rates for Olyset(r) Plus and Olyset(r) Net were at 91.2% (_n_ = 228) and 86.4% (_n_ = 216), respectively.\n", + "\n", + "The pH values of the nets showed that 87.6% of Olyset(r) Plus were in good condition at 6 months, 7.6% were in acceptable/serviceable condition, and 4.8% were too torn (Table 6). These proportions increased gradually during the study and at 36 months, 49.6% were in good condition, 27.1% in acceptable/serviceable condition, and 23.2% were too torn. A similar trend of attrition was seen for Olyset(r) Net, with 44.9%, 32.8% and 22.2% nets being in good condition, acceptable condition or too torn at 36 months, respectively.\n", + "\n", + "Data on the comparison of estimates of the mean pH values and the mean hole area for Olyset(r) Plus and Olyset(r) Net are given in Table 7.\n", + "\n", + "The proportion of Olyset(r) Plus nets having been repaired by households increased from 6% (95% CI: 3.4-9.7) at month 6 to 17.9% (95% CI: 13.2-23.6) at months\n", + "\n", + "36, while that of Olyset(r) Net increased from 5% (95% CI: 2.8-8.7) to 12% (95% CI: 8.0-17.1) in the same period.\n", + "\n", + "\n", + "Olyset(r) Net incorporated with permethrin alone was included in the trial as a positive control net. A net was considered to have passed the WHO efficacy criteria if it caused >= 80% mortality and/or >= 95% knockdown in cone bioassays or >= 80% mortality and/or >= 90% blood-feeding inhibition in tunnel tests [3]. Most of the Olyset(r) Plus and Olyset(r) Net lost the knockdown effect during the 24-36 months follow-up. Overall, neither Olyset(r) Plus nor Olyset(r) Net performed as they should even after 2 years and did not meet the WHO efficacy criteria of a 3-year LLIN.\n", + "\n", + "Previous studies have demonstrated enhanced efficacy of Olyset(r) Plus against resistant _An. gambiae_ attributable to PBO [16-18]. A recent randomised controlled field trial in Tanzania with high levels of pyrethroid resistance in malaria vectors _An. gambiae_ and _An. arabiensis_ also attributed higher impact on malaria of Olyset(r) Plus over Olyset(r) Net to the presence of PBO that was sustained after 21 months of the trial [19]. However, there is a view that these two nets are not comparable and that the higher efficacy of Olyset(r) Plus was due to much more bleed rate of permethrin into its surface and not due to PBO that was incorporated in small amount and dwindled rapidly over time [20]. In this trial, Olyset(r) Plus was evaluated as a pyrethroid LLIN since there were no guidelines published by WHO of how to evaluate PBO nets at the time of this trial, and considering the manufacturer's product claim.\n", + "\n", + "While, it was reported that high intensity insecticide resistance will reduce the level of personal and community protection of pyrethroid LLINs [21] and PBO nets could be effective against malaria in some resistance scenarios [22], a recent WHO multi-country study found no evidence of an association between insecticide resistance and malaria infection prevalence or incidence [23]. There is also a view that at present there is limited evidence that recent reduction in the impact on malaria in sub-Saharan Africa was due to increasing resistance in malaria vectors to the pyrethroid insecticides used in treating nets [24].\n", + "\n", + "The initial permethrin content in both nets was more or less similar but the enhanced efficacy of Olyset(r) Plus was mainly due to the higher release of permethrin into the surface fibres and presence of PBO than Olyset(r) Net. The gradual decline in efficacy of both nets is consistent with the loss of permethrin and PBO in Olyset(r) Plus and of permethrin in Olyset(r) Net over time during their routine usage by the community. The decline in permethrin content was more rapid in Olyset(r) Plus than Olyset(r) Net. This explains why Olyset(r) Plus having permethrin and PBO was relatively superior than Olyset(r) Net initially, i.e., until 18 months, but after that their performance was below the WHO efficacy cut off. While the PBO content in Olyset(r) Plus at the baseline was within the target tolerance limits, 66% of the PBO content was lost within one year of net usage, and the loss increased to 81% at year 2 and 87% at year 3. Previous studies have reported that the insecticidal content in LLINs decay over time [6]. While permethrin and PBO contents may be lost due to natural decay and evaporation, washing of nets frequently and drying them under direct sunlight are known to contribute to such losses [25, 26]. In this study, despite manufacturer's label recommendation not to expose nets to direct sunlight, a good proportion of both type of nets were exposed to bright sunlight before use and left to dry in the sun after washing. This would have reduced both permethrin and PBO contents and consequently reduced the biological efficacy of these nets and should be borne in mind when considering these results. Even though Kisumu strain was tested, the loss of PBO would have affected efficacy of Olyset Plus as PBO can improve net performance even against susceptible strains, which too have P450s, and PBO is also known to act as a good solvent that can aid cuticular penetration and help improve insecticidal activity. The operational implication of rapid loss of PBO is that Olyset(r) Plus was unlikely to remain effective even against pyrethroid resistant mosquitoes for 2 or 3 years of use.\n", + "\n", + "Community net wash practices were comparable between the two nets. During the first 6 months, no net was reported to have been washed. At 1 year, 7% of Olyset(r) Plus and 7% of Olyset(r) Net were reported to have been washed at least once. At month 36 months, about 17% and 21% of Olyset(r) Plus and Olyset(r) Net\n", + "respectfully had been washed at least once. LLINs are usually recommended to be washed at most every 3 months [5], although this frequency depends on local cultural practices and water availability. Different net washing frequencies have been reported in other studies spanning from a high of 8 washes per month in Mali [27] to 4-7 times in Tanzania [28] to a low average of 1.5 washes per year in Uganda [29]. In coastal Kenya, on average nets were washed twice in 6 months, with blue colour nets least often washed than white or green colour nets, and older nets washed more frequently [30]. In western Kenya lowlands, three quarter of nets were washed once within 3 months and a third of them were dried under the sun [31]. The main reasons for low reported wash rates during the annual surveys in our study could be attributed to net users' poor recall of the net washing frequencies, and people's apprehension that washing of nets reduce net efficacy, although there was no water scarcity in the trial area being located in a rice irrigation area.\n", + "\n", + "The study participants reported experiencing certain transient adverse effects during the first two days of use of nets, but these could be prompted reactions since the community members had been informed about the possibility of such effects at the time of net distribution. The higher side effects from use of Olyset(r) Plus is in line with the higher release of permethrin as mentioned above. Users resorted to ventilating their nets in direct sunlight to reduce the effects although our project team had advised to dry up and keep the nets under shade. Ventilating new nets or drying washed nets under direct sunlight might have contributed to a significant reduction in active ingredient content and bio-efficacy of nets.\n", + "\n", + "At the end of the 3-year period, among the two cohorts of 250 nets each, only about 9% Olyset(r) Plus and about 14% Olyset(r) Net were reported to have been lost showing a high net survivorship. These results are in line with the expected 75% net survivorship rate reported by the NetCALC 3-year serviceable prediction model [32]. Previous studies have reported varying rate of net survivorship in African countries, such as 58% nets were lost within two years in Rwanda [33], only 39% of distributed nets remained both present and in serviceable physical condition 2-4 years after a mass campaign in Tanzania [34], but in Western Uganda an estimated attrition rate of just 12% after three years of use was observed for a polyester net [35]. In four African countries of Mozambique, Nigeria, DRC and Zanzibar, Tanzania, survival in serviceable condition of polyethylene and polyester LLINs after 31-37 months of use varied between different sites from 17 to 80% with median survival from 1.6 to 5.3 years [36]. In our study, the observed low attrition rate of nets appears to be also due to the 'Hawthorne effect' as the households included in the two cohorts of nets were visited every 6 or 12 months to inspect the nets. So, the awareness among study participants that the nets were regularly being followed could have modified their behaviour in favour of more careful upkeep and maintenance of the nets and as such may have been a limitation in this study.\n", + "\n", + "Studies have shown that despite small to medium size holes (64 < PHI < 642), LLINs are still protective against mosquito bites due to the excito-repellent effects of insecticides [35]. However, the nets may become ineffective when the overall hole area in nets reaches a certain threshold [37]. In our study, both Olyset(r) Plus and Olyset(r) Net recorded high fabric integrity up to the 3-year trial period. At 12 months after distribution, 78.1% of Olyset Plus and 63.8% of Olyset(r) Net were in good/acceptable condition, 12.3% Olyset(r) Plus and 30.5% Olyset(r) Net were in serviceable condition, while 9.4% Olyset(r) Plus and 5.6% Olyset(r) Net were completely torn and required to be replaced. At the end of the 3-year trial period, 49.5% of Olyset(r) Plus and 44.9% of Olyset(r) Net were in good/acceptable condition, 27.1% Olyset(r) Plus and 32.8% Olyset(r) Net in serviceable condition, while 23.2% Olyset(r) Plus and 22.2% Olyset(r) Net were completely torn and required replacement.\n", + "\n", + "Although Olyset(r) Net retained a higher permethrin content that Olyset(r) Plus, the latter showed longer duration of efficacy than the former, i.e., 18 months compared with 12 months above the WHO efficacy cut off, and higher efficacy thereafter i.e., the efficacy of Olyset(r) Plus declined to 42% at the end of 3-year trial period and that of Olyset(r) Net to 36% over the same period. This could be attributed to higher release of permethrin into the netting surface, and also because PBO can make nets perform better even against susceptible mosquitoes. Pyrethroid-PBO nets have previously been associated with higher mosquito mortality and lower blood-feeding rates in areas of high-level insecticide resistance than were non-PBO LLINs [38, 39]. Although in our study we did not test nets with a pyrethroid resistant mosquito strain, it is likely that the fast decline of PBO in Olyset(r) Plus was caused by the inappropriate exposure to sunlight, as well as the normal loss through washing would have reduced efficacy against resistant mosquitoes in the same way that it reduced efficacy against the susceptible mosquitoes tested here.\n", + "\n", + "Appropriate testing guidelines and field studies are thus required to evaluate the operational effectiveness of PBO nets against pyrethroid resistant mosquitoes and considering the PBO retention and release properties. The revised WHO LLIN guidelines should clarify for how long PBO nets should be effective and if the \n", + "current WHO efficacy criteria for a 3-year LLIN should be reduced to fit the chemistry.\n", + "\n", + "A limitation of our trial was that we did not evaluate efficacy of Olysset(r) Plus against resistant _An. gambling_ mosquitoes. Instead, we tested its efficacy for the presence of permethrin alone using a susceptible malaria vector strain, although inclusion of PBO in nets has the potential of increasing insecticidal efficacy due to increased cuticular penetration and presence of P450s in susceptible insects. There is thus a need for suitable testing guidelines and a much more validation of the impact of PBO in pyrethroid-PBO nets.\n", + "\n", + "header: Test products\n", + "\n", + "Bioefficacy and physical durability of the Olyset(r) Plus and Olyset(r) Net both manufactured by Sumitomo Chemical were evaluated. The former is a polyethylene mono-filament net incorporated with 2% permethrin corresponding to 20 g permethrin active ingredient (AI)/kg or 800 mg permethrin AI/m\\({}^{2}\\) and 1% PBO (corresponding to 10 g PBO AI/kg or 400 mg PBO AI/m\\({}^{2}\\)). The latter is a polyethylene mono-filament net incorporated with 2% permethrin (w/w) (corresponding to 800 mg permethrin AI/m\\({}^{2}\\)). Olyset(r) Net was recommended in 2009 by the WHO Pesticide Evaluation Scheme (WHOPES) for use in malaria control [12], while Olyset(r) Plus was given interim recommendation by WHO in 2012 with the requirement to evaluate the product in a 3-year long-term trial to confirm its long-lasting efficacy in field [13].\n", + "\n", + "header: Background\n", + "\n", + "Insecticide-treated nets reduce child mortality, number of _Plasmodium falciparum_ cases and probably the number of _P. vivax_ cases per person/year [1]. Factory-produced long-lasting insecticide nets (LLINs) are a core malaria intervention for the global elimination of malaria led by the World Health Organization (WHO) [2]. According to the WHO definition, LLINs should retain efficacy against mosquito vectors for a minimum of 20 standard washes under laboratory conditions and a minimum of 3 years of use under field conditions [3]. When used by most of the people in a population, insecticide-treated nets can protect all people in the community, including those who do not sleep under nets [4]. Currently, the National Malaria Control Programme (NMCP) in Kenya has been scaling up the use of LLINs in malaria endemic and high-risk areas to achieve universal coverage, which is defined by WHO as access to one LLIN for every 1.8 persons in each household [2, 5].\n", + "\n", + "Pyrethroid LLINs were the first brands of treated nets recommended by WHO for malaria control. However, it was believed that insecticide resistance was worsening in Africa and would present a major threat to malaria control [6-8], and that pyrethroid-LLINs were becoming less effective at killing mosquitoes in household conditions when pyrethroid resistance develops [9, 10]. Consequently, piperonyl butoxide (PBO) was incorporated in nets with the intension to improve their efficacy against pyrethroid resistant mosquitoes by acting as a metabolic enzyme inhibitor targeting the P450 cytochrome or mixed function oxidases that metabolise pyrethroids and enhance the efficacy of pyrethroid treated nets. Olyset(r) Plus has been prequalified by WHO as the first in class PBO net.\n", + "\n", + "However, at the time of beginning the trial due to the absence of guidelines published by WHO of how to evaluate PBO nets, and considering the manufacturer's product claim, Olyset(r) Plus was evaluated only as a pyrethroid LLIN against a pyrethroid susceptible mosquito strain rather than against a resistant strain. This paper presents results of a 3-year long-term (Phase III) field trial of the candidate product, Olyset(r) Plus, along with a positive control product Olyset(r) Net, in a malaria endemic rice cultivation area of Kirinyaga County, Kenya.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Village trial\",\"Country\":\"Kenya\",\"Site\":\"Kirinyaga County\",\"Start_year\":2014,\"End_month\":12,\"End_year\":2017}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Concentration\": {\"title\": \"Insecticide concentration (measured mean)\", \"description\": \"Enter the measured concentration of the insecticide(s) for the active ingredient(s), in the net type.If multiple sides (e.g. roof or sides) of the net were tested, provide the mean value.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}, \"median_pHI\": {\"title\": \"Median Proportional hole index\", \"description\": \"Usually provided only for those nets with holes. This value should be provided in the text or a table of the paper. If it requires your own calculations, skip it. \\nDefinition: Numerator is total number of each LN product with at least one hole of size 1\\u20134; Denominator is Total number of each LN product found and assessed in surveyed households.\"}, \"pHI_lower_IQR\": {\"title\": \"pHI lower inter-quartile\", \"description\": \"Lower inter-quartile range of `pHI_median`.\"}, \"pHI_upper_IQR\": {\"title\": \"pHI upper inter-quartile\", \"description\": \"Upper inter-quartile range of `pHI_median`.\"}, \"pHI_upper_bound\": {\"title\": \"Phi Upper Bound\", \"description\": \"lowest pHI detected.\"}, \"median_hole_size\": {\"title\": \"Median hole surface area in cm^2\", \"description\": \"Usually provided only for those nets with holes. This value should be provided in the text or a table of the paper. If it requires your own calculations, skip it.\"}, \"hole_size_upper_IQR\": {\"title\": \"hole size upper inter-quartile\", \"description\": \"Upper inter-quartile range of `hole_size_median`.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Olyset\\u00ae Plus\",\"Insecticide\":\"Permethrin, Piperonyl Butoxide\",\"Concentration_initial\":\"18.4, 8.98\",\"Concentration\":\"8.8, 1.16\",\"pHI_category\":\"Good\",\"median_pHI\":49.6,\"pHI_lower_IQR\":43.1,\"pHI_upper_IQR\":56.0,\"pHI_upper_bound\":642.0,\"median_hole_size\":52.3,\"hole_size_upper_IQR\":230.5},\"N02\":{\"Net_type\":\"Olyset\\u00ae Net\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"19.6\",\"Concentration\":\"14.8\",\"pHI_category\":\"Good\",\"median_pHI\":44.9,\"pHI_lower_IQR\":38.4,\"pHI_upper_IQR\":51.6,\"pHI_upper_bound\":642.0,\"median_hole_size\":123.3,\"hole_size_upper_IQR\":272.3}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Acknowledgments\n", + "\n", + "We thank BASF and Bayer for providing the insecticides. We also thank the technical staff of CREC (Abibath Odojo, Estelle Vigninou, Josias Fagbohoun, Edwige Kpanou etc) for their assistance. We are grateful to the rice farmers at Cove for their support in the hut study.\n", + "\n", + "header: Background: Methods\n", + "\n", + "The efficacy of combining a standard pyrethroid LLIN (DuraNet(r)) with IRS insecticides from three chemical classes (bendicocarb, chlorfenapyr and pirimiphos-methyl CS) was evaluated in an experimental hut trial against wild pyrethroid-resistant _Anopheles gambiae_ s.l. in Cove, Benin. The combinations were also compared to each intervention alone. WHO cylinder and CDC bottle bioassays were performed to assess susceptibility of the local _An. gambiae_ s.l. vector population at the Cove hut site to insecticides used in the combinations.\n", + "\n", + "header: Results\n", + "\n", + "Susceptibility bioassays revealed that the vector population at Cove, was resistant to pyrethroids (<20% mortality) but susceptible to carbamates, chlorfenapyr and organophosphates (>=98% mortality). Mortality of wild free-flying pyrethroid resistant _An. gambiae_ s.l. entering the hut with the untreated net control (4%) did not differ significantly from DuraNet(r) alone (8%, p = 0.169). Pirimiphos-methyl CS IRS induced the highest mortality both on its own (85%) and in combination with DuraNet(r) (81%). Mortality with the DuraNet(r) + chlorfenapyr IRS combination was significantly higher than each intervention alone (46% vs. 33% and 8%, p<0.05) demonstrating an additive effect. The DuraNet(r) + bendicocarb IRS combination induced significantly lower mortality compared to the other combinations (32%, p<0.05). Blood-feeding inhibition was very low with the IRS treatments alone (3-5%) but \n", + "increased significantly when they were combined with DuraNet(r) (61% - 71%, p<0.05). Blood-feeding rates in the combinations were similar to the net alone. Adding bendicorarb IRS to DuraNet(r) induced significantly lower levels of mosquito feeding compared to adding chlorfenapyr IRS (28% vs. 37%, p = 0.015).\n", + "\n", + "header: Susceptibility bioassays\n", + "\n", + "WHO susceptibility cylinder bioassays [20] and CDC bottle bioassays [21] were performed in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove experimental hut site to the constituent insecticides in the hut treatments. Adult F1 progeny of field-collected _An. gambiae_ s.l. were exposed to filter papers treated with discriminating doses of alpha-cypermethrin (0.05%), permethrin (0.75%), bendiocarb (0.1%) and fenitrothion (1.0%) in WHO cylinders and CDC bottles impregnated with 100 mg of chlorfenapyr. Comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu colony. For each insecticide and strain, 100 adult female mosquitoes aged 2-3 days were introduced to four insecticide-treated cylinders/bottles in batches of 25. In the control arms, mosquitoes were exposed to silicone oil-treated filter papers and acetone-treated bottles. After 1 h exposure, mosquitoes were transferred to holding tubes and observation cups and provided access to 10% glucose solution (w/v). Mortality was recorded after 24 h for mosquitoes exposed to permethrin, alpha-cypermethrin, bendiocarb and fenitrothion in WHO cylinder bioassays and every 24 h up to 72 h for mosquitoes exposed to chlorfenapyr in CDC bottles. The insecticide treated filter papers used for the WHO cylinder bioassays were obtained from Universiti Sains Malaysia.\n", + "\n", + "header: Table 2: Susceptibility of field-collected Anopheles gambiae sensu late from Cove to chlorfenapyr in CDC bottle bioassays.\n", + "footer: None\n", + "columns: ['Treatment', 'Strain', 'N exposed', 'N dead', '% Mortality�', '95% CI']\n", + "\n", + "{\"0\":{\"Treatment\":\"Control\",\"Strain\":\"Kisumu\",\"N exposed\":101,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"1\":{\"Treatment\":\"Control\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":100,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"2\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Kisumu\",\"N exposed\":103,\"N dead\":103,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"},\"3\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":102,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"}}\n", + "\n", + "header: Table 4. Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", + "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", + "columns: ['Treatment', 'Total blood-fed', '% Blood-fed*', '95% CI', '% Blood-feeding inhibition', '% Personal protection']\n", + "\n", + "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total blood-fed\":675,\"% Blood-fed*\":\"95a\",\"95% CI\":\"93\\u201397\",\"% Blood-feeding inhibition\":\"\\u2013\",\"% Personal protection\":\"\\u2013\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total blood-fed\":231,\"% Blood-fed*\":\"55b\",\"95% CI\":\"50\\u201360\",\"% Blood-feeding inhibition\":\"42\",\"% Personal protection\":\"66\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total blood-fed\":202,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201336\",\"% Blood-feeding inhibition\":\"66\",\"% Personal protection\":\"70\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total blood-fed\":460,\"% Blood-fed*\":\"91e\",\"95% CI\":\"88\\u201393\",\"% Blood-feeding inhibition\":\"5\",\"% Personal protection\":\"32\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total blood-fed\":150,\"% Blood-fed*\":\"28c\",\"95% CI\":\"24\\u201332\",\"% Blood-feeding inhibition\":\"71\",\"% Personal protection\":\"78\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total blood-fed\":440,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201394\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"35\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total blood-fed\":153,\"% Blood-fed*\":\"37d\",\"95% CI\":\"33\\u201342\",\"% Blood-feeding inhibition\":\"61\",\"% Personal protection\":\"77\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total blood-fed\":488,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201395\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"28\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total blood-fed\":160,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201337\",\"% Blood-feeding inhibition\":\"65\",\"% Personal protection\":\"76\"}}\n", + "\n", + "header: Conclusions\n", + "\n", + "Adding non-pyrethroid IRS to standard pyrethroid-only LLINs against a pyrethroid-resistant vector population which is susceptible to the IRS insecticide, can provide higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone. Adding pirimphos-methyl CS IRS may provide substantial improvements in vector control while adding chlorfenapyr IRS can demonstrate an additive effect relative to both interventions alone. Adding bendicorarb IRS may show limited enhancements in vector control owing to its short residual effect.\n", + "\n", + "header: Results\n", + "\n", + "Mortality rates of wild _An. gambiae_ s.l. from Cove in WHO susceptibility and CDC bottle bioassays are presented in Tables 1 and 2 respectively. Low proportions of adult F1 progeny of field-collected _An. gambiae_ s.l. were killed following exposure to alpha-cypermethrin (11%) and permethrin (20%); demonstrating pyrethroid resistance in the vector population. In contrast, the vast majority if not all mosquitoes from Cove were killed following exposure to bendiocarb (98%), fenitrothion (100%) and chlorfenapyr (100%); demonstrating susceptibility to carbamates, organophosphates and chlorfenapyr. With the insecticide susceptible _An. gambiae_ s.s. Kisumu colony, mortality was 100% with all insecticides.\n", + "\n", + "header: Conclusions\n", + "\n", + "Adding non-pyrethroid IRS to standard pyrethroid-only nets against a pyrethroid-resistant vector population which was susceptible to the IRS insecticide, generally provided higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone; the IRS intervention was responsible for improved mosquito mortality while the pyrethroid net provided blood-feeding inhibition. The combination with pirimiphos-methyl CS IRS was the most efficacious. Adding chlorfenapyr IRS to the pyrethroid LLIN demonstrated an additive mortality effect relative to both interventions alone. The combination with benidocarb IRS provided the \n", + "lowest levels of mortality owing to its short residual effect but also induced lower levels of mosquito feeding compared to combinations with the other IRS insecticides.\n", + "\n", + "header: Study site and experimental huts: Experimental hut treatments\n", + "\n", + "The following treatments were assessed in 9 experimental huts:\n", + "\n", + "1. Control (untreated hut)\n", + "2. Control (untreated net)\n", + "3. DuraNet(r) (Alpha-cypermethrin LLIN, 261 mg/m2, Shobikaa Impex)\n", + "4. Bendiocarb IRS applied at 400 mg/m2 (Ficam(r) WP, Bayer)\n", + "5. DuraNet(r) + Bendiocarb IRS applied at 400 mg/m2\n", + "6. Chlorfenapyr IRS applied at 250 mg/m2 (Sylando(r) 240SC, BASF)\n", + "7. DuraNet(r) + Chlorfenapryr IRS applied at 250 mg/m2\n", + "8. Pirimiphos-methyl CS IRS applied at 1000 mg/m2 (Actellic(r) 300CS, Syngenta)\n", + "9. DuraNet(r) + Pirimiphos-methyl CS IRS applied at 1000 mg/m2\n", + "\n", + "Interior hut walls were sprayed from top to bottom with IRS insecticide solutions using a Hudson X-pert(r) compression sprayer equipped with a flat-fan nozzle. To improve spraying accuracy, spray swaths were pre-marked on hut walls and a guidance pole was attached to the end of the spray lance to maintain a fixed distance to the wall. After spraying each hut, the volume remaining in the spray tank was measured to assess the overall volume sprayed. All spray volumes were within 30% of the target. The palm match used on the ceiling was sprayed flat on the ground outside the experimental hut and allowed to dry for 2 hours prior to being fitted on the ceiling of the hut. Three replicate nets were used per LLIN treatment and these were rotated every 2 nights within the same hut. To simulate wear and tear from field use, 6 holes each measuring 16 cm2 were cut into each bed net (one per panel) used in the trial.\n", + "\n", + "header: Ethical considerations\n", + "\n", + "Ethical approval was obtained from the ethics review committees of the London School of Hygiene & Tropical Medicine (LSHTM) (Reference No. 15265) and the local Ministry of Health in Benin (Reference No. N'39/CEIC/CREC). All volunteers provided informed written consent and were offered a course of chemoprophylaxis (doxycycline) prior to their participation in the study and up to four weeks following its completion. A nurse was available throughout the study to assess any cases of fever. In the event a volunteer tested positive for malaria, they were immediately withdrawn from the trial and administered effective treatment.\n", + "\n", + "header: Background\n", + "\n", + "Insecticide-treated nets (ITNs) and indoor residual spraying (IRS) are core interventions for preventing and controlling malaria [1]. Both methods have independently proven to be highly effective in reducing the burden of disease in diverse epidemiological settings. The substantial reductions in malaria morbidity and mortality observed in endemic countries over the last two decades, has been attributed to a significant increase in the roll out of ITNs and IRS during this period [2]. Where resources are available, both interventions have been deployed together in the same geographical location, with the primary aim of reducing the disease burden to a greater extent than could be achieved with either method alone [3,4].\n", + "\n", + "The benefits of combining these interventions is, however, contentious. Some community-randomised controlled trials (RCTs) have compared epidemiological outcomes in communities receiving pyrethroid long-lasting insecticidal nets (LLINs) plus IRS versus LLINs alone, yielding conflicting results. Whilst trials in Tanzania [5] and Sudan [6] associated combined use of LLINs and IRS with significant reductions in malaria infection prevalence, similar studies in Benin [7], Eritrea [8], Ethiopia [9] and The Gambla [10] reported no such effect. Based on a Cochrane review demonstrating the inconsistencies in epidemiological evidence [4], the World Health Organisation (WHO) has recently issued a provisional recommendation against combining LLINs and IRS as a means of reducing malaria-associated morbidity and mortality [1]. National Malaria Control Programmes are encouraged to prioritise delivering either ITNs or IRS at high coverage and to a high standard, rather than introducing the second intervention as a means to compensate for deficiencies in the implementation of the first. However, this should not be interpreted to mean that the combined IRS and ITN approach is redundant in all settings. Considering the recent stall in progress against malaria [11] and increasing prevalence of pyrethroid resistance in malaria vector populations across Africa [12], combining interventions may be vital for high transmission settings and insecticide resistance management. Vector control programmes are expected to be guided by local evidence to decide when, where and how to combine IRS with ITNs for different epidemiological settings [1].\n", + "\n", + "Evidence from RCTs and operational studies suggests that the impact of co-implementing LLINs and IRS may depend on a number of location-specific factors including: intervention coverage, transmission intensity, vector behaviour, choice of IRS insecticide and insecticide resistance [13,14]. The choice of IRS insecticide for a specific geographical setting whether deployed alone or together with LLINs will be influenced largely by the susceptibility of the target vector population to the insecticide, its mode of action, chemical properties and residual \n", + "activity on wall substrates. To maximise the impact of the combined intervention approach, it is important to consider the interactions that may occur between the insecticide in the LLIN and the chosen IRS insecticide. Where the mode of action of the IRS insecticides is not complementary to the insecticide on the net, the combination might be redundant or result in lower levels of vector control than what is achievable with either intervention alone. Although pyrethroids are not recommended for IRS, the redundancy of combining pyrethroid IRS or wall linings with pyrethroid LLINs has been clearly demonstrated in experimental but studies against pyrethroid-resistant malaria vectors in West Africa [15,16].\n", + "\n", + "Insecticides belonging to four classes of compounds have been approved by the WHO for IRS against malaria vectors; pyrethroids, organophosphates, carbamates and more recently, the neonicotinoid clothianidin [1,17]. While RCTs are the most robust method for generating evidence on the impact of combining vector control interventions, they are often time-consuming, expensive and unrealistic in some settings. Evidence from experimental but trials may provide some insights on what to expect when different types IRS insecticides are deployed to complement pyrethroid-only nets. In this study, we compared the impact of combining pyrethroid LLINs with IRS insecticides from three distinct chemical classes in experimental huts against wild free-flying pyrethroid-resistant malaria vectors in southern Benin.\n", + "\n", + "header: Trial procedure\n", + "\n", + "The trial began three days after IRS application and continued for 4 months, between July and October 2018 and followed WHO guidelines [19]. Nine (9) consenting human volunteers kept in experimental huts each trial night to attract mosquitoes. To account for bias due to differential attractiveness to mosquitoes, volunteers were rotated through experimental huts daily in accordance with a predetermined Latin square design. To mitigate the effect of hut position on mosquito entry, bed nets were rotated through experimental huts on a weekly basis. IRS treatments could not be rotated thus remained fixed throughout the trial. At dawn, sleepers collected all mosquitoes from under the net, the sleeping room and the veranda using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were subsequently transferred to the laboratory for morphological identification and scoring of blood-feeding and mortality. To account for the slow-action of chlorfenapyr, delayed mortality was recorded every 24 h up to 72 h after collection for all treatments. All alive _An. gambiae_ s.l. were held at 27 +- 2deg C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution.\n", + "\n", + "header: Table 3. Overall entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", + "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", + "columns: ['Treatment', 'Total females caught', 'Average catch per night', '% Deterrence', 'Total exiting', '% Exophily�', '95% CI']\n", + "\n", + "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total females caught\":711,\"Average catch per night\":7,\"% Deterrence\":\"\\u2013\",\"Total exiting\":322,\"% Exophily\\ufffd\":\"45a\",\"95% CI\":\"42\\u201349\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total females caught\":420,\"Average catch per night\":4,\"% Deterrence\":\"41\",\"Total exiting\":165,\"% Exophily\\ufffd\":\"39a\",\"95% CI\":\"35\\u201344\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total females caught\":619,\"Average catch per night\":6,\"% Deterrence\":\"13\",\"Total exiting\":350,\"% Exophily\\ufffd\":\"57b\",\"95% CI\":\"53\\u201361\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":508,\"Average catch per night\":5,\"% Deterrence\":\"29\",\"Total exiting\":389,\"% Exophily\\ufffd\":\"77c\",\"95% CI\":\"73\\u201380\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total females caught\":537,\"Average catch per night\":6,\"% Deterrence\":\"25\",\"Total exiting\":373,\"% Exophily\\ufffd\":\"70cd\",\"95% CI\":\"66\\u201373\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total females caught\":478,\"Average catch per night\":5,\"% Deterrence\":\"33\",\"Total exiting\":297,\"% Exophily\\ufffd\":\"62bd\",\"95% CI\":\"58\\u201367\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total females caught\":411,\"Average catch per night\":4,\"% Deterrence\":\"42\",\"Total exiting\":241,\"% Exophily\\ufffd\":\"59b\",\"95% CI\":\"54\\u201363\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total females caught\":528,\"Average catch per night\":6,\"% Deterrence\":\"26\",\"Total exiting\":356,\"% Exophily\\ufffd\":\"67d\",\"95% CI\":\"63\\u201371\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total females caught\":486,\"Average catch per night\":5,\"% Deterrence\":\"32\",\"Total exiting\":298,\"% Exophily\\ufffd\":\"61bd\",\"95% CI\":\"57\\u201366\"}}\n", + "\n", + "header: Outcome measures\n", + "\n", + "The efficacy of each experimental hut treatment was expressed in terms of the following outcome measures:\n", + "\n", + "* Exophily-exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda\n", + "* Deterrence-defined as the percentage reduction in numbers of mosquitoes collected in a treated hut relative to the untreated control\n", + "* Blood-feeding-proportion of blood-fed mosquitoes at the time of collection\n", + "\n", + "Where _B__\\({}_{\\mu}\\)_ is the proportion of blood-fed mosquitoes in the untreated control and _B__\\({}_{\\beta}\\)_ is the proportion of blood-fed mosquitoes in the treated hut.\n", + "\n", + "\n", + "- B_{i})}{B_{u}}\\] Where \\(B_{u}\\) is the number of blood-fed mosquitoes in the untreated control and \\(B_{i}\\) is the number of blood-fed mosquitoes in the huts with insecticide treatments.\n", + "* Mortality-proportion of dead mosquitoes after a 72 h holding period Mosquito deterrence, blood-feeding inhibition and personal protection were calculated relative to the untreated net control hut for treatments which involved the LLIN and relative to the untreated hut control for IRS-only treatments.\n", + "\n", + "header: Abstract\n", + "\n", + "Which indoor residual spraying insecticide best complements standard pyrethroid long-lasting insecticidal nets for improved control of pyrethroid resistant malaria vectors?\n", + "\n", + "Thomas Syme, Augustin Fongnikin, Damien Todjinou, Renaud Goveetchan, Mark Rowland, Martin Akogbeto, Corine Nguforo\n", + "\n", + "\n", + "\n", + "Where resources are available, non-pyrethroid IRS can be deployed to complement standard pyrethroid LLINs with the aim of achieving improved vector control and managing insecticide resistance. The impact of the combination may however depend on the type of IRS insecticide deployed. Studies comparing combinations of pyrethroid LLINs with different types of non-pyrethroid IRS products will be necessary for decision making.\n", + "\n", + "header: Methods\n", + "\n", + "The study was conducted at the CREC/LSHTM experimental hut station located in Cove, southern Benin (7deg14degN2deg18degE). The experimental huts are situated in a vast area of rice irrigation, which provide extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzeii_ and _An. gambiae_ sensu stricto (s.s.) occur in sympatry, with the latter present at lower densities and predominantly in the dry season [18]. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold) [18]. Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (>90%) and overexpression of the cytochrome P450, CYP6P3, associated with pyrethroid detoxification [18]. The experimental huts used were of the West African design [19], made from concrete bricks with a corrugated iron roof and a ceiling with palm-thatch mats. Interior walls were cement plastered and each hut was constructed on a concrete base containing a water-filled moat to preclude predators. Entry of mosquitoes occurred via four window slits, 1 cm wide and 30 cm long, positioned on two sides of the hut. A wooden framed veranda made of polyethylene sheeting and screening mesh projected from the rear wall of each hut to capture exiting mosquitoes.\n", + "\n", + "header: Data analysis\n", + "\n", + "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental hut treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to differential attractiveness of the volunteer sleepers and huts.\n", + "\n", + "\n", + "Mortality in susceptibility bioassays was interpreted according to WHO criteria. All analyses were performed in Stata version 15.1.\n", + "\n", + "header: Susceptibility bioassay results: Experimental hut results\n", + "\n", + "A total of 4,698 female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trial period (Tables 3 and S1). Due to the inability to\n", + "\n", + "rotate IRS, it was not possible to distinguish treatment-induced deterrence for the IRS treatments from differential attractiveness due to hut position. The proportion of mosquitoes exiting into the veranda for the untreated hut and untreated net controls were 45% and 39% respectively. Exiting was significantly higher in all experimental hut treatments relative to both controls (p<0.01), suggesting the insecticide treatments induced an irritant response which caused mosquitoes to seek refuge in the veranda. The highest level of mosquito exiting was achieved with beniodicarb IRS alone (77%). Adding beniodicarb IRS to DuraNet(r) also induced significantly higher levels of mosquito exiting compared to DuraNet(r) alone (57% with DuraNet(r) vs. 70% with DuraNet(r) + beniodicarb IRS, p = 0.001). This effect was, however, not observed with chlorfenapyr IRS and pirimiphos-methyl CS IRS; exiting rates were similar between the combinations with these IRS insecticides and DuraNet(r) alone, (59% - 61% vs 57%, p>0.05).\n", + "\n", + "**Blood-feeding and personal protection.** Blood-feeding and personal protection results of wild, pyrethroid-resistant _An. gambiae_ s.l. in the experimental huts are presented in Table 4. Blood-feeding rates with the untreated hut and untreated net controls were 95% and 55% respectively. DuraNet(r) induced significantly lower blood-feeding rates than the control untreated net (33% with DuraNet(r) vs. 55% with untreated net, p<0.001). Meanwhile, blood-feeding was high across all IRS treatments (91-92%) thus providing very limited blood-feeding inhibition (3% - 5%) compared to the untreated hut control (Table 4). All three combinations provided significantly higher levels of blood-feeding inhibition relative to the IRS treatments\n", + "\n", + "alone (60% - 71% vs. 3% - 5%, p<0.001). Between the combinations, DuraNet(r) + bendiocarb IRS induced the lowest blood-feeding rate (28%) and offered personal protection of 78% while DuraNet(r) + chlorfenapyr IRS induced a higher blood-feeding rate (37%, p = 0.015) though providing about the same levels of personal protection (77%).\n", + "\n", + "**Mortality rates in experimental huts.** Overall mortality rates of wild, pyrethroid-resistant _An. gambiae_ s.l. in the untreated hut and untreated net controls were 2% and 4% respectively (Table 5). Mortality with DuraNet(r) was low and did not differ significantly from the untreated net control (8% vs. 4%, p = 0.169). The IRS treatments alone and the combinations induced significantly higher mortality than DuraNet(r) and the untreated controls (p < 0.001); adding any IRS treatment onto DuraNet(r) therefore always significantly improved vector mortality compared to DuraNet(r) alone. Between the IRS only treatments, the highest mortality was achieved with pirimiphos-methyl CS (85%, p < 0.001) while chlorfenapyr and bendiocarb induced fairly similar mortality rates (34% and 28%, p = 0.09). Combining DuraNet(r) with bendiocarb and pirimiphos-methyl CS IRS treatments did not improve mortality compared to the corresponding IRS alone (bendiocarb: 28% vs. 32%, p = 0.265 and pirimiphos-methyl CS: 85% vs. 81%, p = 0.129) (Table 5). With chlorfenapyr IRS, mortality was significantly higher in the combination compared to chlorfenapyr IRS alone over the 4-month trial (34% vs. 46%, p < 0.001) (Fig 3). Between the combinations, the highest mortality was achieved with DuraNet(r) + pirimiphos-methyl CS IRS (81%). Mortality was significantly higher with the DuraNet(r) + chlorfenapyr IRS combination compared to DuraNet(r) + bendiocarb IRS (46% vs. 32%, p < 0.001) (Table 5).\n", + "\n", + "Initial monthly wild mosquito mortality with pirimiphos-methyl CS IRS and chlorfenapyr IRS was steady and did not decline substantially over the course of the 4 months trial both when applied alone and in combination with DuraNet(r) (Figs 1 and 2). By contrast, wild mosquito mortality with bendiocarb IRS declined sharply from ~55% to about 28-32% by the last month of the trial both when applied alone and in combination with DuraNet(r) (Fig 3).\n", + "\n", + "**Wall cone bioassay results.** Mortality rates of the laboratory maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu colony following exposure to IRS-treated walls in monthly, 30 mins wall cone bioassays are presented in Fig 4 with more details in supporting information (S2 Table). On pirimiphos-methyl CS-treated surfaces, cone bioassay mortality was very high (> 85%) throughout all 4 months of the trial. As observed with wild free-flying mosquitoes, a progressive decline in cone bioassay mortality with increasing months elapsed from spraying was observed with bendiocarb, beginning at 63% in month 1 and decreasing to 19% by month 4. Cone bioassay mortality with chlorfenapyr IRS was consistently low throughout the trial,\n", + "ranging from 11-31%. Cone bioassay mortality on untreated control walls did not exceed 10% in any month of the trial (Fig 4).\n", + "\n", + "header: Mosquito entry and exiting.: Discussion\n", + "\n", + "The ultimate purpose of combining IRS with LLINs is to achieve greater levels of vector control through the differential effects of the interventions and modes of action of the insecticides involved than what is achievable with a single intervention on its own. Transmission dynamics models have suggested that the levels of vector mosquito mortality and blood-feeding inhibition observed in an experimental hut setting could be predictive of the capacity of an indoor vector control intervention or a combination of these to control vector populations, reduce vector biting and improve public health impact when deployed on a large scale [22,23]. In this study, we demonstrate that where vectors are resistant to pyrethroids but susceptible to a given non-pyrethroid IRS insecticide, it should be possible to achieve substantially improved vector control by adding the non-pyrethroid IRS to a standard pyrethroid-only LLIN to boost\n", + "\n", + "Fig 1: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pirimphos-methyl CS IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", + "\n", + "Fig 2: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with chlorfenapyr IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", + "\n", + "\n", + "mortality rates through the IRS intervention, while benefiting from the blood-feeding inhibition provided by the LLIN.\n", + "\n", + "The level of improved mortality achieved in the pyrethroid-only LLIN plus non-pyrethroid IRS combinations relative to the pyrethroid LLIN alone was clearly dependent on the type of non-pyrethroid IRS insecticide used. The combination with pirimiphos-methyl CS IRS induced the highest mortality rate (81%) and this can be attributed to the high and prolonged activity of the pirimiphos-methyl CS IRS formulation on cement walls as demonstrated in this study and previous studies in Benin [24]. This substantiates findings from community trials and operational studies demonstrating significant reductions in transmission of malaria by pyrethroid-resistant vector populations when a single round of pirimiphos-methyl CS IRS was deployed against a background of moderate to high coverage with standard pyrethroid nets [25-27]. By contrast the levels of mortality achieved in the combination with bendiocarb IRS was much lower (32%); attributable to the fast decline in efficacy with the insecticide as observed monthly in the experimental huts and in cone bioassays. The poor residual effect of\n", + "\n", + "Fig 4: **Mortality (72 h) of laboratory maintained, insecticide-susceptible _Anopheles gambiae_ sensu stricto Kisumu colony exposed to IRS-treated hut walls in monthly, 30 mins wall cone bioassays in experimental huts in Cove, southern Benin. Error bars represent 95% CI. Approximately fifty (50) 2–3 days old mosquitoes were exposed for 30 mins to each IRS treated hut in batches of 10 per cone and mortality recorded after 72 h.**\n", + "\n", + "Fig 3: **Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato entering experimental huts with bendiocarb IRS applied alone and in combination with DuraNet® in Cove, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.**\n", + "bendiocarb for IRS is well documented [28, 29, 30]. The failure of a combination of bendiocarb treated walls and pyrethroid nets to provide improved control of clinical malaria compared to either intervention alone in a previous RCT in Benin [7] was also largely attributed to the short-lived efficacy of bendiocarb on the treated walls [13, 14]. Multiple IRS campaign rounds may be necessary to achieve sustained levels of improved vector control when bendiocarb IRS is deployed to complement standard pyrethroid LLINs. Given the significant costs associated with running IRS campaigns, these findings raise questions over the suitability of currently available formulations of bendiocarb for IRS and the cost-effectiveness of its combination with pyrethroid nets. Considering the high initial mortality rates usually achieved with the insecticide, reformulation chemistry may help address the short residual efficacy of bendiocarb and improve the utility of this insecticide for vector control.\n", + "\n", + "While mortality in the combinations with pirimiphos-methyl CS IRS and bendiocarb IRS were similar to each IRS alone, the combination with chlorfenapyr IRS induced significantly higher levels of mortality compared to chlorfenapyr IRS alone. This demonstrates an additive effect of the chlorfenapyr IRS plus pyrethroid LLINs combination which was not observed with the other IRS insecticides tested. This trend is consistent with previous experimental hut studies in Benin [31, 32] though the levels of mortality achieved with the combination were substantially higher (73%-83% vs. 46%). The difference in mortality could be due to changes in the composition of the vector population and/or increasing pyrethroid resistance levels over time. Chlorfenapyr is a new repurposed pyrrole insecticide with a unique mode of action that has shown potential for IRS but often inducing moderate mortality rates when applied alone in experimental huts against pyrethroid-resistant malaria vectors [29, 33]. It acts on the oxidative/metabolic pathway of insects hence its action can be enhanced by physical activity in the insect [34]. The additive mortality observed in the chlorfenapyr IRS plus pyrethroid net combination may therefore be attributed to the irritant effect of the pyrethroid in the LLIN on mosquitoes as they alight on the chlorfenapyr-treated wall after failed attempts to feed on the sleeper under the net. In addition, owing to the non-neurotoxic and non-irritant effect of chlorfenapyr [35], mosquitoes may have alighted on chlorfenapyr-treated walls for longer, leading to increased insecticide pick-up, potentially contributing to the additional mortality observed with this combination. The inability of the WHO 30-min cone bioassays to predict wild mosquito mortality with chlorfenapyr IRS in experimental huts [29, 34] is further demonstrated in this study; while cone bioassay mortality of the susceptible Kisumu strain was very low, wild mosquito mortality was higher and consistent throughout the trial confirming previous findings [29]. Considering the prolonged effect of chlorfenapyr IRS on wild mosquitoes [29], substantial and sustained improvements in the control of pyrethroid-resistant vector populations can be expected if the IRS insecticide is deployed to complement pyrethroid LLINs.\n", + "\n", + "IRS is highly effective for malaria vector control when deployed on its own but provides limited personal protection from mosquito biting and this is evident from the high blood-feeding rates observed with the IRS treatments alone. In the absence of a bed net, mosquitoes will usually feed on the human occupants in an IRS treated home before resting on the wall where they pick up the insecticide, consequently, direct blood-feeding inhibition is not expected when the intervention is applied independently. By contrast, pyrethroid LLINs reduce mosquito biting and provide substantial levels of personal protection for the user; an effect which is attributable to the physical barrier of the net and the excito-repellent effect of the pyrethroid insecticide. The findings from this study demonstrate that this effect can persist even against a vector population that has developed intense resistance to pyrethroids as observed in Cove [18]. By combining the IRS treatments with a pyrethroid LLIN, it was possible to achieve substantially improved levels of blood-feeding inhibition and personal protection compared to \n", + "the IRS alone. The reduced exposure to infective bites constitutes a crucial advantage of the combination strategy over IRS alone. The blood-feeding rate in the combination appeared to depend on the type of IRS insecticide used albeit to a lesser extent than the levels of mortality achieved; lower blood-feeding rates and thus higher levels of blood-feeding inhibition were achieved in the combination with benidocarb IRS compared to the combination with chlorfenapyr IRS. This can be due to differences in the mode of action of both IRS insecticides; in contrast to chlorfenapyr, benidocarb acts on the insect's nervous system eliciting an irritant rapid knockdown effect on mosquitoes [35] and this together with the excito-repellent effect of the pyrethroid in the standard pyrethroid LLIN could have contributed to the high levels of early exiting and reduced blood-feeding rates observed when both interventions were combined in a hut.\n", + "\n", + "Overall, the results demonstrate the superiority of the organophosphate, pirimiphos-methyl CS for IRS on its own and in combination with pyrethroid LLINs over benidocarb and the pyrrole, chlorfenapyr. However, this finding may not be generalisable to areas where vectors are resistant to organophosphates. Indeed, previous experimental hut studies in Cote d'Ivoire failed to demonstrate improved vector control with the combination compared to the net alone when standard pyrethroid LLINs were combined with pirimiphos-methyl CS-treated wall linings against a vector population that was resistant to pyrethroids and organophosphates [36]. Resistance to organophosphates and carbamates is unfortunately increasing in malaria vector populations especially in West Africa [37, 38, 39, 40]. To mitigate its impact, vector control programmes are encouraged to rotate between IRS insecticides with different modes of action [41]. Considering that most IRS campaigns will usually be deployed against a background of high LLIN coverage, effective IRS rotation plans should prioritise IRS insecticides which in addition to providing improved and prolonged vector control, can efficiently complement LLINs. Based on the findings of this study, chlorfenapyr IRS shows some potential to be a useful addition to such IRS rotation plans in pyrethroid-resistant areas with high pyrethroid LLIN coverage. It will be interesting to investigate the impact of combining pyrethroid LLINs with other newly approved IRS formulations containing clothianidin [17].\n", + "\n", + "The low mortality rates achieved with the standard pyrethroid net in this study (8%), further demonstrates the threat of pyrethroid resistance on the efficacy of standard pyrethroids. Pyrethroid resistance is widespread in malaria vectors across Africa and increasing in intensity the more they are used [12]. A new generation of LLINs treated with a pyrethroid and non-pyrethroid insecticide are now in advanced development. Studies have demonstrated the potential of some of these nets to provide improved control of clinical malaria transmitted by pyrethroid-resistant malaria vectors compared to standard pyrethroid nets [42, 43, 44]. As next generation nets come into the market, and are rolled out in endemic countries, it will be essential to explore any possible interactions with the different types of IRS insecticides that could be deployed together with them in a combined intervention approach.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Background: Methods\n", + "\n", + "The efficacy of combining a standard pyrethroid LLIN (DuraNet(r)) with IRS insecticides from three chemical classes (bendicocarb, chlorfenapyr and pirimiphos-methyl CS) was evaluated in an experimental hut trial against wild pyrethroid-resistant _Anopheles gambiae_ s.l. in Cove, Benin. The combinations were also compared to each intervention alone. WHO cylinder and CDC bottle bioassays were performed to assess susceptibility of the local _An. gambiae_ s.l. vector population at the Cove hut site to insecticides used in the combinations.\n", + "\n", + "header: Acknowledgments\n", + "\n", + "We thank BASF and Bayer for providing the insecticides. We also thank the technical staff of CREC (Abibath Odojo, Estelle Vigninou, Josias Fagbohoun, Edwige Kpanou etc) for their assistance. We are grateful to the rice farmers at Cove for their support in the hut study.\n", + "\n", + "header: Results\n", + "\n", + "Mortality rates of wild _An. gambiae_ s.l. from Cove in WHO susceptibility and CDC bottle bioassays are presented in Tables 1 and 2 respectively. Low proportions of adult F1 progeny of field-collected _An. gambiae_ s.l. were killed following exposure to alpha-cypermethrin (11%) and permethrin (20%); demonstrating pyrethroid resistance in the vector population. In contrast, the vast majority if not all mosquitoes from Cove were killed following exposure to bendiocarb (98%), fenitrothion (100%) and chlorfenapyr (100%); demonstrating susceptibility to carbamates, organophosphates and chlorfenapyr. With the insecticide susceptible _An. gambiae_ s.s. Kisumu colony, mortality was 100% with all insecticides.\n", + "\n", + "header: Table 2: Susceptibility of field-collected Anopheles gambiae sensu late from Cove to chlorfenapyr in CDC bottle bioassays.\n", + "footer: None\n", + "columns: ['Treatment', 'Strain', 'N exposed', 'N dead', '% Mortality�', '95% CI']\n", + "\n", + "{\"0\":{\"Treatment\":\"Control\",\"Strain\":\"Kisumu\",\"N exposed\":101,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"1\":{\"Treatment\":\"Control\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":100,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"2\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Kisumu\",\"N exposed\":103,\"N dead\":103,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"},\"3\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":102,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"}}\n", + "\n", + "header: Susceptibility bioassays\n", + "\n", + "WHO susceptibility cylinder bioassays [20] and CDC bottle bioassays [21] were performed in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove experimental hut site to the constituent insecticides in the hut treatments. Adult F1 progeny of field-collected _An. gambiae_ s.l. were exposed to filter papers treated with discriminating doses of alpha-cypermethrin (0.05%), permethrin (0.75%), bendiocarb (0.1%) and fenitrothion (1.0%) in WHO cylinders and CDC bottles impregnated with 100 mg of chlorfenapyr. Comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu colony. For each insecticide and strain, 100 adult female mosquitoes aged 2-3 days were introduced to four insecticide-treated cylinders/bottles in batches of 25. In the control arms, mosquitoes were exposed to silicone oil-treated filter papers and acetone-treated bottles. After 1 h exposure, mosquitoes were transferred to holding tubes and observation cups and provided access to 10% glucose solution (w/v). Mortality was recorded after 24 h for mosquitoes exposed to permethrin, alpha-cypermethrin, bendiocarb and fenitrothion in WHO cylinder bioassays and every 24 h up to 72 h for mosquitoes exposed to chlorfenapyr in CDC bottles. The insecticide treated filter papers used for the WHO cylinder bioassays were obtained from Universiti Sains Malaysia.\n", + "\n", + "header: Results\n", + "\n", + "Susceptibility bioassays revealed that the vector population at Cove, was resistant to pyrethroids (<20% mortality) but susceptible to carbamates, chlorfenapyr and organophosphates (>=98% mortality). Mortality of wild free-flying pyrethroid resistant _An. gambiae_ s.l. entering the hut with the untreated net control (4%) did not differ significantly from DuraNet(r) alone (8%, p = 0.169). Pirimiphos-methyl CS IRS induced the highest mortality both on its own (85%) and in combination with DuraNet(r) (81%). Mortality with the DuraNet(r) + chlorfenapyr IRS combination was significantly higher than each intervention alone (46% vs. 33% and 8%, p<0.05) demonstrating an additive effect. The DuraNet(r) + bendicocarb IRS combination induced significantly lower mortality compared to the other combinations (32%, p<0.05). Blood-feeding inhibition was very low with the IRS treatments alone (3-5%) but \n", + "increased significantly when they were combined with DuraNet(r) (61% - 71%, p<0.05). Blood-feeding rates in the combinations were similar to the net alone. Adding bendicorarb IRS to DuraNet(r) induced significantly lower levels of mosquito feeding compared to adding chlorfenapyr IRS (28% vs. 37%, p = 0.015).\n", + "\n", + "header: Conclusions\n", + "\n", + "Adding non-pyrethroid IRS to standard pyrethroid-only LLINs against a pyrethroid-resistant vector population which is susceptible to the IRS insecticide, can provide higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone. Adding pirimphos-methyl CS IRS may provide substantial improvements in vector control while adding chlorfenapyr IRS can demonstrate an additive effect relative to both interventions alone. Adding bendicorarb IRS may show limited enhancements in vector control owing to its short residual effect.\n", + "\n", + "header: Table 4. Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", + "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", + "columns: ['Treatment', 'Total blood-fed', '% Blood-fed*', '95% CI', '% Blood-feeding inhibition', '% Personal protection']\n", + "\n", + "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total blood-fed\":675,\"% Blood-fed*\":\"95a\",\"95% CI\":\"93\\u201397\",\"% Blood-feeding inhibition\":\"\\u2013\",\"% Personal protection\":\"\\u2013\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total blood-fed\":231,\"% Blood-fed*\":\"55b\",\"95% CI\":\"50\\u201360\",\"% Blood-feeding inhibition\":\"42\",\"% Personal protection\":\"66\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total blood-fed\":202,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201336\",\"% Blood-feeding inhibition\":\"66\",\"% Personal protection\":\"70\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total blood-fed\":460,\"% Blood-fed*\":\"91e\",\"95% CI\":\"88\\u201393\",\"% Blood-feeding inhibition\":\"5\",\"% Personal protection\":\"32\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total blood-fed\":150,\"% Blood-fed*\":\"28c\",\"95% CI\":\"24\\u201332\",\"% Blood-feeding inhibition\":\"71\",\"% Personal protection\":\"78\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total blood-fed\":440,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201394\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"35\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total blood-fed\":153,\"% Blood-fed*\":\"37d\",\"95% CI\":\"33\\u201342\",\"% Blood-feeding inhibition\":\"61\",\"% Personal protection\":\"77\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total blood-fed\":488,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201395\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"28\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total blood-fed\":160,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201337\",\"% Blood-feeding inhibition\":\"65\",\"% Personal protection\":\"76\"}}\n", + "\n", + "header: Conclusions\n", + "\n", + "Adding non-pyrethroid IRS to standard pyrethroid-only nets against a pyrethroid-resistant vector population which was susceptible to the IRS insecticide, generally provided higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone; the IRS intervention was responsible for improved mosquito mortality while the pyrethroid net provided blood-feeding inhibition. The combination with pirimiphos-methyl CS IRS was the most efficacious. Adding chlorfenapyr IRS to the pyrethroid LLIN demonstrated an additive mortality effect relative to both interventions alone. The combination with benidocarb IRS provided the \n", + "lowest levels of mortality owing to its short residual effect but also induced lower levels of mosquito feeding compared to combinations with the other IRS insecticides.\n", + "\n", + "header: Ethical considerations\n", + "\n", + "Ethical approval was obtained from the ethics review committees of the London School of Hygiene & Tropical Medicine (LSHTM) (Reference No. 15265) and the local Ministry of Health in Benin (Reference No. N'39/CEIC/CREC). All volunteers provided informed written consent and were offered a course of chemoprophylaxis (doxycycline) prior to their participation in the study and up to four weeks following its completion. A nurse was available throughout the study to assess any cases of fever. In the event a volunteer tested positive for malaria, they were immediately withdrawn from the trial and administered effective treatment.\n", + "\n", + "header: Outcome measures\n", + "\n", + "The efficacy of each experimental hut treatment was expressed in terms of the following outcome measures:\n", + "\n", + "* Exophily-exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda\n", + "* Deterrence-defined as the percentage reduction in numbers of mosquitoes collected in a treated hut relative to the untreated control\n", + "* Blood-feeding-proportion of blood-fed mosquitoes at the time of collection\n", + "\n", + "Where _B__\\({}_{\\mu}\\)_ is the proportion of blood-fed mosquitoes in the untreated control and _B__\\({}_{\\beta}\\)_ is the proportion of blood-fed mosquitoes in the treated hut.\n", + "\n", + "\n", + "- B_{i})}{B_{u}}\\] Where \\(B_{u}\\) is the number of blood-fed mosquitoes in the untreated control and \\(B_{i}\\) is the number of blood-fed mosquitoes in the huts with insecticide treatments.\n", + "* Mortality-proportion of dead mosquitoes after a 72 h holding period Mosquito deterrence, blood-feeding inhibition and personal protection were calculated relative to the untreated net control hut for treatments which involved the LLIN and relative to the untreated hut control for IRS-only treatments.\n", + "\n", + "header: Background\n", + "\n", + "Insecticide-treated nets (ITNs) and indoor residual spraying (IRS) are core interventions for preventing and controlling malaria [1]. Both methods have independently proven to be highly effective in reducing the burden of disease in diverse epidemiological settings. The substantial reductions in malaria morbidity and mortality observed in endemic countries over the last two decades, has been attributed to a significant increase in the roll out of ITNs and IRS during this period [2]. Where resources are available, both interventions have been deployed together in the same geographical location, with the primary aim of reducing the disease burden to a greater extent than could be achieved with either method alone [3,4].\n", + "\n", + "The benefits of combining these interventions is, however, contentious. Some community-randomised controlled trials (RCTs) have compared epidemiological outcomes in communities receiving pyrethroid long-lasting insecticidal nets (LLINs) plus IRS versus LLINs alone, yielding conflicting results. Whilst trials in Tanzania [5] and Sudan [6] associated combined use of LLINs and IRS with significant reductions in malaria infection prevalence, similar studies in Benin [7], Eritrea [8], Ethiopia [9] and The Gambla [10] reported no such effect. Based on a Cochrane review demonstrating the inconsistencies in epidemiological evidence [4], the World Health Organisation (WHO) has recently issued a provisional recommendation against combining LLINs and IRS as a means of reducing malaria-associated morbidity and mortality [1]. National Malaria Control Programmes are encouraged to prioritise delivering either ITNs or IRS at high coverage and to a high standard, rather than introducing the second intervention as a means to compensate for deficiencies in the implementation of the first. However, this should not be interpreted to mean that the combined IRS and ITN approach is redundant in all settings. Considering the recent stall in progress against malaria [11] and increasing prevalence of pyrethroid resistance in malaria vector populations across Africa [12], combining interventions may be vital for high transmission settings and insecticide resistance management. Vector control programmes are expected to be guided by local evidence to decide when, where and how to combine IRS with ITNs for different epidemiological settings [1].\n", + "\n", + "Evidence from RCTs and operational studies suggests that the impact of co-implementing LLINs and IRS may depend on a number of location-specific factors including: intervention coverage, transmission intensity, vector behaviour, choice of IRS insecticide and insecticide resistance [13,14]. The choice of IRS insecticide for a specific geographical setting whether deployed alone or together with LLINs will be influenced largely by the susceptibility of the target vector population to the insecticide, its mode of action, chemical properties and residual \n", + "activity on wall substrates. To maximise the impact of the combined intervention approach, it is important to consider the interactions that may occur between the insecticide in the LLIN and the chosen IRS insecticide. Where the mode of action of the IRS insecticides is not complementary to the insecticide on the net, the combination might be redundant or result in lower levels of vector control than what is achievable with either intervention alone. Although pyrethroids are not recommended for IRS, the redundancy of combining pyrethroid IRS or wall linings with pyrethroid LLINs has been clearly demonstrated in experimental but studies against pyrethroid-resistant malaria vectors in West Africa [15,16].\n", + "\n", + "Insecticides belonging to four classes of compounds have been approved by the WHO for IRS against malaria vectors; pyrethroids, organophosphates, carbamates and more recently, the neonicotinoid clothianidin [1,17]. While RCTs are the most robust method for generating evidence on the impact of combining vector control interventions, they are often time-consuming, expensive and unrealistic in some settings. Evidence from experimental but trials may provide some insights on what to expect when different types IRS insecticides are deployed to complement pyrethroid-only nets. In this study, we compared the impact of combining pyrethroid LLINs with IRS insecticides from three distinct chemical classes in experimental huts against wild free-flying pyrethroid-resistant malaria vectors in southern Benin.\n", + "\n", + "header: Study site and experimental huts: Experimental hut treatments\n", + "\n", + "The following treatments were assessed in 9 experimental huts:\n", + "\n", + "1. Control (untreated hut)\n", + "2. Control (untreated net)\n", + "3. DuraNet(r) (Alpha-cypermethrin LLIN, 261 mg/m2, Shobikaa Impex)\n", + "4. Bendiocarb IRS applied at 400 mg/m2 (Ficam(r) WP, Bayer)\n", + "5. DuraNet(r) + Bendiocarb IRS applied at 400 mg/m2\n", + "6. Chlorfenapyr IRS applied at 250 mg/m2 (Sylando(r) 240SC, BASF)\n", + "7. DuraNet(r) + Chlorfenapryr IRS applied at 250 mg/m2\n", + "8. Pirimiphos-methyl CS IRS applied at 1000 mg/m2 (Actellic(r) 300CS, Syngenta)\n", + "9. DuraNet(r) + Pirimiphos-methyl CS IRS applied at 1000 mg/m2\n", + "\n", + "Interior hut walls were sprayed from top to bottom with IRS insecticide solutions using a Hudson X-pert(r) compression sprayer equipped with a flat-fan nozzle. To improve spraying accuracy, spray swaths were pre-marked on hut walls and a guidance pole was attached to the end of the spray lance to maintain a fixed distance to the wall. After spraying each hut, the volume remaining in the spray tank was measured to assess the overall volume sprayed. All spray volumes were within 30% of the target. The palm match used on the ceiling was sprayed flat on the ground outside the experimental hut and allowed to dry for 2 hours prior to being fitted on the ceiling of the hut. Three replicate nets were used per LLIN treatment and these were rotated every 2 nights within the same hut. To simulate wear and tear from field use, 6 holes each measuring 16 cm2 were cut into each bed net (one per panel) used in the trial.\n", + "\n", + "header: Data analysis\n", + "\n", + "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental hut treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to differential attractiveness of the volunteer sleepers and huts.\n", + "\n", + "\n", + "Mortality in susceptibility bioassays was interpreted according to WHO criteria. All analyses were performed in Stata version 15.1.\n", + "\n", + "header: Trial procedure\n", + "\n", + "The trial began three days after IRS application and continued for 4 months, between July and October 2018 and followed WHO guidelines [19]. Nine (9) consenting human volunteers kept in experimental huts each trial night to attract mosquitoes. To account for bias due to differential attractiveness to mosquitoes, volunteers were rotated through experimental huts daily in accordance with a predetermined Latin square design. To mitigate the effect of hut position on mosquito entry, bed nets were rotated through experimental huts on a weekly basis. IRS treatments could not be rotated thus remained fixed throughout the trial. At dawn, sleepers collected all mosquitoes from under the net, the sleeping room and the veranda using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were subsequently transferred to the laboratory for morphological identification and scoring of blood-feeding and mortality. To account for the slow-action of chlorfenapyr, delayed mortality was recorded every 24 h up to 72 h after collection for all treatments. All alive _An. gambiae_ s.l. were held at 27 +- 2deg C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution.\n", + "\n", + "header: Susceptibility bioassay results: Experimental hut results\n", + "\n", + "A total of 4,698 female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trial period (Tables 3 and S1). Due to the inability to\n", + "\n", + "rotate IRS, it was not possible to distinguish treatment-induced deterrence for the IRS treatments from differential attractiveness due to hut position. The proportion of mosquitoes exiting into the veranda for the untreated hut and untreated net controls were 45% and 39% respectively. Exiting was significantly higher in all experimental hut treatments relative to both controls (p<0.01), suggesting the insecticide treatments induced an irritant response which caused mosquitoes to seek refuge in the veranda. The highest level of mosquito exiting was achieved with beniodicarb IRS alone (77%). Adding beniodicarb IRS to DuraNet(r) also induced significantly higher levels of mosquito exiting compared to DuraNet(r) alone (57% with DuraNet(r) vs. 70% with DuraNet(r) + beniodicarb IRS, p = 0.001). This effect was, however, not observed with chlorfenapyr IRS and pirimiphos-methyl CS IRS; exiting rates were similar between the combinations with these IRS insecticides and DuraNet(r) alone, (59% - 61% vs 57%, p>0.05).\n", + "\n", + "**Blood-feeding and personal protection.** Blood-feeding and personal protection results of wild, pyrethroid-resistant _An. gambiae_ s.l. in the experimental huts are presented in Table 4. Blood-feeding rates with the untreated hut and untreated net controls were 95% and 55% respectively. DuraNet(r) induced significantly lower blood-feeding rates than the control untreated net (33% with DuraNet(r) vs. 55% with untreated net, p<0.001). Meanwhile, blood-feeding was high across all IRS treatments (91-92%) thus providing very limited blood-feeding inhibition (3% - 5%) compared to the untreated hut control (Table 4). All three combinations provided significantly higher levels of blood-feeding inhibition relative to the IRS treatments\n", + "\n", + "alone (60% - 71% vs. 3% - 5%, p<0.001). Between the combinations, DuraNet(r) + bendiocarb IRS induced the lowest blood-feeding rate (28%) and offered personal protection of 78% while DuraNet(r) + chlorfenapyr IRS induced a higher blood-feeding rate (37%, p = 0.015) though providing about the same levels of personal protection (77%).\n", + "\n", + "**Mortality rates in experimental huts.** Overall mortality rates of wild, pyrethroid-resistant _An. gambiae_ s.l. in the untreated hut and untreated net controls were 2% and 4% respectively (Table 5). Mortality with DuraNet(r) was low and did not differ significantly from the untreated net control (8% vs. 4%, p = 0.169). The IRS treatments alone and the combinations induced significantly higher mortality than DuraNet(r) and the untreated controls (p < 0.001); adding any IRS treatment onto DuraNet(r) therefore always significantly improved vector mortality compared to DuraNet(r) alone. Between the IRS only treatments, the highest mortality was achieved with pirimiphos-methyl CS (85%, p < 0.001) while chlorfenapyr and bendiocarb induced fairly similar mortality rates (34% and 28%, p = 0.09). Combining DuraNet(r) with bendiocarb and pirimiphos-methyl CS IRS treatments did not improve mortality compared to the corresponding IRS alone (bendiocarb: 28% vs. 32%, p = 0.265 and pirimiphos-methyl CS: 85% vs. 81%, p = 0.129) (Table 5). With chlorfenapyr IRS, mortality was significantly higher in the combination compared to chlorfenapyr IRS alone over the 4-month trial (34% vs. 46%, p < 0.001) (Fig 3). Between the combinations, the highest mortality was achieved with DuraNet(r) + pirimiphos-methyl CS IRS (81%). Mortality was significantly higher with the DuraNet(r) + chlorfenapyr IRS combination compared to DuraNet(r) + bendiocarb IRS (46% vs. 32%, p < 0.001) (Table 5).\n", + "\n", + "Initial monthly wild mosquito mortality with pirimiphos-methyl CS IRS and chlorfenapyr IRS was steady and did not decline substantially over the course of the 4 months trial both when applied alone and in combination with DuraNet(r) (Figs 1 and 2). By contrast, wild mosquito mortality with bendiocarb IRS declined sharply from ~55% to about 28-32% by the last month of the trial both when applied alone and in combination with DuraNet(r) (Fig 3).\n", + "\n", + "**Wall cone bioassay results.** Mortality rates of the laboratory maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu colony following exposure to IRS-treated walls in monthly, 30 mins wall cone bioassays are presented in Fig 4 with more details in supporting information (S2 Table). On pirimiphos-methyl CS-treated surfaces, cone bioassay mortality was very high (> 85%) throughout all 4 months of the trial. As observed with wild free-flying mosquitoes, a progressive decline in cone bioassay mortality with increasing months elapsed from spraying was observed with bendiocarb, beginning at 63% in month 1 and decreasing to 19% by month 4. Cone bioassay mortality with chlorfenapyr IRS was consistently low throughout the trial,\n", + "ranging from 11-31%. Cone bioassay mortality on untreated control walls did not exceed 10% in any month of the trial (Fig 4).\n", + "\n", + "header: Abstract\n", + "\n", + "Which indoor residual spraying insecticide best complements standard pyrethroid long-lasting insecticidal nets for improved control of pyrethroid resistant malaria vectors?\n", + "\n", + "Thomas Syme, Augustin Fongnikin, Damien Todjinou, Renaud Goveetchan, Mark Rowland, Martin Akogbeto, Corine Nguforo\n", + "\n", + "\n", + "\n", + "Where resources are available, non-pyrethroid IRS can be deployed to complement standard pyrethroid LLINs with the aim of achieving improved vector control and managing insecticide resistance. The impact of the combination may however depend on the type of IRS insecticide deployed. Studies comparing combinations of pyrethroid LLINs with different types of non-pyrethroid IRS products will be necessary for decision making.\n", + "\n", + "header: Table 1: WHO susceptibility cylinder bioassay results with Anopheles gambiae sensu late from Cove.\n", + "footer: None\n", + "columns: ['Treatment', 'Strain', 'N exposed', 'N dead', '% Mortality', '95% CI']\n", + "\n", + "{\"0\":{\"Treatment\":\"Control\",\"Strain\":\"Kisumu\",\"N exposed\":102,\"N dead\":0,\"% Mortality\":0,\"95% CI\":\"\\u2013\"},\"1\":{\"Treatment\":null,\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":0,\"% Mortality\":0,\"95% CI\":\"\\u2013\"},\"2\":{\"Treatment\":\"Alpha-cypermethrin (0.05%)\",\"Strain\":\"Kisumu\",\"N exposed\":102,\"N dead\":102,\"% Mortality\":100,\"95% CI\":\"\\u2013\"},\"3\":{\"Treatment\":null,\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":11,\"% Mortality\":11,\"95% CI\":\"5\\u201317\"},\"4\":{\"Treatment\":\"Permethrin (0.75%)\",\"Strain\":\"Kisumu\",\"N exposed\":104,\"N dead\":104,\"% Mortality\":100,\"95% CI\":\"\\u2013\"},\"5\":{\"Treatment\":null,\"Strain\":\"Cov\\u00e8\",\"N exposed\":105,\"N dead\":21,\"% Mortality\":20,\"95% CI\":\"12\\u201328\"},\"6\":{\"Treatment\":\"Bendiocarb (0.1%)\",\"Strain\":\"Kisumu\",\"N exposed\":104,\"N dead\":104,\"% Mortality\":100,\"95% CI\":\"\\u2013\"},\"7\":{\"Treatment\":null,\"Strain\":\"Cov\\u00e8\",\"N exposed\":100,\"N dead\":96,\"% Mortality\":98,\"95% CI\":\"96\\u2013100\"},\"8\":{\"Treatment\":\"Fenitrothion (1%)\",\"Strain\":\"Kisumu\",\"N exposed\":103,\"N dead\":103,\"% Mortality\":100,\"95% CI\":\"\\u2013\"},\"9\":{\"Treatment\":null,\"Strain\":\"Cov\\u00e8\",\"N exposed\":101,\"N dead\":101,\"% Mortality\":100,\"95% CI\":\"\\u2013\"}}\n", + "\n", + "header: Table 3. Overall entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", + "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", + "columns: ['Treatment', 'Total females caught', 'Average catch per night', '% Deterrence', 'Total exiting', '% Exophily�', '95% CI']\n", + "\n", + "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total females caught\":711,\"Average catch per night\":7,\"% Deterrence\":\"\\u2013\",\"Total exiting\":322,\"% Exophily\\ufffd\":\"45a\",\"95% CI\":\"42\\u201349\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total females caught\":420,\"Average catch per night\":4,\"% Deterrence\":\"41\",\"Total exiting\":165,\"% Exophily\\ufffd\":\"39a\",\"95% CI\":\"35\\u201344\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total females caught\":619,\"Average catch per night\":6,\"% Deterrence\":\"13\",\"Total exiting\":350,\"% Exophily\\ufffd\":\"57b\",\"95% CI\":\"53\\u201361\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":508,\"Average catch per night\":5,\"% Deterrence\":\"29\",\"Total exiting\":389,\"% Exophily\\ufffd\":\"77c\",\"95% CI\":\"73\\u201380\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total females caught\":537,\"Average catch per night\":6,\"% Deterrence\":\"25\",\"Total exiting\":373,\"% Exophily\\ufffd\":\"70cd\",\"95% CI\":\"66\\u201373\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total females caught\":478,\"Average catch per night\":5,\"% Deterrence\":\"33\",\"Total exiting\":297,\"% Exophily\\ufffd\":\"62bd\",\"95% CI\":\"58\\u201367\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total females caught\":411,\"Average catch per night\":4,\"% Deterrence\":\"42\",\"Total exiting\":241,\"% Exophily\\ufffd\":\"59b\",\"95% CI\":\"54\\u201363\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total females caught\":528,\"Average catch per night\":6,\"% Deterrence\":\"26\",\"Total exiting\":356,\"% Exophily\\ufffd\":\"67d\",\"95% CI\":\"63\\u201371\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total females caught\":486,\"Average catch per night\":5,\"% Deterrence\":\"32\",\"Total exiting\":298,\"% Exophily\\ufffd\":\"61bd\",\"95% CI\":\"57\\u201366\"}}\n", + "\n", + "header: Methods\n", + "\n", + "The study was conducted at the CREC/LSHTM experimental hut station located in Cove, southern Benin (7deg14degN2deg18degE). The experimental huts are situated in a vast area of rice irrigation, which provide extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzeii_ and _An. gambiae_ sensu stricto (s.s.) occur in sympatry, with the latter present at lower densities and predominantly in the dry season [18]. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold) [18]. Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (>90%) and overexpression of the cytochrome P450, CYP6P3, associated with pyrethroid detoxification [18]. The experimental huts used were of the West African design [19], made from concrete bricks with a corrugated iron roof and a ceiling with palm-thatch mats. Interior walls were cement plastered and each hut was constructed on a concrete base containing a water-filled moat to preclude predators. Entry of mosquitoes occurred via four window slits, 1 cm wide and 30 cm long, positioned on two sides of the hut. A wooden framed veranda made of polyethylene sheeting and screening mesh projected from the rear wall of each hut to capture exiting mosquitoes.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Acknowledgments\n", + "\n", + "We thank BASF and Bayer for providing the insecticides. We also thank the technical staff of CREC (Abibath Odojo, Estelle Vigninou, Josias Fagbohoun, Edwige Kpanou etc) for their assistance. We are grateful to the rice farmers at Cove for their support in the hut study.\n", + "\n", + "header: Background: Methods\n", + "\n", + "The efficacy of combining a standard pyrethroid LLIN (DuraNet(r)) with IRS insecticides from three chemical classes (bendicocarb, chlorfenapyr and pirimiphos-methyl CS) was evaluated in an experimental hut trial against wild pyrethroid-resistant _Anopheles gambiae_ s.l. in Cove, Benin. The combinations were also compared to each intervention alone. WHO cylinder and CDC bottle bioassays were performed to assess susceptibility of the local _An. gambiae_ s.l. vector population at the Cove hut site to insecticides used in the combinations.\n", + "\n", + "header: Results\n", + "\n", + "Susceptibility bioassays revealed that the vector population at Cove, was resistant to pyrethroids (<20% mortality) but susceptible to carbamates, chlorfenapyr and organophosphates (>=98% mortality). Mortality of wild free-flying pyrethroid resistant _An. gambiae_ s.l. entering the hut with the untreated net control (4%) did not differ significantly from DuraNet(r) alone (8%, p = 0.169). Pirimiphos-methyl CS IRS induced the highest mortality both on its own (85%) and in combination with DuraNet(r) (81%). Mortality with the DuraNet(r) + chlorfenapyr IRS combination was significantly higher than each intervention alone (46% vs. 33% and 8%, p<0.05) demonstrating an additive effect. The DuraNet(r) + bendicocarb IRS combination induced significantly lower mortality compared to the other combinations (32%, p<0.05). Blood-feeding inhibition was very low with the IRS treatments alone (3-5%) but \n", + "increased significantly when they were combined with DuraNet(r) (61% - 71%, p<0.05). Blood-feeding rates in the combinations were similar to the net alone. Adding bendicorarb IRS to DuraNet(r) induced significantly lower levels of mosquito feeding compared to adding chlorfenapyr IRS (28% vs. 37%, p = 0.015).\n", + "\n", + "header: Results\n", + "\n", + "Mortality rates of wild _An. gambiae_ s.l. from Cove in WHO susceptibility and CDC bottle bioassays are presented in Tables 1 and 2 respectively. Low proportions of adult F1 progeny of field-collected _An. gambiae_ s.l. were killed following exposure to alpha-cypermethrin (11%) and permethrin (20%); demonstrating pyrethroid resistance in the vector population. In contrast, the vast majority if not all mosquitoes from Cove were killed following exposure to bendiocarb (98%), fenitrothion (100%) and chlorfenapyr (100%); demonstrating susceptibility to carbamates, organophosphates and chlorfenapyr. With the insecticide susceptible _An. gambiae_ s.s. Kisumu colony, mortality was 100% with all insecticides.\n", + "\n", + "header: Conclusions\n", + "\n", + "Adding non-pyrethroid IRS to standard pyrethroid-only LLINs against a pyrethroid-resistant vector population which is susceptible to the IRS insecticide, can provide higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone. Adding pirimphos-methyl CS IRS may provide substantial improvements in vector control while adding chlorfenapyr IRS can demonstrate an additive effect relative to both interventions alone. Adding bendicorarb IRS may show limited enhancements in vector control owing to its short residual effect.\n", + "\n", + "header: Conclusions\n", + "\n", + "Adding non-pyrethroid IRS to standard pyrethroid-only nets against a pyrethroid-resistant vector population which was susceptible to the IRS insecticide, generally provided higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone; the IRS intervention was responsible for improved mosquito mortality while the pyrethroid net provided blood-feeding inhibition. The combination with pirimiphos-methyl CS IRS was the most efficacious. Adding chlorfenapyr IRS to the pyrethroid LLIN demonstrated an additive mortality effect relative to both interventions alone. The combination with benidocarb IRS provided the \n", + "lowest levels of mortality owing to its short residual effect but also induced lower levels of mosquito feeding compared to combinations with the other IRS insecticides.\n", + "\n", + "header: Susceptibility bioassays\n", + "\n", + "WHO susceptibility cylinder bioassays [20] and CDC bottle bioassays [21] were performed in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove experimental hut site to the constituent insecticides in the hut treatments. Adult F1 progeny of field-collected _An. gambiae_ s.l. were exposed to filter papers treated with discriminating doses of alpha-cypermethrin (0.05%), permethrin (0.75%), bendiocarb (0.1%) and fenitrothion (1.0%) in WHO cylinders and CDC bottles impregnated with 100 mg of chlorfenapyr. Comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu colony. For each insecticide and strain, 100 adult female mosquitoes aged 2-3 days were introduced to four insecticide-treated cylinders/bottles in batches of 25. In the control arms, mosquitoes were exposed to silicone oil-treated filter papers and acetone-treated bottles. After 1 h exposure, mosquitoes were transferred to holding tubes and observation cups and provided access to 10% glucose solution (w/v). Mortality was recorded after 24 h for mosquitoes exposed to permethrin, alpha-cypermethrin, bendiocarb and fenitrothion in WHO cylinder bioassays and every 24 h up to 72 h for mosquitoes exposed to chlorfenapyr in CDC bottles. The insecticide treated filter papers used for the WHO cylinder bioassays were obtained from Universiti Sains Malaysia.\n", + "\n", + "header: Table 4. Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", + "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", + "columns: ['Treatment', 'Total blood-fed', '% Blood-fed*', '95% CI', '% Blood-feeding inhibition', '% Personal protection']\n", + "\n", + "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total blood-fed\":675,\"% Blood-fed*\":\"95a\",\"95% CI\":\"93\\u201397\",\"% Blood-feeding inhibition\":\"\\u2013\",\"% Personal protection\":\"\\u2013\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total blood-fed\":231,\"% Blood-fed*\":\"55b\",\"95% CI\":\"50\\u201360\",\"% Blood-feeding inhibition\":\"42\",\"% Personal protection\":\"66\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total blood-fed\":202,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201336\",\"% Blood-feeding inhibition\":\"66\",\"% Personal protection\":\"70\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total blood-fed\":460,\"% Blood-fed*\":\"91e\",\"95% CI\":\"88\\u201393\",\"% Blood-feeding inhibition\":\"5\",\"% Personal protection\":\"32\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total blood-fed\":150,\"% Blood-fed*\":\"28c\",\"95% CI\":\"24\\u201332\",\"% Blood-feeding inhibition\":\"71\",\"% Personal protection\":\"78\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total blood-fed\":440,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201394\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"35\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total blood-fed\":153,\"% Blood-fed*\":\"37d\",\"95% CI\":\"33\\u201342\",\"% Blood-feeding inhibition\":\"61\",\"% Personal protection\":\"77\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total blood-fed\":488,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201395\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"28\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total blood-fed\":160,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201337\",\"% Blood-feeding inhibition\":\"65\",\"% Personal protection\":\"76\"}}\n", + "\n", + "header: Ethical considerations\n", + "\n", + "Ethical approval was obtained from the ethics review committees of the London School of Hygiene & Tropical Medicine (LSHTM) (Reference No. 15265) and the local Ministry of Health in Benin (Reference No. N'39/CEIC/CREC). All volunteers provided informed written consent and were offered a course of chemoprophylaxis (doxycycline) prior to their participation in the study and up to four weeks following its completion. A nurse was available throughout the study to assess any cases of fever. In the event a volunteer tested positive for malaria, they were immediately withdrawn from the trial and administered effective treatment.\n", + "\n", + "header: Outcome measures\n", + "\n", + "The efficacy of each experimental hut treatment was expressed in terms of the following outcome measures:\n", + "\n", + "* Exophily-exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda\n", + "* Deterrence-defined as the percentage reduction in numbers of mosquitoes collected in a treated hut relative to the untreated control\n", + "* Blood-feeding-proportion of blood-fed mosquitoes at the time of collection\n", + "\n", + "Where _B__\\({}_{\\mu}\\)_ is the proportion of blood-fed mosquitoes in the untreated control and _B__\\({}_{\\beta}\\)_ is the proportion of blood-fed mosquitoes in the treated hut.\n", + "\n", + "\n", + "- B_{i})}{B_{u}}\\] Where \\(B_{u}\\) is the number of blood-fed mosquitoes in the untreated control and \\(B_{i}\\) is the number of blood-fed mosquitoes in the huts with insecticide treatments.\n", + "* Mortality-proportion of dead mosquitoes after a 72 h holding period Mosquito deterrence, blood-feeding inhibition and personal protection were calculated relative to the untreated net control hut for treatments which involved the LLIN and relative to the untreated hut control for IRS-only treatments.\n", + "\n", + "header: Table 2: Susceptibility of field-collected Anopheles gambiae sensu late from Cove to chlorfenapyr in CDC bottle bioassays.\n", + "footer: None\n", + "columns: ['Treatment', 'Strain', 'N exposed', 'N dead', '% Mortality�', '95% CI']\n", + "\n", + "{\"0\":{\"Treatment\":\"Control\",\"Strain\":\"Kisumu\",\"N exposed\":101,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"1\":{\"Treatment\":\"Control\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":100,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"2\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Kisumu\",\"N exposed\":103,\"N dead\":103,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"},\"3\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":102,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"}}\n", + "\n", + "header: Study site and experimental huts: Experimental hut treatments\n", + "\n", + "The following treatments were assessed in 9 experimental huts:\n", + "\n", + "1. Control (untreated hut)\n", + "2. Control (untreated net)\n", + "3. DuraNet(r) (Alpha-cypermethrin LLIN, 261 mg/m2, Shobikaa Impex)\n", + "4. Bendiocarb IRS applied at 400 mg/m2 (Ficam(r) WP, Bayer)\n", + "5. DuraNet(r) + Bendiocarb IRS applied at 400 mg/m2\n", + "6. Chlorfenapyr IRS applied at 250 mg/m2 (Sylando(r) 240SC, BASF)\n", + "7. DuraNet(r) + Chlorfenapryr IRS applied at 250 mg/m2\n", + "8. Pirimiphos-methyl CS IRS applied at 1000 mg/m2 (Actellic(r) 300CS, Syngenta)\n", + "9. DuraNet(r) + Pirimiphos-methyl CS IRS applied at 1000 mg/m2\n", + "\n", + "Interior hut walls were sprayed from top to bottom with IRS insecticide solutions using a Hudson X-pert(r) compression sprayer equipped with a flat-fan nozzle. To improve spraying accuracy, spray swaths were pre-marked on hut walls and a guidance pole was attached to the end of the spray lance to maintain a fixed distance to the wall. After spraying each hut, the volume remaining in the spray tank was measured to assess the overall volume sprayed. All spray volumes were within 30% of the target. The palm match used on the ceiling was sprayed flat on the ground outside the experimental hut and allowed to dry for 2 hours prior to being fitted on the ceiling of the hut. Three replicate nets were used per LLIN treatment and these were rotated every 2 nights within the same hut. To simulate wear and tear from field use, 6 holes each measuring 16 cm2 were cut into each bed net (one per panel) used in the trial.\n", + "\n", + "header: Susceptibility bioassay results: Experimental hut results\n", + "\n", + "A total of 4,698 female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trial period (Tables 3 and S1). Due to the inability to\n", + "\n", + "rotate IRS, it was not possible to distinguish treatment-induced deterrence for the IRS treatments from differential attractiveness due to hut position. The proportion of mosquitoes exiting into the veranda for the untreated hut and untreated net controls were 45% and 39% respectively. Exiting was significantly higher in all experimental hut treatments relative to both controls (p<0.01), suggesting the insecticide treatments induced an irritant response which caused mosquitoes to seek refuge in the veranda. The highest level of mosquito exiting was achieved with beniodicarb IRS alone (77%). Adding beniodicarb IRS to DuraNet(r) also induced significantly higher levels of mosquito exiting compared to DuraNet(r) alone (57% with DuraNet(r) vs. 70% with DuraNet(r) + beniodicarb IRS, p = 0.001). This effect was, however, not observed with chlorfenapyr IRS and pirimiphos-methyl CS IRS; exiting rates were similar between the combinations with these IRS insecticides and DuraNet(r) alone, (59% - 61% vs 57%, p>0.05).\n", + "\n", + "**Blood-feeding and personal protection.** Blood-feeding and personal protection results of wild, pyrethroid-resistant _An. gambiae_ s.l. in the experimental huts are presented in Table 4. Blood-feeding rates with the untreated hut and untreated net controls were 95% and 55% respectively. DuraNet(r) induced significantly lower blood-feeding rates than the control untreated net (33% with DuraNet(r) vs. 55% with untreated net, p<0.001). Meanwhile, blood-feeding was high across all IRS treatments (91-92%) thus providing very limited blood-feeding inhibition (3% - 5%) compared to the untreated hut control (Table 4). All three combinations provided significantly higher levels of blood-feeding inhibition relative to the IRS treatments\n", + "\n", + "alone (60% - 71% vs. 3% - 5%, p<0.001). Between the combinations, DuraNet(r) + bendiocarb IRS induced the lowest blood-feeding rate (28%) and offered personal protection of 78% while DuraNet(r) + chlorfenapyr IRS induced a higher blood-feeding rate (37%, p = 0.015) though providing about the same levels of personal protection (77%).\n", + "\n", + "**Mortality rates in experimental huts.** Overall mortality rates of wild, pyrethroid-resistant _An. gambiae_ s.l. in the untreated hut and untreated net controls were 2% and 4% respectively (Table 5). Mortality with DuraNet(r) was low and did not differ significantly from the untreated net control (8% vs. 4%, p = 0.169). The IRS treatments alone and the combinations induced significantly higher mortality than DuraNet(r) and the untreated controls (p < 0.001); adding any IRS treatment onto DuraNet(r) therefore always significantly improved vector mortality compared to DuraNet(r) alone. Between the IRS only treatments, the highest mortality was achieved with pirimiphos-methyl CS (85%, p < 0.001) while chlorfenapyr and bendiocarb induced fairly similar mortality rates (34% and 28%, p = 0.09). Combining DuraNet(r) with bendiocarb and pirimiphos-methyl CS IRS treatments did not improve mortality compared to the corresponding IRS alone (bendiocarb: 28% vs. 32%, p = 0.265 and pirimiphos-methyl CS: 85% vs. 81%, p = 0.129) (Table 5). With chlorfenapyr IRS, mortality was significantly higher in the combination compared to chlorfenapyr IRS alone over the 4-month trial (34% vs. 46%, p < 0.001) (Fig 3). Between the combinations, the highest mortality was achieved with DuraNet(r) + pirimiphos-methyl CS IRS (81%). Mortality was significantly higher with the DuraNet(r) + chlorfenapyr IRS combination compared to DuraNet(r) + bendiocarb IRS (46% vs. 32%, p < 0.001) (Table 5).\n", + "\n", + "Initial monthly wild mosquito mortality with pirimiphos-methyl CS IRS and chlorfenapyr IRS was steady and did not decline substantially over the course of the 4 months trial both when applied alone and in combination with DuraNet(r) (Figs 1 and 2). By contrast, wild mosquito mortality with bendiocarb IRS declined sharply from ~55% to about 28-32% by the last month of the trial both when applied alone and in combination with DuraNet(r) (Fig 3).\n", + "\n", + "**Wall cone bioassay results.** Mortality rates of the laboratory maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu colony following exposure to IRS-treated walls in monthly, 30 mins wall cone bioassays are presented in Fig 4 with more details in supporting information (S2 Table). On pirimiphos-methyl CS-treated surfaces, cone bioassay mortality was very high (> 85%) throughout all 4 months of the trial. As observed with wild free-flying mosquitoes, a progressive decline in cone bioassay mortality with increasing months elapsed from spraying was observed with bendiocarb, beginning at 63% in month 1 and decreasing to 19% by month 4. Cone bioassay mortality with chlorfenapyr IRS was consistently low throughout the trial,\n", + "ranging from 11-31%. Cone bioassay mortality on untreated control walls did not exceed 10% in any month of the trial (Fig 4).\n", + "\n", + "header: Background\n", + "\n", + "Insecticide-treated nets (ITNs) and indoor residual spraying (IRS) are core interventions for preventing and controlling malaria [1]. Both methods have independently proven to be highly effective in reducing the burden of disease in diverse epidemiological settings. The substantial reductions in malaria morbidity and mortality observed in endemic countries over the last two decades, has been attributed to a significant increase in the roll out of ITNs and IRS during this period [2]. Where resources are available, both interventions have been deployed together in the same geographical location, with the primary aim of reducing the disease burden to a greater extent than could be achieved with either method alone [3,4].\n", + "\n", + "The benefits of combining these interventions is, however, contentious. Some community-randomised controlled trials (RCTs) have compared epidemiological outcomes in communities receiving pyrethroid long-lasting insecticidal nets (LLINs) plus IRS versus LLINs alone, yielding conflicting results. Whilst trials in Tanzania [5] and Sudan [6] associated combined use of LLINs and IRS with significant reductions in malaria infection prevalence, similar studies in Benin [7], Eritrea [8], Ethiopia [9] and The Gambla [10] reported no such effect. Based on a Cochrane review demonstrating the inconsistencies in epidemiological evidence [4], the World Health Organisation (WHO) has recently issued a provisional recommendation against combining LLINs and IRS as a means of reducing malaria-associated morbidity and mortality [1]. National Malaria Control Programmes are encouraged to prioritise delivering either ITNs or IRS at high coverage and to a high standard, rather than introducing the second intervention as a means to compensate for deficiencies in the implementation of the first. However, this should not be interpreted to mean that the combined IRS and ITN approach is redundant in all settings. Considering the recent stall in progress against malaria [11] and increasing prevalence of pyrethroid resistance in malaria vector populations across Africa [12], combining interventions may be vital for high transmission settings and insecticide resistance management. Vector control programmes are expected to be guided by local evidence to decide when, where and how to combine IRS with ITNs for different epidemiological settings [1].\n", + "\n", + "Evidence from RCTs and operational studies suggests that the impact of co-implementing LLINs and IRS may depend on a number of location-specific factors including: intervention coverage, transmission intensity, vector behaviour, choice of IRS insecticide and insecticide resistance [13,14]. The choice of IRS insecticide for a specific geographical setting whether deployed alone or together with LLINs will be influenced largely by the susceptibility of the target vector population to the insecticide, its mode of action, chemical properties and residual \n", + "activity on wall substrates. To maximise the impact of the combined intervention approach, it is important to consider the interactions that may occur between the insecticide in the LLIN and the chosen IRS insecticide. Where the mode of action of the IRS insecticides is not complementary to the insecticide on the net, the combination might be redundant or result in lower levels of vector control than what is achievable with either intervention alone. Although pyrethroids are not recommended for IRS, the redundancy of combining pyrethroid IRS or wall linings with pyrethroid LLINs has been clearly demonstrated in experimental but studies against pyrethroid-resistant malaria vectors in West Africa [15,16].\n", + "\n", + "Insecticides belonging to four classes of compounds have been approved by the WHO for IRS against malaria vectors; pyrethroids, organophosphates, carbamates and more recently, the neonicotinoid clothianidin [1,17]. While RCTs are the most robust method for generating evidence on the impact of combining vector control interventions, they are often time-consuming, expensive and unrealistic in some settings. Evidence from experimental but trials may provide some insights on what to expect when different types IRS insecticides are deployed to complement pyrethroid-only nets. In this study, we compared the impact of combining pyrethroid LLINs with IRS insecticides from three distinct chemical classes in experimental huts against wild free-flying pyrethroid-resistant malaria vectors in southern Benin.\n", + "\n", + "header: Data analysis\n", + "\n", + "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental hut treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to differential attractiveness of the volunteer sleepers and huts.\n", + "\n", + "\n", + "Mortality in susceptibility bioassays was interpreted according to WHO criteria. All analyses were performed in Stata version 15.1.\n", + "\n", + "header: Trial procedure\n", + "\n", + "The trial began three days after IRS application and continued for 4 months, between July and October 2018 and followed WHO guidelines [19]. Nine (9) consenting human volunteers kept in experimental huts each trial night to attract mosquitoes. To account for bias due to differential attractiveness to mosquitoes, volunteers were rotated through experimental huts daily in accordance with a predetermined Latin square design. To mitigate the effect of hut position on mosquito entry, bed nets were rotated through experimental huts on a weekly basis. IRS treatments could not be rotated thus remained fixed throughout the trial. At dawn, sleepers collected all mosquitoes from under the net, the sleeping room and the veranda using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were subsequently transferred to the laboratory for morphological identification and scoring of blood-feeding and mortality. To account for the slow-action of chlorfenapyr, delayed mortality was recorded every 24 h up to 72 h after collection for all treatments. All alive _An. gambiae_ s.l. were held at 27 +- 2deg C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution.\n", + "\n", + "header: Table 3. Overall entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", + "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", + "columns: ['Treatment', 'Total females caught', 'Average catch per night', '% Deterrence', 'Total exiting', '% Exophily�', '95% CI']\n", + "\n", + "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total females caught\":711,\"Average catch per night\":7,\"% Deterrence\":\"\\u2013\",\"Total exiting\":322,\"% Exophily\\ufffd\":\"45a\",\"95% CI\":\"42\\u201349\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total females caught\":420,\"Average catch per night\":4,\"% Deterrence\":\"41\",\"Total exiting\":165,\"% Exophily\\ufffd\":\"39a\",\"95% CI\":\"35\\u201344\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total females caught\":619,\"Average catch per night\":6,\"% Deterrence\":\"13\",\"Total exiting\":350,\"% Exophily\\ufffd\":\"57b\",\"95% CI\":\"53\\u201361\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":508,\"Average catch per night\":5,\"% Deterrence\":\"29\",\"Total exiting\":389,\"% Exophily\\ufffd\":\"77c\",\"95% CI\":\"73\\u201380\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total females caught\":537,\"Average catch per night\":6,\"% Deterrence\":\"25\",\"Total exiting\":373,\"% Exophily\\ufffd\":\"70cd\",\"95% CI\":\"66\\u201373\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total females caught\":478,\"Average catch per night\":5,\"% Deterrence\":\"33\",\"Total exiting\":297,\"% Exophily\\ufffd\":\"62bd\",\"95% CI\":\"58\\u201367\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total females caught\":411,\"Average catch per night\":4,\"% Deterrence\":\"42\",\"Total exiting\":241,\"% Exophily\\ufffd\":\"59b\",\"95% CI\":\"54\\u201363\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total females caught\":528,\"Average catch per night\":6,\"% Deterrence\":\"26\",\"Total exiting\":356,\"% Exophily\\ufffd\":\"67d\",\"95% CI\":\"63\\u201371\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total females caught\":486,\"Average catch per night\":5,\"% Deterrence\":\"32\",\"Total exiting\":298,\"% Exophily\\ufffd\":\"61bd\",\"95% CI\":\"57\\u201366\"}}\n", + "\n", + "header: Residual activity of IRS treatments\n", + "\n", + "Cone bioassays were performed at monthly intervals after spraying to assess the residual activity of IRS treatments on hut walls following WHO guidelines [19]. Laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu mosquitoes were used for this purpose. In each IRS-treated hut, 50, 3-5-day old adult female mosquitoes were transferred to five cones attached to the walls and ceiling in batches of 10. As a control, mosquitoes were introduced into cones attached to an unsprayed wall. Mosquitoes were exposed to the surfaces for 30 mins before being transferred to netted cups. Mosquitoes were held at 27 +- 2' C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution. Knockdown was recorded 1 h post-exposure and delayed mortality every 24 h up to 72 h thereafter.\n", + "\n", + "header: Mosquito entry and exiting.: Discussion\n", + "\n", + "The ultimate purpose of combining IRS with LLINs is to achieve greater levels of vector control through the differential effects of the interventions and modes of action of the insecticides involved than what is achievable with a single intervention on its own. Transmission dynamics models have suggested that the levels of vector mosquito mortality and blood-feeding inhibition observed in an experimental hut setting could be predictive of the capacity of an indoor vector control intervention or a combination of these to control vector populations, reduce vector biting and improve public health impact when deployed on a large scale [22,23]. In this study, we demonstrate that where vectors are resistant to pyrethroids but susceptible to a given non-pyrethroid IRS insecticide, it should be possible to achieve substantially improved vector control by adding the non-pyrethroid IRS to a standard pyrethroid-only LLIN to boost\n", + "\n", + "Fig 1: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pirimphos-methyl CS IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", + "\n", + "Fig 2: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with chlorfenapyr IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", + "\n", + "\n", + "mortality rates through the IRS intervention, while benefiting from the blood-feeding inhibition provided by the LLIN.\n", + "\n", + "The level of improved mortality achieved in the pyrethroid-only LLIN plus non-pyrethroid IRS combinations relative to the pyrethroid LLIN alone was clearly dependent on the type of non-pyrethroid IRS insecticide used. The combination with pirimiphos-methyl CS IRS induced the highest mortality rate (81%) and this can be attributed to the high and prolonged activity of the pirimiphos-methyl CS IRS formulation on cement walls as demonstrated in this study and previous studies in Benin [24]. This substantiates findings from community trials and operational studies demonstrating significant reductions in transmission of malaria by pyrethroid-resistant vector populations when a single round of pirimiphos-methyl CS IRS was deployed against a background of moderate to high coverage with standard pyrethroid nets [25-27]. By contrast the levels of mortality achieved in the combination with bendiocarb IRS was much lower (32%); attributable to the fast decline in efficacy with the insecticide as observed monthly in the experimental huts and in cone bioassays. The poor residual effect of\n", + "\n", + "Fig 4: **Mortality (72 h) of laboratory maintained, insecticide-susceptible _Anopheles gambiae_ sensu stricto Kisumu colony exposed to IRS-treated hut walls in monthly, 30 mins wall cone bioassays in experimental huts in Cove, southern Benin. Error bars represent 95% CI. Approximately fifty (50) 2–3 days old mosquitoes were exposed for 30 mins to each IRS treated hut in batches of 10 per cone and mortality recorded after 72 h.**\n", + "\n", + "Fig 3: **Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato entering experimental huts with bendiocarb IRS applied alone and in combination with DuraNet® in Cove, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.**\n", + "bendiocarb for IRS is well documented [28, 29, 30]. The failure of a combination of bendiocarb treated walls and pyrethroid nets to provide improved control of clinical malaria compared to either intervention alone in a previous RCT in Benin [7] was also largely attributed to the short-lived efficacy of bendiocarb on the treated walls [13, 14]. Multiple IRS campaign rounds may be necessary to achieve sustained levels of improved vector control when bendiocarb IRS is deployed to complement standard pyrethroid LLINs. Given the significant costs associated with running IRS campaigns, these findings raise questions over the suitability of currently available formulations of bendiocarb for IRS and the cost-effectiveness of its combination with pyrethroid nets. Considering the high initial mortality rates usually achieved with the insecticide, reformulation chemistry may help address the short residual efficacy of bendiocarb and improve the utility of this insecticide for vector control.\n", + "\n", + "While mortality in the combinations with pirimiphos-methyl CS IRS and bendiocarb IRS were similar to each IRS alone, the combination with chlorfenapyr IRS induced significantly higher levels of mortality compared to chlorfenapyr IRS alone. This demonstrates an additive effect of the chlorfenapyr IRS plus pyrethroid LLINs combination which was not observed with the other IRS insecticides tested. This trend is consistent with previous experimental hut studies in Benin [31, 32] though the levels of mortality achieved with the combination were substantially higher (73%-83% vs. 46%). The difference in mortality could be due to changes in the composition of the vector population and/or increasing pyrethroid resistance levels over time. Chlorfenapyr is a new repurposed pyrrole insecticide with a unique mode of action that has shown potential for IRS but often inducing moderate mortality rates when applied alone in experimental huts against pyrethroid-resistant malaria vectors [29, 33]. It acts on the oxidative/metabolic pathway of insects hence its action can be enhanced by physical activity in the insect [34]. The additive mortality observed in the chlorfenapyr IRS plus pyrethroid net combination may therefore be attributed to the irritant effect of the pyrethroid in the LLIN on mosquitoes as they alight on the chlorfenapyr-treated wall after failed attempts to feed on the sleeper under the net. In addition, owing to the non-neurotoxic and non-irritant effect of chlorfenapyr [35], mosquitoes may have alighted on chlorfenapyr-treated walls for longer, leading to increased insecticide pick-up, potentially contributing to the additional mortality observed with this combination. The inability of the WHO 30-min cone bioassays to predict wild mosquito mortality with chlorfenapyr IRS in experimental huts [29, 34] is further demonstrated in this study; while cone bioassay mortality of the susceptible Kisumu strain was very low, wild mosquito mortality was higher and consistent throughout the trial confirming previous findings [29]. Considering the prolonged effect of chlorfenapyr IRS on wild mosquitoes [29], substantial and sustained improvements in the control of pyrethroid-resistant vector populations can be expected if the IRS insecticide is deployed to complement pyrethroid LLINs.\n", + "\n", + "IRS is highly effective for malaria vector control when deployed on its own but provides limited personal protection from mosquito biting and this is evident from the high blood-feeding rates observed with the IRS treatments alone. In the absence of a bed net, mosquitoes will usually feed on the human occupants in an IRS treated home before resting on the wall where they pick up the insecticide, consequently, direct blood-feeding inhibition is not expected when the intervention is applied independently. By contrast, pyrethroid LLINs reduce mosquito biting and provide substantial levels of personal protection for the user; an effect which is attributable to the physical barrier of the net and the excito-repellent effect of the pyrethroid insecticide. The findings from this study demonstrate that this effect can persist even against a vector population that has developed intense resistance to pyrethroids as observed in Cove [18]. By combining the IRS treatments with a pyrethroid LLIN, it was possible to achieve substantially improved levels of blood-feeding inhibition and personal protection compared to \n", + "the IRS alone. The reduced exposure to infective bites constitutes a crucial advantage of the combination strategy over IRS alone. The blood-feeding rate in the combination appeared to depend on the type of IRS insecticide used albeit to a lesser extent than the levels of mortality achieved; lower blood-feeding rates and thus higher levels of blood-feeding inhibition were achieved in the combination with benidocarb IRS compared to the combination with chlorfenapyr IRS. This can be due to differences in the mode of action of both IRS insecticides; in contrast to chlorfenapyr, benidocarb acts on the insect's nervous system eliciting an irritant rapid knockdown effect on mosquitoes [35] and this together with the excito-repellent effect of the pyrethroid in the standard pyrethroid LLIN could have contributed to the high levels of early exiting and reduced blood-feeding rates observed when both interventions were combined in a hut.\n", + "\n", + "Overall, the results demonstrate the superiority of the organophosphate, pirimiphos-methyl CS for IRS on its own and in combination with pyrethroid LLINs over benidocarb and the pyrrole, chlorfenapyr. However, this finding may not be generalisable to areas where vectors are resistant to organophosphates. Indeed, previous experimental hut studies in Cote d'Ivoire failed to demonstrate improved vector control with the combination compared to the net alone when standard pyrethroid LLINs were combined with pirimiphos-methyl CS-treated wall linings against a vector population that was resistant to pyrethroids and organophosphates [36]. Resistance to organophosphates and carbamates is unfortunately increasing in malaria vector populations especially in West Africa [37, 38, 39, 40]. To mitigate its impact, vector control programmes are encouraged to rotate between IRS insecticides with different modes of action [41]. Considering that most IRS campaigns will usually be deployed against a background of high LLIN coverage, effective IRS rotation plans should prioritise IRS insecticides which in addition to providing improved and prolonged vector control, can efficiently complement LLINs. Based on the findings of this study, chlorfenapyr IRS shows some potential to be a useful addition to such IRS rotation plans in pyrethroid-resistant areas with high pyrethroid LLIN coverage. It will be interesting to investigate the impact of combining pyrethroid LLINs with other newly approved IRS formulations containing clothianidin [17].\n", + "\n", + "The low mortality rates achieved with the standard pyrethroid net in this study (8%), further demonstrates the threat of pyrethroid resistance on the efficacy of standard pyrethroids. Pyrethroid resistance is widespread in malaria vectors across Africa and increasing in intensity the more they are used [12]. A new generation of LLINs treated with a pyrethroid and non-pyrethroid insecticide are now in advanced development. Studies have demonstrated the potential of some of these nets to provide improved control of clinical malaria transmitted by pyrethroid-resistant malaria vectors compared to standard pyrethroid nets [42, 43, 44]. As next generation nets come into the market, and are rolled out in endemic countries, it will be essential to explore any possible interactions with the different types of IRS insecticides that could be deployed together with them in a combined intervention approach.\n", + "\n", + "header: Abstract\n", + "\n", + "Which indoor residual spraying insecticide best complements standard pyrethroid long-lasting insecticidal nets for improved control of pyrethroid resistant malaria vectors?\n", + "\n", + "Thomas Syme, Augustin Fongnikin, Damien Todjinou, Renaud Goveetchan, Mark Rowland, Martin Akogbeto, Corine Nguforo\n", + "\n", + "\n", + "\n", + "Where resources are available, non-pyrethroid IRS can be deployed to complement standard pyrethroid LLINs with the aim of achieving improved vector control and managing insecticide resistance. The impact of the combination may however depend on the type of IRS insecticide deployed. Studies comparing combinations of pyrethroid LLINs with different types of non-pyrethroid IRS products will be necessary for decision making.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cove\",\"Start_month\":7,\"Start_year\":2018,\"End_month\":10,\"End_year\":2018}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"Alpha-cypermethrin\",\"Concentration_initial\":\"261 mg\\/m2\",\"Net_holed\":6.0}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Acknowledgments\n", + "\n", + "We thank BASF and Bayer for providing the insecticides. We also thank the technical staff of CREC (Abibath Odojo, Estelle Vigninou, Josias Fagbohoun, Edwige Kpanou etc) for their assistance. We are grateful to the rice farmers at Cove for their support in the hut study.\n", + "\n", + "header: Results\n", + "\n", + "Susceptibility bioassays revealed that the vector population at Cove, was resistant to pyrethroids (<20% mortality) but susceptible to carbamates, chlorfenapyr and organophosphates (>=98% mortality). Mortality of wild free-flying pyrethroid resistant _An. gambiae_ s.l. entering the hut with the untreated net control (4%) did not differ significantly from DuraNet(r) alone (8%, p = 0.169). Pirimiphos-methyl CS IRS induced the highest mortality both on its own (85%) and in combination with DuraNet(r) (81%). Mortality with the DuraNet(r) + chlorfenapyr IRS combination was significantly higher than each intervention alone (46% vs. 33% and 8%, p<0.05) demonstrating an additive effect. The DuraNet(r) + bendicocarb IRS combination induced significantly lower mortality compared to the other combinations (32%, p<0.05). Blood-feeding inhibition was very low with the IRS treatments alone (3-5%) but \n", + "increased significantly when they were combined with DuraNet(r) (61% - 71%, p<0.05). Blood-feeding rates in the combinations were similar to the net alone. Adding bendicorarb IRS to DuraNet(r) induced significantly lower levels of mosquito feeding compared to adding chlorfenapyr IRS (28% vs. 37%, p = 0.015).\n", + "\n", + "header: Conclusions\n", + "\n", + "Adding non-pyrethroid IRS to standard pyrethroid-only LLINs against a pyrethroid-resistant vector population which is susceptible to the IRS insecticide, can provide higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone. Adding pirimphos-methyl CS IRS may provide substantial improvements in vector control while adding chlorfenapyr IRS can demonstrate an additive effect relative to both interventions alone. Adding bendicorarb IRS may show limited enhancements in vector control owing to its short residual effect.\n", + "\n", + "header: Background: Methods\n", + "\n", + "The efficacy of combining a standard pyrethroid LLIN (DuraNet(r)) with IRS insecticides from three chemical classes (bendicocarb, chlorfenapyr and pirimiphos-methyl CS) was evaluated in an experimental hut trial against wild pyrethroid-resistant _Anopheles gambiae_ s.l. in Cove, Benin. The combinations were also compared to each intervention alone. WHO cylinder and CDC bottle bioassays were performed to assess susceptibility of the local _An. gambiae_ s.l. vector population at the Cove hut site to insecticides used in the combinations.\n", + "\n", + "header: Conclusions\n", + "\n", + "Adding non-pyrethroid IRS to standard pyrethroid-only nets against a pyrethroid-resistant vector population which was susceptible to the IRS insecticide, generally provided higher levels of vector mosquito control compared to the pyrethroid net alone or IRS alone; the IRS intervention was responsible for improved mosquito mortality while the pyrethroid net provided blood-feeding inhibition. The combination with pirimiphos-methyl CS IRS was the most efficacious. Adding chlorfenapyr IRS to the pyrethroid LLIN demonstrated an additive mortality effect relative to both interventions alone. The combination with benidocarb IRS provided the \n", + "lowest levels of mortality owing to its short residual effect but also induced lower levels of mosquito feeding compared to combinations with the other IRS insecticides.\n", + "\n", + "header: Results\n", + "\n", + "Mortality rates of wild _An. gambiae_ s.l. from Cove in WHO susceptibility and CDC bottle bioassays are presented in Tables 1 and 2 respectively. Low proportions of adult F1 progeny of field-collected _An. gambiae_ s.l. were killed following exposure to alpha-cypermethrin (11%) and permethrin (20%); demonstrating pyrethroid resistance in the vector population. In contrast, the vast majority if not all mosquitoes from Cove were killed following exposure to bendiocarb (98%), fenitrothion (100%) and chlorfenapyr (100%); demonstrating susceptibility to carbamates, organophosphates and chlorfenapyr. With the insecticide susceptible _An. gambiae_ s.s. Kisumu colony, mortality was 100% with all insecticides.\n", + "\n", + "header: Ethical considerations\n", + "\n", + "Ethical approval was obtained from the ethics review committees of the London School of Hygiene & Tropical Medicine (LSHTM) (Reference No. 15265) and the local Ministry of Health in Benin (Reference No. N'39/CEIC/CREC). All volunteers provided informed written consent and were offered a course of chemoprophylaxis (doxycycline) prior to their participation in the study and up to four weeks following its completion. A nurse was available throughout the study to assess any cases of fever. In the event a volunteer tested positive for malaria, they were immediately withdrawn from the trial and administered effective treatment.\n", + "\n", + "header: Table 4. Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", + "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", + "columns: ['Treatment', 'Total blood-fed', '% Blood-fed*', '95% CI', '% Blood-feeding inhibition', '% Personal protection']\n", + "\n", + "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total blood-fed\":675,\"% Blood-fed*\":\"95a\",\"95% CI\":\"93\\u201397\",\"% Blood-feeding inhibition\":\"\\u2013\",\"% Personal protection\":\"\\u2013\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total blood-fed\":231,\"% Blood-fed*\":\"55b\",\"95% CI\":\"50\\u201360\",\"% Blood-feeding inhibition\":\"42\",\"% Personal protection\":\"66\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total blood-fed\":202,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201336\",\"% Blood-feeding inhibition\":\"66\",\"% Personal protection\":\"70\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total blood-fed\":460,\"% Blood-fed*\":\"91e\",\"95% CI\":\"88\\u201393\",\"% Blood-feeding inhibition\":\"5\",\"% Personal protection\":\"32\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total blood-fed\":150,\"% Blood-fed*\":\"28c\",\"95% CI\":\"24\\u201332\",\"% Blood-feeding inhibition\":\"71\",\"% Personal protection\":\"78\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total blood-fed\":440,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201394\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"35\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total blood-fed\":153,\"% Blood-fed*\":\"37d\",\"95% CI\":\"33\\u201342\",\"% Blood-feeding inhibition\":\"61\",\"% Personal protection\":\"77\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total blood-fed\":488,\"% Blood-fed*\":\"92ae\",\"95% CI\":\"90\\u201395\",\"% Blood-feeding inhibition\":\"3\",\"% Personal protection\":\"28\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total blood-fed\":160,\"% Blood-fed*\":\"33cd\",\"95% CI\":\"29\\u201337\",\"% Blood-feeding inhibition\":\"65\",\"% Personal protection\":\"76\"}}\n", + "\n", + "header: Susceptibility bioassays\n", + "\n", + "WHO susceptibility cylinder bioassays [20] and CDC bottle bioassays [21] were performed in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove experimental hut site to the constituent insecticides in the hut treatments. Adult F1 progeny of field-collected _An. gambiae_ s.l. were exposed to filter papers treated with discriminating doses of alpha-cypermethrin (0.05%), permethrin (0.75%), bendiocarb (0.1%) and fenitrothion (1.0%) in WHO cylinders and CDC bottles impregnated with 100 mg of chlorfenapyr. Comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu colony. For each insecticide and strain, 100 adult female mosquitoes aged 2-3 days were introduced to four insecticide-treated cylinders/bottles in batches of 25. In the control arms, mosquitoes were exposed to silicone oil-treated filter papers and acetone-treated bottles. After 1 h exposure, mosquitoes were transferred to holding tubes and observation cups and provided access to 10% glucose solution (w/v). Mortality was recorded after 24 h for mosquitoes exposed to permethrin, alpha-cypermethrin, bendiocarb and fenitrothion in WHO cylinder bioassays and every 24 h up to 72 h for mosquitoes exposed to chlorfenapyr in CDC bottles. The insecticide treated filter papers used for the WHO cylinder bioassays were obtained from Universiti Sains Malaysia.\n", + "\n", + "header: Outcome measures\n", + "\n", + "The efficacy of each experimental hut treatment was expressed in terms of the following outcome measures:\n", + "\n", + "* Exophily-exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda\n", + "* Deterrence-defined as the percentage reduction in numbers of mosquitoes collected in a treated hut relative to the untreated control\n", + "* Blood-feeding-proportion of blood-fed mosquitoes at the time of collection\n", + "\n", + "Where _B__\\({}_{\\mu}\\)_ is the proportion of blood-fed mosquitoes in the untreated control and _B__\\({}_{\\beta}\\)_ is the proportion of blood-fed mosquitoes in the treated hut.\n", + "\n", + "\n", + "- B_{i})}{B_{u}}\\] Where \\(B_{u}\\) is the number of blood-fed mosquitoes in the untreated control and \\(B_{i}\\) is the number of blood-fed mosquitoes in the huts with insecticide treatments.\n", + "* Mortality-proportion of dead mosquitoes after a 72 h holding period Mosquito deterrence, blood-feeding inhibition and personal protection were calculated relative to the untreated net control hut for treatments which involved the LLIN and relative to the untreated hut control for IRS-only treatments.\n", + "\n", + "header: Susceptibility bioassay results: Experimental hut results\n", + "\n", + "A total of 4,698 female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trial period (Tables 3 and S1). Due to the inability to\n", + "\n", + "rotate IRS, it was not possible to distinguish treatment-induced deterrence for the IRS treatments from differential attractiveness due to hut position. The proportion of mosquitoes exiting into the veranda for the untreated hut and untreated net controls were 45% and 39% respectively. Exiting was significantly higher in all experimental hut treatments relative to both controls (p<0.01), suggesting the insecticide treatments induced an irritant response which caused mosquitoes to seek refuge in the veranda. The highest level of mosquito exiting was achieved with beniodicarb IRS alone (77%). Adding beniodicarb IRS to DuraNet(r) also induced significantly higher levels of mosquito exiting compared to DuraNet(r) alone (57% with DuraNet(r) vs. 70% with DuraNet(r) + beniodicarb IRS, p = 0.001). This effect was, however, not observed with chlorfenapyr IRS and pirimiphos-methyl CS IRS; exiting rates were similar between the combinations with these IRS insecticides and DuraNet(r) alone, (59% - 61% vs 57%, p>0.05).\n", + "\n", + "**Blood-feeding and personal protection.** Blood-feeding and personal protection results of wild, pyrethroid-resistant _An. gambiae_ s.l. in the experimental huts are presented in Table 4. Blood-feeding rates with the untreated hut and untreated net controls were 95% and 55% respectively. DuraNet(r) induced significantly lower blood-feeding rates than the control untreated net (33% with DuraNet(r) vs. 55% with untreated net, p<0.001). Meanwhile, blood-feeding was high across all IRS treatments (91-92%) thus providing very limited blood-feeding inhibition (3% - 5%) compared to the untreated hut control (Table 4). All three combinations provided significantly higher levels of blood-feeding inhibition relative to the IRS treatments\n", + "\n", + "alone (60% - 71% vs. 3% - 5%, p<0.001). Between the combinations, DuraNet(r) + bendiocarb IRS induced the lowest blood-feeding rate (28%) and offered personal protection of 78% while DuraNet(r) + chlorfenapyr IRS induced a higher blood-feeding rate (37%, p = 0.015) though providing about the same levels of personal protection (77%).\n", + "\n", + "**Mortality rates in experimental huts.** Overall mortality rates of wild, pyrethroid-resistant _An. gambiae_ s.l. in the untreated hut and untreated net controls were 2% and 4% respectively (Table 5). Mortality with DuraNet(r) was low and did not differ significantly from the untreated net control (8% vs. 4%, p = 0.169). The IRS treatments alone and the combinations induced significantly higher mortality than DuraNet(r) and the untreated controls (p < 0.001); adding any IRS treatment onto DuraNet(r) therefore always significantly improved vector mortality compared to DuraNet(r) alone. Between the IRS only treatments, the highest mortality was achieved with pirimiphos-methyl CS (85%, p < 0.001) while chlorfenapyr and bendiocarb induced fairly similar mortality rates (34% and 28%, p = 0.09). Combining DuraNet(r) with bendiocarb and pirimiphos-methyl CS IRS treatments did not improve mortality compared to the corresponding IRS alone (bendiocarb: 28% vs. 32%, p = 0.265 and pirimiphos-methyl CS: 85% vs. 81%, p = 0.129) (Table 5). With chlorfenapyr IRS, mortality was significantly higher in the combination compared to chlorfenapyr IRS alone over the 4-month trial (34% vs. 46%, p < 0.001) (Fig 3). Between the combinations, the highest mortality was achieved with DuraNet(r) + pirimiphos-methyl CS IRS (81%). Mortality was significantly higher with the DuraNet(r) + chlorfenapyr IRS combination compared to DuraNet(r) + bendiocarb IRS (46% vs. 32%, p < 0.001) (Table 5).\n", + "\n", + "Initial monthly wild mosquito mortality with pirimiphos-methyl CS IRS and chlorfenapyr IRS was steady and did not decline substantially over the course of the 4 months trial both when applied alone and in combination with DuraNet(r) (Figs 1 and 2). By contrast, wild mosquito mortality with bendiocarb IRS declined sharply from ~55% to about 28-32% by the last month of the trial both when applied alone and in combination with DuraNet(r) (Fig 3).\n", + "\n", + "**Wall cone bioassay results.** Mortality rates of the laboratory maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu colony following exposure to IRS-treated walls in monthly, 30 mins wall cone bioassays are presented in Fig 4 with more details in supporting information (S2 Table). On pirimiphos-methyl CS-treated surfaces, cone bioassay mortality was very high (> 85%) throughout all 4 months of the trial. As observed with wild free-flying mosquitoes, a progressive decline in cone bioassay mortality with increasing months elapsed from spraying was observed with bendiocarb, beginning at 63% in month 1 and decreasing to 19% by month 4. Cone bioassay mortality with chlorfenapyr IRS was consistently low throughout the trial,\n", + "ranging from 11-31%. Cone bioassay mortality on untreated control walls did not exceed 10% in any month of the trial (Fig 4).\n", + "\n", + "header: Table 2: Susceptibility of field-collected Anopheles gambiae sensu late from Cove to chlorfenapyr in CDC bottle bioassays.\n", + "footer: None\n", + "columns: ['Treatment', 'Strain', 'N exposed', 'N dead', '% Mortality�', '95% CI']\n", + "\n", + "{\"0\":{\"Treatment\":\"Control\",\"Strain\":\"Kisumu\",\"N exposed\":101,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"1\":{\"Treatment\":\"Control\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":100,\"N dead\":0,\"% Mortality\\ufffd\":0,\"95% CI\":\"\\u2013\"},\"2\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Kisumu\",\"N exposed\":103,\"N dead\":103,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"},\"3\":{\"Treatment\":\"Chlorfenapyr (100 \\u03bcg)\",\"Strain\":\"Cov\\u00e8\",\"N exposed\":102,\"N dead\":102,\"% Mortality\\ufffd\":100,\"95% CI\":\"\\u2013\"}}\n", + "\n", + "header: Study site and experimental huts: Experimental hut treatments\n", + "\n", + "The following treatments were assessed in 9 experimental huts:\n", + "\n", + "1. Control (untreated hut)\n", + "2. Control (untreated net)\n", + "3. DuraNet(r) (Alpha-cypermethrin LLIN, 261 mg/m2, Shobikaa Impex)\n", + "4. Bendiocarb IRS applied at 400 mg/m2 (Ficam(r) WP, Bayer)\n", + "5. DuraNet(r) + Bendiocarb IRS applied at 400 mg/m2\n", + "6. Chlorfenapyr IRS applied at 250 mg/m2 (Sylando(r) 240SC, BASF)\n", + "7. DuraNet(r) + Chlorfenapryr IRS applied at 250 mg/m2\n", + "8. Pirimiphos-methyl CS IRS applied at 1000 mg/m2 (Actellic(r) 300CS, Syngenta)\n", + "9. DuraNet(r) + Pirimiphos-methyl CS IRS applied at 1000 mg/m2\n", + "\n", + "Interior hut walls were sprayed from top to bottom with IRS insecticide solutions using a Hudson X-pert(r) compression sprayer equipped with a flat-fan nozzle. To improve spraying accuracy, spray swaths were pre-marked on hut walls and a guidance pole was attached to the end of the spray lance to maintain a fixed distance to the wall. After spraying each hut, the volume remaining in the spray tank was measured to assess the overall volume sprayed. All spray volumes were within 30% of the target. The palm match used on the ceiling was sprayed flat on the ground outside the experimental hut and allowed to dry for 2 hours prior to being fitted on the ceiling of the hut. Three replicate nets were used per LLIN treatment and these were rotated every 2 nights within the same hut. To simulate wear and tear from field use, 6 holes each measuring 16 cm2 were cut into each bed net (one per panel) used in the trial.\n", + "\n", + "header: Background\n", + "\n", + "Insecticide-treated nets (ITNs) and indoor residual spraying (IRS) are core interventions for preventing and controlling malaria [1]. Both methods have independently proven to be highly effective in reducing the burden of disease in diverse epidemiological settings. The substantial reductions in malaria morbidity and mortality observed in endemic countries over the last two decades, has been attributed to a significant increase in the roll out of ITNs and IRS during this period [2]. Where resources are available, both interventions have been deployed together in the same geographical location, with the primary aim of reducing the disease burden to a greater extent than could be achieved with either method alone [3,4].\n", + "\n", + "The benefits of combining these interventions is, however, contentious. Some community-randomised controlled trials (RCTs) have compared epidemiological outcomes in communities receiving pyrethroid long-lasting insecticidal nets (LLINs) plus IRS versus LLINs alone, yielding conflicting results. Whilst trials in Tanzania [5] and Sudan [6] associated combined use of LLINs and IRS with significant reductions in malaria infection prevalence, similar studies in Benin [7], Eritrea [8], Ethiopia [9] and The Gambla [10] reported no such effect. Based on a Cochrane review demonstrating the inconsistencies in epidemiological evidence [4], the World Health Organisation (WHO) has recently issued a provisional recommendation against combining LLINs and IRS as a means of reducing malaria-associated morbidity and mortality [1]. National Malaria Control Programmes are encouraged to prioritise delivering either ITNs or IRS at high coverage and to a high standard, rather than introducing the second intervention as a means to compensate for deficiencies in the implementation of the first. However, this should not be interpreted to mean that the combined IRS and ITN approach is redundant in all settings. Considering the recent stall in progress against malaria [11] and increasing prevalence of pyrethroid resistance in malaria vector populations across Africa [12], combining interventions may be vital for high transmission settings and insecticide resistance management. Vector control programmes are expected to be guided by local evidence to decide when, where and how to combine IRS with ITNs for different epidemiological settings [1].\n", + "\n", + "Evidence from RCTs and operational studies suggests that the impact of co-implementing LLINs and IRS may depend on a number of location-specific factors including: intervention coverage, transmission intensity, vector behaviour, choice of IRS insecticide and insecticide resistance [13,14]. The choice of IRS insecticide for a specific geographical setting whether deployed alone or together with LLINs will be influenced largely by the susceptibility of the target vector population to the insecticide, its mode of action, chemical properties and residual \n", + "activity on wall substrates. To maximise the impact of the combined intervention approach, it is important to consider the interactions that may occur between the insecticide in the LLIN and the chosen IRS insecticide. Where the mode of action of the IRS insecticides is not complementary to the insecticide on the net, the combination might be redundant or result in lower levels of vector control than what is achievable with either intervention alone. Although pyrethroids are not recommended for IRS, the redundancy of combining pyrethroid IRS or wall linings with pyrethroid LLINs has been clearly demonstrated in experimental but studies against pyrethroid-resistant malaria vectors in West Africa [15,16].\n", + "\n", + "Insecticides belonging to four classes of compounds have been approved by the WHO for IRS against malaria vectors; pyrethroids, organophosphates, carbamates and more recently, the neonicotinoid clothianidin [1,17]. While RCTs are the most robust method for generating evidence on the impact of combining vector control interventions, they are often time-consuming, expensive and unrealistic in some settings. Evidence from experimental but trials may provide some insights on what to expect when different types IRS insecticides are deployed to complement pyrethroid-only nets. In this study, we compared the impact of combining pyrethroid LLINs with IRS insecticides from three distinct chemical classes in experimental huts against wild free-flying pyrethroid-resistant malaria vectors in southern Benin.\n", + "\n", + "header: Trial procedure\n", + "\n", + "The trial began three days after IRS application and continued for 4 months, between July and October 2018 and followed WHO guidelines [19]. Nine (9) consenting human volunteers kept in experimental huts each trial night to attract mosquitoes. To account for bias due to differential attractiveness to mosquitoes, volunteers were rotated through experimental huts daily in accordance with a predetermined Latin square design. To mitigate the effect of hut position on mosquito entry, bed nets were rotated through experimental huts on a weekly basis. IRS treatments could not be rotated thus remained fixed throughout the trial. At dawn, sleepers collected all mosquitoes from under the net, the sleeping room and the veranda using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were subsequently transferred to the laboratory for morphological identification and scoring of blood-feeding and mortality. To account for the slow-action of chlorfenapyr, delayed mortality was recorded every 24 h up to 72 h after collection for all treatments. All alive _An. gambiae_ s.l. were held at 27 +- 2deg C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution.\n", + "\n", + "header: Residual activity of IRS treatments\n", + "\n", + "Cone bioassays were performed at monthly intervals after spraying to assess the residual activity of IRS treatments on hut walls following WHO guidelines [19]. Laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu mosquitoes were used for this purpose. In each IRS-treated hut, 50, 3-5-day old adult female mosquitoes were transferred to five cones attached to the walls and ceiling in batches of 10. As a control, mosquitoes were introduced into cones attached to an unsprayed wall. Mosquitoes were exposed to the surfaces for 30 mins before being transferred to netted cups. Mosquitoes were held at 27 +- 2' C and 75 +- 10% RH and provided access to 10% (w/v) glucose solution. Knockdown was recorded 1 h post-exposure and delayed mortality every 24 h up to 72 h thereafter.\n", + "\n", + "header: Abstract\n", + "\n", + "Which indoor residual spraying insecticide best complements standard pyrethroid long-lasting insecticidal nets for improved control of pyrethroid resistant malaria vectors?\n", + "\n", + "Thomas Syme, Augustin Fongnikin, Damien Todjinou, Renaud Goveetchan, Mark Rowland, Martin Akogbeto, Corine Nguforo\n", + "\n", + "\n", + "\n", + "Where resources are available, non-pyrethroid IRS can be deployed to complement standard pyrethroid LLINs with the aim of achieving improved vector control and managing insecticide resistance. The impact of the combination may however depend on the type of IRS insecticide deployed. Studies comparing combinations of pyrethroid LLINs with different types of non-pyrethroid IRS products will be necessary for decision making.\n", + "\n", + "header: Mosquito entry and exiting.: Discussion\n", + "\n", + "The ultimate purpose of combining IRS with LLINs is to achieve greater levels of vector control through the differential effects of the interventions and modes of action of the insecticides involved than what is achievable with a single intervention on its own. Transmission dynamics models have suggested that the levels of vector mosquito mortality and blood-feeding inhibition observed in an experimental hut setting could be predictive of the capacity of an indoor vector control intervention or a combination of these to control vector populations, reduce vector biting and improve public health impact when deployed on a large scale [22,23]. In this study, we demonstrate that where vectors are resistant to pyrethroids but susceptible to a given non-pyrethroid IRS insecticide, it should be possible to achieve substantially improved vector control by adding the non-pyrethroid IRS to a standard pyrethroid-only LLIN to boost\n", + "\n", + "Fig 1: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pirimphos-methyl CS IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", + "\n", + "Fig 2: Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with chlorfenapyr IRS applied alone and in combination with DuraNet(r) in Cové, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\n", + "\n", + "\n", + "mortality rates through the IRS intervention, while benefiting from the blood-feeding inhibition provided by the LLIN.\n", + "\n", + "The level of improved mortality achieved in the pyrethroid-only LLIN plus non-pyrethroid IRS combinations relative to the pyrethroid LLIN alone was clearly dependent on the type of non-pyrethroid IRS insecticide used. The combination with pirimiphos-methyl CS IRS induced the highest mortality rate (81%) and this can be attributed to the high and prolonged activity of the pirimiphos-methyl CS IRS formulation on cement walls as demonstrated in this study and previous studies in Benin [24]. This substantiates findings from community trials and operational studies demonstrating significant reductions in transmission of malaria by pyrethroid-resistant vector populations when a single round of pirimiphos-methyl CS IRS was deployed against a background of moderate to high coverage with standard pyrethroid nets [25-27]. By contrast the levels of mortality achieved in the combination with bendiocarb IRS was much lower (32%); attributable to the fast decline in efficacy with the insecticide as observed monthly in the experimental huts and in cone bioassays. The poor residual effect of\n", + "\n", + "Fig 4: **Mortality (72 h) of laboratory maintained, insecticide-susceptible _Anopheles gambiae_ sensu stricto Kisumu colony exposed to IRS-treated hut walls in monthly, 30 mins wall cone bioassays in experimental huts in Cove, southern Benin. Error bars represent 95% CI. Approximately fifty (50) 2–3 days old mosquitoes were exposed for 30 mins to each IRS treated hut in batches of 10 per cone and mortality recorded after 72 h.**\n", + "\n", + "Fig 3: **Monthly mortality rates of wild, free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato entering experimental huts with bendiocarb IRS applied alone and in combination with DuraNet® in Cove, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.**\n", + "bendiocarb for IRS is well documented [28, 29, 30]. The failure of a combination of bendiocarb treated walls and pyrethroid nets to provide improved control of clinical malaria compared to either intervention alone in a previous RCT in Benin [7] was also largely attributed to the short-lived efficacy of bendiocarb on the treated walls [13, 14]. Multiple IRS campaign rounds may be necessary to achieve sustained levels of improved vector control when bendiocarb IRS is deployed to complement standard pyrethroid LLINs. Given the significant costs associated with running IRS campaigns, these findings raise questions over the suitability of currently available formulations of bendiocarb for IRS and the cost-effectiveness of its combination with pyrethroid nets. Considering the high initial mortality rates usually achieved with the insecticide, reformulation chemistry may help address the short residual efficacy of bendiocarb and improve the utility of this insecticide for vector control.\n", + "\n", + "While mortality in the combinations with pirimiphos-methyl CS IRS and bendiocarb IRS were similar to each IRS alone, the combination with chlorfenapyr IRS induced significantly higher levels of mortality compared to chlorfenapyr IRS alone. This demonstrates an additive effect of the chlorfenapyr IRS plus pyrethroid LLINs combination which was not observed with the other IRS insecticides tested. This trend is consistent with previous experimental hut studies in Benin [31, 32] though the levels of mortality achieved with the combination were substantially higher (73%-83% vs. 46%). The difference in mortality could be due to changes in the composition of the vector population and/or increasing pyrethroid resistance levels over time. Chlorfenapyr is a new repurposed pyrrole insecticide with a unique mode of action that has shown potential for IRS but often inducing moderate mortality rates when applied alone in experimental huts against pyrethroid-resistant malaria vectors [29, 33]. It acts on the oxidative/metabolic pathway of insects hence its action can be enhanced by physical activity in the insect [34]. The additive mortality observed in the chlorfenapyr IRS plus pyrethroid net combination may therefore be attributed to the irritant effect of the pyrethroid in the LLIN on mosquitoes as they alight on the chlorfenapyr-treated wall after failed attempts to feed on the sleeper under the net. In addition, owing to the non-neurotoxic and non-irritant effect of chlorfenapyr [35], mosquitoes may have alighted on chlorfenapyr-treated walls for longer, leading to increased insecticide pick-up, potentially contributing to the additional mortality observed with this combination. The inability of the WHO 30-min cone bioassays to predict wild mosquito mortality with chlorfenapyr IRS in experimental huts [29, 34] is further demonstrated in this study; while cone bioassay mortality of the susceptible Kisumu strain was very low, wild mosquito mortality was higher and consistent throughout the trial confirming previous findings [29]. Considering the prolonged effect of chlorfenapyr IRS on wild mosquitoes [29], substantial and sustained improvements in the control of pyrethroid-resistant vector populations can be expected if the IRS insecticide is deployed to complement pyrethroid LLINs.\n", + "\n", + "IRS is highly effective for malaria vector control when deployed on its own but provides limited personal protection from mosquito biting and this is evident from the high blood-feeding rates observed with the IRS treatments alone. In the absence of a bed net, mosquitoes will usually feed on the human occupants in an IRS treated home before resting on the wall where they pick up the insecticide, consequently, direct blood-feeding inhibition is not expected when the intervention is applied independently. By contrast, pyrethroid LLINs reduce mosquito biting and provide substantial levels of personal protection for the user; an effect which is attributable to the physical barrier of the net and the excito-repellent effect of the pyrethroid insecticide. The findings from this study demonstrate that this effect can persist even against a vector population that has developed intense resistance to pyrethroids as observed in Cove [18]. By combining the IRS treatments with a pyrethroid LLIN, it was possible to achieve substantially improved levels of blood-feeding inhibition and personal protection compared to \n", + "the IRS alone. The reduced exposure to infective bites constitutes a crucial advantage of the combination strategy over IRS alone. The blood-feeding rate in the combination appeared to depend on the type of IRS insecticide used albeit to a lesser extent than the levels of mortality achieved; lower blood-feeding rates and thus higher levels of blood-feeding inhibition were achieved in the combination with benidocarb IRS compared to the combination with chlorfenapyr IRS. This can be due to differences in the mode of action of both IRS insecticides; in contrast to chlorfenapyr, benidocarb acts on the insect's nervous system eliciting an irritant rapid knockdown effect on mosquitoes [35] and this together with the excito-repellent effect of the pyrethroid in the standard pyrethroid LLIN could have contributed to the high levels of early exiting and reduced blood-feeding rates observed when both interventions were combined in a hut.\n", + "\n", + "Overall, the results demonstrate the superiority of the organophosphate, pirimiphos-methyl CS for IRS on its own and in combination with pyrethroid LLINs over benidocarb and the pyrrole, chlorfenapyr. However, this finding may not be generalisable to areas where vectors are resistant to organophosphates. Indeed, previous experimental hut studies in Cote d'Ivoire failed to demonstrate improved vector control with the combination compared to the net alone when standard pyrethroid LLINs were combined with pirimiphos-methyl CS-treated wall linings against a vector population that was resistant to pyrethroids and organophosphates [36]. Resistance to organophosphates and carbamates is unfortunately increasing in malaria vector populations especially in West Africa [37, 38, 39, 40]. To mitigate its impact, vector control programmes are encouraged to rotate between IRS insecticides with different modes of action [41]. Considering that most IRS campaigns will usually be deployed against a background of high LLIN coverage, effective IRS rotation plans should prioritise IRS insecticides which in addition to providing improved and prolonged vector control, can efficiently complement LLINs. Based on the findings of this study, chlorfenapyr IRS shows some potential to be a useful addition to such IRS rotation plans in pyrethroid-resistant areas with high pyrethroid LLIN coverage. It will be interesting to investigate the impact of combining pyrethroid LLINs with other newly approved IRS formulations containing clothianidin [17].\n", + "\n", + "The low mortality rates achieved with the standard pyrethroid net in this study (8%), further demonstrates the threat of pyrethroid resistance on the efficacy of standard pyrethroids. Pyrethroid resistance is widespread in malaria vectors across Africa and increasing in intensity the more they are used [12]. A new generation of LLINs treated with a pyrethroid and non-pyrethroid insecticide are now in advanced development. Studies have demonstrated the potential of some of these nets to provide improved control of clinical malaria transmitted by pyrethroid-resistant malaria vectors compared to standard pyrethroid nets [42, 43, 44]. As next generation nets come into the market, and are rolled out in endemic countries, it will be essential to explore any possible interactions with the different types of IRS insecticides that could be deployed together with them in a combined intervention approach.\n", + "\n", + "header: Data analysis\n", + "\n", + "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental hut treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to differential attractiveness of the volunteer sleepers and huts.\n", + "\n", + "\n", + "Mortality in susceptibility bioassays was interpreted according to WHO criteria. All analyses were performed in Stata version 15.1.\n", + "\n", + "header: Table 3. Overall entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts in Covè, southern Benin.\n", + "footer: * Values in the same column sharing a superscript letter do not differ significantly (P>0.05).\n", + "columns: ['Treatment', 'Total females caught', 'Average catch per night', '% Deterrence', 'Total exiting', '% Exophily�', '95% CI']\n", + "\n", + "{\"0\":{\"Treatment\":\"Untreated hut (control)\",\"Total females caught\":711,\"Average catch per night\":7,\"% Deterrence\":\"\\u2013\",\"Total exiting\":322,\"% Exophily\\ufffd\":\"45a\",\"95% CI\":\"42\\u201349\"},\"1\":{\"Treatment\":\"Untreated net (control)\",\"Total females caught\":420,\"Average catch per night\":4,\"% Deterrence\":\"41\",\"Total exiting\":165,\"% Exophily\\ufffd\":\"39a\",\"95% CI\":\"35\\u201344\"},\"2\":{\"Treatment\":\"DuraNet\",\"Total females caught\":619,\"Average catch per night\":6,\"% Deterrence\":\"13\",\"Total exiting\":350,\"% Exophily\\ufffd\":\"57b\",\"95% CI\":\"53\\u201361\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":508,\"Average catch per night\":5,\"% Deterrence\":\"29\",\"Total exiting\":389,\"% Exophily\\ufffd\":\"77c\",\"95% CI\":\"73\\u201380\"},\"4\":{\"Treatment\":\"DuraNet + Bendiocarb IRS\",\"Total females caught\":537,\"Average catch per night\":6,\"% Deterrence\":\"25\",\"Total exiting\":373,\"% Exophily\\ufffd\":\"70cd\",\"95% CI\":\"66\\u201373\"},\"5\":{\"Treatment\":\"Chlorfenapyr IRS\",\"Total females caught\":478,\"Average catch per night\":5,\"% Deterrence\":\"33\",\"Total exiting\":297,\"% Exophily\\ufffd\":\"62bd\",\"95% CI\":\"58\\u201367\"},\"6\":{\"Treatment\":\"DuraNet + Chlorfenapyr IRS\",\"Total females caught\":411,\"Average catch per night\":4,\"% Deterrence\":\"42\",\"Total exiting\":241,\"% Exophily\\ufffd\":\"59b\",\"95% CI\":\"54\\u201363\"},\"7\":{\"Treatment\":\"Pirimiphos-methyl CS IRS\",\"Total females caught\":528,\"Average catch per night\":6,\"% Deterrence\":\"26\",\"Total exiting\":356,\"% Exophily\\ufffd\":\"67d\",\"95% CI\":\"63\\u201371\"},\"8\":{\"Treatment\":\"DuraNet + Pirimiphos-methyl CS IRS\",\"Total females caught\":486,\"Average catch per night\":5,\"% Deterrence\":\"32\",\"Total exiting\":298,\"% Exophily\\ufffd\":\"61bd\",\"95% CI\":\"57\\u201366\"}}\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cove\",\"Start_month\":7,\"Start_year\":2018,\"End_month\":10,\"End_year\":2018}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"DuraNet\",\"Insecticide\":\"Alpha-cypermethrin\",\"Concentration_initial\":\"261 mg\\/m2\",\"Net_holed\":6.0}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Tunnel test\n", + "\n", + "The tunnel test outcomes confirmed the cone bioassay results for the susceptible _An. gambiae s.s._ Kisumu strain, with strong blood-feeding inhibition and high mortality in all nets being above the WHO tunnel test thresholds (>= 90% blood-feeding inhibition or >= 80% mortality) (Fig. 4). The blood-feeding inhibition was high only in unwashed and used samples of PermaNet(r) Dual (A) (92.4%), PermaNet(r) Dual (B) (91.6%) and PermaNet(r) 3.0 (92.3%) (Fig. 4A). The mortality was very high (100%) in unwashed or washed and unused or used samples of all nets (PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0) (Fig. 4B), thus showing their good efficacy against this pyrethroid-susceptible _An. gambiae_ Kisumu strain. Additional file shows the Kisumu strain mortality with tunnel tests in more detail (see Additional file 4: Table S4). For the pyrethroid-resistant _An. gambiae s.l._, only washed and unused PermaNet(r) Dual (A) induced a strong blood-feeding inhibition (91.3%) being above the WHO tunnel cut-off of 90% (Fig. 5A). However, the mortality with all samples (unwashed or washed and unused) of PermaNet(r) Dual (85.2-94.9%) were higher compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 5B), and consistent with the higher efficacy of PermaNet(r) Dual against the free-flying pyrethroid-resistant _An. gambiae s.l._ Tiassale strain populations observed in the concurrent experimental hut trials. Additional file shows the pyrethroid-resistant Tiassale strain mortality with tunnel tests in more detail (see Additional file 5: Table S5).\n", + "\n", + "header: Background: Methods\n", + "\n", + "PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0, unwashed and washed (20 washes), were tested against free-flying pyrethroid-resistant _An. gambiae s.l._ in the experimental huts in Tiassale, Cote d'lvoire from March to August 2020. Complementary laboratory cone bioassays (daytime and 3-min exposure) and tunnel tests (nightly and 15-h exposure) were performed against pyrethroid-susceptible _An. gambiae_ sensu stricto (_S.S._) (Kisumu strain) and pyrethroid-resistant _An. gambiae s.l._ (Tiassale strain).\n", + "\n", + "header: Small-scale field evaluation of PermaNet(r): Abstract\n", + "\n", + "Dual (a long-lasting net coated with a mixture of chlorfenapyr and deltamethrin) against pyrethroid-resistant _Anopheles gambiae_ mosquitoes from Tiassale, Cote d'lvoire\n", + "\n", + "Julien Z. B. Zahouli\n", + "\n", + "Julien Z. B. Zahouli\n", + "\n", + "Julien.zahouli@crsrs.ci\n", + "\n", + "Constant A. V. Edi\n", + "\n", + "1Laurence A. Yao\n", + "\n", + "1Emmanuelle G. Lisro\n", + "\n", + "1Marc Adou\n", + "\n", + "1Inza Kone\n", + "\n", + "1Graham Small\n", + "\n", + "2Leanore D. Sternberg\n", + "\n", + "28Benjamin G. Koudou\n", + "\n", + "\n", + "\n", + "Due to the rapid expansion of pyrethroid-resistance in malaria vectors in Africa, Global Plan for insecticide Resistance Management (GIPRM) has recommended the development of long-lasting insecticidal nets (LLINs), containing insecticide mixtures of active ingredients with different modes of action to mitigate resistance and improve LLIN efficacy. This good laboratory practice (GLP) study evaluated the efficacy of the chlorfenapyr and deltamethrin-coated PermaNet(r) Dual, in comparison with the deltamethrin and synergismt piperonyl butoxide (PBO)-treated PermaNet(r) 3.0 and the deltamethrin-coated PermaNet(r) 2.0, against wild free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato (_S.I._), in experimental huts in Tiassale, Cote d'lvoire (West Africa).\n", + "\n", + "header: Comparison of laboratory bioassay results with hut trial results\n", + "\n", + "Comparing the laboratory cone bioassay and tunnel test results with the experimental hut trial results with the same pyrethroid-resistant _An. gambiae s.l._ strain showed that these laboratory bioassays predicted the response in the huts for PermaNet(r) 3.0 and PermaNet(r) 2.0. Indeed, the unwashed and washed PermaNet(r) 3.0 and PermaNet(r) 2.0 induced relatively lower mortality in the pyrethroid-resistant _An. gambiae_ strain with the cone bioassays, the tunnel test and the hut trial. Focussing on the bioefficacy of PermaNet(r) Dual, the respective mortality rates in the cone, tunnel and hut were 14.0%, 84.5% and 94.9% for unwashed PermaNet(r) Dual (A), 24.0%, 86.5% and 90.2% for unwashed PermaNet(r) Dual (B), and 10.0%, 87.5% and 90.4% for washed PermaNet(r) Dual (B). This suggests that laboratory tunnel tests are more predictive of the performance of PermaNet(r) Dual in experimental huts. Additionally, there were correlations in the blood-feeding rates and blood-feeding inhibition between the tunnel test results and the hut trial results. The high mortality and strong blood-feeding inhibition of PermaNet(r) Dual in tunnel tests with the pyrethroid-resistant _An. gambiae_ Tiassale strain shows that the chlorfenapyr component of PermaNet(r) Dual provided good efficacy against pyrethroid-resistant _Anopheles_.\n", + "\n", + "header: Chemical analysis\n", + "\n", + "Pieces of netting were sampled from unwashed and washed PermaNet(r) Dual (A and B), PermaNet(r) 3.0 and PermaNet(r) 2.0 LLINs before and after being used in the hut trial, in accordance with the WHO protocol for chemical analysis [25]. All sampled net pieces were labelled and stored individually in aluminium foil at 3.7-4.2 degC. The net pieces were then shipped to the Vestergaard's ISO IEC17025 laboratory in Vietnam for chemical analysis of chlorfenapyr and deltamethrin. Deltamethrin and PBO contents were determined following the Collaborative International Pesticides Analytical Council Ltd (CIPAC) (i.e. ClPAC 33/LN/(M2)/3) methods [26]. Briefly, chlorfenapyr content was analysed using in-house method VCL-098-20 that was undergoing ClIPAC validation and was still to be published. Chlorfenapyr content was extracted from the PermaNet(r) Dual net using a mixture of n-hexane and 1,4-dioxane (95:5, v:v) solvents with an internal standard of dibutylphthalate added. The mixture was shaken by shaking machine to extract chlorfenapyr. Extracted solution was filtered through 0.45 mm Teflon membrane and analysed by a normal phase high performance liquid chromatography for chlorfenapyr concentration, detector UV 236 nm.\n", + "\n", + "header: Supporting laboratory testing of net samples\n", + "\n", + "Standard WHO cone bioassays and tunnel tests were conducted with unwashed and washed nets under laboratory conditions, to predict their responses in the field experimental huts. The insecticide susceptible Kisumu strains and field-collected F0 generation of pyrethroid-resistant Tiassale strain of _An. gambiae_ were tested with samples (25 cm x 25 cm) cut from each of the eight net \n", + "types (unwashed and washed net samples) before and after their inclusion into the hut trial [23]. For the tunnel tests, tunnels were divided into two sections by netting samples held in a frame. Nine holes of 1 cm in diameter were cut in each net sample (with one hole located at the centre of the square, and the other eight equidistant and located 5 cm from the border), and the surface of netting available to the mosquitoes was 400 cm\\({}^{2}\\) (20 cm \\(\\times\\) 20 cm).\n", + "\n", + "For each type of net and wash status, 100 non-blood-fed, 2-5-day-old females per strain were subjected to 3-min exposure in cone bioassays in replicates of five mosquitoes per cone according to the WHO guidelines [22]. For the tunnel tests, 100 non-blood-fed, 5-8-day-old mosquito females per strain were subjected to a 15-h exposure overnight using guinea pig as host, following the WHO guidelines [23]. Testing and holding conditions were 27 +- 2 degC and 80 +- 10% relative humidity. The 60-min knockdown for cone bioassays, blood-feeding status for tunnel tests and 24, 48 and 72-h mortality for both methods were recorded.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "All relevant data are within the manuscript.\n", + "\n", + "header: Conclusion\n", + "\n", + "The deltamethrin-chlorfenapyr-coated PermaNet(r) Dual induced a high efficacy and performed better than the deltamethrin-PBO PermaNet(r) 3.0 and the deltamethrin-only PermaNet(r) 2.0, testing both unwashed and 20 times washed samples against the pyrethroid-susceptible and resistant strains of _An. gambiae s.l._ The inclusion of chlorfenapyr with deltamethrin in PermaNet(r) Dual net greatly improved protection and control of pyrethroid-resistant _An. gambiae_ populations. PermaNet(r) Dual thus represents a promising tool, with a high potential to reduce malaria transmission and provide community protection in areas compromised by mosquito vector resistance to pyrethroids.\n", + "\n", + "header: Blood-feeding and personal protection\n", + "\n", + "The blood-feeding effect of the nets in wild pyrethroid-resistant _An. gambiae_ that entered the trial huts and personal protection are presented in Fig. 1A and Table 1. Before washing, the percentage blood-feeding with PernaNet(r) Dual (A) (36.7 +- 4.0%) did not differ significantly from PernaNet(r) Dual (B) (37.5 +- 4.4%) and PernaNet(r) 2.0 (55.7 +- 3.7%), but was significantly higher than PernaNet(r) 2.0 (31.3 +- 4.4%) (z = - 2.17; p = 0.030). The percentage blood-feeding for unwashed PernaNet(r) Dual (B) was similar to unwashed samples of PernaNet(r) 2.0 (z = 1.74; p = 0.081) and PernaNet(r) 3.0 (z = - 1.49; p = 0.136). Washing 20 times did not influence significantly the percentage blood-feeding in PernaNet(r) Dual (B) (z = 0.10; p = 0.921). After washing,\n", + "the percentage blood-feeding of PermaNet(r) Dual (B) (36.0 +- 3.7%) was substantially lower, but without significant differences when compared with PermaNet(r) 3.0 (57.7 +- 3.7%) (z = 1.71; p = 0.087), PermaNet(r) 2.0 (72.3 +- 3.2%) (z = 1.78; p = 0.076) and the untreated control net (z = 1.72; p = 0.085). For blood-feeding inhibition, unwashed PermaNet(r) Dual (A) (42.5 +- 6.8%) was similar to unwashed PermaNet(r) Dual (B) (41.4 +- 6.9%) (z = 0.25; p = 0.802) and washed PermaNet(r) Dual (B) (43.7 +- 4.8%) that was not affected by washing (z = - 0.41; p = 0.682). Compared with PermaNet(r) 3.0, the blood-feeding inhibition of PermaNet(r) Dual (B) was significantly higher before washing (z = - 0.72; p = 0.469), and significantly lower after washing (z = - 1.92; p = 0.045). However, both unwashed and washed PermaNet(r) Dual (B) provided, respectively, significantly higher blood-feeding inhibition than unwashed and washed PermaNet(r) 2.0 (all p < 0.05). The personal protection was similar between unwashed samples of PermaNet(r) Dual (A) (58.8 +- 3.5%) and PermaNet(r) Dual (B) (60.8 +- 3.8%) (z = - 0.04; p = 0.968). Unwashed PermaNet(r) Dual (B) resulted in a personal protection that was similar to unwashed PermaNet(r) 3.0 (62.9 +- 4.2%) (z = 0.21; p = 0.738), and significantly different from unwashed PermaNet(r) 2.0 (28.8 +- 1.9%) (z = 3.21; p = 0.001). With 20 washes, the personal protection with PermaNet(r) Dual (B) declined significantly from 60.8 +- 3.8% to 20.2 +- 1.1% (z = - 2.96; p = 0.003). However, washed PermaNet(r) Dual (B) provided significantly higher personal protection compared with their washed counterparts of PermaNet(r) 3.0 (9.8 +- 0.7%) (z = 2.89; p = 0.004) and PermaNet(r) 2.0 (- 32.6 +- 2.2%) (z = 2.93; p = 0.003).\n", + "\n", + "header: Background\n", + "\n", + "According to the latest World Malaria Report 2022 of the World Health Organization (WHO), there were 247 million malaria cases and 619,000 malaria deaths in 84 malaria endemic countries worldwide in 2021 [1, 2]. This represents about 13.4 million more cases in 2021 compared to 2019 attributable to disruptions to essential malaria services during the COVID-18 pandemic [1]. The WHO African Region, with an estimated 234 million cases in 2021, accounted for about 95% of global cases malaria [1]. The recent decline of malaria burden from 2000 to 2019 was largely due to the massive distribution and use of long-lasting insecticidal nets (LLINs) (2.5 billion LLINs were delivered from 2004 to 2021) for _Anopheles_ mosquito vector control [1]. The malaria burden reduction is now slowing down and is threatened by the spread of resistance to pyrethroids (78 of 88 endemic countries have detected resistance to at least one insecticide class reported to the WHO from 2010 to 2020) [1]. The WHO Global Plan for Insecticide Resistance Management (GPIRM) has recommended the development of LLINs with insecticide mixtures of active ingredients with different modes of action to mitigate resistance [3]. The WHO Global Technical Strategy (GTS) aims for a reduction of malaria case incidence and mortality rate of at least 40% by 2020, 75% by 2025 and 90% by 2030 from the 2015 baseline [1, 4]. To meet these targets, GTS has called for the development of new tools, with combined or more effective insecticide molecules to control insecticide-resistant _Anopheles_ vectors [4]. These new vector control tools must incorporate new insecticide molecules and/or insecticide mixtures containing at least two active ingredients with different modes of action for the management of malaria vector resistance to insecticides [1, 3].\n", + "\n", + "Malaria is endemic throughout Cote d'Ivoire and represents the leading cause of mortality and morbidity in the country. Several studies have shown a wide spread resistance in local _Anopheles_ to most of the insecticide classes currently used in malaria vector control (e.g. pyrethroids, DDT and carbamates) [5-8]. The existence of multiple mechanisms of resistance in the main vector, _Anopheles gambiae_ sensu lato (_s.l._) threatens the efficacy of vector control tools currently used in Cote d'Ivoire, including LLINs [9-11]. Meiwald et al. [11] found that pyrethroid resistance is associated with significant overexpression of _CYP6P4, CYP6P3,_ and _CYP6Z1_ in _Anopheles coluzzii_ in Cote d'Ivoire. High allelic frequencies of knock-down resistance (_kdr_) _L1014F_ mutation (range: 0.46-1), relatively low frequencies of the _ace-1R_ mutation in the acetylcholinesterase gene associated with target-site insensitivity to carbamates and organophosphates (<0.5), and elevated activity of insecticide detoxifying enzymes (mainly mixed function oxidases (MFOs), esterase and glutathione S-transferase (GST)), have been reported in Cote d'Ivoire [5, 7, 10]. Recent laboratory (WHO tube and CDC bottle) bioassays against local pyrethroid-resistant _An. gambiae_ from Cote d'Ivoire have shown that pyrethroids induce low mortality, whilst pre-exposure to the synergist piperonyl butoxide (PBO) increases the mortality but does not restore fully the susceptibility due to resistance [9]. However, the pyrrole insecticide chlorfenapyr induces higher mortality in resistant _An. gambiae_ compared with pyrethroids alone or combined with PBO in Cote d'Ivoire [9].\n", + "\n", + "The present good laboratory practice (GLP) study evaluated the bio-efficacy of a new candidate LLIN, PermaNet(r) Dual, against pyrethroid-resistant _An. gambiae s.l._ in comparison with the WHO Prequalification Unit, Vector Control Product Assessment Team (PQT/VCP) listed standard LLINs, PermaNet(r) 2.0 and PermaNet(r) 3.0, through the conduct of an experimental hut trial and laboratory bioassays in Tiassale, Cote d'Ivoire. PermaNet(r) Dual has a mixture of the pyrrole chlorfenapyr and the pyrethroid deltamethrin coated onto a polyester fabric. PermaNet(r) 3.0 is treated with deltamethrin and PBO, and PermaNet(r) 2.0 is treated with deltamethrin only. Chlorfenapyr is a pro-insecticide activated by the oxygenase function of cytochrome P450s and oxidative removal of the N-ethoxymethyl\n", + "group leads to a toxic form identified as CL 303,268. The toxic form uncouples oxidative phosphorylation in the mitochondria, resulting in disruption of the production of adenosine triphosphate and loss of energy, leading to cell dysfunction and ultimately death of the insect [12]. The WHO has received some resistance monitoring data for chlorfenapyr, but these data are insufficient to assess the potential presence of resistance to this insecticide [1]. Deltamethrin is a neurotoxic insecticide and has excito-repellent effects on mosquitoes. PBO, used on PermaNet(r) 3.0, is a synergist which inhibits mixed function oxidases, blocking the detoxification of pyrethroids and at least partially restoring pyrethroid susceptibility [1, 13]. Pyrethroid-resistant strains of _Anopheles_ have so far been found to be susceptible to chlorfenapyr [9, 14-18]. Thus, the hypothesis of the current study was that chlorfenapyr would kill the pyrethroid-resistant _An. gambiae_ population in Tiassale, and PermaNet(r) Dual would induce higher mortality compared to both PermaNet(r) 3.0 and PermaNet(r) 2.0 in the experimental huts, and the supplementary laboratory cone and tunnel bioassays could predict these hut trial outcomes.\n", + "\n", + "header: Supplementary Information\n", + "\n", + "The online version contains supplementary material available at [https://doi.org/10.11016/s12936-023-04455-z](https://doi.org/10.11016/s12936-023-04455-z).\n", + "\n", + "header: Funding\n", + "\n", + "This study was funded by a Grant from Vestergaard Sarl, Lausanne, Switzerland.\n", + "\n", + "header: Results\n", + "\n", + "The outcomes of the current experimental hut trial showed that the parameters of the net efficacy against the pyrethroid-resistant _An. gambiae s.l._ Tiassale population varied as a function of net type and wash status, with the performance of PermaNet(r) Dual being better overall compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 1 and Table 1).\n", + "\n", + "header: Experimental huts and mosquitoes: Net treatments and treatment arms\n", + "\n", + "This study included the PermaNet(r) Dual (candidate net), PermaNet(r) 3.0 and PermaNet(r) 2.0 (reference nets) and untreated net (negative control). All mosquito nets were new and unwashed nets supplied by Vestergaard Sarl (Lausanne, Switzerland). The untreated nets were made of polyester fabric without any insecticide. PermaNet(r) Dual was made of polyester fabric coated with chlorfenapyr at 5.0 g/kg +- 25% and deltamethrin at 2.1 g/kg +- 25%. The unwashed PermaNet(r) Dual arm was replicated using nets from two different production batches (referred to as A and B). PermaNet(r) 3.0 was made of polyester fabric coated with 2.1 g/kg +- 25% of deltamethrin on the sides, and polyethylene incorporated with 4.0 g/kg +- 25% of deltamethrin and 25.0 g/kg +- 25% of PBO on the roof. PermaNet(r) 2.0 was made of polyester fabric coated with 1.4 g/kg +- 25% of deltamethrin.\n", + "\n", + "Eight treatment arms were compared in the experimental huts and laboratory: PermaNet(r) Dual (A) unwashed; PermaNet(r) Dual (B) unwashed and washed 20 times; PermaNet(r) 3.0 unwashed and washed 20 times; PermaNet(r) 2.0 unwashed and washed 20 times; and untreated control net. The nets were prepared and washed using a soap called \"Savon de Marseille\" and according to the WHO guidelines on small-scale field hut trials and laboratory testing [23]. The interval of time between two consecutive washes was one day, corresponding to the regeneration time of all the nets. The regeneration time of the PermaNet(r) Dual (i.e. 1 day) was supplied by Vestergaard. The nets were washed 20 times. Before testing them in the experimental huts, all the unwashed, washed and untreated control nets were deliberately holed with six holes of 4 cm in diameter to stimulate the conditions of torn nets according to the WHO guidelines [23].\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Additional file 3: Table 53.\n", + "\n", + "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (Tissale strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", + "\n", + "header: Conclusion\n", + "\n", + "The present small-scale GLP experimental hut study demonstrated that the deltamethrin- chlorfenapyr PermaNet(r) Dual net has high bio-efficacy, inducing significantly higher mortality and blood-feeding inhibition effects in the wild insecticide-resistant _An. gambiae s.l._ when compared with the deltamethrin-PBO PermaNet(r) 3.0 and deltamethrin-only PermaNet(r) 2.0. The inclusion of chlorfenapyr with pyrethroid in PermaNet(r) Dual net has greatly improved protection and control of free-flying wild pyrethroid-resistant _An. gambiae_ populations. The chlorfenapyr-deltamethrin-coated PermaNet(r) Dual net has great potential to reduce malaria transmission, particularly in areas compromised by high level of pyrethroid resistance in _Anopheles_ mosquitoes. Further validations in large-scale field trials are required to assess the effectiveness, the durability and the acceptability of this new tool for malaria vector control.\n", + "\n", + "header: Discussion\n", + "\n", + "The current study evaluated the efficacy of PermaNet(r) Dual, a new candidate net coated with a mixture of chlorfenapyr and deltamethrin, against _An. gambiae_ in a small-scale GLP but study in Tiassale, Cote d'Ivoire, with supporting exploratory laboratory cone and tunnel\n", + "\n", + "Fig. 4: Mean blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the susceptible _Anopheles gambiae_ s.s. Kisumu strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassale, Côte d’Ivoire. Error bars show the standard error of the mean\n", + "bioassays. WHO-prequalified PermaNet(r) 3.0 (co-treated with deltamethrin and PBO) and PermaNet(r) 2.0 (treated with deltamethrin only) were used as the reference nets. In this GLP but study, PermaNet(r) Dual performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0, in terms of mortality and blood-feeding inhibition, for both unwashed and unstressed cases, respectively.\n", + "\n", + "Fig. 5: Mean of blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the pyrethroid-resistant _Anopheles gambiae s1_. Tassale strain exposed to net samples using tunnel tests before and after experimental hut trial in Tassale, Côte d’thovie. Error bars show the standard error of the mean \n", + "and washed samples. Unlike the cone bioassays, the tunnel tests successfully confirmed the field efficacy of the nets. Briefly, this hut trial showed the benefit of mixing deltamethrin and chlorfenapyr together in a long-lasting net, PermaNet(r) Dual, for an effective control of pyrethroid-resistant _Anopheles._\n", + "\n", + "The current experimental hut study demonstrated that PermaNet(r) Dual had increased efficacy against highly pyrethroid-resistant _An. gambiae._ Indeed, hut mortality of _An. gambiae_ Tiassale strain was significantly higher with PermaNet(r) Dual (>83%) in comparison with PermaNet(r) 3.0 (<38%) and PermaNet(r) 2.0 (<12%), for both unwashed and 20 times washed samples (Fig. 1B and Table 1). This PermaNet(r) Dual efficacy was similar to chlorfenapyr and alpha-cypermethrin mixture-coated Intercept G2 in West and East Africa [16, 17, 27, 28, 29, 30, 31, 32]. The good performance of PermaNet(r) Dual might be attributed to the susceptibility of the highly pyrethroid-resistant _An. gambiae_ s.l. to chlorfenapyr [9, 11]. Due to the novel mode of action of chlorfenapyr, the present pyrethroid-resistance mechanisms did not provide any cross-resistance to this insecticide [12]. Indeed, chlorfenapyr-treated tool has been shown to control a number of different multiple-insecticide-resistant _Anopheles_ populations [14, 15, 27, 28, 29, 30, 31, 32].\n", + "\n", + "This hut study showed that the percentage blood-feeding in wild pyrethroid-resistant _An. gambiae_ population was lower for PermaNet(r) Dual (unwashed and washed) compared with PermaNet(r) 2.0 (unwashed and washed) and washed PermaNet(r) 3.0, but slightly higher than\n", + "unwashed PermaNet(r) 3.0 (Fig. 1A and Table 1). Likewise, blood-feeding inhibition with PermaNet(r) Dual was comparable or stronger than with PermaNet(r) 2.0 and washed PermaNet(r) 3.0. This PermaNet(r) Dual blood-feeding inhibition outcome is consistent with that caused by Intercept G2 in earlier hut trials in West Africa [27-31], and may be explained by the irritant effects of the deltamethrin [32-35]. While unwashed PermaNet(r) Dual and PermaNet(r) 3.0 produced similar levels of blood-feeding inhibition, the 20 times washed PermaNet(r) Dual induced a statistically greater blood-feeding inhibition in comparison with both PermaNet(r) 3.0 and PermaNet(r) 2.0 washed 20 times. This suggests that PermaNet(r) Dual may have performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0 over time. PermaNet(r) Dual effectiveness for inhibiting blood-feeding could imply its good potential for reducing the human-biting and blood-feeding, adding value into its killing effects in malaria vectors.\n", + "\n", + "In the present hut study, unwashed PermaNet(r) Dual deterrence effect against the wild pyrethroid-resistant _An. gambiae_ population was comparable to that recorded in PermaNet(r) 2.0 and PermaNet(r) 3.0. The deltamethrin component of PermaNet(r) Dual has a deterrence effect and may have induced exiting in mosquitoes. However, the 20 times washed PermaNet(r) Dual did not have a deterrence effect (Table 1), probably due to a reduction of the chemical contents (Table 2). A dipped chlorfenapyr net did seem to have a deterrence effect, but did not have a significant effect on exiting rates in West Africa [15, 16, 26-31]. The higher deterrence effect may be due to both the chlorfenapyr and deltamethrin components, but higher exiting rate would likely be due only to the deltamethrin component. Thus, PermaNet(r) Dual may have both deterrent and excito-repellency effects, providing personal protection against pyrethroid-resistant _An. gambiae_ mosquitoes, and reducing human-vector contacts, which may, in turn, lead to an increased user acceptance [36].\n", + "\n", + "While standard laboratory cone bioassays failed to predict PermaNet(r) Dual efficacy against pyrethroid-resistant _An. gambiae s.l.,_ tunnel tests successfully predicted its efficacy against the same strain in the semi-field experimental huts. Both cone and tunnel bioassays met the WHO criteria [44], with the susceptible _An. gambiae s.s._ Kisumu strain. However, _An. gambiae s.s._ Kisumu strain mortality against unwashed and used PermaNet(r) Dual (A) was lower (34%) with cone bioassay (Fig. 2B) probably due to the reduction of the chemical bioavailability on netting fibre surface of net samples tested, or the inappropriateness of cone bioassay method for evaluation of the chlorfenapyr-coated PermaNet(r) Dual as the mortality was higher (100%) with tunnel test (Fig. 4B). With the wild pyrethroid-resistant _An. gambiae s.l._ Tiassale strain, only the tunnel tests achieved high efficacy that was consistent with that observed in the huts with PermaNet(r) Dual. The difference in PermaNet(r) Dual efficacy between both _Anopheles_ Kiumu and Tiassale strains may be explained by the difference in the levels of their resistance to insecticides. However, the lower efficacy of PermaNet(r) Dual against pyrethroid-resistant _An. gambiae s.l._ with cone bioassays (daytime and 3-min exposure) compared with tunnel tests (night-time and 15-h exposure) may be attributable to the slow mode of action of chlorfenapyr and that mosquitoes need to be metabolically active for the activation of the chlorfenapyr pro-insecticide [12, 13, 37]. Indeed, chlorfenapyr has a previously been observed to have a slower action and delayed toxic activity of 2-3 days post-exposure compared to other insecticides (pyrethroids and organophosphates) used in mosquito vector control [14, 28, 29]. The cone bioassay method was developed to assess the bioefficacy of pyrethroid-only LLINs, and the use of this method to test LLINs containing non-neurotoxic insecticides, such as chlorfenapyr, may not necessarily be predictive of field impact, even with increased exposure time of mosquitoes inside the cones [16, 27]. In contrast, the tunnel test results with pyrethroid-resistant _An. gambiae s.l._ Tiassale strain (field-collected F0 generation) were more predictive of PermaNet(r) Dual efficacy in huts, as observed for other chlorfenapyr-coated nets, such as Interceptor(r) G2 [16, 27, 28]. Tunnel tests provide an increased exposure time of mosquitoes to the LLIN samples being tested, and being an overnight exposure. As the female mosquitoes in the tunnel tests are also exhibiting host-seeking behaviour and are, therefore, metabolically active, the activation of chlorfenapyr following tarsal pickup by mosquitoes may be more effective. The tunnel test was a better predictor of PermaNet(r) Dual field efficacy because exposure occurred at night when host-seeking mosquitoes are more vulnerable to chlorfenapyr. Tunnel test thus is a more reliable technique to assess the efficacy of a chlorfenapyr-treated net prior to field trials against free-flying mosquitoes [16, 38, 39].\n", + "\n", + "In PermaNet(r) Dual, deltamethrin and chlorfenapyr contents varied slightly, but complied with the dose interval limits of target specification [23]. This revealed a good homogeneity of the active ingredients' distribution over and a good retention of these active ingredients in PermaNet(r) Dual, thus resulting in high and similar mortality and blood-feeding inhibition between unwashed samples of PermaNet(r) Dual (A) and PermaNet(r) Dual (B). The reduction of chemical contents due to the loss of chlorfenapyr and deltamethrin with 20 washes had no apparent effect on PermaNet(r) Dual efficacy as the washed samples were still producing high mortality against the pyrethroid-resistant mosquitoes. Overall,\n", + "PernaNet(r) Dual chemical bioavailability was sufficient and produced high mortality in pyrethroid-resistant _Anopheles_ mosquitoes after 20 standardized washes (corresponding to a 3-year use) and over the hut trial.\n", + "\n", + "The high vector mortality and personal protection effect of the PernaNet(r) Dual found in this study are the desired outcomes of any vector control tool. The high mortality effects and the additive blood-feeding inhibition impacts induced by PernaNet(r) Dual in this hut trial are expected to substantially diminish the malaria vector density and biting rates in the field, and hence the transmission of malaria in the areas where vectors are resistant to insecticides [40-47]. Additionally, PernaNet(r) Dual performed better than the reference PernaNet(r) 3.0 and PernaNet(r) 2.0 nets, when washed 20 times, thus meeting the WHO hut trial criteria [23].\n", + "\n", + "However, these results need to be further validated in a large-scale field trial to assess the durability and acceptability of this new tool for malaria vector control [48-50]. A community trial would be the best way to evaluate the community level effect of this promising candidate net (i.e. PernaNet(r) Dual) against malaria transmission, by monitoring entomological infection rate, _Plasmodium_ prevalence and disease incidence [48-50]. Such a community trial could be a randomized controlled trial as with dual-active-ingredient LLINs (e.g. Interceptor G2) in Tanzania [49], soon in Benin [48, 50], and the pilot deployments that are part of the New Nets Project led by PATH [51]. Furthermore, PernaNet(r) Dual should be tested against wild populations of _Anopheles funestus_[32], or other main or secondary vectors of malaria in Africa [52-56]. Ultimately, in the present study, the series of hut and laboratory tests demonstrated that the chlorfenapyr component of PernaNet(r) Dual could make a major contribution to controlling the pyrethroid-resistant _An. gambiae_ populations. Furthermore, there were no adverse effects reported among hut sleepers and mosquito collectors during the trial in the huts where PernaNet(r) Dual were used, and this may possibly increase the rate of future user acceptability and improve the usage of this net for malaria vector control.\n", + "\n", + "header: Outcomes measures\n", + "\n", + "The following entomological outcomes were used to evaluate the efficacy of each treatment arm in the current experimental hut trial [23]:\n", + "\n", + "1. Deterrence: proportional reduction in the number of mosquitoes caught in treated hut relative to the number caught in the control hut.\n", + "2. Exiting rate: percentage of the mosquitoes collected from the veranda trap out of all mosquitoes collected.\n", + "3. Induced exophily: proportional reduction of mosquitoes found in the exit and veranda traps relative to control hut.\n", + "4. Blood-feeding: percentage of blood-fed mosquitoes relative to the total collected.\n", + "5. Blood-feeding inhibition: proportional reduction in blood feeding percentage in treated huts relative to the control hut.\n", + "6. Mortality: percentage of dead mosquitoes found dead in hut in the morning (immediate mortality) or after being caught alive and dead during holding (delayed mortality) in treatment huts out of mosquitoes collected, and corrected for control mortality.\n", + "7. Personal protection: the proportional reduction in the number of blood-fed mosquitoes in the treated huts relative to the number of blood-fed mosquitoes in the untreated control.\n", + "8. Killing effect: the proportional reduction in the number of mosquitoes killed in the treated huts relative to the number of mosquitoes killed in the untreated control.\n", + "\n", + "The formulas of key entomological outcomes measured in this study are [23]:\n", + "\n", + "\\[\\text{Deterrence}(\\%) = \\frac{\\text{Nc} - \\text{Nt}}{\\text{Nc}} \\times 100 = \\left( 1 - \\frac{\\text{Nt}}{\\text{Nc}} \\right) \\times 100,\\]\n", + "\n", + "where Nt the total number of mosquitoes collected in the treatment hut and veranda/exit traps and Nc the total number of mosquitoes in the control hut and veranda/exit traps.\n", + "\n", + "\\[\\text{Exiting}\\,\\text{rate}(\\%) = \\frac{\\text{n}}{\\text{N}} \\times 100,\\]\n", + "\n", + "where n is the number of mosquitoes from veranda and window traps, while N is the total number of mosquitoes collected in the hut.\n", + "\n", + "\\[\\text{Induced}\\,\\text{exophily}(\\%) = \\frac{\\text{Pt} - \\text{Pc}}{\\text{Pc}} \\times 100\\] \\[= \\left( \\frac{\\text{Pt}}{\\text{Pc}} - 1 \\right) \\times 100,\\]\n", + "\n", + "where Pt is the proportion of mosquitoes from veranda and window traps of treated hut while Pc is the number of mosquitoes from veranda and window traps of untreated control hut.\n", + "\n", + "\\[\\text{Blood} - \\text{feeding}\\,\\text{inhibition}(\\%) = \\frac{\\text{Pc} - \\text{Pt}}{\\text{Pc}} \\times 100,\\]\n", + "\n", + "where Pt the proportion of blood-fed mosquitoes in the treatment hut, and Pc the proportion of blood-fed mosquitoes in the control hut.\n", + "\n", + "\\[\\text{Personal}\\,\\text{protection}(\\%) = \\frac{\\text{Bc} - \\text{Bt}}{\\text{Bc}} \\times 100\\] \\[= \\left( 1 - \\frac{\\text{Bt}}{\\text{Bc}} \\right) \\times 100,\\]\n", + "\n", + "where Bt the number of blood-fed mosquitoes in the treatment hut and Bc the number of blood-fed mosquitoes in the control hut.\n", + "\n", + "\\[\\text{Killing}\\,\\text{effect}(\\%) = \\frac{\\text{Kt} - \\text{Kc}}{\\text{Tc}} \\times 100,\\]\n", + "\n", + "where Kt is the number of mosquitoes killed in the treatment huts, Kc is the number of mosquitoes killed in the control huts, and Tc is the total number of mosquitoes collected from the control.\n", + "\n", + "header: Results\n", + "\n", + "PermaNet(r) Dual demonstrated significantly improved efficacy, compared to PermaNet(r) 3.0 and PermaNet(r) 2.0, against the pyrethroid-resistant _An. gambiae s.l._ Indeed, the experimental hut trial data showed that the mortality and blood-feeding inhibition in the wild pyrethroid-resistant _An. gambiae s.l._ were overall significantly higher with PermaNet(r) Dual compared with PermaNet(r) 3.0 and PermaNet(r) 2.0, for both unwashed and washed samples. The mortality with unwashed and washed samples were 93.6 +- 0.2% and 83.2 +- 0.9% for PermaNet(r) Dual, 37.5 +- 2.9% and 14.4 +- 3.3% for PermaNet(r) 3.0, and 7.4 +- 5.1% and 11.7 +- 3.4% for PermaNet(r) 2.0, respectively. Moreover, unwashed and washed samples produced the respective percentage blood-feeding inhibition of 41.4 +- 6.9% and 43.7 +- 4.8% with PermaNet(r) Dual, 51.0 +- 5.7% and 9.8 +- 3.6% with PermaNet(r) 3.0, and 12.8 +- 4.3% and - 13.0 +- 3.6% with PermaNet(r) 2.0. Overall, PermaNet(r) Dual also induced higher or similar deterrence, exophily and personal protection when compared with the standard PermaNet(r) 3.0 and PermaNet(r) 2.0 reference nets, with both unwashed and\n", + "washed net samples. In contrast to cone bioassays, tunnel tests predicted the efficacy of PermaNet(r) Dual seen in the current experimental hut trial.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Tunnel test\n", + "\n", + "The tunnel test outcomes confirmed the cone bioassay results for the susceptible _An. gambiae s.s._ Kisumu strain, with strong blood-feeding inhibition and high mortality in all nets being above the WHO tunnel test thresholds (>= 90% blood-feeding inhibition or >= 80% mortality) (Fig. 4). The blood-feeding inhibition was high only in unwashed and used samples of PermaNet(r) Dual (A) (92.4%), PermaNet(r) Dual (B) (91.6%) and PermaNet(r) 3.0 (92.3%) (Fig. 4A). The mortality was very high (100%) in unwashed or washed and unused or used samples of all nets (PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0) (Fig. 4B), thus showing their good efficacy against this pyrethroid-susceptible _An. gambiae_ Kisumu strain. Additional file shows the Kisumu strain mortality with tunnel tests in more detail (see Additional file 4: Table S4). For the pyrethroid-resistant _An. gambiae s.l._, only washed and unused PermaNet(r) Dual (A) induced a strong blood-feeding inhibition (91.3%) being above the WHO tunnel cut-off of 90% (Fig. 5A). However, the mortality with all samples (unwashed or washed and unused) of PermaNet(r) Dual (85.2-94.9%) were higher compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 5B), and consistent with the higher efficacy of PermaNet(r) Dual against the free-flying pyrethroid-resistant _An. gambiae s.l._ Tiassale strain populations observed in the concurrent experimental hut trials. Additional file shows the pyrethroid-resistant Tiassale strain mortality with tunnel tests in more detail (see Additional file 5: Table S5).\n", + "\n", + "header: Background: Methods\n", + "\n", + "PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0, unwashed and washed (20 washes), were tested against free-flying pyrethroid-resistant _An. gambiae s.l._ in the experimental huts in Tiassale, Cote d'lvoire from March to August 2020. Complementary laboratory cone bioassays (daytime and 3-min exposure) and tunnel tests (nightly and 15-h exposure) were performed against pyrethroid-susceptible _An. gambiae_ sensu stricto (_S.S._) (Kisumu strain) and pyrethroid-resistant _An. gambiae s.l._ (Tiassale strain).\n", + "\n", + "header: Comparison of laboratory bioassay results with hut trial results\n", + "\n", + "Comparing the laboratory cone bioassay and tunnel test results with the experimental hut trial results with the same pyrethroid-resistant _An. gambiae s.l._ strain showed that these laboratory bioassays predicted the response in the huts for PermaNet(r) 3.0 and PermaNet(r) 2.0. Indeed, the unwashed and washed PermaNet(r) 3.0 and PermaNet(r) 2.0 induced relatively lower mortality in the pyrethroid-resistant _An. gambiae_ strain with the cone bioassays, the tunnel test and the hut trial. Focussing on the bioefficacy of PermaNet(r) Dual, the respective mortality rates in the cone, tunnel and hut were 14.0%, 84.5% and 94.9% for unwashed PermaNet(r) Dual (A), 24.0%, 86.5% and 90.2% for unwashed PermaNet(r) Dual (B), and 10.0%, 87.5% and 90.4% for washed PermaNet(r) Dual (B). This suggests that laboratory tunnel tests are more predictive of the performance of PermaNet(r) Dual in experimental huts. Additionally, there were correlations in the blood-feeding rates and blood-feeding inhibition between the tunnel test results and the hut trial results. The high mortality and strong blood-feeding inhibition of PermaNet(r) Dual in tunnel tests with the pyrethroid-resistant _An. gambiae_ Tiassale strain shows that the chlorfenapyr component of PermaNet(r) Dual provided good efficacy against pyrethroid-resistant _Anopheles_.\n", + "\n", + "header: Conclusion\n", + "\n", + "The deltamethrin-chlorfenapyr-coated PermaNet(r) Dual induced a high efficacy and performed better than the deltamethrin-PBO PermaNet(r) 3.0 and the deltamethrin-only PermaNet(r) 2.0, testing both unwashed and 20 times washed samples against the pyrethroid-susceptible and resistant strains of _An. gambiae s.l._ The inclusion of chlorfenapyr with deltamethrin in PermaNet(r) Dual net greatly improved protection and control of pyrethroid-resistant _An. gambiae_ populations. PermaNet(r) Dual thus represents a promising tool, with a high potential to reduce malaria transmission and provide community protection in areas compromised by mosquito vector resistance to pyrethroids.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "All relevant data are within the manuscript.\n", + "\n", + "header: Small-scale field evaluation of PermaNet(r): Abstract\n", + "\n", + "Dual (a long-lasting net coated with a mixture of chlorfenapyr and deltamethrin) against pyrethroid-resistant _Anopheles gambiae_ mosquitoes from Tiassale, Cote d'lvoire\n", + "\n", + "Julien Z. B. Zahouli\n", + "\n", + "Julien Z. B. Zahouli\n", + "\n", + "Julien.zahouli@crsrs.ci\n", + "\n", + "Constant A. V. Edi\n", + "\n", + "1Laurence A. Yao\n", + "\n", + "1Emmanuelle G. Lisro\n", + "\n", + "1Marc Adou\n", + "\n", + "1Inza Kone\n", + "\n", + "1Graham Small\n", + "\n", + "2Leanore D. Sternberg\n", + "\n", + "28Benjamin G. Koudou\n", + "\n", + "\n", + "\n", + "Due to the rapid expansion of pyrethroid-resistance in malaria vectors in Africa, Global Plan for insecticide Resistance Management (GIPRM) has recommended the development of long-lasting insecticidal nets (LLINs), containing insecticide mixtures of active ingredients with different modes of action to mitigate resistance and improve LLIN efficacy. This good laboratory practice (GLP) study evaluated the efficacy of the chlorfenapyr and deltamethrin-coated PermaNet(r) Dual, in comparison with the deltamethrin and synergismt piperonyl butoxide (PBO)-treated PermaNet(r) 3.0 and the deltamethrin-coated PermaNet(r) 2.0, against wild free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato (_S.I._), in experimental huts in Tiassale, Cote d'lvoire (West Africa).\n", + "\n", + "header: Supplementary Information\n", + "\n", + "The online version contains supplementary material available at [https://doi.org/10.11016/s12936-023-04455-z](https://doi.org/10.11016/s12936-023-04455-z).\n", + "\n", + "header: Background\n", + "\n", + "According to the latest World Malaria Report 2022 of the World Health Organization (WHO), there were 247 million malaria cases and 619,000 malaria deaths in 84 malaria endemic countries worldwide in 2021 [1, 2]. This represents about 13.4 million more cases in 2021 compared to 2019 attributable to disruptions to essential malaria services during the COVID-18 pandemic [1]. The WHO African Region, with an estimated 234 million cases in 2021, accounted for about 95% of global cases malaria [1]. The recent decline of malaria burden from 2000 to 2019 was largely due to the massive distribution and use of long-lasting insecticidal nets (LLINs) (2.5 billion LLINs were delivered from 2004 to 2021) for _Anopheles_ mosquito vector control [1]. The malaria burden reduction is now slowing down and is threatened by the spread of resistance to pyrethroids (78 of 88 endemic countries have detected resistance to at least one insecticide class reported to the WHO from 2010 to 2020) [1]. The WHO Global Plan for Insecticide Resistance Management (GPIRM) has recommended the development of LLINs with insecticide mixtures of active ingredients with different modes of action to mitigate resistance [3]. The WHO Global Technical Strategy (GTS) aims for a reduction of malaria case incidence and mortality rate of at least 40% by 2020, 75% by 2025 and 90% by 2030 from the 2015 baseline [1, 4]. To meet these targets, GTS has called for the development of new tools, with combined or more effective insecticide molecules to control insecticide-resistant _Anopheles_ vectors [4]. These new vector control tools must incorporate new insecticide molecules and/or insecticide mixtures containing at least two active ingredients with different modes of action for the management of malaria vector resistance to insecticides [1, 3].\n", + "\n", + "Malaria is endemic throughout Cote d'Ivoire and represents the leading cause of mortality and morbidity in the country. Several studies have shown a wide spread resistance in local _Anopheles_ to most of the insecticide classes currently used in malaria vector control (e.g. pyrethroids, DDT and carbamates) [5-8]. The existence of multiple mechanisms of resistance in the main vector, _Anopheles gambiae_ sensu lato (_s.l._) threatens the efficacy of vector control tools currently used in Cote d'Ivoire, including LLINs [9-11]. Meiwald et al. [11] found that pyrethroid resistance is associated with significant overexpression of _CYP6P4, CYP6P3,_ and _CYP6Z1_ in _Anopheles coluzzii_ in Cote d'Ivoire. High allelic frequencies of knock-down resistance (_kdr_) _L1014F_ mutation (range: 0.46-1), relatively low frequencies of the _ace-1R_ mutation in the acetylcholinesterase gene associated with target-site insensitivity to carbamates and organophosphates (<0.5), and elevated activity of insecticide detoxifying enzymes (mainly mixed function oxidases (MFOs), esterase and glutathione S-transferase (GST)), have been reported in Cote d'Ivoire [5, 7, 10]. Recent laboratory (WHO tube and CDC bottle) bioassays against local pyrethroid-resistant _An. gambiae_ from Cote d'Ivoire have shown that pyrethroids induce low mortality, whilst pre-exposure to the synergist piperonyl butoxide (PBO) increases the mortality but does not restore fully the susceptibility due to resistance [9]. However, the pyrrole insecticide chlorfenapyr induces higher mortality in resistant _An. gambiae_ compared with pyrethroids alone or combined with PBO in Cote d'Ivoire [9].\n", + "\n", + "The present good laboratory practice (GLP) study evaluated the bio-efficacy of a new candidate LLIN, PermaNet(r) Dual, against pyrethroid-resistant _An. gambiae s.l._ in comparison with the WHO Prequalification Unit, Vector Control Product Assessment Team (PQT/VCP) listed standard LLINs, PermaNet(r) 2.0 and PermaNet(r) 3.0, through the conduct of an experimental hut trial and laboratory bioassays in Tiassale, Cote d'Ivoire. PermaNet(r) Dual has a mixture of the pyrrole chlorfenapyr and the pyrethroid deltamethrin coated onto a polyester fabric. PermaNet(r) 3.0 is treated with deltamethrin and PBO, and PermaNet(r) 2.0 is treated with deltamethrin only. Chlorfenapyr is a pro-insecticide activated by the oxygenase function of cytochrome P450s and oxidative removal of the N-ethoxymethyl\n", + "group leads to a toxic form identified as CL 303,268. The toxic form uncouples oxidative phosphorylation in the mitochondria, resulting in disruption of the production of adenosine triphosphate and loss of energy, leading to cell dysfunction and ultimately death of the insect [12]. The WHO has received some resistance monitoring data for chlorfenapyr, but these data are insufficient to assess the potential presence of resistance to this insecticide [1]. Deltamethrin is a neurotoxic insecticide and has excito-repellent effects on mosquitoes. PBO, used on PermaNet(r) 3.0, is a synergist which inhibits mixed function oxidases, blocking the detoxification of pyrethroids and at least partially restoring pyrethroid susceptibility [1, 13]. Pyrethroid-resistant strains of _Anopheles_ have so far been found to be susceptible to chlorfenapyr [9, 14-18]. Thus, the hypothesis of the current study was that chlorfenapyr would kill the pyrethroid-resistant _An. gambiae_ population in Tiassale, and PermaNet(r) Dual would induce higher mortality compared to both PermaNet(r) 3.0 and PermaNet(r) 2.0 in the experimental huts, and the supplementary laboratory cone and tunnel bioassays could predict these hut trial outcomes.\n", + "\n", + "header: Supporting laboratory testing of net samples\n", + "\n", + "Standard WHO cone bioassays and tunnel tests were conducted with unwashed and washed nets under laboratory conditions, to predict their responses in the field experimental huts. The insecticide susceptible Kisumu strains and field-collected F0 generation of pyrethroid-resistant Tiassale strain of _An. gambiae_ were tested with samples (25 cm x 25 cm) cut from each of the eight net \n", + "types (unwashed and washed net samples) before and after their inclusion into the hut trial [23]. For the tunnel tests, tunnels were divided into two sections by netting samples held in a frame. Nine holes of 1 cm in diameter were cut in each net sample (with one hole located at the centre of the square, and the other eight equidistant and located 5 cm from the border), and the surface of netting available to the mosquitoes was 400 cm\\({}^{2}\\) (20 cm \\(\\times\\) 20 cm).\n", + "\n", + "For each type of net and wash status, 100 non-blood-fed, 2-5-day-old females per strain were subjected to 3-min exposure in cone bioassays in replicates of five mosquitoes per cone according to the WHO guidelines [22]. For the tunnel tests, 100 non-blood-fed, 5-8-day-old mosquito females per strain were subjected to a 15-h exposure overnight using guinea pig as host, following the WHO guidelines [23]. Testing and holding conditions were 27 +- 2 degC and 80 +- 10% relative humidity. The 60-min knockdown for cone bioassays, blood-feeding status for tunnel tests and 24, 48 and 72-h mortality for both methods were recorded.\n", + "\n", + "header: Results\n", + "\n", + "The outcomes of the current experimental hut trial showed that the parameters of the net efficacy against the pyrethroid-resistant _An. gambiae s.l._ Tiassale population varied as a function of net type and wash status, with the performance of PermaNet(r) Dual being better overall compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 1 and Table 1).\n", + "\n", + "header: Additional file 3: Table 53.\n", + "\n", + "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (Tissale strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", + "\n", + "header: Chemical analysis\n", + "\n", + "Pieces of netting were sampled from unwashed and washed PermaNet(r) Dual (A and B), PermaNet(r) 3.0 and PermaNet(r) 2.0 LLINs before and after being used in the hut trial, in accordance with the WHO protocol for chemical analysis [25]. All sampled net pieces were labelled and stored individually in aluminium foil at 3.7-4.2 degC. The net pieces were then shipped to the Vestergaard's ISO IEC17025 laboratory in Vietnam for chemical analysis of chlorfenapyr and deltamethrin. Deltamethrin and PBO contents were determined following the Collaborative International Pesticides Analytical Council Ltd (CIPAC) (i.e. ClPAC 33/LN/(M2)/3) methods [26]. Briefly, chlorfenapyr content was analysed using in-house method VCL-098-20 that was undergoing ClIPAC validation and was still to be published. Chlorfenapyr content was extracted from the PermaNet(r) Dual net using a mixture of n-hexane and 1,4-dioxane (95:5, v:v) solvents with an internal standard of dibutylphthalate added. The mixture was shaken by shaking machine to extract chlorfenapyr. Extracted solution was filtered through 0.45 mm Teflon membrane and analysed by a normal phase high performance liquid chromatography for chlorfenapyr concentration, detector UV 236 nm.\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Blood-feeding and personal protection\n", + "\n", + "The blood-feeding effect of the nets in wild pyrethroid-resistant _An. gambiae_ that entered the trial huts and personal protection are presented in Fig. 1A and Table 1. Before washing, the percentage blood-feeding with PernaNet(r) Dual (A) (36.7 +- 4.0%) did not differ significantly from PernaNet(r) Dual (B) (37.5 +- 4.4%) and PernaNet(r) 2.0 (55.7 +- 3.7%), but was significantly higher than PernaNet(r) 2.0 (31.3 +- 4.4%) (z = - 2.17; p = 0.030). The percentage blood-feeding for unwashed PernaNet(r) Dual (B) was similar to unwashed samples of PernaNet(r) 2.0 (z = 1.74; p = 0.081) and PernaNet(r) 3.0 (z = - 1.49; p = 0.136). Washing 20 times did not influence significantly the percentage blood-feeding in PernaNet(r) Dual (B) (z = 0.10; p = 0.921). After washing,\n", + "the percentage blood-feeding of PermaNet(r) Dual (B) (36.0 +- 3.7%) was substantially lower, but without significant differences when compared with PermaNet(r) 3.0 (57.7 +- 3.7%) (z = 1.71; p = 0.087), PermaNet(r) 2.0 (72.3 +- 3.2%) (z = 1.78; p = 0.076) and the untreated control net (z = 1.72; p = 0.085). For blood-feeding inhibition, unwashed PermaNet(r) Dual (A) (42.5 +- 6.8%) was similar to unwashed PermaNet(r) Dual (B) (41.4 +- 6.9%) (z = 0.25; p = 0.802) and washed PermaNet(r) Dual (B) (43.7 +- 4.8%) that was not affected by washing (z = - 0.41; p = 0.682). Compared with PermaNet(r) 3.0, the blood-feeding inhibition of PermaNet(r) Dual (B) was significantly higher before washing (z = - 0.72; p = 0.469), and significantly lower after washing (z = - 1.92; p = 0.045). However, both unwashed and washed PermaNet(r) Dual (B) provided, respectively, significantly higher blood-feeding inhibition than unwashed and washed PermaNet(r) 2.0 (all p < 0.05). The personal protection was similar between unwashed samples of PermaNet(r) Dual (A) (58.8 +- 3.5%) and PermaNet(r) Dual (B) (60.8 +- 3.8%) (z = - 0.04; p = 0.968). Unwashed PermaNet(r) Dual (B) resulted in a personal protection that was similar to unwashed PermaNet(r) 3.0 (62.9 +- 4.2%) (z = 0.21; p = 0.738), and significantly different from unwashed PermaNet(r) 2.0 (28.8 +- 1.9%) (z = 3.21; p = 0.001). With 20 washes, the personal protection with PermaNet(r) Dual (B) declined significantly from 60.8 +- 3.8% to 20.2 +- 1.1% (z = - 2.96; p = 0.003). However, washed PermaNet(r) Dual (B) provided significantly higher personal protection compared with their washed counterparts of PermaNet(r) 3.0 (9.8 +- 0.7%) (z = 2.89; p = 0.004) and PermaNet(r) 2.0 (- 32.6 +- 2.2%) (z = 2.93; p = 0.003).\n", + "\n", + "header: Additional file 2: Table 52.\n", + "\n", + "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (bisumu strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", + "\n", + "header: Conclusion\n", + "\n", + "The present small-scale GLP experimental hut study demonstrated that the deltamethrin- chlorfenapyr PermaNet(r) Dual net has high bio-efficacy, inducing significantly higher mortality and blood-feeding inhibition effects in the wild insecticide-resistant _An. gambiae s.l._ when compared with the deltamethrin-PBO PermaNet(r) 3.0 and deltamethrin-only PermaNet(r) 2.0. The inclusion of chlorfenapyr with pyrethroid in PermaNet(r) Dual net has greatly improved protection and control of free-flying wild pyrethroid-resistant _An. gambiae_ populations. The chlorfenapyr-deltamethrin-coated PermaNet(r) Dual net has great potential to reduce malaria transmission, particularly in areas compromised by high level of pyrethroid resistance in _Anopheles_ mosquitoes. Further validations in large-scale field trials are required to assess the effectiveness, the durability and the acceptability of this new tool for malaria vector control.\n", + "\n", + "header: Results\n", + "\n", + "PermaNet(r) Dual demonstrated significantly improved efficacy, compared to PermaNet(r) 3.0 and PermaNet(r) 2.0, against the pyrethroid-resistant _An. gambiae s.l._ Indeed, the experimental hut trial data showed that the mortality and blood-feeding inhibition in the wild pyrethroid-resistant _An. gambiae s.l._ were overall significantly higher with PermaNet(r) Dual compared with PermaNet(r) 3.0 and PermaNet(r) 2.0, for both unwashed and washed samples. The mortality with unwashed and washed samples were 93.6 +- 0.2% and 83.2 +- 0.9% for PermaNet(r) Dual, 37.5 +- 2.9% and 14.4 +- 3.3% for PermaNet(r) 3.0, and 7.4 +- 5.1% and 11.7 +- 3.4% for PermaNet(r) 2.0, respectively. Moreover, unwashed and washed samples produced the respective percentage blood-feeding inhibition of 41.4 +- 6.9% and 43.7 +- 4.8% with PermaNet(r) Dual, 51.0 +- 5.7% and 9.8 +- 3.6% with PermaNet(r) 3.0, and 12.8 +- 4.3% and - 13.0 +- 3.6% with PermaNet(r) 2.0. Overall, PermaNet(r) Dual also induced higher or similar deterrence, exophily and personal protection when compared with the standard PermaNet(r) 3.0 and PermaNet(r) 2.0 reference nets, with both unwashed and\n", + "washed net samples. In contrast to cone bioassays, tunnel tests predicted the efficacy of PermaNet(r) Dual seen in the current experimental hut trial.\n", + "\n", + "header: Outcomes measures\n", + "\n", + "The following entomological outcomes were used to evaluate the efficacy of each treatment arm in the current experimental hut trial [23]:\n", + "\n", + "1. Deterrence: proportional reduction in the number of mosquitoes caught in treated hut relative to the number caught in the control hut.\n", + "2. Exiting rate: percentage of the mosquitoes collected from the veranda trap out of all mosquitoes collected.\n", + "3. Induced exophily: proportional reduction of mosquitoes found in the exit and veranda traps relative to control hut.\n", + "4. Blood-feeding: percentage of blood-fed mosquitoes relative to the total collected.\n", + "5. Blood-feeding inhibition: proportional reduction in blood feeding percentage in treated huts relative to the control hut.\n", + "6. Mortality: percentage of dead mosquitoes found dead in hut in the morning (immediate mortality) or after being caught alive and dead during holding (delayed mortality) in treatment huts out of mosquitoes collected, and corrected for control mortality.\n", + "7. Personal protection: the proportional reduction in the number of blood-fed mosquitoes in the treated huts relative to the number of blood-fed mosquitoes in the untreated control.\n", + "8. Killing effect: the proportional reduction in the number of mosquitoes killed in the treated huts relative to the number of mosquitoes killed in the untreated control.\n", + "\n", + "The formulas of key entomological outcomes measured in this study are [23]:\n", + "\n", + "\\[\\text{Deterrence}(\\%) = \\frac{\\text{Nc} - \\text{Nt}}{\\text{Nc}} \\times 100 = \\left( 1 - \\frac{\\text{Nt}}{\\text{Nc}} \\right) \\times 100,\\]\n", + "\n", + "where Nt the total number of mosquitoes collected in the treatment hut and veranda/exit traps and Nc the total number of mosquitoes in the control hut and veranda/exit traps.\n", + "\n", + "\\[\\text{Exiting}\\,\\text{rate}(\\%) = \\frac{\\text{n}}{\\text{N}} \\times 100,\\]\n", + "\n", + "where n is the number of mosquitoes from veranda and window traps, while N is the total number of mosquitoes collected in the hut.\n", + "\n", + "\\[\\text{Induced}\\,\\text{exophily}(\\%) = \\frac{\\text{Pt} - \\text{Pc}}{\\text{Pc}} \\times 100\\] \\[= \\left( \\frac{\\text{Pt}}{\\text{Pc}} - 1 \\right) \\times 100,\\]\n", + "\n", + "where Pt is the proportion of mosquitoes from veranda and window traps of treated hut while Pc is the number of mosquitoes from veranda and window traps of untreated control hut.\n", + "\n", + "\\[\\text{Blood} - \\text{feeding}\\,\\text{inhibition}(\\%) = \\frac{\\text{Pc} - \\text{Pt}}{\\text{Pc}} \\times 100,\\]\n", + "\n", + "where Pt the proportion of blood-fed mosquitoes in the treatment hut, and Pc the proportion of blood-fed mosquitoes in the control hut.\n", + "\n", + "\\[\\text{Personal}\\,\\text{protection}(\\%) = \\frac{\\text{Bc} - \\text{Bt}}{\\text{Bc}} \\times 100\\] \\[= \\left( 1 - \\frac{\\text{Bt}}{\\text{Bc}} \\right) \\times 100,\\]\n", + "\n", + "where Bt the number of blood-fed mosquitoes in the treatment hut and Bc the number of blood-fed mosquitoes in the control hut.\n", + "\n", + "\\[\\text{Killing}\\,\\text{effect}(\\%) = \\frac{\\text{Kt} - \\text{Kc}}{\\text{Tc}} \\times 100,\\]\n", + "\n", + "where Kt is the number of mosquitoes killed in the treatment huts, Kc is the number of mosquitoes killed in the control huts, and Tc is the total number of mosquitoes collected from the control.\n", + "\n", + "header: Discussion\n", + "\n", + "The current study evaluated the efficacy of PermaNet(r) Dual, a new candidate net coated with a mixture of chlorfenapyr and deltamethrin, against _An. gambiae_ in a small-scale GLP but study in Tiassale, Cote d'Ivoire, with supporting exploratory laboratory cone and tunnel\n", + "\n", + "Fig. 4: Mean blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the susceptible _Anopheles gambiae_ s.s. Kisumu strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassale, Côte d’Ivoire. Error bars show the standard error of the mean\n", + "bioassays. WHO-prequalified PermaNet(r) 3.0 (co-treated with deltamethrin and PBO) and PermaNet(r) 2.0 (treated with deltamethrin only) were used as the reference nets. In this GLP but study, PermaNet(r) Dual performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0, in terms of mortality and blood-feeding inhibition, for both unwashed and unstressed cases, respectively.\n", + "\n", + "Fig. 5: Mean of blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the pyrethroid-resistant _Anopheles gambiae s1_. Tassale strain exposed to net samples using tunnel tests before and after experimental hut trial in Tassale, Côte d’thovie. Error bars show the standard error of the mean \n", + "and washed samples. Unlike the cone bioassays, the tunnel tests successfully confirmed the field efficacy of the nets. Briefly, this hut trial showed the benefit of mixing deltamethrin and chlorfenapyr together in a long-lasting net, PermaNet(r) Dual, for an effective control of pyrethroid-resistant _Anopheles._\n", + "\n", + "The current experimental hut study demonstrated that PermaNet(r) Dual had increased efficacy against highly pyrethroid-resistant _An. gambiae._ Indeed, hut mortality of _An. gambiae_ Tiassale strain was significantly higher with PermaNet(r) Dual (>83%) in comparison with PermaNet(r) 3.0 (<38%) and PermaNet(r) 2.0 (<12%), for both unwashed and 20 times washed samples (Fig. 1B and Table 1). This PermaNet(r) Dual efficacy was similar to chlorfenapyr and alpha-cypermethrin mixture-coated Intercept G2 in West and East Africa [16, 17, 27, 28, 29, 30, 31, 32]. The good performance of PermaNet(r) Dual might be attributed to the susceptibility of the highly pyrethroid-resistant _An. gambiae_ s.l. to chlorfenapyr [9, 11]. Due to the novel mode of action of chlorfenapyr, the present pyrethroid-resistance mechanisms did not provide any cross-resistance to this insecticide [12]. Indeed, chlorfenapyr-treated tool has been shown to control a number of different multiple-insecticide-resistant _Anopheles_ populations [14, 15, 27, 28, 29, 30, 31, 32].\n", + "\n", + "This hut study showed that the percentage blood-feeding in wild pyrethroid-resistant _An. gambiae_ population was lower for PermaNet(r) Dual (unwashed and washed) compared with PermaNet(r) 2.0 (unwashed and washed) and washed PermaNet(r) 3.0, but slightly higher than\n", + "unwashed PermaNet(r) 3.0 (Fig. 1A and Table 1). Likewise, blood-feeding inhibition with PermaNet(r) Dual was comparable or stronger than with PermaNet(r) 2.0 and washed PermaNet(r) 3.0. This PermaNet(r) Dual blood-feeding inhibition outcome is consistent with that caused by Intercept G2 in earlier hut trials in West Africa [27-31], and may be explained by the irritant effects of the deltamethrin [32-35]. While unwashed PermaNet(r) Dual and PermaNet(r) 3.0 produced similar levels of blood-feeding inhibition, the 20 times washed PermaNet(r) Dual induced a statistically greater blood-feeding inhibition in comparison with both PermaNet(r) 3.0 and PermaNet(r) 2.0 washed 20 times. This suggests that PermaNet(r) Dual may have performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0 over time. PermaNet(r) Dual effectiveness for inhibiting blood-feeding could imply its good potential for reducing the human-biting and blood-feeding, adding value into its killing effects in malaria vectors.\n", + "\n", + "In the present hut study, unwashed PermaNet(r) Dual deterrence effect against the wild pyrethroid-resistant _An. gambiae_ population was comparable to that recorded in PermaNet(r) 2.0 and PermaNet(r) 3.0. The deltamethrin component of PermaNet(r) Dual has a deterrence effect and may have induced exiting in mosquitoes. However, the 20 times washed PermaNet(r) Dual did not have a deterrence effect (Table 1), probably due to a reduction of the chemical contents (Table 2). A dipped chlorfenapyr net did seem to have a deterrence effect, but did not have a significant effect on exiting rates in West Africa [15, 16, 26-31]. The higher deterrence effect may be due to both the chlorfenapyr and deltamethrin components, but higher exiting rate would likely be due only to the deltamethrin component. Thus, PermaNet(r) Dual may have both deterrent and excito-repellency effects, providing personal protection against pyrethroid-resistant _An. gambiae_ mosquitoes, and reducing human-vector contacts, which may, in turn, lead to an increased user acceptance [36].\n", + "\n", + "While standard laboratory cone bioassays failed to predict PermaNet(r) Dual efficacy against pyrethroid-resistant _An. gambiae s.l.,_ tunnel tests successfully predicted its efficacy against the same strain in the semi-field experimental huts. Both cone and tunnel bioassays met the WHO criteria [44], with the susceptible _An. gambiae s.s._ Kisumu strain. However, _An. gambiae s.s._ Kisumu strain mortality against unwashed and used PermaNet(r) Dual (A) was lower (34%) with cone bioassay (Fig. 2B) probably due to the reduction of the chemical bioavailability on netting fibre surface of net samples tested, or the inappropriateness of cone bioassay method for evaluation of the chlorfenapyr-coated PermaNet(r) Dual as the mortality was higher (100%) with tunnel test (Fig. 4B). With the wild pyrethroid-resistant _An. gambiae s.l._ Tiassale strain, only the tunnel tests achieved high efficacy that was consistent with that observed in the huts with PermaNet(r) Dual. The difference in PermaNet(r) Dual efficacy between both _Anopheles_ Kiumu and Tiassale strains may be explained by the difference in the levels of their resistance to insecticides. However, the lower efficacy of PermaNet(r) Dual against pyrethroid-resistant _An. gambiae s.l._ with cone bioassays (daytime and 3-min exposure) compared with tunnel tests (night-time and 15-h exposure) may be attributable to the slow mode of action of chlorfenapyr and that mosquitoes need to be metabolically active for the activation of the chlorfenapyr pro-insecticide [12, 13, 37]. Indeed, chlorfenapyr has a previously been observed to have a slower action and delayed toxic activity of 2-3 days post-exposure compared to other insecticides (pyrethroids and organophosphates) used in mosquito vector control [14, 28, 29]. The cone bioassay method was developed to assess the bioefficacy of pyrethroid-only LLINs, and the use of this method to test LLINs containing non-neurotoxic insecticides, such as chlorfenapyr, may not necessarily be predictive of field impact, even with increased exposure time of mosquitoes inside the cones [16, 27]. In contrast, the tunnel test results with pyrethroid-resistant _An. gambiae s.l._ Tiassale strain (field-collected F0 generation) were more predictive of PermaNet(r) Dual efficacy in huts, as observed for other chlorfenapyr-coated nets, such as Interceptor(r) G2 [16, 27, 28]. Tunnel tests provide an increased exposure time of mosquitoes to the LLIN samples being tested, and being an overnight exposure. As the female mosquitoes in the tunnel tests are also exhibiting host-seeking behaviour and are, therefore, metabolically active, the activation of chlorfenapyr following tarsal pickup by mosquitoes may be more effective. The tunnel test was a better predictor of PermaNet(r) Dual field efficacy because exposure occurred at night when host-seeking mosquitoes are more vulnerable to chlorfenapyr. Tunnel test thus is a more reliable technique to assess the efficacy of a chlorfenapyr-treated net prior to field trials against free-flying mosquitoes [16, 38, 39].\n", + "\n", + "In PermaNet(r) Dual, deltamethrin and chlorfenapyr contents varied slightly, but complied with the dose interval limits of target specification [23]. This revealed a good homogeneity of the active ingredients' distribution over and a good retention of these active ingredients in PermaNet(r) Dual, thus resulting in high and similar mortality and blood-feeding inhibition between unwashed samples of PermaNet(r) Dual (A) and PermaNet(r) Dual (B). The reduction of chemical contents due to the loss of chlorfenapyr and deltamethrin with 20 washes had no apparent effect on PermaNet(r) Dual efficacy as the washed samples were still producing high mortality against the pyrethroid-resistant mosquitoes. Overall,\n", + "PernaNet(r) Dual chemical bioavailability was sufficient and produced high mortality in pyrethroid-resistant _Anopheles_ mosquitoes after 20 standardized washes (corresponding to a 3-year use) and over the hut trial.\n", + "\n", + "The high vector mortality and personal protection effect of the PernaNet(r) Dual found in this study are the desired outcomes of any vector control tool. The high mortality effects and the additive blood-feeding inhibition impacts induced by PernaNet(r) Dual in this hut trial are expected to substantially diminish the malaria vector density and biting rates in the field, and hence the transmission of malaria in the areas where vectors are resistant to insecticides [40-47]. Additionally, PernaNet(r) Dual performed better than the reference PernaNet(r) 3.0 and PernaNet(r) 2.0 nets, when washed 20 times, thus meeting the WHO hut trial criteria [23].\n", + "\n", + "However, these results need to be further validated in a large-scale field trial to assess the durability and acceptability of this new tool for malaria vector control [48-50]. A community trial would be the best way to evaluate the community level effect of this promising candidate net (i.e. PernaNet(r) Dual) against malaria transmission, by monitoring entomological infection rate, _Plasmodium_ prevalence and disease incidence [48-50]. Such a community trial could be a randomized controlled trial as with dual-active-ingredient LLINs (e.g. Interceptor G2) in Tanzania [49], soon in Benin [48, 50], and the pilot deployments that are part of the New Nets Project led by PATH [51]. Furthermore, PernaNet(r) Dual should be tested against wild populations of _Anopheles funestus_[32], or other main or secondary vectors of malaria in Africa [52-56]. Ultimately, in the present study, the series of hut and laboratory tests demonstrated that the chlorfenapyr component of PernaNet(r) Dual could make a major contribution to controlling the pyrethroid-resistant _An. gambiae_ populations. Furthermore, there were no adverse effects reported among hut sleepers and mosquito collectors during the trial in the huts where PernaNet(r) Dual were used, and this may possibly increase the rate of future user acceptability and improve the usage of this net for malaria vector control.\n", + "\n", + "header: Additional file 55.\n", + "\n", + "Up to 72-h mortality in multiple-resistant populations of _Anopheles gambiae s.l._ (Tissale strain) exposed to long-lasting insecticidal nets using tunnel tests before and after the experimental hut trial.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Tunnel test\n", + "\n", + "The tunnel test outcomes confirmed the cone bioassay results for the susceptible _An. gambiae s.s._ Kisumu strain, with strong blood-feeding inhibition and high mortality in all nets being above the WHO tunnel test thresholds (>= 90% blood-feeding inhibition or >= 80% mortality) (Fig. 4). The blood-feeding inhibition was high only in unwashed and used samples of PermaNet(r) Dual (A) (92.4%), PermaNet(r) Dual (B) (91.6%) and PermaNet(r) 3.0 (92.3%) (Fig. 4A). The mortality was very high (100%) in unwashed or washed and unused or used samples of all nets (PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0) (Fig. 4B), thus showing their good efficacy against this pyrethroid-susceptible _An. gambiae_ Kisumu strain. Additional file shows the Kisumu strain mortality with tunnel tests in more detail (see Additional file 4: Table S4). For the pyrethroid-resistant _An. gambiae s.l._, only washed and unused PermaNet(r) Dual (A) induced a strong blood-feeding inhibition (91.3%) being above the WHO tunnel cut-off of 90% (Fig. 5A). However, the mortality with all samples (unwashed or washed and unused) of PermaNet(r) Dual (85.2-94.9%) were higher compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 5B), and consistent with the higher efficacy of PermaNet(r) Dual against the free-flying pyrethroid-resistant _An. gambiae s.l._ Tiassale strain populations observed in the concurrent experimental hut trials. Additional file shows the pyrethroid-resistant Tiassale strain mortality with tunnel tests in more detail (see Additional file 5: Table S5).\n", + "\n", + "header: Comparison of laboratory bioassay results with hut trial results\n", + "\n", + "Comparing the laboratory cone bioassay and tunnel test results with the experimental hut trial results with the same pyrethroid-resistant _An. gambiae s.l._ strain showed that these laboratory bioassays predicted the response in the huts for PermaNet(r) 3.0 and PermaNet(r) 2.0. Indeed, the unwashed and washed PermaNet(r) 3.0 and PermaNet(r) 2.0 induced relatively lower mortality in the pyrethroid-resistant _An. gambiae_ strain with the cone bioassays, the tunnel test and the hut trial. Focussing on the bioefficacy of PermaNet(r) Dual, the respective mortality rates in the cone, tunnel and hut were 14.0%, 84.5% and 94.9% for unwashed PermaNet(r) Dual (A), 24.0%, 86.5% and 90.2% for unwashed PermaNet(r) Dual (B), and 10.0%, 87.5% and 90.4% for washed PermaNet(r) Dual (B). This suggests that laboratory tunnel tests are more predictive of the performance of PermaNet(r) Dual in experimental huts. Additionally, there were correlations in the blood-feeding rates and blood-feeding inhibition between the tunnel test results and the hut trial results. The high mortality and strong blood-feeding inhibition of PermaNet(r) Dual in tunnel tests with the pyrethroid-resistant _An. gambiae_ Tiassale strain shows that the chlorfenapyr component of PermaNet(r) Dual provided good efficacy against pyrethroid-resistant _Anopheles_.\n", + "\n", + "header: Chemical analysis\n", + "\n", + "Pieces of netting were sampled from unwashed and washed PermaNet(r) Dual (A and B), PermaNet(r) 3.0 and PermaNet(r) 2.0 LLINs before and after being used in the hut trial, in accordance with the WHO protocol for chemical analysis [25]. All sampled net pieces were labelled and stored individually in aluminium foil at 3.7-4.2 degC. The net pieces were then shipped to the Vestergaard's ISO IEC17025 laboratory in Vietnam for chemical analysis of chlorfenapyr and deltamethrin. Deltamethrin and PBO contents were determined following the Collaborative International Pesticides Analytical Council Ltd (CIPAC) (i.e. ClPAC 33/LN/(M2)/3) methods [26]. Briefly, chlorfenapyr content was analysed using in-house method VCL-098-20 that was undergoing ClIPAC validation and was still to be published. Chlorfenapyr content was extracted from the PermaNet(r) Dual net using a mixture of n-hexane and 1,4-dioxane (95:5, v:v) solvents with an internal standard of dibutylphthalate added. The mixture was shaken by shaking machine to extract chlorfenapyr. Extracted solution was filtered through 0.45 mm Teflon membrane and analysed by a normal phase high performance liquid chromatography for chlorfenapyr concentration, detector UV 236 nm.\n", + "\n", + "header: Supplementary Information\n", + "\n", + "The online version contains supplementary material available at [https://doi.org/10.11016/s12936-023-04455-z](https://doi.org/10.11016/s12936-023-04455-z).\n", + "\n", + "header: Background: Methods\n", + "\n", + "PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0, unwashed and washed (20 washes), were tested against free-flying pyrethroid-resistant _An. gambiae s.l._ in the experimental huts in Tiassale, Cote d'lvoire from March to August 2020. Complementary laboratory cone bioassays (daytime and 3-min exposure) and tunnel tests (nightly and 15-h exposure) were performed against pyrethroid-susceptible _An. gambiae_ sensu stricto (_S.S._) (Kisumu strain) and pyrethroid-resistant _An. gambiae s.l._ (Tiassale strain).\n", + "\n", + "header: Small-scale field evaluation of PermaNet(r): Abstract\n", + "\n", + "Dual (a long-lasting net coated with a mixture of chlorfenapyr and deltamethrin) against pyrethroid-resistant _Anopheles gambiae_ mosquitoes from Tiassale, Cote d'lvoire\n", + "\n", + "Julien Z. B. Zahouli\n", + "\n", + "Julien Z. B. Zahouli\n", + "\n", + "Julien.zahouli@crsrs.ci\n", + "\n", + "Constant A. V. Edi\n", + "\n", + "1Laurence A. Yao\n", + "\n", + "1Emmanuelle G. Lisro\n", + "\n", + "1Marc Adou\n", + "\n", + "1Inza Kone\n", + "\n", + "1Graham Small\n", + "\n", + "2Leanore D. Sternberg\n", + "\n", + "28Benjamin G. Koudou\n", + "\n", + "\n", + "\n", + "Due to the rapid expansion of pyrethroid-resistance in malaria vectors in Africa, Global Plan for insecticide Resistance Management (GIPRM) has recommended the development of long-lasting insecticidal nets (LLINs), containing insecticide mixtures of active ingredients with different modes of action to mitigate resistance and improve LLIN efficacy. This good laboratory practice (GLP) study evaluated the efficacy of the chlorfenapyr and deltamethrin-coated PermaNet(r) Dual, in comparison with the deltamethrin and synergismt piperonyl butoxide (PBO)-treated PermaNet(r) 3.0 and the deltamethrin-coated PermaNet(r) 2.0, against wild free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato (_S.I._), in experimental huts in Tiassale, Cote d'lvoire (West Africa).\n", + "\n", + "header: Outcomes measures\n", + "\n", + "The following entomological outcomes were used to evaluate the efficacy of each treatment arm in the current experimental hut trial [23]:\n", + "\n", + "1. Deterrence: proportional reduction in the number of mosquitoes caught in treated hut relative to the number caught in the control hut.\n", + "2. Exiting rate: percentage of the mosquitoes collected from the veranda trap out of all mosquitoes collected.\n", + "3. Induced exophily: proportional reduction of mosquitoes found in the exit and veranda traps relative to control hut.\n", + "4. Blood-feeding: percentage of blood-fed mosquitoes relative to the total collected.\n", + "5. Blood-feeding inhibition: proportional reduction in blood feeding percentage in treated huts relative to the control hut.\n", + "6. Mortality: percentage of dead mosquitoes found dead in hut in the morning (immediate mortality) or after being caught alive and dead during holding (delayed mortality) in treatment huts out of mosquitoes collected, and corrected for control mortality.\n", + "7. Personal protection: the proportional reduction in the number of blood-fed mosquitoes in the treated huts relative to the number of blood-fed mosquitoes in the untreated control.\n", + "8. Killing effect: the proportional reduction in the number of mosquitoes killed in the treated huts relative to the number of mosquitoes killed in the untreated control.\n", + "\n", + "The formulas of key entomological outcomes measured in this study are [23]:\n", + "\n", + "\\[\\text{Deterrence}(\\%) = \\frac{\\text{Nc} - \\text{Nt}}{\\text{Nc}} \\times 100 = \\left( 1 - \\frac{\\text{Nt}}{\\text{Nc}} \\right) \\times 100,\\]\n", + "\n", + "where Nt the total number of mosquitoes collected in the treatment hut and veranda/exit traps and Nc the total number of mosquitoes in the control hut and veranda/exit traps.\n", + "\n", + "\\[\\text{Exiting}\\,\\text{rate}(\\%) = \\frac{\\text{n}}{\\text{N}} \\times 100,\\]\n", + "\n", + "where n is the number of mosquitoes from veranda and window traps, while N is the total number of mosquitoes collected in the hut.\n", + "\n", + "\\[\\text{Induced}\\,\\text{exophily}(\\%) = \\frac{\\text{Pt} - \\text{Pc}}{\\text{Pc}} \\times 100\\] \\[= \\left( \\frac{\\text{Pt}}{\\text{Pc}} - 1 \\right) \\times 100,\\]\n", + "\n", + "where Pt is the proportion of mosquitoes from veranda and window traps of treated hut while Pc is the number of mosquitoes from veranda and window traps of untreated control hut.\n", + "\n", + "\\[\\text{Blood} - \\text{feeding}\\,\\text{inhibition}(\\%) = \\frac{\\text{Pc} - \\text{Pt}}{\\text{Pc}} \\times 100,\\]\n", + "\n", + "where Pt the proportion of blood-fed mosquitoes in the treatment hut, and Pc the proportion of blood-fed mosquitoes in the control hut.\n", + "\n", + "\\[\\text{Personal}\\,\\text{protection}(\\%) = \\frac{\\text{Bc} - \\text{Bt}}{\\text{Bc}} \\times 100\\] \\[= \\left( 1 - \\frac{\\text{Bt}}{\\text{Bc}} \\right) \\times 100,\\]\n", + "\n", + "where Bt the number of blood-fed mosquitoes in the treatment hut and Bc the number of blood-fed mosquitoes in the control hut.\n", + "\n", + "\\[\\text{Killing}\\,\\text{effect}(\\%) = \\frac{\\text{Kt} - \\text{Kc}}{\\text{Tc}} \\times 100,\\]\n", + "\n", + "where Kt is the number of mosquitoes killed in the treatment huts, Kc is the number of mosquitoes killed in the control huts, and Tc is the total number of mosquitoes collected from the control.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "All relevant data are within the manuscript.\n", + "\n", + "header: Conclusion\n", + "\n", + "The deltamethrin-chlorfenapyr-coated PermaNet(r) Dual induced a high efficacy and performed better than the deltamethrin-PBO PermaNet(r) 3.0 and the deltamethrin-only PermaNet(r) 2.0, testing both unwashed and 20 times washed samples against the pyrethroid-susceptible and resistant strains of _An. gambiae s.l._ The inclusion of chlorfenapyr with deltamethrin in PermaNet(r) Dual net greatly improved protection and control of pyrethroid-resistant _An. gambiae_ populations. PermaNet(r) Dual thus represents a promising tool, with a high potential to reduce malaria transmission and provide community protection in areas compromised by mosquito vector resistance to pyrethroids.\n", + "\n", + "header: Background\n", + "\n", + "According to the latest World Malaria Report 2022 of the World Health Organization (WHO), there were 247 million malaria cases and 619,000 malaria deaths in 84 malaria endemic countries worldwide in 2021 [1, 2]. This represents about 13.4 million more cases in 2021 compared to 2019 attributable to disruptions to essential malaria services during the COVID-18 pandemic [1]. The WHO African Region, with an estimated 234 million cases in 2021, accounted for about 95% of global cases malaria [1]. The recent decline of malaria burden from 2000 to 2019 was largely due to the massive distribution and use of long-lasting insecticidal nets (LLINs) (2.5 billion LLINs were delivered from 2004 to 2021) for _Anopheles_ mosquito vector control [1]. The malaria burden reduction is now slowing down and is threatened by the spread of resistance to pyrethroids (78 of 88 endemic countries have detected resistance to at least one insecticide class reported to the WHO from 2010 to 2020) [1]. The WHO Global Plan for Insecticide Resistance Management (GPIRM) has recommended the development of LLINs with insecticide mixtures of active ingredients with different modes of action to mitigate resistance [3]. The WHO Global Technical Strategy (GTS) aims for a reduction of malaria case incidence and mortality rate of at least 40% by 2020, 75% by 2025 and 90% by 2030 from the 2015 baseline [1, 4]. To meet these targets, GTS has called for the development of new tools, with combined or more effective insecticide molecules to control insecticide-resistant _Anopheles_ vectors [4]. These new vector control tools must incorporate new insecticide molecules and/or insecticide mixtures containing at least two active ingredients with different modes of action for the management of malaria vector resistance to insecticides [1, 3].\n", + "\n", + "Malaria is endemic throughout Cote d'Ivoire and represents the leading cause of mortality and morbidity in the country. Several studies have shown a wide spread resistance in local _Anopheles_ to most of the insecticide classes currently used in malaria vector control (e.g. pyrethroids, DDT and carbamates) [5-8]. The existence of multiple mechanisms of resistance in the main vector, _Anopheles gambiae_ sensu lato (_s.l._) threatens the efficacy of vector control tools currently used in Cote d'Ivoire, including LLINs [9-11]. Meiwald et al. [11] found that pyrethroid resistance is associated with significant overexpression of _CYP6P4, CYP6P3,_ and _CYP6Z1_ in _Anopheles coluzzii_ in Cote d'Ivoire. High allelic frequencies of knock-down resistance (_kdr_) _L1014F_ mutation (range: 0.46-1), relatively low frequencies of the _ace-1R_ mutation in the acetylcholinesterase gene associated with target-site insensitivity to carbamates and organophosphates (<0.5), and elevated activity of insecticide detoxifying enzymes (mainly mixed function oxidases (MFOs), esterase and glutathione S-transferase (GST)), have been reported in Cote d'Ivoire [5, 7, 10]. Recent laboratory (WHO tube and CDC bottle) bioassays against local pyrethroid-resistant _An. gambiae_ from Cote d'Ivoire have shown that pyrethroids induce low mortality, whilst pre-exposure to the synergist piperonyl butoxide (PBO) increases the mortality but does not restore fully the susceptibility due to resistance [9]. However, the pyrrole insecticide chlorfenapyr induces higher mortality in resistant _An. gambiae_ compared with pyrethroids alone or combined with PBO in Cote d'Ivoire [9].\n", + "\n", + "The present good laboratory practice (GLP) study evaluated the bio-efficacy of a new candidate LLIN, PermaNet(r) Dual, against pyrethroid-resistant _An. gambiae s.l._ in comparison with the WHO Prequalification Unit, Vector Control Product Assessment Team (PQT/VCP) listed standard LLINs, PermaNet(r) 2.0 and PermaNet(r) 3.0, through the conduct of an experimental hut trial and laboratory bioassays in Tiassale, Cote d'Ivoire. PermaNet(r) Dual has a mixture of the pyrrole chlorfenapyr and the pyrethroid deltamethrin coated onto a polyester fabric. PermaNet(r) 3.0 is treated with deltamethrin and PBO, and PermaNet(r) 2.0 is treated with deltamethrin only. Chlorfenapyr is a pro-insecticide activated by the oxygenase function of cytochrome P450s and oxidative removal of the N-ethoxymethyl\n", + "group leads to a toxic form identified as CL 303,268. The toxic form uncouples oxidative phosphorylation in the mitochondria, resulting in disruption of the production of adenosine triphosphate and loss of energy, leading to cell dysfunction and ultimately death of the insect [12]. The WHO has received some resistance monitoring data for chlorfenapyr, but these data are insufficient to assess the potential presence of resistance to this insecticide [1]. Deltamethrin is a neurotoxic insecticide and has excito-repellent effects on mosquitoes. PBO, used on PermaNet(r) 3.0, is a synergist which inhibits mixed function oxidases, blocking the detoxification of pyrethroids and at least partially restoring pyrethroid susceptibility [1, 13]. Pyrethroid-resistant strains of _Anopheles_ have so far been found to be susceptible to chlorfenapyr [9, 14-18]. Thus, the hypothesis of the current study was that chlorfenapyr would kill the pyrethroid-resistant _An. gambiae_ population in Tiassale, and PermaNet(r) Dual would induce higher mortality compared to both PermaNet(r) 3.0 and PermaNet(r) 2.0 in the experimental huts, and the supplementary laboratory cone and tunnel bioassays could predict these hut trial outcomes.\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Supporting laboratory testing of net samples\n", + "\n", + "Standard WHO cone bioassays and tunnel tests were conducted with unwashed and washed nets under laboratory conditions, to predict their responses in the field experimental huts. The insecticide susceptible Kisumu strains and field-collected F0 generation of pyrethroid-resistant Tiassale strain of _An. gambiae_ were tested with samples (25 cm x 25 cm) cut from each of the eight net \n", + "types (unwashed and washed net samples) before and after their inclusion into the hut trial [23]. For the tunnel tests, tunnels were divided into two sections by netting samples held in a frame. Nine holes of 1 cm in diameter were cut in each net sample (with one hole located at the centre of the square, and the other eight equidistant and located 5 cm from the border), and the surface of netting available to the mosquitoes was 400 cm\\({}^{2}\\) (20 cm \\(\\times\\) 20 cm).\n", + "\n", + "For each type of net and wash status, 100 non-blood-fed, 2-5-day-old females per strain were subjected to 3-min exposure in cone bioassays in replicates of five mosquitoes per cone according to the WHO guidelines [22]. For the tunnel tests, 100 non-blood-fed, 5-8-day-old mosquito females per strain were subjected to a 15-h exposure overnight using guinea pig as host, following the WHO guidelines [23]. Testing and holding conditions were 27 +- 2 degC and 80 +- 10% relative humidity. The 60-min knockdown for cone bioassays, blood-feeding status for tunnel tests and 24, 48 and 72-h mortality for both methods were recorded.\n", + "\n", + "header: Blood-feeding and personal protection\n", + "\n", + "The blood-feeding effect of the nets in wild pyrethroid-resistant _An. gambiae_ that entered the trial huts and personal protection are presented in Fig. 1A and Table 1. Before washing, the percentage blood-feeding with PernaNet(r) Dual (A) (36.7 +- 4.0%) did not differ significantly from PernaNet(r) Dual (B) (37.5 +- 4.4%) and PernaNet(r) 2.0 (55.7 +- 3.7%), but was significantly higher than PernaNet(r) 2.0 (31.3 +- 4.4%) (z = - 2.17; p = 0.030). The percentage blood-feeding for unwashed PernaNet(r) Dual (B) was similar to unwashed samples of PernaNet(r) 2.0 (z = 1.74; p = 0.081) and PernaNet(r) 3.0 (z = - 1.49; p = 0.136). Washing 20 times did not influence significantly the percentage blood-feeding in PernaNet(r) Dual (B) (z = 0.10; p = 0.921). After washing,\n", + "the percentage blood-feeding of PermaNet(r) Dual (B) (36.0 +- 3.7%) was substantially lower, but without significant differences when compared with PermaNet(r) 3.0 (57.7 +- 3.7%) (z = 1.71; p = 0.087), PermaNet(r) 2.0 (72.3 +- 3.2%) (z = 1.78; p = 0.076) and the untreated control net (z = 1.72; p = 0.085). For blood-feeding inhibition, unwashed PermaNet(r) Dual (A) (42.5 +- 6.8%) was similar to unwashed PermaNet(r) Dual (B) (41.4 +- 6.9%) (z = 0.25; p = 0.802) and washed PermaNet(r) Dual (B) (43.7 +- 4.8%) that was not affected by washing (z = - 0.41; p = 0.682). Compared with PermaNet(r) 3.0, the blood-feeding inhibition of PermaNet(r) Dual (B) was significantly higher before washing (z = - 0.72; p = 0.469), and significantly lower after washing (z = - 1.92; p = 0.045). However, both unwashed and washed PermaNet(r) Dual (B) provided, respectively, significantly higher blood-feeding inhibition than unwashed and washed PermaNet(r) 2.0 (all p < 0.05). The personal protection was similar between unwashed samples of PermaNet(r) Dual (A) (58.8 +- 3.5%) and PermaNet(r) Dual (B) (60.8 +- 3.8%) (z = - 0.04; p = 0.968). Unwashed PermaNet(r) Dual (B) resulted in a personal protection that was similar to unwashed PermaNet(r) 3.0 (62.9 +- 4.2%) (z = 0.21; p = 0.738), and significantly different from unwashed PermaNet(r) 2.0 (28.8 +- 1.9%) (z = 3.21; p = 0.001). With 20 washes, the personal protection with PermaNet(r) Dual (B) declined significantly from 60.8 +- 3.8% to 20.2 +- 1.1% (z = - 2.96; p = 0.003). However, washed PermaNet(r) Dual (B) provided significantly higher personal protection compared with their washed counterparts of PermaNet(r) 3.0 (9.8 +- 0.7%) (z = 2.89; p = 0.004) and PermaNet(r) 2.0 (- 32.6 +- 2.2%) (z = 2.93; p = 0.003).\n", + "\n", + "header: Results\n", + "\n", + "The outcomes of the current experimental hut trial showed that the parameters of the net efficacy against the pyrethroid-resistant _An. gambiae s.l._ Tiassale population varied as a function of net type and wash status, with the performance of PermaNet(r) Dual being better overall compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 1 and Table 1).\n", + "\n", + "header: Funding\n", + "\n", + "This study was funded by a Grant from Vestergaard Sarl, Lausanne, Switzerland.\n", + "\n", + "header: Additional file 3: Table 53.\n", + "\n", + "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (Tissale strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", + "\n", + "header: Additional file 2: Table 52.\n", + "\n", + "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (bisumu strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", + "\n", + "header: Results\n", + "\n", + "PermaNet(r) Dual demonstrated significantly improved efficacy, compared to PermaNet(r) 3.0 and PermaNet(r) 2.0, against the pyrethroid-resistant _An. gambiae s.l._ Indeed, the experimental hut trial data showed that the mortality and blood-feeding inhibition in the wild pyrethroid-resistant _An. gambiae s.l._ were overall significantly higher with PermaNet(r) Dual compared with PermaNet(r) 3.0 and PermaNet(r) 2.0, for both unwashed and washed samples. The mortality with unwashed and washed samples were 93.6 +- 0.2% and 83.2 +- 0.9% for PermaNet(r) Dual, 37.5 +- 2.9% and 14.4 +- 3.3% for PermaNet(r) 3.0, and 7.4 +- 5.1% and 11.7 +- 3.4% for PermaNet(r) 2.0, respectively. Moreover, unwashed and washed samples produced the respective percentage blood-feeding inhibition of 41.4 +- 6.9% and 43.7 +- 4.8% with PermaNet(r) Dual, 51.0 +- 5.7% and 9.8 +- 3.6% with PermaNet(r) 3.0, and 12.8 +- 4.3% and - 13.0 +- 3.6% with PermaNet(r) 2.0. Overall, PermaNet(r) Dual also induced higher or similar deterrence, exophily and personal protection when compared with the standard PermaNet(r) 3.0 and PermaNet(r) 2.0 reference nets, with both unwashed and\n", + "washed net samples. In contrast to cone bioassays, tunnel tests predicted the efficacy of PermaNet(r) Dual seen in the current experimental hut trial.\n", + "\n", + "header: Conclusion\n", + "\n", + "The present small-scale GLP experimental hut study demonstrated that the deltamethrin- chlorfenapyr PermaNet(r) Dual net has high bio-efficacy, inducing significantly higher mortality and blood-feeding inhibition effects in the wild insecticide-resistant _An. gambiae s.l._ when compared with the deltamethrin-PBO PermaNet(r) 3.0 and deltamethrin-only PermaNet(r) 2.0. The inclusion of chlorfenapyr with pyrethroid in PermaNet(r) Dual net has greatly improved protection and control of free-flying wild pyrethroid-resistant _An. gambiae_ populations. The chlorfenapyr-deltamethrin-coated PermaNet(r) Dual net has great potential to reduce malaria transmission, particularly in areas compromised by high level of pyrethroid resistance in _Anopheles_ mosquitoes. Further validations in large-scale field trials are required to assess the effectiveness, the durability and the acceptability of this new tool for malaria vector control.\n", + "\n", + "header: Discussion\n", + "\n", + "The current study evaluated the efficacy of PermaNet(r) Dual, a new candidate net coated with a mixture of chlorfenapyr and deltamethrin, against _An. gambiae_ in a small-scale GLP but study in Tiassale, Cote d'Ivoire, with supporting exploratory laboratory cone and tunnel\n", + "\n", + "Fig. 4: Mean blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the susceptible _Anopheles gambiae_ s.s. Kisumu strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassale, Côte d’Ivoire. Error bars show the standard error of the mean\n", + "bioassays. WHO-prequalified PermaNet(r) 3.0 (co-treated with deltamethrin and PBO) and PermaNet(r) 2.0 (treated with deltamethrin only) were used as the reference nets. In this GLP but study, PermaNet(r) Dual performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0, in terms of mortality and blood-feeding inhibition, for both unwashed and unstressed cases, respectively.\n", + "\n", + "Fig. 5: Mean of blood-feeding inhibition (**A**) and corrected mortality (**B**) rates in the pyrethroid-resistant _Anopheles gambiae s1_. Tassale strain exposed to net samples using tunnel tests before and after experimental hut trial in Tassale, Côte d’thovie. Error bars show the standard error of the mean \n", + "and washed samples. Unlike the cone bioassays, the tunnel tests successfully confirmed the field efficacy of the nets. Briefly, this hut trial showed the benefit of mixing deltamethrin and chlorfenapyr together in a long-lasting net, PermaNet(r) Dual, for an effective control of pyrethroid-resistant _Anopheles._\n", + "\n", + "The current experimental hut study demonstrated that PermaNet(r) Dual had increased efficacy against highly pyrethroid-resistant _An. gambiae._ Indeed, hut mortality of _An. gambiae_ Tiassale strain was significantly higher with PermaNet(r) Dual (>83%) in comparison with PermaNet(r) 3.0 (<38%) and PermaNet(r) 2.0 (<12%), for both unwashed and 20 times washed samples (Fig. 1B and Table 1). This PermaNet(r) Dual efficacy was similar to chlorfenapyr and alpha-cypermethrin mixture-coated Intercept G2 in West and East Africa [16, 17, 27, 28, 29, 30, 31, 32]. The good performance of PermaNet(r) Dual might be attributed to the susceptibility of the highly pyrethroid-resistant _An. gambiae_ s.l. to chlorfenapyr [9, 11]. Due to the novel mode of action of chlorfenapyr, the present pyrethroid-resistance mechanisms did not provide any cross-resistance to this insecticide [12]. Indeed, chlorfenapyr-treated tool has been shown to control a number of different multiple-insecticide-resistant _Anopheles_ populations [14, 15, 27, 28, 29, 30, 31, 32].\n", + "\n", + "This hut study showed that the percentage blood-feeding in wild pyrethroid-resistant _An. gambiae_ population was lower for PermaNet(r) Dual (unwashed and washed) compared with PermaNet(r) 2.0 (unwashed and washed) and washed PermaNet(r) 3.0, but slightly higher than\n", + "unwashed PermaNet(r) 3.0 (Fig. 1A and Table 1). Likewise, blood-feeding inhibition with PermaNet(r) Dual was comparable or stronger than with PermaNet(r) 2.0 and washed PermaNet(r) 3.0. This PermaNet(r) Dual blood-feeding inhibition outcome is consistent with that caused by Intercept G2 in earlier hut trials in West Africa [27-31], and may be explained by the irritant effects of the deltamethrin [32-35]. While unwashed PermaNet(r) Dual and PermaNet(r) 3.0 produced similar levels of blood-feeding inhibition, the 20 times washed PermaNet(r) Dual induced a statistically greater blood-feeding inhibition in comparison with both PermaNet(r) 3.0 and PermaNet(r) 2.0 washed 20 times. This suggests that PermaNet(r) Dual may have performed better than PermaNet(r) 3.0 and PermaNet(r) 2.0 over time. PermaNet(r) Dual effectiveness for inhibiting blood-feeding could imply its good potential for reducing the human-biting and blood-feeding, adding value into its killing effects in malaria vectors.\n", + "\n", + "In the present hut study, unwashed PermaNet(r) Dual deterrence effect against the wild pyrethroid-resistant _An. gambiae_ population was comparable to that recorded in PermaNet(r) 2.0 and PermaNet(r) 3.0. The deltamethrin component of PermaNet(r) Dual has a deterrence effect and may have induced exiting in mosquitoes. However, the 20 times washed PermaNet(r) Dual did not have a deterrence effect (Table 1), probably due to a reduction of the chemical contents (Table 2). A dipped chlorfenapyr net did seem to have a deterrence effect, but did not have a significant effect on exiting rates in West Africa [15, 16, 26-31]. The higher deterrence effect may be due to both the chlorfenapyr and deltamethrin components, but higher exiting rate would likely be due only to the deltamethrin component. Thus, PermaNet(r) Dual may have both deterrent and excito-repellency effects, providing personal protection against pyrethroid-resistant _An. gambiae_ mosquitoes, and reducing human-vector contacts, which may, in turn, lead to an increased user acceptance [36].\n", + "\n", + "While standard laboratory cone bioassays failed to predict PermaNet(r) Dual efficacy against pyrethroid-resistant _An. gambiae s.l.,_ tunnel tests successfully predicted its efficacy against the same strain in the semi-field experimental huts. Both cone and tunnel bioassays met the WHO criteria [44], with the susceptible _An. gambiae s.s._ Kisumu strain. However, _An. gambiae s.s._ Kisumu strain mortality against unwashed and used PermaNet(r) Dual (A) was lower (34%) with cone bioassay (Fig. 2B) probably due to the reduction of the chemical bioavailability on netting fibre surface of net samples tested, or the inappropriateness of cone bioassay method for evaluation of the chlorfenapyr-coated PermaNet(r) Dual as the mortality was higher (100%) with tunnel test (Fig. 4B). With the wild pyrethroid-resistant _An. gambiae s.l._ Tiassale strain, only the tunnel tests achieved high efficacy that was consistent with that observed in the huts with PermaNet(r) Dual. The difference in PermaNet(r) Dual efficacy between both _Anopheles_ Kiumu and Tiassale strains may be explained by the difference in the levels of their resistance to insecticides. However, the lower efficacy of PermaNet(r) Dual against pyrethroid-resistant _An. gambiae s.l._ with cone bioassays (daytime and 3-min exposure) compared with tunnel tests (night-time and 15-h exposure) may be attributable to the slow mode of action of chlorfenapyr and that mosquitoes need to be metabolically active for the activation of the chlorfenapyr pro-insecticide [12, 13, 37]. Indeed, chlorfenapyr has a previously been observed to have a slower action and delayed toxic activity of 2-3 days post-exposure compared to other insecticides (pyrethroids and organophosphates) used in mosquito vector control [14, 28, 29]. The cone bioassay method was developed to assess the bioefficacy of pyrethroid-only LLINs, and the use of this method to test LLINs containing non-neurotoxic insecticides, such as chlorfenapyr, may not necessarily be predictive of field impact, even with increased exposure time of mosquitoes inside the cones [16, 27]. In contrast, the tunnel test results with pyrethroid-resistant _An. gambiae s.l._ Tiassale strain (field-collected F0 generation) were more predictive of PermaNet(r) Dual efficacy in huts, as observed for other chlorfenapyr-coated nets, such as Interceptor(r) G2 [16, 27, 28]. Tunnel tests provide an increased exposure time of mosquitoes to the LLIN samples being tested, and being an overnight exposure. As the female mosquitoes in the tunnel tests are also exhibiting host-seeking behaviour and are, therefore, metabolically active, the activation of chlorfenapyr following tarsal pickup by mosquitoes may be more effective. The tunnel test was a better predictor of PermaNet(r) Dual field efficacy because exposure occurred at night when host-seeking mosquitoes are more vulnerable to chlorfenapyr. Tunnel test thus is a more reliable technique to assess the efficacy of a chlorfenapyr-treated net prior to field trials against free-flying mosquitoes [16, 38, 39].\n", + "\n", + "In PermaNet(r) Dual, deltamethrin and chlorfenapyr contents varied slightly, but complied with the dose interval limits of target specification [23]. This revealed a good homogeneity of the active ingredients' distribution over and a good retention of these active ingredients in PermaNet(r) Dual, thus resulting in high and similar mortality and blood-feeding inhibition between unwashed samples of PermaNet(r) Dual (A) and PermaNet(r) Dual (B). The reduction of chemical contents due to the loss of chlorfenapyr and deltamethrin with 20 washes had no apparent effect on PermaNet(r) Dual efficacy as the washed samples were still producing high mortality against the pyrethroid-resistant mosquitoes. Overall,\n", + "PernaNet(r) Dual chemical bioavailability was sufficient and produced high mortality in pyrethroid-resistant _Anopheles_ mosquitoes after 20 standardized washes (corresponding to a 3-year use) and over the hut trial.\n", + "\n", + "The high vector mortality and personal protection effect of the PernaNet(r) Dual found in this study are the desired outcomes of any vector control tool. The high mortality effects and the additive blood-feeding inhibition impacts induced by PernaNet(r) Dual in this hut trial are expected to substantially diminish the malaria vector density and biting rates in the field, and hence the transmission of malaria in the areas where vectors are resistant to insecticides [40-47]. Additionally, PernaNet(r) Dual performed better than the reference PernaNet(r) 3.0 and PernaNet(r) 2.0 nets, when washed 20 times, thus meeting the WHO hut trial criteria [23].\n", + "\n", + "However, these results need to be further validated in a large-scale field trial to assess the durability and acceptability of this new tool for malaria vector control [48-50]. A community trial would be the best way to evaluate the community level effect of this promising candidate net (i.e. PernaNet(r) Dual) against malaria transmission, by monitoring entomological infection rate, _Plasmodium_ prevalence and disease incidence [48-50]. Such a community trial could be a randomized controlled trial as with dual-active-ingredient LLINs (e.g. Interceptor G2) in Tanzania [49], soon in Benin [48, 50], and the pilot deployments that are part of the New Nets Project led by PATH [51]. Furthermore, PernaNet(r) Dual should be tested against wild populations of _Anopheles funestus_[32], or other main or secondary vectors of malaria in Africa [52-56]. Ultimately, in the present study, the series of hut and laboratory tests demonstrated that the chlorfenapyr component of PernaNet(r) Dual could make a major contribution to controlling the pyrethroid-resistant _An. gambiae_ populations. Furthermore, there were no adverse effects reported among hut sleepers and mosquito collectors during the trial in the huts where PernaNet(r) Dual were used, and this may possibly increase the rate of future user acceptability and improve the usage of this net for malaria vector control.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"tunnel test\",\"Country\":\"Cote d'Ivoire\",\"Site\":\"Tiassale\",\"Start_month\":3,\"Start_year\":2020,\"End_month\":8,\"End_year\":2020}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"PermaNet(r) Dual\",\"Insecticide\":\"chlorfenapyr, deltamethrin\",\"Net_washed\":0.0},\"N02\":{\"Net_type\":\"PermaNet(r) Dual\",\"Insecticide\":\"chlorfenapyr, deltamethrin\",\"Net_washed\":20.0},\"N03\":{\"Net_type\":\"PermaNet(r) 3.0\",\"Insecticide\":\"deltamethrin, PBO\",\"Net_washed\":0.0},\"N04\":{\"Net_type\":\"PermaNet(r) 3.0\",\"Insecticide\":\"deltamethrin, PBO\",\"Net_washed\":20.0},\"N05\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_washed\":0.0},\"N06\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_washed\":20.0}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Tunnel test\n", + "\n", + "The tunnel test outcomes confirmed the cone bioassay results for the susceptible _An. gambiae s.s._ Kisumu strain, with strong blood-feeding inhibition and high mortality in all nets being above the WHO tunnel test thresholds (>= 90% blood-feeding inhibition or >= 80% mortality) (Fig. 4). The blood-feeding inhibition was high only in unwashed and used samples of PermaNet(r) Dual (A) (92.4%), PermaNet(r) Dual (B) (91.6%) and PermaNet(r) 3.0 (92.3%) (Fig. 4A). The mortality was very high (100%) in unwashed or washed and unused or used samples of all nets (PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0) (Fig. 4B), thus showing their good efficacy against this pyrethroid-susceptible _An. gambiae_ Kisumu strain. Additional file shows the Kisumu strain mortality with tunnel tests in more detail (see Additional file 4: Table S4). For the pyrethroid-resistant _An. gambiae s.l._, only washed and unused PermaNet(r) Dual (A) induced a strong blood-feeding inhibition (91.3%) being above the WHO tunnel cut-off of 90% (Fig. 5A). However, the mortality with all samples (unwashed or washed and unused) of PermaNet(r) Dual (85.2-94.9%) were higher compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 5B), and consistent with the higher efficacy of PermaNet(r) Dual against the free-flying pyrethroid-resistant _An. gambiae s.l._ Tiassale strain populations observed in the concurrent experimental hut trials. Additional file shows the pyrethroid-resistant Tiassale strain mortality with tunnel tests in more detail (see Additional file 5: Table S5).\n", + "\n", + "header: Comparison of laboratory bioassay results with hut trial results\n", + "\n", + "Comparing the laboratory cone bioassay and tunnel test results with the experimental hut trial results with the same pyrethroid-resistant _An. gambiae s.l._ strain showed that these laboratory bioassays predicted the response in the huts for PermaNet(r) 3.0 and PermaNet(r) 2.0. Indeed, the unwashed and washed PermaNet(r) 3.0 and PermaNet(r) 2.0 induced relatively lower mortality in the pyrethroid-resistant _An. gambiae_ strain with the cone bioassays, the tunnel test and the hut trial. Focussing on the bioefficacy of PermaNet(r) Dual, the respective mortality rates in the cone, tunnel and hut were 14.0%, 84.5% and 94.9% for unwashed PermaNet(r) Dual (A), 24.0%, 86.5% and 90.2% for unwashed PermaNet(r) Dual (B), and 10.0%, 87.5% and 90.4% for washed PermaNet(r) Dual (B). This suggests that laboratory tunnel tests are more predictive of the performance of PermaNet(r) Dual in experimental huts. Additionally, there were correlations in the blood-feeding rates and blood-feeding inhibition between the tunnel test results and the hut trial results. The high mortality and strong blood-feeding inhibition of PermaNet(r) Dual in tunnel tests with the pyrethroid-resistant _An. gambiae_ Tiassale strain shows that the chlorfenapyr component of PermaNet(r) Dual provided good efficacy against pyrethroid-resistant _Anopheles_.\n", + "\n", + "header: Background: Methods\n", + "\n", + "PermaNet(r) Dual, PermaNet(r) 3.0 and PermaNet(r) 2.0, unwashed and washed (20 washes), were tested against free-flying pyrethroid-resistant _An. gambiae s.l._ in the experimental huts in Tiassale, Cote d'lvoire from March to August 2020. Complementary laboratory cone bioassays (daytime and 3-min exposure) and tunnel tests (nightly and 15-h exposure) were performed against pyrethroid-susceptible _An. gambiae_ sensu stricto (_S.S._) (Kisumu strain) and pyrethroid-resistant _An. gambiae s.l._ (Tiassale strain).\n", + "\n", + "header: Chemical analysis\n", + "\n", + "Pieces of netting were sampled from unwashed and washed PermaNet(r) Dual (A and B), PermaNet(r) 3.0 and PermaNet(r) 2.0 LLINs before and after being used in the hut trial, in accordance with the WHO protocol for chemical analysis [25]. All sampled net pieces were labelled and stored individually in aluminium foil at 3.7-4.2 degC. The net pieces were then shipped to the Vestergaard's ISO IEC17025 laboratory in Vietnam for chemical analysis of chlorfenapyr and deltamethrin. Deltamethrin and PBO contents were determined following the Collaborative International Pesticides Analytical Council Ltd (CIPAC) (i.e. ClPAC 33/LN/(M2)/3) methods [26]. Briefly, chlorfenapyr content was analysed using in-house method VCL-098-20 that was undergoing ClIPAC validation and was still to be published. Chlorfenapyr content was extracted from the PermaNet(r) Dual net using a mixture of n-hexane and 1,4-dioxane (95:5, v:v) solvents with an internal standard of dibutylphthalate added. The mixture was shaken by shaking machine to extract chlorfenapyr. Extracted solution was filtered through 0.45 mm Teflon membrane and analysed by a normal phase high performance liquid chromatography for chlorfenapyr concentration, detector UV 236 nm.\n", + "\n", + "header: Conclusion\n", + "\n", + "The deltamethrin-chlorfenapyr-coated PermaNet(r) Dual induced a high efficacy and performed better than the deltamethrin-PBO PermaNet(r) 3.0 and the deltamethrin-only PermaNet(r) 2.0, testing both unwashed and 20 times washed samples against the pyrethroid-susceptible and resistant strains of _An. gambiae s.l._ The inclusion of chlorfenapyr with deltamethrin in PermaNet(r) Dual net greatly improved protection and control of pyrethroid-resistant _An. gambiae_ populations. PermaNet(r) Dual thus represents a promising tool, with a high potential to reduce malaria transmission and provide community protection in areas compromised by mosquito vector resistance to pyrethroids.\n", + "\n", + "header: Small-scale field evaluation of PermaNet(r): Abstract\n", + "\n", + "Dual (a long-lasting net coated with a mixture of chlorfenapyr and deltamethrin) against pyrethroid-resistant _Anopheles gambiae_ mosquitoes from Tiassale, Cote d'lvoire\n", + "\n", + "Julien Z. B. Zahouli\n", + "\n", + "Julien Z. B. Zahouli\n", + "\n", + "Julien.zahouli@crsrs.ci\n", + "\n", + "Constant A. V. Edi\n", + "\n", + "1Laurence A. Yao\n", + "\n", + "1Emmanuelle G. Lisro\n", + "\n", + "1Marc Adou\n", + "\n", + "1Inza Kone\n", + "\n", + "1Graham Small\n", + "\n", + "2Leanore D. Sternberg\n", + "\n", + "28Benjamin G. Koudou\n", + "\n", + "\n", + "\n", + "Due to the rapid expansion of pyrethroid-resistance in malaria vectors in Africa, Global Plan for insecticide Resistance Management (GIPRM) has recommended the development of long-lasting insecticidal nets (LLINs), containing insecticide mixtures of active ingredients with different modes of action to mitigate resistance and improve LLIN efficacy. This good laboratory practice (GLP) study evaluated the efficacy of the chlorfenapyr and deltamethrin-coated PermaNet(r) Dual, in comparison with the deltamethrin and synergismt piperonyl butoxide (PBO)-treated PermaNet(r) 3.0 and the deltamethrin-coated PermaNet(r) 2.0, against wild free-flying pyrethroid-resistant _Anopheles gambiae_ sensu lato (_S.I._), in experimental huts in Tiassale, Cote d'lvoire (West Africa).\n", + "\n", + "header: Supplementary Information\n", + "\n", + "The online version contains supplementary material available at [https://doi.org/10.11016/s12936-023-04455-z](https://doi.org/10.11016/s12936-023-04455-z).\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "All relevant data are within the manuscript.\n", + "\n", + "header: Supporting laboratory testing of net samples\n", + "\n", + "Standard WHO cone bioassays and tunnel tests were conducted with unwashed and washed nets under laboratory conditions, to predict their responses in the field experimental huts. The insecticide susceptible Kisumu strains and field-collected F0 generation of pyrethroid-resistant Tiassale strain of _An. gambiae_ were tested with samples (25 cm x 25 cm) cut from each of the eight net \n", + "types (unwashed and washed net samples) before and after their inclusion into the hut trial [23]. For the tunnel tests, tunnels were divided into two sections by netting samples held in a frame. Nine holes of 1 cm in diameter were cut in each net sample (with one hole located at the centre of the square, and the other eight equidistant and located 5 cm from the border), and the surface of netting available to the mosquitoes was 400 cm\\({}^{2}\\) (20 cm \\(\\times\\) 20 cm).\n", + "\n", + "For each type of net and wash status, 100 non-blood-fed, 2-5-day-old females per strain were subjected to 3-min exposure in cone bioassays in replicates of five mosquitoes per cone according to the WHO guidelines [22]. For the tunnel tests, 100 non-blood-fed, 5-8-day-old mosquito females per strain were subjected to a 15-h exposure overnight using guinea pig as host, following the WHO guidelines [23]. Testing and holding conditions were 27 +- 2 degC and 80 +- 10% relative humidity. The 60-min knockdown for cone bioassays, blood-feeding status for tunnel tests and 24, 48 and 72-h mortality for both methods were recorded.\n", + "\n", + "header: Blood-feeding and personal protection\n", + "\n", + "The blood-feeding effect of the nets in wild pyrethroid-resistant _An. gambiae_ that entered the trial huts and personal protection are presented in Fig. 1A and Table 1. Before washing, the percentage blood-feeding with PernaNet(r) Dual (A) (36.7 +- 4.0%) did not differ significantly from PernaNet(r) Dual (B) (37.5 +- 4.4%) and PernaNet(r) 2.0 (55.7 +- 3.7%), but was significantly higher than PernaNet(r) 2.0 (31.3 +- 4.4%) (z = - 2.17; p = 0.030). The percentage blood-feeding for unwashed PernaNet(r) Dual (B) was similar to unwashed samples of PernaNet(r) 2.0 (z = 1.74; p = 0.081) and PernaNet(r) 3.0 (z = - 1.49; p = 0.136). Washing 20 times did not influence significantly the percentage blood-feeding in PernaNet(r) Dual (B) (z = 0.10; p = 0.921). After washing,\n", + "the percentage blood-feeding of PermaNet(r) Dual (B) (36.0 +- 3.7%) was substantially lower, but without significant differences when compared with PermaNet(r) 3.0 (57.7 +- 3.7%) (z = 1.71; p = 0.087), PermaNet(r) 2.0 (72.3 +- 3.2%) (z = 1.78; p = 0.076) and the untreated control net (z = 1.72; p = 0.085). For blood-feeding inhibition, unwashed PermaNet(r) Dual (A) (42.5 +- 6.8%) was similar to unwashed PermaNet(r) Dual (B) (41.4 +- 6.9%) (z = 0.25; p = 0.802) and washed PermaNet(r) Dual (B) (43.7 +- 4.8%) that was not affected by washing (z = - 0.41; p = 0.682). Compared with PermaNet(r) 3.0, the blood-feeding inhibition of PermaNet(r) Dual (B) was significantly higher before washing (z = - 0.72; p = 0.469), and significantly lower after washing (z = - 1.92; p = 0.045). However, both unwashed and washed PermaNet(r) Dual (B) provided, respectively, significantly higher blood-feeding inhibition than unwashed and washed PermaNet(r) 2.0 (all p < 0.05). The personal protection was similar between unwashed samples of PermaNet(r) Dual (A) (58.8 +- 3.5%) and PermaNet(r) Dual (B) (60.8 +- 3.8%) (z = - 0.04; p = 0.968). Unwashed PermaNet(r) Dual (B) resulted in a personal protection that was similar to unwashed PermaNet(r) 3.0 (62.9 +- 4.2%) (z = 0.21; p = 0.738), and significantly different from unwashed PermaNet(r) 2.0 (28.8 +- 1.9%) (z = 3.21; p = 0.001). With 20 washes, the personal protection with PermaNet(r) Dual (B) declined significantly from 60.8 +- 3.8% to 20.2 +- 1.1% (z = - 2.96; p = 0.003). However, washed PermaNet(r) Dual (B) provided significantly higher personal protection compared with their washed counterparts of PermaNet(r) 3.0 (9.8 +- 0.7%) (z = 2.89; p = 0.004) and PermaNet(r) 2.0 (- 32.6 +- 2.2%) (z = 2.93; p = 0.003).\n", + "\n", + "header: Outcomes measures\n", + "\n", + "The following entomological outcomes were used to evaluate the efficacy of each treatment arm in the current experimental hut trial [23]:\n", + "\n", + "1. Deterrence: proportional reduction in the number of mosquitoes caught in treated hut relative to the number caught in the control hut.\n", + "2. Exiting rate: percentage of the mosquitoes collected from the veranda trap out of all mosquitoes collected.\n", + "3. Induced exophily: proportional reduction of mosquitoes found in the exit and veranda traps relative to control hut.\n", + "4. Blood-feeding: percentage of blood-fed mosquitoes relative to the total collected.\n", + "5. Blood-feeding inhibition: proportional reduction in blood feeding percentage in treated huts relative to the control hut.\n", + "6. Mortality: percentage of dead mosquitoes found dead in hut in the morning (immediate mortality) or after being caught alive and dead during holding (delayed mortality) in treatment huts out of mosquitoes collected, and corrected for control mortality.\n", + "7. Personal protection: the proportional reduction in the number of blood-fed mosquitoes in the treated huts relative to the number of blood-fed mosquitoes in the untreated control.\n", + "8. Killing effect: the proportional reduction in the number of mosquitoes killed in the treated huts relative to the number of mosquitoes killed in the untreated control.\n", + "\n", + "The formulas of key entomological outcomes measured in this study are [23]:\n", + "\n", + "\\[\\text{Deterrence}(\\%) = \\frac{\\text{Nc} - \\text{Nt}}{\\text{Nc}} \\times 100 = \\left( 1 - \\frac{\\text{Nt}}{\\text{Nc}} \\right) \\times 100,\\]\n", + "\n", + "where Nt the total number of mosquitoes collected in the treatment hut and veranda/exit traps and Nc the total number of mosquitoes in the control hut and veranda/exit traps.\n", + "\n", + "\\[\\text{Exiting}\\,\\text{rate}(\\%) = \\frac{\\text{n}}{\\text{N}} \\times 100,\\]\n", + "\n", + "where n is the number of mosquitoes from veranda and window traps, while N is the total number of mosquitoes collected in the hut.\n", + "\n", + "\\[\\text{Induced}\\,\\text{exophily}(\\%) = \\frac{\\text{Pt} - \\text{Pc}}{\\text{Pc}} \\times 100\\] \\[= \\left( \\frac{\\text{Pt}}{\\text{Pc}} - 1 \\right) \\times 100,\\]\n", + "\n", + "where Pt is the proportion of mosquitoes from veranda and window traps of treated hut while Pc is the number of mosquitoes from veranda and window traps of untreated control hut.\n", + "\n", + "\\[\\text{Blood} - \\text{feeding}\\,\\text{inhibition}(\\%) = \\frac{\\text{Pc} - \\text{Pt}}{\\text{Pc}} \\times 100,\\]\n", + "\n", + "where Pt the proportion of blood-fed mosquitoes in the treatment hut, and Pc the proportion of blood-fed mosquitoes in the control hut.\n", + "\n", + "\\[\\text{Personal}\\,\\text{protection}(\\%) = \\frac{\\text{Bc} - \\text{Bt}}{\\text{Bc}} \\times 100\\] \\[= \\left( 1 - \\frac{\\text{Bt}}{\\text{Bc}} \\right) \\times 100,\\]\n", + "\n", + "where Bt the number of blood-fed mosquitoes in the treatment hut and Bc the number of blood-fed mosquitoes in the control hut.\n", + "\n", + "\\[\\text{Killing}\\,\\text{effect}(\\%) = \\frac{\\text{Kt} - \\text{Kc}}{\\text{Tc}} \\times 100,\\]\n", + "\n", + "where Kt is the number of mosquitoes killed in the treatment huts, Kc is the number of mosquitoes killed in the control huts, and Tc is the total number of mosquitoes collected from the control.\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Results\n", + "\n", + "The outcomes of the current experimental hut trial showed that the parameters of the net efficacy against the pyrethroid-resistant _An. gambiae s.l._ Tiassale population varied as a function of net type and wash status, with the performance of PermaNet(r) Dual being better overall compared with PermaNet(r) 3.0 and PermaNet(r) 2.0 (Fig. 1 and Table 1).\n", + "\n", + "header: Background\n", + "\n", + "According to the latest World Malaria Report 2022 of the World Health Organization (WHO), there were 247 million malaria cases and 619,000 malaria deaths in 84 malaria endemic countries worldwide in 2021 [1, 2]. This represents about 13.4 million more cases in 2021 compared to 2019 attributable to disruptions to essential malaria services during the COVID-18 pandemic [1]. The WHO African Region, with an estimated 234 million cases in 2021, accounted for about 95% of global cases malaria [1]. The recent decline of malaria burden from 2000 to 2019 was largely due to the massive distribution and use of long-lasting insecticidal nets (LLINs) (2.5 billion LLINs were delivered from 2004 to 2021) for _Anopheles_ mosquito vector control [1]. The malaria burden reduction is now slowing down and is threatened by the spread of resistance to pyrethroids (78 of 88 endemic countries have detected resistance to at least one insecticide class reported to the WHO from 2010 to 2020) [1]. The WHO Global Plan for Insecticide Resistance Management (GPIRM) has recommended the development of LLINs with insecticide mixtures of active ingredients with different modes of action to mitigate resistance [3]. The WHO Global Technical Strategy (GTS) aims for a reduction of malaria case incidence and mortality rate of at least 40% by 2020, 75% by 2025 and 90% by 2030 from the 2015 baseline [1, 4]. To meet these targets, GTS has called for the development of new tools, with combined or more effective insecticide molecules to control insecticide-resistant _Anopheles_ vectors [4]. These new vector control tools must incorporate new insecticide molecules and/or insecticide mixtures containing at least two active ingredients with different modes of action for the management of malaria vector resistance to insecticides [1, 3].\n", + "\n", + "Malaria is endemic throughout Cote d'Ivoire and represents the leading cause of mortality and morbidity in the country. Several studies have shown a wide spread resistance in local _Anopheles_ to most of the insecticide classes currently used in malaria vector control (e.g. pyrethroids, DDT and carbamates) [5-8]. The existence of multiple mechanisms of resistance in the main vector, _Anopheles gambiae_ sensu lato (_s.l._) threatens the efficacy of vector control tools currently used in Cote d'Ivoire, including LLINs [9-11]. Meiwald et al. [11] found that pyrethroid resistance is associated with significant overexpression of _CYP6P4, CYP6P3,_ and _CYP6Z1_ in _Anopheles coluzzii_ in Cote d'Ivoire. High allelic frequencies of knock-down resistance (_kdr_) _L1014F_ mutation (range: 0.46-1), relatively low frequencies of the _ace-1R_ mutation in the acetylcholinesterase gene associated with target-site insensitivity to carbamates and organophosphates (<0.5), and elevated activity of insecticide detoxifying enzymes (mainly mixed function oxidases (MFOs), esterase and glutathione S-transferase (GST)), have been reported in Cote d'Ivoire [5, 7, 10]. Recent laboratory (WHO tube and CDC bottle) bioassays against local pyrethroid-resistant _An. gambiae_ from Cote d'Ivoire have shown that pyrethroids induce low mortality, whilst pre-exposure to the synergist piperonyl butoxide (PBO) increases the mortality but does not restore fully the susceptibility due to resistance [9]. However, the pyrrole insecticide chlorfenapyr induces higher mortality in resistant _An. gambiae_ compared with pyrethroids alone or combined with PBO in Cote d'Ivoire [9].\n", + "\n", + "The present good laboratory practice (GLP) study evaluated the bio-efficacy of a new candidate LLIN, PermaNet(r) Dual, against pyrethroid-resistant _An. gambiae s.l._ in comparison with the WHO Prequalification Unit, Vector Control Product Assessment Team (PQT/VCP) listed standard LLINs, PermaNet(r) 2.0 and PermaNet(r) 3.0, through the conduct of an experimental hut trial and laboratory bioassays in Tiassale, Cote d'Ivoire. PermaNet(r) Dual has a mixture of the pyrrole chlorfenapyr and the pyrethroid deltamethrin coated onto a polyester fabric. PermaNet(r) 3.0 is treated with deltamethrin and PBO, and PermaNet(r) 2.0 is treated with deltamethrin only. Chlorfenapyr is a pro-insecticide activated by the oxygenase function of cytochrome P450s and oxidative removal of the N-ethoxymethyl\n", + "group leads to a toxic form identified as CL 303,268. The toxic form uncouples oxidative phosphorylation in the mitochondria, resulting in disruption of the production of adenosine triphosphate and loss of energy, leading to cell dysfunction and ultimately death of the insect [12]. The WHO has received some resistance monitoring data for chlorfenapyr, but these data are insufficient to assess the potential presence of resistance to this insecticide [1]. Deltamethrin is a neurotoxic insecticide and has excito-repellent effects on mosquitoes. PBO, used on PermaNet(r) 3.0, is a synergist which inhibits mixed function oxidases, blocking the detoxification of pyrethroids and at least partially restoring pyrethroid susceptibility [1, 13]. Pyrethroid-resistant strains of _Anopheles_ have so far been found to be susceptible to chlorfenapyr [9, 14-18]. Thus, the hypothesis of the current study was that chlorfenapyr would kill the pyrethroid-resistant _An. gambiae_ population in Tiassale, and PermaNet(r) Dual would induce higher mortality compared to both PermaNet(r) 3.0 and PermaNet(r) 2.0 in the experimental huts, and the supplementary laboratory cone and tunnel bioassays could predict these hut trial outcomes.\n", + "\n", + "header: Additional file 3: Table 53.\n", + "\n", + "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (Tissale strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", + "\n", + "header: Results\n", + "\n", + "PermaNet(r) Dual demonstrated significantly improved efficacy, compared to PermaNet(r) 3.0 and PermaNet(r) 2.0, against the pyrethroid-resistant _An. gambiae s.l._ Indeed, the experimental hut trial data showed that the mortality and blood-feeding inhibition in the wild pyrethroid-resistant _An. gambiae s.l._ were overall significantly higher with PermaNet(r) Dual compared with PermaNet(r) 3.0 and PermaNet(r) 2.0, for both unwashed and washed samples. The mortality with unwashed and washed samples were 93.6 +- 0.2% and 83.2 +- 0.9% for PermaNet(r) Dual, 37.5 +- 2.9% and 14.4 +- 3.3% for PermaNet(r) 3.0, and 7.4 +- 5.1% and 11.7 +- 3.4% for PermaNet(r) 2.0, respectively. Moreover, unwashed and washed samples produced the respective percentage blood-feeding inhibition of 41.4 +- 6.9% and 43.7 +- 4.8% with PermaNet(r) Dual, 51.0 +- 5.7% and 9.8 +- 3.6% with PermaNet(r) 3.0, and 12.8 +- 4.3% and - 13.0 +- 3.6% with PermaNet(r) 2.0. Overall, PermaNet(r) Dual also induced higher or similar deterrence, exophily and personal protection when compared with the standard PermaNet(r) 3.0 and PermaNet(r) 2.0 reference nets, with both unwashed and\n", + "washed net samples. In contrast to cone bioassays, tunnel tests predicted the efficacy of PermaNet(r) Dual seen in the current experimental hut trial.\n", + "\n", + "header: Additional file 2: Table 52.\n", + "\n", + "Mean knock-down and mortality rates in multi-resistant _Anopheles gambiae s.l._ (bisumu strain) exposed to long-lasting insecticidal nets using cone bioassays before and after experimental hut trial in Tassale, Cape d'hore.\n", + "\n", + "header: Funding\n", + "\n", + "This study was funded by a Grant from Vestergaard Sarl, Lausanne, Switzerland.\n", + "\n", + "header: Conclusion\n", + "\n", + "The present small-scale GLP experimental hut study demonstrated that the deltamethrin- chlorfenapyr PermaNet(r) Dual net has high bio-efficacy, inducing significantly higher mortality and blood-feeding inhibition effects in the wild insecticide-resistant _An. gambiae s.l._ when compared with the deltamethrin-PBO PermaNet(r) 3.0 and deltamethrin-only PermaNet(r) 2.0. The inclusion of chlorfenapyr with pyrethroid in PermaNet(r) Dual net has greatly improved protection and control of free-flying wild pyrethroid-resistant _An. gambiae_ populations. The chlorfenapyr-deltamethrin-coated PermaNet(r) Dual net has great potential to reduce malaria transmission, particularly in areas compromised by high level of pyrethroid resistance in _Anopheles_ mosquitoes. Further validations in large-scale field trials are required to assess the effectiveness, the durability and the acceptability of this new tool for malaria vector control.\n", + "\n", + "header: Experimental huts and mosquitoes: Net treatments and treatment arms\n", + "\n", + "This study included the PermaNet(r) Dual (candidate net), PermaNet(r) 3.0 and PermaNet(r) 2.0 (reference nets) and untreated net (negative control). All mosquito nets were new and unwashed nets supplied by Vestergaard Sarl (Lausanne, Switzerland). The untreated nets were made of polyester fabric without any insecticide. PermaNet(r) Dual was made of polyester fabric coated with chlorfenapyr at 5.0 g/kg +- 25% and deltamethrin at 2.1 g/kg +- 25%. The unwashed PermaNet(r) Dual arm was replicated using nets from two different production batches (referred to as A and B). PermaNet(r) 3.0 was made of polyester fabric coated with 2.1 g/kg +- 25% of deltamethrin on the sides, and polyethylene incorporated with 4.0 g/kg +- 25% of deltamethrin and 25.0 g/kg +- 25% of PBO on the roof. PermaNet(r) 2.0 was made of polyester fabric coated with 1.4 g/kg +- 25% of deltamethrin.\n", + "\n", + "Eight treatment arms were compared in the experimental huts and laboratory: PermaNet(r) Dual (A) unwashed; PermaNet(r) Dual (B) unwashed and washed 20 times; PermaNet(r) 3.0 unwashed and washed 20 times; PermaNet(r) 2.0 unwashed and washed 20 times; and untreated control net. The nets were prepared and washed using a soap called \"Savon de Marseille\" and according to the WHO guidelines on small-scale field hut trials and laboratory testing [23]. The interval of time between two consecutive washes was one day, corresponding to the regeneration time of all the nets. The regeneration time of the PermaNet(r) Dual (i.e. 1 day) was supplied by Vestergaard. The nets were washed 20 times. Before testing them in the experimental huts, all the unwashed, washed and untreated control nets were deliberately holed with six holes of 4 cm in diameter to stimulate the conditions of torn nets according to the WHO guidelines [23].\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"tunnel test\",\"Country\":\"Cote d'Ivoire\",\"Site\":\"Tiassale\",\"Start_month\":3,\"Start_year\":2020,\"End_month\":8,\"End_year\":2020}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"PermaNet(r) Dual\",\"Insecticide\":\"chlorfenapyr, deltamethrin\",\"Net_washed\":0.0},\"N02\":{\"Net_type\":\"PermaNet(r) Dual\",\"Insecticide\":\"chlorfenapyr, deltamethrin\",\"Net_washed\":20.0},\"N03\":{\"Net_type\":\"PermaNet(r) 3.0\",\"Insecticide\":\"deltamethrin, PBO\",\"Net_washed\":0.0},\"N04\":{\"Net_type\":\"PermaNet(r) 3.0\",\"Insecticide\":\"deltamethrin, PBO\",\"Net_washed\":20.0},\"N05\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_washed\":0.0},\"N06\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_washed\":20.0}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: PermaNet(r) 2.0 and Dawa Plus(r) 2.0: Life Net(r) and NetProtect(r)\n", + "\n", + "Each specimen set was weighed and placed in a 250 ml round-bottom boiling flask followed by the addition of 95 ml of xylene and 5 ml of a known concentration of internal standard dipropyl phthalate, (2 mg/ml). The flask was fitted with a reflux condenser and heated to boiling for 30 min. After cooling, approximately 2.5 ml of the extract was filtered and transferred to a glass tube and evaporated to dryness under a stream of dry nitrogen for 30 min at 60 degC. A known volume (0.75 ml) of the mobile phase (94/6 (v/v) isooctane/1, 4-dioxane) was used to reconstitute the residue and was transferred to a sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter. The filtrate was centrifuged (500g) for 2 min and transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Extraction of permethrin for Olyset Net(r)\n", + "\n", + "Permethrin analysis of Olyset Net(r) samples was based on CIPAC Method 331 [31]. Each specimen set was weighed and placed in a 100 ml round-bottom boiling flask, followed by heptane (45 ml) and triphenyl phosphate internal standard (5.0 ml of known concentration in heptane). The flask was fitted with a reflux condenser and heated to boiling for 45 min. After cooling, approximately 1.5 ml of the extract was transferred to a chromatographic sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Author details\n", + "\n", + "- Laboratoire d'Ecologie Vectorieile et Parastaire, Département de Biologie Animal, Faculte Des Sciences et Techniques, Universite Cheikh Anta Diop, Dakar, Senegal. 2institut Pasteur de Dakar, Dakar, Senegal. 3Laboratoire de Télédétection Appliquee, (ITA/IST/FST/UCAD, Dakar, Senegal. 4Division of Parabolic Diseases and Malaria, Centers for Disease Control (CDC) and Prevention, Atlanta, GA, USA.\n", + "\n", + "header: Mosquito net coverage\n", + "\n", + "A total of 3012 nets were distributed in 1249 households (Table 2). The overall average household coverage, 94% (95% CI 92.68-95.3), was 68.2% (95% CI 63.63-72.77) and 92% (95% CI 90-94) in Mbagame and Thies area villages, respectively. Moreover, the average percentage of households receiving only one mosquito net was 26% (95% CI 23-28) in all areas. The average percentage of households in Mbagame and Thies receiving only one mosquito net was estimated as 41.8% (95% CI 36.9-46.8) and 17.4% (95% CI 15-20.6), respectively.\n", + "\n", + "The global coverage of sleeping spaces (3,012/3,840) was 78% (95% CI 77-78). However, the sleeping space coverage in Mbagame area was estimated at 68.2% (95% CI: 65-70), and 95.3% (95% CI 94-96) in the villages surrounding Thies.\n", + "\n", + "header: Gas chromatography analysis\n", + "\n", + "The extracts were analysed using an Agilent 6890 N chromatograph fitted with a 30 m x 0.25 mm (i.d.) fused silica DB-1 capillary column coated with 0.25 mm cross linked polydimethylsiloxane stationary phase. Ultra-high purity nitrogen (1.2 ml/min) was used as the carrier gas. Injector port, column oven, and detector temperatures were 265 degC, 240 degC, and 300 degC, respectively. Flame ionization (FID) was used for analyte detection. Two injections were used for each sample and the results averaged. Permethrin concentration was calculated by comparing permethrin/triphenyl phosphate peak area ratios against a calibration curve generated from solutions containing known permethrin /triphenyl phosphate mass ratios.\n", + "\n", + "header: Methods\n", + "\n", + "A total of five brands of LLINs were distributed to households: NetProtect(r), PermaNet(r) 2.0, Dawa Plus(r) 2.0, Olyset Net(r) and Life Net(r) (Table 1). NetProtect(r) mosquito nets were white, rectangular (length = 190, width = 180 and height = 150 cm) made of 118 denier polyethylene mono filaments and 136 holes/in2 mesh. PermaNet(r) 2.0 mosquito nets were white, rectangular (length = 190, width = 180 and height = 200 cm), made with 75 denier polyester filament tulle and 156 holes/inch2 mesh. Dawa Plus(r) 2.0 were white, rectangular (length = 200, width = 160 and height = 180 cm), made of polyester multi-filament tulle, 75 deniers and 156 holes/inch2 mesh. Olyset Net(r) were white, conical (circumference 1250 cm, height = 250 cm), made with a denier polyethylene mono filament tulle greater than 150 cm and 56 holes/inch2 mesh. Life Net(r) nets were the only mosquito nets made from polypropylene, they were white, rectangular (length = 190, width = 180 and height = 150 cm) made with multi-filament tulle with 110 denier and 156 holes/inch2 mesh.\n", + "\n", + "Aside from the Olyset Net(r) mosquito nets which were treated with permethrin, all other nets distributed were impregnated with deltamethrin. Olyset Net(r) and Life Net(r) were donated by OMVS (Senegal River Basin Development Organization) and BAYER AG (Germany),\n", + "respectively, while the three other brands (PermaNet(r) 2.0, Dawa Plus(r) 2.0 and NetProtect(r)) were purchased from vendors approved by manufacturers.\n", + "\n", + "header: Extraction of deltamethrin\n", + "\n", + "Each specimen set was weighed and placed in a 125 ml screw capped Erlenmeyer flask and 50 ml of the extraction solvent mixture was added making sure that the net was completely submerged in the mixture. The flask was tightly capped and sealed with paraffin film before placing in an ultrasonic bath for 15 min. Later the flask was shaken in a bath at 25 degC for 30 min at a frequency of 155 cycles per min. The extract was transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Physical integrity\n", + "\n", + "At least 83% (95% CI 80-90) of mosquito nets had holes (all types of holes) at the end of the study. Except the Life Net(r), the average number of holes increased with time for all LLINs. For the LLINs inspected in laboratory, at the end of the 6th semester of follow-up, the majority of them had holes, with average proportions of 95.2% 95%, 93.3%, 100% and 60% for Dawa Plus(r) 2.0, NetProtect(r) PermaNet(r) 2.0, Olyset Net(r) and Life Net(r), respectively. The average number of holes remained relatively low for Life Net(r) (Fisher's exact test, OR: 12.02; 95% CI 0.96-684.89, P = 0.027).\n", + "\n", + "At each semester, size 1 holes (Fig. 3) were predominant for all types of mosquito nets. The average number of holes (all types) per mosquito net was 39 per LLIN at the end of six semesters of study. It was 13, 39, 15, 48 and 54 respectively for Life Net(r), NetProtect(r) Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Olyset Net(r), respectively. Only NetProtect(r) and PermaNet(r) 2.0 types were still in good condition at the end of the three-year study (Table 3). Proportions of mosquito nets in good condition in\n", + "\n", + "Figure 2: Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\n", + "households were 71% (NetProtect(r)) and 50% (PernaNet(r) 2.0) in both mosquito nets.\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Rate of sampling mosquito nets, retention of LLINs\n", + "\n", + "From the beginning of the study in 2011 to the end in 2014 (6 semesters), 839 mosquito nets (all types) were removed representing 93.2% of the expected 900 LLINs to be removed (Fig. 2, Table 3). Of the 180 mosquito nets of each brand expected to be sampled, 94.4%, 79.4%, 94.4%, 98.9% and 98.3% of the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r), Olyset Net(r) and PermaNet(r) 2.0, respectively, were removed from the field. The number of mosquito nets sampled was less than the 28-30 units expected in the 5th and 6th semester for Life Net(r), and in the 6th semester for Dawa Plus(r) 2.0 and NetProtect(r). At the end of the study, the retention rate of all five LLIN types was 12.5% (95% CI 11.4-13.7) based on the total number of nets distributed and was relatively better for Olyset Net(r) at 20.5% (95% CI 17.8-23.4) and to a lesser extent for Dawa Plus(r) 2.0 with 15.1% (95% CI 12.4-18.2). With more than half of the mosquito nets not found after only two semesters of follow-up, the average percentage of Life Net(r) found in households fell to about one in five mosquito nets distributed remaining in the third semester.\n", + "\n", + "header: Table 3 Physical integrity of the LLINs inspected in the laboratory per type and semester after three years\n", + "footer: N: Number of samples \n", + "columns: ['Semesters', 'Types', 'N', 'General State - Good condition - N', 'General State - Good condition - %', 'General State - Serviceable condition - N', 'General State - Serviceable condition - %', 'General State - Tear - N', 'General State - Tear - %']\n", + "\n", + "{\"0\":{\"Semesters\":1,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":21,\"General State - Good condition - %\":70.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":7,\"General State - Tear - %\":23.0},\"1\":{\"Semesters\":1,\"Types\":\"Life Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":28,\"General State - Good condition - %\":93.3,\"General State - Serviceable condition - N\":1,\"General State - Serviceable condition - %\":3.3,\"General State - Tear - N\":1,\"General State - Tear - %\":3.3},\"2\":{\"Semesters\":1,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":26,\"General State - Good condition - %\":86.7,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":4,\"General State - Tear - %\":13.3},\"3\":{\"Semesters\":1,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":13,\"General State - Good condition - %\":43.3,\"General State - Serviceable condition - N\":7,\"General State - Serviceable condition - %\":23.3,\"General State - Tear - N\":10,\"General State - Tear - %\":33.4},\"4\":{\"Semesters\":1,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":19,\"General State - Good condition - %\":63.3,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":11,\"General State - Tear - %\":36.7},\"5\":{\"Semesters\":2,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":18,\"General State - Good condition - %\":60.0,\"General State - Serviceable condition - N\":5,\"General State - Serviceable condition - %\":16.7,\"General State - Tear - N\":7,\"General State - Tear - %\":23.3},\"6\":{\"Semesters\":2,\"Types\":\"Life Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":24,\"General State - Good condition - %\":80.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"7\":{\"Semesters\":2,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":22,\"General State - Good condition - %\":73.3,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":6.7,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"8\":{\"Semesters\":2,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":13,\"General State - Good condition - %\":43.3,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":33.4,\"General State - Tear - N\":7,\"General State - Tear - %\":23.3},\"9\":{\"Semesters\":2,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":28,\"General State - Good condition - N\":10,\"General State - Good condition - %\":35.7,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.1,\"General State - Tear - N\":16,\"General State - Tear - %\":57.2},\"10\":{\"Semesters\":3,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":15,\"General State - Good condition - %\":50.0,\"General State - Serviceable condition - N\":5,\"General State - Serviceable condition - %\":17.0,\"General State - Tear - N\":10,\"General State - Tear - %\":33.0},\"11\":{\"Semesters\":3,\"Types\":\"Life Net\\u00ae\",\"N\":29,\"General State - Good condition - N\":18,\"General State - Good condition - %\":62.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":9,\"General State - Tear - %\":31.0},\"12\":{\"Semesters\":3,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":18,\"General State - Good condition - %\":60.0,\"General State - Serviceable condition - N\":12,\"General State - Serviceable condition - %\":40.0,\"General State - Tear - N\":0,\"General State - Tear - %\":0.0},\"13\":{\"Semesters\":3,\"Types\":\"Olyset Net\\u00ae\",\"N\":28,\"General State - Good condition - N\":7,\"General State - Good condition - %\":25.0,\"General State - Serviceable condition - N\":9,\"General State - Serviceable condition - %\":32.0,\"General State - Tear - N\":12,\"General State - Tear - %\":43.0},\"14\":{\"Semesters\":3,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":19,\"General State - Good condition - %\":63.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":9,\"General State - Tear - %\":30.0},\"15\":{\"Semesters\":4,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":1,\"General State - Good condition - %\":3.0,\"General State - Serviceable condition - N\":20,\"General State - Serviceable condition - %\":67.0,\"General State - Tear - N\":9,\"General State - Tear - %\":30.0},\"16\":{\"Semesters\":4,\"Types\":\"Life Net\\u00ae\",\"N\":29,\"General State - Good condition - N\":25,\"General State - Good condition - %\":86.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":1,\"General State - Tear - %\":3.0},\"17\":{\"Semesters\":4,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":14,\"General State - Good condition - %\":47.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":13,\"General State - Tear - %\":43.0},\"18\":{\"Semesters\":4,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":0,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":24,\"General State - Serviceable condition - %\":80.0,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"19\":{\"Semesters\":4,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":11,\"General State - Good condition - %\":37.0,\"General State - Serviceable condition - N\":11,\"General State - Serviceable condition - %\":37.0,\"General State - Tear - N\":8,\"General State - Tear - %\":27.0},\"20\":{\"Semesters\":5,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":29,\"General State - Good condition - N\":10,\"General State - Good condition - %\":34.0,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":34.0,\"General State - Tear - N\":9,\"General State - Tear - %\":31.0},\"21\":{\"Semesters\":5,\"Types\":\"Life Net\\u00ae\",\"N\":15,\"General State - Good condition - N\":15,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":0,\"General State - Tear - %\":0.0},\"22\":{\"Semesters\":5,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":16,\"General State - Good condition - %\":53.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":11,\"General State - Tear - %\":37.0},\"23\":{\"Semesters\":5,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":5,\"General State - Good condition - %\":17.0,\"General State - Serviceable condition - N\":18,\"General State - Serviceable condition - %\":60.0,\"General State - Tear - N\":7,\"General State - Tear - %\":23.0},\"24\":{\"Semesters\":5,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":29,\"General State - Good condition - N\":16,\"General State - Good condition - %\":55.0,\"General State - Serviceable condition - N\":6,\"General State - Serviceable condition - %\":21.0,\"General State - Tear - N\":7,\"General State - Tear - %\":24.0},\"25\":{\"Semesters\":6,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":21,\"General State - Good condition - N\":1,\"General State - Good condition - %\":5.0,\"General State - Serviceable condition - N\":18,\"General State - Serviceable condition - %\":86.0,\"General State - Tear - N\":3,\"General State - Tear - %\":14.0},\"26\":{\"Semesters\":6,\"Types\":\"Life Net\\u00ae\",\"N\":10,\"General State - Good condition - N\":0,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":10,\"General State - Tear - %\":100.0},\"27\":{\"Semesters\":6,\"Types\":\"NetProtect\\u00ae\",\"N\":21,\"General State - Good condition - N\":15,\"General State - Good condition - %\":71.0,\"General State - Serviceable condition - N\":1,\"General State - Serviceable condition - %\":5.0,\"General State - Tear - N\":5,\"General State - Tear - %\":24.0},\"28\":{\"Semesters\":6,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":2,\"General State - Good condition - %\":7.0,\"General State - Serviceable condition - N\":24,\"General State - Serviceable condition - %\":80.0,\"General State - Tear - N\":4,\"General State - Tear - %\":13.0},\"29\":{\"Semesters\":6,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":15,\"General State - Good condition - %\":50.0,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":33.0,\"General State - Tear - N\":5,\"General State - Tear - %\":17.0}}\n", + "\n", + "header: Competing interests\n", + "\n", + "The authors declare that they have no competing interests.\n", + "\n", + "header: Physical integrity of LLINs\n", + "\n", + "The condition of each LLIN was checked every six months. Physical integrity of sampled LLINs was assessed in the laboratory by searching for holes or tears on 170 Dawa Plus(r) 2.0, 171 NetProtect(r), 143 Life Net(r), 178 Olyset Net(r) and 177 PermaNet(r) 2.0. Holes were classified as size 1 (0.5-2 cm diameter), size 2 (2-10 cm diameter) or size 3 (diameter > 10 cm) [28]. The proportional hole index (pHI) value was calculated on each LLIN inspected per WHO guidelines [28, 29]. It is the sum of the proportional indexes by categories. The proportional index for a category was the product of the number of holes in category and the index attributed to that size:\n", + "\n", + "\\[\\begin{array}{l} {\\text{pH}} \\equiv \\neq \\text{size}\\;1\\;\\text{holes}\\;\\times\\;1+(\\text{\\#size}\\;2\\;\\text{holes}\\; \\times\\;23)\\\\ {}\n", + "\n", + "\n", + "\n", + "{\n", + "\n", + "\n", + "sampling pattern recommended by WHOPES [28]. For all the net samples, insecticide from five swatches of all the four sides and one from the top were extracted and analysed. Each specimen was trimmed to a 10 cm x 10 cm square (0.010m2) using a die cutting in a pneumatic press. During the cutting operation, each specimen was sandwiched between layers of aluminum foil to prevent cross-contamination. The specimen set from each net was analysed as a group to yield an average value of insecticide concentration for the whole net. Chemical analysis was based on methods published by the Collaborative International Pesticides Analytical Council (CIPAC). Deltamethrin analysis of PermaNet(r)2.0 and Dawa Plus(r) samples was based on CIPAC Method 333 [32-34].\n", + "\n", + "header: Data entry and statistical analysis\n", + "\n", + "Household survey data were entered on EPI data Entry 3.0, exported to Excel Microsoft office 2010 and analysed with R software. The calculation of proportions and averages was done according to the normal law by 95% Confidence Intervals (CI). Comparisons and proportions were made by Chi-squared tests (kh2) of homogeneity. Generalized linear models were performed to understand the relationship between mosquito mortality and LLIN washing and mortality bioassay results and insecticide chemical content. The analysis of the condition of the mosquito net, the values obtained for pHI, the torn surface and its shape was used to establish one of the criteria of durability [28]; a mosquito net was in good condition when the pHI was between 0 and 64, is usable when pHI was in 65-642 and was too torn when the pHI was greater than 643 [30]. The acceptable residual efficacy of each type of LLIN was determined based on WHO criteria [30].\n", + "\n", + "Residual efficacy was optimal if the KD 60 or the mortality rate (MR), defined as the number of dead females\n", + "relative to the total number of mosquitoes exposed per mosquito net was >= 95% or >= 80%, respectively, after 20 washes in the laboratory or after three years of use [28]. The proportion of mosquito nets meeting optimal bio efficacy levels of KD60 and mortality rates were determined for each type of LLINs by performing cone bioassays in the laboratory. A minimal bio-efficacy criteria of >= 75% for KD or >= 50% mortality rate was used to determine the efficacy status of LLINs [28]. The MR was corrected by the Abbott formula [35] if the mortality rate for controls was less than 20% and the bioassay was redone if it was greater than 20%. Generalized linear regression models were run to estimate the relationship in mortality rate between washed and non-washed mosquito nets.\n", + "\n", + "The retention rate was calculated for each type of LLIN at each follow up period. It was defined as the ratio of the number of the original study mosquito nets available in households to the total number of mosquito nets initially distributed. The mosquito nets declared lost but found in the following survey were included in the calculation of the retention rate of the previous semester.\n", + "\n", + "header: Table 1: Characteristics of types of LLINs distributed in study areas\n", + "footer: None\n", + "columns: ['Type of LLINs', 'Manufacturers', 'Material', 'Mesh (holes/ square inch2)', 'Denier', 'Insecticide', 'Standard Dose (mg/ m2)']\n", + "\n", + "{\"0\":{\"Type of LLINs\":\"NetProtect\\u00ae\",\"Manufacturers\":\"Intelligent Insect Control, France\",\"Material\":\"Polyethylene\",\"Mesh (holes\\/ square inch2)\":136,\"Denier\":\"118\",\"Insecticide\":\"Deltamethrin\",\"Standard Dose (mg\\/ m2)\":68},\"1\":{\"Type of LLINs\":\"PermaNet\\u00ae 2.0\",\"Manufacturers\":\"Vestergaard-Frandsen, Suisse\",\"Material\":\"Polyester\",\"Mesh (holes\\/ square inch2)\":156,\"Denier\":\"75\",\"Insecticide\":\"Deltamethrin\",\"Standard Dose (mg\\/ m2)\":55},\"2\":{\"Type of LLINs\":\"Dawa Plus\\u00ae 2.0\",\"Manufacturers\":\"Tana Netting, CO,LTD,Thailand\",\"Material\":\"Polyester\",\"Mesh (holes\\/ square inch2)\":156,\"Denier\":\"75\",\"Insecticide\":\"Deltamethrin\",\"Standard Dose (mg\\/ m2)\":80},\"3\":{\"Type of LLINs\":\"Olyset Net\\u00ae\",\"Manufacturers\":\"Sumitomo Chemical, Japon\",\"Material\":\"Polyethylene\",\"Mesh (holes\\/ square inch2)\":56,\"Denier\":\"> 150\",\"Insecticide\":\"Permethrin\",\"Standard Dose (mg\\/ m2)\":1000},\"4\":{\"Type of LLINs\":\"Life Net\\u00ae\",\"Manufacturers\":\"Bayer CropSciences, France\",\"Material\":\"Polypropylene\",\"Mesh (holes\\/ square inch2)\":156,\"Denier\":\"110\",\"Insecticide\":\"Deltamethrin\",\"Standard Dose (mg\\/ m2)\":340}}\n", + "\n", + "header: Use and maintenance of LLINs\n", + "\n", + "The regular use of the mosquito nets (use the night before the survey) at the end of the follow up was 23.3%, 38.5%, 7.3%, 78.3% and 16.1% for the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r) Olyset Net(r) and PermaNet(r) 2.0 types, respectively. For the NetProtect(r) this rate was statistically lower compared to the Life Net(r) and Olyset Net(r) (Fisher's exact test, OR: 0.13; 95% CI: 0.017-0.83, P = 0.014; Fisher's exact test, OR: 0.022; 95% CI 0.017-0.83, P < 0.001).\n", + "\n", + "Dawa Plus(r) 2.0 and PermaNet(r) 2.0 used the night before the survey consistently exceeded 50% during the first four semesters. For Olyset Net(r), this rate was always above 60% during the three years of follow-up. In contrast, the NetProtect(r) and Life Net(r) types were the least used in households. Their regular use rates were only satisfactory in the first two semesters following LLINs distribution, with 52.6% (95% CI 47.7-57.5) for NetProtect(r) in semester one and 53% (95% CI 46-59.6) for Life Net(r) in the second.\n", + "\n", + "For all LLIN types distributed, only 19% (95% CI 18-20) were washed. The results obtained with washing habits showed that 66% (95% CI 64-69) of the washed mosquito nets were washed with warm water. In addition, 73% (95% CI 71-76) of the cases used local soap and 50% of the mosquito net was dried in shade after the washing.\n", + "\n", + "header: Conclusions\n", + "\n", + "The evaluation of LLINs after three years of use revealed a loss of integrity of almost all types of nets distributed. Despite this loss of integrity, biological efficacy was maintained for the Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Life Net(r) brands.\n", + "\n", + "header: Abbreviations\n", + "\n", + "Cl 95%: Confidence interval 95%: CIO: Collaborative international pesticides analytical council; KD60: Proportion of mosquitoes knocked down at 60 min post-exposure; HPLC: High performance liquid chromatography; IQR: Intra quarter-time; LINK: Long-lasting insecticidal nets; pH: Proportional hole index; MW: World Health Organization; WHOPS: World Health Organization pesticide evaluation scheme; UV: Ultraviolet; PVC: Polyvinyl chloride; CDC: Centers for disease control and prevention; MR: Mortality rate; CNRS: National research on contract for health; OMVS: Senegal river basin development organization; NMC: National malaria control programme; P: Probability; OR: Odd ratio.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "The data used and analysed during the current study are available from the corresponding author on reasonable request.\n", + "\n", + "header: Funding\n", + "\n", + "- This work was supported by President's Malaria Initiative and Universite Cheikh Anta Diop (Dakar).\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: PermaNet(r) 2.0 and Dawa Plus(r) 2.0: Life Net(r) and NetProtect(r)\n", + "\n", + "Each specimen set was weighed and placed in a 250 ml round-bottom boiling flask followed by the addition of 95 ml of xylene and 5 ml of a known concentration of internal standard dipropyl phthalate, (2 mg/ml). The flask was fitted with a reflux condenser and heated to boiling for 30 min. After cooling, approximately 2.5 ml of the extract was filtered and transferred to a glass tube and evaporated to dryness under a stream of dry nitrogen for 30 min at 60 degC. A known volume (0.75 ml) of the mobile phase (94/6 (v/v) isooctane/1, 4-dioxane) was used to reconstitute the residue and was transferred to a sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter. The filtrate was centrifuged (500g) for 2 min and transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Gas chromatography analysis\n", + "\n", + "The extracts were analysed using an Agilent 6890 N chromatograph fitted with a 30 m x 0.25 mm (i.d.) fused silica DB-1 capillary column coated with 0.25 mm cross linked polydimethylsiloxane stationary phase. Ultra-high purity nitrogen (1.2 ml/min) was used as the carrier gas. Injector port, column oven, and detector temperatures were 265 degC, 240 degC, and 300 degC, respectively. Flame ionization (FID) was used for analyte detection. Two injections were used for each sample and the results averaged. Permethrin concentration was calculated by comparing permethrin/triphenyl phosphate peak area ratios against a calibration curve generated from solutions containing known permethrin /triphenyl phosphate mass ratios.\n", + "\n", + "header: Extraction of permethrin for Olyset Net(r)\n", + "\n", + "Permethrin analysis of Olyset Net(r) samples was based on CIPAC Method 331 [31]. Each specimen set was weighed and placed in a 100 ml round-bottom boiling flask, followed by heptane (45 ml) and triphenyl phosphate internal standard (5.0 ml of known concentration in heptane). The flask was fitted with a reflux condenser and heated to boiling for 45 min. After cooling, approximately 1.5 ml of the extract was transferred to a chromatographic sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Author details\n", + "\n", + "- Laboratoire d'Ecologie Vectorieile et Parastaire, Département de Biologie Animal, Faculte Des Sciences et Techniques, Universite Cheikh Anta Diop, Dakar, Senegal. 2institut Pasteur de Dakar, Dakar, Senegal. 3Laboratoire de Télédétection Appliquee, (ITA/IST/FST/UCAD, Dakar, Senegal. 4Division of Parabolic Diseases and Malaria, Centers for Disease Control (CDC) and Prevention, Atlanta, GA, USA.\n", + "\n", + "header: Mosquito net coverage\n", + "\n", + "A total of 3012 nets were distributed in 1249 households (Table 2). The overall average household coverage, 94% (95% CI 92.68-95.3), was 68.2% (95% CI 63.63-72.77) and 92% (95% CI 90-94) in Mbagame and Thies area villages, respectively. Moreover, the average percentage of households receiving only one mosquito net was 26% (95% CI 23-28) in all areas. The average percentage of households in Mbagame and Thies receiving only one mosquito net was estimated as 41.8% (95% CI 36.9-46.8) and 17.4% (95% CI 15-20.6), respectively.\n", + "\n", + "The global coverage of sleeping spaces (3,012/3,840) was 78% (95% CI 77-78). However, the sleeping space coverage in Mbagame area was estimated at 68.2% (95% CI: 65-70), and 95.3% (95% CI 94-96) in the villages surrounding Thies.\n", + "\n", + "header: Extraction of deltamethrin\n", + "\n", + "Each specimen set was weighed and placed in a 125 ml screw capped Erlenmeyer flask and 50 ml of the extraction solvent mixture was added making sure that the net was completely submerged in the mixture. The flask was tightly capped and sealed with paraffin film before placing in an ultrasonic bath for 15 min. Later the flask was shaken in a bath at 25 degC for 30 min at a frequency of 155 cycles per min. The extract was transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Competing interests\n", + "\n", + "The authors declare that they have no competing interests.\n", + "\n", + "header: High performance liquid chromatography (HPLC) analysis\n", + "\n", + "The deltamethrin content was analysed using Agilent 1200 HPLC equipped with a UV detector set at 230 nm and a 150 x 4.6 mm (i.d.) Ascents Si 5 mm column held at 40 degC. The mobile phase was 94/6 (v/v) isooctane/1, 4-dioxane with a flow rate of 1.5 ml/min. For each extract, three injections of 20 ml were made. Injections, calibrations, and quantification of the deltamethrin content were followed as per the procedure in the Collaborative International Pesticides Analytical Council (CIPAC) 333 [32-34].\n", + "\n", + "header: Methods\n", + "\n", + "A total of five brands of LLINs were distributed to households: NetProtect(r), PermaNet(r) 2.0, Dawa Plus(r) 2.0, Olyset Net(r) and Life Net(r) (Table 1). NetProtect(r) mosquito nets were white, rectangular (length = 190, width = 180 and height = 150 cm) made of 118 denier polyethylene mono filaments and 136 holes/in2 mesh. PermaNet(r) 2.0 mosquito nets were white, rectangular (length = 190, width = 180 and height = 200 cm), made with 75 denier polyester filament tulle and 156 holes/inch2 mesh. Dawa Plus(r) 2.0 were white, rectangular (length = 200, width = 160 and height = 180 cm), made of polyester multi-filament tulle, 75 deniers and 156 holes/inch2 mesh. Olyset Net(r) were white, conical (circumference 1250 cm, height = 250 cm), made with a denier polyethylene mono filament tulle greater than 150 cm and 56 holes/inch2 mesh. Life Net(r) nets were the only mosquito nets made from polypropylene, they were white, rectangular (length = 190, width = 180 and height = 150 cm) made with multi-filament tulle with 110 denier and 156 holes/inch2 mesh.\n", + "\n", + "Aside from the Olyset Net(r) mosquito nets which were treated with permethrin, all other nets distributed were impregnated with deltamethrin. Olyset Net(r) and Life Net(r) were donated by OMVS (Senegal River Basin Development Organization) and BAYER AG (Germany),\n", + "respectively, while the three other brands (PermaNet(r) 2.0, Dawa Plus(r) 2.0 and NetProtect(r)) were purchased from vendors approved by manufacturers.\n", + "\n", + "header: Abbreviations\n", + "\n", + "Cl 95%: Confidence interval 95%: CIO: Collaborative international pesticides analytical council; KD60: Proportion of mosquitoes knocked down at 60 min post-exposure; HPLC: High performance liquid chromatography; IQR: Intra quarter-time; LINK: Long-lasting insecticidal nets; pH: Proportional hole index; MW: World Health Organization; WHOPS: World Health Organization pesticide evaluation scheme; UV: Ultraviolet; PVC: Polyvinyl chloride; CDC: Centers for disease control and prevention; MR: Mortality rate; CNRS: National research on contract for health; OMVS: Senegal river basin development organization; NMC: National malaria control programme; P: Probability; OR: Odd ratio.\n", + "\n", + "header: Conclusions\n", + "\n", + "The evaluation of LLINs after three years of use revealed a loss of integrity of almost all types of nets distributed. Despite this loss of integrity, biological efficacy was maintained for the Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Life Net(r) brands.\n", + "\n", + "header: Physical integrity\n", + "\n", + "At least 83% (95% CI 80-90) of mosquito nets had holes (all types of holes) at the end of the study. Except the Life Net(r), the average number of holes increased with time for all LLINs. For the LLINs inspected in laboratory, at the end of the 6th semester of follow-up, the majority of them had holes, with average proportions of 95.2% 95%, 93.3%, 100% and 60% for Dawa Plus(r) 2.0, NetProtect(r) PermaNet(r) 2.0, Olyset Net(r) and Life Net(r), respectively. The average number of holes remained relatively low for Life Net(r) (Fisher's exact test, OR: 12.02; 95% CI 0.96-684.89, P = 0.027).\n", + "\n", + "At each semester, size 1 holes (Fig. 3) were predominant for all types of mosquito nets. The average number of holes (all types) per mosquito net was 39 per LLIN at the end of six semesters of study. It was 13, 39, 15, 48 and 54 respectively for Life Net(r), NetProtect(r) Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Olyset Net(r), respectively. Only NetProtect(r) and PermaNet(r) 2.0 types were still in good condition at the end of the three-year study (Table 3). Proportions of mosquito nets in good condition in\n", + "\n", + "Figure 2: Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\n", + "households were 71% (NetProtect(r)) and 50% (PernaNet(r) 2.0) in both mosquito nets.\n", + "\n", + "header: Results\n", + "\n", + "A total of 1,249 households were enrolled in both study areas. On average, 92.7% (95% CI 90-94) of heads of households were men, with an average 53 years of age. This average percentage was 78.2% in the Mbagame area with an average age of 52 years (95% CI 49-55) and 94.8% in the villages around Thies with a mean age of 53 years (95% CI 51.6-54.4) (P < 0.001). The average percentage of heads of households with any schooling was 38.4% (95% CI 34-42). The gender breakdown was 96% for men (n = 456) and 4% for women (n = 19).\n", + "\n", + "Of 604 households, 37.7% (228/604) had means of transportation among which 68% (95% CI 61-74) used carts while only 14% (95% CI 8-20) owned cars. The overall average percentage of households with electricity was 31% (95% CI 27-35). In Mbagame village, 87.2% households had electricity compared to an average of 22.6% for the study villages near Thies (_kh_2 = 132.4377, df = 1, P < 0.0001). Wood was the main form of fuel for cooking in 97.7% of households in both study areas.\n", + "\n", + "header: Rate of sampling mosquito nets, retention of LLINs\n", + "\n", + "From the beginning of the study in 2011 to the end in 2014 (6 semesters), 839 mosquito nets (all types) were removed representing 93.2% of the expected 900 LLINs to be removed (Fig. 2, Table 3). Of the 180 mosquito nets of each brand expected to be sampled, 94.4%, 79.4%, 94.4%, 98.9% and 98.3% of the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r), Olyset Net(r) and PermaNet(r) 2.0, respectively, were removed from the field. The number of mosquito nets sampled was less than the 28-30 units expected in the 5th and 6th semester for Life Net(r), and in the 6th semester for Dawa Plus(r) 2.0 and NetProtect(r). At the end of the study, the retention rate of all five LLIN types was 12.5% (95% CI 11.4-13.7) based on the total number of nets distributed and was relatively better for Olyset Net(r) at 20.5% (95% CI 17.8-23.4) and to a lesser extent for Dawa Plus(r) 2.0 with 15.1% (95% CI 12.4-18.2). With more than half of the mosquito nets not found after only two semesters of follow-up, the average percentage of Life Net(r) found in households fell to about one in five mosquito nets distributed remaining in the third semester.\n", + "\n", + "header: Data entry and statistical analysis\n", + "\n", + "Household survey data were entered on EPI data Entry 3.0, exported to Excel Microsoft office 2010 and analysed with R software. The calculation of proportions and averages was done according to the normal law by 95% Confidence Intervals (CI). Comparisons and proportions were made by Chi-squared tests (kh2) of homogeneity. Generalized linear models were performed to understand the relationship between mosquito mortality and LLIN washing and mortality bioassay results and insecticide chemical content. The analysis of the condition of the mosquito net, the values obtained for pHI, the torn surface and its shape was used to establish one of the criteria of durability [28]; a mosquito net was in good condition when the pHI was between 0 and 64, is usable when pHI was in 65-642 and was too torn when the pHI was greater than 643 [30]. The acceptable residual efficacy of each type of LLIN was determined based on WHO criteria [30].\n", + "\n", + "Residual efficacy was optimal if the KD 60 or the mortality rate (MR), defined as the number of dead females\n", + "relative to the total number of mosquitoes exposed per mosquito net was >= 95% or >= 80%, respectively, after 20 washes in the laboratory or after three years of use [28]. The proportion of mosquito nets meeting optimal bio efficacy levels of KD60 and mortality rates were determined for each type of LLINs by performing cone bioassays in the laboratory. A minimal bio-efficacy criteria of >= 75% for KD or >= 50% mortality rate was used to determine the efficacy status of LLINs [28]. The MR was corrected by the Abbott formula [35] if the mortality rate for controls was less than 20% and the bioassay was redone if it was greater than 20%. Generalized linear regression models were run to estimate the relationship in mortality rate between washed and non-washed mosquito nets.\n", + "\n", + "The retention rate was calculated for each type of LLIN at each follow up period. It was defined as the ratio of the number of the original study mosquito nets available in households to the total number of mosquito nets initially distributed. The mosquito nets declared lost but found in the following survey were included in the calculation of the retention rate of the previous semester.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "The data used and analysed during the current study are available from the corresponding author on reasonable request.\n", + "\n", + "header: Table 3 Physical integrity of the LLINs inspected in the laboratory per type and semester after three years\n", + "footer: N: Number of samples \n", + "columns: ['Semesters', 'Types', 'N', 'General State - Good condition - N', 'General State - Good condition - %', 'General State - Serviceable condition - N', 'General State - Serviceable condition - %', 'General State - Tear - N', 'General State - Tear - %']\n", + "\n", + "{\"0\":{\"Semesters\":1,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":21,\"General State - Good condition - %\":70.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":7,\"General State - Tear - %\":23.0},\"1\":{\"Semesters\":1,\"Types\":\"Life Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":28,\"General State - Good condition - %\":93.3,\"General State - Serviceable condition - N\":1,\"General State - Serviceable condition - %\":3.3,\"General State - Tear - N\":1,\"General State - Tear - %\":3.3},\"2\":{\"Semesters\":1,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":26,\"General State - Good condition - %\":86.7,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":4,\"General State - Tear - %\":13.3},\"3\":{\"Semesters\":1,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":13,\"General State - Good condition - %\":43.3,\"General State - Serviceable condition - N\":7,\"General State - Serviceable condition - %\":23.3,\"General State - Tear - N\":10,\"General State - Tear - %\":33.4},\"4\":{\"Semesters\":1,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":19,\"General State - Good condition - %\":63.3,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":11,\"General State - Tear - %\":36.7},\"5\":{\"Semesters\":2,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":18,\"General State - Good condition - %\":60.0,\"General State - Serviceable condition - N\":5,\"General State - Serviceable condition - %\":16.7,\"General State - Tear - N\":7,\"General State - Tear - %\":23.3},\"6\":{\"Semesters\":2,\"Types\":\"Life Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":24,\"General State - Good condition - %\":80.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"7\":{\"Semesters\":2,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":22,\"General State - Good condition - %\":73.3,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":6.7,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"8\":{\"Semesters\":2,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":13,\"General State - Good condition - %\":43.3,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":33.4,\"General State - Tear - N\":7,\"General State - Tear - %\":23.3},\"9\":{\"Semesters\":2,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":28,\"General State - Good condition - N\":10,\"General State - Good condition - %\":35.7,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.1,\"General State - Tear - N\":16,\"General State - Tear - %\":57.2},\"10\":{\"Semesters\":3,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":15,\"General State - Good condition - %\":50.0,\"General State - Serviceable condition - N\":5,\"General State - Serviceable condition - %\":17.0,\"General State - Tear - N\":10,\"General State - Tear - %\":33.0},\"11\":{\"Semesters\":3,\"Types\":\"Life Net\\u00ae\",\"N\":29,\"General State - Good condition - N\":18,\"General State - Good condition - %\":62.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":9,\"General State - Tear - %\":31.0},\"12\":{\"Semesters\":3,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":18,\"General State - Good condition - %\":60.0,\"General State - Serviceable condition - N\":12,\"General State - Serviceable condition - %\":40.0,\"General State - Tear - N\":0,\"General State - Tear - %\":0.0},\"13\":{\"Semesters\":3,\"Types\":\"Olyset Net\\u00ae\",\"N\":28,\"General State - Good condition - N\":7,\"General State - Good condition - %\":25.0,\"General State - Serviceable condition - N\":9,\"General State - Serviceable condition - %\":32.0,\"General State - Tear - N\":12,\"General State - Tear - %\":43.0},\"14\":{\"Semesters\":3,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":19,\"General State - Good condition - %\":63.0,\"General State - Serviceable condition - N\":2,\"General State - Serviceable condition - %\":7.0,\"General State - Tear - N\":9,\"General State - Tear - %\":30.0},\"15\":{\"Semesters\":4,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":30,\"General State - Good condition - N\":1,\"General State - Good condition - %\":3.0,\"General State - Serviceable condition - N\":20,\"General State - Serviceable condition - %\":67.0,\"General State - Tear - N\":9,\"General State - Tear - %\":30.0},\"16\":{\"Semesters\":4,\"Types\":\"Life Net\\u00ae\",\"N\":29,\"General State - Good condition - N\":25,\"General State - Good condition - %\":86.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":1,\"General State - Tear - %\":3.0},\"17\":{\"Semesters\":4,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":14,\"General State - Good condition - %\":47.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":13,\"General State - Tear - %\":43.0},\"18\":{\"Semesters\":4,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":0,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":24,\"General State - Serviceable condition - %\":80.0,\"General State - Tear - N\":6,\"General State - Tear - %\":20.0},\"19\":{\"Semesters\":4,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":11,\"General State - Good condition - %\":37.0,\"General State - Serviceable condition - N\":11,\"General State - Serviceable condition - %\":37.0,\"General State - Tear - N\":8,\"General State - Tear - %\":27.0},\"20\":{\"Semesters\":5,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":29,\"General State - Good condition - N\":10,\"General State - Good condition - %\":34.0,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":34.0,\"General State - Tear - N\":9,\"General State - Tear - %\":31.0},\"21\":{\"Semesters\":5,\"Types\":\"Life Net\\u00ae\",\"N\":15,\"General State - Good condition - N\":15,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":0,\"General State - Tear - %\":0.0},\"22\":{\"Semesters\":5,\"Types\":\"NetProtect\\u00ae\",\"N\":30,\"General State - Good condition - N\":16,\"General State - Good condition - %\":53.0,\"General State - Serviceable condition - N\":3,\"General State - Serviceable condition - %\":10.0,\"General State - Tear - N\":11,\"General State - Tear - %\":37.0},\"23\":{\"Semesters\":5,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":5,\"General State - Good condition - %\":17.0,\"General State - Serviceable condition - N\":18,\"General State - Serviceable condition - %\":60.0,\"General State - Tear - N\":7,\"General State - Tear - %\":23.0},\"24\":{\"Semesters\":5,\"Types\":\"PermaNet\\u00ae 2.0\",\"N\":29,\"General State - Good condition - N\":16,\"General State - Good condition - %\":55.0,\"General State - Serviceable condition - N\":6,\"General State - Serviceable condition - %\":21.0,\"General State - Tear - N\":7,\"General State - Tear - %\":24.0},\"25\":{\"Semesters\":6,\"Types\":\"Dawa Plus\\u00ae 2.0\",\"N\":21,\"General State - Good condition - N\":1,\"General State - Good condition - %\":5.0,\"General State - Serviceable condition - N\":18,\"General State - Serviceable condition - %\":86.0,\"General State - Tear - N\":3,\"General State - Tear - %\":14.0},\"26\":{\"Semesters\":6,\"Types\":\"Life Net\\u00ae\",\"N\":10,\"General State - Good condition - N\":0,\"General State - Good condition - %\":0.0,\"General State - Serviceable condition - N\":0,\"General State - Serviceable condition - %\":0.0,\"General State - Tear - N\":10,\"General State - Tear - %\":100.0},\"27\":{\"Semesters\":6,\"Types\":\"NetProtect\\u00ae\",\"N\":21,\"General State - Good condition - N\":15,\"General State - Good condition - %\":71.0,\"General State - Serviceable condition - N\":1,\"General State - Serviceable condition - %\":5.0,\"General State - Tear - N\":5,\"General State - Tear - %\":24.0},\"28\":{\"Semesters\":6,\"Types\":\"Olyset Net\\u00ae\",\"N\":30,\"General State - Good condition - N\":2,\"General State - Good condition - %\":7.0,\"General State - Serviceable condition - N\":24,\"General State - Serviceable condition - %\":80.0,\"General State - Tear - N\":4,\"General State - Tear - %\":13.0},\"29\":{\"Semesters\":6,\"Types\":\"PermaNet \\u00ae2.0\",\"N\":30,\"General State - Good condition - N\":15,\"General State - Good condition - %\":50.0,\"General State - Serviceable condition - N\":10,\"General State - Serviceable condition - %\":33.0,\"General State - Tear - N\":5,\"General State - Tear - %\":17.0}}\n", + "\n", + "header: Table 5 Multiple regression washing and efficiency of LLINs\n", + "footer: CI: Confidence interval\n", + "columns: ['Parameter - Unnamed: 0_level_1', '95% Cl for odds Ratio - p-value', '95% Cl for odds Ratio - Lower', '95% Cl for odds Ratio - Odds ratio', '95% Cl for odds Ratio - Upper']\n", + "\n", + "{\"0\":{\"Parameter - Unnamed: 0_level_1\":\"Mortality (Intercept)\",\"95% Cl for odds Ratio - p-value\":\"<2.10\\u221216\",\"95% Cl for odds Ratio - Lower\":\"\\u2013\",\"95% Cl for odds Ratio - Odds ratio\":\"\\u2013\",\"95% Cl for odds Ratio - Upper\":\"\\u2013\"},\"1\":{\"Parameter - Unnamed: 0_level_1\":\"Ever Washed\",\"95% Cl for odds Ratio - p-value\":\"2.18 10\\u221211\",\"95% Cl for odds Ratio - Lower\":\"0.89\",\"95% Cl for odds Ratio - Odds ratio\":\"0.91\",\"95% Cl for odds Ratio - Upper\":\"0.94\"},\"2\":{\"Parameter - Unnamed: 0_level_1\":\"Insecticides\",\"95% Cl for odds Ratio - p-value\":\"2 10\\u221216\",\"95% Cl for odds Ratio - Lower\":\"1.0005\",\"95% Cl for odds Ratio - Odds ratio\":\"1.0006\",\"95% Cl for odds Ratio - Upper\":\"1.0007\"}}\n", + "\n", + "header: Physical integrity of LLINs\n", + "\n", + "The condition of each LLIN was checked every six months. Physical integrity of sampled LLINs was assessed in the laboratory by searching for holes or tears on 170 Dawa Plus(r) 2.0, 171 NetProtect(r), 143 Life Net(r), 178 Olyset Net(r) and 177 PermaNet(r) 2.0. Holes were classified as size 1 (0.5-2 cm diameter), size 2 (2-10 cm diameter) or size 3 (diameter > 10 cm) [28]. The proportional hole index (pHI) value was calculated on each LLIN inspected per WHO guidelines [28, 29]. It is the sum of the proportional indexes by categories. The proportional index for a category was the product of the number of holes in category and the index attributed to that size:\n", + "\n", + "\\[\\begin{array}{l} {\\text{pH}} \\equiv \\neq \\text{size}\\;1\\;\\text{holes}\\;\\times\\;1+(\\text{\\#size}\\;2\\;\\text{holes}\\; \\times\\;23)\\\\ {}\n", + "\n", + "\n", + "\n", + "{\n", + "\n", + "\n", + "sampling pattern recommended by WHOPES [28]. For all the net samples, insecticide from five swatches of all the four sides and one from the top were extracted and analysed. Each specimen was trimmed to a 10 cm x 10 cm square (0.010m2) using a die cutting in a pneumatic press. During the cutting operation, each specimen was sandwiched between layers of aluminum foil to prevent cross-contamination. The specimen set from each net was analysed as a group to yield an average value of insecticide concentration for the whole net. Chemical analysis was based on methods published by the Collaborative International Pesticides Analytical Council (CIPAC). Deltamethrin analysis of PermaNet(r)2.0 and Dawa Plus(r) samples was based on CIPAC Method 333 [32-34].\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: PermaNet(r) 2.0 and Dawa Plus(r) 2.0: Life Net(r) and NetProtect(r)\n", + "\n", + "Each specimen set was weighed and placed in a 250 ml round-bottom boiling flask followed by the addition of 95 ml of xylene and 5 ml of a known concentration of internal standard dipropyl phthalate, (2 mg/ml). The flask was fitted with a reflux condenser and heated to boiling for 30 min. After cooling, approximately 2.5 ml of the extract was filtered and transferred to a glass tube and evaporated to dryness under a stream of dry nitrogen for 30 min at 60 degC. A known volume (0.75 ml) of the mobile phase (94/6 (v/v) isooctane/1, 4-dioxane) was used to reconstitute the residue and was transferred to a sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter. The filtrate was centrifuged (500g) for 2 min and transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Extraction of permethrin for Olyset Net(r)\n", + "\n", + "Permethrin analysis of Olyset Net(r) samples was based on CIPAC Method 331 [31]. Each specimen set was weighed and placed in a 100 ml round-bottom boiling flask, followed by heptane (45 ml) and triphenyl phosphate internal standard (5.0 ml of known concentration in heptane). The flask was fitted with a reflux condenser and heated to boiling for 45 min. After cooling, approximately 1.5 ml of the extract was transferred to a chromatographic sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Gas chromatography analysis\n", + "\n", + "The extracts were analysed using an Agilent 6890 N chromatograph fitted with a 30 m x 0.25 mm (i.d.) fused silica DB-1 capillary column coated with 0.25 mm cross linked polydimethylsiloxane stationary phase. Ultra-high purity nitrogen (1.2 ml/min) was used as the carrier gas. Injector port, column oven, and detector temperatures were 265 degC, 240 degC, and 300 degC, respectively. Flame ionization (FID) was used for analyte detection. Two injections were used for each sample and the results averaged. Permethrin concentration was calculated by comparing permethrin/triphenyl phosphate peak area ratios against a calibration curve generated from solutions containing known permethrin /triphenyl phosphate mass ratios.\n", + "\n", + "header: Extraction of deltamethrin\n", + "\n", + "Each specimen set was weighed and placed in a 125 ml screw capped Erlenmeyer flask and 50 ml of the extraction solvent mixture was added making sure that the net was completely submerged in the mixture. The flask was tightly capped and sealed with paraffin film before placing in an ultrasonic bath for 15 min. Later the flask was shaken in a bath at 25 degC for 30 min at a frequency of 155 cycles per min. The extract was transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Author details\n", + "\n", + "- Laboratoire d'Ecologie Vectorieile et Parastaire, Département de Biologie Animal, Faculte Des Sciences et Techniques, Universite Cheikh Anta Diop, Dakar, Senegal. 2institut Pasteur de Dakar, Dakar, Senegal. 3Laboratoire de Télédétection Appliquee, (ITA/IST/FST/UCAD, Dakar, Senegal. 4Division of Parabolic Diseases and Malaria, Centers for Disease Control (CDC) and Prevention, Atlanta, GA, USA.\n", + "\n", + "header: Mosquito net coverage\n", + "\n", + "A total of 3012 nets were distributed in 1249 households (Table 2). The overall average household coverage, 94% (95% CI 92.68-95.3), was 68.2% (95% CI 63.63-72.77) and 92% (95% CI 90-94) in Mbagame and Thies area villages, respectively. Moreover, the average percentage of households receiving only one mosquito net was 26% (95% CI 23-28) in all areas. The average percentage of households in Mbagame and Thies receiving only one mosquito net was estimated as 41.8% (95% CI 36.9-46.8) and 17.4% (95% CI 15-20.6), respectively.\n", + "\n", + "The global coverage of sleeping spaces (3,012/3,840) was 78% (95% CI 77-78). However, the sleeping space coverage in Mbagame area was estimated at 68.2% (95% CI: 65-70), and 95.3% (95% CI 94-96) in the villages surrounding Thies.\n", + "\n", + "header: Abbreviations\n", + "\n", + "Cl 95%: Confidence interval 95%: CIO: Collaborative international pesticides analytical council; KD60: Proportion of mosquitoes knocked down at 60 min post-exposure; HPLC: High performance liquid chromatography; IQR: Intra quarter-time; LINK: Long-lasting insecticidal nets; pH: Proportional hole index; MW: World Health Organization; WHOPS: World Health Organization pesticide evaluation scheme; UV: Ultraviolet; PVC: Polyvinyl chloride; CDC: Centers for disease control and prevention; MR: Mortality rate; CNRS: National research on contract for health; OMVS: Senegal river basin development organization; NMC: National malaria control programme; P: Probability; OR: Odd ratio.\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Results\n", + "\n", + "A total of 1,249 households were enrolled in both study areas. On average, 92.7% (95% CI 90-94) of heads of households were men, with an average 53 years of age. This average percentage was 78.2% in the Mbagame area with an average age of 52 years (95% CI 49-55) and 94.8% in the villages around Thies with a mean age of 53 years (95% CI 51.6-54.4) (P < 0.001). The average percentage of heads of households with any schooling was 38.4% (95% CI 34-42). The gender breakdown was 96% for men (n = 456) and 4% for women (n = 19).\n", + "\n", + "Of 604 households, 37.7% (228/604) had means of transportation among which 68% (95% CI 61-74) used carts while only 14% (95% CI 8-20) owned cars. The overall average percentage of households with electricity was 31% (95% CI 27-35). In Mbagame village, 87.2% households had electricity compared to an average of 22.6% for the study villages near Thies (_kh_2 = 132.4377, df = 1, P < 0.0001). Wood was the main form of fuel for cooking in 97.7% of households in both study areas.\n", + "\n", + "header: Methods\n", + "\n", + "A total of five brands of LLINs were distributed to households: NetProtect(r), PermaNet(r) 2.0, Dawa Plus(r) 2.0, Olyset Net(r) and Life Net(r) (Table 1). NetProtect(r) mosquito nets were white, rectangular (length = 190, width = 180 and height = 150 cm) made of 118 denier polyethylene mono filaments and 136 holes/in2 mesh. PermaNet(r) 2.0 mosquito nets were white, rectangular (length = 190, width = 180 and height = 200 cm), made with 75 denier polyester filament tulle and 156 holes/inch2 mesh. Dawa Plus(r) 2.0 were white, rectangular (length = 200, width = 160 and height = 180 cm), made of polyester multi-filament tulle, 75 deniers and 156 holes/inch2 mesh. Olyset Net(r) were white, conical (circumference 1250 cm, height = 250 cm), made with a denier polyethylene mono filament tulle greater than 150 cm and 56 holes/inch2 mesh. Life Net(r) nets were the only mosquito nets made from polypropylene, they were white, rectangular (length = 190, width = 180 and height = 150 cm) made with multi-filament tulle with 110 denier and 156 holes/inch2 mesh.\n", + "\n", + "Aside from the Olyset Net(r) mosquito nets which were treated with permethrin, all other nets distributed were impregnated with deltamethrin. Olyset Net(r) and Life Net(r) were donated by OMVS (Senegal River Basin Development Organization) and BAYER AG (Germany),\n", + "respectively, while the three other brands (PermaNet(r) 2.0, Dawa Plus(r) 2.0 and NetProtect(r)) were purchased from vendors approved by manufacturers.\n", + "\n", + "header: Competing interests\n", + "\n", + "The authors declare that they have no competing interests.\n", + "\n", + "header: High performance liquid chromatography (HPLC) analysis\n", + "\n", + "The deltamethrin content was analysed using Agilent 1200 HPLC equipped with a UV detector set at 230 nm and a 150 x 4.6 mm (i.d.) Ascents Si 5 mm column held at 40 degC. The mobile phase was 94/6 (v/v) isooctane/1, 4-dioxane with a flow rate of 1.5 ml/min. For each extract, three injections of 20 ml were made. Injections, calibrations, and quantification of the deltamethrin content were followed as per the procedure in the Collaborative International Pesticides Analytical Council (CIPAC) 333 [32-34].\n", + "\n", + "header: Funding\n", + "\n", + "- This work was supported by President's Malaria Initiative and Universite Cheikh Anta Diop (Dakar).\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "The data used and analysed during the current study are available from the corresponding author on reasonable request.\n", + "\n", + "header: Physical integrity\n", + "\n", + "At least 83% (95% CI 80-90) of mosquito nets had holes (all types of holes) at the end of the study. Except the Life Net(r), the average number of holes increased with time for all LLINs. For the LLINs inspected in laboratory, at the end of the 6th semester of follow-up, the majority of them had holes, with average proportions of 95.2% 95%, 93.3%, 100% and 60% for Dawa Plus(r) 2.0, NetProtect(r) PermaNet(r) 2.0, Olyset Net(r) and Life Net(r), respectively. The average number of holes remained relatively low for Life Net(r) (Fisher's exact test, OR: 12.02; 95% CI 0.96-684.89, P = 0.027).\n", + "\n", + "At each semester, size 1 holes (Fig. 3) were predominant for all types of mosquito nets. The average number of holes (all types) per mosquito net was 39 per LLIN at the end of six semesters of study. It was 13, 39, 15, 48 and 54 respectively for Life Net(r), NetProtect(r) Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Olyset Net(r), respectively. Only NetProtect(r) and PermaNet(r) 2.0 types were still in good condition at the end of the three-year study (Table 3). Proportions of mosquito nets in good condition in\n", + "\n", + "Figure 2: Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\n", + "households were 71% (NetProtect(r)) and 50% (PernaNet(r) 2.0) in both mosquito nets.\n", + "\n", + "header: Data entry and statistical analysis\n", + "\n", + "Household survey data were entered on EPI data Entry 3.0, exported to Excel Microsoft office 2010 and analysed with R software. The calculation of proportions and averages was done according to the normal law by 95% Confidence Intervals (CI). Comparisons and proportions were made by Chi-squared tests (kh2) of homogeneity. Generalized linear models were performed to understand the relationship between mosquito mortality and LLIN washing and mortality bioassay results and insecticide chemical content. The analysis of the condition of the mosquito net, the values obtained for pHI, the torn surface and its shape was used to establish one of the criteria of durability [28]; a mosquito net was in good condition when the pHI was between 0 and 64, is usable when pHI was in 65-642 and was too torn when the pHI was greater than 643 [30]. The acceptable residual efficacy of each type of LLIN was determined based on WHO criteria [30].\n", + "\n", + "Residual efficacy was optimal if the KD 60 or the mortality rate (MR), defined as the number of dead females\n", + "relative to the total number of mosquitoes exposed per mosquito net was >= 95% or >= 80%, respectively, after 20 washes in the laboratory or after three years of use [28]. The proportion of mosquito nets meeting optimal bio efficacy levels of KD60 and mortality rates were determined for each type of LLINs by performing cone bioassays in the laboratory. A minimal bio-efficacy criteria of >= 75% for KD or >= 50% mortality rate was used to determine the efficacy status of LLINs [28]. The MR was corrected by the Abbott formula [35] if the mortality rate for controls was less than 20% and the bioassay was redone if it was greater than 20%. Generalized linear regression models were run to estimate the relationship in mortality rate between washed and non-washed mosquito nets.\n", + "\n", + "The retention rate was calculated for each type of LLIN at each follow up period. It was defined as the ratio of the number of the original study mosquito nets available in households to the total number of mosquito nets initially distributed. The mosquito nets declared lost but found in the following survey were included in the calculation of the retention rate of the previous semester.\n", + "\n", + "header: Rate of sampling mosquito nets, retention of LLINs\n", + "\n", + "From the beginning of the study in 2011 to the end in 2014 (6 semesters), 839 mosquito nets (all types) were removed representing 93.2% of the expected 900 LLINs to be removed (Fig. 2, Table 3). Of the 180 mosquito nets of each brand expected to be sampled, 94.4%, 79.4%, 94.4%, 98.9% and 98.3% of the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r), Olyset Net(r) and PermaNet(r) 2.0, respectively, were removed from the field. The number of mosquito nets sampled was less than the 28-30 units expected in the 5th and 6th semester for Life Net(r), and in the 6th semester for Dawa Plus(r) 2.0 and NetProtect(r). At the end of the study, the retention rate of all five LLIN types was 12.5% (95% CI 11.4-13.7) based on the total number of nets distributed and was relatively better for Olyset Net(r) at 20.5% (95% CI 17.8-23.4) and to a lesser extent for Dawa Plus(r) 2.0 with 15.1% (95% CI 12.4-18.2). With more than half of the mosquito nets not found after only two semesters of follow-up, the average percentage of Life Net(r) found in households fell to about one in five mosquito nets distributed remaining in the third semester.\n", + "\n", + "header: Mortality rate associated with insecticide content\n", + "\n", + "Residual efficacy greater than 95% knock down was probably correlated with the content of insecticide. The overall correlation coefficients were: r = 0.08, r = 0.08, r = 0.22, r = 0.09 and r = 0.08 for Dawa Plus(r) 2.0, NetProtect(r) Life Net(r), Olyset Net(r) and PermaNet(r) 2.0, respectively (Fig. 5). For mortality rate, the correlation coefficient was more important for Life Net(r)(r = 0.43) when compared to other LLIN types.\n", + "\n", + "The generalized linear regression models have indicated that the mortality rate was significantly decreased with washing mosquito nets (Table 5). A significant difference (p < 0.001) in mortality rate was observed between washed and unwashed mosquito nets. This mortality rate was also associated with the average the amount of insecticide content present on the net.\n", + "\n", + "header: Conclusions\n", + "\n", + "The evaluation of LLINs after three years of use revealed a loss of integrity of almost all types of nets distributed. Despite this loss of integrity, biological efficacy was maintained for the Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Life Net(r) brands.\n", + "\n", + "header: Use and maintenance of LLINs\n", + "\n", + "The regular use of the mosquito nets (use the night before the survey) at the end of the follow up was 23.3%, 38.5%, 7.3%, 78.3% and 16.1% for the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r) Olyset Net(r) and PermaNet(r) 2.0 types, respectively. For the NetProtect(r) this rate was statistically lower compared to the Life Net(r) and Olyset Net(r) (Fisher's exact test, OR: 0.13; 95% CI: 0.017-0.83, P = 0.014; Fisher's exact test, OR: 0.022; 95% CI 0.017-0.83, P < 0.001).\n", + "\n", + "Dawa Plus(r) 2.0 and PermaNet(r) 2.0 used the night before the survey consistently exceeded 50% during the first four semesters. For Olyset Net(r), this rate was always above 60% during the three years of follow-up. In contrast, the NetProtect(r) and Life Net(r) types were the least used in households. Their regular use rates were only satisfactory in the first two semesters following LLINs distribution, with 52.6% (95% CI 47.7-57.5) for NetProtect(r) in semester one and 53% (95% CI 46-59.6) for Life Net(r) in the second.\n", + "\n", + "For all LLIN types distributed, only 19% (95% CI 18-20) were washed. The results obtained with washing habits showed that 66% (95% CI 64-69) of the washed mosquito nets were washed with warm water. In addition, 73% (95% CI 71-76) of the cases used local soap and 50% of the mosquito net was dried in shade after the washing.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Country\":\"Senegal\",\"Site\":\"Mbagame\",\"Start_month\":1,\"Start_year\":2011,\"End_month\":12,\"End_year\":2014},\"S02\":{\"Country\":\"Senegal\",\"Site\":\"Thies\",\"Start_month\":1,\"Start_year\":2011,\"End_month\":12,\"End_year\":2014}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"NetProtect(r)\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":39.0,\"pHI_category\":\"Good\"},\"N02\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":48.0,\"pHI_category\":\"Good\"},\"N03\":{\"Net_type\":\"Dawa Plus(r) 2.0\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":15.0,\"pHI_category\":\"Good\"},\"N04\":{\"Net_type\":\"Olyset Net(r)\",\"Insecticide\":\"Permethrin\",\"Net_washed\":19.0,\"Net_holed\":54.0,\"pHI_category\":\"Good\"},\"N05\":{\"Net_type\":\"Life Net(r)\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":13.0,\"pHI_category\":\"Good\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: PermaNet(r) 2.0 and Dawa Plus(r) 2.0: Life Net(r) and NetProtect(r)\n", + "\n", + "Each specimen set was weighed and placed in a 250 ml round-bottom boiling flask followed by the addition of 95 ml of xylene and 5 ml of a known concentration of internal standard dipropyl phthalate, (2 mg/ml). The flask was fitted with a reflux condenser and heated to boiling for 30 min. After cooling, approximately 2.5 ml of the extract was filtered and transferred to a glass tube and evaporated to dryness under a stream of dry nitrogen for 30 min at 60 degC. A known volume (0.75 ml) of the mobile phase (94/6 (v/v) isooctane/1, 4-dioxane) was used to reconstitute the residue and was transferred to a sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter. The filtrate was centrifuged (500g) for 2 min and transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Extraction of permethrin for Olyset Net(r)\n", + "\n", + "Permethrin analysis of Olyset Net(r) samples was based on CIPAC Method 331 [31]. Each specimen set was weighed and placed in a 100 ml round-bottom boiling flask, followed by heptane (45 ml) and triphenyl phosphate internal standard (5.0 ml of known concentration in heptane). The flask was fitted with a reflux condenser and heated to boiling for 45 min. After cooling, approximately 1.5 ml of the extract was transferred to a chromatographic sample vial using a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Extraction of deltamethrin\n", + "\n", + "Each specimen set was weighed and placed in a 125 ml screw capped Erlenmeyer flask and 50 ml of the extraction solvent mixture was added making sure that the net was completely submerged in the mixture. The flask was tightly capped and sealed with paraffin film before placing in an ultrasonic bath for 15 min. Later the flask was shaken in a bath at 25 degC for 30 min at a frequency of 155 cycles per min. The extract was transferred into a chromatographic vial after filtering through a glass syringe fitted with a 0.45 mm reconstituted cellulose syringe filter.\n", + "\n", + "header: Gas chromatography analysis\n", + "\n", + "The extracts were analysed using an Agilent 6890 N chromatograph fitted with a 30 m x 0.25 mm (i.d.) fused silica DB-1 capillary column coated with 0.25 mm cross linked polydimethylsiloxane stationary phase. Ultra-high purity nitrogen (1.2 ml/min) was used as the carrier gas. Injector port, column oven, and detector temperatures were 265 degC, 240 degC, and 300 degC, respectively. Flame ionization (FID) was used for analyte detection. Two injections were used for each sample and the results averaged. Permethrin concentration was calculated by comparing permethrin/triphenyl phosphate peak area ratios against a calibration curve generated from solutions containing known permethrin /triphenyl phosphate mass ratios.\n", + "\n", + "header: Mosquito net coverage\n", + "\n", + "A total of 3012 nets were distributed in 1249 households (Table 2). The overall average household coverage, 94% (95% CI 92.68-95.3), was 68.2% (95% CI 63.63-72.77) and 92% (95% CI 90-94) in Mbagame and Thies area villages, respectively. Moreover, the average percentage of households receiving only one mosquito net was 26% (95% CI 23-28) in all areas. The average percentage of households in Mbagame and Thies receiving only one mosquito net was estimated as 41.8% (95% CI 36.9-46.8) and 17.4% (95% CI 15-20.6), respectively.\n", + "\n", + "The global coverage of sleeping spaces (3,012/3,840) was 78% (95% CI 77-78). However, the sleeping space coverage in Mbagame area was estimated at 68.2% (95% CI: 65-70), and 95.3% (95% CI 94-96) in the villages surrounding Thies.\n", + "\n", + "header: Methods\n", + "\n", + "A total of five brands of LLINs were distributed to households: NetProtect(r), PermaNet(r) 2.0, Dawa Plus(r) 2.0, Olyset Net(r) and Life Net(r) (Table 1). NetProtect(r) mosquito nets were white, rectangular (length = 190, width = 180 and height = 150 cm) made of 118 denier polyethylene mono filaments and 136 holes/in2 mesh. PermaNet(r) 2.0 mosquito nets were white, rectangular (length = 190, width = 180 and height = 200 cm), made with 75 denier polyester filament tulle and 156 holes/inch2 mesh. Dawa Plus(r) 2.0 were white, rectangular (length = 200, width = 160 and height = 180 cm), made of polyester multi-filament tulle, 75 deniers and 156 holes/inch2 mesh. Olyset Net(r) were white, conical (circumference 1250 cm, height = 250 cm), made with a denier polyethylene mono filament tulle greater than 150 cm and 56 holes/inch2 mesh. Life Net(r) nets were the only mosquito nets made from polypropylene, they were white, rectangular (length = 190, width = 180 and height = 150 cm) made with multi-filament tulle with 110 denier and 156 holes/inch2 mesh.\n", + "\n", + "Aside from the Olyset Net(r) mosquito nets which were treated with permethrin, all other nets distributed were impregnated with deltamethrin. Olyset Net(r) and Life Net(r) were donated by OMVS (Senegal River Basin Development Organization) and BAYER AG (Germany),\n", + "respectively, while the three other brands (PermaNet(r) 2.0, Dawa Plus(r) 2.0 and NetProtect(r)) were purchased from vendors approved by manufacturers.\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Author details\n", + "\n", + "- Laboratoire d'Ecologie Vectorieile et Parastaire, Département de Biologie Animal, Faculte Des Sciences et Techniques, Universite Cheikh Anta Diop, Dakar, Senegal. 2institut Pasteur de Dakar, Dakar, Senegal. 3Laboratoire de Télédétection Appliquee, (ITA/IST/FST/UCAD, Dakar, Senegal. 4Division of Parabolic Diseases and Malaria, Centers for Disease Control (CDC) and Prevention, Atlanta, GA, USA.\n", + "\n", + "header: Results\n", + "\n", + "A total of 1,249 households were enrolled in both study areas. On average, 92.7% (95% CI 90-94) of heads of households were men, with an average 53 years of age. This average percentage was 78.2% in the Mbagame area with an average age of 52 years (95% CI 49-55) and 94.8% in the villages around Thies with a mean age of 53 years (95% CI 51.6-54.4) (P < 0.001). The average percentage of heads of households with any schooling was 38.4% (95% CI 34-42). The gender breakdown was 96% for men (n = 456) and 4% for women (n = 19).\n", + "\n", + "Of 604 households, 37.7% (228/604) had means of transportation among which 68% (95% CI 61-74) used carts while only 14% (95% CI 8-20) owned cars. The overall average percentage of households with electricity was 31% (95% CI 27-35). In Mbagame village, 87.2% households had electricity compared to an average of 22.6% for the study villages near Thies (_kh_2 = 132.4377, df = 1, P < 0.0001). Wood was the main form of fuel for cooking in 97.7% of households in both study areas.\n", + "\n", + "header: Abbreviations\n", + "\n", + "Cl 95%: Confidence interval 95%: CIO: Collaborative international pesticides analytical council; KD60: Proportion of mosquitoes knocked down at 60 min post-exposure; HPLC: High performance liquid chromatography; IQR: Intra quarter-time; LINK: Long-lasting insecticidal nets; pH: Proportional hole index; MW: World Health Organization; WHOPS: World Health Organization pesticide evaluation scheme; UV: Ultraviolet; PVC: Polyvinyl chloride; CDC: Centers for disease control and prevention; MR: Mortality rate; CNRS: National research on contract for health; OMVS: Senegal river basin development organization; NMC: National malaria control programme; P: Probability; OR: Odd ratio.\n", + "\n", + "header: Competing interests\n", + "\n", + "The authors declare that they have no competing interests.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "The data used and analysed during the current study are available from the corresponding author on reasonable request.\n", + "\n", + "header: High performance liquid chromatography (HPLC) analysis\n", + "\n", + "The deltamethrin content was analysed using Agilent 1200 HPLC equipped with a UV detector set at 230 nm and a 150 x 4.6 mm (i.d.) Ascents Si 5 mm column held at 40 degC. The mobile phase was 94/6 (v/v) isooctane/1, 4-dioxane with a flow rate of 1.5 ml/min. For each extract, three injections of 20 ml were made. Injections, calibrations, and quantification of the deltamethrin content were followed as per the procedure in the Collaborative International Pesticides Analytical Council (CIPAC) 333 [32-34].\n", + "\n", + "header: Rate of sampling mosquito nets, retention of LLINs\n", + "\n", + "From the beginning of the study in 2011 to the end in 2014 (6 semesters), 839 mosquito nets (all types) were removed representing 93.2% of the expected 900 LLINs to be removed (Fig. 2, Table 3). Of the 180 mosquito nets of each brand expected to be sampled, 94.4%, 79.4%, 94.4%, 98.9% and 98.3% of the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r), Olyset Net(r) and PermaNet(r) 2.0, respectively, were removed from the field. The number of mosquito nets sampled was less than the 28-30 units expected in the 5th and 6th semester for Life Net(r), and in the 6th semester for Dawa Plus(r) 2.0 and NetProtect(r). At the end of the study, the retention rate of all five LLIN types was 12.5% (95% CI 11.4-13.7) based on the total number of nets distributed and was relatively better for Olyset Net(r) at 20.5% (95% CI 17.8-23.4) and to a lesser extent for Dawa Plus(r) 2.0 with 15.1% (95% CI 12.4-18.2). With more than half of the mosquito nets not found after only two semesters of follow-up, the average percentage of Life Net(r) found in households fell to about one in five mosquito nets distributed remaining in the third semester.\n", + "\n", + "header: Physical integrity\n", + "\n", + "At least 83% (95% CI 80-90) of mosquito nets had holes (all types of holes) at the end of the study. Except the Life Net(r), the average number of holes increased with time for all LLINs. For the LLINs inspected in laboratory, at the end of the 6th semester of follow-up, the majority of them had holes, with average proportions of 95.2% 95%, 93.3%, 100% and 60% for Dawa Plus(r) 2.0, NetProtect(r) PermaNet(r) 2.0, Olyset Net(r) and Life Net(r), respectively. The average number of holes remained relatively low for Life Net(r) (Fisher's exact test, OR: 12.02; 95% CI 0.96-684.89, P = 0.027).\n", + "\n", + "At each semester, size 1 holes (Fig. 3) were predominant for all types of mosquito nets. The average number of holes (all types) per mosquito net was 39 per LLIN at the end of six semesters of study. It was 13, 39, 15, 48 and 54 respectively for Life Net(r), NetProtect(r) Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Olyset Net(r), respectively. Only NetProtect(r) and PermaNet(r) 2.0 types were still in good condition at the end of the three-year study (Table 3). Proportions of mosquito nets in good condition in\n", + "\n", + "Figure 2: Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\n", + "households were 71% (NetProtect(r)) and 50% (PernaNet(r) 2.0) in both mosquito nets.\n", + "\n", + "header: Funding\n", + "\n", + "- This work was supported by President's Malaria Initiative and Universite Cheikh Anta Diop (Dakar).\n", + "\n", + "header: Mortality rate associated with insecticide content\n", + "\n", + "Residual efficacy greater than 95% knock down was probably correlated with the content of insecticide. The overall correlation coefficients were: r = 0.08, r = 0.08, r = 0.22, r = 0.09 and r = 0.08 for Dawa Plus(r) 2.0, NetProtect(r) Life Net(r), Olyset Net(r) and PermaNet(r) 2.0, respectively (Fig. 5). For mortality rate, the correlation coefficient was more important for Life Net(r)(r = 0.43) when compared to other LLIN types.\n", + "\n", + "The generalized linear regression models have indicated that the mortality rate was significantly decreased with washing mosquito nets (Table 5). A significant difference (p < 0.001) in mortality rate was observed between washed and unwashed mosquito nets. This mortality rate was also associated with the average the amount of insecticide content present on the net.\n", + "\n", + "header: Conclusions\n", + "\n", + "The evaluation of LLINs after three years of use revealed a loss of integrity of almost all types of nets distributed. Despite this loss of integrity, biological efficacy was maintained for the Dawa Plus(r) 2.0, PermaNet(r) 2.0 and Life Net(r) brands.\n", + "\n", + "header: Use and maintenance of LLINs\n", + "\n", + "The regular use of the mosquito nets (use the night before the survey) at the end of the follow up was 23.3%, 38.5%, 7.3%, 78.3% and 16.1% for the Dawa Plus(r) 2.0, Life Net(r), NetProtect(r) Olyset Net(r) and PermaNet(r) 2.0 types, respectively. For the NetProtect(r) this rate was statistically lower compared to the Life Net(r) and Olyset Net(r) (Fisher's exact test, OR: 0.13; 95% CI: 0.017-0.83, P = 0.014; Fisher's exact test, OR: 0.022; 95% CI 0.017-0.83, P < 0.001).\n", + "\n", + "Dawa Plus(r) 2.0 and PermaNet(r) 2.0 used the night before the survey consistently exceeded 50% during the first four semesters. For Olyset Net(r), this rate was always above 60% during the three years of follow-up. In contrast, the NetProtect(r) and Life Net(r) types were the least used in households. Their regular use rates were only satisfactory in the first two semesters following LLINs distribution, with 52.6% (95% CI 47.7-57.5) for NetProtect(r) in semester one and 53% (95% CI 46-59.6) for Life Net(r) in the second.\n", + "\n", + "For all LLIN types distributed, only 19% (95% CI 18-20) were washed. The results obtained with washing habits showed that 66% (95% CI 64-69) of the washed mosquito nets were washed with warm water. In addition, 73% (95% CI 71-76) of the cases used local soap and 50% of the mosquito net was dried in shade after the washing.\n", + "\n", + "header: Data entry and statistical analysis\n", + "\n", + "Household survey data were entered on EPI data Entry 3.0, exported to Excel Microsoft office 2010 and analysed with R software. The calculation of proportions and averages was done according to the normal law by 95% Confidence Intervals (CI). Comparisons and proportions were made by Chi-squared tests (kh2) of homogeneity. Generalized linear models were performed to understand the relationship between mosquito mortality and LLIN washing and mortality bioassay results and insecticide chemical content. The analysis of the condition of the mosquito net, the values obtained for pHI, the torn surface and its shape was used to establish one of the criteria of durability [28]; a mosquito net was in good condition when the pHI was between 0 and 64, is usable when pHI was in 65-642 and was too torn when the pHI was greater than 643 [30]. The acceptable residual efficacy of each type of LLIN was determined based on WHO criteria [30].\n", + "\n", + "Residual efficacy was optimal if the KD 60 or the mortality rate (MR), defined as the number of dead females\n", + "relative to the total number of mosquitoes exposed per mosquito net was >= 95% or >= 80%, respectively, after 20 washes in the laboratory or after three years of use [28]. The proportion of mosquito nets meeting optimal bio efficacy levels of KD60 and mortality rates were determined for each type of LLINs by performing cone bioassays in the laboratory. A minimal bio-efficacy criteria of >= 75% for KD or >= 50% mortality rate was used to determine the efficacy status of LLINs [28]. The MR was corrected by the Abbott formula [35] if the mortality rate for controls was less than 20% and the bioassay was redone if it was greater than 20%. Generalized linear regression models were run to estimate the relationship in mortality rate between washed and non-washed mosquito nets.\n", + "\n", + "The retention rate was calculated for each type of LLIN at each follow up period. It was defined as the ratio of the number of the original study mosquito nets available in households to the total number of mosquito nets initially distributed. The mosquito nets declared lost but found in the following survey were included in the calculation of the retention rate of the previous semester.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Country\":\"Senegal\",\"Site\":\"Mbagame\",\"Start_month\":1,\"Start_year\":2011,\"End_month\":12,\"End_year\":2014},\"S02\":{\"Country\":\"Senegal\",\"Site\":\"Thies\",\"Start_month\":1,\"Start_year\":2011,\"End_month\":12,\"End_year\":2014}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"NetProtect(r)\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":39.0,\"pHI_category\":\"Good\"},\"N02\":{\"Net_type\":\"PermaNet(r) 2.0\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":48.0,\"pHI_category\":\"Good\"},\"N03\":{\"Net_type\":\"Dawa Plus(r) 2.0\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":15.0,\"pHI_category\":\"Good\"},\"N04\":{\"Net_type\":\"Olyset Net(r)\",\"Insecticide\":\"Permethrin\",\"Net_washed\":19.0,\"Net_holed\":54.0,\"pHI_category\":\"Good\"},\"N05\":{\"Net_type\":\"Life Net(r)\",\"Insecticide\":\"Deltamethrin\",\"Net_washed\":19.0,\"Net_holed\":13.0,\"pHI_category\":\"Good\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: 3.2.1 Indoor Resting Density, Human Blood Index and Biting Rate: 3.2.2 Estimation of Sporozoite Infection Rate\n", + "\n", + "A total of 36 out of 66 heads/thoraces were positive for _P. falciparum_ (F\\({}_{+}\\) = 36), corresponding to an unusually high sporozoite rate of 54.55% \\(\\pm\\) 13.63. Validation of the TaqMan results using nested PCR [34] confirmed the _P. falciparum_ infection in the 36 samples.\n", + "\n", + "header: Composition of the Mosquito Species Collected Indoor: Entomological and Parasitological Parameters of Transmission\n", + "\n", + "The indoor resting density of the _An. funestus_ was estimated as 14 from the 112 blood females collected in eight houses. Analysis of the blood source of these 112 females by PCR revealed that they all fed on human blood, leading to a human blood index of 100%. The human biting rate was estimated as ~5.3 bites per person per night (CI: 4.91-5.69).\n", + "\n", + "header: Estimation of Entomological and Parasitological Parameters\n", + "\n", + "The indoor resting density (IRD) was calculated from the number of _An. funestus_ collected on the 4th d, relative to the number of houses assessed, as advised by the WHO [30; 31]. A total of 112 blood-fed females were dissected <48 h after collection, separating heads/thoraces from the abdomens. The abdomens were used for gDNA extraction as outlined in WHO guidelines [30] using the DNeasy Blood and Tissue Kit (QIAGEN, Hilden, Germany), according to manufacturer's protocol. Identification of the source of blood was conducted using the cocktail PCR of Kent et al. [32]. The human blood index was calculated from the number of females that have fed on humans, relative to the total number of females caught [30; 31]. The human biting rate was estimated from the number of the females that have fed on humans, relative to the total number of people in the houses sampled.\n", + "\n", + "header: 2.3.1 Estimation of Indoor Resting Density, Human Blood Index and Biting Rate: 2.3.2 Estimation of Sporozoite Rate\n", + "\n", + "Sixty-six females (22 individuals randomly selected from each of the three days of indoor collection) which laid eggs successfully were dissected, and the heads/thoraces separated from the abdomens immediately, as explained above. The presence of sporozoite was investigated using a TaqMan genotyping protocol, established by Bass and colleagues [33]. Real-time PCR MX 3005 (Agilent, Santa Clara, CA, USA) was used for the amplification. A total of 1 uL of gDNA, extracted from each female head/thorax, was used for PCR, with an initial denaturation at 95 \\({}^{\\circ}\\)C for 10 min, followed by 40 cycles each of 15 s at 95 \\({}^{\\circ}\\)C and 1 min at 60 \\({}^{\\circ}\\)C. Primers described by Bass (PlasF_GCTTAGTTACGATTAATAGGAGTAGCTTG and PlasR_GAAAATCTAAGAATTTCAC CTCTGACA) were used, together with two probes labelled with fluorophores, FAM (Falcip+_TCTGAAT ACGAATGTC) to detect _Plasmodium falciparum_, and HEX (OVM+_CTGAATACAAATGCC) to detect the combination of _P. ovale_, _P. vivax_ and _P. malariae_. Positive controls (known FAM+ and OVM+) were used, in addition to a negative control, in which 1 uL of ddH2O was added. To validate findings of the TaqMan assay, a nested PCR of Snounou et al. [34] was carried out, using all the samples that tested positive with TaqMan. The sporozoite rate was calculated as the percentage of females positive, relative to the total number of the females examined [30].\n", + "\n", + "header: Synergist Bioassay with Piperonyl Butoxide (PBO) and Diethyl Malate\n", + "\n", + "To investigate the potential role of P450 monooxygenases in pyrethroid resistance, a synergist bioassay was carried out using 4% PBO [an inhibitor of CYP450s [38]] against permethrin. The role of glutathione S-transferases (GSTs) in DDT resistance was also investigated by pre-exposure to 8% diethyl maleate (DEM). The insecticides and the synergists PBO were sourced from the WHO/Vector Control Research Unit (VCRU) of the University of Sains Malaysia (Penang, Malaysia). Four replicates of 22-26 F1 females (3-4 d old) were pre-exposed to PBO or DEM for 1 h, and then transferred to tubes containing permethrin [35] or DDT, respectively. Mosquitoes were treated as in the WHO bioassays described above, and mortalities scored after 24 h. Two replicates of 25 females each were exposed to PBO only, as a control.\n", + "\n", + "Genotyping of L119F Glutathione S-Transferase (GSTe2) Mutation Associated with DDT/Permethrin Resistance\n", + "\n", + "To detect the L119F _GSTe2_ mutation previously linked to DDT/pyrethroid metabolic resistance [20], TaqMan genotyping was conducted using 44 F0 females collected from the field. This was carried out using a real-time PCR thermocycler (Agilent Mx3005) following an established protocol [20]. The primers L119F_GSTe2F (5'-AACAATTTTTCATTTCTTATTCTCATTAC-3') and L119F_GSTe2R (5'- CGACTCGATCTTCGGGAATGTC-3') were utilised with the following probes: reporter L119 (VIC_AGGACGGTATTCTTTTTCTA) to detect the susceptibility allele, and reporter 119F (FAM_AGGAGCGTATTTTTTTCTA) for the resistance allele. The assay was performed in a 10 mL final volume comprise of 5 mL of 1x Sensimix (Bioline, London, UK), 800 nM each of primer, 200 nM of each probe, and 1 mL of gDNA. Thermocycling conditions were initial denaturation of 10 min at 95 \\({}^{\\circ}\\)C, followed by 40 cycles each of 92 \\({}^{\\circ}\\)C for 10 s, and 60 \\({}^{\\circ}\\)C for 45 s. Genotypes were scored from scatter plots of results produced by the Mx3005 v4.10 software (Agilent, Santa Clara, CA, USA). Three positive samples of known genotypes [20]--(i) homozygote resistant 1014F/1014F; (ii) heterozygote L1014/1014F; and (iii) susceptible L1014/L1014--were used as positive controls. For the negative control, 1 mL of ddH2O was incorporated into the control well. To assess the correlation between the presence of the 119F mutation and the resistance phenotype, 12 each of DDT-alive and -dead females were genotyped using the above protocol. In addition, these 12 alive and 12 dead females were also screened, using the recently established allele-specific PCR [39].\n", + "\n", + "header: Results\n", + "\n", + "_Anopheles funestus_ is the only mosquito species caught, a total of 721 in 4 d. Out of these, 590 were caught in the first 3 d (52 \\(\\circ\\), 538 \\(\\circ\\) [487 blood fed and 51 unfed]). A total of 312 \\(\\mathrm{\\SIUnitSymbolOhm}\\)ial eggs and 288 egg batches hatched successfully. A total of 131 mosquitoes were caught on the 4th day: 12 \\(\\circ\\) and 119 \\(\\circ\\) (112 of them blood fed and 7 unfed).\n", + "\n", + "header: Supplementary Materials:\n", + "\n", + "The following are available online at [http://www.mdpi.com/2073-4425/11/4/454/s1](http://www.mdpi.com/2073-4425/11/4/454/s1), Figure S1: Knockdown profiles of _An. funestus females_ exposed to pyrethroids and DDT. Each bar is a percentage knockdown of values from four different replicates from bioassays at different time points, Figure S2: Analysis of the _acc-_I fragment encompassing the 119 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S3: Analysis of the _acc-_I fragment encompassing the 485 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S4: Analysis of the _VGSC_ fragment encompassing the 1014 _kdr_ mutation codon. (**a**). pattern of genetic variability of 30 sequences from randomly selected F0 females; (**b**). a maximum likelihood phylogenetic tree of the sequences, Table S1: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 119 codon for alive and dead mosquitoes, Table S2: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 485 codon for alive and dead mosquitoes, Table S3: Summary statistics for polymorphism of a fragment of voltage-gated sodium channel encompassing the 1014 codon for the field F0 females, File S1: Analyzed sequences (gDNA partial fragments) from encompassing the G119S and N485I of _acetylcholinesterase_-1 gene and sequences from the partial fragment of the voltage-gated sodium channel spanning the 1014th codon.\n", + "\n", + "header: Investigating the Role of L119F-GSTe2 Mutation in DDT Resistance\n", + "\n", + "Initial genotyping of 43 F0 females revealed a high frequency of the L119F-GSTe2 mutation with 30.2% (13 individuals) heterozygotes (RS, L119/F119), 32.6% (14 individuals) homozygote resistant (RR, 119F/119F), and 16.3% (7 individuals) homozygote susceptible (SS, L119/L119) (Figure 3a).\n", + "\n", + "Figure 2: Resistance profiles of F1 _An. funestus_ females. (**a**). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (**b**). Results of the cone bioassays with PermaNet®3.0 (side and roof), PermaNet®2.0, Olyset®Plus and Olyset®Net. Results are the average of percentage mortalities ± SEM of five replicates; (**c**). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at \\(P\\) < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (**d**). Time-course bioassay for LTs0 estimation/test for strength of permethrin resistance.\n", + "\n", + "\n", + "The 119F allele frequency f(R) was calculated as ~0.84. 12 each of DDT-alive and -dead F1 females were used for allele-specific PCR to detect the L119F GSTe2 mutation. 8 of the DDT-alive (8/12, 66.66%) were homozygote resistant (RR) for the mutation (Figure 3b,c), and 4 females (4/12, 33.33%) were heterozygote resistant. From the dead females, one sample failed (Figure 3c), only one female was homozygote resistant (1/11, 9.09%), 8 were heterozygotes (8/11, 72.72%), and 2 were susceptible (2/11, 18.18%). A difference was observed in the distribution of the 119F mutation [Odds Ratio of 16.00 (95% CI: 6.67-38.3, \\(\\chi^{2}\\) = 3.70, \\(p\\) = 0.05)] when comparing the frequency of the homozygote resistant allele (RR) with susceptible allele (SS) in the alive and dead females. A comparison of all resistant (RR + RS) with susceptible (SS) individuals from alive and dead females revealed no genotype-phenotype association [OR = 0.49 (CI: 0.19-3.15, \\(\\chi^{2}\\) = 1.2, \\(p\\) = 0.27)]. No association was observed when comparing the heterozygote individuals (RS) from both alive and dead to the susceptible (SS) [OR = 2.44 (CI: 0.9-13.53, \\(\\chi^{2}\\) = 0.49, \\(p\\) = 0.48)].\n", + "\n", + "header: Investigating the Role of Metabolic Resistance Using Synergist Bioassays\n", + "\n", + "Pre-exposure to PBO and DEM recovered some susceptibility to both permethrin and DDT, respectively (Figure 2c). A significant increase in mortality was observed when comparing results of a repeat conventional bioassay with permethrin [mortality = 43.9% (95% CI: 40.93-46.90)] to the results from the PBO-synergised bioassay [mortality = 78.73% (95% CI: 69.53-87.94), kh2 = 22.33, df = 1, \\(P\\) < 0.0001]. Pre-exposure to DEM recovered DDT susceptibility as well, with repeat exposure to DDT producing mortality of 49.82% (95% CI: 45.54-54.9), compared to a synergised experiment with a mortality of 81.44% (95% CI: 74.36-88.52, kh2 = 19.12, df = 1, \\(P\\) < 0.0001). In both cases, the doubling of mortalities from synergist pre-exposure suggests the possible role of cytochrome P450s and GSTs, respectively, in the observed permethrin and DDT resistance. No mortality was obtained from the control individuals.\n", + "\n", + "header: Polymorphism Analysis of Voltage-Gated Sodium Channel Gene Spanning the 1014 kdr Locus\n", + "\n", + "A fragment of voltage-gated sodium channel spanning intron 19 and the exon 20 containing the 1014F/S mutations associated with knockdown resistance (_kdr_) in _An. gambiae_[21,22] was amplified and sequenced. This was done with DNA extracted from 30 F0 females that laid eggs successfully. PCR was carried using primers: AfunkdrExon19-20F: GTTCAATGAAAGCCCCTCAAA and Afunkdr Exon19-20R: CCGAAATTTGACAAAGCAAA, as described in previous works [43]. The PCR products were purified using the Qiaquick Purification Kit (QIAGEN, Hilden, Germany), sequenced and aligned using BioEdit. Polymorphisms analysis and maximum likelihood phylogenetic tree construction were as described above. All DNA sequences from the alive and dead females are provided in File S1.\n", + "\n", + "header: Insecticide Resistance Profile of An. funestus Population\n", + "\n", + "The _An. funestus_ population demonstrated high knockdown resistance, with ~5% of them knocked down at 1 h exposure with deltamethrin and DDT (Figure S1), and ~10% knocked down after 1 h exposure with permethrin. High resistance was observed towards the pyrethroids, with a higher mortality of 48.30% (95% CI: 41-55) for permethrin, compared with 29.44% (95% CI: 24-34) for deltamethrin (Figure 2a). A 100% mortality rate was obtained in the FANG susceptible colony. Significant resistance was also observed towards DDT and bendiocarb, with mortalities of 56.34% (95% CI: 51-62) and 54.05% (95% CI: 49-59), respectively. Moderate resistance was observed from exposure to fenitrothion with mortality of 94.22% (95% CI: 88-101).\n", + "\n", + "header: Estimation of Resistance Intensity with Time-Course Bioassay\n", + "\n", + "To establish the strength of pyrethroid resistance with time, additional bioassays were performed, with 0.75% permethrin, at varying times of exposure. Four replicates of 20-25 F1 females were exposed in time-course spanning 60, 120, 180, 240 and 300 min, to establish the time required to kill 50%\n", + "of them (LT50). Protocol was as described above in conventional bioassays, except for variation in time. Resistance intensity was established by comparing the LT50 from the Gajerar Giwa _An. fintestus_ populations to the LT50 previously established for the fully susceptible _Anopheles coluzzi_ lab colony [5]. This type of inter-species comparison of using _An. gambiae_ (Kisumu colony) LT50s had been done before in the absence of LT50 data from FANG colony [37].\n", + "\n", + "header: Study Site and Mosquito Sampling: Molecular Identification of Mosquito Species\n", + "\n", + "Genomic DNA (gDNA) was extracted from the females which laid eggs, using the Livak protocol [29], and the mosquitoes identified to species using the cocktail PCR of Koekemoer, et al. [28]. These include all the females from the first 3 days of collections, as well as all the females collected on day 4, which were used for the estimation of indoor resting density and identification of blood meal source.\n", + "\n", + "Figure 1: A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\n", + "\n", + "header: Determination of LLIN Efficacy with Cone Bioassays\n", + "\n", + "To investigate the efficacy of commonly distributed long-lasting insecticidal nets (LLINs), cone bioassays were conducted following the WHO protocol [36], using 3-4 d old F1 females. Five replicates of 9-12 mosquitoes were placed in a plastic cone attached to a fresh insecticide-containing bed net and tested. The LLINs include: the Olyset(r)Net (containing 2% permethrin), Olyset(r)Plus (containing 2% permethrin combined with 1% of the synergist, piperonyl butoxide, PBO), PermaNet(r)2.0 (containing 1.4-1.8 g/kg +-25% deltamethrin), PermaNet(r)3.0 side panel (containing 2.1-2.8 g/kg +-25% deltamethrin), and PermaNet(r)3.0 roof (containing 4.0 g/kg +-25% deltamethrin, combined with 25 g/kg +-25% of PBO). For each experiment, five different pieces cut from an LLIN brand were used for the five technical replicates. Mosquitoes were exposed for 3 min and immediately transferred to paper cups. They were supplied with 10% sucrose and mortalities recorded after 24 h. For the control, five replicates of ten mosquitoes were exposed to untreated net.\n", + "\n", + "header: A Low-Efficacy of Long-Lasting Insecticidal Nets Is a Serious Challenge to Malaria Control\n", + "\n", + "The high pyrethroid resistance was also evident in the low efficacy of insecticide-treated bed nets, most especially the Olyset(r)Net and the PermaNet(r)3.0 (the side panel). Except for PermaNet(r)3.0, profoundly lower efficacies were seen with all the nets, in line with observations in same species from southern Africa [46], and a recent report from northern Cameroon [50]. The recovery of susceptibilities from exposure to the roof of PermaNet(r)3.0 and the PBO-synergist bioassays suggest the preeminent role of CYP450s in the pyrethroid resistance in this population. This agrees with several studies carried out across Africa [46; 51; 52]. Low efficacy seen with Olyset(r)Plus net have been described in several studies with both _An. funestus_ and _An. coluzzii_[50; 51; 52; 53].\n", + "\n", + "Insecticide Resistance Mechanism Is Driven by Metabolic Resistance Mechanisms in Gajerar Giwa An. funestus Population\n", + "\n", + "The recovery of susceptibilities from pre-exposure to PBO and DEM suggests the preeminent role of CYP450s and GSTs in pyrethroid and DDT resistance, respectively. Indeed, several studies have used these synergists to establish the potential role of the above metabolic enzymes in resistance in _An. funestus_[51; 52; 54]. The role of metabolic resistance is strengthened by (i) the finding of high frequency of the 119F-_GSTe2_ mutation in the Gajerar Giwa population and its possible link to DDT resistance, as documented in several studies [20; 47; 51; 54]; (ii) the absence of the G119S and N485I mutations in the acetylcholinesterase gene; and (iii) the absence of the 1014F/_S kdr_ mutation in the voltage-gated sodium channel from the Gajerar Giwa population, in line with the observations across Africa [37; 52; 55]. The high diversity seen in the fragment spanning the exon 20 of the VGSC suggests lack of reduced diversity due to absence of selection.\n", + "\n", + "The high bendiocarb resistance prompted sequencing of the _ace-1_ fragment for the G119S and N485I mutations previously associated with carbamate/organophosphate resistance. The absence of these mutations in the highly bendiocarb-resistant Gajerar Giwa populations, and the observed relative fenitrothion susceptibility, suggests no cross resistance, and points to metabolic mechanism responsible for the bendiocarb resistance. Several studies have reported absence of the G119S mutation in various populations of _An. funestus_ across Africa [24; 43; 52]. The high diversity seen in the _ace-1_ fragment suggests a lack of selection in the gene. However, with only 12 females (low sample size) each of alive and dead used, the presence of this mutation at a low frequency cannot be ruled out.\n", + "\n", + "The absence of the N485I mutation in Gajerar Giwa populations confirmed previous observations of the mutation present only in southern African populations [24; 46]. However, with 12 females each of the alive and dead used, the presence of these mutations or others at a low frequency cannot be ruled out.\n", + "\n", + "header: Data Analysis\n", + "\n", + "The results of bioassays were interpreted as continuous variables, with normal distributions and percentage mortalities +- standard error of mean (SEM) calculated, based on the WHO protocol [35]. Results of mortalities from synergism-pyrethroid exposure were compared with values obtained from exposure to pyrethroid alone using a two-tailed Chi-Square test of independence, with the level of significance pegged as \\(P\\) < 0.05, as implemented in GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA). For genotyping of 119F _GSTe2_ mutation allele frequency was calculated using the formula f(R) = (2 x RR + RS)/2\\(N\\) for individuals carrying the mutations, and f(S) = 1 - f(R) for the susceptible individuals; where RR = total number of homozygote resistant; RS = total number heterozygote resistant; \\(N\\), total number of individuals investigated. Genotype frequency was calculated as relative frequencies of the homozygote resistant and heterozygote resistant individuals. The correlation between the genotypes and resistance phenotypes was estimated by estimating the odds ratio using the epiR package [R version 3.5.0 ([https://cran.r-project.org/bin/windows/base/](https://cran.r-project.org/bin/windows/base/))] with statistical significance established based on the Fisher's exact probability test (_P_ < 0.05). For the estimation of LT50, a probit analysis was carried out using glm with a MASS package of R [44].\n", + "\n", + "header: WHO Insecticides Susceptibility Tests\n", + "\n", + "The bioassays were performed following the protocol of WHO [35], with various insecticides from four major public health classes. These include (i) the type I pyrethroid: permethrin (0.75%); (ii) the type II pyrethroid: deltamethrin (0.05%); (iii) the organochloride: DDT (4%); (iv) the carbamate: benodiocarb (0.1%); and (v) the organophosphate: fenitrothion (1%). All insecticide impregnated papers (reference: WHO/VBC/81.806) were sourced from the WHO/Vector Control Research Unit (VCRU) of University of Sains Malaysia (Penang, Malaysia). Four replicates of 24-26 F1 females (3-4 d old) per tube were used for each insecticide. The mosquitoes were transferred to tubes lined with insecticide papers and exposed for 1 h, after which they were transferred back to the holding tubes, supplied with 10% sugar, and mortality recorded at 24 h. For each bioassay, one replicate of 20-25 females unexposed to any insecticides were used as a control. The fully susceptible _An. funestus_ (FANG colony) [36] was tested, alongside the field populations, for the pyrethroid papers to ascertain the potency of the papers. The mosquitoes were deemed susceptible to an insecticide where mortality was >98%, suspected to be moderately resistant where mortality is between 90-98%, and resistant where mortality was <90% [35]. Figures were prepared using GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA).\n", + "\n", + "header: Bed Net Efficacy Using Cone Bioassay\n", + "\n", + "A low efficacy was observed with the pyrethroid-based Olyset(r)Net (mortality = 22.22, 95% CI: 14.37-30.07) and the Perma(r)Net2.0 (mortality = 38.05%, CI: 19.12-56.98) (Figure 2b). The side panels of PermaNet(r)3.0 induced higher mortality of 67.41% (CI: 44.87-89.95). This is more than the mortality\n", + "observed with the PBO-containing Olyset(r)Plus (mortality = 52.31%, CI: 41.85-62.78). A 100% mortality rate was seen from exposure to the roof of PermaNet(r)3.0 (containing PBO). No mortality was obtained from the control populations, which were exposed to untreated nets.\n", + "\n", + "header: Materials and Methods\n", + "\n", + "Exploring the Mechanisms of Multiple Insecticide Resistance in a Highly _Plasmodium_-Infected Malaria Vector _Anopheles funestus_ Sensu Stricto from Sahel of Northern Nigeria\n", + "\n", + "Sulaiman S. Ibrahim, Muhamad M. Mukhtar, Helen Irving, Jacob M. Riveron, Amen N. Fadel, Williams Tchapga, Jack Hearn, Abdullahi Muhammad, Faruk Sarkinfada, Charles S. Wondji\n", + "\n", + "1Vector Biology Department, Liverpool School of Tropical Medicine (LSTM), Liverpool L3 5QA, UK; Helen.Irving@lstmed.ac.uk (H.I.); jack.hearn@lstmed.ac.uk (J.H.); Abdullahi.Muhammad@lstmed.ac.uk (A.M.); charles.wondji@lstmed.ac.uk (C.S.W.) Department of Biochemistry, Bayero University, PMB 3011 Kano, Nigeria; muhammadmaehuhtar@gmail.com (LSTM Research Unit, Centre for Research in Infectious Diseases (CRID), P.O. Box 13591 Yaounde, Cameroon; Jacob.Riveron_Miranda@syngenta.com (J.M.R.); amen.fadel@crid-cam.net (A.N.F.); williams.tchapga@crid-cam.net (W.T.) Centre for Biotechnology Research, Bayero University, PMB 3011 Kano, Nigeria; fstada.mcp@buk.edu.ng (Center for Biotechnology Research, Bayero University, PMB 3011 Kano, Nigeria; fstada.\n", + "\n", + "\n", + "\n", + "ng (Center for Biotechnology Research, Bayero University, PMB 30\n", + "\n", + "\n", + "countries like Nigeria, which reported increased cases of more than half a million in 2017, compared with 2016 [1]. With _Anopheles gambiae_ sensu lato and _Anopheles funestus_ sensu structo (_An. funestus_) as the major malaria vectors, and _Plasmodium falciparum_ as the major malaria-causing species (100% of all cases in 2017), it is not surprising that this disease accounts for ~60% of outpatient visits to health facilities and 30% of child mortality in Nigeria [3]. The lack of progress towards malaria pre-elimination in Nigeria is partly due to insufficient and/or discordant entomological and active case surveillance data [4], which are important guides to identify priority areas and the most vulnerable populations to implement data-driven decisions. In stark contrast to _An. gambiae_ s.l. [5-7], the major malaria vector _An. funestus_ from the Sudan/Sahel savannah of northern Nigeria has been neglected for decades, after comprehensive works conducted by several pioneers, before 1960. These almost seven decades old studies include (i) the work of Bruce-Chwatt and Haworth (carried out in 1955-56), which described _An. funestus_ populations from Sokoto, north-western Nigeria, highly resistant to DDT (dichlorodiphenyltrichloroethane), dieldrin, and benzene hexachloride [8]; (ii) a detailed examination of _An. funestus_ species, published in 1959 by W.M. Service [9] and its role in transmission in northern Nigeria [10]; as well as (iii) a 1964 small-scale hut trials to establish impact of DDT and malathion exposure on behaviour of _An. funestus_ and _An. gambiae_[11]. After the Garki Project (1960-1970) [12], interest in _An. funestus_ waned in northern Nigeria, though it is the chief vector in the dry season [13], extending the period of malaria transmission when densities of _An. gambiae_ s.l. have declined [14]. Due to its high vectorial capacity, conferred by its unusually high anthropophilic and endophilic behaviour [14,15], this species is very important target, which should not be neglected if the ambitious target of the WHO to reduce global malaria case incidence by 90% is to be realised [16]. Contrary to the north, several studies have characterised _An. funestus_ populations from southern Nigeria. For example, the role of this vector in malaria transmission was established in populations from four sites in southwest Nigeria [17], and recently its role in transmission and insecticide resistance profile was investigated by Djouaka and colleagues [18]. Unfortunately, information on this vector species from southern Nigeria cannot be extrapolated to the north, because Nigeria has five ecological zones which define intensity and seasonality of transmission and heterogeneity in mosquito vector compositions [19].\n", + "\n", + "Here, a primary data from study of the major malaria vector _An. funestus_ is presented. The role of this vector from Sahel of northern Nigeria in malaria transmission was investigated, and its resistance status to the major public health insecticides in use for bed nets and indoor-residual spraying established. The possible mechanisms driving metabolic resistance in the field were also investigated using the synergist bioassays and TaqMan genotyping for the 119F glutathione S-transferase (_GSTe2_) mutation, which confers resistance to DDT and pyrethroids [20]. The presence of the 1014F/S knockdown resistance (_kdr_) mutations previously associated with pyrethroid resistance [21,22], and the _acetylcholinesterase-1_ (_ace-I_) G119S [23] and N485I [24] mutations associated with carbamate/organophosphate resistance, was also assessed through sequencing. Findings of this study could guide the Nigerian National Malaria Elimination Program to implement evidence-based resistance management and malaria control measures in northern Nigeria as it scales up distribution of insecticide treated net (ITNs) as part of the goals of the National Malaria Strategic Plan (NMSP) 2014-2020 [25].\n", + "\n", + "\n", + "\n", + "Blood-fed female _Anopheles_ mosquitoes resting indoors were collected between 17-20 November 2018 using battery-operated aspirators (John. W. Hock, Gainesville, FL, USA). Collection was done in eight randomly selected houses (among those who consented), in the morning hours (6:00-7:00 a.m.) at Gajerar Giwa (13deg11'57.1'' N 7deg45'53.5'' E), a village in Katsina State, north-western Nigeria. Located in the semi-arid savannah, Gajerar Giwa (Figure 1) neighbors Ajiwa Dam, built in 1975 and is used by nearby communities, for domestic purposes, fishing, and the year-round\n", + "irrigation of vegetables, including tomato, lettuce, pepper, etc. Farmers apply quantities of pesticides mainly organophosphate-based, as well as pyrethroids and carbamates for the control of insect pests, undesirable herbs and fungi ([http://documents.worldbank.org/curated/pt/244751486100486129/pdf/SFG2945-EA-P148616-Box402883B-PUBLIC-Disclosed-1-31-2017.pdf](http://documents.worldbank.org/curated/pt/244751486100486129/pdf/SFG2945-EA-P148616-Box402883B-PUBLIC-Disclosed-1-31-2017.pdf)).\n", + "\n", + "Clearance for indoor collection previously obtained from Operational Research Advisory Committee, Ministry of Health (with reference number MOH/off/797/TI/402) was used. The blood fed females obtained were maintained on 10% sugar at 25 \\({}^{\\circ}\\)C +- 2 and 70-80% relative humidity for 6-7 d. Gravid females were transferred into 1.5 mL tubes individually and forced to lay eggs, using established protocols [26]. The F0 parents were identified as belonging to the _An. funestus_ group using morphological keys [27] and confirmed as _An. funestus_ s.s. using the cocktail polymerase chain reaction PCR [28]. Egg batches were transferred into paper cups for hatching in the insectary located at Bayero University Kano, Nigeria. Eggs that hatched were pooled into bowls and supplemented with Tetramin(tm) baby fish food. The 3- to 4-days old F1 females that emerged were mixed in cages and used for bioassays. DNA extracted from all F0 and F1 females and to be used for molecular analyses were transported to the Liverpool School of Tropical Medicine (LSTM), UK, under the DEFRA license (PATH/125/2012, UK). To establish the indoor resting densities of the _An. funestus_ and the source of blood meal, a pyrethrum spray collection was conducted indoor in the eight houses on 21 November 2018.\n", + "\n", + "header: Polymorphism Analysis of Acetylcholinesterase-1 (ace-1) for G119S and N485I Target-Site Mutations\n", + "\n", + "To detect the 119S _ace-1_ mutation linked to bendiocarb/organophosphate resistance [23] a fragment of the gene spanning exons 4 to 5 was amplified from 12 bendiocarb-alive and -12 dead females. The following primers spanning exon 4, through intron 4_5 and exon 5: AFUNace1_ex4-5F: 5'-ACGCTAACGATAATGATCCGCT-3' and AFUNace1_ex4-5R:5'AGTAGCTTCTTCGCGTGATA CA-3' were utilised. A 12.5 mL premix comprise of 2x AccuStar II PCR SuperMix (QuantaBio, Beverly, Massachusetts, USA), containing optimised concentrations of MgCl2 and dNTPs, 0.2 mmol/L each of the forward and reverse primer was prepared. A total of 1 mL gDNA from individual female mosquitoes was added, followed by 10.5 mL of ddH2O (final volume = 25 mL). Amplification was carried out using the following condition: initial denaturation of 1 cycle at 94 degC for 3 min; followed by 35 cycles each of 94 degC for 30 s (denaturation); 60 degC for 30 s (annealing); extension at 72 degC for 1 min; and final elongation of one cycle at 72 degC for 5 min. PCR products were cleaned with QIAquick(r) PCR Purification Kit (QIAGEN, Hilden, Germany) and sequenced on both strands, using the above primers.\n", + "\n", + "For the N485I mutation the same samples as above were used. A forward primer AfunExon6-7ace_F: 5'-AACAATGATACATGTACCT-3' was utilised together with a previously described reverse primer AfunExon4-7ace R: 5'-TGACACTAGCACACAACCA-3' [24] to amplify a fragment spanning exons 6-7. Thermocycling condition was as described above.\n", + "\n", + "Polymorphisms were detected through manual examination of sequence traces using BioEdit version 7.2.3.0 ([http://www.mbio.ncsu.edu/BioEdit/bioedit.html](http://www.mbio.ncsu.edu/BioEdit/bioedit.html)) [40], and analyses of genetic parameters of polymorphism were done using the DnaSP 5.10 [41]. Different sequences were compared by constructing a maximum likelihood phylogenetic tree using MEGA 6.0 [42]. All DNA sequences from the alive and dead females are provided in File S1.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: 3.2.1 Indoor Resting Density, Human Blood Index and Biting Rate: 3.2.2 Estimation of Sporozoite Infection Rate\n", + "\n", + "A total of 36 out of 66 heads/thoraces were positive for _P. falciparum_ (F\\({}_{+}\\) = 36), corresponding to an unusually high sporozoite rate of 54.55% \\(\\pm\\) 13.63. Validation of the TaqMan results using nested PCR [34] confirmed the _P. falciparum_ infection in the 36 samples.\n", + "\n", + "header: 2.3.1 Estimation of Indoor Resting Density, Human Blood Index and Biting Rate: 2.3.2 Estimation of Sporozoite Rate\n", + "\n", + "Sixty-six females (22 individuals randomly selected from each of the three days of indoor collection) which laid eggs successfully were dissected, and the heads/thoraces separated from the abdomens immediately, as explained above. The presence of sporozoite was investigated using a TaqMan genotyping protocol, established by Bass and colleagues [33]. Real-time PCR MX 3005 (Agilent, Santa Clara, CA, USA) was used for the amplification. A total of 1 uL of gDNA, extracted from each female head/thorax, was used for PCR, with an initial denaturation at 95 \\({}^{\\circ}\\)C for 10 min, followed by 40 cycles each of 15 s at 95 \\({}^{\\circ}\\)C and 1 min at 60 \\({}^{\\circ}\\)C. Primers described by Bass (PlasF_GCTTAGTTACGATTAATAGGAGTAGCTTG and PlasR_GAAAATCTAAGAATTTCAC CTCTGACA) were used, together with two probes labelled with fluorophores, FAM (Falcip+_TCTGAAT ACGAATGTC) to detect _Plasmodium falciparum_, and HEX (OVM+_CTGAATACAAATGCC) to detect the combination of _P. ovale_, _P. vivax_ and _P. malariae_. Positive controls (known FAM+ and OVM+) were used, in addition to a negative control, in which 1 uL of ddH2O was added. To validate findings of the TaqMan assay, a nested PCR of Snounou et al. [34] was carried out, using all the samples that tested positive with TaqMan. The sporozoite rate was calculated as the percentage of females positive, relative to the total number of the females examined [30].\n", + "\n", + "header: Estimation of Entomological and Parasitological Parameters\n", + "\n", + "The indoor resting density (IRD) was calculated from the number of _An. funestus_ collected on the 4th d, relative to the number of houses assessed, as advised by the WHO [30; 31]. A total of 112 blood-fed females were dissected <48 h after collection, separating heads/thoraces from the abdomens. The abdomens were used for gDNA extraction as outlined in WHO guidelines [30] using the DNeasy Blood and Tissue Kit (QIAGEN, Hilden, Germany), according to manufacturer's protocol. Identification of the source of blood was conducted using the cocktail PCR of Kent et al. [32]. The human blood index was calculated from the number of females that have fed on humans, relative to the total number of females caught [30; 31]. The human biting rate was estimated from the number of the females that have fed on humans, relative to the total number of people in the houses sampled.\n", + "\n", + "header: Composition of the Mosquito Species Collected Indoor: Entomological and Parasitological Parameters of Transmission\n", + "\n", + "The indoor resting density of the _An. funestus_ was estimated as 14 from the 112 blood females collected in eight houses. Analysis of the blood source of these 112 females by PCR revealed that they all fed on human blood, leading to a human blood index of 100%. The human biting rate was estimated as ~5.3 bites per person per night (CI: 4.91-5.69).\n", + "\n", + "header: Investigating the Role of Metabolic Resistance Using Synergist Bioassays\n", + "\n", + "Pre-exposure to PBO and DEM recovered some susceptibility to both permethrin and DDT, respectively (Figure 2c). A significant increase in mortality was observed when comparing results of a repeat conventional bioassay with permethrin [mortality = 43.9% (95% CI: 40.93-46.90)] to the results from the PBO-synergised bioassay [mortality = 78.73% (95% CI: 69.53-87.94), kh2 = 22.33, df = 1, \\(P\\) < 0.0001]. Pre-exposure to DEM recovered DDT susceptibility as well, with repeat exposure to DDT producing mortality of 49.82% (95% CI: 45.54-54.9), compared to a synergised experiment with a mortality of 81.44% (95% CI: 74.36-88.52, kh2 = 19.12, df = 1, \\(P\\) < 0.0001). In both cases, the doubling of mortalities from synergist pre-exposure suggests the possible role of cytochrome P450s and GSTs, respectively, in the observed permethrin and DDT resistance. No mortality was obtained from the control individuals.\n", + "\n", + "header: Synergist Bioassay with Piperonyl Butoxide (PBO) and Diethyl Malate\n", + "\n", + "To investigate the potential role of P450 monooxygenases in pyrethroid resistance, a synergist bioassay was carried out using 4% PBO [an inhibitor of CYP450s [38]] against permethrin. The role of glutathione S-transferases (GSTs) in DDT resistance was also investigated by pre-exposure to 8% diethyl maleate (DEM). The insecticides and the synergists PBO were sourced from the WHO/Vector Control Research Unit (VCRU) of the University of Sains Malaysia (Penang, Malaysia). Four replicates of 22-26 F1 females (3-4 d old) were pre-exposed to PBO or DEM for 1 h, and then transferred to tubes containing permethrin [35] or DDT, respectively. Mosquitoes were treated as in the WHO bioassays described above, and mortalities scored after 24 h. Two replicates of 25 females each were exposed to PBO only, as a control.\n", + "\n", + "Genotyping of L119F Glutathione S-Transferase (GSTe2) Mutation Associated with DDT/Permethrin Resistance\n", + "\n", + "To detect the L119F _GSTe2_ mutation previously linked to DDT/pyrethroid metabolic resistance [20], TaqMan genotyping was conducted using 44 F0 females collected from the field. This was carried out using a real-time PCR thermocycler (Agilent Mx3005) following an established protocol [20]. The primers L119F_GSTe2F (5'-AACAATTTTTCATTTCTTATTCTCATTAC-3') and L119F_GSTe2R (5'- CGACTCGATCTTCGGGAATGTC-3') were utilised with the following probes: reporter L119 (VIC_AGGACGGTATTCTTTTTCTA) to detect the susceptibility allele, and reporter 119F (FAM_AGGAGCGTATTTTTTTCTA) for the resistance allele. The assay was performed in a 10 mL final volume comprise of 5 mL of 1x Sensimix (Bioline, London, UK), 800 nM each of primer, 200 nM of each probe, and 1 mL of gDNA. Thermocycling conditions were initial denaturation of 10 min at 95 \\({}^{\\circ}\\)C, followed by 40 cycles each of 92 \\({}^{\\circ}\\)C for 10 s, and 60 \\({}^{\\circ}\\)C for 45 s. Genotypes were scored from scatter plots of results produced by the Mx3005 v4.10 software (Agilent, Santa Clara, CA, USA). Three positive samples of known genotypes [20]--(i) homozygote resistant 1014F/1014F; (ii) heterozygote L1014/1014F; and (iii) susceptible L1014/L1014--were used as positive controls. For the negative control, 1 mL of ddH2O was incorporated into the control well. To assess the correlation between the presence of the 119F mutation and the resistance phenotype, 12 each of DDT-alive and -dead females were genotyped using the above protocol. In addition, these 12 alive and 12 dead females were also screened, using the recently established allele-specific PCR [39].\n", + "\n", + "header: Results\n", + "\n", + "_Anopheles funestus_ is the only mosquito species caught, a total of 721 in 4 d. Out of these, 590 were caught in the first 3 d (52 \\(\\circ\\), 538 \\(\\circ\\) [487 blood fed and 51 unfed]). A total of 312 \\(\\mathrm{\\SIUnitSymbolOhm}\\)ial eggs and 288 egg batches hatched successfully. A total of 131 mosquitoes were caught on the 4th day: 12 \\(\\circ\\) and 119 \\(\\circ\\) (112 of them blood fed and 7 unfed).\n", + "\n", + "header: Data Analysis\n", + "\n", + "The results of bioassays were interpreted as continuous variables, with normal distributions and percentage mortalities +- standard error of mean (SEM) calculated, based on the WHO protocol [35]. Results of mortalities from synergism-pyrethroid exposure were compared with values obtained from exposure to pyrethroid alone using a two-tailed Chi-Square test of independence, with the level of significance pegged as \\(P\\) < 0.05, as implemented in GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA). For genotyping of 119F _GSTe2_ mutation allele frequency was calculated using the formula f(R) = (2 x RR + RS)/2\\(N\\) for individuals carrying the mutations, and f(S) = 1 - f(R) for the susceptible individuals; where RR = total number of homozygote resistant; RS = total number heterozygote resistant; \\(N\\), total number of individuals investigated. Genotype frequency was calculated as relative frequencies of the homozygote resistant and heterozygote resistant individuals. The correlation between the genotypes and resistance phenotypes was estimated by estimating the odds ratio using the epiR package [R version 3.5.0 ([https://cran.r-project.org/bin/windows/base/](https://cran.r-project.org/bin/windows/base/))] with statistical significance established based on the Fisher's exact probability test (_P_ < 0.05). For the estimation of LT50, a probit analysis was carried out using glm with a MASS package of R [44].\n", + "\n", + "header: Study Site and Mosquito Sampling: Molecular Identification of Mosquito Species\n", + "\n", + "Genomic DNA (gDNA) was extracted from the females which laid eggs, using the Livak protocol [29], and the mosquitoes identified to species using the cocktail PCR of Koekemoer, et al. [28]. These include all the females from the first 3 days of collections, as well as all the females collected on day 4, which were used for the estimation of indoor resting density and identification of blood meal source.\n", + "\n", + "Figure 1: A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\n", + "\n", + "header: Supplementary Materials:\n", + "\n", + "The following are available online at [http://www.mdpi.com/2073-4425/11/4/454/s1](http://www.mdpi.com/2073-4425/11/4/454/s1), Figure S1: Knockdown profiles of _An. funestus females_ exposed to pyrethroids and DDT. Each bar is a percentage knockdown of values from four different replicates from bioassays at different time points, Figure S2: Analysis of the _acc-_I fragment encompassing the 119 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S3: Analysis of the _acc-_I fragment encompassing the 485 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S4: Analysis of the _VGSC_ fragment encompassing the 1014 _kdr_ mutation codon. (**a**). pattern of genetic variability of 30 sequences from randomly selected F0 females; (**b**). a maximum likelihood phylogenetic tree of the sequences, Table S1: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 119 codon for alive and dead mosquitoes, Table S2: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 485 codon for alive and dead mosquitoes, Table S3: Summary statistics for polymorphism of a fragment of voltage-gated sodium channel encompassing the 1014 codon for the field F0 females, File S1: Analyzed sequences (gDNA partial fragments) from encompassing the G119S and N485I of _acetylcholinesterase_-1 gene and sequences from the partial fragment of the voltage-gated sodium channel spanning the 1014th codon.\n", + "\n", + "header: Insecticide Resistance Profile of An. funestus Population\n", + "\n", + "The _An. funestus_ population demonstrated high knockdown resistance, with ~5% of them knocked down at 1 h exposure with deltamethrin and DDT (Figure S1), and ~10% knocked down after 1 h exposure with permethrin. High resistance was observed towards the pyrethroids, with a higher mortality of 48.30% (95% CI: 41-55) for permethrin, compared with 29.44% (95% CI: 24-34) for deltamethrin (Figure 2a). A 100% mortality rate was obtained in the FANG susceptible colony. Significant resistance was also observed towards DDT and bendiocarb, with mortalities of 56.34% (95% CI: 51-62) and 54.05% (95% CI: 49-59), respectively. Moderate resistance was observed from exposure to fenitrothion with mortality of 94.22% (95% CI: 88-101).\n", + "\n", + "header: Polymorphism Analysis of Voltage-Gated Sodium Channel Gene Spanning the 1014 kdr Locus\n", + "\n", + "A fragment of voltage-gated sodium channel spanning intron 19 and the exon 20 containing the 1014F/S mutations associated with knockdown resistance (_kdr_) in _An. gambiae_[21,22] was amplified and sequenced. This was done with DNA extracted from 30 F0 females that laid eggs successfully. PCR was carried using primers: AfunkdrExon19-20F: GTTCAATGAAAGCCCCTCAAA and Afunkdr Exon19-20R: CCGAAATTTGACAAAGCAAA, as described in previous works [43]. The PCR products were purified using the Qiaquick Purification Kit (QIAGEN, Hilden, Germany), sequenced and aligned using BioEdit. Polymorphisms analysis and maximum likelihood phylogenetic tree construction were as described above. All DNA sequences from the alive and dead females are provided in File S1.\n", + "\n", + "header: Bed Net Efficacy Using Cone Bioassay\n", + "\n", + "A low efficacy was observed with the pyrethroid-based Olyset(r)Net (mortality = 22.22, 95% CI: 14.37-30.07) and the Perma(r)Net2.0 (mortality = 38.05%, CI: 19.12-56.98) (Figure 2b). The side panels of PermaNet(r)3.0 induced higher mortality of 67.41% (CI: 44.87-89.95). This is more than the mortality\n", + "observed with the PBO-containing Olyset(r)Plus (mortality = 52.31%, CI: 41.85-62.78). A 100% mortality rate was seen from exposure to the roof of PermaNet(r)3.0 (containing PBO). No mortality was obtained from the control populations, which were exposed to untreated nets.\n", + "\n", + "header: Investigating the Role of L119F-GSTe2 Mutation in DDT Resistance\n", + "\n", + "Initial genotyping of 43 F0 females revealed a high frequency of the L119F-GSTe2 mutation with 30.2% (13 individuals) heterozygotes (RS, L119/F119), 32.6% (14 individuals) homozygote resistant (RR, 119F/119F), and 16.3% (7 individuals) homozygote susceptible (SS, L119/L119) (Figure 3a).\n", + "\n", + "Figure 2: Resistance profiles of F1 _An. funestus_ females. (**a**). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (**b**). Results of the cone bioassays with PermaNet®3.0 (side and roof), PermaNet®2.0, Olyset®Plus and Olyset®Net. Results are the average of percentage mortalities ± SEM of five replicates; (**c**). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at \\(P\\) < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (**d**). Time-course bioassay for LTs0 estimation/test for strength of permethrin resistance.\n", + "\n", + "\n", + "The 119F allele frequency f(R) was calculated as ~0.84. 12 each of DDT-alive and -dead F1 females were used for allele-specific PCR to detect the L119F GSTe2 mutation. 8 of the DDT-alive (8/12, 66.66%) were homozygote resistant (RR) for the mutation (Figure 3b,c), and 4 females (4/12, 33.33%) were heterozygote resistant. From the dead females, one sample failed (Figure 3c), only one female was homozygote resistant (1/11, 9.09%), 8 were heterozygotes (8/11, 72.72%), and 2 were susceptible (2/11, 18.18%). A difference was observed in the distribution of the 119F mutation [Odds Ratio of 16.00 (95% CI: 6.67-38.3, \\(\\chi^{2}\\) = 3.70, \\(p\\) = 0.05)] when comparing the frequency of the homozygote resistant allele (RR) with susceptible allele (SS) in the alive and dead females. A comparison of all resistant (RR + RS) with susceptible (SS) individuals from alive and dead females revealed no genotype-phenotype association [OR = 0.49 (CI: 0.19-3.15, \\(\\chi^{2}\\) = 1.2, \\(p\\) = 0.27)]. No association was observed when comparing the heterozygote individuals (RS) from both alive and dead to the susceptible (SS) [OR = 2.44 (CI: 0.9-13.53, \\(\\chi^{2}\\) = 0.49, \\(p\\) = 0.48)].\n", + "\n", + "header: Estimation of Resistance Intensity with Time-Course Bioassay\n", + "\n", + "To establish the strength of pyrethroid resistance with time, additional bioassays were performed, with 0.75% permethrin, at varying times of exposure. Four replicates of 20-25 F1 females were exposed in time-course spanning 60, 120, 180, 240 and 300 min, to establish the time required to kill 50%\n", + "of them (LT50). Protocol was as described above in conventional bioassays, except for variation in time. Resistance intensity was established by comparing the LT50 from the Gajerar Giwa _An. fintestus_ populations to the LT50 previously established for the fully susceptible _Anopheles coluzzi_ lab colony [5]. This type of inter-species comparison of using _An. gambiae_ (Kisumu colony) LT50s had been done before in the absence of LT50 data from FANG colony [37].\n", + "\n", + "header: A Low-Efficacy of Long-Lasting Insecticidal Nets Is a Serious Challenge to Malaria Control\n", + "\n", + "The high pyrethroid resistance was also evident in the low efficacy of insecticide-treated bed nets, most especially the Olyset(r)Net and the PermaNet(r)3.0 (the side panel). Except for PermaNet(r)3.0, profoundly lower efficacies were seen with all the nets, in line with observations in same species from southern Africa [46], and a recent report from northern Cameroon [50]. The recovery of susceptibilities from exposure to the roof of PermaNet(r)3.0 and the PBO-synergist bioassays suggest the preeminent role of CYP450s in the pyrethroid resistance in this population. This agrees with several studies carried out across Africa [46; 51; 52]. Low efficacy seen with Olyset(r)Plus net have been described in several studies with both _An. funestus_ and _An. coluzzii_[50; 51; 52; 53].\n", + "\n", + "Insecticide Resistance Mechanism Is Driven by Metabolic Resistance Mechanisms in Gajerar Giwa An. funestus Population\n", + "\n", + "The recovery of susceptibilities from pre-exposure to PBO and DEM suggests the preeminent role of CYP450s and GSTs in pyrethroid and DDT resistance, respectively. Indeed, several studies have used these synergists to establish the potential role of the above metabolic enzymes in resistance in _An. funestus_[51; 52; 54]. The role of metabolic resistance is strengthened by (i) the finding of high frequency of the 119F-_GSTe2_ mutation in the Gajerar Giwa population and its possible link to DDT resistance, as documented in several studies [20; 47; 51; 54]; (ii) the absence of the G119S and N485I mutations in the acetylcholinesterase gene; and (iii) the absence of the 1014F/_S kdr_ mutation in the voltage-gated sodium channel from the Gajerar Giwa population, in line with the observations across Africa [37; 52; 55]. The high diversity seen in the fragment spanning the exon 20 of the VGSC suggests lack of reduced diversity due to absence of selection.\n", + "\n", + "The high bendiocarb resistance prompted sequencing of the _ace-1_ fragment for the G119S and N485I mutations previously associated with carbamate/organophosphate resistance. The absence of these mutations in the highly bendiocarb-resistant Gajerar Giwa populations, and the observed relative fenitrothion susceptibility, suggests no cross resistance, and points to metabolic mechanism responsible for the bendiocarb resistance. Several studies have reported absence of the G119S mutation in various populations of _An. funestus_ across Africa [24; 43; 52]. The high diversity seen in the _ace-1_ fragment suggests a lack of selection in the gene. However, with only 12 females (low sample size) each of alive and dead used, the presence of this mutation at a low frequency cannot be ruled out.\n", + "\n", + "The absence of the N485I mutation in Gajerar Giwa populations confirmed previous observations of the mutation present only in southern African populations [24; 46]. However, with 12 females each of the alive and dead used, the presence of these mutations or others at a low frequency cannot be ruled out.\n", + "\n", + "header: Determination of LLIN Efficacy with Cone Bioassays\n", + "\n", + "To investigate the efficacy of commonly distributed long-lasting insecticidal nets (LLINs), cone bioassays were conducted following the WHO protocol [36], using 3-4 d old F1 females. Five replicates of 9-12 mosquitoes were placed in a plastic cone attached to a fresh insecticide-containing bed net and tested. The LLINs include: the Olyset(r)Net (containing 2% permethrin), Olyset(r)Plus (containing 2% permethrin combined with 1% of the synergist, piperonyl butoxide, PBO), PermaNet(r)2.0 (containing 1.4-1.8 g/kg +-25% deltamethrin), PermaNet(r)3.0 side panel (containing 2.1-2.8 g/kg +-25% deltamethrin), and PermaNet(r)3.0 roof (containing 4.0 g/kg +-25% deltamethrin, combined with 25 g/kg +-25% of PBO). For each experiment, five different pieces cut from an LLIN brand were used for the five technical replicates. Mosquitoes were exposed for 3 min and immediately transferred to paper cups. They were supplied with 10% sucrose and mortalities recorded after 24 h. For the control, five replicates of ten mosquitoes were exposed to untreated net.\n", + "\n", + "header: 5 Conclusions\n", + "\n", + "This study discovered a disproportionately high _Plasmodium_ infection in a major malaria vector _An. funestus_ from Nigeria, which will pose a serious threat to malaria control, and highlights the extent \n", + "of the efforts needed to reach the pre-elimination stage in this region of Nigeria. Pyrethroid and DDT resistance was seen at high levels which could compromise control tools using the LLINs and indoor residual spraying (IRS). The high bendiocarb resistance observed in the field populations of this vector may affect the future control measures in northern Nigeria, using the carbamate-based IRS. However, the PBO-containing combination bed net PermaNet(r)3.0 was found to be still effective in killing this species. The discovery of a high susceptibility to fenitrothion suggests that organophosphates could also be alternatives for IRS. Finally, all evidences pointed to the preeminent role of metabolic mechanisms in the multiple resistance in this populations of _An. funestus_. This should be considered by Nigeria's National Malaria Elimination Program when deploying control tools/interventions into this area.\n", + "\n", + "header: WHO Insecticides Susceptibility Tests\n", + "\n", + "The bioassays were performed following the protocol of WHO [35], with various insecticides from four major public health classes. These include (i) the type I pyrethroid: permethrin (0.75%); (ii) the type II pyrethroid: deltamethrin (0.05%); (iii) the organochloride: DDT (4%); (iv) the carbamate: benodiocarb (0.1%); and (v) the organophosphate: fenitrothion (1%). All insecticide impregnated papers (reference: WHO/VBC/81.806) were sourced from the WHO/Vector Control Research Unit (VCRU) of University of Sains Malaysia (Penang, Malaysia). Four replicates of 24-26 F1 females (3-4 d old) per tube were used for each insecticide. The mosquitoes were transferred to tubes lined with insecticide papers and exposed for 1 h, after which they were transferred back to the holding tubes, supplied with 10% sugar, and mortality recorded at 24 h. For each bioassay, one replicate of 20-25 females unexposed to any insecticides were used as a control. The fully susceptible _An. funestus_ (FANG colony) [36] was tested, alongside the field populations, for the pyrethroid papers to ascertain the potency of the papers. The mosquitoes were deemed susceptible to an insecticide where mortality was >98%, suspected to be moderately resistant where mortality is between 90-98%, and resistant where mortality was <90% [35]. Figures were prepared using GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA).\n", + "\n", + "header: Evidence of Multiple Resistance in the Gajerar Giwa An. funestus\n", + "\n", + "The multiple insecticide resistance seen in the _An. funestus_ in this study is in line with reported data from several studies across Africa [20,46-48], though with the intensity of the resistance higher in southern Africa. However, the level of pyrethroid resistance observed in this study was higher than reported in the same species from southern Nigeria by Djouaka et al. [18], especially for deltamethrin,\n", + "where mortalities in the population from southern Nigeria was on average three times lower compared to the Gajerar Giwa population. In contrast, the extremely high DDT resistance reported in southern Nigeria [18] was not seen in the Gajerar Giwa population, though the DDT resistance is higher compared to the values reported for the same species in Sahel of northern Senegal [48]. The high bendiocarb resistance seen in the Gajerar Giwa population (54% mortality) is lower than carbamate resistance in southern African populations (30-42% mortality) [37; 46], where carbamate resistance is established to be very high. However, the bendiocarb resistance in the Gajerar Giwa is higher than what was reported for the southern Nigerian population of _An. funestus_ (84% mortality) [18], or the population from Senegal (94% mortality) [48], and even in northern Cameroon (89% mortality) [49]. The Gajerar Giwa _An. funestus_ population exhibited a high LT50 for permethrin, reflecting high resistance intensity, though on average less than half of what was documented for the southern African populations [37; 46].\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: 3.2.1 Indoor Resting Density, Human Blood Index and Biting Rate: 3.2.2 Estimation of Sporozoite Infection Rate\n", + "\n", + "A total of 36 out of 66 heads/thoraces were positive for _P. falciparum_ (F\\({}_{+}\\) = 36), corresponding to an unusually high sporozoite rate of 54.55% \\(\\pm\\) 13.63. Validation of the TaqMan results using nested PCR [34] confirmed the _P. falciparum_ infection in the 36 samples.\n", + "\n", + "header: Estimation of Entomological and Parasitological Parameters\n", + "\n", + "The indoor resting density (IRD) was calculated from the number of _An. funestus_ collected on the 4th d, relative to the number of houses assessed, as advised by the WHO [30; 31]. A total of 112 blood-fed females were dissected <48 h after collection, separating heads/thoraces from the abdomens. The abdomens were used for gDNA extraction as outlined in WHO guidelines [30] using the DNeasy Blood and Tissue Kit (QIAGEN, Hilden, Germany), according to manufacturer's protocol. Identification of the source of blood was conducted using the cocktail PCR of Kent et al. [32]. The human blood index was calculated from the number of females that have fed on humans, relative to the total number of females caught [30; 31]. The human biting rate was estimated from the number of the females that have fed on humans, relative to the total number of people in the houses sampled.\n", + "\n", + "header: Composition of the Mosquito Species Collected Indoor: Entomological and Parasitological Parameters of Transmission\n", + "\n", + "The indoor resting density of the _An. funestus_ was estimated as 14 from the 112 blood females collected in eight houses. Analysis of the blood source of these 112 females by PCR revealed that they all fed on human blood, leading to a human blood index of 100%. The human biting rate was estimated as ~5.3 bites per person per night (CI: 4.91-5.69).\n", + "\n", + "header: 2.3.1 Estimation of Indoor Resting Density, Human Blood Index and Biting Rate: 2.3.2 Estimation of Sporozoite Rate\n", + "\n", + "Sixty-six females (22 individuals randomly selected from each of the three days of indoor collection) which laid eggs successfully were dissected, and the heads/thoraces separated from the abdomens immediately, as explained above. The presence of sporozoite was investigated using a TaqMan genotyping protocol, established by Bass and colleagues [33]. Real-time PCR MX 3005 (Agilent, Santa Clara, CA, USA) was used for the amplification. A total of 1 uL of gDNA, extracted from each female head/thorax, was used for PCR, with an initial denaturation at 95 \\({}^{\\circ}\\)C for 10 min, followed by 40 cycles each of 15 s at 95 \\({}^{\\circ}\\)C and 1 min at 60 \\({}^{\\circ}\\)C. Primers described by Bass (PlasF_GCTTAGTTACGATTAATAGGAGTAGCTTG and PlasR_GAAAATCTAAGAATTTCAC CTCTGACA) were used, together with two probes labelled with fluorophores, FAM (Falcip+_TCTGAAT ACGAATGTC) to detect _Plasmodium falciparum_, and HEX (OVM+_CTGAATACAAATGCC) to detect the combination of _P. ovale_, _P. vivax_ and _P. malariae_. Positive controls (known FAM+ and OVM+) were used, in addition to a negative control, in which 1 uL of ddH2O was added. To validate findings of the TaqMan assay, a nested PCR of Snounou et al. [34] was carried out, using all the samples that tested positive with TaqMan. The sporozoite rate was calculated as the percentage of females positive, relative to the total number of the females examined [30].\n", + "\n", + "header: Investigating the Role of Metabolic Resistance Using Synergist Bioassays\n", + "\n", + "Pre-exposure to PBO and DEM recovered some susceptibility to both permethrin and DDT, respectively (Figure 2c). A significant increase in mortality was observed when comparing results of a repeat conventional bioassay with permethrin [mortality = 43.9% (95% CI: 40.93-46.90)] to the results from the PBO-synergised bioassay [mortality = 78.73% (95% CI: 69.53-87.94), kh2 = 22.33, df = 1, \\(P\\) < 0.0001]. Pre-exposure to DEM recovered DDT susceptibility as well, with repeat exposure to DDT producing mortality of 49.82% (95% CI: 45.54-54.9), compared to a synergised experiment with a mortality of 81.44% (95% CI: 74.36-88.52, kh2 = 19.12, df = 1, \\(P\\) < 0.0001). In both cases, the doubling of mortalities from synergist pre-exposure suggests the possible role of cytochrome P450s and GSTs, respectively, in the observed permethrin and DDT resistance. No mortality was obtained from the control individuals.\n", + "\n", + "header: Synergist Bioassay with Piperonyl Butoxide (PBO) and Diethyl Malate\n", + "\n", + "To investigate the potential role of P450 monooxygenases in pyrethroid resistance, a synergist bioassay was carried out using 4% PBO [an inhibitor of CYP450s [38]] against permethrin. The role of glutathione S-transferases (GSTs) in DDT resistance was also investigated by pre-exposure to 8% diethyl maleate (DEM). The insecticides and the synergists PBO were sourced from the WHO/Vector Control Research Unit (VCRU) of the University of Sains Malaysia (Penang, Malaysia). Four replicates of 22-26 F1 females (3-4 d old) were pre-exposed to PBO or DEM for 1 h, and then transferred to tubes containing permethrin [35] or DDT, respectively. Mosquitoes were treated as in the WHO bioassays described above, and mortalities scored after 24 h. Two replicates of 25 females each were exposed to PBO only, as a control.\n", + "\n", + "Genotyping of L119F Glutathione S-Transferase (GSTe2) Mutation Associated with DDT/Permethrin Resistance\n", + "\n", + "To detect the L119F _GSTe2_ mutation previously linked to DDT/pyrethroid metabolic resistance [20], TaqMan genotyping was conducted using 44 F0 females collected from the field. This was carried out using a real-time PCR thermocycler (Agilent Mx3005) following an established protocol [20]. The primers L119F_GSTe2F (5'-AACAATTTTTCATTTCTTATTCTCATTAC-3') and L119F_GSTe2R (5'- CGACTCGATCTTCGGGAATGTC-3') were utilised with the following probes: reporter L119 (VIC_AGGACGGTATTCTTTTTCTA) to detect the susceptibility allele, and reporter 119F (FAM_AGGAGCGTATTTTTTTCTA) for the resistance allele. The assay was performed in a 10 mL final volume comprise of 5 mL of 1x Sensimix (Bioline, London, UK), 800 nM each of primer, 200 nM of each probe, and 1 mL of gDNA. Thermocycling conditions were initial denaturation of 10 min at 95 \\({}^{\\circ}\\)C, followed by 40 cycles each of 92 \\({}^{\\circ}\\)C for 10 s, and 60 \\({}^{\\circ}\\)C for 45 s. Genotypes were scored from scatter plots of results produced by the Mx3005 v4.10 software (Agilent, Santa Clara, CA, USA). Three positive samples of known genotypes [20]--(i) homozygote resistant 1014F/1014F; (ii) heterozygote L1014/1014F; and (iii) susceptible L1014/L1014--were used as positive controls. For the negative control, 1 mL of ddH2O was incorporated into the control well. To assess the correlation between the presence of the 119F mutation and the resistance phenotype, 12 each of DDT-alive and -dead females were genotyped using the above protocol. In addition, these 12 alive and 12 dead females were also screened, using the recently established allele-specific PCR [39].\n", + "\n", + "header: Insecticide Resistance Profile of An. funestus Population\n", + "\n", + "The _An. funestus_ population demonstrated high knockdown resistance, with ~5% of them knocked down at 1 h exposure with deltamethrin and DDT (Figure S1), and ~10% knocked down after 1 h exposure with permethrin. High resistance was observed towards the pyrethroids, with a higher mortality of 48.30% (95% CI: 41-55) for permethrin, compared with 29.44% (95% CI: 24-34) for deltamethrin (Figure 2a). A 100% mortality rate was obtained in the FANG susceptible colony. Significant resistance was also observed towards DDT and bendiocarb, with mortalities of 56.34% (95% CI: 51-62) and 54.05% (95% CI: 49-59), respectively. Moderate resistance was observed from exposure to fenitrothion with mortality of 94.22% (95% CI: 88-101).\n", + "\n", + "header: Results\n", + "\n", + "_Anopheles funestus_ is the only mosquito species caught, a total of 721 in 4 d. Out of these, 590 were caught in the first 3 d (52 \\(\\circ\\), 538 \\(\\circ\\) [487 blood fed and 51 unfed]). A total of 312 \\(\\mathrm{\\SIUnitSymbolOhm}\\)ial eggs and 288 egg batches hatched successfully. A total of 131 mosquitoes were caught on the 4th day: 12 \\(\\circ\\) and 119 \\(\\circ\\) (112 of them blood fed and 7 unfed).\n", + "\n", + "header: Polymorphism Analysis of Voltage-Gated Sodium Channel Gene Spanning the 1014 kdr Locus\n", + "\n", + "A fragment of voltage-gated sodium channel spanning intron 19 and the exon 20 containing the 1014F/S mutations associated with knockdown resistance (_kdr_) in _An. gambiae_[21,22] was amplified and sequenced. This was done with DNA extracted from 30 F0 females that laid eggs successfully. PCR was carried using primers: AfunkdrExon19-20F: GTTCAATGAAAGCCCCTCAAA and Afunkdr Exon19-20R: CCGAAATTTGACAAAGCAAA, as described in previous works [43]. The PCR products were purified using the Qiaquick Purification Kit (QIAGEN, Hilden, Germany), sequenced and aligned using BioEdit. Polymorphisms analysis and maximum likelihood phylogenetic tree construction were as described above. All DNA sequences from the alive and dead females are provided in File S1.\n", + "\n", + "header: Bed Net Efficacy Using Cone Bioassay\n", + "\n", + "A low efficacy was observed with the pyrethroid-based Olyset(r)Net (mortality = 22.22, 95% CI: 14.37-30.07) and the Perma(r)Net2.0 (mortality = 38.05%, CI: 19.12-56.98) (Figure 2b). The side panels of PermaNet(r)3.0 induced higher mortality of 67.41% (CI: 44.87-89.95). This is more than the mortality\n", + "observed with the PBO-containing Olyset(r)Plus (mortality = 52.31%, CI: 41.85-62.78). A 100% mortality rate was seen from exposure to the roof of PermaNet(r)3.0 (containing PBO). No mortality was obtained from the control populations, which were exposed to untreated nets.\n", + "\n", + "header: Supplementary Materials:\n", + "\n", + "The following are available online at [http://www.mdpi.com/2073-4425/11/4/454/s1](http://www.mdpi.com/2073-4425/11/4/454/s1), Figure S1: Knockdown profiles of _An. funestus females_ exposed to pyrethroids and DDT. Each bar is a percentage knockdown of values from four different replicates from bioassays at different time points, Figure S2: Analysis of the _acc-_I fragment encompassing the 119 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S3: Analysis of the _acc-_I fragment encompassing the 485 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S4: Analysis of the _VGSC_ fragment encompassing the 1014 _kdr_ mutation codon. (**a**). pattern of genetic variability of 30 sequences from randomly selected F0 females; (**b**). a maximum likelihood phylogenetic tree of the sequences, Table S1: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 119 codon for alive and dead mosquitoes, Table S2: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 485 codon for alive and dead mosquitoes, Table S3: Summary statistics for polymorphism of a fragment of voltage-gated sodium channel encompassing the 1014 codon for the field F0 females, File S1: Analyzed sequences (gDNA partial fragments) from encompassing the G119S and N485I of _acetylcholinesterase_-1 gene and sequences from the partial fragment of the voltage-gated sodium channel spanning the 1014th codon.\n", + "\n", + "header: Data Analysis\n", + "\n", + "The results of bioassays were interpreted as continuous variables, with normal distributions and percentage mortalities +- standard error of mean (SEM) calculated, based on the WHO protocol [35]. Results of mortalities from synergism-pyrethroid exposure were compared with values obtained from exposure to pyrethroid alone using a two-tailed Chi-Square test of independence, with the level of significance pegged as \\(P\\) < 0.05, as implemented in GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA). For genotyping of 119F _GSTe2_ mutation allele frequency was calculated using the formula f(R) = (2 x RR + RS)/2\\(N\\) for individuals carrying the mutations, and f(S) = 1 - f(R) for the susceptible individuals; where RR = total number of homozygote resistant; RS = total number heterozygote resistant; \\(N\\), total number of individuals investigated. Genotype frequency was calculated as relative frequencies of the homozygote resistant and heterozygote resistant individuals. The correlation between the genotypes and resistance phenotypes was estimated by estimating the odds ratio using the epiR package [R version 3.5.0 ([https://cran.r-project.org/bin/windows/base/](https://cran.r-project.org/bin/windows/base/))] with statistical significance established based on the Fisher's exact probability test (_P_ < 0.05). For the estimation of LT50, a probit analysis was carried out using glm with a MASS package of R [44].\n", + "\n", + "header: WHO Insecticides Susceptibility Tests\n", + "\n", + "The bioassays were performed following the protocol of WHO [35], with various insecticides from four major public health classes. These include (i) the type I pyrethroid: permethrin (0.75%); (ii) the type II pyrethroid: deltamethrin (0.05%); (iii) the organochloride: DDT (4%); (iv) the carbamate: benodiocarb (0.1%); and (v) the organophosphate: fenitrothion (1%). All insecticide impregnated papers (reference: WHO/VBC/81.806) were sourced from the WHO/Vector Control Research Unit (VCRU) of University of Sains Malaysia (Penang, Malaysia). Four replicates of 24-26 F1 females (3-4 d old) per tube were used for each insecticide. The mosquitoes were transferred to tubes lined with insecticide papers and exposed for 1 h, after which they were transferred back to the holding tubes, supplied with 10% sugar, and mortality recorded at 24 h. For each bioassay, one replicate of 20-25 females unexposed to any insecticides were used as a control. The fully susceptible _An. funestus_ (FANG colony) [36] was tested, alongside the field populations, for the pyrethroid papers to ascertain the potency of the papers. The mosquitoes were deemed susceptible to an insecticide where mortality was >98%, suspected to be moderately resistant where mortality is between 90-98%, and resistant where mortality was <90% [35]. Figures were prepared using GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA).\n", + "\n", + "header: Investigating the Role of L119F-GSTe2 Mutation in DDT Resistance\n", + "\n", + "Initial genotyping of 43 F0 females revealed a high frequency of the L119F-GSTe2 mutation with 30.2% (13 individuals) heterozygotes (RS, L119/F119), 32.6% (14 individuals) homozygote resistant (RR, 119F/119F), and 16.3% (7 individuals) homozygote susceptible (SS, L119/L119) (Figure 3a).\n", + "\n", + "Figure 2: Resistance profiles of F1 _An. funestus_ females. (**a**). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (**b**). Results of the cone bioassays with PermaNet®3.0 (side and roof), PermaNet®2.0, Olyset®Plus and Olyset®Net. Results are the average of percentage mortalities ± SEM of five replicates; (**c**). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at \\(P\\) < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (**d**). Time-course bioassay for LTs0 estimation/test for strength of permethrin resistance.\n", + "\n", + "\n", + "The 119F allele frequency f(R) was calculated as ~0.84. 12 each of DDT-alive and -dead F1 females were used for allele-specific PCR to detect the L119F GSTe2 mutation. 8 of the DDT-alive (8/12, 66.66%) were homozygote resistant (RR) for the mutation (Figure 3b,c), and 4 females (4/12, 33.33%) were heterozygote resistant. From the dead females, one sample failed (Figure 3c), only one female was homozygote resistant (1/11, 9.09%), 8 were heterozygotes (8/11, 72.72%), and 2 were susceptible (2/11, 18.18%). A difference was observed in the distribution of the 119F mutation [Odds Ratio of 16.00 (95% CI: 6.67-38.3, \\(\\chi^{2}\\) = 3.70, \\(p\\) = 0.05)] when comparing the frequency of the homozygote resistant allele (RR) with susceptible allele (SS) in the alive and dead females. A comparison of all resistant (RR + RS) with susceptible (SS) individuals from alive and dead females revealed no genotype-phenotype association [OR = 0.49 (CI: 0.19-3.15, \\(\\chi^{2}\\) = 1.2, \\(p\\) = 0.27)]. No association was observed when comparing the heterozygote individuals (RS) from both alive and dead to the susceptible (SS) [OR = 2.44 (CI: 0.9-13.53, \\(\\chi^{2}\\) = 0.49, \\(p\\) = 0.48)].\n", + "\n", + "header: Estimation of Resistance Intensity with Time-Course Bioassay\n", + "\n", + "To establish the strength of pyrethroid resistance with time, additional bioassays were performed, with 0.75% permethrin, at varying times of exposure. Four replicates of 20-25 F1 females were exposed in time-course spanning 60, 120, 180, 240 and 300 min, to establish the time required to kill 50%\n", + "of them (LT50). Protocol was as described above in conventional bioassays, except for variation in time. Resistance intensity was established by comparing the LT50 from the Gajerar Giwa _An. fintestus_ populations to the LT50 previously established for the fully susceptible _Anopheles coluzzi_ lab colony [5]. This type of inter-species comparison of using _An. gambiae_ (Kisumu colony) LT50s had been done before in the absence of LT50 data from FANG colony [37].\n", + "\n", + "header: Pyetthroid Resistance Intensity\n", + "\n", + "The LT50 for permethrin was estimated as 64.76 min [95% CI: 59.17-70.35, Fiducial] (Figure 2d) after assessing mortality from 30 to 300 min exposure. To calculate the resistance intensity, the LT50 from Gajerar Giwa _An. funestus_ was compared to LT50 (3.320 min), previously established for the fully susceptible _An. coluzzii_ Ngoussou lab colony [5]. The resistance ratio was estimated as 19.51.\n", + "\n", + "header: Study Site and Mosquito Sampling: Molecular Identification of Mosquito Species\n", + "\n", + "Genomic DNA (gDNA) was extracted from the females which laid eggs, using the Livak protocol [29], and the mosquitoes identified to species using the cocktail PCR of Koekemoer, et al. [28]. These include all the females from the first 3 days of collections, as well as all the females collected on day 4, which were used for the estimation of indoor resting density and identification of blood meal source.\n", + "\n", + "Figure 1: A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\n", + "\n", + "header: Determination of LLIN Efficacy with Cone Bioassays\n", + "\n", + "To investigate the efficacy of commonly distributed long-lasting insecticidal nets (LLINs), cone bioassays were conducted following the WHO protocol [36], using 3-4 d old F1 females. Five replicates of 9-12 mosquitoes were placed in a plastic cone attached to a fresh insecticide-containing bed net and tested. The LLINs include: the Olyset(r)Net (containing 2% permethrin), Olyset(r)Plus (containing 2% permethrin combined with 1% of the synergist, piperonyl butoxide, PBO), PermaNet(r)2.0 (containing 1.4-1.8 g/kg +-25% deltamethrin), PermaNet(r)3.0 side panel (containing 2.1-2.8 g/kg +-25% deltamethrin), and PermaNet(r)3.0 roof (containing 4.0 g/kg +-25% deltamethrin, combined with 25 g/kg +-25% of PBO). For each experiment, five different pieces cut from an LLIN brand were used for the five technical replicates. Mosquitoes were exposed for 3 min and immediately transferred to paper cups. They were supplied with 10% sucrose and mortalities recorded after 24 h. For the control, five replicates of ten mosquitoes were exposed to untreated net.\n", + "\n", + "header: A Low-Efficacy of Long-Lasting Insecticidal Nets Is a Serious Challenge to Malaria Control\n", + "\n", + "The high pyrethroid resistance was also evident in the low efficacy of insecticide-treated bed nets, most especially the Olyset(r)Net and the PermaNet(r)3.0 (the side panel). Except for PermaNet(r)3.0, profoundly lower efficacies were seen with all the nets, in line with observations in same species from southern Africa [46], and a recent report from northern Cameroon [50]. The recovery of susceptibilities from exposure to the roof of PermaNet(r)3.0 and the PBO-synergist bioassays suggest the preeminent role of CYP450s in the pyrethroid resistance in this population. This agrees with several studies carried out across Africa [46; 51; 52]. Low efficacy seen with Olyset(r)Plus net have been described in several studies with both _An. funestus_ and _An. coluzzii_[50; 51; 52; 53].\n", + "\n", + "Insecticide Resistance Mechanism Is Driven by Metabolic Resistance Mechanisms in Gajerar Giwa An. funestus Population\n", + "\n", + "The recovery of susceptibilities from pre-exposure to PBO and DEM suggests the preeminent role of CYP450s and GSTs in pyrethroid and DDT resistance, respectively. Indeed, several studies have used these synergists to establish the potential role of the above metabolic enzymes in resistance in _An. funestus_[51; 52; 54]. The role of metabolic resistance is strengthened by (i) the finding of high frequency of the 119F-_GSTe2_ mutation in the Gajerar Giwa population and its possible link to DDT resistance, as documented in several studies [20; 47; 51; 54]; (ii) the absence of the G119S and N485I mutations in the acetylcholinesterase gene; and (iii) the absence of the 1014F/_S kdr_ mutation in the voltage-gated sodium channel from the Gajerar Giwa population, in line with the observations across Africa [37; 52; 55]. The high diversity seen in the fragment spanning the exon 20 of the VGSC suggests lack of reduced diversity due to absence of selection.\n", + "\n", + "The high bendiocarb resistance prompted sequencing of the _ace-1_ fragment for the G119S and N485I mutations previously associated with carbamate/organophosphate resistance. The absence of these mutations in the highly bendiocarb-resistant Gajerar Giwa populations, and the observed relative fenitrothion susceptibility, suggests no cross resistance, and points to metabolic mechanism responsible for the bendiocarb resistance. Several studies have reported absence of the G119S mutation in various populations of _An. funestus_ across Africa [24; 43; 52]. The high diversity seen in the _ace-1_ fragment suggests a lack of selection in the gene. However, with only 12 females (low sample size) each of alive and dead used, the presence of this mutation at a low frequency cannot be ruled out.\n", + "\n", + "The absence of the N485I mutation in Gajerar Giwa populations confirmed previous observations of the mutation present only in southern African populations [24; 46]. However, with 12 females each of the alive and dead used, the presence of these mutations or others at a low frequency cannot be ruled out.\n", + "\n", + "header: Ethical Approval\n", + "\n", + "Clearance for indoor collection previously obtained on 12/01/2017 from Operational Research Advisory Committee, Ministry of Health (with reference number MOH/off/797/TI/402), Kano state was used. A meeting was held with the village head and household members at Gajerar Giwa; the scope of the study and its benefits to malaria control was explained. A written and signed informed consent was obtained from individuals who agreed to indoor collection in their houses. All communication was carried out in the local language (Hausa).\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Nigeria\",\"Site\":\"Gajerar Giwa\"}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Olyset(r)Net\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"2%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N02\":{\"Net_type\":\"Olyset(r)Plus\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"2%,1%\",\"pHI_category\":\"Good\",\"Synergist\":\"piperonyl butoxide\"},\"N03\":{\"Net_type\":\"PermaNet(r)2.0\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"1.4-1.8 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N04\":{\"Net_type\":\"PermaNet(r)3.0 side panel\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"2.1-2.8 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N05\":{\"Net_type\":\"PermaNet(r)3.0 roof\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"4.0 g\\/kg +-25%,25 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":\"piperonyl butoxide\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: 3.2.1 Indoor Resting Density, Human Blood Index and Biting Rate: 3.2.2 Estimation of Sporozoite Infection Rate\n", + "\n", + "A total of 36 out of 66 heads/thoraces were positive for _P. falciparum_ (F\\({}_{+}\\) = 36), corresponding to an unusually high sporozoite rate of 54.55% \\(\\pm\\) 13.63. Validation of the TaqMan results using nested PCR [34] confirmed the _P. falciparum_ infection in the 36 samples.\n", + "\n", + "header: Composition of the Mosquito Species Collected Indoor: Entomological and Parasitological Parameters of Transmission\n", + "\n", + "The indoor resting density of the _An. funestus_ was estimated as 14 from the 112 blood females collected in eight houses. Analysis of the blood source of these 112 females by PCR revealed that they all fed on human blood, leading to a human blood index of 100%. The human biting rate was estimated as ~5.3 bites per person per night (CI: 4.91-5.69).\n", + "\n", + "header: Estimation of Entomological and Parasitological Parameters\n", + "\n", + "The indoor resting density (IRD) was calculated from the number of _An. funestus_ collected on the 4th d, relative to the number of houses assessed, as advised by the WHO [30; 31]. A total of 112 blood-fed females were dissected <48 h after collection, separating heads/thoraces from the abdomens. The abdomens were used for gDNA extraction as outlined in WHO guidelines [30] using the DNeasy Blood and Tissue Kit (QIAGEN, Hilden, Germany), according to manufacturer's protocol. Identification of the source of blood was conducted using the cocktail PCR of Kent et al. [32]. The human blood index was calculated from the number of females that have fed on humans, relative to the total number of females caught [30; 31]. The human biting rate was estimated from the number of the females that have fed on humans, relative to the total number of people in the houses sampled.\n", + "\n", + "header: 2.3.1 Estimation of Indoor Resting Density, Human Blood Index and Biting Rate: 2.3.2 Estimation of Sporozoite Rate\n", + "\n", + "Sixty-six females (22 individuals randomly selected from each of the three days of indoor collection) which laid eggs successfully were dissected, and the heads/thoraces separated from the abdomens immediately, as explained above. The presence of sporozoite was investigated using a TaqMan genotyping protocol, established by Bass and colleagues [33]. Real-time PCR MX 3005 (Agilent, Santa Clara, CA, USA) was used for the amplification. A total of 1 uL of gDNA, extracted from each female head/thorax, was used for PCR, with an initial denaturation at 95 \\({}^{\\circ}\\)C for 10 min, followed by 40 cycles each of 15 s at 95 \\({}^{\\circ}\\)C and 1 min at 60 \\({}^{\\circ}\\)C. Primers described by Bass (PlasF_GCTTAGTTACGATTAATAGGAGTAGCTTG and PlasR_GAAAATCTAAGAATTTCAC CTCTGACA) were used, together with two probes labelled with fluorophores, FAM (Falcip+_TCTGAAT ACGAATGTC) to detect _Plasmodium falciparum_, and HEX (OVM+_CTGAATACAAATGCC) to detect the combination of _P. ovale_, _P. vivax_ and _P. malariae_. Positive controls (known FAM+ and OVM+) were used, in addition to a negative control, in which 1 uL of ddH2O was added. To validate findings of the TaqMan assay, a nested PCR of Snounou et al. [34] was carried out, using all the samples that tested positive with TaqMan. The sporozoite rate was calculated as the percentage of females positive, relative to the total number of the females examined [30].\n", + "\n", + "header: Investigating the Role of Metabolic Resistance Using Synergist Bioassays\n", + "\n", + "Pre-exposure to PBO and DEM recovered some susceptibility to both permethrin and DDT, respectively (Figure 2c). A significant increase in mortality was observed when comparing results of a repeat conventional bioassay with permethrin [mortality = 43.9% (95% CI: 40.93-46.90)] to the results from the PBO-synergised bioassay [mortality = 78.73% (95% CI: 69.53-87.94), kh2 = 22.33, df = 1, \\(P\\) < 0.0001]. Pre-exposure to DEM recovered DDT susceptibility as well, with repeat exposure to DDT producing mortality of 49.82% (95% CI: 45.54-54.9), compared to a synergised experiment with a mortality of 81.44% (95% CI: 74.36-88.52, kh2 = 19.12, df = 1, \\(P\\) < 0.0001). In both cases, the doubling of mortalities from synergist pre-exposure suggests the possible role of cytochrome P450s and GSTs, respectively, in the observed permethrin and DDT resistance. No mortality was obtained from the control individuals.\n", + "\n", + "header: Insecticide Resistance Profile of An. funestus Population\n", + "\n", + "The _An. funestus_ population demonstrated high knockdown resistance, with ~5% of them knocked down at 1 h exposure with deltamethrin and DDT (Figure S1), and ~10% knocked down after 1 h exposure with permethrin. High resistance was observed towards the pyrethroids, with a higher mortality of 48.30% (95% CI: 41-55) for permethrin, compared with 29.44% (95% CI: 24-34) for deltamethrin (Figure 2a). A 100% mortality rate was obtained in the FANG susceptible colony. Significant resistance was also observed towards DDT and bendiocarb, with mortalities of 56.34% (95% CI: 51-62) and 54.05% (95% CI: 49-59), respectively. Moderate resistance was observed from exposure to fenitrothion with mortality of 94.22% (95% CI: 88-101).\n", + "\n", + "header: Polymorphism Analysis of Voltage-Gated Sodium Channel Gene Spanning the 1014 kdr Locus\n", + "\n", + "A fragment of voltage-gated sodium channel spanning intron 19 and the exon 20 containing the 1014F/S mutations associated with knockdown resistance (_kdr_) in _An. gambiae_[21,22] was amplified and sequenced. This was done with DNA extracted from 30 F0 females that laid eggs successfully. PCR was carried using primers: AfunkdrExon19-20F: GTTCAATGAAAGCCCCTCAAA and Afunkdr Exon19-20R: CCGAAATTTGACAAAGCAAA, as described in previous works [43]. The PCR products were purified using the Qiaquick Purification Kit (QIAGEN, Hilden, Germany), sequenced and aligned using BioEdit. Polymorphisms analysis and maximum likelihood phylogenetic tree construction were as described above. All DNA sequences from the alive and dead females are provided in File S1.\n", + "\n", + "header: Results\n", + "\n", + "_Anopheles funestus_ is the only mosquito species caught, a total of 721 in 4 d. Out of these, 590 were caught in the first 3 d (52 \\(\\circ\\), 538 \\(\\circ\\) [487 blood fed and 51 unfed]). A total of 312 \\(\\mathrm{\\SIUnitSymbolOhm}\\)ial eggs and 288 egg batches hatched successfully. A total of 131 mosquitoes were caught on the 4th day: 12 \\(\\circ\\) and 119 \\(\\circ\\) (112 of them blood fed and 7 unfed).\n", + "\n", + "header: Synergist Bioassay with Piperonyl Butoxide (PBO) and Diethyl Malate\n", + "\n", + "To investigate the potential role of P450 monooxygenases in pyrethroid resistance, a synergist bioassay was carried out using 4% PBO [an inhibitor of CYP450s [38]] against permethrin. The role of glutathione S-transferases (GSTs) in DDT resistance was also investigated by pre-exposure to 8% diethyl maleate (DEM). The insecticides and the synergists PBO were sourced from the WHO/Vector Control Research Unit (VCRU) of the University of Sains Malaysia (Penang, Malaysia). Four replicates of 22-26 F1 females (3-4 d old) were pre-exposed to PBO or DEM for 1 h, and then transferred to tubes containing permethrin [35] or DDT, respectively. Mosquitoes were treated as in the WHO bioassays described above, and mortalities scored after 24 h. Two replicates of 25 females each were exposed to PBO only, as a control.\n", + "\n", + "Genotyping of L119F Glutathione S-Transferase (GSTe2) Mutation Associated with DDT/Permethrin Resistance\n", + "\n", + "To detect the L119F _GSTe2_ mutation previously linked to DDT/pyrethroid metabolic resistance [20], TaqMan genotyping was conducted using 44 F0 females collected from the field. This was carried out using a real-time PCR thermocycler (Agilent Mx3005) following an established protocol [20]. The primers L119F_GSTe2F (5'-AACAATTTTTCATTTCTTATTCTCATTAC-3') and L119F_GSTe2R (5'- CGACTCGATCTTCGGGAATGTC-3') were utilised with the following probes: reporter L119 (VIC_AGGACGGTATTCTTTTTCTA) to detect the susceptibility allele, and reporter 119F (FAM_AGGAGCGTATTTTTTTCTA) for the resistance allele. The assay was performed in a 10 mL final volume comprise of 5 mL of 1x Sensimix (Bioline, London, UK), 800 nM each of primer, 200 nM of each probe, and 1 mL of gDNA. Thermocycling conditions were initial denaturation of 10 min at 95 \\({}^{\\circ}\\)C, followed by 40 cycles each of 92 \\({}^{\\circ}\\)C for 10 s, and 60 \\({}^{\\circ}\\)C for 45 s. Genotypes were scored from scatter plots of results produced by the Mx3005 v4.10 software (Agilent, Santa Clara, CA, USA). Three positive samples of known genotypes [20]--(i) homozygote resistant 1014F/1014F; (ii) heterozygote L1014/1014F; and (iii) susceptible L1014/L1014--were used as positive controls. For the negative control, 1 mL of ddH2O was incorporated into the control well. To assess the correlation between the presence of the 119F mutation and the resistance phenotype, 12 each of DDT-alive and -dead females were genotyped using the above protocol. In addition, these 12 alive and 12 dead females were also screened, using the recently established allele-specific PCR [39].\n", + "\n", + "header: Bed Net Efficacy Using Cone Bioassay\n", + "\n", + "A low efficacy was observed with the pyrethroid-based Olyset(r)Net (mortality = 22.22, 95% CI: 14.37-30.07) and the Perma(r)Net2.0 (mortality = 38.05%, CI: 19.12-56.98) (Figure 2b). The side panels of PermaNet(r)3.0 induced higher mortality of 67.41% (CI: 44.87-89.95). This is more than the mortality\n", + "observed with the PBO-containing Olyset(r)Plus (mortality = 52.31%, CI: 41.85-62.78). A 100% mortality rate was seen from exposure to the roof of PermaNet(r)3.0 (containing PBO). No mortality was obtained from the control populations, which were exposed to untreated nets.\n", + "\n", + "header: Investigating the Role of L119F-GSTe2 Mutation in DDT Resistance\n", + "\n", + "Initial genotyping of 43 F0 females revealed a high frequency of the L119F-GSTe2 mutation with 30.2% (13 individuals) heterozygotes (RS, L119/F119), 32.6% (14 individuals) homozygote resistant (RR, 119F/119F), and 16.3% (7 individuals) homozygote susceptible (SS, L119/L119) (Figure 3a).\n", + "\n", + "Figure 2: Resistance profiles of F1 _An. funestus_ females. (**a**). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (**b**). Results of the cone bioassays with PermaNet®3.0 (side and roof), PermaNet®2.0, Olyset®Plus and Olyset®Net. Results are the average of percentage mortalities ± SEM of five replicates; (**c**). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at \\(P\\) < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (**d**). Time-course bioassay for LTs0 estimation/test for strength of permethrin resistance.\n", + "\n", + "\n", + "The 119F allele frequency f(R) was calculated as ~0.84. 12 each of DDT-alive and -dead F1 females were used for allele-specific PCR to detect the L119F GSTe2 mutation. 8 of the DDT-alive (8/12, 66.66%) were homozygote resistant (RR) for the mutation (Figure 3b,c), and 4 females (4/12, 33.33%) were heterozygote resistant. From the dead females, one sample failed (Figure 3c), only one female was homozygote resistant (1/11, 9.09%), 8 were heterozygotes (8/11, 72.72%), and 2 were susceptible (2/11, 18.18%). A difference was observed in the distribution of the 119F mutation [Odds Ratio of 16.00 (95% CI: 6.67-38.3, \\(\\chi^{2}\\) = 3.70, \\(p\\) = 0.05)] when comparing the frequency of the homozygote resistant allele (RR) with susceptible allele (SS) in the alive and dead females. A comparison of all resistant (RR + RS) with susceptible (SS) individuals from alive and dead females revealed no genotype-phenotype association [OR = 0.49 (CI: 0.19-3.15, \\(\\chi^{2}\\) = 1.2, \\(p\\) = 0.27)]. No association was observed when comparing the heterozygote individuals (RS) from both alive and dead to the susceptible (SS) [OR = 2.44 (CI: 0.9-13.53, \\(\\chi^{2}\\) = 0.49, \\(p\\) = 0.48)].\n", + "\n", + "header: Data Analysis\n", + "\n", + "The results of bioassays were interpreted as continuous variables, with normal distributions and percentage mortalities +- standard error of mean (SEM) calculated, based on the WHO protocol [35]. Results of mortalities from synergism-pyrethroid exposure were compared with values obtained from exposure to pyrethroid alone using a two-tailed Chi-Square test of independence, with the level of significance pegged as \\(P\\) < 0.05, as implemented in GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA). For genotyping of 119F _GSTe2_ mutation allele frequency was calculated using the formula f(R) = (2 x RR + RS)/2\\(N\\) for individuals carrying the mutations, and f(S) = 1 - f(R) for the susceptible individuals; where RR = total number of homozygote resistant; RS = total number heterozygote resistant; \\(N\\), total number of individuals investigated. Genotype frequency was calculated as relative frequencies of the homozygote resistant and heterozygote resistant individuals. The correlation between the genotypes and resistance phenotypes was estimated by estimating the odds ratio using the epiR package [R version 3.5.0 ([https://cran.r-project.org/bin/windows/base/](https://cran.r-project.org/bin/windows/base/))] with statistical significance established based on the Fisher's exact probability test (_P_ < 0.05). For the estimation of LT50, a probit analysis was carried out using glm with a MASS package of R [44].\n", + "\n", + "header: Supplementary Materials:\n", + "\n", + "The following are available online at [http://www.mdpi.com/2073-4425/11/4/454/s1](http://www.mdpi.com/2073-4425/11/4/454/s1), Figure S1: Knockdown profiles of _An. funestus females_ exposed to pyrethroids and DDT. Each bar is a percentage knockdown of values from four different replicates from bioassays at different time points, Figure S2: Analysis of the _acc-_I fragment encompassing the 119 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S3: Analysis of the _acc-_I fragment encompassing the 485 codon. (**a**). pattern of genetic variability of sequences from 12 bendiocarb-alive and -12 dead females; (**b**). a maximum likelihood phylogenetic tree of the sequences., Figure S4: Analysis of the _VGSC_ fragment encompassing the 1014 _kdr_ mutation codon. (**a**). pattern of genetic variability of 30 sequences from randomly selected F0 females; (**b**). a maximum likelihood phylogenetic tree of the sequences, Table S1: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 119 codon for alive and dead mosquitoes, Table S2: Summary statistics for polymorphism of a fragment of _acetylcholinesterase_-1 encompassing the 485 codon for alive and dead mosquitoes, Table S3: Summary statistics for polymorphism of a fragment of voltage-gated sodium channel encompassing the 1014 codon for the field F0 females, File S1: Analyzed sequences (gDNA partial fragments) from encompassing the G119S and N485I of _acetylcholinesterase_-1 gene and sequences from the partial fragment of the voltage-gated sodium channel spanning the 1014th codon.\n", + "\n", + "header: WHO Insecticides Susceptibility Tests\n", + "\n", + "The bioassays were performed following the protocol of WHO [35], with various insecticides from four major public health classes. These include (i) the type I pyrethroid: permethrin (0.75%); (ii) the type II pyrethroid: deltamethrin (0.05%); (iii) the organochloride: DDT (4%); (iv) the carbamate: benodiocarb (0.1%); and (v) the organophosphate: fenitrothion (1%). All insecticide impregnated papers (reference: WHO/VBC/81.806) were sourced from the WHO/Vector Control Research Unit (VCRU) of University of Sains Malaysia (Penang, Malaysia). Four replicates of 24-26 F1 females (3-4 d old) per tube were used for each insecticide. The mosquitoes were transferred to tubes lined with insecticide papers and exposed for 1 h, after which they were transferred back to the holding tubes, supplied with 10% sugar, and mortality recorded at 24 h. For each bioassay, one replicate of 20-25 females unexposed to any insecticides were used as a control. The fully susceptible _An. funestus_ (FANG colony) [36] was tested, alongside the field populations, for the pyrethroid papers to ascertain the potency of the papers. The mosquitoes were deemed susceptible to an insecticide where mortality was >98%, suspected to be moderately resistant where mortality is between 90-98%, and resistant where mortality was <90% [35]. Figures were prepared using GraphPad Prism 7.02 (GraphPad Inc., La Jolla, CA, USA).\n", + "\n", + "header: Estimation of Resistance Intensity with Time-Course Bioassay\n", + "\n", + "To establish the strength of pyrethroid resistance with time, additional bioassays were performed, with 0.75% permethrin, at varying times of exposure. Four replicates of 20-25 F1 females were exposed in time-course spanning 60, 120, 180, 240 and 300 min, to establish the time required to kill 50%\n", + "of them (LT50). Protocol was as described above in conventional bioassays, except for variation in time. Resistance intensity was established by comparing the LT50 from the Gajerar Giwa _An. fintestus_ populations to the LT50 previously established for the fully susceptible _Anopheles coluzzi_ lab colony [5]. This type of inter-species comparison of using _An. gambiae_ (Kisumu colony) LT50s had been done before in the absence of LT50 data from FANG colony [37].\n", + "\n", + "header: Determination of LLIN Efficacy with Cone Bioassays\n", + "\n", + "To investigate the efficacy of commonly distributed long-lasting insecticidal nets (LLINs), cone bioassays were conducted following the WHO protocol [36], using 3-4 d old F1 females. Five replicates of 9-12 mosquitoes were placed in a plastic cone attached to a fresh insecticide-containing bed net and tested. The LLINs include: the Olyset(r)Net (containing 2% permethrin), Olyset(r)Plus (containing 2% permethrin combined with 1% of the synergist, piperonyl butoxide, PBO), PermaNet(r)2.0 (containing 1.4-1.8 g/kg +-25% deltamethrin), PermaNet(r)3.0 side panel (containing 2.1-2.8 g/kg +-25% deltamethrin), and PermaNet(r)3.0 roof (containing 4.0 g/kg +-25% deltamethrin, combined with 25 g/kg +-25% of PBO). For each experiment, five different pieces cut from an LLIN brand were used for the five technical replicates. Mosquitoes were exposed for 3 min and immediately transferred to paper cups. They were supplied with 10% sucrose and mortalities recorded after 24 h. For the control, five replicates of ten mosquitoes were exposed to untreated net.\n", + "\n", + "header: Study Site and Mosquito Sampling: Molecular Identification of Mosquito Species\n", + "\n", + "Genomic DNA (gDNA) was extracted from the females which laid eggs, using the Livak protocol [29], and the mosquitoes identified to species using the cocktail PCR of Koekemoer, et al. [28]. These include all the females from the first 3 days of collections, as well as all the females collected on day 4, which were used for the estimation of indoor resting density and identification of blood meal source.\n", + "\n", + "Figure 1: A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\n", + "\n", + "header: Pyetthroid Resistance Intensity\n", + "\n", + "The LT50 for permethrin was estimated as 64.76 min [95% CI: 59.17-70.35, Fiducial] (Figure 2d) after assessing mortality from 30 to 300 min exposure. To calculate the resistance intensity, the LT50 from Gajerar Giwa _An. funestus_ was compared to LT50 (3.320 min), previously established for the fully susceptible _An. coluzzii_ Ngoussou lab colony [5]. The resistance ratio was estimated as 19.51.\n", + "\n", + "header: A Low-Efficacy of Long-Lasting Insecticidal Nets Is a Serious Challenge to Malaria Control\n", + "\n", + "The high pyrethroid resistance was also evident in the low efficacy of insecticide-treated bed nets, most especially the Olyset(r)Net and the PermaNet(r)3.0 (the side panel). Except for PermaNet(r)3.0, profoundly lower efficacies were seen with all the nets, in line with observations in same species from southern Africa [46], and a recent report from northern Cameroon [50]. The recovery of susceptibilities from exposure to the roof of PermaNet(r)3.0 and the PBO-synergist bioassays suggest the preeminent role of CYP450s in the pyrethroid resistance in this population. This agrees with several studies carried out across Africa [46; 51; 52]. Low efficacy seen with Olyset(r)Plus net have been described in several studies with both _An. funestus_ and _An. coluzzii_[50; 51; 52; 53].\n", + "\n", + "Insecticide Resistance Mechanism Is Driven by Metabolic Resistance Mechanisms in Gajerar Giwa An. funestus Population\n", + "\n", + "The recovery of susceptibilities from pre-exposure to PBO and DEM suggests the preeminent role of CYP450s and GSTs in pyrethroid and DDT resistance, respectively. Indeed, several studies have used these synergists to establish the potential role of the above metabolic enzymes in resistance in _An. funestus_[51; 52; 54]. The role of metabolic resistance is strengthened by (i) the finding of high frequency of the 119F-_GSTe2_ mutation in the Gajerar Giwa population and its possible link to DDT resistance, as documented in several studies [20; 47; 51; 54]; (ii) the absence of the G119S and N485I mutations in the acetylcholinesterase gene; and (iii) the absence of the 1014F/_S kdr_ mutation in the voltage-gated sodium channel from the Gajerar Giwa population, in line with the observations across Africa [37; 52; 55]. The high diversity seen in the fragment spanning the exon 20 of the VGSC suggests lack of reduced diversity due to absence of selection.\n", + "\n", + "The high bendiocarb resistance prompted sequencing of the _ace-1_ fragment for the G119S and N485I mutations previously associated with carbamate/organophosphate resistance. The absence of these mutations in the highly bendiocarb-resistant Gajerar Giwa populations, and the observed relative fenitrothion susceptibility, suggests no cross resistance, and points to metabolic mechanism responsible for the bendiocarb resistance. Several studies have reported absence of the G119S mutation in various populations of _An. funestus_ across Africa [24; 43; 52]. The high diversity seen in the _ace-1_ fragment suggests a lack of selection in the gene. However, with only 12 females (low sample size) each of alive and dead used, the presence of this mutation at a low frequency cannot be ruled out.\n", + "\n", + "The absence of the N485I mutation in Gajerar Giwa populations confirmed previous observations of the mutation present only in southern African populations [24; 46]. However, with 12 females each of the alive and dead used, the presence of these mutations or others at a low frequency cannot be ruled out.\n", + "\n", + "header: Ethical Approval\n", + "\n", + "Clearance for indoor collection previously obtained on 12/01/2017 from Operational Research Advisory Committee, Ministry of Health (with reference number MOH/off/797/TI/402), Kano state was used. A meeting was held with the village head and household members at Gajerar Giwa; the scope of the study and its benefits to malaria control was explained. A written and signed informed consent was obtained from individuals who agreed to indoor collection in their houses. All communication was carried out in the local language (Hausa).\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Nigeria\",\"Site\":\"Gajerar Giwa\"}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Olyset(r)Net\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"2%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N02\":{\"Net_type\":\"Olyset(r)Plus\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"2%,1%\",\"pHI_category\":\"Good\",\"Synergist\":\"piperonyl butoxide\"},\"N03\":{\"Net_type\":\"PermaNet(r)2.0\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"1.4-1.8 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N04\":{\"Net_type\":\"PermaNet(r)3.0 side panel\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"2.1-2.8 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":null},\"N05\":{\"Net_type\":\"PermaNet(r)3.0 roof\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"4.0 g\\/kg +-25%,25 g\\/kg +-25%\",\"pHI_category\":\"Good\",\"Synergist\":\"piperonyl butoxide\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: WHO tunnel test\n", + "\n", + "The tunnel tests were carried out from August to November 2020 according to standard WHO procedures [9]. Five 25 cm x 25 cm net pieces per ITN/control were cut adjacent to the swatches cut for cone assays from three nets per treatment arm to make a total of 15 pieces per study arm and to account for possible intra-net variability of insecticide loadings. Five tunnels were run with one sample from each treatment arm with one mosquito strain on a single night. Over 60 nights, all 15 pieces of ITNs per study arm were tested with four mosquito strains.\n", + "\n", + "Non-blood-fed nulliparous females, 5-8 days old, sugar starved for 6-8 h were released in a 60-cm-long glass tunnel. At each end of the tunnel, a 25-cm square mosquito cage covered with polyester netting was fitted. At one third of the length, the netting sample was affixed. The surface of netting \"available\" to mosquitoes is 400 cm2 (20 cm x 20 cm), with 9 x 1-cm-diameter holes: one hole is located at the centre of the square; the other eight were equidistant and located 5 cm from the border. In the shorter section of the tunnel, a small rabbit, its back shaved and restrained in a mesh tunnel, was placed as bait (Fig. 1). In the cage at the end of the longer section of the tunnel, 100 female mosquitoes (one strain \n", + "per replicate) were introduced at 21:00. The following morning at 09:00, the mosquitoes were removed using a mouth aspirator and counted separately from each section of the tunnel, and mortality and blood-feeding rates were recorded. The mosquitoes were placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Mortality was recoded at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Overall mortality was measured by pooling the mortalities of mosquitoes from the two sections of the tunnel. Acceptable feeding success and mortality in controls were 50% and 10%, respectively. Any tests not meeting the specified control cut-off were repeated.\n", + "\n", + "header: Mosquito blood-feeding in WHO tunnel, I-ACT and experimental hut\n", + "\n", + "For all bioassays and strains, blood-feeding inhibition was very high (Fig. 3, Table 3). Both Interceptor(r) G2 and Interceptor(r) gave high levels of blood-feeding inhibition in all \"free-flying\" bioassays.\n", + "\n", + "header: Background\n", + "\n", + "As funding for malaria control falls and mosquito resistance to current public health insecticides increases, new and durable vector control tools that utilise new insecticide classes are needed [1]. For insecticide resistance management, a new Insecticide Treated Net (ITN) Interceptor(r) G2 has been developed, coated with a mixture of the pyrethroid alpha-cypermethrin and the pro-insecticide chlorfenapyr [2]. Chlorfenapyr is an Insecticide Resistance Action Committee (IRAC) Group 13 insecticide, having a pyrrole chemistry that uncouples oxidative phosphorylation via disruption of the proton gradient (as a protonophore) to short circuit mitochondrial respiration through inner mitochondrial membranes of insect cells so that ATP cannot be synthesized, subsequently robbing insects of energy, resulting in death [3, 4]. Metabolic resistance is one of the main mechanisms of resistance observed in malaria vectors [5] where one or several detoxification gene families--cytochrome P450s (P450s), esterases and glutathione S-transferases (GSTs)--are overproduced to detoxify insecticides [6]. While this metabolism is a detoxification process, it can increase the potency of a pro-insecticide and may therefore be exploited as a means to control metabolically resistant insect populations [3]. The unique mode of action of chlorfenapyr on an insect's metabolism is particularly relevant for the control of vectors harboring insecticide resistance mechanisms, as increased metabolic activity increases the conversion of the pro-insecticide into its potent n-dealkylated form and will consequently increase mosquito mortality [7].\n", + "\n", + "For any new ITN to be used in public health, a thorough evaluation of its safety, efficacy and effectiveness is conducted based on World Health Organisation (WHO) standards and criteria [8]. The methods and scope of the laboratory tests and field trials required to attain WHO Prequalification (PQ) listing for ITNs are outlined in a set of WHO guidelines, last updated in 2013 [9]. As part of these guidelines, WHO recommends a set of standardised laboratory tests to ascertain the bioefficacy of pyrethroid ITNs, i.e., the ability of ITN products to kill, incapacitate (knock down) and prevent mosquitoes from blood-feeding. Laboratory bioefficacy tests are also a critical component of ITN durability evaluation used to confirm continued ITN bioefficacy after long-term use in the community [10]. The simplest and most commonly applied ITN bioefficacy test is the WHO cone bioassay where mosquitoes are held close to ITN in plastic cones and the number of mosquitoes knocked down (incapacitated) or killed is counted [9]. For ITNs with feeding inhibition mode of action, the WHO tunnel test is used, where a swatch of ITN with small holes (9 x 1-cm diameter) is made and is placed between mosquitoes and small animal bait overnight [11]. The WHO tunnel test has been shown to agree with experimental but data, using laboratory-reared mosquitoes released into the huts [12]. Thresholds for the mosquito knockdown rate (95%) and mosquito mortality rate (80%) and blood-feeding inhibition (90%) using pyrethroid-susceptible _Anopheles_ mosquitoes serve as performance benchmarks; candidate products are required to fulfill minimum performance standards, which have been established by WHO for qualification to be listed/recommended for their public health values to sustain and protect users from disease transmissions. This includes their physical durability and chemical contents recovered from nets replaced in the field over 3 years or as predicted from wash-resistance testing. For a net to be classified as a long-lasting ITN, i.e., LLIN, > 80% of nets tested should pass WHO cone/tunnel performance benchmarks after 3 years of use [13].\n", + "\n", + "Cone tests are relatively easy to perform, high throughput and sensitive to detecting changes in bioavailable pyrethroids that act through rapid contact neurotoxicity. However, chlorfenapyr requires the mosquito to be metabolically and/or physiologically active (as it would be when encountering the ITN under user conditions) to bioactivate into the potent n-dealkylated form which elicits increased mosquito mortality. As mosquitoes are more metabolically active at night when flying and host-seeking during their typical circadian rhythms, the tunnel test may be more appropriate [14].\n", + "\n", + "The President's Malaria Initiative (PMI) currently uses WHO Tunnel tests for the durability monitoring of chlorfenapyr nets with 4 samples per net evaluated and 48 nets per sampling point [15]. This requires large numbers of mosquitoes and access to small animals for testing, so it cannot be done at all facilities in malaria-endemic areas. To accommodate high-throughput evaluation of whole ITNs for durability evaluation, the Ifakara ambient chamber test (I-ACT) was developed [16]. The Ifakara ambient chamber test (I-ACT) is not currently a recognized method \n", + "approved by the WHO. However, it is currently seeking confirmation by direct comparison to approved methods. This is of particular importance where novel slow-acting chemistries cannot achieve the benchmark standards established for conventional pyrethroid ITN exposures yet may prove to be highly efficacious when tested according to their discrete modes of action. Like the experimental hut, I-ACT makes use of whole nets and human hosts to evaluate bioefficacy of field-used ITNs, but the assay is done under controlled conditions with laboratory-reared mosquitoes. Mosquitoes are released into net chambers within which the test net is hung with a volunteer sleeping beneath, and all mosquitoes are recaptured in the morning. The use of laboratory mosquitoes (rather than conducting experimental hut trials with wild mosquitoes) is done to improve the precision of estimates by releasing mosquito cohorts of a defined number of mosquitoes with high recapture rate (99%) at the conclusion of exposure intervals.\n", + "\n", + "I-ACT bioassay has been used for evaluation of pyrethroid ITNs, was able to discriminate between products [17] and agreed with results of combined WHO cone and tunnel tests [16]. The I-ACT may show suitability for use in evaluation of pro-insecticides because: (i) the assay is run overnight, favouring malarial mosquitoes' circadian rhythms, (ii) the mosquitoes have a large arena to fly in, allowing them to be metabolically active, (iii) the mosquitoes have the opportunity to feed ad libitum and (iv) the I-ACT test eliminates infected mosquitoes that may represent a malaria transmission potential that cannot be completely excluded in WHO experimental huts--a significant safety benefit to volunteers. Therefore, the I-ACT method was evaluated alongside standard methods (i.e., experimental huts, WHO cone and tunnel tests) to provide direct evidence of its comparability. Interceptor(r) (alpha-cypermethrin only) and Interceptor(r) G2 (alpha-cypermethrin and chlorfenapyr) were evaluated to compare the performance of each assay for durability monitoring of pro-insecticidal ITNs.\n", + "\n", + "header: Test nets\n", + "\n", + "ITNs were supplied by BASF in November 2019 and stored at optimal conditions (25 to 32 degC) before testing and during the experimental phase. Interceptor(r) G2 nets were from two different production batches (two batches were used for experimental hut only and one batch for other biossays) and Interceptor(r) from one production batch. Interceptor(r) G2 is made from 100-denier polyester coated with a mixture of wash-resistant formulation containing 200 mg/m2 chlorfenapyr and 100 mg/m2alpha-cypermethrin. Interceptor(r) LN is made from 100-denier polyester coated with 200 mg/m2 alpha-cypermethrin. SafiNet is an untreated polyester net manufactured by A to Z. Textiles Mills, Ltd., Tanzania, and was used as a control. The nets were washed 20 times according to a protocol adapted from the standard WHO washing procedure [9] using 20 g/l palm soap (Jamaa) and dried flat in a shaded area. The interval of time used between two washes (i.e. regeneration time) was 1 day for both Interceptor(r) G2 and Interceptor(r) TTNs.\n", + "\n", + "header: Selection of the correct strain for bioassay\n", + "\n", + "The current study demonstrated that using the correct mosquito strain when evaluating ITNs is a critical consideration. The benefit of chlorfenapyr was only seen against the resistant strains, and against the susceptible strains Interceptor(r) was more efficacious because it contains a higher dose of alphacypermethrin. Comparing between the products using both a susceptible and a resistant strain revealed the different modes of action of Interceptor(r) and Interceptor(r) G2.\n", + "\n", + "header: Sample size and power\n", + "\n", + "A sample size calculation for generalized linear mixed effects models (GLMMs) through simulation [23] in R statistical software 3.02 [https://www.r-project.org/](https://www.r-project.org/) was performed for the I-ACT and experimental huts. For the I-ACT, to detect a 10% effect difference between the nets, simulations were performed using an estimated mosquito mortality of 80% for unwashed Interceptor(r) G2, 70% for unwashed Interceptor(r) and 10% for SafiNet(r) (deliberately holed). The design was for five arms replicated in two groups, with each volunteer testing each treatment one time over 20 replicates within its group (i.e. 40 replicates per arm), with an inter-observational variance of 0.42 for the night of observation based on the variance of the random effects observed in a previous study. The evaluation was powered at 81% for 15 mosquitoes of each strain released per chamber using 1000 simulations.\n", + "\n", + "For experimental huts, simulation was performed using a Latin square design with volunteers rotating nightly and accounted for as a fixed effect for 25 nights of data collection in 10 huts. The study had 84% power to detect the difference between Interceptor(r) G2 LN and Interceptor(r) LN on mosquito mortality endpoints, with two huts per treatment arm (i.e. 50 replicates per arm). The study power was calculated based on a previous study of pyrethroid nets conducted in the same area, with the estimation of 20 _An. arabiensis_ mosquitoes per night per hut, 21% mortality in unwashed Interceptor(r) G2, 7% in 20x washed Interceptor(r) G2 and 10% in unwashed Interceptor(r) vs. 4% in 20 times washed and 1% in negative control, and overdispersion parameter for daily variation was set at intermediate 0.44.\n", + "\n", + "To test whether I-ACT measures similarly to the WHO tunnels (H0\\(m\\)2=_m_1) a power calculation using Satterthwaites _t_-test was conducted in STATA 16 software (StataCorp LLC, College Station TX, USA) for two unpaired sample means assuming unequal variance. The power estimated was > 90% based on estimates from previous studies conducted in the same setting: mean mortality of 81.5% for WHO tunnel test with an assumed daily variation of 0.5 and 15 replicates per arm and mean\n", + "mortality estimates of 86.5% and an assumed daily variation of 0.42 with 40 replicates per arm were considered for I-ACT.\n", + "\n", + "header: Considerations for each bioassay\n", + "\n", + "Both I-ACT and experimental huts use the whole bednet and human host, which represent user conditions; however, there is no risk of disease for human participants in I-ACT because the mosquitoes used are laboratory reared. The WHO tunnel test is a well-established bioassay that has been shown to agree with experimental hut tests in this evaluation as well as others [12, 14]. However, it tests only a sample of net and is therefore only able to accurately measure the chemical durability of an ITN and not the chemical _and_ physical durability. In addition, it requires a high number of mosquitoes (100 per replicate) and more testing days compared to I-ACT. In I-ACT there is possibility of testing more than one species or strain per chamber compared to tunnel test, which makes results more comparable. The I-ACT is a new assay that consistently predicts the results of experimental hut tests, measures with a similar magnitude of difference as a tunnel test and provides high-throughput and precise estimates of whole ITN protective efficacy in this study with chlorfenapyr as well as in previous studies with pyrethroid nets [17] at lower cost than tunnel tests. However, this method is yet to become a WHO/PQ-accepted testing modality despite the observed higher precision vs. current WHO-recommended modalities. The detailed descriptions of cost implications for each bioassay and how to build an I-ACT with the cost of \n", + "establishment are described in Additional file 1: Table S4 and Additional file 2 respectively.\n", + "\n", + "Laboratory and/or semi-field bioassays are not replacements for field evaluation, but they are useful if they can predict the results of field tests because they are substantially cheaper and more standardised. Experimental hut tests remain the gold standard test because they represent field conditions and can be related to public health impact [48]. However, variation in mosquito entrance in huts per night is highly heterogeneous and requires a high level of replication to achieve precision [23]. In addition, variation in hut designs affects outcome measurement [34] and should be considered when interpreting results. However, comparing between products, the same trends were consistently seen: Interceptor(r) G2 was superior to Interceptor(r) against resistant mosquitoes when they were tested in a \"free-flying\" scenario and Interceptor(r) was superior to Interceptor(r) G2 against susceptible strains, while the cone test was suitable for evaluating pyrethroids but not pro-insecticides such as chlorfenapyr.\n", + "\n", + "header: Cone test results: Use of I-ACT for durability monitoring\n", + "\n", + "I-ACT is designed to be a bridging bioassay that reproduces a more natural interaction between the mosquito and human hosts beneath a bednet [16]. Blood-feeding inhibition and 72-h mortality measured by WHO tunnel and I-ACT were similar, meaning that the use of I-ACT for durability monitoring using WHO thresholds of 80% mortality and 90% feeding inhibition is appropriate. We suggest that I-ACT can be a useful alternative to tunnel tests for bioefficacy monitoring and upstream product evaluation as both the bioassays measure a similar odds ratio and I-ACT gives a precise estimation of bioefficacy because it uses laboratory-reared mosquitoes. This is particularly important when considering the longitudinal evaluation of product performance as occurs in durability bioefficacy evaluation for two reasons. Currently, experimental huts tests are being used to evaluate the insecticidal durability of Interceptor(r) G2 [33]. It was been observed at all experimental hut testing sites that mosquito resistance to insecticides has intensified through time [34]. This needs to be factored into considerations about durability testing. ITN protection may wane more quickly against more resistant mosquito populations as nets age [35], and if older ITNs are tested 3 years after baseline efficacy has been calculated, it is possible that they will be tested against a more resistant mosquito population than that at baseline. Therefore, use of carefully maintained laboratory strains may be helpful to minimise differences in insecticide resistance levels. Second, a previous longitudinal durability trial of ITNs [17] using standard WHO cone and tunnel tests as well as I-ACT shows that ITNs are highly heterogeneous, with up to 100% variance after use (John Bradley personal communication), because of variable use practices (washing, drying, care, sleeping space) [36, 37] that result in differential levels of damage and insecticide content [38]. This fact, coupled with WHO/PQ accepted intra-net insecticidal manufacturing heterogeneities [39], shows the need to expedite testing modalities that improve comprehension of net performances by donor organisations, national malaria control programmes (NMCPs) and manufacturers alike.\n", + "\n", + "header: Table 4: Number and proportion of net pieces passing using each laboratory bioassay based on WHO criteria of 80% control corrected mortality, 95% knockdown in WHO cone test, 90% blood-feeding inhibition or 80% control corrected mortality in tunnel test\n", + "footer: The WHO criteria for tunnel were adopted for I-ACT. Whole nets were used for I-ACT\n", + "columns: ['ITNs type - Unnamed: 0_level_1', 'Number of net pieces passing - Cone (N = 60)', 'Number of net pieces passing - Tunnel (N = 15)', 'Number of net pieces passing - I-ACT (N = 40)']\n", + "\n", + "{\"0\":{\"ITNs type - Unnamed: 0_level_1\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Cone (N = 60)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"Anopheles arabiensis (Kingani strain, resistant)\"},\"1\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":\"n (%)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"n (%)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"n (%)\"},\"2\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"11 (73)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"3\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"22 (37)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"13 (87)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"4\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"5\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"12 (80)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"36 (90)\"},\"6\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"21 (35)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"10 (67)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"7\":{\"ITNs type - Unnamed: 0_level_1\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Cone (N = 60)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"An. gambiae ss. (Kisumu strain, susceptible)\"},\"8\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"9\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"50 (83)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"10\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"2 (3)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"14 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"11\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"12\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"38 (63)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"13\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"10 (17)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"}}\n", + "\n", + "header: Publisher's Note\n", + "\n", + "Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.\n", + "\n", + "header: Table 2 Logistic regression analysis to compare mosquito mortality in Interceptor® and Interceptor® G2 ITNs after exposure in WHO cone and tunnel tests, Ifakara ambient chamber test and experimental hut, Tanzania\n", + "footer: Odds ratio adjusted for net type, volunteer, hut position/number and day of the experiment\n", + "Laboratory-reared mosquitoes were used for WHO cone, WHO tunnel and I-ACT\n", + "For the experimental hut trial, the ITNs were tested against free-flying wild pyrethroid-resistant Anopheles arabiensis and Culex quinquefasciatus in Lupiro, Ifakara\n", + "*p-value>0.05\n", + "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1', 'WHO cone - OR (95% CI)', 'Tunnel - OR (95% CI)', 'I-ACT - OR (95% CI)', 'Hut - OR (95% CI)', 'Huts with netting window - OR (95% CI)']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Anopheles anabiensis (resistant)\",\"WHO cone - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Tunnel - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"I-ACT - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Hut - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Anopheles anabiensis (resistant)\"},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.03, 0.07)\",\"Tunnel - OR (95% CI)\":\"1.33 (1.17, 1.51)\",\"I-ACT - OR (95% CI)\":\"1.55 (1.16, 2.07)\",\"Hut - OR (95% CI)\":\"2.38 (2.09, 2.72)\",\"Huts with netting window - OR (95% CI)\":\"2.43 (1.88, 3.14)\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.05 (0.20, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.42 (1.19, 1.70)\",\"I-ACT - OR (95% CI)\":\"1.61 (1.05, 2.49)\",\"Hut - OR (95% CI)\":\"2.53 (1.96, 3.26)\",\"Huts with netting window - OR (95% CI)\":\"2.55 (1.76, 3.68)\"},\"7\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"8\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"9\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.2, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.23 (1.03, 1.48)\",\"I-ACT - OR (95% CI)\":\"1.50 (1.02, 2.23)\",\"Hut - OR (95% CI)\":\"2.36 (2.02, 2.77)\",\"Huts with netting window - OR (95% CI)\":\"2.32 (1.63, 3.31)\"},\"10\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Culex quinquefasciatus (resistant)\",\"WHO cone - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Tunnel - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"I-ACT - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Hut - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\"},\"11\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"12\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"13\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.05 (0.57, 1.93)*\",\"Tunnel - OR (95% CI)\":\"2.55 (2.26, 2.55)\",\"I-ACT - OR (95% CI)\":\"13.40 (10.75, 16.67)\",\"Hut - OR (95% CI)\":\"1.50 (1.31, 1.73)\",\"Huts with netting window - OR (95% CI)\":\"1.40 (1.19, 1.63)\"},\"14\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"15\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"16\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.74 (0.31, 1.79)*\",\"Tunnel - OR (95% CI)\":\"2.52 (2.13, 3.00)\",\"I-ACT - OR (95% CI)\":\"12.71 (9.43, 17.14)\",\"Hut - OR (95% CI)\":\"1.52 (1.23, 1.88)\",\"Huts with netting window - OR (95% CI)\":\"1.25 (1.00, 1.57)\"},\"17\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"18\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"19\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.46 (0.62, 3.50)*\",\"Tunnel - OR (95% CI)\":\"2.58 (2.17, 3.06)\",\"I-ACT - OR (95% CI)\":\"14.11 (10.42, 19.11)\",\"Hut - OR (95% CI)\":\"1.50 (1.25, 1.80)\",\"Huts with netting window - OR (95% CI)\":\"1.55 (1.24, 1.94)\"},\"20\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"An gambiae s.s. (susceptible)\",\"WHO cone - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Tunnel - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"I-ACT - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Hut - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"An gambiae s.s.\n", + "\n", + "header: Mosquito test systems\n", + "\n", + "IHI laboratory maintains local mosquito strains with resistant mechanisms present in the local population to\n", + "avoid accidental release of new resistance alleles into the wild population. Four types of laboratory-reared mosquitoes with different resistance levels (confirmed at the time of testing) were used in the WHO cone, WHO tunnel and I-ACT tests: _Anopheles arabiensis_ (Kingani strain, upregulation of cytochrome p450s, 14% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is reversed by piperonyl butoxide (PBO) pre-exposure, which acts to block enzymatic detoxification mechanisms by inhibiting their metabolism), _Anopheles gambiae_ s.s. (Kisumu strain, fully susceptible to all insecticide classes at WHO discriminating doses), _Aedes aegypti_ (Bagamoyo strain, fully susceptible to all insecticide classes at WHO discriminating doses) and _Culex quinquefasciatus_ (Bagamoyo strain, 6% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is partially reversed (only moderate susceptibility is restored from inhibition of detoxifying mechanism) by PBO pre-exposure). In I-ACT and tunnel tests, sugar-starved (8 to 9 h) nulliparous female mosquitoes, 5-8 days old, were used. For cone bioassay, 2-5-day-old nulliparous sugar-fed female mosquitoes were challenged. Laboratory colonies were maintained by feeding larvae Tetramin(r) tropical fish food and adults on blood between 3 and 6 days after emergence and 10% sugar solution ad libitum. Temperature and humidity within the insectary are maintained between 27 degC+-5 degC and 40%-100% RH, relatively following MR4 guidelines [18]. For the experimental hut assays, only wild populations of _An. arabiensis_ and _Culex quinquefasciatus_ were collected in sufficient numbers for evaluation.\n", + "\n", + "header: WHO cone bioassays\n", + "\n", + "WHO cone tests were performed between October 2020 and February 2021 according to standard WHO procedures [9], with two modifications: the test board was set at 60deg tilt [19] and holes were cut in the boards (Fig. 1) to maximise mosquito contact with the test nets during exposures. From each treatment arm, three nets were randomly sampled, and five net swatches of 25 cm x 25 cm size were cut from positions 1 to 5. On each netting sample, four standard WHO cones were positioned over net swatches and secured in place using tape. Five laboratory-bred mosquitoes were introduced into each cone and exposed for 3 min, and four replicates were conducted per net piece (20 mosquitoes were exposed per net piece).\n", + "\n", + "After each exposure, the mosquitoes were removed gently from the cones (by mouth aspiration), placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Knockdown (KD60) was recorded after 60 min and mortality at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Acceptable control mortality was <= 10% after 72 h holding time. Any tests exceeding the specified control cut off were repeated.\n", + "\n", + "header: Conclusion\n", + "\n", + "Interceptor(r) G2 clearly demonstrated superior bio-efficacy against resistant mosquitoes compared to Interceptor(r) when mosquitoes were challenged in free-flying bioassays. The I-ACT measured similar odds ratios as the WHO tunnel, currently used for testing of ITNs with chlorfenapyr. Both free-flying laboratory bioassays (WHO tunnel and I-ACT) predicted the results of the experimental hut test. Experimental hut design has an influence on mosquito mortality; however, using the odds ratio, all free-flying tests gave consistent findings. In this setting, I-ACT was a reliable bioassay for bioefficacy testing of Interceptor(r) G2 and may be a useful additional bioassay for durability monitoring of ITNs treated with pro-insecticides.\n", + "\n", + "header: Resistant mosquitoes\n", + "\n", + "For pyrethroid-resistant _An. arabiensis_, blood-feeding inhibition was lower with Interceptor(r) G2 than Interceptor(r) in WHO tunnel: 87.8% (95% CI: 82.9- 92.7) vs. 92.9% (95% CI: 89.8-96.0) OR blood-fed = 1.92 [95% CI:14.8-2.48], \\(p\\) < 0.001 and I-ACT: 89.8% (95% CI: 85.8-93.7) vs. 93.9% (95% CI: 91.5-96.3) (OR blood-fed = 1.67 [95% CI: 1.07-2.62], \\(p\\) = 0.024). There was no difference between the two products measured in experimental huts: 95.9% (95% CI: 93.7-98.2) vs. 96.3% (95% CI: 93.0-99.7) (OR blood-fed = 1.06 [95% CI: 0.54-2.10], \\(p\\) = 0.857). A similar trend was observed for the 20x washed nets.\n", + "\n", + "Blood-feeding inhibition was similar for Interceptor(r) G2 compared to Interceptor(r) with _Cx. Quinquefasciatus_ in WHO tunnel: 97.8% (95CI: 96.1-99.5) vs. 97.1% (95% CI: 95.9-98.3) (OR blood fed = 1.36 [95% CI: 0.85-2.17], \\(p\\) = 0.196) and experimental huts: 97.2% (95% CI: 95.9-98.4) vs. 97.2% (95% CI: 95.8-98.7) (OR = 1.04 [95% CI: 0.76-1.42], \\(p\\) = 0.827), whilst in I-ACT the difference was significantly different: 99.0% (95% CI: 98.1-99.9) vs. 91.3% (95% CI: 88.6-93.9) (OR blood fed = 0.11 [95% CI: 0.05-0.26], \\(p\\) < 0.001). A similar trend was observed for the 20x washed nets (Fig. 3a, b, Table 3). The percentage blood-feeding inhibition and mean difference between bioassays for all mosquito species are presented in Additional file 1: Table S2.\n", + "\n", + "header: Study area: Study design\n", + "\n", + "The study was a five-arm comparative efficacy study to determine the performances of Interceptor(r) G2 ITNs and Interceptor(r) against pyrethroid-susceptible and -resistant mosquitoes measured by WHO cone bioassay, WHO tunnel test, Ifakara ambient chamber test (I-ACT) and experimental huts. Study arms were: (i) Interceptor(r) G2, unwashed; (ii) Interceptor(r) G2, washed 20 times; (iii) Interceptor(r), unwashed; (iv) Interceptor(r), washed 20 times; (v) SafNet(r) (negative control). The primary performance metric upon which the study was powered is 72-h mortality (M72), which is measured in all four bioassays. A secondary outcome was blood-feeding, which was measured in the three free-flying bioassays. Additionally, knockdown at 60 min (KD60) was measured in cone tests (Table 1).\n", + "\n", + "header: Mosquito retention\n", + "\n", + "Immediately after the main experimental hut trial, a retention test was conducted by releasing wild _An. ara-biensis_ mosquitoes that were collected from the area by human landing catch (HLC). Fifteen mosquitoes marked with non-toxic fluorescent powder were released in each of the ten huts with the same treatment arms as the main experiment hut design. Five huts were completely closed while the other five were left with open eaves (with 10-cm baffles to reduce egress) and two window exit traps as per main experimental hut study. This experiment was conducted for 5 nights. Each morning mosquitoes were sorted, scored and held for 72 h to observe delayed mortality for each treatment arm.\n", + "\n", + "header: Susceptible mosquitoes\n", + "\n", + "For unwashed Interceptor(r), blood-feeding inhibition was measured in tunnel and I-ACT and a similar trend was observed in susceptible mosquitoes as was seen in the resistant laboratory strains (Fig. 3c, d, Table 3). For susceptible _An. gambiae_, blood-feeding inhibition was lower with Interceptor(r) G2 than for Interceptor(r) WHO tunnel: 89.7% (95% CI: 83.3-96.1) vs. 94.5% (95% CI: 91.9-97.2), (OR blood fed = 1.95 [95% CI: 1.46, 2.61], \\(p\\) < 0.001) and similar in I-ACT: 97.4% (95% CI: 95.7-99.1) vs. 98.2% (95% CI: 96.8-99.5), (OR blood fed = 1.41 [95% CI: 0.63-3.17], \\(p\\) = 0.407. For susceptible _Ae. Aggyti_ in WHO tunnel, results showed: 93.8% (95% CI:90.6-97.1) vs. 96.3% (95% CI: 94.0-98.7) (OR blood fed = 2.03 [95% CI: 1.40-2.93], \\(p\\) < 0.001) and in I-ACT: 96.8% (95% CI: 94.8-98.9) vs. 98.3% (95% CI: 97.1-99.5) (OR blood fed = 1.92 [95% CI: 0.87-4.24],\n", + "\\(p=0.107\\)). As before, for both species a similar pattern was seen for the 20\\(\\times\\) washed nets.\n", + "\n", + "header: Methods\n", + "\n", + "The laboratory bioassays (I-ACT, WHO cone and WHO tunnel tests) were performed at the Vector Control Product Testing Unit (VCPTU) testing facility located at the Bagamoyo branch of Ifakara Health Institute (IHI), Tanzania (6.446deg S and 38.901deg E). The district experiences average annual rainfall of 800 mm-1000 mm, average temperatures between 24 degC and 29 degC and average annual humidity of 73%. The experimental hut study was conducted in Lupiro village (8.385deg S and 36.673deg E) in Ulanga District, southeastern Tanzania. The village is bordered by irrigated rice fields with average annual rainfall of 1200-1800 mm, average temperatures between 20 and 34 degC and average annual humidity of 69%. The main malaria vector is _Anopheles arabiensis_, constituting > 99.9% of the _An. gambiae_ complex species in the last test conducted in November 2020, and resistance to alphabcypermethrin was recorded (57% mortality at 1 x WHO discriminating concentration) at the time of testing.\n", + "\n", + "header: Table 3 Logistic regression analysis to compare mosquito blood-feeding success in Interceptor and Interceptor G2 ITNs after exposure in WHO tunnel test, Ifakara ambient chamber test and experimental hut, Tanzania\n", + "footer: Odds ratio adjusted for net type, volunteer, hut position/number and day of the experiment\n", + "Laboratory-reared mosquitoes were used for tunnel and I-ACT\n", + "For the experimental hut trial, the ITNs were tested against free-\u001e\n", + "flying wild pyrethroid-resistant Anopheles arabiensis and Culex quinquefasciatus in Lupiro, Ifakara\n", + "*p-value<0.05\n", + "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1', 'Tunnel - OR (95% CI)', 'I-ACT - OR (95% CI)', 'Hutt - OR (95% CI)', 'Huts with netting window - OR (95% CI)']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Anopheles anabiensis (resistant)\",\"Tunnel - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"I-ACT - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Hutt - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Anopheles anabiensis (resistant)\"},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.75 (1.46, 2.09)*\",\"I-ACT - OR (95% CI)\":\"1.53 (1.10, 2.13)*\",\"Hutt - OR (95% CI)\":\"1.04 (0.74, 1.47)\",\"Huts with netting window - OR (95% CI)\":\"1.42 (0.80, 2.53)\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":\"1\"},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":\"1\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.92 (1.48, 2.48)*\",\"I-ACT - OR (95% CI)\":\"1.67 (1.07, 2.62)*\",\"Hutt - OR (95% CI)\":\"1.06 (0.54, 2.10)\",\"Huts with netting window - OR (95% CI)\":\"1.81 (0.79, 4.14)\"},\"7\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20x\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"8\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"9\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.60 (1.24, 2.05)*\",\"I-ACT - OR (95% CI)\":\"1.37 (0.83, 2.25)\",\"Hutt - OR (95% CI)\":\"1.09 (0.72, 1.63)\",\"Huts with netting window - OR (95% CI)\":\"1.15 (0.53, 2.50)\"},\"10\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Culex quinquefasciatus (resistant)\",\"Tunnel - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"I-ACT - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Hutt - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\"},\"11\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"12\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"13\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"0.73 (0.53, 1.00)\",\"I-ACT - OR (95% CI)\":\"0.13 (0.07, 0.23)*\",\"Hutt - OR (95% CI)\":\"1.34 (0.88, 2.04)\",\"Huts with netting window - OR (95% CI)\":\"0.63 (0.49, 0.81)*\"},\"14\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":\"1\"},\"15\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":\"1\"},\"16\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.36 (0.85, 2.17)\",\"I-ACT - OR (95% CI)\":\"0.11 (0.05, 0.26)*\",\"Hutt - OR (95% CI)\":\"1.04 (0.76, 1.42)\",\"Huts with netting window - OR (95% CI)\":\"0.67 (0.45, 1.02)\"},\"17\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20x\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"18\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"19\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"0.41 (0.26, 0.65)*\",\"I-ACT - OR (95% CI)\":\"0.14 (0.06, 0.33)*\",\"Hutt - OR (95% CI)\":\"1.11 (0.86, 1.42)\",\"Huts with netting window - OR (95% CI)\":\"1.59 (0.43, 0.82)*\"},\"20\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"An gambiae s.s. (susceptible)\",\"Tunnel - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"I-ACT - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Hutt - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"An gambiae s.s. (susceptible)\"},\"21\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"22\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"23\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.28 (1.03, 1.59)*\",\"I-ACT - OR (95% CI)\":\"1.55 (0.86, 2.80)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"},\"24\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"25\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.95 (1.46, 2.61)*\",\"I-ACT - OR (95% CI)\":\"1.41 (0.63, 3.17)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"},\"26\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20x\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"27\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"28\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.81 (1.35, 2.41)*\",\"I-ACT - OR (95% CI)\":\"1.75 (0.69, 4.41)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"},\"29\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Aedes aegypti (susceptible)\",\"Tunnel - OR (95% CI)\":\"Aedes aegypti (susceptible)\",\"I-ACT - OR (95% CI)\":\"Aedes aegypti (susceptible)\",\"Hutt - OR (95% CI)\":\"Aedes aegypti (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"Aedes aegypti (susceptible)\"},\"30\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"31\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"32\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.46 (1.14, 1.87)*\",\"I-ACT - OR (95% CI)\":\"1.63 (0.87, 3.04)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"},\"33\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"34\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"35\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"2.03 (1.40, 2.93)*\",\"I-ACT - OR (95% CI)\":\"1.92 (0.87, 4.24)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"},\"36\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20x\",\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"37\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hutt - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"38\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"Tunnel - OR (95% CI)\":\"1.10 (0.79, 1.54)\",\"I-ACT - OR (95% CI)\":\"1.20 (0.43, 3.36)\",\"Hutt - OR (95% CI)\":\"\\u2013\",\"Huts with netting window - OR (95% CI)\":\"\\u2013\"}}\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: WHO tunnel test\n", + "\n", + "The tunnel tests were carried out from August to November 2020 according to standard WHO procedures [9]. Five 25 cm x 25 cm net pieces per ITN/control were cut adjacent to the swatches cut for cone assays from three nets per treatment arm to make a total of 15 pieces per study arm and to account for possible intra-net variability of insecticide loadings. Five tunnels were run with one sample from each treatment arm with one mosquito strain on a single night. Over 60 nights, all 15 pieces of ITNs per study arm were tested with four mosquito strains.\n", + "\n", + "Non-blood-fed nulliparous females, 5-8 days old, sugar starved for 6-8 h were released in a 60-cm-long glass tunnel. At each end of the tunnel, a 25-cm square mosquito cage covered with polyester netting was fitted. At one third of the length, the netting sample was affixed. The surface of netting \"available\" to mosquitoes is 400 cm2 (20 cm x 20 cm), with 9 x 1-cm-diameter holes: one hole is located at the centre of the square; the other eight were equidistant and located 5 cm from the border. In the shorter section of the tunnel, a small rabbit, its back shaved and restrained in a mesh tunnel, was placed as bait (Fig. 1). In the cage at the end of the longer section of the tunnel, 100 female mosquitoes (one strain \n", + "per replicate) were introduced at 21:00. The following morning at 09:00, the mosquitoes were removed using a mouth aspirator and counted separately from each section of the tunnel, and mortality and blood-feeding rates were recorded. The mosquitoes were placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Mortality was recoded at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Overall mortality was measured by pooling the mortalities of mosquitoes from the two sections of the tunnel. Acceptable feeding success and mortality in controls were 50% and 10%, respectively. Any tests not meeting the specified control cut-off were repeated.\n", + "\n", + "header: Mosquito blood-feeding in WHO tunnel, I-ACT and experimental hut\n", + "\n", + "For all bioassays and strains, blood-feeding inhibition was very high (Fig. 3, Table 3). Both Interceptor(r) G2 and Interceptor(r) gave high levels of blood-feeding inhibition in all \"free-flying\" bioassays.\n", + "\n", + "header: Selection of the correct strain for bioassay\n", + "\n", + "The current study demonstrated that using the correct mosquito strain when evaluating ITNs is a critical consideration. The benefit of chlorfenapyr was only seen against the resistant strains, and against the susceptible strains Interceptor(r) was more efficacious because it contains a higher dose of alphacypermethrin. Comparing between the products using both a susceptible and a resistant strain revealed the different modes of action of Interceptor(r) and Interceptor(r) G2.\n", + "\n", + "header: Background\n", + "\n", + "As funding for malaria control falls and mosquito resistance to current public health insecticides increases, new and durable vector control tools that utilise new insecticide classes are needed [1]. For insecticide resistance management, a new Insecticide Treated Net (ITN) Interceptor(r) G2 has been developed, coated with a mixture of the pyrethroid alpha-cypermethrin and the pro-insecticide chlorfenapyr [2]. Chlorfenapyr is an Insecticide Resistance Action Committee (IRAC) Group 13 insecticide, having a pyrrole chemistry that uncouples oxidative phosphorylation via disruption of the proton gradient (as a protonophore) to short circuit mitochondrial respiration through inner mitochondrial membranes of insect cells so that ATP cannot be synthesized, subsequently robbing insects of energy, resulting in death [3, 4]. Metabolic resistance is one of the main mechanisms of resistance observed in malaria vectors [5] where one or several detoxification gene families--cytochrome P450s (P450s), esterases and glutathione S-transferases (GSTs)--are overproduced to detoxify insecticides [6]. While this metabolism is a detoxification process, it can increase the potency of a pro-insecticide and may therefore be exploited as a means to control metabolically resistant insect populations [3]. The unique mode of action of chlorfenapyr on an insect's metabolism is particularly relevant for the control of vectors harboring insecticide resistance mechanisms, as increased metabolic activity increases the conversion of the pro-insecticide into its potent n-dealkylated form and will consequently increase mosquito mortality [7].\n", + "\n", + "For any new ITN to be used in public health, a thorough evaluation of its safety, efficacy and effectiveness is conducted based on World Health Organisation (WHO) standards and criteria [8]. The methods and scope of the laboratory tests and field trials required to attain WHO Prequalification (PQ) listing for ITNs are outlined in a set of WHO guidelines, last updated in 2013 [9]. As part of these guidelines, WHO recommends a set of standardised laboratory tests to ascertain the bioefficacy of pyrethroid ITNs, i.e., the ability of ITN products to kill, incapacitate (knock down) and prevent mosquitoes from blood-feeding. Laboratory bioefficacy tests are also a critical component of ITN durability evaluation used to confirm continued ITN bioefficacy after long-term use in the community [10]. The simplest and most commonly applied ITN bioefficacy test is the WHO cone bioassay where mosquitoes are held close to ITN in plastic cones and the number of mosquitoes knocked down (incapacitated) or killed is counted [9]. For ITNs with feeding inhibition mode of action, the WHO tunnel test is used, where a swatch of ITN with small holes (9 x 1-cm diameter) is made and is placed between mosquitoes and small animal bait overnight [11]. The WHO tunnel test has been shown to agree with experimental but data, using laboratory-reared mosquitoes released into the huts [12]. Thresholds for the mosquito knockdown rate (95%) and mosquito mortality rate (80%) and blood-feeding inhibition (90%) using pyrethroid-susceptible _Anopheles_ mosquitoes serve as performance benchmarks; candidate products are required to fulfill minimum performance standards, which have been established by WHO for qualification to be listed/recommended for their public health values to sustain and protect users from disease transmissions. This includes their physical durability and chemical contents recovered from nets replaced in the field over 3 years or as predicted from wash-resistance testing. For a net to be classified as a long-lasting ITN, i.e., LLIN, > 80% of nets tested should pass WHO cone/tunnel performance benchmarks after 3 years of use [13].\n", + "\n", + "Cone tests are relatively easy to perform, high throughput and sensitive to detecting changes in bioavailable pyrethroids that act through rapid contact neurotoxicity. However, chlorfenapyr requires the mosquito to be metabolically and/or physiologically active (as it would be when encountering the ITN under user conditions) to bioactivate into the potent n-dealkylated form which elicits increased mosquito mortality. As mosquitoes are more metabolically active at night when flying and host-seeking during their typical circadian rhythms, the tunnel test may be more appropriate [14].\n", + "\n", + "The President's Malaria Initiative (PMI) currently uses WHO Tunnel tests for the durability monitoring of chlorfenapyr nets with 4 samples per net evaluated and 48 nets per sampling point [15]. This requires large numbers of mosquitoes and access to small animals for testing, so it cannot be done at all facilities in malaria-endemic areas. To accommodate high-throughput evaluation of whole ITNs for durability evaluation, the Ifakara ambient chamber test (I-ACT) was developed [16]. The Ifakara ambient chamber test (I-ACT) is not currently a recognized method \n", + "approved by the WHO. However, it is currently seeking confirmation by direct comparison to approved methods. This is of particular importance where novel slow-acting chemistries cannot achieve the benchmark standards established for conventional pyrethroid ITN exposures yet may prove to be highly efficacious when tested according to their discrete modes of action. Like the experimental hut, I-ACT makes use of whole nets and human hosts to evaluate bioefficacy of field-used ITNs, but the assay is done under controlled conditions with laboratory-reared mosquitoes. Mosquitoes are released into net chambers within which the test net is hung with a volunteer sleeping beneath, and all mosquitoes are recaptured in the morning. The use of laboratory mosquitoes (rather than conducting experimental hut trials with wild mosquitoes) is done to improve the precision of estimates by releasing mosquito cohorts of a defined number of mosquitoes with high recapture rate (99%) at the conclusion of exposure intervals.\n", + "\n", + "I-ACT bioassay has been used for evaluation of pyrethroid ITNs, was able to discriminate between products [17] and agreed with results of combined WHO cone and tunnel tests [16]. The I-ACT may show suitability for use in evaluation of pro-insecticides because: (i) the assay is run overnight, favouring malarial mosquitoes' circadian rhythms, (ii) the mosquitoes have a large arena to fly in, allowing them to be metabolically active, (iii) the mosquitoes have the opportunity to feed ad libitum and (iv) the I-ACT test eliminates infected mosquitoes that may represent a malaria transmission potential that cannot be completely excluded in WHO experimental huts--a significant safety benefit to volunteers. Therefore, the I-ACT method was evaluated alongside standard methods (i.e., experimental huts, WHO cone and tunnel tests) to provide direct evidence of its comparability. Interceptor(r) (alpha-cypermethrin only) and Interceptor(r) G2 (alpha-cypermethrin and chlorfenapyr) were evaluated to compare the performance of each assay for durability monitoring of pro-insecticidal ITNs.\n", + "\n", + "header: Considerations for each bioassay\n", + "\n", + "Both I-ACT and experimental huts use the whole bednet and human host, which represent user conditions; however, there is no risk of disease for human participants in I-ACT because the mosquitoes used are laboratory reared. The WHO tunnel test is a well-established bioassay that has been shown to agree with experimental hut tests in this evaluation as well as others [12, 14]. However, it tests only a sample of net and is therefore only able to accurately measure the chemical durability of an ITN and not the chemical _and_ physical durability. In addition, it requires a high number of mosquitoes (100 per replicate) and more testing days compared to I-ACT. In I-ACT there is possibility of testing more than one species or strain per chamber compared to tunnel test, which makes results more comparable. The I-ACT is a new assay that consistently predicts the results of experimental hut tests, measures with a similar magnitude of difference as a tunnel test and provides high-throughput and precise estimates of whole ITN protective efficacy in this study with chlorfenapyr as well as in previous studies with pyrethroid nets [17] at lower cost than tunnel tests. However, this method is yet to become a WHO/PQ-accepted testing modality despite the observed higher precision vs. current WHO-recommended modalities. The detailed descriptions of cost implications for each bioassay and how to build an I-ACT with the cost of \n", + "establishment are described in Additional file 1: Table S4 and Additional file 2 respectively.\n", + "\n", + "Laboratory and/or semi-field bioassays are not replacements for field evaluation, but they are useful if they can predict the results of field tests because they are substantially cheaper and more standardised. Experimental hut tests remain the gold standard test because they represent field conditions and can be related to public health impact [48]. However, variation in mosquito entrance in huts per night is highly heterogeneous and requires a high level of replication to achieve precision [23]. In addition, variation in hut designs affects outcome measurement [34] and should be considered when interpreting results. However, comparing between products, the same trends were consistently seen: Interceptor(r) G2 was superior to Interceptor(r) against resistant mosquitoes when they were tested in a \"free-flying\" scenario and Interceptor(r) was superior to Interceptor(r) G2 against susceptible strains, while the cone test was suitable for evaluating pyrethroids but not pro-insecticides such as chlorfenapyr.\n", + "\n", + "header: Discussion\n", + "\n", + "The superiority of Interceptor(r) G2 over Interceptor(r) for 72-h mortality endpoints, which challenged metabolically resistant _An. arabiensis_ and _Cx. quinquefasciatus_, was clearly seen in all \"free-flying\" bioassays but not in the WHO cone test where mosquitoes are unable to fly around and be metabolically active. This observation has been seen by several other authors [14, 25-27] leading to a consensus that the overnight tunnel test using a 72-h mortality endpoint is a superior laboratory bioassay for evaluation of chlorfenapyr [2, 28] relative to the cone test, which was designed to test contact insecticides that do not require metabolic conversion into a secondary metabolite (most ITN insecticides are classified as IRAC Group 3 sodium channel modulators). It has been routinely observed in experimental hut bioassays that Interceptor(r) G2 gives greater mortality that Interceptor(r) among pyrethroid-resistant mosquitoes [14, 25-27], while mosquitoes are foraging at night when their metabolic rate is high. Both the tunnel test and the I-ACT consistently predicted the superiority of Interceptor(r) G2 over Interceptor(r) observed in experimental hut tests.\n", + "\n", + "The results of this study's mortality elicited on _Cx. quinqufaciatus_ from chlorfenapyr is consistent with other studies over the past decade [29, 30]. Preliminary investigations for chlorfenapyr intoxication in metabolically resistant _Cx. quinquefasciatus_ in experimental huts by [31] demonstrated relatively high levels of control in both ITNs and for IRS in Benin. Later, [27] observed 3 x mortality with chlorfenapyr + alpha-cypermethrin-treated nets compared to pyrethroid-only nets demonstrating the effect of chlorfenapyr on free-flying exposures that optimize conversion rates of the pro-insecticide. However, it is also known that once ITNs develop holes, a pyrethroid treatment offers little or no protection against pyrethroid-resistant _Cu. quinquefaciatus_[32]. The relatively high level of control sustained in _Cx. quinqufaciatus_ in this study and relatively good mortality are important resistance management attributes that make inclusion of chlorfenapyr into vector control interventions a significant advancement for active ingredient options.\n", + "\n", + "header: Cone test results: Use of I-ACT for durability monitoring\n", + "\n", + "I-ACT is designed to be a bridging bioassay that reproduces a more natural interaction between the mosquito and human hosts beneath a bednet [16]. Blood-feeding inhibition and 72-h mortality measured by WHO tunnel and I-ACT were similar, meaning that the use of I-ACT for durability monitoring using WHO thresholds of 80% mortality and 90% feeding inhibition is appropriate. We suggest that I-ACT can be a useful alternative to tunnel tests for bioefficacy monitoring and upstream product evaluation as both the bioassays measure a similar odds ratio and I-ACT gives a precise estimation of bioefficacy because it uses laboratory-reared mosquitoes. This is particularly important when considering the longitudinal evaluation of product performance as occurs in durability bioefficacy evaluation for two reasons. Currently, experimental huts tests are being used to evaluate the insecticidal durability of Interceptor(r) G2 [33]. It was been observed at all experimental hut testing sites that mosquito resistance to insecticides has intensified through time [34]. This needs to be factored into considerations about durability testing. ITN protection may wane more quickly against more resistant mosquito populations as nets age [35], and if older ITNs are tested 3 years after baseline efficacy has been calculated, it is possible that they will be tested against a more resistant mosquito population than that at baseline. Therefore, use of carefully maintained laboratory strains may be helpful to minimise differences in insecticide resistance levels. Second, a previous longitudinal durability trial of ITNs [17] using standard WHO cone and tunnel tests as well as I-ACT shows that ITNs are highly heterogeneous, with up to 100% variance after use (John Bradley personal communication), because of variable use practices (washing, drying, care, sleeping space) [36, 37] that result in differential levels of damage and insecticide content [38]. This fact, coupled with WHO/PQ accepted intra-net insecticidal manufacturing heterogeneities [39], shows the need to expedite testing modalities that improve comprehension of net performances by donor organisations, national malaria control programmes (NMCPs) and manufacturers alike.\n", + "\n", + "header: WHO cone bioassays\n", + "\n", + "WHO cone tests were performed between October 2020 and February 2021 according to standard WHO procedures [9], with two modifications: the test board was set at 60deg tilt [19] and holes were cut in the boards (Fig. 1) to maximise mosquito contact with the test nets during exposures. From each treatment arm, three nets were randomly sampled, and five net swatches of 25 cm x 25 cm size were cut from positions 1 to 5. On each netting sample, four standard WHO cones were positioned over net swatches and secured in place using tape. Five laboratory-bred mosquitoes were introduced into each cone and exposed for 3 min, and four replicates were conducted per net piece (20 mosquitoes were exposed per net piece).\n", + "\n", + "After each exposure, the mosquitoes were removed gently from the cones (by mouth aspiration), placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Knockdown (KD60) was recorded after 60 min and mortality at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Acceptable control mortality was <= 10% after 72 h holding time. Any tests exceeding the specified control cut off were repeated.\n", + "\n", + "header: Sample size and power\n", + "\n", + "A sample size calculation for generalized linear mixed effects models (GLMMs) through simulation [23] in R statistical software 3.02 [https://www.r-project.org/](https://www.r-project.org/) was performed for the I-ACT and experimental huts. For the I-ACT, to detect a 10% effect difference between the nets, simulations were performed using an estimated mosquito mortality of 80% for unwashed Interceptor(r) G2, 70% for unwashed Interceptor(r) and 10% for SafiNet(r) (deliberately holed). The design was for five arms replicated in two groups, with each volunteer testing each treatment one time over 20 replicates within its group (i.e. 40 replicates per arm), with an inter-observational variance of 0.42 for the night of observation based on the variance of the random effects observed in a previous study. The evaluation was powered at 81% for 15 mosquitoes of each strain released per chamber using 1000 simulations.\n", + "\n", + "For experimental huts, simulation was performed using a Latin square design with volunteers rotating nightly and accounted for as a fixed effect for 25 nights of data collection in 10 huts. The study had 84% power to detect the difference between Interceptor(r) G2 LN and Interceptor(r) LN on mosquito mortality endpoints, with two huts per treatment arm (i.e. 50 replicates per arm). The study power was calculated based on a previous study of pyrethroid nets conducted in the same area, with the estimation of 20 _An. arabiensis_ mosquitoes per night per hut, 21% mortality in unwashed Interceptor(r) G2, 7% in 20x washed Interceptor(r) G2 and 10% in unwashed Interceptor(r) vs. 4% in 20 times washed and 1% in negative control, and overdispersion parameter for daily variation was set at intermediate 0.44.\n", + "\n", + "To test whether I-ACT measures similarly to the WHO tunnels (H0\\(m\\)2=_m_1) a power calculation using Satterthwaites _t_-test was conducted in STATA 16 software (StataCorp LLC, College Station TX, USA) for two unpaired sample means assuming unequal variance. The power estimated was > 90% based on estimates from previous studies conducted in the same setting: mean mortality of 81.5% for WHO tunnel test with an assumed daily variation of 0.5 and 15 replicates per arm and mean\n", + "mortality estimates of 86.5% and an assumed daily variation of 0.42 with 40 replicates per arm were considered for I-ACT.\n", + "\n", + "header: Methods\n", + "\n", + "The laboratory bioassays (I-ACT, WHO cone and WHO tunnel tests) were performed at the Vector Control Product Testing Unit (VCPTU) testing facility located at the Bagamoyo branch of Ifakara Health Institute (IHI), Tanzania (6.446deg S and 38.901deg E). The district experiences average annual rainfall of 800 mm-1000 mm, average temperatures between 24 degC and 29 degC and average annual humidity of 73%. The experimental hut study was conducted in Lupiro village (8.385deg S and 36.673deg E) in Ulanga District, southeastern Tanzania. The village is bordered by irrigated rice fields with average annual rainfall of 1200-1800 mm, average temperatures between 20 and 34 degC and average annual humidity of 69%. The main malaria vector is _Anopheles arabiensis_, constituting > 99.9% of the _An. gambiae_ complex species in the last test conducted in November 2020, and resistance to alphabcypermethrin was recorded (57% mortality at 1 x WHO discriminating concentration) at the time of testing.\n", + "\n", + "header: Conclusion\n", + "\n", + "Interceptor(r) G2 clearly demonstrated superior bio-efficacy against resistant mosquitoes compared to Interceptor(r) when mosquitoes were challenged in free-flying bioassays. The I-ACT measured similar odds ratios as the WHO tunnel, currently used for testing of ITNs with chlorfenapyr. Both free-flying laboratory bioassays (WHO tunnel and I-ACT) predicted the results of the experimental hut test. Experimental hut design has an influence on mosquito mortality; however, using the odds ratio, all free-flying tests gave consistent findings. In this setting, I-ACT was a reliable bioassay for bioefficacy testing of Interceptor(r) G2 and may be a useful additional bioassay for durability monitoring of ITNs treated with pro-insecticides.\n", + "\n", + "header: Publisher's Note\n", + "\n", + "Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.\n", + "\n", + "header: Test nets\n", + "\n", + "ITNs were supplied by BASF in November 2019 and stored at optimal conditions (25 to 32 degC) before testing and during the experimental phase. Interceptor(r) G2 nets were from two different production batches (two batches were used for experimental hut only and one batch for other biossays) and Interceptor(r) from one production batch. Interceptor(r) G2 is made from 100-denier polyester coated with a mixture of wash-resistant formulation containing 200 mg/m2 chlorfenapyr and 100 mg/m2alpha-cypermethrin. Interceptor(r) LN is made from 100-denier polyester coated with 200 mg/m2 alpha-cypermethrin. SafiNet is an untreated polyester net manufactured by A to Z. Textiles Mills, Ltd., Tanzania, and was used as a control. The nets were washed 20 times according to a protocol adapted from the standard WHO washing procedure [9] using 20 g/l palm soap (Jamaa) and dried flat in a shaded area. The interval of time used between two washes (i.e. regeneration time) was 1 day for both Interceptor(r) G2 and Interceptor(r) TTNs.\n", + "\n", + "header: Mosquito test systems\n", + "\n", + "IHI laboratory maintains local mosquito strains with resistant mechanisms present in the local population to\n", + "avoid accidental release of new resistance alleles into the wild population. Four types of laboratory-reared mosquitoes with different resistance levels (confirmed at the time of testing) were used in the WHO cone, WHO tunnel and I-ACT tests: _Anopheles arabiensis_ (Kingani strain, upregulation of cytochrome p450s, 14% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is reversed by piperonyl butoxide (PBO) pre-exposure, which acts to block enzymatic detoxification mechanisms by inhibiting their metabolism), _Anopheles gambiae_ s.s. (Kisumu strain, fully susceptible to all insecticide classes at WHO discriminating doses), _Aedes aegypti_ (Bagamoyo strain, fully susceptible to all insecticide classes at WHO discriminating doses) and _Culex quinquefasciatus_ (Bagamoyo strain, 6% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is partially reversed (only moderate susceptibility is restored from inhibition of detoxifying mechanism) by PBO pre-exposure). In I-ACT and tunnel tests, sugar-starved (8 to 9 h) nulliparous female mosquitoes, 5-8 days old, were used. For cone bioassay, 2-5-day-old nulliparous sugar-fed female mosquitoes were challenged. Laboratory colonies were maintained by feeding larvae Tetramin(r) tropical fish food and adults on blood between 3 and 6 days after emergence and 10% sugar solution ad libitum. Temperature and humidity within the insectary are maintained between 27 degC+-5 degC and 40%-100% RH, relatively following MR4 guidelines [18]. For the experimental hut assays, only wild populations of _An. arabiensis_ and _Culex quinquefasciatus_ were collected in sufficient numbers for evaluation.\n", + "\n", + "header: Table 4: Number and proportion of net pieces passing using each laboratory bioassay based on WHO criteria of 80% control corrected mortality, 95% knockdown in WHO cone test, 90% blood-feeding inhibition or 80% control corrected mortality in tunnel test\n", + "footer: The WHO criteria for tunnel were adopted for I-ACT. Whole nets were used for I-ACT\n", + "columns: ['ITNs type - Unnamed: 0_level_1', 'Number of net pieces passing - Cone (N = 60)', 'Number of net pieces passing - Tunnel (N = 15)', 'Number of net pieces passing - I-ACT (N = 40)']\n", + "\n", + "{\"0\":{\"ITNs type - Unnamed: 0_level_1\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Cone (N = 60)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"Anopheles arabiensis (Kingani strain, resistant)\"},\"1\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":\"n (%)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"n (%)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"n (%)\"},\"2\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"11 (73)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"3\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"22 (37)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"13 (87)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"4\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"5\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"12 (80)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"36 (90)\"},\"6\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"21 (35)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"10 (67)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"7\":{\"ITNs type - Unnamed: 0_level_1\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Cone (N = 60)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"An. gambiae ss. (Kisumu strain, susceptible)\"},\"8\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"9\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"50 (83)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"10\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"2 (3)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"14 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"11\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"12\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"38 (63)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"13\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"10 (17)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"}}\n", + "\n", + "header: Resistant mosquitoes\n", + "\n", + "For pyrethroid-resistant _An. arabiensis_, blood-feeding inhibition was lower with Interceptor(r) G2 than Interceptor(r) in WHO tunnel: 87.8% (95% CI: 82.9- 92.7) vs. 92.9% (95% CI: 89.8-96.0) OR blood-fed = 1.92 [95% CI:14.8-2.48], \\(p\\) < 0.001 and I-ACT: 89.8% (95% CI: 85.8-93.7) vs. 93.9% (95% CI: 91.5-96.3) (OR blood-fed = 1.67 [95% CI: 1.07-2.62], \\(p\\) = 0.024). There was no difference between the two products measured in experimental huts: 95.9% (95% CI: 93.7-98.2) vs. 96.3% (95% CI: 93.0-99.7) (OR blood-fed = 1.06 [95% CI: 0.54-2.10], \\(p\\) = 0.857). A similar trend was observed for the 20x washed nets.\n", + "\n", + "Blood-feeding inhibition was similar for Interceptor(r) G2 compared to Interceptor(r) with _Cx. Quinquefasciatus_ in WHO tunnel: 97.8% (95CI: 96.1-99.5) vs. 97.1% (95% CI: 95.9-98.3) (OR blood fed = 1.36 [95% CI: 0.85-2.17], \\(p\\) = 0.196) and experimental huts: 97.2% (95% CI: 95.9-98.4) vs. 97.2% (95% CI: 95.8-98.7) (OR = 1.04 [95% CI: 0.76-1.42], \\(p\\) = 0.827), whilst in I-ACT the difference was significantly different: 99.0% (95% CI: 98.1-99.9) vs. 91.3% (95% CI: 88.6-93.9) (OR blood fed = 0.11 [95% CI: 0.05-0.26], \\(p\\) < 0.001). A similar trend was observed for the 20x washed nets (Fig. 3a, b, Table 3). The percentage blood-feeding inhibition and mean difference between bioassays for all mosquito species are presented in Additional file 1: Table S2.\n", + "\n", + "header: Table 2 Logistic regression analysis to compare mosquito mortality in Interceptor® and Interceptor® G2 ITNs after exposure in WHO cone and tunnel tests, Ifakara ambient chamber test and experimental hut, Tanzania\n", + "footer: Odds ratio adjusted for net type, volunteer, hut position/number and day of the experiment\n", + "Laboratory-reared mosquitoes were used for WHO cone, WHO tunnel and I-ACT\n", + "For the experimental hut trial, the ITNs were tested against free-flying wild pyrethroid-resistant Anopheles arabiensis and Culex quinquefasciatus in Lupiro, Ifakara\n", + "*p-value>0.05\n", + "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1', 'WHO cone - OR (95% CI)', 'Tunnel - OR (95% CI)', 'I-ACT - OR (95% CI)', 'Hut - OR (95% CI)', 'Huts with netting window - OR (95% CI)']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Anopheles anabiensis (resistant)\",\"WHO cone - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Tunnel - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"I-ACT - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Hut - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Anopheles anabiensis (resistant)\"},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.03, 0.07)\",\"Tunnel - OR (95% CI)\":\"1.33 (1.17, 1.51)\",\"I-ACT - OR (95% CI)\":\"1.55 (1.16, 2.07)\",\"Hut - OR (95% CI)\":\"2.38 (2.09, 2.72)\",\"Huts with netting window - OR (95% CI)\":\"2.43 (1.88, 3.14)\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.05 (0.20, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.42 (1.19, 1.70)\",\"I-ACT - OR (95% CI)\":\"1.61 (1.05, 2.49)\",\"Hut - OR (95% CI)\":\"2.53 (1.96, 3.26)\",\"Huts with netting window - OR (95% CI)\":\"2.55 (1.76, 3.68)\"},\"7\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"8\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"9\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.2, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.23 (1.03, 1.48)\",\"I-ACT - OR (95% CI)\":\"1.50 (1.02, 2.23)\",\"Hut - OR (95% CI)\":\"2.36 (2.02, 2.77)\",\"Huts with netting window - OR (95% CI)\":\"2.32 (1.63, 3.31)\"},\"10\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Culex quinquefasciatus (resistant)\",\"WHO cone - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Tunnel - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"I-ACT - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Hut - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\"},\"11\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"12\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"13\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.05 (0.57, 1.93)*\",\"Tunnel - OR (95% CI)\":\"2.55 (2.26, 2.55)\",\"I-ACT - OR (95% CI)\":\"13.40 (10.75, 16.67)\",\"Hut - OR (95% CI)\":\"1.50 (1.31, 1.73)\",\"Huts with netting window - OR (95% CI)\":\"1.40 (1.19, 1.63)\"},\"14\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"15\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"16\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.74 (0.31, 1.79)*\",\"Tunnel - OR (95% CI)\":\"2.52 (2.13, 3.00)\",\"I-ACT - OR (95% CI)\":\"12.71 (9.43, 17.14)\",\"Hut - OR (95% CI)\":\"1.52 (1.23, 1.88)\",\"Huts with netting window - OR (95% CI)\":\"1.25 (1.00, 1.57)\"},\"17\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"18\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"19\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.46 (0.62, 3.50)*\",\"Tunnel - OR (95% CI)\":\"2.58 (2.17, 3.06)\",\"I-ACT - OR (95% CI)\":\"14.11 (10.42, 19.11)\",\"Hut - OR (95% CI)\":\"1.50 (1.25, 1.80)\",\"Huts with netting window - OR (95% CI)\":\"1.55 (1.24, 1.94)\"},\"20\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"An gambiae s.s. (susceptible)\",\"WHO cone - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Tunnel - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"I-ACT - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Hut - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"An gambiae s.s.\n", + "\n", + "header: Statistical analysis\n", + "\n", + "Data were entered and validated in Excel using double entry system and exported into STATA 16 software (StataCorp LLC, College Station TX, USA) for further cleaning and analysis. Descriptive statistics were used for data summarization, where arithmetic mean percentage of mosquito control corrected mortality at 72 h and arithmetic mean percentage blood-feeding inhibition for each test and species was presented. Control corrected mortality was calculated by using Abbott's formula: (treatment mortality - control mortality/(1 - control mortality)*100% and blood-feeding inhibition was calculated by taking the total number of unfed mosquitoes divided by total mosquito recapture per hut night [24].\n", + "\n", + "Multivariable mixed-effect logistic regression with binomial error and log link was used to compare the performance of Interceptor(r) G2 to Interceptor(r) on the mortality and blood-feeding endpoints for each species in WHO cone (mortality only), tunnel, I-ACT and experimental huts. Fixed effects were treatment, volunteer, hut number/position (for experimental hut) and night of the experiment. The same regression was used for the comparison of hut design, whereby an interaction term between hut design and ITN type was also included in the model.\n", + "\n", + "header: Table 1: Outcomes measured in WHO cone bioassays, tunnel, I-ACT and experimental hut tests\n", + "footer: a Not reported\n", + "columns: ['Variable', 'Cone bioassay', 'WHO tunnel test', 'I-ACT', 'Experimental hut']\n", + "\n", + "{\"0\":{\"Variable\":\"Primary outcome\",\"Cone bioassay\":\"72-h mortality\",\"WHO tunnel test\":\"72-h mortality\",\"I-ACT\":\"72-h mortality\",\"Experimental hut\":\"72-h mortality\"},\"1\":{\"Variable\":\"Secondary outcome\",\"Cone bioassay\":null,\"WHO tunnel test\":\"Blood-feeding\",\"I-ACT\":\"Blood-feeding\",\"Experimental hut\":\"Blood-feeding\"},\"2\":{\"Variable\":\"Other outcomes\",\"Cone bioassay\":\"Knockdown at 60 min (KD60)\",\"WHO tunnel test\":null,\"I-ACT\":null,\"Experimental hut\":\"Deterrence a and induced exophily a\"}}\n", + "\n", + "header: Impact of hut design on mosquito mortality estimates\n", + "\n", + "To explore the effect of experimental hut design on the measured efficacy of the ITNs, two experiments were conducted between July and August 2021 using ten huts with the same five treatment arms as per the main experimental huts experiment. For the first experiment, conducted over 5 nights, windows were completely covered with white cloth to block light, ventilation and exit. For the remaining 25 nights, 5 huts had windows blocked with netting to allow light and ventilation but to block exit and five huts had exit traps as per main trial. Like the main experimental hut trial, the design was a fully balanced 5 x 5 Latin square with five huts per condition (window exit traps vs. netting windows). Each morning mosquitoes were sorted, scored and held for 72 h to observe delayed mortality for each treatment arm.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: WHO tunnel test\n", + "\n", + "The tunnel tests were carried out from August to November 2020 according to standard WHO procedures [9]. Five 25 cm x 25 cm net pieces per ITN/control were cut adjacent to the swatches cut for cone assays from three nets per treatment arm to make a total of 15 pieces per study arm and to account for possible intra-net variability of insecticide loadings. Five tunnels were run with one sample from each treatment arm with one mosquito strain on a single night. Over 60 nights, all 15 pieces of ITNs per study arm were tested with four mosquito strains.\n", + "\n", + "Non-blood-fed nulliparous females, 5-8 days old, sugar starved for 6-8 h were released in a 60-cm-long glass tunnel. At each end of the tunnel, a 25-cm square mosquito cage covered with polyester netting was fitted. At one third of the length, the netting sample was affixed. The surface of netting \"available\" to mosquitoes is 400 cm2 (20 cm x 20 cm), with 9 x 1-cm-diameter holes: one hole is located at the centre of the square; the other eight were equidistant and located 5 cm from the border. In the shorter section of the tunnel, a small rabbit, its back shaved and restrained in a mesh tunnel, was placed as bait (Fig. 1). In the cage at the end of the longer section of the tunnel, 100 female mosquitoes (one strain \n", + "per replicate) were introduced at 21:00. The following morning at 09:00, the mosquitoes were removed using a mouth aspirator and counted separately from each section of the tunnel, and mortality and blood-feeding rates were recorded. The mosquitoes were placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Mortality was recoded at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Overall mortality was measured by pooling the mortalities of mosquitoes from the two sections of the tunnel. Acceptable feeding success and mortality in controls were 50% and 10%, respectively. Any tests not meeting the specified control cut-off were repeated.\n", + "\n", + "header: Mosquito blood-feeding in WHO tunnel, I-ACT and experimental hut\n", + "\n", + "For all bioassays and strains, blood-feeding inhibition was very high (Fig. 3, Table 3). Both Interceptor(r) G2 and Interceptor(r) gave high levels of blood-feeding inhibition in all \"free-flying\" bioassays.\n", + "\n", + "header: Background\n", + "\n", + "As funding for malaria control falls and mosquito resistance to current public health insecticides increases, new and durable vector control tools that utilise new insecticide classes are needed [1]. For insecticide resistance management, a new Insecticide Treated Net (ITN) Interceptor(r) G2 has been developed, coated with a mixture of the pyrethroid alpha-cypermethrin and the pro-insecticide chlorfenapyr [2]. Chlorfenapyr is an Insecticide Resistance Action Committee (IRAC) Group 13 insecticide, having a pyrrole chemistry that uncouples oxidative phosphorylation via disruption of the proton gradient (as a protonophore) to short circuit mitochondrial respiration through inner mitochondrial membranes of insect cells so that ATP cannot be synthesized, subsequently robbing insects of energy, resulting in death [3, 4]. Metabolic resistance is one of the main mechanisms of resistance observed in malaria vectors [5] where one or several detoxification gene families--cytochrome P450s (P450s), esterases and glutathione S-transferases (GSTs)--are overproduced to detoxify insecticides [6]. While this metabolism is a detoxification process, it can increase the potency of a pro-insecticide and may therefore be exploited as a means to control metabolically resistant insect populations [3]. The unique mode of action of chlorfenapyr on an insect's metabolism is particularly relevant for the control of vectors harboring insecticide resistance mechanisms, as increased metabolic activity increases the conversion of the pro-insecticide into its potent n-dealkylated form and will consequently increase mosquito mortality [7].\n", + "\n", + "For any new ITN to be used in public health, a thorough evaluation of its safety, efficacy and effectiveness is conducted based on World Health Organisation (WHO) standards and criteria [8]. The methods and scope of the laboratory tests and field trials required to attain WHO Prequalification (PQ) listing for ITNs are outlined in a set of WHO guidelines, last updated in 2013 [9]. As part of these guidelines, WHO recommends a set of standardised laboratory tests to ascertain the bioefficacy of pyrethroid ITNs, i.e., the ability of ITN products to kill, incapacitate (knock down) and prevent mosquitoes from blood-feeding. Laboratory bioefficacy tests are also a critical component of ITN durability evaluation used to confirm continued ITN bioefficacy after long-term use in the community [10]. The simplest and most commonly applied ITN bioefficacy test is the WHO cone bioassay where mosquitoes are held close to ITN in plastic cones and the number of mosquitoes knocked down (incapacitated) or killed is counted [9]. For ITNs with feeding inhibition mode of action, the WHO tunnel test is used, where a swatch of ITN with small holes (9 x 1-cm diameter) is made and is placed between mosquitoes and small animal bait overnight [11]. The WHO tunnel test has been shown to agree with experimental but data, using laboratory-reared mosquitoes released into the huts [12]. Thresholds for the mosquito knockdown rate (95%) and mosquito mortality rate (80%) and blood-feeding inhibition (90%) using pyrethroid-susceptible _Anopheles_ mosquitoes serve as performance benchmarks; candidate products are required to fulfill minimum performance standards, which have been established by WHO for qualification to be listed/recommended for their public health values to sustain and protect users from disease transmissions. This includes their physical durability and chemical contents recovered from nets replaced in the field over 3 years or as predicted from wash-resistance testing. For a net to be classified as a long-lasting ITN, i.e., LLIN, > 80% of nets tested should pass WHO cone/tunnel performance benchmarks after 3 years of use [13].\n", + "\n", + "Cone tests are relatively easy to perform, high throughput and sensitive to detecting changes in bioavailable pyrethroids that act through rapid contact neurotoxicity. However, chlorfenapyr requires the mosquito to be metabolically and/or physiologically active (as it would be when encountering the ITN under user conditions) to bioactivate into the potent n-dealkylated form which elicits increased mosquito mortality. As mosquitoes are more metabolically active at night when flying and host-seeking during their typical circadian rhythms, the tunnel test may be more appropriate [14].\n", + "\n", + "The President's Malaria Initiative (PMI) currently uses WHO Tunnel tests for the durability monitoring of chlorfenapyr nets with 4 samples per net evaluated and 48 nets per sampling point [15]. This requires large numbers of mosquitoes and access to small animals for testing, so it cannot be done at all facilities in malaria-endemic areas. To accommodate high-throughput evaluation of whole ITNs for durability evaluation, the Ifakara ambient chamber test (I-ACT) was developed [16]. The Ifakara ambient chamber test (I-ACT) is not currently a recognized method \n", + "approved by the WHO. However, it is currently seeking confirmation by direct comparison to approved methods. This is of particular importance where novel slow-acting chemistries cannot achieve the benchmark standards established for conventional pyrethroid ITN exposures yet may prove to be highly efficacious when tested according to their discrete modes of action. Like the experimental hut, I-ACT makes use of whole nets and human hosts to evaluate bioefficacy of field-used ITNs, but the assay is done under controlled conditions with laboratory-reared mosquitoes. Mosquitoes are released into net chambers within which the test net is hung with a volunteer sleeping beneath, and all mosquitoes are recaptured in the morning. The use of laboratory mosquitoes (rather than conducting experimental hut trials with wild mosquitoes) is done to improve the precision of estimates by releasing mosquito cohorts of a defined number of mosquitoes with high recapture rate (99%) at the conclusion of exposure intervals.\n", + "\n", + "I-ACT bioassay has been used for evaluation of pyrethroid ITNs, was able to discriminate between products [17] and agreed with results of combined WHO cone and tunnel tests [16]. The I-ACT may show suitability for use in evaluation of pro-insecticides because: (i) the assay is run overnight, favouring malarial mosquitoes' circadian rhythms, (ii) the mosquitoes have a large arena to fly in, allowing them to be metabolically active, (iii) the mosquitoes have the opportunity to feed ad libitum and (iv) the I-ACT test eliminates infected mosquitoes that may represent a malaria transmission potential that cannot be completely excluded in WHO experimental huts--a significant safety benefit to volunteers. Therefore, the I-ACT method was evaluated alongside standard methods (i.e., experimental huts, WHO cone and tunnel tests) to provide direct evidence of its comparability. Interceptor(r) (alpha-cypermethrin only) and Interceptor(r) G2 (alpha-cypermethrin and chlorfenapyr) were evaluated to compare the performance of each assay for durability monitoring of pro-insecticidal ITNs.\n", + "\n", + "header: Selection of the correct strain for bioassay\n", + "\n", + "The current study demonstrated that using the correct mosquito strain when evaluating ITNs is a critical consideration. The benefit of chlorfenapyr was only seen against the resistant strains, and against the susceptible strains Interceptor(r) was more efficacious because it contains a higher dose of alphacypermethrin. Comparing between the products using both a susceptible and a resistant strain revealed the different modes of action of Interceptor(r) and Interceptor(r) G2.\n", + "\n", + "header: Considerations for each bioassay\n", + "\n", + "Both I-ACT and experimental huts use the whole bednet and human host, which represent user conditions; however, there is no risk of disease for human participants in I-ACT because the mosquitoes used are laboratory reared. The WHO tunnel test is a well-established bioassay that has been shown to agree with experimental hut tests in this evaluation as well as others [12, 14]. However, it tests only a sample of net and is therefore only able to accurately measure the chemical durability of an ITN and not the chemical _and_ physical durability. In addition, it requires a high number of mosquitoes (100 per replicate) and more testing days compared to I-ACT. In I-ACT there is possibility of testing more than one species or strain per chamber compared to tunnel test, which makes results more comparable. The I-ACT is a new assay that consistently predicts the results of experimental hut tests, measures with a similar magnitude of difference as a tunnel test and provides high-throughput and precise estimates of whole ITN protective efficacy in this study with chlorfenapyr as well as in previous studies with pyrethroid nets [17] at lower cost than tunnel tests. However, this method is yet to become a WHO/PQ-accepted testing modality despite the observed higher precision vs. current WHO-recommended modalities. The detailed descriptions of cost implications for each bioassay and how to build an I-ACT with the cost of \n", + "establishment are described in Additional file 1: Table S4 and Additional file 2 respectively.\n", + "\n", + "Laboratory and/or semi-field bioassays are not replacements for field evaluation, but they are useful if they can predict the results of field tests because they are substantially cheaper and more standardised. Experimental hut tests remain the gold standard test because they represent field conditions and can be related to public health impact [48]. However, variation in mosquito entrance in huts per night is highly heterogeneous and requires a high level of replication to achieve precision [23]. In addition, variation in hut designs affects outcome measurement [34] and should be considered when interpreting results. However, comparing between products, the same trends were consistently seen: Interceptor(r) G2 was superior to Interceptor(r) against resistant mosquitoes when they were tested in a \"free-flying\" scenario and Interceptor(r) was superior to Interceptor(r) G2 against susceptible strains, while the cone test was suitable for evaluating pyrethroids but not pro-insecticides such as chlorfenapyr.\n", + "\n", + "header: Sample size and power\n", + "\n", + "A sample size calculation for generalized linear mixed effects models (GLMMs) through simulation [23] in R statistical software 3.02 [https://www.r-project.org/](https://www.r-project.org/) was performed for the I-ACT and experimental huts. For the I-ACT, to detect a 10% effect difference between the nets, simulations were performed using an estimated mosquito mortality of 80% for unwashed Interceptor(r) G2, 70% for unwashed Interceptor(r) and 10% for SafiNet(r) (deliberately holed). The design was for five arms replicated in two groups, with each volunteer testing each treatment one time over 20 replicates within its group (i.e. 40 replicates per arm), with an inter-observational variance of 0.42 for the night of observation based on the variance of the random effects observed in a previous study. The evaluation was powered at 81% for 15 mosquitoes of each strain released per chamber using 1000 simulations.\n", + "\n", + "For experimental huts, simulation was performed using a Latin square design with volunteers rotating nightly and accounted for as a fixed effect for 25 nights of data collection in 10 huts. The study had 84% power to detect the difference between Interceptor(r) G2 LN and Interceptor(r) LN on mosquito mortality endpoints, with two huts per treatment arm (i.e. 50 replicates per arm). The study power was calculated based on a previous study of pyrethroid nets conducted in the same area, with the estimation of 20 _An. arabiensis_ mosquitoes per night per hut, 21% mortality in unwashed Interceptor(r) G2, 7% in 20x washed Interceptor(r) G2 and 10% in unwashed Interceptor(r) vs. 4% in 20 times washed and 1% in negative control, and overdispersion parameter for daily variation was set at intermediate 0.44.\n", + "\n", + "To test whether I-ACT measures similarly to the WHO tunnels (H0\\(m\\)2=_m_1) a power calculation using Satterthwaites _t_-test was conducted in STATA 16 software (StataCorp LLC, College Station TX, USA) for two unpaired sample means assuming unequal variance. The power estimated was > 90% based on estimates from previous studies conducted in the same setting: mean mortality of 81.5% for WHO tunnel test with an assumed daily variation of 0.5 and 15 replicates per arm and mean\n", + "mortality estimates of 86.5% and an assumed daily variation of 0.42 with 40 replicates per arm were considered for I-ACT.\n", + "\n", + "header: WHO cone bioassays\n", + "\n", + "WHO cone tests were performed between October 2020 and February 2021 according to standard WHO procedures [9], with two modifications: the test board was set at 60deg tilt [19] and holes were cut in the boards (Fig. 1) to maximise mosquito contact with the test nets during exposures. From each treatment arm, three nets were randomly sampled, and five net swatches of 25 cm x 25 cm size were cut from positions 1 to 5. On each netting sample, four standard WHO cones were positioned over net swatches and secured in place using tape. Five laboratory-bred mosquitoes were introduced into each cone and exposed for 3 min, and four replicates were conducted per net piece (20 mosquitoes were exposed per net piece).\n", + "\n", + "After each exposure, the mosquitoes were removed gently from the cones (by mouth aspiration), placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Knockdown (KD60) was recorded after 60 min and mortality at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Acceptable control mortality was <= 10% after 72 h holding time. Any tests exceeding the specified control cut off were repeated.\n", + "\n", + "header: Test nets\n", + "\n", + "ITNs were supplied by BASF in November 2019 and stored at optimal conditions (25 to 32 degC) before testing and during the experimental phase. Interceptor(r) G2 nets were from two different production batches (two batches were used for experimental hut only and one batch for other biossays) and Interceptor(r) from one production batch. Interceptor(r) G2 is made from 100-denier polyester coated with a mixture of wash-resistant formulation containing 200 mg/m2 chlorfenapyr and 100 mg/m2alpha-cypermethrin. Interceptor(r) LN is made from 100-denier polyester coated with 200 mg/m2 alpha-cypermethrin. SafiNet is an untreated polyester net manufactured by A to Z. Textiles Mills, Ltd., Tanzania, and was used as a control. The nets were washed 20 times according to a protocol adapted from the standard WHO washing procedure [9] using 20 g/l palm soap (Jamaa) and dried flat in a shaded area. The interval of time used between two washes (i.e. regeneration time) was 1 day for both Interceptor(r) G2 and Interceptor(r) TTNs.\n", + "\n", + "header: Cone test results: Use of I-ACT for durability monitoring\n", + "\n", + "I-ACT is designed to be a bridging bioassay that reproduces a more natural interaction between the mosquito and human hosts beneath a bednet [16]. Blood-feeding inhibition and 72-h mortality measured by WHO tunnel and I-ACT were similar, meaning that the use of I-ACT for durability monitoring using WHO thresholds of 80% mortality and 90% feeding inhibition is appropriate. We suggest that I-ACT can be a useful alternative to tunnel tests for bioefficacy monitoring and upstream product evaluation as both the bioassays measure a similar odds ratio and I-ACT gives a precise estimation of bioefficacy because it uses laboratory-reared mosquitoes. This is particularly important when considering the longitudinal evaluation of product performance as occurs in durability bioefficacy evaluation for two reasons. Currently, experimental huts tests are being used to evaluate the insecticidal durability of Interceptor(r) G2 [33]. It was been observed at all experimental hut testing sites that mosquito resistance to insecticides has intensified through time [34]. This needs to be factored into considerations about durability testing. ITN protection may wane more quickly against more resistant mosquito populations as nets age [35], and if older ITNs are tested 3 years after baseline efficacy has been calculated, it is possible that they will be tested against a more resistant mosquito population than that at baseline. Therefore, use of carefully maintained laboratory strains may be helpful to minimise differences in insecticide resistance levels. Second, a previous longitudinal durability trial of ITNs [17] using standard WHO cone and tunnel tests as well as I-ACT shows that ITNs are highly heterogeneous, with up to 100% variance after use (John Bradley personal communication), because of variable use practices (washing, drying, care, sleeping space) [36, 37] that result in differential levels of damage and insecticide content [38]. This fact, coupled with WHO/PQ accepted intra-net insecticidal manufacturing heterogeneities [39], shows the need to expedite testing modalities that improve comprehension of net performances by donor organisations, national malaria control programmes (NMCPs) and manufacturers alike.\n", + "\n", + "header: Table 4: Number and proportion of net pieces passing using each laboratory bioassay based on WHO criteria of 80% control corrected mortality, 95% knockdown in WHO cone test, 90% blood-feeding inhibition or 80% control corrected mortality in tunnel test\n", + "footer: The WHO criteria for tunnel were adopted for I-ACT. Whole nets were used for I-ACT\n", + "columns: ['ITNs type - Unnamed: 0_level_1', 'Number of net pieces passing - Cone (N = 60)', 'Number of net pieces passing - Tunnel (N = 15)', 'Number of net pieces passing - I-ACT (N = 40)']\n", + "\n", + "{\"0\":{\"ITNs type - Unnamed: 0_level_1\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Cone (N = 60)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"Anopheles arabiensis (Kingani strain, resistant)\"},\"1\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":\"n (%)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"n (%)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"n (%)\"},\"2\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"11 (73)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"3\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"22 (37)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"13 (87)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"4\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"5\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"12 (80)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"36 (90)\"},\"6\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"21 (35)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"10 (67)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"7\":{\"ITNs type - Unnamed: 0_level_1\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Cone (N = 60)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"An. gambiae ss. (Kisumu strain, susceptible)\"},\"8\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"9\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"50 (83)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"10\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"2 (3)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"14 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"11\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"12\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"38 (63)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"13\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"10 (17)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"}}\n", + "\n", + "header: Resistant mosquitoes\n", + "\n", + "For pyrethroid-resistant _An. arabiensis_, blood-feeding inhibition was lower with Interceptor(r) G2 than Interceptor(r) in WHO tunnel: 87.8% (95% CI: 82.9- 92.7) vs. 92.9% (95% CI: 89.8-96.0) OR blood-fed = 1.92 [95% CI:14.8-2.48], \\(p\\) < 0.001 and I-ACT: 89.8% (95% CI: 85.8-93.7) vs. 93.9% (95% CI: 91.5-96.3) (OR blood-fed = 1.67 [95% CI: 1.07-2.62], \\(p\\) = 0.024). There was no difference between the two products measured in experimental huts: 95.9% (95% CI: 93.7-98.2) vs. 96.3% (95% CI: 93.0-99.7) (OR blood-fed = 1.06 [95% CI: 0.54-2.10], \\(p\\) = 0.857). A similar trend was observed for the 20x washed nets.\n", + "\n", + "Blood-feeding inhibition was similar for Interceptor(r) G2 compared to Interceptor(r) with _Cx. Quinquefasciatus_ in WHO tunnel: 97.8% (95CI: 96.1-99.5) vs. 97.1% (95% CI: 95.9-98.3) (OR blood fed = 1.36 [95% CI: 0.85-2.17], \\(p\\) = 0.196) and experimental huts: 97.2% (95% CI: 95.9-98.4) vs. 97.2% (95% CI: 95.8-98.7) (OR = 1.04 [95% CI: 0.76-1.42], \\(p\\) = 0.827), whilst in I-ACT the difference was significantly different: 99.0% (95% CI: 98.1-99.9) vs. 91.3% (95% CI: 88.6-93.9) (OR blood fed = 0.11 [95% CI: 0.05-0.26], \\(p\\) < 0.001). A similar trend was observed for the 20x washed nets (Fig. 3a, b, Table 3). The percentage blood-feeding inhibition and mean difference between bioassays for all mosquito species are presented in Additional file 1: Table S2.\n", + "\n", + "header: Discussion\n", + "\n", + "The superiority of Interceptor(r) G2 over Interceptor(r) for 72-h mortality endpoints, which challenged metabolically resistant _An. arabiensis_ and _Cx. quinquefasciatus_, was clearly seen in all \"free-flying\" bioassays but not in the WHO cone test where mosquitoes are unable to fly around and be metabolically active. This observation has been seen by several other authors [14, 25-27] leading to a consensus that the overnight tunnel test using a 72-h mortality endpoint is a superior laboratory bioassay for evaluation of chlorfenapyr [2, 28] relative to the cone test, which was designed to test contact insecticides that do not require metabolic conversion into a secondary metabolite (most ITN insecticides are classified as IRAC Group 3 sodium channel modulators). It has been routinely observed in experimental hut bioassays that Interceptor(r) G2 gives greater mortality that Interceptor(r) among pyrethroid-resistant mosquitoes [14, 25-27], while mosquitoes are foraging at night when their metabolic rate is high. Both the tunnel test and the I-ACT consistently predicted the superiority of Interceptor(r) G2 over Interceptor(r) observed in experimental hut tests.\n", + "\n", + "The results of this study's mortality elicited on _Cx. quinqufaciatus_ from chlorfenapyr is consistent with other studies over the past decade [29, 30]. Preliminary investigations for chlorfenapyr intoxication in metabolically resistant _Cx. quinquefasciatus_ in experimental huts by [31] demonstrated relatively high levels of control in both ITNs and for IRS in Benin. Later, [27] observed 3 x mortality with chlorfenapyr + alpha-cypermethrin-treated nets compared to pyrethroid-only nets demonstrating the effect of chlorfenapyr on free-flying exposures that optimize conversion rates of the pro-insecticide. However, it is also known that once ITNs develop holes, a pyrethroid treatment offers little or no protection against pyrethroid-resistant _Cu. quinquefaciatus_[32]. The relatively high level of control sustained in _Cx. quinqufaciatus_ in this study and relatively good mortality are important resistance management attributes that make inclusion of chlorfenapyr into vector control interventions a significant advancement for active ingredient options.\n", + "\n", + "header: Table 1: Outcomes measured in WHO cone bioassays, tunnel, I-ACT and experimental hut tests\n", + "footer: a Not reported\n", + "columns: ['Variable', 'Cone bioassay', 'WHO tunnel test', 'I-ACT', 'Experimental hut']\n", + "\n", + "{\"0\":{\"Variable\":\"Primary outcome\",\"Cone bioassay\":\"72-h mortality\",\"WHO tunnel test\":\"72-h mortality\",\"I-ACT\":\"72-h mortality\",\"Experimental hut\":\"72-h mortality\"},\"1\":{\"Variable\":\"Secondary outcome\",\"Cone bioassay\":null,\"WHO tunnel test\":\"Blood-feeding\",\"I-ACT\":\"Blood-feeding\",\"Experimental hut\":\"Blood-feeding\"},\"2\":{\"Variable\":\"Other outcomes\",\"Cone bioassay\":\"Knockdown at 60 min (KD60)\",\"WHO tunnel test\":null,\"I-ACT\":null,\"Experimental hut\":\"Deterrence a and induced exophily a\"}}\n", + "\n", + "header: Table 2 Logistic regression analysis to compare mosquito mortality in Interceptor® and Interceptor® G2 ITNs after exposure in WHO cone and tunnel tests, Ifakara ambient chamber test and experimental hut, Tanzania\n", + "footer: Odds ratio adjusted for net type, volunteer, hut position/number and day of the experiment\n", + "Laboratory-reared mosquitoes were used for WHO cone, WHO tunnel and I-ACT\n", + "For the experimental hut trial, the ITNs were tested against free-flying wild pyrethroid-resistant Anopheles arabiensis and Culex quinquefasciatus in Lupiro, Ifakara\n", + "*p-value>0.05\n", + "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1', 'WHO cone - OR (95% CI)', 'Tunnel - OR (95% CI)', 'I-ACT - OR (95% CI)', 'Hut - OR (95% CI)', 'Huts with netting window - OR (95% CI)']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Anopheles anabiensis (resistant)\",\"WHO cone - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Tunnel - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"I-ACT - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Hut - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Anopheles anabiensis (resistant)\"},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.03, 0.07)\",\"Tunnel - OR (95% CI)\":\"1.33 (1.17, 1.51)\",\"I-ACT - OR (95% CI)\":\"1.55 (1.16, 2.07)\",\"Hut - OR (95% CI)\":\"2.38 (2.09, 2.72)\",\"Huts with netting window - OR (95% CI)\":\"2.43 (1.88, 3.14)\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.05 (0.20, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.42 (1.19, 1.70)\",\"I-ACT - OR (95% CI)\":\"1.61 (1.05, 2.49)\",\"Hut - OR (95% CI)\":\"2.53 (1.96, 3.26)\",\"Huts with netting window - OR (95% CI)\":\"2.55 (1.76, 3.68)\"},\"7\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"8\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"9\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.2, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.23 (1.03, 1.48)\",\"I-ACT - OR (95% CI)\":\"1.50 (1.02, 2.23)\",\"Hut - OR (95% CI)\":\"2.36 (2.02, 2.77)\",\"Huts with netting window - OR (95% CI)\":\"2.32 (1.63, 3.31)\"},\"10\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Culex quinquefasciatus (resistant)\",\"WHO cone - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Tunnel - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"I-ACT - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Hut - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\"},\"11\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"12\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"13\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.05 (0.57, 1.93)*\",\"Tunnel - OR (95% CI)\":\"2.55 (2.26, 2.55)\",\"I-ACT - OR (95% CI)\":\"13.40 (10.75, 16.67)\",\"Hut - OR (95% CI)\":\"1.50 (1.31, 1.73)\",\"Huts with netting window - OR (95% CI)\":\"1.40 (1.19, 1.63)\"},\"14\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"15\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"16\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.74 (0.31, 1.79)*\",\"Tunnel - OR (95% CI)\":\"2.52 (2.13, 3.00)\",\"I-ACT - OR (95% CI)\":\"12.71 (9.43, 17.14)\",\"Hut - OR (95% CI)\":\"1.52 (1.23, 1.88)\",\"Huts with netting window - OR (95% CI)\":\"1.25 (1.00, 1.57)\"},\"17\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"18\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"19\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.46 (0.62, 3.50)*\",\"Tunnel - OR (95% CI)\":\"2.58 (2.17, 3.06)\",\"I-ACT - OR (95% CI)\":\"14.11 (10.42, 19.11)\",\"Hut - OR (95% CI)\":\"1.50 (1.25, 1.80)\",\"Huts with netting window - OR (95% CI)\":\"1.55 (1.24, 1.94)\"},\"20\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"An gambiae s.s. (susceptible)\",\"WHO cone - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Tunnel - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"I-ACT - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Hut - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"An gambiae s.s.\n", + "\n", + "header: Thresholds are not a good idea in field trials\n", + "\n", + "Mortality measured in the experimental hut is lower than in the WHO tunnel tests or I-ACT meaning that tests\n", + "comparing products are appropriate rather than setting a threshold of efficacy. These study data support the WHO Pesticide Evaluation Scheme (WHOPES) efficacy criteria for phase II studies [9]. This is particularly important for field evaluation of public health tools because insecticide resistance involves highly complex mechanisms, genes and gene interactions [6] that are heterogeneous in time and space [40]. Insecticide resistance is modified by selection pressures from constantly changing environmental parameters, such as insecticide/pesticide usage in agriculture and biotic interactions with other organisms that affect both the overall mosquito responses to insecticides and the selection of resistance mechanisms [41]. However, in all comparisons tested in \"free-flying\" bioassays with resistant mosquito strains, it was possible to predict the superiority of Interceptor(r) G2 over Interceptor(r). Therefore, the use of a standard comparator net to provide performance benchmarks when evaluating the performance of new products is critical. The added value of a new product relative to pyrethroid-only nets has proven extremely useful when synthesising evidence for PBO nets [42].\n", + "\n", + "header: Mosquito test systems\n", + "\n", + "IHI laboratory maintains local mosquito strains with resistant mechanisms present in the local population to\n", + "avoid accidental release of new resistance alleles into the wild population. Four types of laboratory-reared mosquitoes with different resistance levels (confirmed at the time of testing) were used in the WHO cone, WHO tunnel and I-ACT tests: _Anopheles arabiensis_ (Kingani strain, upregulation of cytochrome p450s, 14% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is reversed by piperonyl butoxide (PBO) pre-exposure, which acts to block enzymatic detoxification mechanisms by inhibiting their metabolism), _Anopheles gambiae_ s.s. (Kisumu strain, fully susceptible to all insecticide classes at WHO discriminating doses), _Aedes aegypti_ (Bagamoyo strain, fully susceptible to all insecticide classes at WHO discriminating doses) and _Culex quinquefasciatus_ (Bagamoyo strain, 6% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is partially reversed (only moderate susceptibility is restored from inhibition of detoxifying mechanism) by PBO pre-exposure). In I-ACT and tunnel tests, sugar-starved (8 to 9 h) nulliparous female mosquitoes, 5-8 days old, were used. For cone bioassay, 2-5-day-old nulliparous sugar-fed female mosquitoes were challenged. Laboratory colonies were maintained by feeding larvae Tetramin(r) tropical fish food and adults on blood between 3 and 6 days after emergence and 10% sugar solution ad libitum. Temperature and humidity within the insectary are maintained between 27 degC+-5 degC and 40%-100% RH, relatively following MR4 guidelines [18]. For the experimental hut assays, only wild populations of _An. arabiensis_ and _Culex quinquefasciatus_ were collected in sufficient numbers for evaluation.\n", + "\n", + "header: Conclusion\n", + "\n", + "Interceptor(r) G2 clearly demonstrated superior bio-efficacy against resistant mosquitoes compared to Interceptor(r) when mosquitoes were challenged in free-flying bioassays. The I-ACT measured similar odds ratios as the WHO tunnel, currently used for testing of ITNs with chlorfenapyr. Both free-flying laboratory bioassays (WHO tunnel and I-ACT) predicted the results of the experimental hut test. Experimental hut design has an influence on mosquito mortality; however, using the odds ratio, all free-flying tests gave consistent findings. In this setting, I-ACT was a reliable bioassay for bioefficacy testing of Interceptor(r) G2 and may be a useful additional bioassay for durability monitoring of ITNs treated with pro-insecticides.\n", + "\n", + "header: Study area: Study design\n", + "\n", + "The study was a five-arm comparative efficacy study to determine the performances of Interceptor(r) G2 ITNs and Interceptor(r) against pyrethroid-susceptible and -resistant mosquitoes measured by WHO cone bioassay, WHO tunnel test, Ifakara ambient chamber test (I-ACT) and experimental huts. Study arms were: (i) Interceptor(r) G2, unwashed; (ii) Interceptor(r) G2, washed 20 times; (iii) Interceptor(r), unwashed; (iv) Interceptor(r), washed 20 times; (v) SafNet(r) (negative control). The primary performance metric upon which the study was powered is 72-h mortality (M72), which is measured in all four bioassays. A secondary outcome was blood-feeding, which was measured in the three free-flying bioassays. Additionally, knockdown at 60 min (KD60) was measured in cone tests (Table 1).\n", + "\n", + "header: Susceptible mosquitoes\n", + "\n", + "For unwashed Interceptor(r), blood-feeding inhibition was measured in tunnel and I-ACT and a similar trend was observed in susceptible mosquitoes as was seen in the resistant laboratory strains (Fig. 3c, d, Table 3). For susceptible _An. gambiae_, blood-feeding inhibition was lower with Interceptor(r) G2 than for Interceptor(r) WHO tunnel: 89.7% (95% CI: 83.3-96.1) vs. 94.5% (95% CI: 91.9-97.2), (OR blood fed = 1.95 [95% CI: 1.46, 2.61], \\(p\\) < 0.001) and similar in I-ACT: 97.4% (95% CI: 95.7-99.1) vs. 98.2% (95% CI: 96.8-99.5), (OR blood fed = 1.41 [95% CI: 0.63-3.17], \\(p\\) = 0.407. For susceptible _Ae. Aggyti_ in WHO tunnel, results showed: 93.8% (95% CI:90.6-97.1) vs. 96.3% (95% CI: 94.0-98.7) (OR blood fed = 2.03 [95% CI: 1.40-2.93], \\(p\\) < 0.001) and in I-ACT: 96.8% (95% CI: 94.8-98.9) vs. 98.3% (95% CI: 97.1-99.5) (OR blood fed = 1.92 [95% CI: 0.87-4.24],\n", + "\\(p=0.107\\)). As before, for both species a similar pattern was seen for the 20\\(\\times\\) washed nets.\n", + "\n", + "header: Statistical analysis\n", + "\n", + "Data were entered and validated in Excel using double entry system and exported into STATA 16 software (StataCorp LLC, College Station TX, USA) for further cleaning and analysis. Descriptive statistics were used for data summarization, where arithmetic mean percentage of mosquito control corrected mortality at 72 h and arithmetic mean percentage blood-feeding inhibition for each test and species was presented. Control corrected mortality was calculated by using Abbott's formula: (treatment mortality - control mortality/(1 - control mortality)*100% and blood-feeding inhibition was calculated by taking the total number of unfed mosquitoes divided by total mosquito recapture per hut night [24].\n", + "\n", + "Multivariable mixed-effect logistic regression with binomial error and log link was used to compare the performance of Interceptor(r) G2 to Interceptor(r) on the mortality and blood-feeding endpoints for each species in WHO cone (mortality only), tunnel, I-ACT and experimental huts. Fixed effects were treatment, volunteer, hut number/position (for experimental hut) and night of the experiment. The same regression was used for the comparison of hut design, whereby an interaction term between hut design and ITN type was also included in the model.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"WHO tunnel test\",\"Start_month\":8,\"Start_year\":2020,\"End_month\":11,\"End_year\":2020}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Interceptor G2\",\"Insecticide\":\"alpha-cypermethrin, chlorfenapyr\",\"Concentration_initial\":\"100 mg\\/m2, 200 mg\\/m2\",\"Net_washed\":20.0},\"N02\":{\"Net_type\":\"Interceptor\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2\",\"Net_washed\":20.0},\"N03\":{\"Net_type\":\"SafiNet\",\"Insecticide\":null,\"Concentration_initial\":null,\"Net_washed\":20.0}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: WHO tunnel test\n", + "\n", + "The tunnel tests were carried out from August to November 2020 according to standard WHO procedures [9]. Five 25 cm x 25 cm net pieces per ITN/control were cut adjacent to the swatches cut for cone assays from three nets per treatment arm to make a total of 15 pieces per study arm and to account for possible intra-net variability of insecticide loadings. Five tunnels were run with one sample from each treatment arm with one mosquito strain on a single night. Over 60 nights, all 15 pieces of ITNs per study arm were tested with four mosquito strains.\n", + "\n", + "Non-blood-fed nulliparous females, 5-8 days old, sugar starved for 6-8 h were released in a 60-cm-long glass tunnel. At each end of the tunnel, a 25-cm square mosquito cage covered with polyester netting was fitted. At one third of the length, the netting sample was affixed. The surface of netting \"available\" to mosquitoes is 400 cm2 (20 cm x 20 cm), with 9 x 1-cm-diameter holes: one hole is located at the centre of the square; the other eight were equidistant and located 5 cm from the border. In the shorter section of the tunnel, a small rabbit, its back shaved and restrained in a mesh tunnel, was placed as bait (Fig. 1). In the cage at the end of the longer section of the tunnel, 100 female mosquitoes (one strain \n", + "per replicate) were introduced at 21:00. The following morning at 09:00, the mosquitoes were removed using a mouth aspirator and counted separately from each section of the tunnel, and mortality and blood-feeding rates were recorded. The mosquitoes were placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Mortality was recoded at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Overall mortality was measured by pooling the mortalities of mosquitoes from the two sections of the tunnel. Acceptable feeding success and mortality in controls were 50% and 10%, respectively. Any tests not meeting the specified control cut-off were repeated.\n", + "\n", + "header: Mosquito blood-feeding in WHO tunnel, I-ACT and experimental hut\n", + "\n", + "For all bioassays and strains, blood-feeding inhibition was very high (Fig. 3, Table 3). Both Interceptor(r) G2 and Interceptor(r) gave high levels of blood-feeding inhibition in all \"free-flying\" bioassays.\n", + "\n", + "header: Selection of the correct strain for bioassay\n", + "\n", + "The current study demonstrated that using the correct mosquito strain when evaluating ITNs is a critical consideration. The benefit of chlorfenapyr was only seen against the resistant strains, and against the susceptible strains Interceptor(r) was more efficacious because it contains a higher dose of alphacypermethrin. Comparing between the products using both a susceptible and a resistant strain revealed the different modes of action of Interceptor(r) and Interceptor(r) G2.\n", + "\n", + "header: Background\n", + "\n", + "As funding for malaria control falls and mosquito resistance to current public health insecticides increases, new and durable vector control tools that utilise new insecticide classes are needed [1]. For insecticide resistance management, a new Insecticide Treated Net (ITN) Interceptor(r) G2 has been developed, coated with a mixture of the pyrethroid alpha-cypermethrin and the pro-insecticide chlorfenapyr [2]. Chlorfenapyr is an Insecticide Resistance Action Committee (IRAC) Group 13 insecticide, having a pyrrole chemistry that uncouples oxidative phosphorylation via disruption of the proton gradient (as a protonophore) to short circuit mitochondrial respiration through inner mitochondrial membranes of insect cells so that ATP cannot be synthesized, subsequently robbing insects of energy, resulting in death [3, 4]. Metabolic resistance is one of the main mechanisms of resistance observed in malaria vectors [5] where one or several detoxification gene families--cytochrome P450s (P450s), esterases and glutathione S-transferases (GSTs)--are overproduced to detoxify insecticides [6]. While this metabolism is a detoxification process, it can increase the potency of a pro-insecticide and may therefore be exploited as a means to control metabolically resistant insect populations [3]. The unique mode of action of chlorfenapyr on an insect's metabolism is particularly relevant for the control of vectors harboring insecticide resistance mechanisms, as increased metabolic activity increases the conversion of the pro-insecticide into its potent n-dealkylated form and will consequently increase mosquito mortality [7].\n", + "\n", + "For any new ITN to be used in public health, a thorough evaluation of its safety, efficacy and effectiveness is conducted based on World Health Organisation (WHO) standards and criteria [8]. The methods and scope of the laboratory tests and field trials required to attain WHO Prequalification (PQ) listing for ITNs are outlined in a set of WHO guidelines, last updated in 2013 [9]. As part of these guidelines, WHO recommends a set of standardised laboratory tests to ascertain the bioefficacy of pyrethroid ITNs, i.e., the ability of ITN products to kill, incapacitate (knock down) and prevent mosquitoes from blood-feeding. Laboratory bioefficacy tests are also a critical component of ITN durability evaluation used to confirm continued ITN bioefficacy after long-term use in the community [10]. The simplest and most commonly applied ITN bioefficacy test is the WHO cone bioassay where mosquitoes are held close to ITN in plastic cones and the number of mosquitoes knocked down (incapacitated) or killed is counted [9]. For ITNs with feeding inhibition mode of action, the WHO tunnel test is used, where a swatch of ITN with small holes (9 x 1-cm diameter) is made and is placed between mosquitoes and small animal bait overnight [11]. The WHO tunnel test has been shown to agree with experimental but data, using laboratory-reared mosquitoes released into the huts [12]. Thresholds for the mosquito knockdown rate (95%) and mosquito mortality rate (80%) and blood-feeding inhibition (90%) using pyrethroid-susceptible _Anopheles_ mosquitoes serve as performance benchmarks; candidate products are required to fulfill minimum performance standards, which have been established by WHO for qualification to be listed/recommended for their public health values to sustain and protect users from disease transmissions. This includes their physical durability and chemical contents recovered from nets replaced in the field over 3 years or as predicted from wash-resistance testing. For a net to be classified as a long-lasting ITN, i.e., LLIN, > 80% of nets tested should pass WHO cone/tunnel performance benchmarks after 3 years of use [13].\n", + "\n", + "Cone tests are relatively easy to perform, high throughput and sensitive to detecting changes in bioavailable pyrethroids that act through rapid contact neurotoxicity. However, chlorfenapyr requires the mosquito to be metabolically and/or physiologically active (as it would be when encountering the ITN under user conditions) to bioactivate into the potent n-dealkylated form which elicits increased mosquito mortality. As mosquitoes are more metabolically active at night when flying and host-seeking during their typical circadian rhythms, the tunnel test may be more appropriate [14].\n", + "\n", + "The President's Malaria Initiative (PMI) currently uses WHO Tunnel tests for the durability monitoring of chlorfenapyr nets with 4 samples per net evaluated and 48 nets per sampling point [15]. This requires large numbers of mosquitoes and access to small animals for testing, so it cannot be done at all facilities in malaria-endemic areas. To accommodate high-throughput evaluation of whole ITNs for durability evaluation, the Ifakara ambient chamber test (I-ACT) was developed [16]. The Ifakara ambient chamber test (I-ACT) is not currently a recognized method \n", + "approved by the WHO. However, it is currently seeking confirmation by direct comparison to approved methods. This is of particular importance where novel slow-acting chemistries cannot achieve the benchmark standards established for conventional pyrethroid ITN exposures yet may prove to be highly efficacious when tested according to their discrete modes of action. Like the experimental hut, I-ACT makes use of whole nets and human hosts to evaluate bioefficacy of field-used ITNs, but the assay is done under controlled conditions with laboratory-reared mosquitoes. Mosquitoes are released into net chambers within which the test net is hung with a volunteer sleeping beneath, and all mosquitoes are recaptured in the morning. The use of laboratory mosquitoes (rather than conducting experimental hut trials with wild mosquitoes) is done to improve the precision of estimates by releasing mosquito cohorts of a defined number of mosquitoes with high recapture rate (99%) at the conclusion of exposure intervals.\n", + "\n", + "I-ACT bioassay has been used for evaluation of pyrethroid ITNs, was able to discriminate between products [17] and agreed with results of combined WHO cone and tunnel tests [16]. The I-ACT may show suitability for use in evaluation of pro-insecticides because: (i) the assay is run overnight, favouring malarial mosquitoes' circadian rhythms, (ii) the mosquitoes have a large arena to fly in, allowing them to be metabolically active, (iii) the mosquitoes have the opportunity to feed ad libitum and (iv) the I-ACT test eliminates infected mosquitoes that may represent a malaria transmission potential that cannot be completely excluded in WHO experimental huts--a significant safety benefit to volunteers. Therefore, the I-ACT method was evaluated alongside standard methods (i.e., experimental huts, WHO cone and tunnel tests) to provide direct evidence of its comparability. Interceptor(r) (alpha-cypermethrin only) and Interceptor(r) G2 (alpha-cypermethrin and chlorfenapyr) were evaluated to compare the performance of each assay for durability monitoring of pro-insecticidal ITNs.\n", + "\n", + "header: WHO cone bioassays\n", + "\n", + "WHO cone tests were performed between October 2020 and February 2021 according to standard WHO procedures [9], with two modifications: the test board was set at 60deg tilt [19] and holes were cut in the boards (Fig. 1) to maximise mosquito contact with the test nets during exposures. From each treatment arm, three nets were randomly sampled, and five net swatches of 25 cm x 25 cm size were cut from positions 1 to 5. On each netting sample, four standard WHO cones were positioned over net swatches and secured in place using tape. Five laboratory-bred mosquitoes were introduced into each cone and exposed for 3 min, and four replicates were conducted per net piece (20 mosquitoes were exposed per net piece).\n", + "\n", + "After each exposure, the mosquitoes were removed gently from the cones (by mouth aspiration), placed in paper cups and provided with cotton wool moistened with 10% sugar solution. Knockdown (KD60) was recorded after 60 min and mortality at 24, 48 and 72 h. Mosquitoes challenged to untreated nets were used as controls to monitor the quality of the bioassay. The bioassays and holding period were carried out at 27 degC+-2 degC and 60%-100% relative humidity. Acceptable control mortality was <= 10% after 72 h holding time. Any tests exceeding the specified control cut off were repeated.\n", + "\n", + "header: Considerations for each bioassay\n", + "\n", + "Both I-ACT and experimental huts use the whole bednet and human host, which represent user conditions; however, there is no risk of disease for human participants in I-ACT because the mosquitoes used are laboratory reared. The WHO tunnel test is a well-established bioassay that has been shown to agree with experimental hut tests in this evaluation as well as others [12, 14]. However, it tests only a sample of net and is therefore only able to accurately measure the chemical durability of an ITN and not the chemical _and_ physical durability. In addition, it requires a high number of mosquitoes (100 per replicate) and more testing days compared to I-ACT. In I-ACT there is possibility of testing more than one species or strain per chamber compared to tunnel test, which makes results more comparable. The I-ACT is a new assay that consistently predicts the results of experimental hut tests, measures with a similar magnitude of difference as a tunnel test and provides high-throughput and precise estimates of whole ITN protective efficacy in this study with chlorfenapyr as well as in previous studies with pyrethroid nets [17] at lower cost than tunnel tests. However, this method is yet to become a WHO/PQ-accepted testing modality despite the observed higher precision vs. current WHO-recommended modalities. The detailed descriptions of cost implications for each bioassay and how to build an I-ACT with the cost of \n", + "establishment are described in Additional file 1: Table S4 and Additional file 2 respectively.\n", + "\n", + "Laboratory and/or semi-field bioassays are not replacements for field evaluation, but they are useful if they can predict the results of field tests because they are substantially cheaper and more standardised. Experimental hut tests remain the gold standard test because they represent field conditions and can be related to public health impact [48]. However, variation in mosquito entrance in huts per night is highly heterogeneous and requires a high level of replication to achieve precision [23]. In addition, variation in hut designs affects outcome measurement [34] and should be considered when interpreting results. However, comparing between products, the same trends were consistently seen: Interceptor(r) G2 was superior to Interceptor(r) against resistant mosquitoes when they were tested in a \"free-flying\" scenario and Interceptor(r) was superior to Interceptor(r) G2 against susceptible strains, while the cone test was suitable for evaluating pyrethroids but not pro-insecticides such as chlorfenapyr.\n", + "\n", + "header: Sample size and power\n", + "\n", + "A sample size calculation for generalized linear mixed effects models (GLMMs) through simulation [23] in R statistical software 3.02 [https://www.r-project.org/](https://www.r-project.org/) was performed for the I-ACT and experimental huts. For the I-ACT, to detect a 10% effect difference between the nets, simulations were performed using an estimated mosquito mortality of 80% for unwashed Interceptor(r) G2, 70% for unwashed Interceptor(r) and 10% for SafiNet(r) (deliberately holed). The design was for five arms replicated in two groups, with each volunteer testing each treatment one time over 20 replicates within its group (i.e. 40 replicates per arm), with an inter-observational variance of 0.42 for the night of observation based on the variance of the random effects observed in a previous study. The evaluation was powered at 81% for 15 mosquitoes of each strain released per chamber using 1000 simulations.\n", + "\n", + "For experimental huts, simulation was performed using a Latin square design with volunteers rotating nightly and accounted for as a fixed effect for 25 nights of data collection in 10 huts. The study had 84% power to detect the difference between Interceptor(r) G2 LN and Interceptor(r) LN on mosquito mortality endpoints, with two huts per treatment arm (i.e. 50 replicates per arm). The study power was calculated based on a previous study of pyrethroid nets conducted in the same area, with the estimation of 20 _An. arabiensis_ mosquitoes per night per hut, 21% mortality in unwashed Interceptor(r) G2, 7% in 20x washed Interceptor(r) G2 and 10% in unwashed Interceptor(r) vs. 4% in 20 times washed and 1% in negative control, and overdispersion parameter for daily variation was set at intermediate 0.44.\n", + "\n", + "To test whether I-ACT measures similarly to the WHO tunnels (H0\\(m\\)2=_m_1) a power calculation using Satterthwaites _t_-test was conducted in STATA 16 software (StataCorp LLC, College Station TX, USA) for two unpaired sample means assuming unequal variance. The power estimated was > 90% based on estimates from previous studies conducted in the same setting: mean mortality of 81.5% for WHO tunnel test with an assumed daily variation of 0.5 and 15 replicates per arm and mean\n", + "mortality estimates of 86.5% and an assumed daily variation of 0.42 with 40 replicates per arm were considered for I-ACT.\n", + "\n", + "header: Test nets\n", + "\n", + "ITNs were supplied by BASF in November 2019 and stored at optimal conditions (25 to 32 degC) before testing and during the experimental phase. Interceptor(r) G2 nets were from two different production batches (two batches were used for experimental hut only and one batch for other biossays) and Interceptor(r) from one production batch. Interceptor(r) G2 is made from 100-denier polyester coated with a mixture of wash-resistant formulation containing 200 mg/m2 chlorfenapyr and 100 mg/m2alpha-cypermethrin. Interceptor(r) LN is made from 100-denier polyester coated with 200 mg/m2 alpha-cypermethrin. SafiNet is an untreated polyester net manufactured by A to Z. Textiles Mills, Ltd., Tanzania, and was used as a control. The nets were washed 20 times according to a protocol adapted from the standard WHO washing procedure [9] using 20 g/l palm soap (Jamaa) and dried flat in a shaded area. The interval of time used between two washes (i.e. regeneration time) was 1 day for both Interceptor(r) G2 and Interceptor(r) TTNs.\n", + "\n", + "header: Cone test results: Use of I-ACT for durability monitoring\n", + "\n", + "I-ACT is designed to be a bridging bioassay that reproduces a more natural interaction between the mosquito and human hosts beneath a bednet [16]. Blood-feeding inhibition and 72-h mortality measured by WHO tunnel and I-ACT were similar, meaning that the use of I-ACT for durability monitoring using WHO thresholds of 80% mortality and 90% feeding inhibition is appropriate. We suggest that I-ACT can be a useful alternative to tunnel tests for bioefficacy monitoring and upstream product evaluation as both the bioassays measure a similar odds ratio and I-ACT gives a precise estimation of bioefficacy because it uses laboratory-reared mosquitoes. This is particularly important when considering the longitudinal evaluation of product performance as occurs in durability bioefficacy evaluation for two reasons. Currently, experimental huts tests are being used to evaluate the insecticidal durability of Interceptor(r) G2 [33]. It was been observed at all experimental hut testing sites that mosquito resistance to insecticides has intensified through time [34]. This needs to be factored into considerations about durability testing. ITN protection may wane more quickly against more resistant mosquito populations as nets age [35], and if older ITNs are tested 3 years after baseline efficacy has been calculated, it is possible that they will be tested against a more resistant mosquito population than that at baseline. Therefore, use of carefully maintained laboratory strains may be helpful to minimise differences in insecticide resistance levels. Second, a previous longitudinal durability trial of ITNs [17] using standard WHO cone and tunnel tests as well as I-ACT shows that ITNs are highly heterogeneous, with up to 100% variance after use (John Bradley personal communication), because of variable use practices (washing, drying, care, sleeping space) [36, 37] that result in differential levels of damage and insecticide content [38]. This fact, coupled with WHO/PQ accepted intra-net insecticidal manufacturing heterogeneities [39], shows the need to expedite testing modalities that improve comprehension of net performances by donor organisations, national malaria control programmes (NMCPs) and manufacturers alike.\n", + "\n", + "header: Mosquito test systems\n", + "\n", + "IHI laboratory maintains local mosquito strains with resistant mechanisms present in the local population to\n", + "avoid accidental release of new resistance alleles into the wild population. Four types of laboratory-reared mosquitoes with different resistance levels (confirmed at the time of testing) were used in the WHO cone, WHO tunnel and I-ACT tests: _Anopheles arabiensis_ (Kingani strain, upregulation of cytochrome p450s, 14% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is reversed by piperonyl butoxide (PBO) pre-exposure, which acts to block enzymatic detoxification mechanisms by inhibiting their metabolism), _Anopheles gambiae_ s.s. (Kisumu strain, fully susceptible to all insecticide classes at WHO discriminating doses), _Aedes aegypti_ (Bagamoyo strain, fully susceptible to all insecticide classes at WHO discriminating doses) and _Culex quinquefasciatus_ (Bagamoyo strain, 6% mortality upon exposure to WHO discriminating doses of alpha-cypermethrin, which is partially reversed (only moderate susceptibility is restored from inhibition of detoxifying mechanism) by PBO pre-exposure). In I-ACT and tunnel tests, sugar-starved (8 to 9 h) nulliparous female mosquitoes, 5-8 days old, were used. For cone bioassay, 2-5-day-old nulliparous sugar-fed female mosquitoes were challenged. Laboratory colonies were maintained by feeding larvae Tetramin(r) tropical fish food and adults on blood between 3 and 6 days after emergence and 10% sugar solution ad libitum. Temperature and humidity within the insectary are maintained between 27 degC+-5 degC and 40%-100% RH, relatively following MR4 guidelines [18]. For the experimental hut assays, only wild populations of _An. arabiensis_ and _Culex quinquefasciatus_ were collected in sufficient numbers for evaluation.\n", + "\n", + "header: Discussion\n", + "\n", + "The superiority of Interceptor(r) G2 over Interceptor(r) for 72-h mortality endpoints, which challenged metabolically resistant _An. arabiensis_ and _Cx. quinquefasciatus_, was clearly seen in all \"free-flying\" bioassays but not in the WHO cone test where mosquitoes are unable to fly around and be metabolically active. This observation has been seen by several other authors [14, 25-27] leading to a consensus that the overnight tunnel test using a 72-h mortality endpoint is a superior laboratory bioassay for evaluation of chlorfenapyr [2, 28] relative to the cone test, which was designed to test contact insecticides that do not require metabolic conversion into a secondary metabolite (most ITN insecticides are classified as IRAC Group 3 sodium channel modulators). It has been routinely observed in experimental hut bioassays that Interceptor(r) G2 gives greater mortality that Interceptor(r) among pyrethroid-resistant mosquitoes [14, 25-27], while mosquitoes are foraging at night when their metabolic rate is high. Both the tunnel test and the I-ACT consistently predicted the superiority of Interceptor(r) G2 over Interceptor(r) observed in experimental hut tests.\n", + "\n", + "The results of this study's mortality elicited on _Cx. quinqufaciatus_ from chlorfenapyr is consistent with other studies over the past decade [29, 30]. Preliminary investigations for chlorfenapyr intoxication in metabolically resistant _Cx. quinquefasciatus_ in experimental huts by [31] demonstrated relatively high levels of control in both ITNs and for IRS in Benin. Later, [27] observed 3 x mortality with chlorfenapyr + alpha-cypermethrin-treated nets compared to pyrethroid-only nets demonstrating the effect of chlorfenapyr on free-flying exposures that optimize conversion rates of the pro-insecticide. However, it is also known that once ITNs develop holes, a pyrethroid treatment offers little or no protection against pyrethroid-resistant _Cu. quinquefaciatus_[32]. The relatively high level of control sustained in _Cx. quinqufaciatus_ in this study and relatively good mortality are important resistance management attributes that make inclusion of chlorfenapyr into vector control interventions a significant advancement for active ingredient options.\n", + "\n", + "header: Publisher's Note\n", + "\n", + "Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.\n", + "\n", + "header: Resistant mosquitoes\n", + "\n", + "For pyrethroid-resistant _An. arabiensis_, blood-feeding inhibition was lower with Interceptor(r) G2 than Interceptor(r) in WHO tunnel: 87.8% (95% CI: 82.9- 92.7) vs. 92.9% (95% CI: 89.8-96.0) OR blood-fed = 1.92 [95% CI:14.8-2.48], \\(p\\) < 0.001 and I-ACT: 89.8% (95% CI: 85.8-93.7) vs. 93.9% (95% CI: 91.5-96.3) (OR blood-fed = 1.67 [95% CI: 1.07-2.62], \\(p\\) = 0.024). There was no difference between the two products measured in experimental huts: 95.9% (95% CI: 93.7-98.2) vs. 96.3% (95% CI: 93.0-99.7) (OR blood-fed = 1.06 [95% CI: 0.54-2.10], \\(p\\) = 0.857). A similar trend was observed for the 20x washed nets.\n", + "\n", + "Blood-feeding inhibition was similar for Interceptor(r) G2 compared to Interceptor(r) with _Cx. Quinquefasciatus_ in WHO tunnel: 97.8% (95CI: 96.1-99.5) vs. 97.1% (95% CI: 95.9-98.3) (OR blood fed = 1.36 [95% CI: 0.85-2.17], \\(p\\) = 0.196) and experimental huts: 97.2% (95% CI: 95.9-98.4) vs. 97.2% (95% CI: 95.8-98.7) (OR = 1.04 [95% CI: 0.76-1.42], \\(p\\) = 0.827), whilst in I-ACT the difference was significantly different: 99.0% (95% CI: 98.1-99.9) vs. 91.3% (95% CI: 88.6-93.9) (OR blood fed = 0.11 [95% CI: 0.05-0.26], \\(p\\) < 0.001). A similar trend was observed for the 20x washed nets (Fig. 3a, b, Table 3). The percentage blood-feeding inhibition and mean difference between bioassays for all mosquito species are presented in Additional file 1: Table S2.\n", + "\n", + "header: Table 4: Number and proportion of net pieces passing using each laboratory bioassay based on WHO criteria of 80% control corrected mortality, 95% knockdown in WHO cone test, 90% blood-feeding inhibition or 80% control corrected mortality in tunnel test\n", + "footer: The WHO criteria for tunnel were adopted for I-ACT. Whole nets were used for I-ACT\n", + "columns: ['ITNs type - Unnamed: 0_level_1', 'Number of net pieces passing - Cone (N = 60)', 'Number of net pieces passing - Tunnel (N = 15)', 'Number of net pieces passing - I-ACT (N = 40)']\n", + "\n", + "{\"0\":{\"ITNs type - Unnamed: 0_level_1\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Cone (N = 60)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"Anopheles arabiensis (Kingani strain, resistant)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"Anopheles arabiensis (Kingani strain, resistant)\"},\"1\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":\"n (%)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"n (%)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"n (%)\"},\"2\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"11 (73)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"3\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"22 (37)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"13 (87)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"4\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"5\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"59 (98)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"12 (80)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"36 (90)\"},\"6\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"21 (35)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"10 (67)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"38 (95)\"},\"7\":{\"ITNs type - Unnamed: 0_level_1\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Cone (N = 60)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"An. gambiae ss. (Kisumu strain, susceptible)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"An. gambiae ss. (Kisumu strain, susceptible)\"},\"8\":{\"ITNs type - Unnamed: 0_level_1\":\"Unwashed\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"9\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"50 (83)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"10\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"2 (3)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"14 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"11\":{\"ITNs type - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"Number of net pieces passing - Cone (N = 60)\":null,\"Number of net pieces passing - Tunnel (N = 15)\":null,\"Number of net pieces passing - I-ACT (N = 40)\":null},\"12\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"Number of net pieces passing - Cone (N = 60)\":\"38 (63)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"},\"13\":{\"ITNs type - Unnamed: 0_level_1\":\"Interceptor\\u00ae G2\",\"Number of net pieces passing - Cone (N = 60)\":\"10 (17)\",\"Number of net pieces passing - Tunnel (N = 15)\":\"15 (100)\",\"Number of net pieces passing - I-ACT (N = 40)\":\"40 (100)\"}}\n", + "\n", + "header: Thresholds are not a good idea in field trials\n", + "\n", + "Mortality measured in the experimental hut is lower than in the WHO tunnel tests or I-ACT meaning that tests\n", + "comparing products are appropriate rather than setting a threshold of efficacy. These study data support the WHO Pesticide Evaluation Scheme (WHOPES) efficacy criteria for phase II studies [9]. This is particularly important for field evaluation of public health tools because insecticide resistance involves highly complex mechanisms, genes and gene interactions [6] that are heterogeneous in time and space [40]. Insecticide resistance is modified by selection pressures from constantly changing environmental parameters, such as insecticide/pesticide usage in agriculture and biotic interactions with other organisms that affect both the overall mosquito responses to insecticides and the selection of resistance mechanisms [41]. However, in all comparisons tested in \"free-flying\" bioassays with resistant mosquito strains, it was possible to predict the superiority of Interceptor(r) G2 over Interceptor(r). Therefore, the use of a standard comparator net to provide performance benchmarks when evaluating the performance of new products is critical. The added value of a new product relative to pyrethroid-only nets has proven extremely useful when synthesising evidence for PBO nets [42].\n", + "\n", + "header: Mosquito retention\n", + "\n", + "Immediately after the main experimental hut trial, a retention test was conducted by releasing wild _An. ara-biensis_ mosquitoes that were collected from the area by human landing catch (HLC). Fifteen mosquitoes marked with non-toxic fluorescent powder were released in each of the ten huts with the same treatment arms as the main experiment hut design. Five huts were completely closed while the other five were left with open eaves (with 10-cm baffles to reduce egress) and two window exit traps as per main experimental hut study. This experiment was conducted for 5 nights. Each morning mosquitoes were sorted, scored and held for 72 h to observe delayed mortality for each treatment arm.\n", + "\n", + "header: Susceptible mosquitoes\n", + "\n", + "For unwashed Interceptor(r), blood-feeding inhibition was measured in tunnel and I-ACT and a similar trend was observed in susceptible mosquitoes as was seen in the resistant laboratory strains (Fig. 3c, d, Table 3). For susceptible _An. gambiae_, blood-feeding inhibition was lower with Interceptor(r) G2 than for Interceptor(r) WHO tunnel: 89.7% (95% CI: 83.3-96.1) vs. 94.5% (95% CI: 91.9-97.2), (OR blood fed = 1.95 [95% CI: 1.46, 2.61], \\(p\\) < 0.001) and similar in I-ACT: 97.4% (95% CI: 95.7-99.1) vs. 98.2% (95% CI: 96.8-99.5), (OR blood fed = 1.41 [95% CI: 0.63-3.17], \\(p\\) = 0.407. For susceptible _Ae. Aggyti_ in WHO tunnel, results showed: 93.8% (95% CI:90.6-97.1) vs. 96.3% (95% CI: 94.0-98.7) (OR blood fed = 2.03 [95% CI: 1.40-2.93], \\(p\\) < 0.001) and in I-ACT: 96.8% (95% CI: 94.8-98.9) vs. 98.3% (95% CI: 97.1-99.5) (OR blood fed = 1.92 [95% CI: 0.87-4.24],\n", + "\\(p=0.107\\)). As before, for both species a similar pattern was seen for the 20\\(\\times\\) washed nets.\n", + "\n", + "header: Methods\n", + "\n", + "The laboratory bioassays (I-ACT, WHO cone and WHO tunnel tests) were performed at the Vector Control Product Testing Unit (VCPTU) testing facility located at the Bagamoyo branch of Ifakara Health Institute (IHI), Tanzania (6.446deg S and 38.901deg E). The district experiences average annual rainfall of 800 mm-1000 mm, average temperatures between 24 degC and 29 degC and average annual humidity of 73%. The experimental hut study was conducted in Lupiro village (8.385deg S and 36.673deg E) in Ulanga District, southeastern Tanzania. The village is bordered by irrigated rice fields with average annual rainfall of 1200-1800 mm, average temperatures between 20 and 34 degC and average annual humidity of 69%. The main malaria vector is _Anopheles arabiensis_, constituting > 99.9% of the _An. gambiae_ complex species in the last test conducted in November 2020, and resistance to alphabcypermethrin was recorded (57% mortality at 1 x WHO discriminating concentration) at the time of testing.\n", + "\n", + "header: Table 2 Logistic regression analysis to compare mosquito mortality in Interceptor® and Interceptor® G2 ITNs after exposure in WHO cone and tunnel tests, Ifakara ambient chamber test and experimental hut, Tanzania\n", + "footer: Odds ratio adjusted for net type, volunteer, hut position/number and day of the experiment\n", + "Laboratory-reared mosquitoes were used for WHO cone, WHO tunnel and I-ACT\n", + "For the experimental hut trial, the ITNs were tested against free-flying wild pyrethroid-resistant Anopheles arabiensis and Culex quinquefasciatus in Lupiro, Ifakara\n", + "*p-value>0.05\n", + "columns: ['Unnamed: 0_level_0 - Unnamed: 0_level_1', 'WHO cone - OR (95% CI)', 'Tunnel - OR (95% CI)', 'I-ACT - OR (95% CI)', 'Hut - OR (95% CI)', 'Huts with netting window - OR (95% CI)']\n", + "\n", + "{\"0\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Anopheles anabiensis (resistant)\",\"WHO cone - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Tunnel - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"I-ACT - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Hut - OR (95% CI)\":\"Anopheles anabiensis (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Anopheles anabiensis (resistant)\"},\"1\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"2\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"3\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.03, 0.07)\",\"Tunnel - OR (95% CI)\":\"1.33 (1.17, 1.51)\",\"I-ACT - OR (95% CI)\":\"1.55 (1.16, 2.07)\",\"Hut - OR (95% CI)\":\"2.38 (2.09, 2.72)\",\"Huts with netting window - OR (95% CI)\":\"2.43 (1.88, 3.14)\"},\"4\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"5\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"6\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.05 (0.20, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.42 (1.19, 1.70)\",\"I-ACT - OR (95% CI)\":\"1.61 (1.05, 2.49)\",\"Hut - OR (95% CI)\":\"2.53 (1.96, 3.26)\",\"Huts with netting window - OR (95% CI)\":\"2.55 (1.76, 3.68)\"},\"7\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"8\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"9\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.04 (0.2, 0.09)\",\"Tunnel - OR (95% CI)\":\"1.23 (1.03, 1.48)\",\"I-ACT - OR (95% CI)\":\"1.50 (1.02, 2.23)\",\"Hut - OR (95% CI)\":\"2.36 (2.02, 2.77)\",\"Huts with netting window - OR (95% CI)\":\"2.32 (1.63, 3.31)\"},\"10\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Culex quinquefasciatus (resistant)\",\"WHO cone - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Tunnel - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"I-ACT - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Hut - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\",\"Huts with netting window - OR (95% CI)\":\"Culex quinquefasciatus (resistant)\"},\"11\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Overall\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"12\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"13\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.05 (0.57, 1.93)*\",\"Tunnel - OR (95% CI)\":\"2.55 (2.26, 2.55)\",\"I-ACT - OR (95% CI)\":\"13.40 (10.75, 16.67)\",\"Hut - OR (95% CI)\":\"1.50 (1.31, 1.73)\",\"Huts with netting window - OR (95% CI)\":\"1.40 (1.19, 1.63)\"},\"14\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Unwashed\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"15\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"16\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"0.74 (0.31, 1.79)*\",\"Tunnel - OR (95% CI)\":\"2.52 (2.13, 3.00)\",\"I-ACT - OR (95% CI)\":\"12.71 (9.43, 17.14)\",\"Hut - OR (95% CI)\":\"1.52 (1.23, 1.88)\",\"Huts with netting window - OR (95% CI)\":\"1.25 (1.00, 1.57)\"},\"17\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Washed, 20\\u00d7\",\"WHO cone - OR (95% CI)\":null,\"Tunnel - OR (95% CI)\":null,\"I-ACT - OR (95% CI)\":null,\"Hut - OR (95% CI)\":null,\"Huts with netting window - OR (95% CI)\":null},\"18\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00ae\",\"WHO cone - OR (95% CI)\":\"1\",\"Tunnel - OR (95% CI)\":\"1\",\"I-ACT - OR (95% CI)\":\"1\",\"Hut - OR (95% CI)\":\"1\",\"Huts with netting window - OR (95% CI)\":\"1\"},\"19\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"Interceptor\\u00aeG2\",\"WHO cone - OR (95% CI)\":\"1.46 (0.62, 3.50)*\",\"Tunnel - OR (95% CI)\":\"2.58 (2.17, 3.06)\",\"I-ACT - OR (95% CI)\":\"14.11 (10.42, 19.11)\",\"Hut - OR (95% CI)\":\"1.50 (1.25, 1.80)\",\"Huts with netting window - OR (95% CI)\":\"1.55 (1.24, 1.94)\"},\"20\":{\"Unnamed: 0_level_0 - Unnamed: 0_level_1\":\"An gambiae s.s. (susceptible)\",\"WHO cone - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Tunnel - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"I-ACT - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Hut - OR (95% CI)\":\"An gambiae s.s. (susceptible)\",\"Huts with netting window - OR (95% CI)\":\"An gambiae s.s.\n", + "\n", + "header: Table 1: Outcomes measured in WHO cone bioassays, tunnel, I-ACT and experimental hut tests\n", + "footer: a Not reported\n", + "columns: ['Variable', 'Cone bioassay', 'WHO tunnel test', 'I-ACT', 'Experimental hut']\n", + "\n", + "{\"0\":{\"Variable\":\"Primary outcome\",\"Cone bioassay\":\"72-h mortality\",\"WHO tunnel test\":\"72-h mortality\",\"I-ACT\":\"72-h mortality\",\"Experimental hut\":\"72-h mortality\"},\"1\":{\"Variable\":\"Secondary outcome\",\"Cone bioassay\":null,\"WHO tunnel test\":\"Blood-feeding\",\"I-ACT\":\"Blood-feeding\",\"Experimental hut\":\"Blood-feeding\"},\"2\":{\"Variable\":\"Other outcomes\",\"Cone bioassay\":\"Knockdown at 60 min (KD60)\",\"WHO tunnel test\":null,\"I-ACT\":null,\"Experimental hut\":\"Deterrence a and induced exophily a\"}}\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"WHO tunnel test\",\"Start_month\":8,\"Start_year\":2020,\"End_month\":11,\"End_year\":2020}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Interceptor G2\",\"Insecticide\":\"alpha-cypermethrin, chlorfenapyr\",\"Concentration_initial\":\"100 mg\\/m2, 200 mg\\/m2\",\"Net_washed\":20.0},\"N02\":{\"Net_type\":\"Interceptor\",\"Insecticide\":\"alpha-cypermethrin\",\"Concentration_initial\":\"200 mg\\/m2\",\"Net_washed\":20.0},\"N03\":{\"Net_type\":\"SafiNet\",\"Insecticide\":null,\"Concentration_initial\":null,\"Net_washed\":20.0}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Notes\n", + "\n", + "_Acknowledgments._ The authors express their sincere thanks to M. Didier Dobri, Centre Suisse de Recherches Scientifiques en Cote d'Ivoire (CSRS) laboratory technician, and Fidele Assamoa for their support in mosquito collection and rearing, the chief and population of the village of Aboude (Agboville), and the entomology fieldworkers of CSRS. They also thank Vestergaard for supplying the long-lasting insecticidal nets tested in this study.\n", + "\n", + "_Author contributions._ A. M., E. C., M. K., T. W., and L. A. M. designed the study. A. M., E. C., C. E., and B. P. led the entomology field activities and participated in data collection. A. M., E. C., C. L. J., T. W., and L. A. M. performed the molecular assays. A. M., E. C., M. K., C. E., C. L. J., B. P., S. R. I, T. W., and L. A. M. were responsible for data analysis and interpretation. L. A. M. drafted the manuscript, which was revised by all coauthors. All authors read and approved the final manuscript.\n", + "\n", + "_Disclaimer._ The findings and conclusions in this report are those of the authors and do not necessarily represent the official position of the Centers for Disease Control and Prevention.\n", + "\n", + "_Financial support._ This work was supported by the Sir Halley Stewart Trust (L.A.M.), the Wellcome Trust/Royal Society ([http://www.wellcome.ac.uk](http://www.wellcome.ac.uk) and [https://royalsociety.org](https://royalsociety.org); (101285/Z/13/Z to T.W.) and the US President's Malaria Initiative/Centers for Disease Control and Prevention (S.R.I.).\n", + "\n", + "_Potential conflicts of interest._ All authors: No reported conflicts. All authors have submitted the ICMJE Form for Disclosure of Potential Conflicts of Interest. Conflicts that the editors consider relevant to the content of the manuscript have been disclosed.\n", + "\n", + "header: Conclusions\n", + "\n", + "Study findings raise concerns regarding the operational failure of standard LLINs and support the urgent deployment of vector control interventions incorporating piperonyl butoxide, chlorfenapyr, or clothianidin in areas of high resistance intensity in Cote d'Ivoire.\n", + "\n", + "header: Table 1. Cox Proportional Hazard Model to Determine Impact of Long-Lasting Insecticidal Net/Insecticidal Exposure on Survival of Field-Caught Anopheles gambiae Sensu Lato 72 Hours After Exposure\n", + "footer: Abbreviations: CI, confidence interval; HRR, hazard rate ratio (ratio of hazard rate for control/reference group to hazard rate for treatment group; PBO, piperonyl butoxide.\n", + "a Immediate mortality rates after long-lasting insecticidal net (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. \n", + "b Significance cutoff level defined as α = .05.\n", + "\n", + "\n", + "columns: ['Insecticide Exposure', 'No. (No. of Events)', 'HRR (95% CI)', 'P Valueb']\n", + "\n", + "{\"0\":{\"Insecticide Exposure\":\"Untreated netting\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"1\":{\"Insecticide Exposure\":\"PermaNet 2.0 (deltamethrin only)\",\"No. (No. of Events)\":\"1135 (1047)\",\"HRR (95% CI)\":\"1.095 (.968\\u20131.239)\",\"P Valueb\":\".15\"},\"2\":{\"Insecticide Exposure\":\"PermaNet 3.0 side panels (deltamethrin only)\",\"No. (No. of Events)\":\"1157 (1088)\",\"HRR (95% CI)\":\"0.9664 (.9092\\u20131.027)\",\"P Valueb\":\".27\"},\"3\":{\"Insecticide Exposure\":\"PermaNet 3.0 roof panels (PBO + deltamethrin)\",\"No. (No. of Events)\":\"563 (533)\",\"HRR (95% CI)\":\"1.007 (.939\\u20131.079)\",\"P Valueb\":\".85\"},\"4\":{\"Insecticide Exposure\":\"Acetone control\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"5\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 1\\u00d7\",\"No. (No. of Events)\":\"676 (641)\",\"HRR (95% CI)\":\"1.006 (.9696\\u20131.043)\",\"P Valueb\":\".77\"},\"6\":{\"Insecticide Exposure\":\"Deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"683 (645)\",\"HRR (95% CI)\":\"0.9942 (.9539\\u20131.036)\",\"P Valueb\":\".78\"},\"7\":{\"Insecticide Exposure\":\"Permethrin 1\\u00d7\",\"No. (No. of Events)\":\"693 (661)\",\"HRR (95% CI)\":\"1.015 (.9698\\u20131.062)\",\"P Valueb\":\".52\"},\"8\":{\"Insecticide Exposure\":\"Clothianidin 1\\u00d7\",\"No. (No. of Events)\":\"698 (581)\",\"HRR (95% CI)\":\"1.208 (.9227\\u20131.581)\",\"P Valueb\":\".17\"},\"9\":{\"Insecticide Exposure\":\"Chlorfenapyr 1\\u00d7\",\"No. (No. of Events)\":\"708 (580)\",\"HRR (95% CI)\":\"1.692 (1.086\\u20132.637)\",\"P Valueb\":\".02\"},\"10\":{\"Insecticide Exposure\":\"PBO + deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"630 (577)\",\"HRR (95% CI)\":\"0.9662 (.2411\\u20133.873)\",\"P Valueb\":\".96\"},\"11\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"633 (601)\",\"HRR (95% CI)\":\"0.9951 (.9407\\u20131.053)\",\"P Valueb\":\".86\"},\"12\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"652 (610)\",\"HRR (95% CI)\":\"0.9942 (.9393\\u20131.052)\",\"P Valueb\":\".84\"},\"13\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"636 (583)\",\"HRR (95% CI)\":\"0.9931 (.8638\\u20131.142)\",\"P Valueb\":\".92\"},\"14\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"624 (587)\",\"HRR (95% CI)\":\"0.9951 (.917\\u20131.08)\",\"P Valueb\":\".91\"},\"15\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"623 (588)\",\"HRR (95% CI)\":\"0.9943 (.9072\\u20131.09)\",\"P Valueb\":\".90\"},\"16\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"656 (603)\",\"HRR (95% CI)\":\"1.026 (.9509\\u20131.107)\",\"P Valueb\":\".51\"},\"17\":{\"Insecticide Exposure\":\"1\\u00d7 Insecticide dose\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"18\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"117 (92)\",\"HRR (95% CI)\":\"1.016 (.9069\\u20131.138)\",\"P Valueb\":\".78\"},\"19\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"108 (78)\",\"HRR (95% CI)\":\"1.007 (.9403\\u20131.078)\",\"P Valueb\":\".84\"},\"20\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"143 (105)\",\"HRR (95% CI)\":\"1.0 (.9035\\u20131.107)\",\"P Valueb\":\">.99\"},\"21\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"114 (83)\",\"HRR (95% CI)\":\"1.0 (.9363\\u20131.068)\",\"P Valueb\":\">.99\"},\"22\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"137 (94)\",\"HRR (95% CI)\":\"1.022 (.8528\\u20131.225)\",\"P Valueb\":\".81\"},\"23\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"157 (114)\",\"HRR (95% CI)\":\"0.9952 (.9491\\u20131.044)\",\"P Valueb\":\".84\"}}\n", + "\n", + "header: Malaria Prevalence\n", + "\n", + "Of the 912 _A. gambiae_ s.l. mosquitoes assayed, 31 tested positive for _P. falciparum_ (3.4%). For PCR-confirmed _A. coluzzii_, _P. falciparum_ prevalence was 3.50% (28 of 805); the remaining 3 infections were in _A. gambiae_ s.s. (4%; 3 of 75). By resistance phenotype, susceptible _A. coluzzii_ (ie, those that died after pyrethroid exposure) were more likely to be infected with malaria, compared with resistant mosquitoes (kh2 = 4.6987; \\(P\\) =.03); infection rates were 5.94% (13 of 219) and 2.49% (10 of 401), respectively.\n", + "\n", + "header: Results\n", + "\n", + "Phenotypic resistance was intense: >25% of mosquitoes survived exposure to 10 times the doses of pyrethroids required to kill susceptible populations. Similarly, the 24-hour mortality rate with deltamethrin-only LLINs was very low and not significantly different from that with an untreated net. Sublethal pyrethroid exposure did not induce significant delayed vector mortality effects 72 hours later. In contrast, LLINs containing the synergist piperonyl butoxide, or new insecticides dothianidin and chlorfenapyr, were highly toxic to _A. coluzzii_. Pyrethroid-susceptible _A. coluzzii_ were significantly more likely to be infected with malaria, compared with those that survived insecticidal exposure. Pyrethroid resistance was associated with significant overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_.\n", + "\n", + "header: Resistance Intensity and Synergist Bioassay Testing\n", + "\n", + "Centers for Disease Control and Prevention (CDC) resistance intensity bioassays were performed for 6 public health insecticides (pyrethroids: alpha-cypermethrin, deltamethrin, and permethrin; carbamate: bendiocarb; neonicotinoid: clothianidin; and pyrrole: chlorfenapyr) [22, 23]. The diagnostic doses of all insecticides were evaluated (including clothianidin [90 mg per bottle] [23] and chlorfenapyr [100 mg per bottle]) and 2, 5, and 10 times the diagnostic dose of pyrethroid insecticides were also used. Per test, knockdown was recorded at 15-minute intervals for 30 minutes (pyrethroids and bendiocarb) or 60 minutes (dothianidin and chlorfenapyr) of insecticide exposure. One-hour PBO preexposures were performed using WHO tube assays [24], before deltamethrin CDC bottle bioassay testing [22].\n", + "\n", + "WHO cone and CDC resistance intensity bioassay data were interpreted according to the WHO criteria [21, 22]. Mosquitoes that died after exposure to a LLIN or 1x insecticide dose were stored at -20degC in RNAlater (Thermo Fisher Scientific) and were considered \"susceptible\" for genotypic analysis. Surviving mosquitoes were held and scored for mortality rate after 24, 48 and 72 hours to observe delayed mortality effects. Kaplan-Meier curves were used to visualize survival data, and Cox regression was used to compare postexposure survival. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. Surviving mosquitoes at 72 hours were stored at -20degC in RNAlater and were considered \"resistant\" for genotypic analysis.\n", + "\n", + "header: RESULTS\n", + "\n", + "A total of 4917 female _A. gambiae_ s.l. mosquitoes were collected in Agboville, Cote d'Ivoire. Of those, 912, which were previously tested in either LLIN bioefficacy (n = 384) or resistance intensity (n = 528) bioassays, were selected for molecular species identification. Of the 912 selected, 805 (88.3%) were determined to be _A. coluzzii_, 75 (8.2%) were _A. gambiae_ s.s., and 22 (2.4%) were _A. gambiae_-_A. coluzzii_ hybrids; 10 individuals did not amplify.\n", + "\n", + "header: Characterization of Insecticide Resistance Mechanisms: Target-Site Mutations\n", + "\n", + "The same cohort of field mosquitoes (n = 912) was tested for the presence of L1014F _kdr_[27] and N1575Y mutations [28]. A subsample of mosquitoes (n = 49) that were exposed to bendiocarb, clothianidin or chlorfenapyr was tested for the presence of the G119S _Ace-1_ mutation [29]. Pearson kh2 and Fisher exact tests (when sample sizes were small) were used to investigate the statistical association between resistance status, allele frequencies, and deviations from Hardy-Weinberg equilibrium.\n", + "\n", + "header: Insecticide Resistance Intensity\n", + "\n", + "A total of 2251 field-caught _A. gambiae_ s.l. were tested in resistance bioassays. Intense pyrethroid resistance was evident with more than 25% of mosquitoes surviving exposure to 10 times the dose of insecticide required to kill a susceptible population (Figure 2A). At the diagnostic dose, mosquito mortality rates did not exceed 25% for any pyrethroid tested, which was consistent with the high survival rates observed during cone bioassays using conventional LLINs (Figure 1). In general, levels of resistance to alpha-cypermethrin, deltamethrin, and permethrin were not significantly different at each insecticide concentration tested (Figure 2A).\n", + "\n", + "By comparison, carbamate tolerance was low, with a mean knockdown of 94.53% (95% CI, 92.11%-96.95%; n = 101) after 30 minutes of exposure to the diagnostic dose of bendiocarb. Similarly, high levels of susceptibility to new insecticides clothianidin and chlorfenapyr were observed, with mean mortality rates of 94.11% (95% CI, 93.43%-94.80%; n = 102) and 95.54% (94.71%-96.36%; n = 112), respectively, 72 hours after exposure to the tentative diagnostic doses. Preexposure to PBO increased the average _A. gambiae_ s.l. mortality rate significantly, from 14.56% (95% CI, 6.24%-22.88%) to 72.73% (64.81%-79.43%) and from 44.66% (34.86%-54.46%) to 94.17% (91.12%-97.22%) after exposure to 1 or 2 times the diagnostic dose of deltamethrin (Figure 2B).\n", + "\n", + "header: Target-Site Resistance Mutations\n", + "\n", + "L1014_F_kdr_ screening revealed that 92.2% (796/863) of _A. gambiae_ s.l. mosquitoes harbored the mutation; 71.5% (617 of 863) were homozygous, 20.7% (179 of 863) were heterozygous, 5.1% (44 of 863) were wild type, and 2.7% (23 of 863) did not amplify. For PCR-confirmed _A. coluzzii_, L1014F_kdr_ prevalence was 87.8% (707 of 805); 66.6% (536 of 805) were homozygous for the mutation, 21.2% (171 of 805) were heterozygous, 5.3% (43 of 805) were wild type, and 2.2% (18 of 805) did not amplify. For _A. coluzzii_, population-level L1014F_kdr_ allele frequency was 0.83, with evidence for significant deviations from Hardy-Weinberg equilibrium (kh2 = 29.124; \\(P\\) <.001). There was no significant association between L1014F_kdr_ frequency and the ability of _A. coluzzii_, to survive pyrethroid exposure, in either LLIN or resistance bioassays (kh2 = 2.0001 [_P_ =.16] and kh2 = 3.6998 [_P_ =.054], respectively). Similarly, there was no significant association between L1014F_kdr_ and the ability of _A. coluzzii_ to survive PBO preexposure and pyrethroid treatment, in either LLIN or resistance bioassays (kh2 = 0.0086; \\(P\\) =.93; Fisher exact test, \\(P\\) =.429, respectively).\n", + "\n", + "For PCR-confirmed _A. gambiae_ s.s., L1014F_kdr_ prevalence was 95.3% (61 of 64); 89.1% (57 of 64) were homozygous for the mutation, 6.3% (4 of 64) were heterozygous, none were wild type, and 4.7% (3 of 64) did not amplify. There was no significant association between L1014F_kdr_ frequency and ability of _A. gambiae_ s.s. to survive pyrethroid or PBO preexposure and pyrethroid treatment (in either LLIN or resistance bioassays), because all tested individuals harbored this mutation (n = 61). For _A. gambiae_ s.s., the population-level L1014F_kdr_ allele frequency was 0.97, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.070; \\(P\\) =.79).\n", + "\n", + "N1575Y screening revealed that 2.3% of _A. gambiae_ s.l. mosquitoes (21 of 912) harbored the mutation; all were\n", + "heterozygotes. N1575Y prevalence was 1.1% (9 of 805) and 16% (12 of 75) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 0.99% (9 of 912) did not amplify. There was no evidence for ongoing N1575Y selection in either species (kh2 = 0.026 [_P_ =.87] and kh2 = 0.62 [_P_ =.43] for _A. coluzzi_ and _A. gambiae_ s.s., respectively). For _A. coluzzi_, there was no significant association between N1575Y frequency and ability of mosquitoes to survive pyrethroid exposure, in LLIN or resistance bioassays (kh2 = 0.0001 [_P_ =.99] and kh2 = 0.3244 [_P_ =.57], respectively).\n", + "\n", + "G119S _Ace-1_ screening revealed that 55.1% of _A. gambiae_ s.l. mosquitoes (27 of 49) harbored the mutation; all were heterozygotes. G119S _Ace-1_ prevalence was 64.9% (24 of 37) and 27.3% (3 of 11) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 1 remaining _A. gambiae-A. coluzzi_ hybrid was wild type. For _A. coluzzi_, population-level G119S _Ace-1_ allele frequency was 0.32, with evidence of significant deviations from Hardy-Weinberg equilibrium (kh2 = 8.525; \\(P\\) =.004). For _A. gambiae_ s.s., population-level G119S _Ace-1_ allele frequency was 0.14, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.274; \\(P\\) =.60). For _A. coluzzi_, there was a significant association between G119S _Ace-1_ frequency and surviving bendiocarb exposure (Fisher exact test, \\(P\\) =.005).\n", + "\n", + "header: Study Area and Mosquito Collections: WHO Cone Bioassay Testing\n", + "\n", + "Two types of LLIN were evaluated in this study. PermaNet 2.0 is a conventional LLIN treated with deltamethrin only (1.4 g/kg +- 25%) and PermaNet 3.0 is a piperonyl butoxide (PBO) synergism LILIN, consisting of a roof containing PBO (25g/kg) and deltamethrin (4 g/kg +- 25%) and side panels containing deltamethrin only (2.8 g/kg +- 25%). WHO cone bioassays were used to test the susceptibility of _A. gambiae_ s.l. exposed to unwashed PermaNet 2.0, PermaNet 3.0 roof panels, and PermaNet 3.0 side panels [21]. To control for potential variation in insecticide/synergist content, each of 5 LLINs per type was cut into 19 pieces, measuring 30 x 30 cm, with each piece tested a maximum of 3 times.\n", + "\n", + "header: Abstract\n", + "\n", + "Association of Reduced Long-Lasting Insecticidal Net Efficacy and Pyrethroid Insecticide Resistance With Overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_ in Populations of _Anopheles coluzzii_ From Southeast Cote d'Ivoire\n", + "\n", + "Anne Meiwald,\\({}^{1,2}\\) Emma Clark,\\({}^{1,2}\\) Mejica Kristan,\\({}^{1}\\) Constant Edi,\\({}^{2}\\) Claire L Jeffries,\\({}^{1}\\) Bethanie Pelloquin,\\({}^{1}\\) Seth R. Irish,\\({}^{2}\\) Thomas Walker,\\({}^{1}\\) and Louisa A. Messenger\\({}^{1,0}\\)\n", + "\n", + "\n", + "Resistance to major public health insecticides in Cote d'Ivoire has intensified and now threatens the long-term effectiveness of malaria vector control interventions.\n", + "\n", + "header: Mosquito Survival After Insecticidal Exposure\n", + "\n", + "All _A. gambiae_ s.l. tested in LLIN bioefficacy or resistance intensity bioassays, were held for 72 hours, to assess any impact of insecticide or net exposure on delayed mortality rate. For LLIN bioassays, there was little evidence for any reduction in survival during this holding period (Cox regression \\(P\\) =.15,.27, and.85, respectively, for comparisons between untreated control and PermaNet 2.0, PermaNet 3.0 side panels, and PermaNet 3.0 roof panels) (Table 1 and Figure 3A). Exposure to the diagnostic doses of all insecticides in CDC bottle bioassays did not induce significant delayed mortality effects over 72 hours (Cox regression \\(P\\) >.05 for all insecticides compared with control, with the exception of chlorfenapyr [_P_ =.02]) (Table 1 and Figure 3B). This phenomenon was also observed at increasing pyrethroid doses\n", + "\n", + "Figure 2: _A._ Resistance intensity of field-caught _Anaopheles gambiae_ sensu late (s.l.) after exposure to 1, 2, 5, or 10 times the diagnostic dose of pyrethroid insecticides. Mean knockdown/acute toxicity rates after 30-minute exposure are shown with 95% confidence intervals (Cls). Knockdown or mortality rates at the same dose per insecticide sharing a letter do not differ significantly (_P_ >.05). Mortality rates <00% (_lower and line_) represent confirmed resistance at the diagnostic dose (1a), and rates <00% (_upper and line_) indicate moderate to high-intensity resistance and high-intensity resistance at 5° and 10x, respectively, as defined by the World Health Organization [24]. _B._ Restoration of deltamethrin susceptibility of field-caught _A. gambiae_ s.l. after presopause to piperonyl butoxide (PBO). Mean knockdown/acute toxicity after 30-minute exposure to 1 or 2 times the diagnostic dose of deltamethrin with 95% Cls. Knockdown/mortality rates do not differ significantly between pyrethroid only and synergist plus pyrethroid sharing a letter (_P_ >.05). Red line at 90% mortality rate represents metabolic resistance mechanisms partially involved [24].\n", + "\n", + "\n", + "(Cox regression \\(P\\) >.05 for alpha-cypermethrin, deltamethrin, and permethrin 5x and 10x vs either the control or diagnostic dose) (Table 1; Figure 3C and 3D).\n", + "\n", + "header: Metabolic Resistance Mechanisms\n", + "\n", + "Comparison of metabolic gene expression levels in field populations of _A. coluzzi_ and _A. gambiae s.s._ demonstrated significant up-regulation of _CYP6P4_ (fold change, 5.88 [95% CI, 5.19-44.06] for _A. coluzzi_ and 6.08 [5.43-50.64] for _A. gambiae_ s.s.), _CYP6Z1_ (4.04 [3.69-41.54] and 3.56 [3.24-36.25], respectively),\n", + "\n", + "Figure 3.: The longevity of field-caught _A. gambiae_ sensus into after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (_A_) and \\(x\\) (B, 5x [_O_], and 10× [_D_) the diagnostic dose of pyrethroid insecticides in Centres for Disease Control and Prevention resistance intensity assays. Kaplan-Meier survival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\n", + "\n", + "\n", + "and _CYP6P3_ (12.56 [11.40-12-3.83] and 13.85 [12.53-132.03]), relative to a susceptible laboratory colony, respectively (Figure 4). More modest overexpression of _CYP6P1_ and _GSTE2_ was observed (_CYP6P1_ fold changes, 1.18 [95% CI, 1.08-12.31] and 1.28 [1.17-14.40]; GSTE2, 0.56 [.48-3.32], and 0.67 [.58-4.29], for _A. coluzzi_ and _A. gambiae_ s.s., respectively) (Figure 4). The fold change levels did not differ significantly between the 2 species for any gene nor by malaria infection status in wild _A. coluzzi_. Comparison of metabolic gene expression in phenotyped field populations of _A. coluzzi_ revealed lower fold changes overall, but notably, increased overexpression of _CYP6P3_ in survivors of bendiocarb, deltamethrin, PBO plus deltamethrin, and permethrin (fold change, 3.91 [95% CI, 3.33-22.16], 2.21 [1.88-12.53], 2.64 [2.21-13.69], and 2.21 [1.99-20.03], respectively) (Figure 5).\n", + "\n", + "header: Keywords\n", + "\n", + "_Anopheles coluzzii_; insecticide resistance; _Plasmodium falciparum_; long-lasting insecticidal nets; Cote d'Ivoire; PBO; chlorfenapyr; clothianidin; _CYP6P4_; _CYP6P3_; _CYP6Z1_\n", + "\n", + "In Cote d'Ivoire, malaria is a serious public health problem with the entire population of about 26.2 million people at risk, and disease prevalence reaching as high as 63% in the southwest region [1]. Control of _Anopheles gambiae_ sensu lato (s.l.), the major malaria vector species group, has been through the efforts of the National Malaria Control Programme, which has distributed insecticide-treated nets as the primary vector control intervention. Indoor residual spraying and larviciding in high transmission areas have been recommended as complementary strategies; implementation of the former commenced in late 2020 [2]. Estimates of net coverage across the country remain low, with the proportion of households with at least >=1 insecticide-treated net per 2 persons rising from 31% in 2012 to 47% in 2016, and insecticide-treated net use stagnating at 40% of households reporting sleeping under a net the previous night in both survey years [2]. The most recent universal net campaigns in Cote d'Ivoire in 2017-2018 issued conventional, pyrethroid (deltamethrin) long-lasting insecticidal nets (LLINs), aiming to achieve 90% coverage and 80% use [2]. However, country-wide, multiclass insecticide resistance among populations of _A. gambiae_ s.l. is a growing cause for concern because of potential operational failure of current vector control strategies, both locally and across the sub-Saharan region [2, 3].\n", + "\n", + "Resistance to pyrethroid and carbamate insecticides in _Anopheles_ mosquitoes was first reported from the central \n", + "region of Cote d'Ivoire in the early 1990s [4, 5, 6, 7]. Local resistance to the major insecticide classes recommended by the World Health Organization (WHO) for adult mosquito control--pyrethroids, carbamates, organophosphates, and organochlorines--evolved rapidly [8, 9, 10] and has been increasing in intensity, driven largely by selective pressures imposed by contemporaneous scale-up of public health vector control interventions (including those targeting malaria, trypanosomiasis, and onchocerciasis vectors) and use of agricultural pesticides [11, 12, 13, 14, 7]. This escalation in resistance has now begun to compromise the insecticidal efficacy and community-wide impact of conventional, pyrethroid LLINs in Cote d'Ivoire [14, 15], although some levels of personal protection may still remain [15, 16, 17].\n", + "\n", + "Among vector populations across Cote d'Ivoire, the L1014F _kdr_ mutation is pervasive and has been implicated in some longitudinal trends in decreasing DDT and pyrethroid susceptibility [7, 11]; L1014S _kdr_ and N1575Y resistance mutations have also been detected but at much lower frequencies [18]. Extreme carbamate (bendiocarb) resistance and pyrethroid cross-resistance in some _A. gambiae_ sensu stricto (s.s.) populations are mediated by overexpression of _CYP6P3_ and _CYP6M2_ and duplication of the G119S _Ace-1_ mutation [19]. To support and safeguard future malaria control efforts in Cote d'Ivoire, the current study evaluated the efficacy of conventional and next-generation LLINs for prospective distribution, determined current insecticide resistance profiles of _A. gambiae_ s.l. (principally _Anopheles coluzzi_), and characterized underlying molecular and metabolic resistance mechanisms.\n", + "\n", + "header: Characterization of Insecticide Resistance Mechanisms: Metabolic Gene Expression\n", + "\n", + "Relative expression of 5 metabolic genes (_CYP6P3_, _CYP6P4_, _CYP6Z1_, _CYP6P1_, and _GSTE2_) was measured in all field collected mosquitoes (n = 912), using multiplex quantitative real-time polymerase chain reaction (PCR) assays, relative to the housekeeping gene ribosomal protein S7 (_RPS7_) [30]. In addition, gene expression levels were measured in susceptible _A. coluzzii_ Nguosso colony mosquitoes (n = 48). All samples were run in technical triplicate. Expression level and fold change of each target gene between resistant and susceptible field samples, relative to the susceptible laboratory strain, were calculated using the 2-\\({}^{\\text{-}\\Delta\\text{ACT}}\\) method incorporating PCR efficiency, normalized relative to the endogenous control gene (_RPS7_).\n", + "\n", + "header: Discussion\n", + "\n", + "Cote d'Ivoire has hot spots with some of the highest levels of resistance of _Anopheles_ mosquitoes to public health insecticides worldwide, with potentially severe implications for sustaining gains in malaria control [31]. To safeguard malaria vector control efforts and inform the design of effective resistance management strategies, involving tactical deployment of differing indoor residual spraying and LLIN modalities, there needs to be a clear understanding of contemporary phenotypic and genotypic insecticide resistance.\n", + "\n", + "Our study detected intense pyrethroid resistance in southeast Cote d'Ivoire, as evidenced by high proportions of survivors, after exposure to 10 times the diagnostic doses of pyrethroids, as well as very low knockdown and 24-hour mortality rates for deltamethrin-only LLINs, equivalent to rates for an untreated net. These findings are largely in agreement with historical resistance profiles from this region [7, 10, 11] and indicate that conventional LLINs may no longer be operationally viable in areas of high pyrethroid resistance intensity. Previous phase II studies of pyrethroid-only LLINs in the central region of Cote d'Ivoire have demonstrated similarly poor efficacy with highly resistant _A. gambiae_ s.l. populations but argued for the retention of some degree of personal protection [15-17].\n", + "\n", + "Other observational cohorts have reported higher incidences of malaria among non-net users compared with users in areas of moderate to high pyrethroid resistance [17]. The extent of protective efficacy afforded by pyrethroid LLINs will likely reflect the strength of local vector resistance and levels of both net physical integrity and individual compliance [32, 33]; in Cote d'Ivoire, reported LLIN usage has been low, requiring additional behavioral interventions [2, 34]. Our findings of high mosquito mortality rates after exposure to clothianidin and chlorfenapyr and improved vector susceptibility with PBO treatment (on both LLINs and in resistance bioassays), are consistent with data from other sentinel sites across Cote d'Ivoire [16, 35, 36], and strongly support the deployment of vector control interventions incorporating these new active ingredients.\n", + "\n", + "Study results indicate that _A. coluzzi_ was the predominant local vector species during the rainy season, as observed previously [7], circulating sympatrically with smaller proportions of _A. gambiae_ s.s. These 2 vector species commonly cohabit but can be genetically distinct in terms of resistance mechanisms [37, 38] and can also differ in larval ecology, behavior, migration, and activation [39-41]. In general, resistance mechanisms in _A. coluzzi_ are less well characterized, compared with _A. gambiae_ s.s., in part because these vectors are morphologically\n", + "\n", + "Figure 4: Metabolic gene expression in field _Anopheles coluzzi_ and _Anopheles gambiae_ sensu stricto (s.s.) populations relative to a susceptible colony population. Error bars represent 95% confidence intervals. Statistically significant differences in expression levels relative to the susceptible colony are indicated as follows: *_P_ <.05; **_P_ <.01; ***_P_ <.001.\n", + "\n", + "\n", + "indistinguishable and few studies present data disaggregated by PCR-confirmed species.\n", + "\n", + "We observed several distinct features in our study, including, principally, evidence for ongoing selection of L1014F _kdr_ and G119S _Ace-1 in A. coluzzii_, which was absent in _A. gambiae_ s.s. and higher proportions of N1575Y in _A. gambiae_ s.s.; expression levels of metabolic genes were comparable between species. The lack of association between L1014F _kdr_ genotype and mosquito phenotype, coupled with the identification of 3 CYP450 enzymes (_CYP6P4, CYP6P3,_ and _CYP6Z1_) that were significantly overexpressed in field populations (some of which are known to metabolize pyrrethroids and next-generation LLIN insecticides [42, 43]), indicate a key role for metabolic resistance in this _A. coluzzii_ population. One notable difference in our data set, compared with previous findings in Agboville [7], was the finding of benodiocarb susceptibility. This may be attributable to small-scale spatial and longitudinal heterogeneity in resistance, which can be highly dynamic [37, 44], and/or phenotypic differences between vector species, complicating intervention choice for resistance management.\n", + "\n", + "With the exception of chlorfenapyr, which is known to be a slow-acting insecticide, no delayed mortality effects were detected after insecticidal exposure; the format and dose used for clothianidin testing (another slow-acting insecticide [45]) were instead intended to measure acute toxicity within a 60-minute exposure period. Previous mathematical models using resistant mosquito colonies have suggested that sublethal insecticide treatment may still reduce vector lifespan and inhibit blood-feeding and host-seeking behaviors, thereby interrupting malaria transmission [46, 47]. Our observations are more compatible with reports from Burkina Faso, where different exposure regimens of wild, resistant _A. gambiae_ s.l. populations to deltamethrin LLINs did not induce any delayed mortality effects [47]. Further assessment of sublethal effects are warranted across additional field populations with differing resistance mechanisms, to clarify the impact of insecticidal exposure on the vectorial capacity of resistant mosquitoes.\n", + "\n", + "To date there is a paucity of data regarding the interactions between insecticide resistance and _Plasmodium_ development [48]. In the current study, _A. coluzzii_ that died after pyrethroid exposure were significantly more likely to be infected with malaria. This might be explained by elevated metabolic enzymes and/or prior pyrethroid exposure detrimentally affecting parasite development [49], although it is important to note that we did not detect any significant differences between gene overexpression in malaria-infected versus noninfected _A. coluzzii_. Alternatively, our sampled population may have been physiologically older, as phenotypic resistance is known to decline with age [50]. It is impossible to distinguish between these hypotheses using field-collected vector populations; the experimental design used in this study had other biological and technical limitations, which have been described in detail elsewhere [23, 37]\n", + "\n", + "In conclusion, as new combination and bitreated vector control interventions become available for deployment, contemporary resistance information is crucial for the rationale design of management strategies and to mitigate further selection for particular resistance mechanisms. The results from the current study contribute to growing insecticide resistance data for Cote d'Ivoire, demonstrating a loss of bioefficacy of pyrethroid LLINs and supporting the use of new active ingredients (clothianidin, chlorfenapyr, and PBO). Study findings also highlight the need for expanded insecticide resistance surveillance, including monitoring of metabolic resistance mechanisms, in conjunction with studies to better characterize the impact of sublethal insecticide exposure on vectorial capacity and the interaction between insecticide resistance and _Plasmodium_ parasite development.\n", + "\n", + "Figure 5: Metabolic gene expression in resistant versus susceptible field _Anopheles coluzzi_, which either died or survived after insecticidal exposure. Error bars represent 95% confidence intervals.\n", + "\n", + "header: Mosquito Collections and Species Identification: LIII Efficacy\n", + "\n", + "A total of 2666 field-caught _A. gambiae_ s.l were used to assess the bioefficacy of conventional pyrethroid-treated LLINs (PermaNet 2.0 and PermaNet 3.0 side panels) and next-generation synergisti LLINs (PermaNet 3.0 roof panels), compared with an untreated control (Figure 1). Overall, _A. gambiae_ s.l. knockdown and mortality rates with deltamethrin LLINs were very low and largely equivalent to those for the untreated control net (Figure 1). At 60 minutes, average mosquito knockdown rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels were 1.56% (95% confidence interval [CI], 1.13%-1.99%), 0.54% (.42%-6.5%), and 1.75% (1.49%-2.0%), respectively. By contrast, average mosquito knockdown rates for PBO-containing PermaNet 3.0 roof panels were significantly higher (79.8% [95% CI, 79.07%-80.48%]; kh2 = 705.51, 968.65, and 937.33 [_P_ <.001] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1).\n", + "\n", + "At 24 hours, mortality rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels remained low (6.11% [95% CI, 4.71%-7.51%], 5.44% [4.58%-6.29%], and 3.66% [3.12%-4.19%], respectively), while those with PermaNet 3.0 roof panels increased only marginally but still remained significantly higher (83.81% [95% CI, 83.15%-84.47%];\n", + "\n", + "Figure 1.: Bioefficacy of different unwashed long-lasting insecticidal nets (LLINs) against field-caught _Angabies gambiae_ sensu tatto. Mean knockdown and mortality rates are shown with 95% confidence intervals, at 60 minutes and 24 hours, respectively, after 3-minute exposure to PermaNet 2.0 (deltamethrin only), side panels of PermaNet 3.0 (deltamethrin only, roof panels of PermaNet 3.0 (pieronym) butoxide plus deltamethrin), and an untreated control net. Knockdown or mortality rates in the same time period for each treatment sharing a letter do not differ significantly (_P_ >.05). Green lines at 275% and 295% knockdown represent minimal and optimal effectiveness, respectively, at 60 minutes. Red lines at 250% and >80% mortality represent minimal and optimal LLIN effectiveness at 24 hours, respectively, as defined by the World Health Organization [21].\n", + "\n", + "\n", + "\\(\\chi^{2}\\) = 727.96, 914.61, and 963.09 [\\(P\\) <.001 for all] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1). PermaNet 3.0 roof panels reached minimal effectiveness (knockdown, >=75%) 60 minutes after exposure and optimal effectiveness (mortality rate, >=80%) at 24 hours. Neither of the deltamethrin-only LLINS reached either effectiveness threshold at any time point.\n", + "\n", + "header: Mosquito Processing, Identification of _A. gambiae_ s.l. Species Complex\n", + "\n", + "Members, and _Plasmodium falciparum_ Detection\n", + "\n", + "A subsample of field-caught mosquitoes tested in bioassays was selected for molecular analysis (n = 912). Approximately equal numbers of specimens were chosen to represent phenotypically \"susceptible\" or \"resistant\" mosquitoes for each LLIN type or insecticide dose, selected across different replicates and testing days to capture as much population-level variation as possible. RNA was extracted from individual whole-body mosquitoes according to standard protocols [23]. Field _A. gambiae_ s.l. were identified to species level [25] and were screened for the presence of _Plasmodium falciparum_[26].\n", + "\n", + "header: Methods\n", + "\n", + "The study protocol was approved by the Comite National d'Ethique des Sciences de la Vie et de la Sante (no. 069-19/MSHP/CNESVS-kp) and the London School of Hygiene and Tropical Medicine (nos. 16782 and 16899). Study activities were conducted in the village of Aboude, rural Agboville, Agneby-Tiassa region, southeast Cote d'Ivoire (5'55'N, 4'13'W), selected because of its high mosquito densities and malaria prevalence [1]. Adult mosquitoes were collected using human landing catches, inside and outside households from 6 pm to 6 am, for a total of 190 person/trap/nights between 5 and 26 July 2019. Unfed mosquitoes, morphologically identified as _A. gambiae_ s.l. [20], were tested in bioassays that same day, after a brief recovery period; blood-fed mosquitoes were first held for 2-3 days to allow for blood-meal digestion.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Conclusions\n", + "\n", + "Study findings raise concerns regarding the operational failure of standard LLINs and support the urgent deployment of vector control interventions incorporating piperonyl butoxide, chlorfenapyr, or clothianidin in areas of high resistance intensity in Cote d'Ivoire.\n", + "\n", + "header: Insecticide Resistance Intensity\n", + "\n", + "A total of 2251 field-caught _A. gambiae_ s.l. were tested in resistance bioassays. Intense pyrethroid resistance was evident with more than 25% of mosquitoes surviving exposure to 10 times the dose of insecticide required to kill a susceptible population (Figure 2A). At the diagnostic dose, mosquito mortality rates did not exceed 25% for any pyrethroid tested, which was consistent with the high survival rates observed during cone bioassays using conventional LLINs (Figure 1). In general, levels of resistance to alpha-cypermethrin, deltamethrin, and permethrin were not significantly different at each insecticide concentration tested (Figure 2A).\n", + "\n", + "By comparison, carbamate tolerance was low, with a mean knockdown of 94.53% (95% CI, 92.11%-96.95%; n = 101) after 30 minutes of exposure to the diagnostic dose of bendiocarb. Similarly, high levels of susceptibility to new insecticides clothianidin and chlorfenapyr were observed, with mean mortality rates of 94.11% (95% CI, 93.43%-94.80%; n = 102) and 95.54% (94.71%-96.36%; n = 112), respectively, 72 hours after exposure to the tentative diagnostic doses. Preexposure to PBO increased the average _A. gambiae_ s.l. mortality rate significantly, from 14.56% (95% CI, 6.24%-22.88%) to 72.73% (64.81%-79.43%) and from 44.66% (34.86%-54.46%) to 94.17% (91.12%-97.22%) after exposure to 1 or 2 times the diagnostic dose of deltamethrin (Figure 2B).\n", + "\n", + "header: Malaria Prevalence\n", + "\n", + "Of the 912 _A. gambiae_ s.l. mosquitoes assayed, 31 tested positive for _P. falciparum_ (3.4%). For PCR-confirmed _A. coluzzii_, _P. falciparum_ prevalence was 3.50% (28 of 805); the remaining 3 infections were in _A. gambiae_ s.s. (4%; 3 of 75). By resistance phenotype, susceptible _A. coluzzii_ (ie, those that died after pyrethroid exposure) were more likely to be infected with malaria, compared with resistant mosquitoes (kh2 = 4.6987; \\(P\\) =.03); infection rates were 5.94% (13 of 219) and 2.49% (10 of 401), respectively.\n", + "\n", + "header: Table 1. Cox Proportional Hazard Model to Determine Impact of Long-Lasting Insecticidal Net/Insecticidal Exposure on Survival of Field-Caught Anopheles gambiae Sensu Lato 72 Hours After Exposure\n", + "footer: Abbreviations: CI, confidence interval; HRR, hazard rate ratio (ratio of hazard rate for control/reference group to hazard rate for treatment group; PBO, piperonyl butoxide.\n", + "a Immediate mortality rates after long-lasting insecticidal net (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. \n", + "b Significance cutoff level defined as α = .05.\n", + "\n", + "\n", + "columns: ['Insecticide Exposure', 'No. (No. of Events)', 'HRR (95% CI)', 'P Valueb']\n", + "\n", + "{\"0\":{\"Insecticide Exposure\":\"Untreated netting\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"1\":{\"Insecticide Exposure\":\"PermaNet 2.0 (deltamethrin only)\",\"No. (No. of Events)\":\"1135 (1047)\",\"HRR (95% CI)\":\"1.095 (.968\\u20131.239)\",\"P Valueb\":\".15\"},\"2\":{\"Insecticide Exposure\":\"PermaNet 3.0 side panels (deltamethrin only)\",\"No. (No. of Events)\":\"1157 (1088)\",\"HRR (95% CI)\":\"0.9664 (.9092\\u20131.027)\",\"P Valueb\":\".27\"},\"3\":{\"Insecticide Exposure\":\"PermaNet 3.0 roof panels (PBO + deltamethrin)\",\"No. (No. of Events)\":\"563 (533)\",\"HRR (95% CI)\":\"1.007 (.939\\u20131.079)\",\"P Valueb\":\".85\"},\"4\":{\"Insecticide Exposure\":\"Acetone control\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"5\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 1\\u00d7\",\"No. (No. of Events)\":\"676 (641)\",\"HRR (95% CI)\":\"1.006 (.9696\\u20131.043)\",\"P Valueb\":\".77\"},\"6\":{\"Insecticide Exposure\":\"Deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"683 (645)\",\"HRR (95% CI)\":\"0.9942 (.9539\\u20131.036)\",\"P Valueb\":\".78\"},\"7\":{\"Insecticide Exposure\":\"Permethrin 1\\u00d7\",\"No. (No. of Events)\":\"693 (661)\",\"HRR (95% CI)\":\"1.015 (.9698\\u20131.062)\",\"P Valueb\":\".52\"},\"8\":{\"Insecticide Exposure\":\"Clothianidin 1\\u00d7\",\"No. (No. of Events)\":\"698 (581)\",\"HRR (95% CI)\":\"1.208 (.9227\\u20131.581)\",\"P Valueb\":\".17\"},\"9\":{\"Insecticide Exposure\":\"Chlorfenapyr 1\\u00d7\",\"No. (No. of Events)\":\"708 (580)\",\"HRR (95% CI)\":\"1.692 (1.086\\u20132.637)\",\"P Valueb\":\".02\"},\"10\":{\"Insecticide Exposure\":\"PBO + deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"630 (577)\",\"HRR (95% CI)\":\"0.9662 (.2411\\u20133.873)\",\"P Valueb\":\".96\"},\"11\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"633 (601)\",\"HRR (95% CI)\":\"0.9951 (.9407\\u20131.053)\",\"P Valueb\":\".86\"},\"12\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"652 (610)\",\"HRR (95% CI)\":\"0.9942 (.9393\\u20131.052)\",\"P Valueb\":\".84\"},\"13\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"636 (583)\",\"HRR (95% CI)\":\"0.9931 (.8638\\u20131.142)\",\"P Valueb\":\".92\"},\"14\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"624 (587)\",\"HRR (95% CI)\":\"0.9951 (.917\\u20131.08)\",\"P Valueb\":\".91\"},\"15\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"623 (588)\",\"HRR (95% CI)\":\"0.9943 (.9072\\u20131.09)\",\"P Valueb\":\".90\"},\"16\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"656 (603)\",\"HRR (95% CI)\":\"1.026 (.9509\\u20131.107)\",\"P Valueb\":\".51\"},\"17\":{\"Insecticide Exposure\":\"1\\u00d7 Insecticide dose\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"18\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"117 (92)\",\"HRR (95% CI)\":\"1.016 (.9069\\u20131.138)\",\"P Valueb\":\".78\"},\"19\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"108 (78)\",\"HRR (95% CI)\":\"1.007 (.9403\\u20131.078)\",\"P Valueb\":\".84\"},\"20\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"143 (105)\",\"HRR (95% CI)\":\"1.0 (.9035\\u20131.107)\",\"P Valueb\":\">.99\"},\"21\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"114 (83)\",\"HRR (95% CI)\":\"1.0 (.9363\\u20131.068)\",\"P Valueb\":\">.99\"},\"22\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"137 (94)\",\"HRR (95% CI)\":\"1.022 (.8528\\u20131.225)\",\"P Valueb\":\".81\"},\"23\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"157 (114)\",\"HRR (95% CI)\":\"0.9952 (.9491\\u20131.044)\",\"P Valueb\":\".84\"}}\n", + "\n", + "header: Notes\n", + "\n", + "_Acknowledgments._ The authors express their sincere thanks to M. Didier Dobri, Centre Suisse de Recherches Scientifiques en Cote d'Ivoire (CSRS) laboratory technician, and Fidele Assamoa for their support in mosquito collection and rearing, the chief and population of the village of Aboude (Agboville), and the entomology fieldworkers of CSRS. They also thank Vestergaard for supplying the long-lasting insecticidal nets tested in this study.\n", + "\n", + "_Author contributions._ A. M., E. C., M. K., T. W., and L. A. M. designed the study. A. M., E. C., C. E., and B. P. led the entomology field activities and participated in data collection. A. M., E. C., C. L. J., T. W., and L. A. M. performed the molecular assays. A. M., E. C., M. K., C. E., C. L. J., B. P., S. R. I, T. W., and L. A. M. were responsible for data analysis and interpretation. L. A. M. drafted the manuscript, which was revised by all coauthors. All authors read and approved the final manuscript.\n", + "\n", + "_Disclaimer._ The findings and conclusions in this report are those of the authors and do not necessarily represent the official position of the Centers for Disease Control and Prevention.\n", + "\n", + "_Financial support._ This work was supported by the Sir Halley Stewart Trust (L.A.M.), the Wellcome Trust/Royal Society ([http://www.wellcome.ac.uk](http://www.wellcome.ac.uk) and [https://royalsociety.org](https://royalsociety.org); (101285/Z/13/Z to T.W.) and the US President's Malaria Initiative/Centers for Disease Control and Prevention (S.R.I.).\n", + "\n", + "_Potential conflicts of interest._ All authors: No reported conflicts. All authors have submitted the ICMJE Form for Disclosure of Potential Conflicts of Interest. Conflicts that the editors consider relevant to the content of the manuscript have been disclosed.\n", + "\n", + "header: Resistance Intensity and Synergist Bioassay Testing\n", + "\n", + "Centers for Disease Control and Prevention (CDC) resistance intensity bioassays were performed for 6 public health insecticides (pyrethroids: alpha-cypermethrin, deltamethrin, and permethrin; carbamate: bendiocarb; neonicotinoid: clothianidin; and pyrrole: chlorfenapyr) [22, 23]. The diagnostic doses of all insecticides were evaluated (including clothianidin [90 mg per bottle] [23] and chlorfenapyr [100 mg per bottle]) and 2, 5, and 10 times the diagnostic dose of pyrethroid insecticides were also used. Per test, knockdown was recorded at 15-minute intervals for 30 minutes (pyrethroids and bendiocarb) or 60 minutes (dothianidin and chlorfenapyr) of insecticide exposure. One-hour PBO preexposures were performed using WHO tube assays [24], before deltamethrin CDC bottle bioassay testing [22].\n", + "\n", + "WHO cone and CDC resistance intensity bioassay data were interpreted according to the WHO criteria [21, 22]. Mosquitoes that died after exposure to a LLIN or 1x insecticide dose were stored at -20degC in RNAlater (Thermo Fisher Scientific) and were considered \"susceptible\" for genotypic analysis. Surviving mosquitoes were held and scored for mortality rate after 24, 48 and 72 hours to observe delayed mortality effects. Kaplan-Meier curves were used to visualize survival data, and Cox regression was used to compare postexposure survival. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. Surviving mosquitoes at 72 hours were stored at -20degC in RNAlater and were considered \"resistant\" for genotypic analysis.\n", + "\n", + "header: Mosquito Survival After Insecticidal Exposure\n", + "\n", + "All _A. gambiae_ s.l. tested in LLIN bioefficacy or resistance intensity bioassays, were held for 72 hours, to assess any impact of insecticide or net exposure on delayed mortality rate. For LLIN bioassays, there was little evidence for any reduction in survival during this holding period (Cox regression \\(P\\) =.15,.27, and.85, respectively, for comparisons between untreated control and PermaNet 2.0, PermaNet 3.0 side panels, and PermaNet 3.0 roof panels) (Table 1 and Figure 3A). Exposure to the diagnostic doses of all insecticides in CDC bottle bioassays did not induce significant delayed mortality effects over 72 hours (Cox regression \\(P\\) >.05 for all insecticides compared with control, with the exception of chlorfenapyr [_P_ =.02]) (Table 1 and Figure 3B). This phenomenon was also observed at increasing pyrethroid doses\n", + "\n", + "Figure 2: _A._ Resistance intensity of field-caught _Anaopheles gambiae_ sensu late (s.l.) after exposure to 1, 2, 5, or 10 times the diagnostic dose of pyrethroid insecticides. Mean knockdown/acute toxicity rates after 30-minute exposure are shown with 95% confidence intervals (Cls). Knockdown or mortality rates at the same dose per insecticide sharing a letter do not differ significantly (_P_ >.05). Mortality rates <00% (_lower and line_) represent confirmed resistance at the diagnostic dose (1a), and rates <00% (_upper and line_) indicate moderate to high-intensity resistance and high-intensity resistance at 5° and 10x, respectively, as defined by the World Health Organization [24]. _B._ Restoration of deltamethrin susceptibility of field-caught _A. gambiae_ s.l. after presopause to piperonyl butoxide (PBO). Mean knockdown/acute toxicity after 30-minute exposure to 1 or 2 times the diagnostic dose of deltamethrin with 95% Cls. Knockdown/mortality rates do not differ significantly between pyrethroid only and synergist plus pyrethroid sharing a letter (_P_ >.05). Red line at 90% mortality rate represents metabolic resistance mechanisms partially involved [24].\n", + "\n", + "\n", + "(Cox regression \\(P\\) >.05 for alpha-cypermethrin, deltamethrin, and permethrin 5x and 10x vs either the control or diagnostic dose) (Table 1; Figure 3C and 3D).\n", + "\n", + "header: RESULTS\n", + "\n", + "A total of 4917 female _A. gambiae_ s.l. mosquitoes were collected in Agboville, Cote d'Ivoire. Of those, 912, which were previously tested in either LLIN bioefficacy (n = 384) or resistance intensity (n = 528) bioassays, were selected for molecular species identification. Of the 912 selected, 805 (88.3%) were determined to be _A. coluzzii_, 75 (8.2%) were _A. gambiae_ s.s., and 22 (2.4%) were _A. gambiae_-_A. coluzzii_ hybrids; 10 individuals did not amplify.\n", + "\n", + "header: Results\n", + "\n", + "Phenotypic resistance was intense: >25% of mosquitoes survived exposure to 10 times the doses of pyrethroids required to kill susceptible populations. Similarly, the 24-hour mortality rate with deltamethrin-only LLINs was very low and not significantly different from that with an untreated net. Sublethal pyrethroid exposure did not induce significant delayed vector mortality effects 72 hours later. In contrast, LLINs containing the synergist piperonyl butoxide, or new insecticides dothianidin and chlorfenapyr, were highly toxic to _A. coluzzii_. Pyrethroid-susceptible _A. coluzzii_ were significantly more likely to be infected with malaria, compared with those that survived insecticidal exposure. Pyrethroid resistance was associated with significant overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_.\n", + "\n", + "header: Characterization of Insecticide Resistance Mechanisms: Target-Site Mutations\n", + "\n", + "The same cohort of field mosquitoes (n = 912) was tested for the presence of L1014F _kdr_[27] and N1575Y mutations [28]. A subsample of mosquitoes (n = 49) that were exposed to bendiocarb, clothianidin or chlorfenapyr was tested for the presence of the G119S _Ace-1_ mutation [29]. Pearson kh2 and Fisher exact tests (when sample sizes were small) were used to investigate the statistical association between resistance status, allele frequencies, and deviations from Hardy-Weinberg equilibrium.\n", + "\n", + "header: Study Area and Mosquito Collections: WHO Cone Bioassay Testing\n", + "\n", + "Two types of LLIN were evaluated in this study. PermaNet 2.0 is a conventional LLIN treated with deltamethrin only (1.4 g/kg +- 25%) and PermaNet 3.0 is a piperonyl butoxide (PBO) synergism LILIN, consisting of a roof containing PBO (25g/kg) and deltamethrin (4 g/kg +- 25%) and side panels containing deltamethrin only (2.8 g/kg +- 25%). WHO cone bioassays were used to test the susceptibility of _A. gambiae_ s.l. exposed to unwashed PermaNet 2.0, PermaNet 3.0 roof panels, and PermaNet 3.0 side panels [21]. To control for potential variation in insecticide/synergist content, each of 5 LLINs per type was cut into 19 pieces, measuring 30 x 30 cm, with each piece tested a maximum of 3 times.\n", + "\n", + "header: Abstract\n", + "\n", + "Association of Reduced Long-Lasting Insecticidal Net Efficacy and Pyrethroid Insecticide Resistance With Overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_ in Populations of _Anopheles coluzzii_ From Southeast Cote d'Ivoire\n", + "\n", + "Anne Meiwald,\\({}^{1,2}\\) Emma Clark,\\({}^{1,2}\\) Mejica Kristan,\\({}^{1}\\) Constant Edi,\\({}^{2}\\) Claire L Jeffries,\\({}^{1}\\) Bethanie Pelloquin,\\({}^{1}\\) Seth R. Irish,\\({}^{2}\\) Thomas Walker,\\({}^{1}\\) and Louisa A. Messenger\\({}^{1,0}\\)\n", + "\n", + "\n", + "Resistance to major public health insecticides in Cote d'Ivoire has intensified and now threatens the long-term effectiveness of malaria vector control interventions.\n", + "\n", + "header: Keywords\n", + "\n", + "_Anopheles coluzzii_; insecticide resistance; _Plasmodium falciparum_; long-lasting insecticidal nets; Cote d'Ivoire; PBO; chlorfenapyr; clothianidin; _CYP6P4_; _CYP6P3_; _CYP6Z1_\n", + "\n", + "In Cote d'Ivoire, malaria is a serious public health problem with the entire population of about 26.2 million people at risk, and disease prevalence reaching as high as 63% in the southwest region [1]. Control of _Anopheles gambiae_ sensu lato (s.l.), the major malaria vector species group, has been through the efforts of the National Malaria Control Programme, which has distributed insecticide-treated nets as the primary vector control intervention. Indoor residual spraying and larviciding in high transmission areas have been recommended as complementary strategies; implementation of the former commenced in late 2020 [2]. Estimates of net coverage across the country remain low, with the proportion of households with at least >=1 insecticide-treated net per 2 persons rising from 31% in 2012 to 47% in 2016, and insecticide-treated net use stagnating at 40% of households reporting sleeping under a net the previous night in both survey years [2]. The most recent universal net campaigns in Cote d'Ivoire in 2017-2018 issued conventional, pyrethroid (deltamethrin) long-lasting insecticidal nets (LLINs), aiming to achieve 90% coverage and 80% use [2]. However, country-wide, multiclass insecticide resistance among populations of _A. gambiae_ s.l. is a growing cause for concern because of potential operational failure of current vector control strategies, both locally and across the sub-Saharan region [2, 3].\n", + "\n", + "Resistance to pyrethroid and carbamate insecticides in _Anopheles_ mosquitoes was first reported from the central \n", + "region of Cote d'Ivoire in the early 1990s [4, 5, 6, 7]. Local resistance to the major insecticide classes recommended by the World Health Organization (WHO) for adult mosquito control--pyrethroids, carbamates, organophosphates, and organochlorines--evolved rapidly [8, 9, 10] and has been increasing in intensity, driven largely by selective pressures imposed by contemporaneous scale-up of public health vector control interventions (including those targeting malaria, trypanosomiasis, and onchocerciasis vectors) and use of agricultural pesticides [11, 12, 13, 14, 7]. This escalation in resistance has now begun to compromise the insecticidal efficacy and community-wide impact of conventional, pyrethroid LLINs in Cote d'Ivoire [14, 15], although some levels of personal protection may still remain [15, 16, 17].\n", + "\n", + "Among vector populations across Cote d'Ivoire, the L1014F _kdr_ mutation is pervasive and has been implicated in some longitudinal trends in decreasing DDT and pyrethroid susceptibility [7, 11]; L1014S _kdr_ and N1575Y resistance mutations have also been detected but at much lower frequencies [18]. Extreme carbamate (bendiocarb) resistance and pyrethroid cross-resistance in some _A. gambiae_ sensu stricto (s.s.) populations are mediated by overexpression of _CYP6P3_ and _CYP6M2_ and duplication of the G119S _Ace-1_ mutation [19]. To support and safeguard future malaria control efforts in Cote d'Ivoire, the current study evaluated the efficacy of conventional and next-generation LLINs for prospective distribution, determined current insecticide resistance profiles of _A. gambiae_ s.l. (principally _Anopheles coluzzi_), and characterized underlying molecular and metabolic resistance mechanisms.\n", + "\n", + "header: Metabolic Resistance Mechanisms\n", + "\n", + "Comparison of metabolic gene expression levels in field populations of _A. coluzzi_ and _A. gambiae s.s._ demonstrated significant up-regulation of _CYP6P4_ (fold change, 5.88 [95% CI, 5.19-44.06] for _A. coluzzi_ and 6.08 [5.43-50.64] for _A. gambiae_ s.s.), _CYP6Z1_ (4.04 [3.69-41.54] and 3.56 [3.24-36.25], respectively),\n", + "\n", + "Figure 3.: The longevity of field-caught _A. gambiae_ sensus into after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (_A_) and \\(x\\) (B, 5x [_O_], and 10× [_D_) the diagnostic dose of pyrethroid insecticides in Centres for Disease Control and Prevention resistance intensity assays. Kaplan-Meier survival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\n", + "\n", + "\n", + "and _CYP6P3_ (12.56 [11.40-12-3.83] and 13.85 [12.53-132.03]), relative to a susceptible laboratory colony, respectively (Figure 4). More modest overexpression of _CYP6P1_ and _GSTE2_ was observed (_CYP6P1_ fold changes, 1.18 [95% CI, 1.08-12.31] and 1.28 [1.17-14.40]; GSTE2, 0.56 [.48-3.32], and 0.67 [.58-4.29], for _A. coluzzi_ and _A. gambiae_ s.s., respectively) (Figure 4). The fold change levels did not differ significantly between the 2 species for any gene nor by malaria infection status in wild _A. coluzzi_. Comparison of metabolic gene expression in phenotyped field populations of _A. coluzzi_ revealed lower fold changes overall, but notably, increased overexpression of _CYP6P3_ in survivors of bendiocarb, deltamethrin, PBO plus deltamethrin, and permethrin (fold change, 3.91 [95% CI, 3.33-22.16], 2.21 [1.88-12.53], 2.64 [2.21-13.69], and 2.21 [1.99-20.03], respectively) (Figure 5).\n", + "\n", + "header: Target-Site Resistance Mutations\n", + "\n", + "L1014_F_kdr_ screening revealed that 92.2% (796/863) of _A. gambiae_ s.l. mosquitoes harbored the mutation; 71.5% (617 of 863) were homozygous, 20.7% (179 of 863) were heterozygous, 5.1% (44 of 863) were wild type, and 2.7% (23 of 863) did not amplify. For PCR-confirmed _A. coluzzii_, L1014F_kdr_ prevalence was 87.8% (707 of 805); 66.6% (536 of 805) were homozygous for the mutation, 21.2% (171 of 805) were heterozygous, 5.3% (43 of 805) were wild type, and 2.2% (18 of 805) did not amplify. For _A. coluzzii_, population-level L1014F_kdr_ allele frequency was 0.83, with evidence for significant deviations from Hardy-Weinberg equilibrium (kh2 = 29.124; \\(P\\) <.001). There was no significant association between L1014F_kdr_ frequency and the ability of _A. coluzzii_, to survive pyrethroid exposure, in either LLIN or resistance bioassays (kh2 = 2.0001 [_P_ =.16] and kh2 = 3.6998 [_P_ =.054], respectively). Similarly, there was no significant association between L1014F_kdr_ and the ability of _A. coluzzii_ to survive PBO preexposure and pyrethroid treatment, in either LLIN or resistance bioassays (kh2 = 0.0086; \\(P\\) =.93; Fisher exact test, \\(P\\) =.429, respectively).\n", + "\n", + "For PCR-confirmed _A. gambiae_ s.s., L1014F_kdr_ prevalence was 95.3% (61 of 64); 89.1% (57 of 64) were homozygous for the mutation, 6.3% (4 of 64) were heterozygous, none were wild type, and 4.7% (3 of 64) did not amplify. There was no significant association between L1014F_kdr_ frequency and ability of _A. gambiae_ s.s. to survive pyrethroid or PBO preexposure and pyrethroid treatment (in either LLIN or resistance bioassays), because all tested individuals harbored this mutation (n = 61). For _A. gambiae_ s.s., the population-level L1014F_kdr_ allele frequency was 0.97, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.070; \\(P\\) =.79).\n", + "\n", + "N1575Y screening revealed that 2.3% of _A. gambiae_ s.l. mosquitoes (21 of 912) harbored the mutation; all were\n", + "heterozygotes. N1575Y prevalence was 1.1% (9 of 805) and 16% (12 of 75) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 0.99% (9 of 912) did not amplify. There was no evidence for ongoing N1575Y selection in either species (kh2 = 0.026 [_P_ =.87] and kh2 = 0.62 [_P_ =.43] for _A. coluzzi_ and _A. gambiae_ s.s., respectively). For _A. coluzzi_, there was no significant association between N1575Y frequency and ability of mosquitoes to survive pyrethroid exposure, in LLIN or resistance bioassays (kh2 = 0.0001 [_P_ =.99] and kh2 = 0.3244 [_P_ =.57], respectively).\n", + "\n", + "G119S _Ace-1_ screening revealed that 55.1% of _A. gambiae_ s.l. mosquitoes (27 of 49) harbored the mutation; all were heterozygotes. G119S _Ace-1_ prevalence was 64.9% (24 of 37) and 27.3% (3 of 11) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 1 remaining _A. gambiae-A. coluzzi_ hybrid was wild type. For _A. coluzzi_, population-level G119S _Ace-1_ allele frequency was 0.32, with evidence of significant deviations from Hardy-Weinberg equilibrium (kh2 = 8.525; \\(P\\) =.004). For _A. gambiae_ s.s., population-level G119S _Ace-1_ allele frequency was 0.14, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.274; \\(P\\) =.60). For _A. coluzzi_, there was a significant association between G119S _Ace-1_ frequency and surviving bendiocarb exposure (Fisher exact test, \\(P\\) =.005).\n", + "\n", + "header: Discussion\n", + "\n", + "Cote d'Ivoire has hot spots with some of the highest levels of resistance of _Anopheles_ mosquitoes to public health insecticides worldwide, with potentially severe implications for sustaining gains in malaria control [31]. To safeguard malaria vector control efforts and inform the design of effective resistance management strategies, involving tactical deployment of differing indoor residual spraying and LLIN modalities, there needs to be a clear understanding of contemporary phenotypic and genotypic insecticide resistance.\n", + "\n", + "Our study detected intense pyrethroid resistance in southeast Cote d'Ivoire, as evidenced by high proportions of survivors, after exposure to 10 times the diagnostic doses of pyrethroids, as well as very low knockdown and 24-hour mortality rates for deltamethrin-only LLINs, equivalent to rates for an untreated net. These findings are largely in agreement with historical resistance profiles from this region [7, 10, 11] and indicate that conventional LLINs may no longer be operationally viable in areas of high pyrethroid resistance intensity. Previous phase II studies of pyrethroid-only LLINs in the central region of Cote d'Ivoire have demonstrated similarly poor efficacy with highly resistant _A. gambiae_ s.l. populations but argued for the retention of some degree of personal protection [15-17].\n", + "\n", + "Other observational cohorts have reported higher incidences of malaria among non-net users compared with users in areas of moderate to high pyrethroid resistance [17]. The extent of protective efficacy afforded by pyrethroid LLINs will likely reflect the strength of local vector resistance and levels of both net physical integrity and individual compliance [32, 33]; in Cote d'Ivoire, reported LLIN usage has been low, requiring additional behavioral interventions [2, 34]. Our findings of high mosquito mortality rates after exposure to clothianidin and chlorfenapyr and improved vector susceptibility with PBO treatment (on both LLINs and in resistance bioassays), are consistent with data from other sentinel sites across Cote d'Ivoire [16, 35, 36], and strongly support the deployment of vector control interventions incorporating these new active ingredients.\n", + "\n", + "Study results indicate that _A. coluzzi_ was the predominant local vector species during the rainy season, as observed previously [7], circulating sympatrically with smaller proportions of _A. gambiae_ s.s. These 2 vector species commonly cohabit but can be genetically distinct in terms of resistance mechanisms [37, 38] and can also differ in larval ecology, behavior, migration, and activation [39-41]. In general, resistance mechanisms in _A. coluzzi_ are less well characterized, compared with _A. gambiae_ s.s., in part because these vectors are morphologically\n", + "\n", + "Figure 4: Metabolic gene expression in field _Anopheles coluzzi_ and _Anopheles gambiae_ sensu stricto (s.s.) populations relative to a susceptible colony population. Error bars represent 95% confidence intervals. Statistically significant differences in expression levels relative to the susceptible colony are indicated as follows: *_P_ <.05; **_P_ <.01; ***_P_ <.001.\n", + "\n", + "\n", + "indistinguishable and few studies present data disaggregated by PCR-confirmed species.\n", + "\n", + "We observed several distinct features in our study, including, principally, evidence for ongoing selection of L1014F _kdr_ and G119S _Ace-1 in A. coluzzii_, which was absent in _A. gambiae_ s.s. and higher proportions of N1575Y in _A. gambiae_ s.s.; expression levels of metabolic genes were comparable between species. The lack of association between L1014F _kdr_ genotype and mosquito phenotype, coupled with the identification of 3 CYP450 enzymes (_CYP6P4, CYP6P3,_ and _CYP6Z1_) that were significantly overexpressed in field populations (some of which are known to metabolize pyrrethroids and next-generation LLIN insecticides [42, 43]), indicate a key role for metabolic resistance in this _A. coluzzii_ population. One notable difference in our data set, compared with previous findings in Agboville [7], was the finding of benodiocarb susceptibility. This may be attributable to small-scale spatial and longitudinal heterogeneity in resistance, which can be highly dynamic [37, 44], and/or phenotypic differences between vector species, complicating intervention choice for resistance management.\n", + "\n", + "With the exception of chlorfenapyr, which is known to be a slow-acting insecticide, no delayed mortality effects were detected after insecticidal exposure; the format and dose used for clothianidin testing (another slow-acting insecticide [45]) were instead intended to measure acute toxicity within a 60-minute exposure period. Previous mathematical models using resistant mosquito colonies have suggested that sublethal insecticide treatment may still reduce vector lifespan and inhibit blood-feeding and host-seeking behaviors, thereby interrupting malaria transmission [46, 47]. Our observations are more compatible with reports from Burkina Faso, where different exposure regimens of wild, resistant _A. gambiae_ s.l. populations to deltamethrin LLINs did not induce any delayed mortality effects [47]. Further assessment of sublethal effects are warranted across additional field populations with differing resistance mechanisms, to clarify the impact of insecticidal exposure on the vectorial capacity of resistant mosquitoes.\n", + "\n", + "To date there is a paucity of data regarding the interactions between insecticide resistance and _Plasmodium_ development [48]. In the current study, _A. coluzzii_ that died after pyrethroid exposure were significantly more likely to be infected with malaria. This might be explained by elevated metabolic enzymes and/or prior pyrethroid exposure detrimentally affecting parasite development [49], although it is important to note that we did not detect any significant differences between gene overexpression in malaria-infected versus noninfected _A. coluzzii_. Alternatively, our sampled population may have been physiologically older, as phenotypic resistance is known to decline with age [50]. It is impossible to distinguish between these hypotheses using field-collected vector populations; the experimental design used in this study had other biological and technical limitations, which have been described in detail elsewhere [23, 37]\n", + "\n", + "In conclusion, as new combination and bitreated vector control interventions become available for deployment, contemporary resistance information is crucial for the rationale design of management strategies and to mitigate further selection for particular resistance mechanisms. The results from the current study contribute to growing insecticide resistance data for Cote d'Ivoire, demonstrating a loss of bioefficacy of pyrethroid LLINs and supporting the use of new active ingredients (clothianidin, chlorfenapyr, and PBO). Study findings also highlight the need for expanded insecticide resistance surveillance, including monitoring of metabolic resistance mechanisms, in conjunction with studies to better characterize the impact of sublethal insecticide exposure on vectorial capacity and the interaction between insecticide resistance and _Plasmodium_ parasite development.\n", + "\n", + "Figure 5: Metabolic gene expression in resistant versus susceptible field _Anopheles coluzzi_, which either died or survived after insecticidal exposure. Error bars represent 95% confidence intervals.\n", + "\n", + "header: Characterization of Insecticide Resistance Mechanisms: Metabolic Gene Expression\n", + "\n", + "Relative expression of 5 metabolic genes (_CYP6P3_, _CYP6P4_, _CYP6Z1_, _CYP6P1_, and _GSTE2_) was measured in all field collected mosquitoes (n = 912), using multiplex quantitative real-time polymerase chain reaction (PCR) assays, relative to the housekeeping gene ribosomal protein S7 (_RPS7_) [30]. In addition, gene expression levels were measured in susceptible _A. coluzzii_ Nguosso colony mosquitoes (n = 48). All samples were run in technical triplicate. Expression level and fold change of each target gene between resistant and susceptible field samples, relative to the susceptible laboratory strain, were calculated using the 2-\\({}^{\\text{-}\\Delta\\text{ACT}}\\) method incorporating PCR efficiency, normalized relative to the endogenous control gene (_RPS7_).\n", + "\n", + "header: Mosquito Processing, Identification of _A. gambiae_ s.l. Species Complex\n", + "\n", + "Members, and _Plasmodium falciparum_ Detection\n", + "\n", + "A subsample of field-caught mosquitoes tested in bioassays was selected for molecular analysis (n = 912). Approximately equal numbers of specimens were chosen to represent phenotypically \"susceptible\" or \"resistant\" mosquitoes for each LLIN type or insecticide dose, selected across different replicates and testing days to capture as much population-level variation as possible. RNA was extracted from individual whole-body mosquitoes according to standard protocols [23]. Field _A. gambiae_ s.l. were identified to species level [25] and were screened for the presence of _Plasmodium falciparum_[26].\n", + "\n", + "header: Mosquito Collections and Species Identification: LIII Efficacy\n", + "\n", + "A total of 2666 field-caught _A. gambiae_ s.l were used to assess the bioefficacy of conventional pyrethroid-treated LLINs (PermaNet 2.0 and PermaNet 3.0 side panels) and next-generation synergisti LLINs (PermaNet 3.0 roof panels), compared with an untreated control (Figure 1). Overall, _A. gambiae_ s.l. knockdown and mortality rates with deltamethrin LLINs were very low and largely equivalent to those for the untreated control net (Figure 1). At 60 minutes, average mosquito knockdown rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels were 1.56% (95% confidence interval [CI], 1.13%-1.99%), 0.54% (.42%-6.5%), and 1.75% (1.49%-2.0%), respectively. By contrast, average mosquito knockdown rates for PBO-containing PermaNet 3.0 roof panels were significantly higher (79.8% [95% CI, 79.07%-80.48%]; kh2 = 705.51, 968.65, and 937.33 [_P_ <.001] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1).\n", + "\n", + "At 24 hours, mortality rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels remained low (6.11% [95% CI, 4.71%-7.51%], 5.44% [4.58%-6.29%], and 3.66% [3.12%-4.19%], respectively), while those with PermaNet 3.0 roof panels increased only marginally but still remained significantly higher (83.81% [95% CI, 83.15%-84.47%];\n", + "\n", + "Figure 1.: Bioefficacy of different unwashed long-lasting insecticidal nets (LLINs) against field-caught _Angabies gambiae_ sensu tatto. Mean knockdown and mortality rates are shown with 95% confidence intervals, at 60 minutes and 24 hours, respectively, after 3-minute exposure to PermaNet 2.0 (deltamethrin only), side panels of PermaNet 3.0 (deltamethrin only, roof panels of PermaNet 3.0 (pieronym) butoxide plus deltamethrin), and an untreated control net. Knockdown or mortality rates in the same time period for each treatment sharing a letter do not differ significantly (_P_ >.05). Green lines at 275% and 295% knockdown represent minimal and optimal effectiveness, respectively, at 60 minutes. Red lines at 250% and >80% mortality represent minimal and optimal LLIN effectiveness at 24 hours, respectively, as defined by the World Health Organization [21].\n", + "\n", + "\n", + "\\(\\chi^{2}\\) = 727.96, 914.61, and 963.09 [\\(P\\) <.001 for all] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1). PermaNet 3.0 roof panels reached minimal effectiveness (knockdown, >=75%) 60 minutes after exposure and optimal effectiveness (mortality rate, >=80%) at 24 hours. Neither of the deltamethrin-only LLINS reached either effectiveness threshold at any time point.\n", + "\n", + "header: Methods\n", + "\n", + "The study protocol was approved by the Comite National d'Ethique des Sciences de la Vie et de la Sante (no. 069-19/MSHP/CNESVS-kp) and the London School of Hygiene and Tropical Medicine (nos. 16782 and 16899). Study activities were conducted in the village of Aboude, rural Agboville, Agneby-Tiassa region, southeast Cote d'Ivoire (5'55'N, 4'13'W), selected because of its high mosquito densities and malaria prevalence [1]. Adult mosquitoes were collected using human landing catches, inside and outside households from 6 pm to 6 am, for a total of 190 person/trap/nights between 5 and 26 July 2019. Unfed mosquitoes, morphologically identified as _A. gambiae_ s.l. [20], were tested in bioassays that same day, after a brief recovery period; blood-fed mosquitoes were first held for 2-3 days to allow for blood-meal digestion.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Notes\n", + "\n", + "_Acknowledgments._ The authors express their sincere thanks to M. Didier Dobri, Centre Suisse de Recherches Scientifiques en Cote d'Ivoire (CSRS) laboratory technician, and Fidele Assamoa for their support in mosquito collection and rearing, the chief and population of the village of Aboude (Agboville), and the entomology fieldworkers of CSRS. They also thank Vestergaard for supplying the long-lasting insecticidal nets tested in this study.\n", + "\n", + "_Author contributions._ A. M., E. C., M. K., T. W., and L. A. M. designed the study. A. M., E. C., C. E., and B. P. led the entomology field activities and participated in data collection. A. M., E. C., C. L. J., T. W., and L. A. M. performed the molecular assays. A. M., E. C., M. K., C. E., C. L. J., B. P., S. R. I, T. W., and L. A. M. were responsible for data analysis and interpretation. L. A. M. drafted the manuscript, which was revised by all coauthors. All authors read and approved the final manuscript.\n", + "\n", + "_Disclaimer._ The findings and conclusions in this report are those of the authors and do not necessarily represent the official position of the Centers for Disease Control and Prevention.\n", + "\n", + "_Financial support._ This work was supported by the Sir Halley Stewart Trust (L.A.M.), the Wellcome Trust/Royal Society ([http://www.wellcome.ac.uk](http://www.wellcome.ac.uk) and [https://royalsociety.org](https://royalsociety.org); (101285/Z/13/Z to T.W.) and the US President's Malaria Initiative/Centers for Disease Control and Prevention (S.R.I.).\n", + "\n", + "_Potential conflicts of interest._ All authors: No reported conflicts. All authors have submitted the ICMJE Form for Disclosure of Potential Conflicts of Interest. Conflicts that the editors consider relevant to the content of the manuscript have been disclosed.\n", + "\n", + "header: Resistance Intensity and Synergist Bioassay Testing\n", + "\n", + "Centers for Disease Control and Prevention (CDC) resistance intensity bioassays were performed for 6 public health insecticides (pyrethroids: alpha-cypermethrin, deltamethrin, and permethrin; carbamate: bendiocarb; neonicotinoid: clothianidin; and pyrrole: chlorfenapyr) [22, 23]. The diagnostic doses of all insecticides were evaluated (including clothianidin [90 mg per bottle] [23] and chlorfenapyr [100 mg per bottle]) and 2, 5, and 10 times the diagnostic dose of pyrethroid insecticides were also used. Per test, knockdown was recorded at 15-minute intervals for 30 minutes (pyrethroids and bendiocarb) or 60 minutes (dothianidin and chlorfenapyr) of insecticide exposure. One-hour PBO preexposures were performed using WHO tube assays [24], before deltamethrin CDC bottle bioassay testing [22].\n", + "\n", + "WHO cone and CDC resistance intensity bioassay data were interpreted according to the WHO criteria [21, 22]. Mosquitoes that died after exposure to a LLIN or 1x insecticide dose were stored at -20degC in RNAlater (Thermo Fisher Scientific) and were considered \"susceptible\" for genotypic analysis. Surviving mosquitoes were held and scored for mortality rate after 24, 48 and 72 hours to observe delayed mortality effects. Kaplan-Meier curves were used to visualize survival data, and Cox regression was used to compare postexposure survival. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. Surviving mosquitoes at 72 hours were stored at -20degC in RNAlater and were considered \"resistant\" for genotypic analysis.\n", + "\n", + "header: Conclusions\n", + "\n", + "Study findings raise concerns regarding the operational failure of standard LLINs and support the urgent deployment of vector control interventions incorporating piperonyl butoxide, chlorfenapyr, or clothianidin in areas of high resistance intensity in Cote d'Ivoire.\n", + "\n", + "header: Table 1. Cox Proportional Hazard Model to Determine Impact of Long-Lasting Insecticidal Net/Insecticidal Exposure on Survival of Field-Caught Anopheles gambiae Sensu Lato 72 Hours After Exposure\n", + "footer: Abbreviations: CI, confidence interval; HRR, hazard rate ratio (ratio of hazard rate for control/reference group to hazard rate for treatment group; PBO, piperonyl butoxide.\n", + "a Immediate mortality rates after long-lasting insecticidal net (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. \n", + "b Significance cutoff level defined as α = .05.\n", + "\n", + "\n", + "columns: ['Insecticide Exposure', 'No. (No. of Events)', 'HRR (95% CI)', 'P Valueb']\n", + "\n", + "{\"0\":{\"Insecticide Exposure\":\"Untreated netting\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"1\":{\"Insecticide Exposure\":\"PermaNet 2.0 (deltamethrin only)\",\"No. (No. of Events)\":\"1135 (1047)\",\"HRR (95% CI)\":\"1.095 (.968\\u20131.239)\",\"P Valueb\":\".15\"},\"2\":{\"Insecticide Exposure\":\"PermaNet 3.0 side panels (deltamethrin only)\",\"No. (No. of Events)\":\"1157 (1088)\",\"HRR (95% CI)\":\"0.9664 (.9092\\u20131.027)\",\"P Valueb\":\".27\"},\"3\":{\"Insecticide Exposure\":\"PermaNet 3.0 roof panels (PBO + deltamethrin)\",\"No. (No. of Events)\":\"563 (533)\",\"HRR (95% CI)\":\"1.007 (.939\\u20131.079)\",\"P Valueb\":\".85\"},\"4\":{\"Insecticide Exposure\":\"Acetone control\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"5\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 1\\u00d7\",\"No. (No. of Events)\":\"676 (641)\",\"HRR (95% CI)\":\"1.006 (.9696\\u20131.043)\",\"P Valueb\":\".77\"},\"6\":{\"Insecticide Exposure\":\"Deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"683 (645)\",\"HRR (95% CI)\":\"0.9942 (.9539\\u20131.036)\",\"P Valueb\":\".78\"},\"7\":{\"Insecticide Exposure\":\"Permethrin 1\\u00d7\",\"No. (No. of Events)\":\"693 (661)\",\"HRR (95% CI)\":\"1.015 (.9698\\u20131.062)\",\"P Valueb\":\".52\"},\"8\":{\"Insecticide Exposure\":\"Clothianidin 1\\u00d7\",\"No. (No. of Events)\":\"698 (581)\",\"HRR (95% CI)\":\"1.208 (.9227\\u20131.581)\",\"P Valueb\":\".17\"},\"9\":{\"Insecticide Exposure\":\"Chlorfenapyr 1\\u00d7\",\"No. (No. of Events)\":\"708 (580)\",\"HRR (95% CI)\":\"1.692 (1.086\\u20132.637)\",\"P Valueb\":\".02\"},\"10\":{\"Insecticide Exposure\":\"PBO + deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"630 (577)\",\"HRR (95% CI)\":\"0.9662 (.2411\\u20133.873)\",\"P Valueb\":\".96\"},\"11\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"633 (601)\",\"HRR (95% CI)\":\"0.9951 (.9407\\u20131.053)\",\"P Valueb\":\".86\"},\"12\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"652 (610)\",\"HRR (95% CI)\":\"0.9942 (.9393\\u20131.052)\",\"P Valueb\":\".84\"},\"13\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"636 (583)\",\"HRR (95% CI)\":\"0.9931 (.8638\\u20131.142)\",\"P Valueb\":\".92\"},\"14\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"624 (587)\",\"HRR (95% CI)\":\"0.9951 (.917\\u20131.08)\",\"P Valueb\":\".91\"},\"15\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"623 (588)\",\"HRR (95% CI)\":\"0.9943 (.9072\\u20131.09)\",\"P Valueb\":\".90\"},\"16\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"656 (603)\",\"HRR (95% CI)\":\"1.026 (.9509\\u20131.107)\",\"P Valueb\":\".51\"},\"17\":{\"Insecticide Exposure\":\"1\\u00d7 Insecticide dose\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"18\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"117 (92)\",\"HRR (95% CI)\":\"1.016 (.9069\\u20131.138)\",\"P Valueb\":\".78\"},\"19\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"108 (78)\",\"HRR (95% CI)\":\"1.007 (.9403\\u20131.078)\",\"P Valueb\":\".84\"},\"20\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"143 (105)\",\"HRR (95% CI)\":\"1.0 (.9035\\u20131.107)\",\"P Valueb\":\">.99\"},\"21\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"114 (83)\",\"HRR (95% CI)\":\"1.0 (.9363\\u20131.068)\",\"P Valueb\":\">.99\"},\"22\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"137 (94)\",\"HRR (95% CI)\":\"1.022 (.8528\\u20131.225)\",\"P Valueb\":\".81\"},\"23\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"157 (114)\",\"HRR (95% CI)\":\"0.9952 (.9491\\u20131.044)\",\"P Valueb\":\".84\"}}\n", + "\n", + "header: Insecticide Resistance Intensity\n", + "\n", + "A total of 2251 field-caught _A. gambiae_ s.l. were tested in resistance bioassays. Intense pyrethroid resistance was evident with more than 25% of mosquitoes surviving exposure to 10 times the dose of insecticide required to kill a susceptible population (Figure 2A). At the diagnostic dose, mosquito mortality rates did not exceed 25% for any pyrethroid tested, which was consistent with the high survival rates observed during cone bioassays using conventional LLINs (Figure 1). In general, levels of resistance to alpha-cypermethrin, deltamethrin, and permethrin were not significantly different at each insecticide concentration tested (Figure 2A).\n", + "\n", + "By comparison, carbamate tolerance was low, with a mean knockdown of 94.53% (95% CI, 92.11%-96.95%; n = 101) after 30 minutes of exposure to the diagnostic dose of bendiocarb. Similarly, high levels of susceptibility to new insecticides clothianidin and chlorfenapyr were observed, with mean mortality rates of 94.11% (95% CI, 93.43%-94.80%; n = 102) and 95.54% (94.71%-96.36%; n = 112), respectively, 72 hours after exposure to the tentative diagnostic doses. Preexposure to PBO increased the average _A. gambiae_ s.l. mortality rate significantly, from 14.56% (95% CI, 6.24%-22.88%) to 72.73% (64.81%-79.43%) and from 44.66% (34.86%-54.46%) to 94.17% (91.12%-97.22%) after exposure to 1 or 2 times the diagnostic dose of deltamethrin (Figure 2B).\n", + "\n", + "header: Malaria Prevalence\n", + "\n", + "Of the 912 _A. gambiae_ s.l. mosquitoes assayed, 31 tested positive for _P. falciparum_ (3.4%). For PCR-confirmed _A. coluzzii_, _P. falciparum_ prevalence was 3.50% (28 of 805); the remaining 3 infections were in _A. gambiae_ s.s. (4%; 3 of 75). By resistance phenotype, susceptible _A. coluzzii_ (ie, those that died after pyrethroid exposure) were more likely to be infected with malaria, compared with resistant mosquitoes (kh2 = 4.6987; \\(P\\) =.03); infection rates were 5.94% (13 of 219) and 2.49% (10 of 401), respectively.\n", + "\n", + "header: RESULTS\n", + "\n", + "A total of 4917 female _A. gambiae_ s.l. mosquitoes were collected in Agboville, Cote d'Ivoire. Of those, 912, which were previously tested in either LLIN bioefficacy (n = 384) or resistance intensity (n = 528) bioassays, were selected for molecular species identification. Of the 912 selected, 805 (88.3%) were determined to be _A. coluzzii_, 75 (8.2%) were _A. gambiae_ s.s., and 22 (2.4%) were _A. gambiae_-_A. coluzzii_ hybrids; 10 individuals did not amplify.\n", + "\n", + "header: Results\n", + "\n", + "Phenotypic resistance was intense: >25% of mosquitoes survived exposure to 10 times the doses of pyrethroids required to kill susceptible populations. Similarly, the 24-hour mortality rate with deltamethrin-only LLINs was very low and not significantly different from that with an untreated net. Sublethal pyrethroid exposure did not induce significant delayed vector mortality effects 72 hours later. In contrast, LLINs containing the synergist piperonyl butoxide, or new insecticides dothianidin and chlorfenapyr, were highly toxic to _A. coluzzii_. Pyrethroid-susceptible _A. coluzzii_ were significantly more likely to be infected with malaria, compared with those that survived insecticidal exposure. Pyrethroid resistance was associated with significant overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_.\n", + "\n", + "header: Abstract\n", + "\n", + "Association of Reduced Long-Lasting Insecticidal Net Efficacy and Pyrethroid Insecticide Resistance With Overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_ in Populations of _Anopheles coluzzii_ From Southeast Cote d'Ivoire\n", + "\n", + "Anne Meiwald,\\({}^{1,2}\\) Emma Clark,\\({}^{1,2}\\) Mejica Kristan,\\({}^{1}\\) Constant Edi,\\({}^{2}\\) Claire L Jeffries,\\({}^{1}\\) Bethanie Pelloquin,\\({}^{1}\\) Seth R. Irish,\\({}^{2}\\) Thomas Walker,\\({}^{1}\\) and Louisa A. Messenger\\({}^{1,0}\\)\n", + "\n", + "\n", + "Resistance to major public health insecticides in Cote d'Ivoire has intensified and now threatens the long-term effectiveness of malaria vector control interventions.\n", + "\n", + "header: Mosquito Survival After Insecticidal Exposure\n", + "\n", + "All _A. gambiae_ s.l. tested in LLIN bioefficacy or resistance intensity bioassays, were held for 72 hours, to assess any impact of insecticide or net exposure on delayed mortality rate. For LLIN bioassays, there was little evidence for any reduction in survival during this holding period (Cox regression \\(P\\) =.15,.27, and.85, respectively, for comparisons between untreated control and PermaNet 2.0, PermaNet 3.0 side panels, and PermaNet 3.0 roof panels) (Table 1 and Figure 3A). Exposure to the diagnostic doses of all insecticides in CDC bottle bioassays did not induce significant delayed mortality effects over 72 hours (Cox regression \\(P\\) >.05 for all insecticides compared with control, with the exception of chlorfenapyr [_P_ =.02]) (Table 1 and Figure 3B). This phenomenon was also observed at increasing pyrethroid doses\n", + "\n", + "Figure 2: _A._ Resistance intensity of field-caught _Anaopheles gambiae_ sensu late (s.l.) after exposure to 1, 2, 5, or 10 times the diagnostic dose of pyrethroid insecticides. Mean knockdown/acute toxicity rates after 30-minute exposure are shown with 95% confidence intervals (Cls). Knockdown or mortality rates at the same dose per insecticide sharing a letter do not differ significantly (_P_ >.05). Mortality rates <00% (_lower and line_) represent confirmed resistance at the diagnostic dose (1a), and rates <00% (_upper and line_) indicate moderate to high-intensity resistance and high-intensity resistance at 5° and 10x, respectively, as defined by the World Health Organization [24]. _B._ Restoration of deltamethrin susceptibility of field-caught _A. gambiae_ s.l. after presopause to piperonyl butoxide (PBO). Mean knockdown/acute toxicity after 30-minute exposure to 1 or 2 times the diagnostic dose of deltamethrin with 95% Cls. Knockdown/mortality rates do not differ significantly between pyrethroid only and synergist plus pyrethroid sharing a letter (_P_ >.05). Red line at 90% mortality rate represents metabolic resistance mechanisms partially involved [24].\n", + "\n", + "\n", + "(Cox regression \\(P\\) >.05 for alpha-cypermethrin, deltamethrin, and permethrin 5x and 10x vs either the control or diagnostic dose) (Table 1; Figure 3C and 3D).\n", + "\n", + "header: Characterization of Insecticide Resistance Mechanisms: Target-Site Mutations\n", + "\n", + "The same cohort of field mosquitoes (n = 912) was tested for the presence of L1014F _kdr_[27] and N1575Y mutations [28]. A subsample of mosquitoes (n = 49) that were exposed to bendiocarb, clothianidin or chlorfenapyr was tested for the presence of the G119S _Ace-1_ mutation [29]. Pearson kh2 and Fisher exact tests (when sample sizes were small) were used to investigate the statistical association between resistance status, allele frequencies, and deviations from Hardy-Weinberg equilibrium.\n", + "\n", + "header: Target-Site Resistance Mutations\n", + "\n", + "L1014_F_kdr_ screening revealed that 92.2% (796/863) of _A. gambiae_ s.l. mosquitoes harbored the mutation; 71.5% (617 of 863) were homozygous, 20.7% (179 of 863) were heterozygous, 5.1% (44 of 863) were wild type, and 2.7% (23 of 863) did not amplify. For PCR-confirmed _A. coluzzii_, L1014F_kdr_ prevalence was 87.8% (707 of 805); 66.6% (536 of 805) were homozygous for the mutation, 21.2% (171 of 805) were heterozygous, 5.3% (43 of 805) were wild type, and 2.2% (18 of 805) did not amplify. For _A. coluzzii_, population-level L1014F_kdr_ allele frequency was 0.83, with evidence for significant deviations from Hardy-Weinberg equilibrium (kh2 = 29.124; \\(P\\) <.001). There was no significant association between L1014F_kdr_ frequency and the ability of _A. coluzzii_, to survive pyrethroid exposure, in either LLIN or resistance bioassays (kh2 = 2.0001 [_P_ =.16] and kh2 = 3.6998 [_P_ =.054], respectively). Similarly, there was no significant association between L1014F_kdr_ and the ability of _A. coluzzii_ to survive PBO preexposure and pyrethroid treatment, in either LLIN or resistance bioassays (kh2 = 0.0086; \\(P\\) =.93; Fisher exact test, \\(P\\) =.429, respectively).\n", + "\n", + "For PCR-confirmed _A. gambiae_ s.s., L1014F_kdr_ prevalence was 95.3% (61 of 64); 89.1% (57 of 64) were homozygous for the mutation, 6.3% (4 of 64) were heterozygous, none were wild type, and 4.7% (3 of 64) did not amplify. There was no significant association between L1014F_kdr_ frequency and ability of _A. gambiae_ s.s. to survive pyrethroid or PBO preexposure and pyrethroid treatment (in either LLIN or resistance bioassays), because all tested individuals harbored this mutation (n = 61). For _A. gambiae_ s.s., the population-level L1014F_kdr_ allele frequency was 0.97, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.070; \\(P\\) =.79).\n", + "\n", + "N1575Y screening revealed that 2.3% of _A. gambiae_ s.l. mosquitoes (21 of 912) harbored the mutation; all were\n", + "heterozygotes. N1575Y prevalence was 1.1% (9 of 805) and 16% (12 of 75) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 0.99% (9 of 912) did not amplify. There was no evidence for ongoing N1575Y selection in either species (kh2 = 0.026 [_P_ =.87] and kh2 = 0.62 [_P_ =.43] for _A. coluzzi_ and _A. gambiae_ s.s., respectively). For _A. coluzzi_, there was no significant association between N1575Y frequency and ability of mosquitoes to survive pyrethroid exposure, in LLIN or resistance bioassays (kh2 = 0.0001 [_P_ =.99] and kh2 = 0.3244 [_P_ =.57], respectively).\n", + "\n", + "G119S _Ace-1_ screening revealed that 55.1% of _A. gambiae_ s.l. mosquitoes (27 of 49) harbored the mutation; all were heterozygotes. G119S _Ace-1_ prevalence was 64.9% (24 of 37) and 27.3% (3 of 11) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 1 remaining _A. gambiae-A. coluzzi_ hybrid was wild type. For _A. coluzzi_, population-level G119S _Ace-1_ allele frequency was 0.32, with evidence of significant deviations from Hardy-Weinberg equilibrium (kh2 = 8.525; \\(P\\) =.004). For _A. gambiae_ s.s., population-level G119S _Ace-1_ allele frequency was 0.14, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.274; \\(P\\) =.60). For _A. coluzzi_, there was a significant association between G119S _Ace-1_ frequency and surviving bendiocarb exposure (Fisher exact test, \\(P\\) =.005).\n", + "\n", + "header: Study Area and Mosquito Collections: WHO Cone Bioassay Testing\n", + "\n", + "Two types of LLIN were evaluated in this study. PermaNet 2.0 is a conventional LLIN treated with deltamethrin only (1.4 g/kg +- 25%) and PermaNet 3.0 is a piperonyl butoxide (PBO) synergism LILIN, consisting of a roof containing PBO (25g/kg) and deltamethrin (4 g/kg +- 25%) and side panels containing deltamethrin only (2.8 g/kg +- 25%). WHO cone bioassays were used to test the susceptibility of _A. gambiae_ s.l. exposed to unwashed PermaNet 2.0, PermaNet 3.0 roof panels, and PermaNet 3.0 side panels [21]. To control for potential variation in insecticide/synergist content, each of 5 LLINs per type was cut into 19 pieces, measuring 30 x 30 cm, with each piece tested a maximum of 3 times.\n", + "\n", + "header: Keywords\n", + "\n", + "_Anopheles coluzzii_; insecticide resistance; _Plasmodium falciparum_; long-lasting insecticidal nets; Cote d'Ivoire; PBO; chlorfenapyr; clothianidin; _CYP6P4_; _CYP6P3_; _CYP6Z1_\n", + "\n", + "In Cote d'Ivoire, malaria is a serious public health problem with the entire population of about 26.2 million people at risk, and disease prevalence reaching as high as 63% in the southwest region [1]. Control of _Anopheles gambiae_ sensu lato (s.l.), the major malaria vector species group, has been through the efforts of the National Malaria Control Programme, which has distributed insecticide-treated nets as the primary vector control intervention. Indoor residual spraying and larviciding in high transmission areas have been recommended as complementary strategies; implementation of the former commenced in late 2020 [2]. Estimates of net coverage across the country remain low, with the proportion of households with at least >=1 insecticide-treated net per 2 persons rising from 31% in 2012 to 47% in 2016, and insecticide-treated net use stagnating at 40% of households reporting sleeping under a net the previous night in both survey years [2]. The most recent universal net campaigns in Cote d'Ivoire in 2017-2018 issued conventional, pyrethroid (deltamethrin) long-lasting insecticidal nets (LLINs), aiming to achieve 90% coverage and 80% use [2]. However, country-wide, multiclass insecticide resistance among populations of _A. gambiae_ s.l. is a growing cause for concern because of potential operational failure of current vector control strategies, both locally and across the sub-Saharan region [2, 3].\n", + "\n", + "Resistance to pyrethroid and carbamate insecticides in _Anopheles_ mosquitoes was first reported from the central \n", + "region of Cote d'Ivoire in the early 1990s [4, 5, 6, 7]. Local resistance to the major insecticide classes recommended by the World Health Organization (WHO) for adult mosquito control--pyrethroids, carbamates, organophosphates, and organochlorines--evolved rapidly [8, 9, 10] and has been increasing in intensity, driven largely by selective pressures imposed by contemporaneous scale-up of public health vector control interventions (including those targeting malaria, trypanosomiasis, and onchocerciasis vectors) and use of agricultural pesticides [11, 12, 13, 14, 7]. This escalation in resistance has now begun to compromise the insecticidal efficacy and community-wide impact of conventional, pyrethroid LLINs in Cote d'Ivoire [14, 15], although some levels of personal protection may still remain [15, 16, 17].\n", + "\n", + "Among vector populations across Cote d'Ivoire, the L1014F _kdr_ mutation is pervasive and has been implicated in some longitudinal trends in decreasing DDT and pyrethroid susceptibility [7, 11]; L1014S _kdr_ and N1575Y resistance mutations have also been detected but at much lower frequencies [18]. Extreme carbamate (bendiocarb) resistance and pyrethroid cross-resistance in some _A. gambiae_ sensu stricto (s.s.) populations are mediated by overexpression of _CYP6P3_ and _CYP6M2_ and duplication of the G119S _Ace-1_ mutation [19]. To support and safeguard future malaria control efforts in Cote d'Ivoire, the current study evaluated the efficacy of conventional and next-generation LLINs for prospective distribution, determined current insecticide resistance profiles of _A. gambiae_ s.l. (principally _Anopheles coluzzi_), and characterized underlying molecular and metabolic resistance mechanisms.\n", + "\n", + "header: Metabolic Resistance Mechanisms\n", + "\n", + "Comparison of metabolic gene expression levels in field populations of _A. coluzzi_ and _A. gambiae s.s._ demonstrated significant up-regulation of _CYP6P4_ (fold change, 5.88 [95% CI, 5.19-44.06] for _A. coluzzi_ and 6.08 [5.43-50.64] for _A. gambiae_ s.s.), _CYP6Z1_ (4.04 [3.69-41.54] and 3.56 [3.24-36.25], respectively),\n", + "\n", + "Figure 3.: The longevity of field-caught _A. gambiae_ sensus into after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (_A_) and \\(x\\) (B, 5x [_O_], and 10× [_D_) the diagnostic dose of pyrethroid insecticides in Centres for Disease Control and Prevention resistance intensity assays. Kaplan-Meier survival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\n", + "\n", + "\n", + "and _CYP6P3_ (12.56 [11.40-12-3.83] and 13.85 [12.53-132.03]), relative to a susceptible laboratory colony, respectively (Figure 4). More modest overexpression of _CYP6P1_ and _GSTE2_ was observed (_CYP6P1_ fold changes, 1.18 [95% CI, 1.08-12.31] and 1.28 [1.17-14.40]; GSTE2, 0.56 [.48-3.32], and 0.67 [.58-4.29], for _A. coluzzi_ and _A. gambiae_ s.s., respectively) (Figure 4). The fold change levels did not differ significantly between the 2 species for any gene nor by malaria infection status in wild _A. coluzzi_. Comparison of metabolic gene expression in phenotyped field populations of _A. coluzzi_ revealed lower fold changes overall, but notably, increased overexpression of _CYP6P3_ in survivors of bendiocarb, deltamethrin, PBO plus deltamethrin, and permethrin (fold change, 3.91 [95% CI, 3.33-22.16], 2.21 [1.88-12.53], 2.64 [2.21-13.69], and 2.21 [1.99-20.03], respectively) (Figure 5).\n", + "\n", + "header: Characterization of Insecticide Resistance Mechanisms: Metabolic Gene Expression\n", + "\n", + "Relative expression of 5 metabolic genes (_CYP6P3_, _CYP6P4_, _CYP6Z1_, _CYP6P1_, and _GSTE2_) was measured in all field collected mosquitoes (n = 912), using multiplex quantitative real-time polymerase chain reaction (PCR) assays, relative to the housekeeping gene ribosomal protein S7 (_RPS7_) [30]. In addition, gene expression levels were measured in susceptible _A. coluzzii_ Nguosso colony mosquitoes (n = 48). All samples were run in technical triplicate. Expression level and fold change of each target gene between resistant and susceptible field samples, relative to the susceptible laboratory strain, were calculated using the 2-\\({}^{\\text{-}\\Delta\\text{ACT}}\\) method incorporating PCR efficiency, normalized relative to the endogenous control gene (_RPS7_).\n", + "\n", + "header: Discussion\n", + "\n", + "Cote d'Ivoire has hot spots with some of the highest levels of resistance of _Anopheles_ mosquitoes to public health insecticides worldwide, with potentially severe implications for sustaining gains in malaria control [31]. To safeguard malaria vector control efforts and inform the design of effective resistance management strategies, involving tactical deployment of differing indoor residual spraying and LLIN modalities, there needs to be a clear understanding of contemporary phenotypic and genotypic insecticide resistance.\n", + "\n", + "Our study detected intense pyrethroid resistance in southeast Cote d'Ivoire, as evidenced by high proportions of survivors, after exposure to 10 times the diagnostic doses of pyrethroids, as well as very low knockdown and 24-hour mortality rates for deltamethrin-only LLINs, equivalent to rates for an untreated net. These findings are largely in agreement with historical resistance profiles from this region [7, 10, 11] and indicate that conventional LLINs may no longer be operationally viable in areas of high pyrethroid resistance intensity. Previous phase II studies of pyrethroid-only LLINs in the central region of Cote d'Ivoire have demonstrated similarly poor efficacy with highly resistant _A. gambiae_ s.l. populations but argued for the retention of some degree of personal protection [15-17].\n", + "\n", + "Other observational cohorts have reported higher incidences of malaria among non-net users compared with users in areas of moderate to high pyrethroid resistance [17]. The extent of protective efficacy afforded by pyrethroid LLINs will likely reflect the strength of local vector resistance and levels of both net physical integrity and individual compliance [32, 33]; in Cote d'Ivoire, reported LLIN usage has been low, requiring additional behavioral interventions [2, 34]. Our findings of high mosquito mortality rates after exposure to clothianidin and chlorfenapyr and improved vector susceptibility with PBO treatment (on both LLINs and in resistance bioassays), are consistent with data from other sentinel sites across Cote d'Ivoire [16, 35, 36], and strongly support the deployment of vector control interventions incorporating these new active ingredients.\n", + "\n", + "Study results indicate that _A. coluzzi_ was the predominant local vector species during the rainy season, as observed previously [7], circulating sympatrically with smaller proportions of _A. gambiae_ s.s. These 2 vector species commonly cohabit but can be genetically distinct in terms of resistance mechanisms [37, 38] and can also differ in larval ecology, behavior, migration, and activation [39-41]. In general, resistance mechanisms in _A. coluzzi_ are less well characterized, compared with _A. gambiae_ s.s., in part because these vectors are morphologically\n", + "\n", + "Figure 4: Metabolic gene expression in field _Anopheles coluzzi_ and _Anopheles gambiae_ sensu stricto (s.s.) populations relative to a susceptible colony population. Error bars represent 95% confidence intervals. Statistically significant differences in expression levels relative to the susceptible colony are indicated as follows: *_P_ <.05; **_P_ <.01; ***_P_ <.001.\n", + "\n", + "\n", + "indistinguishable and few studies present data disaggregated by PCR-confirmed species.\n", + "\n", + "We observed several distinct features in our study, including, principally, evidence for ongoing selection of L1014F _kdr_ and G119S _Ace-1 in A. coluzzii_, which was absent in _A. gambiae_ s.s. and higher proportions of N1575Y in _A. gambiae_ s.s.; expression levels of metabolic genes were comparable between species. The lack of association between L1014F _kdr_ genotype and mosquito phenotype, coupled with the identification of 3 CYP450 enzymes (_CYP6P4, CYP6P3,_ and _CYP6Z1_) that were significantly overexpressed in field populations (some of which are known to metabolize pyrrethroids and next-generation LLIN insecticides [42, 43]), indicate a key role for metabolic resistance in this _A. coluzzii_ population. One notable difference in our data set, compared with previous findings in Agboville [7], was the finding of benodiocarb susceptibility. This may be attributable to small-scale spatial and longitudinal heterogeneity in resistance, which can be highly dynamic [37, 44], and/or phenotypic differences between vector species, complicating intervention choice for resistance management.\n", + "\n", + "With the exception of chlorfenapyr, which is known to be a slow-acting insecticide, no delayed mortality effects were detected after insecticidal exposure; the format and dose used for clothianidin testing (another slow-acting insecticide [45]) were instead intended to measure acute toxicity within a 60-minute exposure period. Previous mathematical models using resistant mosquito colonies have suggested that sublethal insecticide treatment may still reduce vector lifespan and inhibit blood-feeding and host-seeking behaviors, thereby interrupting malaria transmission [46, 47]. Our observations are more compatible with reports from Burkina Faso, where different exposure regimens of wild, resistant _A. gambiae_ s.l. populations to deltamethrin LLINs did not induce any delayed mortality effects [47]. Further assessment of sublethal effects are warranted across additional field populations with differing resistance mechanisms, to clarify the impact of insecticidal exposure on the vectorial capacity of resistant mosquitoes.\n", + "\n", + "To date there is a paucity of data regarding the interactions between insecticide resistance and _Plasmodium_ development [48]. In the current study, _A. coluzzii_ that died after pyrethroid exposure were significantly more likely to be infected with malaria. This might be explained by elevated metabolic enzymes and/or prior pyrethroid exposure detrimentally affecting parasite development [49], although it is important to note that we did not detect any significant differences between gene overexpression in malaria-infected versus noninfected _A. coluzzii_. Alternatively, our sampled population may have been physiologically older, as phenotypic resistance is known to decline with age [50]. It is impossible to distinguish between these hypotheses using field-collected vector populations; the experimental design used in this study had other biological and technical limitations, which have been described in detail elsewhere [23, 37]\n", + "\n", + "In conclusion, as new combination and bitreated vector control interventions become available for deployment, contemporary resistance information is crucial for the rationale design of management strategies and to mitigate further selection for particular resistance mechanisms. The results from the current study contribute to growing insecticide resistance data for Cote d'Ivoire, demonstrating a loss of bioefficacy of pyrethroid LLINs and supporting the use of new active ingredients (clothianidin, chlorfenapyr, and PBO). Study findings also highlight the need for expanded insecticide resistance surveillance, including monitoring of metabolic resistance mechanisms, in conjunction with studies to better characterize the impact of sublethal insecticide exposure on vectorial capacity and the interaction between insecticide resistance and _Plasmodium_ parasite development.\n", + "\n", + "Figure 5: Metabolic gene expression in resistant versus susceptible field _Anopheles coluzzi_, which either died or survived after insecticidal exposure. Error bars represent 95% confidence intervals.\n", + "\n", + "header: Methods\n", + "\n", + "The study protocol was approved by the Comite National d'Ethique des Sciences de la Vie et de la Sante (no. 069-19/MSHP/CNESVS-kp) and the London School of Hygiene and Tropical Medicine (nos. 16782 and 16899). Study activities were conducted in the village of Aboude, rural Agboville, Agneby-Tiassa region, southeast Cote d'Ivoire (5'55'N, 4'13'W), selected because of its high mosquito densities and malaria prevalence [1]. Adult mosquitoes were collected using human landing catches, inside and outside households from 6 pm to 6 am, for a total of 190 person/trap/nights between 5 and 26 July 2019. Unfed mosquitoes, morphologically identified as _A. gambiae_ s.l. [20], were tested in bioassays that same day, after a brief recovery period; blood-fed mosquitoes were first held for 2-3 days to allow for blood-meal digestion.\n", + "\n", + "header: Mosquito Processing, Identification of _A. gambiae_ s.l. Species Complex\n", + "\n", + "Members, and _Plasmodium falciparum_ Detection\n", + "\n", + "A subsample of field-caught mosquitoes tested in bioassays was selected for molecular analysis (n = 912). Approximately equal numbers of specimens were chosen to represent phenotypically \"susceptible\" or \"resistant\" mosquitoes for each LLIN type or insecticide dose, selected across different replicates and testing days to capture as much population-level variation as possible. RNA was extracted from individual whole-body mosquitoes according to standard protocols [23]. Field _A. gambiae_ s.l. were identified to species level [25] and were screened for the presence of _Plasmodium falciparum_[26].\n", + "\n", + "header: Mosquito Collections and Species Identification: LIII Efficacy\n", + "\n", + "A total of 2666 field-caught _A. gambiae_ s.l were used to assess the bioefficacy of conventional pyrethroid-treated LLINs (PermaNet 2.0 and PermaNet 3.0 side panels) and next-generation synergisti LLINs (PermaNet 3.0 roof panels), compared with an untreated control (Figure 1). Overall, _A. gambiae_ s.l. knockdown and mortality rates with deltamethrin LLINs were very low and largely equivalent to those for the untreated control net (Figure 1). At 60 minutes, average mosquito knockdown rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels were 1.56% (95% confidence interval [CI], 1.13%-1.99%), 0.54% (.42%-6.5%), and 1.75% (1.49%-2.0%), respectively. By contrast, average mosquito knockdown rates for PBO-containing PermaNet 3.0 roof panels were significantly higher (79.8% [95% CI, 79.07%-80.48%]; kh2 = 705.51, 968.65, and 937.33 [_P_ <.001] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1).\n", + "\n", + "At 24 hours, mortality rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels remained low (6.11% [95% CI, 4.71%-7.51%], 5.44% [4.58%-6.29%], and 3.66% [3.12%-4.19%], respectively), while those with PermaNet 3.0 roof panels increased only marginally but still remained significantly higher (83.81% [95% CI, 83.15%-84.47%];\n", + "\n", + "Figure 1.: Bioefficacy of different unwashed long-lasting insecticidal nets (LLINs) against field-caught _Angabies gambiae_ sensu tatto. Mean knockdown and mortality rates are shown with 95% confidence intervals, at 60 minutes and 24 hours, respectively, after 3-minute exposure to PermaNet 2.0 (deltamethrin only), side panels of PermaNet 3.0 (deltamethrin only, roof panels of PermaNet 3.0 (pieronym) butoxide plus deltamethrin), and an untreated control net. Knockdown or mortality rates in the same time period for each treatment sharing a letter do not differ significantly (_P_ >.05). Green lines at 275% and 295% knockdown represent minimal and optimal effectiveness, respectively, at 60 minutes. Red lines at 250% and >80% mortality represent minimal and optimal LLIN effectiveness at 24 hours, respectively, as defined by the World Health Organization [21].\n", + "\n", + "\n", + "\\(\\chi^{2}\\) = 727.96, 914.61, and 963.09 [\\(P\\) <.001 for all] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1). PermaNet 3.0 roof panels reached minimal effectiveness (knockdown, >=75%) 60 minutes after exposure and optimal effectiveness (mortality rate, >=80%) at 24 hours. Neither of the deltamethrin-only LLINS reached either effectiveness threshold at any time point.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Cote d'Ivoire\",\"Site\":\"Aboude, Agboville\",\"Start_month\":7,\"Start_year\":2019,\"End_month\":7,\"End_year\":2019}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"1.4 g\\/kg\"},\"N02\":{\"Net_type\":\"PermaNet 3.0 roof panels\",\"Insecticide\":\"PBO, deltamethrin\",\"Concentration_initial\":\"25g\\/kg, 4 g\\/kg\"},\"N03\":{\"Net_type\":\"PermaNet 3.0 side panels\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"2.8 g\\/kg\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Notes\n", + "\n", + "_Acknowledgments._ The authors express their sincere thanks to M. Didier Dobri, Centre Suisse de Recherches Scientifiques en Cote d'Ivoire (CSRS) laboratory technician, and Fidele Assamoa for their support in mosquito collection and rearing, the chief and population of the village of Aboude (Agboville), and the entomology fieldworkers of CSRS. They also thank Vestergaard for supplying the long-lasting insecticidal nets tested in this study.\n", + "\n", + "_Author contributions._ A. M., E. C., M. K., T. W., and L. A. M. designed the study. A. M., E. C., C. E., and B. P. led the entomology field activities and participated in data collection. A. M., E. C., C. L. J., T. W., and L. A. M. performed the molecular assays. A. M., E. C., M. K., C. E., C. L. J., B. P., S. R. I, T. W., and L. A. M. were responsible for data analysis and interpretation. L. A. M. drafted the manuscript, which was revised by all coauthors. All authors read and approved the final manuscript.\n", + "\n", + "_Disclaimer._ The findings and conclusions in this report are those of the authors and do not necessarily represent the official position of the Centers for Disease Control and Prevention.\n", + "\n", + "_Financial support._ This work was supported by the Sir Halley Stewart Trust (L.A.M.), the Wellcome Trust/Royal Society ([http://www.wellcome.ac.uk](http://www.wellcome.ac.uk) and [https://royalsociety.org](https://royalsociety.org); (101285/Z/13/Z to T.W.) and the US President's Malaria Initiative/Centers for Disease Control and Prevention (S.R.I.).\n", + "\n", + "_Potential conflicts of interest._ All authors: No reported conflicts. All authors have submitted the ICMJE Form for Disclosure of Potential Conflicts of Interest. Conflicts that the editors consider relevant to the content of the manuscript have been disclosed.\n", + "\n", + "header: Table 1. Cox Proportional Hazard Model to Determine Impact of Long-Lasting Insecticidal Net/Insecticidal Exposure on Survival of Field-Caught Anopheles gambiae Sensu Lato 72 Hours After Exposure\n", + "footer: Abbreviations: CI, confidence interval; HRR, hazard rate ratio (ratio of hazard rate for control/reference group to hazard rate for treatment group; PBO, piperonyl butoxide.\n", + "a Immediate mortality rates after long-lasting insecticidal net (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. \n", + "b Significance cutoff level defined as α = .05.\n", + "\n", + "\n", + "columns: ['Insecticide Exposure', 'No. (No. of Events)', 'HRR (95% CI)', 'P Valueb']\n", + "\n", + "{\"0\":{\"Insecticide Exposure\":\"Untreated netting\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"1\":{\"Insecticide Exposure\":\"PermaNet 2.0 (deltamethrin only)\",\"No. (No. of Events)\":\"1135 (1047)\",\"HRR (95% CI)\":\"1.095 (.968\\u20131.239)\",\"P Valueb\":\".15\"},\"2\":{\"Insecticide Exposure\":\"PermaNet 3.0 side panels (deltamethrin only)\",\"No. (No. of Events)\":\"1157 (1088)\",\"HRR (95% CI)\":\"0.9664 (.9092\\u20131.027)\",\"P Valueb\":\".27\"},\"3\":{\"Insecticide Exposure\":\"PermaNet 3.0 roof panels (PBO + deltamethrin)\",\"No. (No. of Events)\":\"563 (533)\",\"HRR (95% CI)\":\"1.007 (.939\\u20131.079)\",\"P Valueb\":\".85\"},\"4\":{\"Insecticide Exposure\":\"Acetone control\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"5\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 1\\u00d7\",\"No. (No. of Events)\":\"676 (641)\",\"HRR (95% CI)\":\"1.006 (.9696\\u20131.043)\",\"P Valueb\":\".77\"},\"6\":{\"Insecticide Exposure\":\"Deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"683 (645)\",\"HRR (95% CI)\":\"0.9942 (.9539\\u20131.036)\",\"P Valueb\":\".78\"},\"7\":{\"Insecticide Exposure\":\"Permethrin 1\\u00d7\",\"No. (No. of Events)\":\"693 (661)\",\"HRR (95% CI)\":\"1.015 (.9698\\u20131.062)\",\"P Valueb\":\".52\"},\"8\":{\"Insecticide Exposure\":\"Clothianidin 1\\u00d7\",\"No. (No. of Events)\":\"698 (581)\",\"HRR (95% CI)\":\"1.208 (.9227\\u20131.581)\",\"P Valueb\":\".17\"},\"9\":{\"Insecticide Exposure\":\"Chlorfenapyr 1\\u00d7\",\"No. (No. of Events)\":\"708 (580)\",\"HRR (95% CI)\":\"1.692 (1.086\\u20132.637)\",\"P Valueb\":\".02\"},\"10\":{\"Insecticide Exposure\":\"PBO + deltamethrin 1\\u00d7\",\"No. (No. of Events)\":\"630 (577)\",\"HRR (95% CI)\":\"0.9662 (.2411\\u20133.873)\",\"P Valueb\":\".96\"},\"11\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"633 (601)\",\"HRR (95% CI)\":\"0.9951 (.9407\\u20131.053)\",\"P Valueb\":\".86\"},\"12\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"652 (610)\",\"HRR (95% CI)\":\"0.9942 (.9393\\u20131.052)\",\"P Valueb\":\".84\"},\"13\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"636 (583)\",\"HRR (95% CI)\":\"0.9931 (.8638\\u20131.142)\",\"P Valueb\":\".92\"},\"14\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"624 (587)\",\"HRR (95% CI)\":\"0.9951 (.917\\u20131.08)\",\"P Valueb\":\".91\"},\"15\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"623 (588)\",\"HRR (95% CI)\":\"0.9943 (.9072\\u20131.09)\",\"P Valueb\":\".90\"},\"16\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"656 (603)\",\"HRR (95% CI)\":\"1.026 (.9509\\u20131.107)\",\"P Valueb\":\".51\"},\"17\":{\"Insecticide Exposure\":\"1\\u00d7 Insecticide dose\",\"No. (No. of Events)\":null,\"HRR (95% CI)\":\"Reference\",\"P Valueb\":null},\"18\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 5\\u00d7\",\"No. (No. of Events)\":\"117 (92)\",\"HRR (95% CI)\":\"1.016 (.9069\\u20131.138)\",\"P Valueb\":\".78\"},\"19\":{\"Insecticide Exposure\":\"Alpha-cypermethrin 10\\u00d7\",\"No. (No. of Events)\":\"108 (78)\",\"HRR (95% CI)\":\"1.007 (.9403\\u20131.078)\",\"P Valueb\":\".84\"},\"20\":{\"Insecticide Exposure\":\"Deltamethrin 5\\u00d7\",\"No. (No. of Events)\":\"143 (105)\",\"HRR (95% CI)\":\"1.0 (.9035\\u20131.107)\",\"P Valueb\":\">.99\"},\"21\":{\"Insecticide Exposure\":\"Deltamethrin 10\\u00d7\",\"No. (No. of Events)\":\"114 (83)\",\"HRR (95% CI)\":\"1.0 (.9363\\u20131.068)\",\"P Valueb\":\">.99\"},\"22\":{\"Insecticide Exposure\":\"Permethrin 5\\u00d7\",\"No. (No. of Events)\":\"137 (94)\",\"HRR (95% CI)\":\"1.022 (.8528\\u20131.225)\",\"P Valueb\":\".81\"},\"23\":{\"Insecticide Exposure\":\"Permethrin 10\\u00d7\",\"No. (No. of Events)\":\"157 (114)\",\"HRR (95% CI)\":\"0.9952 (.9491\\u20131.044)\",\"P Valueb\":\".84\"}}\n", + "\n", + "header: Conclusions\n", + "\n", + "Study findings raise concerns regarding the operational failure of standard LLINs and support the urgent deployment of vector control interventions incorporating piperonyl butoxide, chlorfenapyr, or clothianidin in areas of high resistance intensity in Cote d'Ivoire.\n", + "\n", + "header: Resistance Intensity and Synergist Bioassay Testing\n", + "\n", + "Centers for Disease Control and Prevention (CDC) resistance intensity bioassays were performed for 6 public health insecticides (pyrethroids: alpha-cypermethrin, deltamethrin, and permethrin; carbamate: bendiocarb; neonicotinoid: clothianidin; and pyrrole: chlorfenapyr) [22, 23]. The diagnostic doses of all insecticides were evaluated (including clothianidin [90 mg per bottle] [23] and chlorfenapyr [100 mg per bottle]) and 2, 5, and 10 times the diagnostic dose of pyrethroid insecticides were also used. Per test, knockdown was recorded at 15-minute intervals for 30 minutes (pyrethroids and bendiocarb) or 60 minutes (dothianidin and chlorfenapyr) of insecticide exposure. One-hour PBO preexposures were performed using WHO tube assays [24], before deltamethrin CDC bottle bioassay testing [22].\n", + "\n", + "WHO cone and CDC resistance intensity bioassay data were interpreted according to the WHO criteria [21, 22]. Mosquitoes that died after exposure to a LLIN or 1x insecticide dose were stored at -20degC in RNAlater (Thermo Fisher Scientific) and were considered \"susceptible\" for genotypic analysis. Surviving mosquitoes were held and scored for mortality rate after 24, 48 and 72 hours to observe delayed mortality effects. Kaplan-Meier curves were used to visualize survival data, and Cox regression was used to compare postexposure survival. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded. Surviving mosquitoes at 72 hours were stored at -20degC in RNAlater and were considered \"resistant\" for genotypic analysis.\n", + "\n", + "header: Insecticide Resistance Intensity\n", + "\n", + "A total of 2251 field-caught _A. gambiae_ s.l. were tested in resistance bioassays. Intense pyrethroid resistance was evident with more than 25% of mosquitoes surviving exposure to 10 times the dose of insecticide required to kill a susceptible population (Figure 2A). At the diagnostic dose, mosquito mortality rates did not exceed 25% for any pyrethroid tested, which was consistent with the high survival rates observed during cone bioassays using conventional LLINs (Figure 1). In general, levels of resistance to alpha-cypermethrin, deltamethrin, and permethrin were not significantly different at each insecticide concentration tested (Figure 2A).\n", + "\n", + "By comparison, carbamate tolerance was low, with a mean knockdown of 94.53% (95% CI, 92.11%-96.95%; n = 101) after 30 minutes of exposure to the diagnostic dose of bendiocarb. Similarly, high levels of susceptibility to new insecticides clothianidin and chlorfenapyr were observed, with mean mortality rates of 94.11% (95% CI, 93.43%-94.80%; n = 102) and 95.54% (94.71%-96.36%; n = 112), respectively, 72 hours after exposure to the tentative diagnostic doses. Preexposure to PBO increased the average _A. gambiae_ s.l. mortality rate significantly, from 14.56% (95% CI, 6.24%-22.88%) to 72.73% (64.81%-79.43%) and from 44.66% (34.86%-54.46%) to 94.17% (91.12%-97.22%) after exposure to 1 or 2 times the diagnostic dose of deltamethrin (Figure 2B).\n", + "\n", + "header: Results\n", + "\n", + "Phenotypic resistance was intense: >25% of mosquitoes survived exposure to 10 times the doses of pyrethroids required to kill susceptible populations. Similarly, the 24-hour mortality rate with deltamethrin-only LLINs was very low and not significantly different from that with an untreated net. Sublethal pyrethroid exposure did not induce significant delayed vector mortality effects 72 hours later. In contrast, LLINs containing the synergist piperonyl butoxide, or new insecticides dothianidin and chlorfenapyr, were highly toxic to _A. coluzzii_. Pyrethroid-susceptible _A. coluzzii_ were significantly more likely to be infected with malaria, compared with those that survived insecticidal exposure. Pyrethroid resistance was associated with significant overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_.\n", + "\n", + "header: Malaria Prevalence\n", + "\n", + "Of the 912 _A. gambiae_ s.l. mosquitoes assayed, 31 tested positive for _P. falciparum_ (3.4%). For PCR-confirmed _A. coluzzii_, _P. falciparum_ prevalence was 3.50% (28 of 805); the remaining 3 infections were in _A. gambiae_ s.s. (4%; 3 of 75). By resistance phenotype, susceptible _A. coluzzii_ (ie, those that died after pyrethroid exposure) were more likely to be infected with malaria, compared with resistant mosquitoes (kh2 = 4.6987; \\(P\\) =.03); infection rates were 5.94% (13 of 219) and 2.49% (10 of 401), respectively.\n", + "\n", + "header: Characterization of Insecticide Resistance Mechanisms: Target-Site Mutations\n", + "\n", + "The same cohort of field mosquitoes (n = 912) was tested for the presence of L1014F _kdr_[27] and N1575Y mutations [28]. A subsample of mosquitoes (n = 49) that were exposed to bendiocarb, clothianidin or chlorfenapyr was tested for the presence of the G119S _Ace-1_ mutation [29]. Pearson kh2 and Fisher exact tests (when sample sizes were small) were used to investigate the statistical association between resistance status, allele frequencies, and deviations from Hardy-Weinberg equilibrium.\n", + "\n", + "header: Abstract\n", + "\n", + "Association of Reduced Long-Lasting Insecticidal Net Efficacy and Pyrethroid Insecticide Resistance With Overexpression of _CYP6P4_, _CYP6P3_, and _CYP6Z1_ in Populations of _Anopheles coluzzii_ From Southeast Cote d'Ivoire\n", + "\n", + "Anne Meiwald,\\({}^{1,2}\\) Emma Clark,\\({}^{1,2}\\) Mejica Kristan,\\({}^{1}\\) Constant Edi,\\({}^{2}\\) Claire L Jeffries,\\({}^{1}\\) Bethanie Pelloquin,\\({}^{1}\\) Seth R. Irish,\\({}^{2}\\) Thomas Walker,\\({}^{1}\\) and Louisa A. Messenger\\({}^{1,0}\\)\n", + "\n", + "\n", + "Resistance to major public health insecticides in Cote d'Ivoire has intensified and now threatens the long-term effectiveness of malaria vector control interventions.\n", + "\n", + "header: RESULTS\n", + "\n", + "A total of 4917 female _A. gambiae_ s.l. mosquitoes were collected in Agboville, Cote d'Ivoire. Of those, 912, which were previously tested in either LLIN bioefficacy (n = 384) or resistance intensity (n = 528) bioassays, were selected for molecular species identification. Of the 912 selected, 805 (88.3%) were determined to be _A. coluzzii_, 75 (8.2%) were _A. gambiae_ s.s., and 22 (2.4%) were _A. gambiae_-_A. coluzzii_ hybrids; 10 individuals did not amplify.\n", + "\n", + "header: Mosquito Survival After Insecticidal Exposure\n", + "\n", + "All _A. gambiae_ s.l. tested in LLIN bioefficacy or resistance intensity bioassays, were held for 72 hours, to assess any impact of insecticide or net exposure on delayed mortality rate. For LLIN bioassays, there was little evidence for any reduction in survival during this holding period (Cox regression \\(P\\) =.15,.27, and.85, respectively, for comparisons between untreated control and PermaNet 2.0, PermaNet 3.0 side panels, and PermaNet 3.0 roof panels) (Table 1 and Figure 3A). Exposure to the diagnostic doses of all insecticides in CDC bottle bioassays did not induce significant delayed mortality effects over 72 hours (Cox regression \\(P\\) >.05 for all insecticides compared with control, with the exception of chlorfenapyr [_P_ =.02]) (Table 1 and Figure 3B). This phenomenon was also observed at increasing pyrethroid doses\n", + "\n", + "Figure 2: _A._ Resistance intensity of field-caught _Anaopheles gambiae_ sensu late (s.l.) after exposure to 1, 2, 5, or 10 times the diagnostic dose of pyrethroid insecticides. Mean knockdown/acute toxicity rates after 30-minute exposure are shown with 95% confidence intervals (Cls). Knockdown or mortality rates at the same dose per insecticide sharing a letter do not differ significantly (_P_ >.05). Mortality rates <00% (_lower and line_) represent confirmed resistance at the diagnostic dose (1a), and rates <00% (_upper and line_) indicate moderate to high-intensity resistance and high-intensity resistance at 5° and 10x, respectively, as defined by the World Health Organization [24]. _B._ Restoration of deltamethrin susceptibility of field-caught _A. gambiae_ s.l. after presopause to piperonyl butoxide (PBO). Mean knockdown/acute toxicity after 30-minute exposure to 1 or 2 times the diagnostic dose of deltamethrin with 95% Cls. Knockdown/mortality rates do not differ significantly between pyrethroid only and synergist plus pyrethroid sharing a letter (_P_ >.05). Red line at 90% mortality rate represents metabolic resistance mechanisms partially involved [24].\n", + "\n", + "\n", + "(Cox regression \\(P\\) >.05 for alpha-cypermethrin, deltamethrin, and permethrin 5x and 10x vs either the control or diagnostic dose) (Table 1; Figure 3C and 3D).\n", + "\n", + "header: Metabolic Resistance Mechanisms\n", + "\n", + "Comparison of metabolic gene expression levels in field populations of _A. coluzzi_ and _A. gambiae s.s._ demonstrated significant up-regulation of _CYP6P4_ (fold change, 5.88 [95% CI, 5.19-44.06] for _A. coluzzi_ and 6.08 [5.43-50.64] for _A. gambiae_ s.s.), _CYP6Z1_ (4.04 [3.69-41.54] and 3.56 [3.24-36.25], respectively),\n", + "\n", + "Figure 3.: The longevity of field-caught _A. gambiae_ sensus into after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (_A_) and \\(x\\) (B, 5x [_O_], and 10× [_D_) the diagnostic dose of pyrethroid insecticides in Centres for Disease Control and Prevention resistance intensity assays. Kaplan-Meier survival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\n", + "\n", + "\n", + "and _CYP6P3_ (12.56 [11.40-12-3.83] and 13.85 [12.53-132.03]), relative to a susceptible laboratory colony, respectively (Figure 4). More modest overexpression of _CYP6P1_ and _GSTE2_ was observed (_CYP6P1_ fold changes, 1.18 [95% CI, 1.08-12.31] and 1.28 [1.17-14.40]; GSTE2, 0.56 [.48-3.32], and 0.67 [.58-4.29], for _A. coluzzi_ and _A. gambiae_ s.s., respectively) (Figure 4). The fold change levels did not differ significantly between the 2 species for any gene nor by malaria infection status in wild _A. coluzzi_. Comparison of metabolic gene expression in phenotyped field populations of _A. coluzzi_ revealed lower fold changes overall, but notably, increased overexpression of _CYP6P3_ in survivors of bendiocarb, deltamethrin, PBO plus deltamethrin, and permethrin (fold change, 3.91 [95% CI, 3.33-22.16], 2.21 [1.88-12.53], 2.64 [2.21-13.69], and 2.21 [1.99-20.03], respectively) (Figure 5).\n", + "\n", + "header: Study Area and Mosquito Collections: WHO Cone Bioassay Testing\n", + "\n", + "Two types of LLIN were evaluated in this study. PermaNet 2.0 is a conventional LLIN treated with deltamethrin only (1.4 g/kg +- 25%) and PermaNet 3.0 is a piperonyl butoxide (PBO) synergism LILIN, consisting of a roof containing PBO (25g/kg) and deltamethrin (4 g/kg +- 25%) and side panels containing deltamethrin only (2.8 g/kg +- 25%). WHO cone bioassays were used to test the susceptibility of _A. gambiae_ s.l. exposed to unwashed PermaNet 2.0, PermaNet 3.0 roof panels, and PermaNet 3.0 side panels [21]. To control for potential variation in insecticide/synergist content, each of 5 LLINs per type was cut into 19 pieces, measuring 30 x 30 cm, with each piece tested a maximum of 3 times.\n", + "\n", + "header: Characterization of Insecticide Resistance Mechanisms: Metabolic Gene Expression\n", + "\n", + "Relative expression of 5 metabolic genes (_CYP6P3_, _CYP6P4_, _CYP6Z1_, _CYP6P1_, and _GSTE2_) was measured in all field collected mosquitoes (n = 912), using multiplex quantitative real-time polymerase chain reaction (PCR) assays, relative to the housekeeping gene ribosomal protein S7 (_RPS7_) [30]. In addition, gene expression levels were measured in susceptible _A. coluzzii_ Nguosso colony mosquitoes (n = 48). All samples were run in technical triplicate. Expression level and fold change of each target gene between resistant and susceptible field samples, relative to the susceptible laboratory strain, were calculated using the 2-\\({}^{\\text{-}\\Delta\\text{ACT}}\\) method incorporating PCR efficiency, normalized relative to the endogenous control gene (_RPS7_).\n", + "\n", + "header: Target-Site Resistance Mutations\n", + "\n", + "L1014_F_kdr_ screening revealed that 92.2% (796/863) of _A. gambiae_ s.l. mosquitoes harbored the mutation; 71.5% (617 of 863) were homozygous, 20.7% (179 of 863) were heterozygous, 5.1% (44 of 863) were wild type, and 2.7% (23 of 863) did not amplify. For PCR-confirmed _A. coluzzii_, L1014F_kdr_ prevalence was 87.8% (707 of 805); 66.6% (536 of 805) were homozygous for the mutation, 21.2% (171 of 805) were heterozygous, 5.3% (43 of 805) were wild type, and 2.2% (18 of 805) did not amplify. For _A. coluzzii_, population-level L1014F_kdr_ allele frequency was 0.83, with evidence for significant deviations from Hardy-Weinberg equilibrium (kh2 = 29.124; \\(P\\) <.001). There was no significant association between L1014F_kdr_ frequency and the ability of _A. coluzzii_, to survive pyrethroid exposure, in either LLIN or resistance bioassays (kh2 = 2.0001 [_P_ =.16] and kh2 = 3.6998 [_P_ =.054], respectively). Similarly, there was no significant association between L1014F_kdr_ and the ability of _A. coluzzii_ to survive PBO preexposure and pyrethroid treatment, in either LLIN or resistance bioassays (kh2 = 0.0086; \\(P\\) =.93; Fisher exact test, \\(P\\) =.429, respectively).\n", + "\n", + "For PCR-confirmed _A. gambiae_ s.s., L1014F_kdr_ prevalence was 95.3% (61 of 64); 89.1% (57 of 64) were homozygous for the mutation, 6.3% (4 of 64) were heterozygous, none were wild type, and 4.7% (3 of 64) did not amplify. There was no significant association between L1014F_kdr_ frequency and ability of _A. gambiae_ s.s. to survive pyrethroid or PBO preexposure and pyrethroid treatment (in either LLIN or resistance bioassays), because all tested individuals harbored this mutation (n = 61). For _A. gambiae_ s.s., the population-level L1014F_kdr_ allele frequency was 0.97, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.070; \\(P\\) =.79).\n", + "\n", + "N1575Y screening revealed that 2.3% of _A. gambiae_ s.l. mosquitoes (21 of 912) harbored the mutation; all were\n", + "heterozygotes. N1575Y prevalence was 1.1% (9 of 805) and 16% (12 of 75) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 0.99% (9 of 912) did not amplify. There was no evidence for ongoing N1575Y selection in either species (kh2 = 0.026 [_P_ =.87] and kh2 = 0.62 [_P_ =.43] for _A. coluzzi_ and _A. gambiae_ s.s., respectively). For _A. coluzzi_, there was no significant association between N1575Y frequency and ability of mosquitoes to survive pyrethroid exposure, in LLIN or resistance bioassays (kh2 = 0.0001 [_P_ =.99] and kh2 = 0.3244 [_P_ =.57], respectively).\n", + "\n", + "G119S _Ace-1_ screening revealed that 55.1% of _A. gambiae_ s.l. mosquitoes (27 of 49) harbored the mutation; all were heterozygotes. G119S _Ace-1_ prevalence was 64.9% (24 of 37) and 27.3% (3 of 11) for PCR-confirmed _A. coluzzi_ and _A. gambiae_ s.s., respectively; 1 remaining _A. gambiae-A. coluzzi_ hybrid was wild type. For _A. coluzzi_, population-level G119S _Ace-1_ allele frequency was 0.32, with evidence of significant deviations from Hardy-Weinberg equilibrium (kh2 = 8.525; \\(P\\) =.004). For _A. gambiae_ s.s., population-level G119S _Ace-1_ allele frequency was 0.14, with no significant deviations from Hardy-Weinberg equilibrium (kh2 = 0.274; \\(P\\) =.60). For _A. coluzzi_, there was a significant association between G119S _Ace-1_ frequency and surviving bendiocarb exposure (Fisher exact test, \\(P\\) =.005).\n", + "\n", + "header: Keywords\n", + "\n", + "_Anopheles coluzzii_; insecticide resistance; _Plasmodium falciparum_; long-lasting insecticidal nets; Cote d'Ivoire; PBO; chlorfenapyr; clothianidin; _CYP6P4_; _CYP6P3_; _CYP6Z1_\n", + "\n", + "In Cote d'Ivoire, malaria is a serious public health problem with the entire population of about 26.2 million people at risk, and disease prevalence reaching as high as 63% in the southwest region [1]. Control of _Anopheles gambiae_ sensu lato (s.l.), the major malaria vector species group, has been through the efforts of the National Malaria Control Programme, which has distributed insecticide-treated nets as the primary vector control intervention. Indoor residual spraying and larviciding in high transmission areas have been recommended as complementary strategies; implementation of the former commenced in late 2020 [2]. Estimates of net coverage across the country remain low, with the proportion of households with at least >=1 insecticide-treated net per 2 persons rising from 31% in 2012 to 47% in 2016, and insecticide-treated net use stagnating at 40% of households reporting sleeping under a net the previous night in both survey years [2]. The most recent universal net campaigns in Cote d'Ivoire in 2017-2018 issued conventional, pyrethroid (deltamethrin) long-lasting insecticidal nets (LLINs), aiming to achieve 90% coverage and 80% use [2]. However, country-wide, multiclass insecticide resistance among populations of _A. gambiae_ s.l. is a growing cause for concern because of potential operational failure of current vector control strategies, both locally and across the sub-Saharan region [2, 3].\n", + "\n", + "Resistance to pyrethroid and carbamate insecticides in _Anopheles_ mosquitoes was first reported from the central \n", + "region of Cote d'Ivoire in the early 1990s [4, 5, 6, 7]. Local resistance to the major insecticide classes recommended by the World Health Organization (WHO) for adult mosquito control--pyrethroids, carbamates, organophosphates, and organochlorines--evolved rapidly [8, 9, 10] and has been increasing in intensity, driven largely by selective pressures imposed by contemporaneous scale-up of public health vector control interventions (including those targeting malaria, trypanosomiasis, and onchocerciasis vectors) and use of agricultural pesticides [11, 12, 13, 14, 7]. This escalation in resistance has now begun to compromise the insecticidal efficacy and community-wide impact of conventional, pyrethroid LLINs in Cote d'Ivoire [14, 15], although some levels of personal protection may still remain [15, 16, 17].\n", + "\n", + "Among vector populations across Cote d'Ivoire, the L1014F _kdr_ mutation is pervasive and has been implicated in some longitudinal trends in decreasing DDT and pyrethroid susceptibility [7, 11]; L1014S _kdr_ and N1575Y resistance mutations have also been detected but at much lower frequencies [18]. Extreme carbamate (bendiocarb) resistance and pyrethroid cross-resistance in some _A. gambiae_ sensu stricto (s.s.) populations are mediated by overexpression of _CYP6P3_ and _CYP6M2_ and duplication of the G119S _Ace-1_ mutation [19]. To support and safeguard future malaria control efforts in Cote d'Ivoire, the current study evaluated the efficacy of conventional and next-generation LLINs for prospective distribution, determined current insecticide resistance profiles of _A. gambiae_ s.l. (principally _Anopheles coluzzi_), and characterized underlying molecular and metabolic resistance mechanisms.\n", + "\n", + "header: Mosquito Collections and Species Identification: LIII Efficacy\n", + "\n", + "A total of 2666 field-caught _A. gambiae_ s.l were used to assess the bioefficacy of conventional pyrethroid-treated LLINs (PermaNet 2.0 and PermaNet 3.0 side panels) and next-generation synergisti LLINs (PermaNet 3.0 roof panels), compared with an untreated control (Figure 1). Overall, _A. gambiae_ s.l. knockdown and mortality rates with deltamethrin LLINs were very low and largely equivalent to those for the untreated control net (Figure 1). At 60 minutes, average mosquito knockdown rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels were 1.56% (95% confidence interval [CI], 1.13%-1.99%), 0.54% (.42%-6.5%), and 1.75% (1.49%-2.0%), respectively. By contrast, average mosquito knockdown rates for PBO-containing PermaNet 3.0 roof panels were significantly higher (79.8% [95% CI, 79.07%-80.48%]; kh2 = 705.51, 968.65, and 937.33 [_P_ <.001] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1).\n", + "\n", + "At 24 hours, mortality rates with the untreated control, PermaNet 2.0, and PermaNet 3.0 side panels remained low (6.11% [95% CI, 4.71%-7.51%], 5.44% [4.58%-6.29%], and 3.66% [3.12%-4.19%], respectively), while those with PermaNet 3.0 roof panels increased only marginally but still remained significantly higher (83.81% [95% CI, 83.15%-84.47%];\n", + "\n", + "Figure 1.: Bioefficacy of different unwashed long-lasting insecticidal nets (LLINs) against field-caught _Angabies gambiae_ sensu tatto. Mean knockdown and mortality rates are shown with 95% confidence intervals, at 60 minutes and 24 hours, respectively, after 3-minute exposure to PermaNet 2.0 (deltamethrin only), side panels of PermaNet 3.0 (deltamethrin only, roof panels of PermaNet 3.0 (pieronym) butoxide plus deltamethrin), and an untreated control net. Knockdown or mortality rates in the same time period for each treatment sharing a letter do not differ significantly (_P_ >.05). Green lines at 275% and 295% knockdown represent minimal and optimal effectiveness, respectively, at 60 minutes. Red lines at 250% and >80% mortality represent minimal and optimal LLIN effectiveness at 24 hours, respectively, as defined by the World Health Organization [21].\n", + "\n", + "\n", + "\\(\\chi^{2}\\) = 727.96, 914.61, and 963.09 [\\(P\\) <.001 for all] vs untreated control, PermaNet 2.0, and PermaNet 3.0 side panels, respectively) (Figure 1). PermaNet 3.0 roof panels reached minimal effectiveness (knockdown, >=75%) 60 minutes after exposure and optimal effectiveness (mortality rate, >=80%) at 24 hours. Neither of the deltamethrin-only LLINS reached either effectiveness threshold at any time point.\n", + "\n", + "header: Methods\n", + "\n", + "The study protocol was approved by the Comite National d'Ethique des Sciences de la Vie et de la Sante (no. 069-19/MSHP/CNESVS-kp) and the London School of Hygiene and Tropical Medicine (nos. 16782 and 16899). Study activities were conducted in the village of Aboude, rural Agboville, Agneby-Tiassa region, southeast Cote d'Ivoire (5'55'N, 4'13'W), selected because of its high mosquito densities and malaria prevalence [1]. Adult mosquitoes were collected using human landing catches, inside and outside households from 6 pm to 6 am, for a total of 190 person/trap/nights between 5 and 26 July 2019. Unfed mosquitoes, morphologically identified as _A. gambiae_ s.l. [20], were tested in bioassays that same day, after a brief recovery period; blood-fed mosquitoes were first held for 2-3 days to allow for blood-meal digestion.\n", + "\n", + "header: Discussion\n", + "\n", + "Cote d'Ivoire has hot spots with some of the highest levels of resistance of _Anopheles_ mosquitoes to public health insecticides worldwide, with potentially severe implications for sustaining gains in malaria control [31]. To safeguard malaria vector control efforts and inform the design of effective resistance management strategies, involving tactical deployment of differing indoor residual spraying and LLIN modalities, there needs to be a clear understanding of contemporary phenotypic and genotypic insecticide resistance.\n", + "\n", + "Our study detected intense pyrethroid resistance in southeast Cote d'Ivoire, as evidenced by high proportions of survivors, after exposure to 10 times the diagnostic doses of pyrethroids, as well as very low knockdown and 24-hour mortality rates for deltamethrin-only LLINs, equivalent to rates for an untreated net. These findings are largely in agreement with historical resistance profiles from this region [7, 10, 11] and indicate that conventional LLINs may no longer be operationally viable in areas of high pyrethroid resistance intensity. Previous phase II studies of pyrethroid-only LLINs in the central region of Cote d'Ivoire have demonstrated similarly poor efficacy with highly resistant _A. gambiae_ s.l. populations but argued for the retention of some degree of personal protection [15-17].\n", + "\n", + "Other observational cohorts have reported higher incidences of malaria among non-net users compared with users in areas of moderate to high pyrethroid resistance [17]. The extent of protective efficacy afforded by pyrethroid LLINs will likely reflect the strength of local vector resistance and levels of both net physical integrity and individual compliance [32, 33]; in Cote d'Ivoire, reported LLIN usage has been low, requiring additional behavioral interventions [2, 34]. Our findings of high mosquito mortality rates after exposure to clothianidin and chlorfenapyr and improved vector susceptibility with PBO treatment (on both LLINs and in resistance bioassays), are consistent with data from other sentinel sites across Cote d'Ivoire [16, 35, 36], and strongly support the deployment of vector control interventions incorporating these new active ingredients.\n", + "\n", + "Study results indicate that _A. coluzzi_ was the predominant local vector species during the rainy season, as observed previously [7], circulating sympatrically with smaller proportions of _A. gambiae_ s.s. These 2 vector species commonly cohabit but can be genetically distinct in terms of resistance mechanisms [37, 38] and can also differ in larval ecology, behavior, migration, and activation [39-41]. In general, resistance mechanisms in _A. coluzzi_ are less well characterized, compared with _A. gambiae_ s.s., in part because these vectors are morphologically\n", + "\n", + "Figure 4: Metabolic gene expression in field _Anopheles coluzzi_ and _Anopheles gambiae_ sensu stricto (s.s.) populations relative to a susceptible colony population. Error bars represent 95% confidence intervals. Statistically significant differences in expression levels relative to the susceptible colony are indicated as follows: *_P_ <.05; **_P_ <.01; ***_P_ <.001.\n", + "\n", + "\n", + "indistinguishable and few studies present data disaggregated by PCR-confirmed species.\n", + "\n", + "We observed several distinct features in our study, including, principally, evidence for ongoing selection of L1014F _kdr_ and G119S _Ace-1 in A. coluzzii_, which was absent in _A. gambiae_ s.s. and higher proportions of N1575Y in _A. gambiae_ s.s.; expression levels of metabolic genes were comparable between species. The lack of association between L1014F _kdr_ genotype and mosquito phenotype, coupled with the identification of 3 CYP450 enzymes (_CYP6P4, CYP6P3,_ and _CYP6Z1_) that were significantly overexpressed in field populations (some of which are known to metabolize pyrrethroids and next-generation LLIN insecticides [42, 43]), indicate a key role for metabolic resistance in this _A. coluzzii_ population. One notable difference in our data set, compared with previous findings in Agboville [7], was the finding of benodiocarb susceptibility. This may be attributable to small-scale spatial and longitudinal heterogeneity in resistance, which can be highly dynamic [37, 44], and/or phenotypic differences between vector species, complicating intervention choice for resistance management.\n", + "\n", + "With the exception of chlorfenapyr, which is known to be a slow-acting insecticide, no delayed mortality effects were detected after insecticidal exposure; the format and dose used for clothianidin testing (another slow-acting insecticide [45]) were instead intended to measure acute toxicity within a 60-minute exposure period. Previous mathematical models using resistant mosquito colonies have suggested that sublethal insecticide treatment may still reduce vector lifespan and inhibit blood-feeding and host-seeking behaviors, thereby interrupting malaria transmission [46, 47]. Our observations are more compatible with reports from Burkina Faso, where different exposure regimens of wild, resistant _A. gambiae_ s.l. populations to deltamethrin LLINs did not induce any delayed mortality effects [47]. Further assessment of sublethal effects are warranted across additional field populations with differing resistance mechanisms, to clarify the impact of insecticidal exposure on the vectorial capacity of resistant mosquitoes.\n", + "\n", + "To date there is a paucity of data regarding the interactions between insecticide resistance and _Plasmodium_ development [48]. In the current study, _A. coluzzii_ that died after pyrethroid exposure were significantly more likely to be infected with malaria. This might be explained by elevated metabolic enzymes and/or prior pyrethroid exposure detrimentally affecting parasite development [49], although it is important to note that we did not detect any significant differences between gene overexpression in malaria-infected versus noninfected _A. coluzzii_. Alternatively, our sampled population may have been physiologically older, as phenotypic resistance is known to decline with age [50]. It is impossible to distinguish between these hypotheses using field-collected vector populations; the experimental design used in this study had other biological and technical limitations, which have been described in detail elsewhere [23, 37]\n", + "\n", + "In conclusion, as new combination and bitreated vector control interventions become available for deployment, contemporary resistance information is crucial for the rationale design of management strategies and to mitigate further selection for particular resistance mechanisms. The results from the current study contribute to growing insecticide resistance data for Cote d'Ivoire, demonstrating a loss of bioefficacy of pyrethroid LLINs and supporting the use of new active ingredients (clothianidin, chlorfenapyr, and PBO). Study findings also highlight the need for expanded insecticide resistance surveillance, including monitoring of metabolic resistance mechanisms, in conjunction with studies to better characterize the impact of sublethal insecticide exposure on vectorial capacity and the interaction between insecticide resistance and _Plasmodium_ parasite development.\n", + "\n", + "Figure 5: Metabolic gene expression in resistant versus susceptible field _Anopheles coluzzi_, which either died or survived after insecticidal exposure. Error bars represent 95% confidence intervals.\n", + "\n", + "header: Mosquito Processing, Identification of _A. gambiae_ s.l. Species Complex\n", + "\n", + "Members, and _Plasmodium falciparum_ Detection\n", + "\n", + "A subsample of field-caught mosquitoes tested in bioassays was selected for molecular analysis (n = 912). Approximately equal numbers of specimens were chosen to represent phenotypically \"susceptible\" or \"resistant\" mosquitoes for each LLIN type or insecticide dose, selected across different replicates and testing days to capture as much population-level variation as possible. RNA was extracted from individual whole-body mosquitoes according to standard protocols [23]. Field _A. gambiae_ s.l. were identified to species level [25] and were screened for the presence of _Plasmodium falciparum_[26].\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Bioassay, cone test\",\"Country\":\"Cote d'Ivoire\",\"Site\":\"Aboude, Agboville\",\"Start_month\":7,\"Start_year\":2019,\"End_month\":7,\"End_year\":2019}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"1.4 g\\/kg\"},\"N02\":{\"Net_type\":\"PermaNet 3.0 roof panels\",\"Insecticide\":\"PBO, deltamethrin\",\"Concentration_initial\":\"25g\\/kg, 4 g\\/kg\"},\"N03\":{\"Net_type\":\"PermaNet 3.0 side panels\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"2.8 g\\/kg\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: 2.2.1 Role of CYP6P9a_R Using WHO Tube Assay Samples\n", + "\n", + "Using the hybrid FUMOZ-FANG strains, the role of the _CYP6P9a_R_ allele in the observed pyrethroid resistance was confirmed. The odds ratio of surviving exposure to permethrin when homozygous for the resistant _CYP6P9a_R_ allele (RR) was high at 693 (CI 88-5421; \\(p\\) < 0.0001) compared to the homozygous-susceptible mosquitoes (SS) (Figure 2A). The OR was 131 (CI 27-978; \\(p\\) < 0.0001) when comparing RR to RS, indicating the increasing resistance conferred by _CYP6P9a_.\n", + "\n", + "header: 4.6.2 Genotyping of the CYP6P9b-R Maker Using PCR-RFLP\n", + "\n", + "The PCR was carried out, as described for CYP6P9a. The following primers were used: 6p9brflp_0.5F 5'-CCCCCACAGGTGTAACTCTGAA-3' and 6p9brflp_0.5R 5'-TTATCCGTAAACTCAATAGCGATG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 550 bp. The digestion with the _Tsp_451 restriction enzyme followed 0.2 mL of Tsp451, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product was migrated on the 2% gel. Amplicons from susceptible mosquitoes were cut into two bands with sizes of 400 bp and 150 bp, and the resistant mosquitoes remained undigested with the band at 550 bp.\n", + "\n", + "header: Impact of the Duplicated CYP6P9a and CYP6P9b P450 Genes on the Performance of Bed Nets\n", + "\n", + "The samples collected during the evaluation of Olyset and Olyset Plus in experimental huts were grouped in several categories: dead, alive, blood fed, and unfed; room and veranda. The _CYP6P9a_/b and _6.5 kb SV_ were genotyped in each group using the respective PCR assays as described [28,29,31]. This allowed the relative survival and feeding success of resistant and susceptible insects in the presence of both bed nets to be directly measured.\n", + "\n", + "header: Abstract\n", + "\n", + "Experimental Hut Trials Reveal That CYP6P9a/b P450 Alleles Are Reducing the Efficacy of Pyrethroid-Only Olyset Net against the Malaria Vector _Anopheles funestus_ but PBO-Based Olyset Plus Net Remains Effective\n", + "\n", + "Benjamin D. Menze, Leon M. J. Mugenzi, Magellan Tchouakui, Murielle J. Wondji,\n", + "\n", + "1Vector Biology Department, Liverpool School of Tropical Medicine, Pembroke Place, Liverpool L3 5QA, UK; murielle.wondji@ilstmed.ac.uk\n", + "2Medical Entomology Department, Centre for Research in Infectious Diseases (CRID), Yaounde 13591, Cameroon; leon.mugenzi@crid-cam.net (L.M.J.M.); magellan.tchouakui@crid-cam.net (M.T.); micareme.tchouop@crid-cam.net (M.T.)\n", + "* Correspondence: benjamin.menze@crid-cam.net (B.D.M.); charles.wondji@ilstmed.ac.uk (C.S.W.)\n", + "\n", + "\n", + "Malaria remains a major public health concern in Africa. Metabolic resistance in major malaria vectors such as _An. funestus_ is jeopardizing the effectiveness of long-lasting insecticidal nets (LLINs) to control malaria. Here, we used experimental hut trials (EHTs) to investigate the impact of cytochrome P450-based resistance on the efficacy of PBO-based net (Olyset Plus) compared to a permethrin-only net (Olyset), revealing a greater loss of efficacy for the latter. EHT performed with progenies of F5 crossing between the _An. funestus_ pyrethroid-resistant strain FUMOZ and the pyrethroid-susceptible strain FANG revealed that PBO-based nets (Olyset Plus) induced a significantly higher mortality rate (99.1%) than pyrethroid-only nets (Olyset) (56.7%) (\\(p<0.0001\\)). The blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)). Genotyping the _CYP6P9a/b_ and the intergenic _6.5 kb structural variant_ (SV) resistance alleles showed that, for both nets, homozygote-resistant mosquitoes have a greater ability to blood-feed than the susceptible mosquitoes. Homozygote-resistant genotypes significantly survived more with Olyset after cone assays (e.g., _CYP6P9a_ OR = 34.6; \\(p<0.0001\\)) than homozygote-susceptible mosquitoes. A similar but lower correlation was seen with Olyset Plus (OR = 6.4; \\(p<0.001\\)). Genotyping EHT samples confirmed that _CYP6P9a/b_ and _6.5 kb_SV_ homozygote-resistant mosquitoes survive and blood-feed significantly better than homozygote-susceptible mosquitoes when exposed to Olyset. Our findings highlight the negative impact of P450-based resistance on pyrethroid-only nets, further supporting that PBO nets, such as Olyset Plus, are a better solution in areas of P450-mediated resistance to pyrethroids.\n", + "\n", + "header: Table 1: Description of the long-lasting insecticidal nets used.\n", + "footer: None\n", + "columns: ['Treatment Arm', 'Description', 'Manufacturer']\n", + "\n", + "{\"0\":{\"Treatment Arm\":\"Untreated\",\"Description\":\"100% polyester with no insecticide\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"4\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"5\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"}}\n", + "\n", + "header: 5 Conclusions\n", + "\n", + "This study reveals that insecticide resistance driven by _CYP6P9a/b_ and _6.5 kb SV_ can reduce the efficiency of Permethrin-based LLINs, such as Olyset, while PBO-based nets remain effective. However, the greater loss of efficacy observed in mosquitoes with multiple and complex resistance supports the need to introduce new products for vector control which is less reliant on pyrethroids. Meantime, PBO-based nets should be preferably deployed in areas of P450-based resistance.\n", + "\n", + "**Supplementary Materials:** The following supporting information can be downloaded at: [https://www.mdpi.com/article/10.3390/pathogens11060638/s1](https://www.mdpi.com/article/10.3390/pathogens11060638/s1), Table S1: Results of the performance of Olyset and Olyset Plus against _An. funestus_ females (crossing FUMOZ-FANG; F5) in experimental hut trial. Table S2: Correlation between _CYP6P9a and CYP6P9b_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S3: Correlation between the _6.5Kv SV_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S4: Correlation between genotypes of _CYP6P9a_, _CYP6P9b_ and _6.5 kb SV_ and mortality and blood-feeding after exposure to Olyset and Olyset Plus in experimental huts. Table S5: _CYP6P9a_ and _CYP6P9b_ acting together further increase the ability of _An. funestus_ to survive and blood feed against Olyset after experimental hut trial.\n", + "\n", + "**Author Contributions:** C.S.W. conceived and designed the study; L.M.J.M. and M.T. (Magellan Tchouakui) generated the lab crosses and performed the validation of the PCR; B.D.M. performed the experimental hut experiments with C.S.W. and genotyped the resistance makers with M.J.W. and M.T. (Micareme Tchoupo); B.D.M. and C.S.W. wrote the paper with assistance from M.T. (Magellan Tchouakui) and L.M.J.M. All authors have read and agreed to the published version of the manuscript.\n", + "\n", + "**Funding:** This research was funded in whole by the Welcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). For the purpose of open access, the authors applied a CC BY public copyright license to any author who accepted a manuscript version following this submission.\n", + "\n", + "**Institutional Review Board Statement:** NA.\n", + "\n", + "**Informed Consent Statement:** NA.\n", + "\n", + "**Data Availability Statement:** NA.\n", + "\n", + "**Acknowledgments:** A big thanks to Charles Wondji for his financial support through the Wellcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). I am also grateful to the Mibellon community.\n", + "\n", + "**Conflicts of Interest:** The authors declare that they have no competing interest.\n", + "\n", + "header: 3 Discussion\n", + "\n", + "The capacity to assess the impact of insecticide resistance on the effectiveness of insecticide-treated control tools is crucial in order to implement suitable insecticide resistance management (IRM) [32]. Evolution in the area of DNA-based resistance markers of P450-mediated resistance [28; 29] currently offers robust tools to screen pyrethroid resistance in field populations of the major malaria vectors such as _An. funestus_ and assess their impact on the effectiveness of LLINs. In this study, we use these markers to evaluate the extent to which pyrethroid resistance is impacting the efficacy of pyrethroid-only nets such as Olyset in comparison to PBO-based net such as Olyset Plus. This study also allowed to assess the interplay between P450 genes in the overall genetic variance to resistance and their combined impact on the efficacy of LLINs.\n", + "\n", + "PBO-Based Nets (Olyset Plus) Exhibit Greater Efficacy than Pyrethroid-Only Nets (Olyset) in the Context of P450-Based Resistance\n", + "\n", + "Olyset presented a moderate mortality compared to Olyset Plus (30.9% vs. 100%; \\(p\\) < 0.0001). The high mortality observed with PBO nets compared to pyrethroid-only nets is similar to what was observed in previous studies [33; 34; 35; 36]. The high mortality observed with PBO-based nets against the hybrid strain FUMOZ/FANG is due to the fact the mechanisms underlying the resistance in this population are driven by _CYP6P9a_ and _CYP6P9b_[37] which are inhibited by PBO [38]. These results demonstrate that PBO-based nets may be a more suitable solution in areas where resistance is mainly mediated by P450 genes.\n", + "\n", + "Figure 7: Combined impact of the triple resistance alleles (_CYP6P9a_/_CYP6P9b_/_6.5 kb SV_) on the efficacy of insecticide-treated nets. (**A**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances of being alive in the presence of Olyset Net. (**B**) Ability to survive exposure to Olyset net for the various combined genotypes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_. (**C**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances to bloodfed in the presence of Olyset net. (**D**) The triple RR/RR/SV+SV+ homozygous mosquitoes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_ exhibit a greater blood-feeding ability than other genotypes. Ns: non-significant; * (0.05); ** (0.01); *** (0.001).\n", + "\n", + "\n", + "The efficacy of nets observed in this study confirms the loss in efficacy of the pyrethroid-only nets against _Anopheles_ mosquitoes, as observed across the continent [39]. This loss of efficacy was observed in Mozambique [7,40], Malawi [41], Congo [42], and Cameroon [6,43]. Overall, similar to this study, it has been noticed that PBO-based nets demonstrate a better performance compared to pyrethroid-only nets [33,34]. The same trends were observed with pyrethroid type II with high mortality observed with PermaNet 3.0 compared to PermaNet 2.0 [28,29,31], suggesting that PBO-based nets with both type I or II can exhibit high performance against resistance sustained by P450s.\n", + "\n", + "P450 Resistance Can Reduce the Efficacy of Pyrethroid-Only Nets Significantly Better Than PBO-Based Nets\n", + "\n", + "When comparing the impact of _CYP6P9a/b_ on pyrethroid-only nets and PBO-based nets using samples from cone assays, we noticed that the impact of _CYP6P9a_ on pyrethroid-only nets was higher than with PBO-based nets (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. Olyset Plus, OR = 6.4; \\(p\\) < 0.001). The same trend was also observed with _CYP6P9b_ and the 6.5 kb SV. This can be explained by the fact that the addition of the PBO inhibits the cytochrome P450 enzymes, which is the main resistance mechanism in the strain used by the mosquitoes [44,45].\n", + "\n", + "On the other hand, Olyset nets have also shown reduced performance against _CYP6P9a_ and _CYP6P9b_-resistant mosquitoes. Strong association was observed between the resistant alleles and the increased ability of the mosquitoes to survive after exposure to these nets. Nevertheless, the impact of _CYP6P9a_ and _CYP6P9b_ seems to be more significant on PermaNet nets impregnated with deltamethrin [29,31], compared to Olyset nets impregnated with permethrin (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. PermaNet 2.0, OR = 239.0; \\(p\\) < 0.001 and Olyset Plus, OR = 6.4; \\(p\\) < 0.001 vs. PermaNet 3.0, OR = 81.0; \\(p\\) < 0.001) [29,31]. This significant impact on PermaNet could be associated with the fact that the hybrid strain is more resistant to type II pyrethroids, as shown by WHO bioassays, where the mosquitoes were more resistant to deltamethrin compared to permentrin (48.5% vs. 80.7%). With regards to the obtained odd ratios, a stronger association was observed between _CYP6P9a/CYP6P9b_ and the loss of efficacy of nets compared to what was observed with GST-based resistance through the L119F-_GSTe2_-resistant allele [43], in line with the greater role of P450 in resistance to pyrethroids in _An. funetus_, compared to that of GST. The 6.5 kb SV was shown to further exacerbate the loss of efficacy in the permethrin-only nets. The design of the simple PCR-based assay to genotype the _6.5 kb SV_ enabled us to assess the impact of such structural variation on the efficacy of insecticide-treated nets, including the pyrethroid-only and the PBO-synergist nets. A greater reduction in the efficacy of _6.5 kb SV_ was present on permethrin-only nets compared to PBO-based nets, which is similar to that observed with _CYP6P9a_ [31] and _CYP6P9b_ [29], in terms of the reduced mortality rate and blood-feeding inhibition. This pattern is also similar to that seen with deltamethrin-based nets (PermaNet 2.0 vs. PermaNet 3.0) [29,31]. Overall, the significantly greater loss of efficacy due to P450s observed with both type I (Olyset and PermaNet 2.0) and PBO-based nets (Olyset Plus and PermaNet 3.0) further supports the deployment of PBO-based nets to control P450-based metabolically resistant mosquito populations. The deployment of PBO-based nets should nevertheless also be monitored to regularly assess their efficacy since they too could be impacted by resistance, as shown by the fact that _CYP6P9a/b_-resistant mosquitoes could blood-feed significant better, even with Olyset Plus. This increased ability of resistant mosquitoes to blood-fed, even with PBO-based net, suggests that PBO-based nets are not immune to the impact of resistance, even if they remain significantly more effective than pyrethoid-only nets. The increased blood-feeding of P450-resistant mosquitoes when exposed to PBO-based nets may also lead to a higher malaria transmission, although this is mitigated by the high mortality observed for Olyset Plus in a experimental hut trial. Overall, evaluating the impact of P450-based resistance on the efficacy of Olyset vs. Olyset Plus further supports the results obtained in a cluster \n", + "randomized controlled trial with both nets in Tanzania showing greater effectiveness of Olyset Plus [46].\n", + "\n", + "header: 1 Introduction\n", + "\n", + "Long-lasting insecticidal nets (LLINs) remain an important component of the malaria control strategies used to reduce mortality and morbidity due to this disease in Africa [1, 2]. Mostly insecticides belonging to the pyrethroid group, as well as more and more novel insecticides, are currently recommended for bed net impregnation [3, 4, 5]. In recent years, anopheles mosquitoes have increasingly been reported to show resistance against pyrethroids across Africa. This is the case for major vectors including _Anopheles funestus_[6, 7, 8, 9] and _Anopheles gambiae_[10, 11, 12, 13, 14]. This growing spread of resistance has led to a concern that LLINs may lose their efficacy. However, quantifying such loss of efficacy remains challenging without suitable metrics associated with resistance, highlighting the need to use robust genotype/phenotype analysis for this evaluation. At a time when national malaria control \n", + "programs across Africa are seeking to take evidence-based decisions on their choice of suitable nets to help improve malaria control, it is paramount to determine the extent to which existing resistance to pyrethroid really affects LLIN efficacy. This involves an understanding of the interaction between resistance mechanisms and mosquito responses to exposure to LLINs. Broadly speaking, pyrethroid resistance can be caused by alterations in the target site of the insecticide or enhanced enzymatic activities capable of metabolizing the insecticide before it reaches the target [15-17]. Target site resistance is well studied with mutations in the target of both pyrethroid and DDT insecticides, as well as the voltage-gated sodium channels which lead to knockdown resistance (_kdr_). The development of molecular assays more than twenty years ago made it possible to track this resistance mechanism using a simple PCR [18-21] or high throughput techniques, such as TaqMan assays [22]. It has also been possible to assess the impact of _kdr_ on control tools, notably in _An. gambiae_ where these markers are common [23-25], contrary to _An. funestus_, where it is still not detected [26]. The second best characterized cause of insecticide resistance is metabolic resistance, which is more complex to understand as it can involve the detoxification, sequestration, and transportation of insecticides or their conjugates [16,17,27]. Recent studies have focused on elucidating the genetic factors which cause the increased expression of detoxification genes associated with insecticide resistance in malaria vectors such as _An. funestus_, leading to the development of simple molecular assays used to detect metabolic resistance [28-31].\n", + "\n", + "The recent design of molecular assays for the duplicated _CYP6P9a/b_ and the associated _6.5 kb_ structural variant (SV), refs. [28,29,31] now provides a great opportunity to assess the impact of P450-based pyrethroid resistance on the efficacy of various LLINs, including pyrethroid-only (Olyset) and PBO (Olyset Plus) nets. This will provide evidence-based information on their effectiveness in the presence of a growing and escalading resistance to pyrethroids. Previous assessment of this impact on PermaNet nets made with type II pyrethroid deltamethrin has been performed [28,29,31], but this remains to be carried out for type I pyrethroid nets, such as the common permethrin-based Olyset nets.\n", + "\n", + "Here, using EHT, we show a significantly greater efficacy of the PBO-based net Olyset Plus compared to the pyrethroid-only Olyset net against pyrethroid-resistant _An. funestus_. Using the genotyping of DNA-based markers of P450 resistance, we reveal that _CYP6P9a/b_ P450-based pyrethroid resistance induces a significant loss of efficacy for pyrethroid-only net Olyset against _An. funestus_. A reduced efficacy was also detected for PBO-based net Olyset Plus, but at a lower extent than for Olyset net, revealing that PBO nets are more suitable to tackle such P450-based resistance.\n", + "\n", + "header: 2.3.1 Impact on Mosquito Mortality: 2.3.2 CYP6P9a Impacting the Blood-Feeding\n", + "\n", + "Homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed better than homozygote-susceptible mosquitoes (SS) (OR = 4.5; \\(p\\) < 0.01) when exposed to Olyset. Heterozygote mosquitoes (RS) were significantly worse at blood-feeding with Olyset compared to homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-1.7; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) fed heterozygotes (OR = 5.4; CI = 2.6-10.88; \\(p\\) < 0.001) significantly better (Table S4; Figure 5C). Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.3; CI = 1.3-4.1; \\(p\\) < 0.01) (Table S4). For Olyset Plus, homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed than homozygote-susceptible mosquitoes (RS) (OR = 6.3; \\(p\\) < 0.001) when exposed to Olyset Plus. The significant ability to blood-feed was observed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.0; CI = 1.1-3.5; \\(p\\) = 0.03) (Table S4).\n", + "\n", + "header: 4.6.1 Genotyping of the CYP6P9a-R Marker Using PCR-RFLP\n", + "\n", + "DNA was extracted from various groups of mosquitoes (dead, alive, blood fed, and unfed; room and veranda) using the Livak protocol [49]. The PCR was carried out using 10 mM of each primer and 1 mL of gDNA as the template in 15 mL reaction containing 10x Kapa Taq buffer A, 25 mM of dNTPs, 25 mM of MgCl2, and 1 U of Kapa Taq (Kapa Biosystems, Boston, MA, USA). Amplification was carried out using thermocycler parameters: 95 degC for 5 min, 35 cycles of 94 degC for 30 s, 58 degC for 30 s, 72 degC for 45 s, and a final extension at 72 degC for 10 min. The following primers were used: RFLP6P9aF forward primer 5'-TCCCGAAATACAGCCTTTCAG-3 and RFLP6P9aR reverse primer 5'-ATTGGTCCATCGCTAGAAG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 450 bp. The digestion with Taq1a followed 0.2 mL of Taq1a, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product migrated on the 2% gel. Amplicons from resistant mosquitoes were cut into two bands with sizes of 350 bp and 100 bp, and the susceptible mosquitoes remained undigested with the band at 450 bp.\n", + "\n", + "header: 4.6.3 PCR Assay to Detect the 6.5 kb SV\n", + "\n", + "To easily identify the samples containing the 6.5 kb insertion, the recently designed PCR assay [28] was used to discriminate between mosquitoes with the 8.2 kb (resistant) and 1.7 kb (susceptible) _CYP6P9a_ and _CYP6P9b_ intergenic regions. Briefly, three primers were used: two (FG_5F: CTACCGTCAAAGTCCGGTAT and FG_3R: TTTCGAAAACATCCCTAAA) at regions flanking the insertion point and a third primer (FZ_INS5R: ATATGCCACGAAGGAAAGCAG) in the _6.5 kb_ insertion. One unit of KAPA Taq polymerase (Kapa Biosystems) in 1x buffer A, i.e., 25 mm of MgCl2, 25 mm of dNTPs, and 10 mm of each primer, was used to constitute a 15 mL PCR mix using the following conditions: an initial denaturation step of 3 min at 95 degC, followed by 35 cycles of 30 s at 94 degC, 30 s at 58 degC, and 60 s at 72 degC, with a final extension for 10 min at 72 degC. The amplicon was revealed on a 1.5% agarose gel stained with Midori Green Advance DNA Stain (Nippon genetics Europe GmbH) and revealed on a UV transilluminator.\n", + "\n", + "header: Impact of CYP6P9a on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", + "\n", + "Genotyping of the _CYP6P9a_ marker allowed us to assess the impact of P450-based metabolic resistance on the loss of efficacy of Olyset, but not for Olyset Plus, since most of the mosquitoes released in Olyset Plus huts died. To avoid confounding effects from blood-feeding, or net entry or exophily status, the distribution of the _CYP6P9a_ genotypes was assessed firstly only among unfed mosquitoes collected in the room. This revealed a highly significant difference in the frequency of the three genotypes between the dead and alive mosquitoes (chi-square = 28.8; \\(p\\) < 0.0001) (Figure 5). Analysis of the correlation between each genotype and mortality revealed that _CYP6P9a_ homozygous-resistant mosquitoes (RR) show an increased ability to survive exposure to the Olyset when compared to homozygote-susceptible mosquitoes (SS) with (OR = 5.0; CI = 2.01-12.4; \\(p\\) = 0.001). The strength of this association was further shown by the significant ability to survive exposure when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.04; CI = 1.1-3.6; \\(p\\) < 0.05). However, heterozygote mosquitoes (RS) did not survive exposure to Olyset better than homozygote-susceptible mosquitoes (SS) (OR = 1.8; CI = 0.8-3.9; \\(p\\) > 0.05) (Figure 5A; Table S4; Figure 5B).\n", + "\n", + "Figure 5: Impact of both _CYP6P9a_ and _CYP6P9b_ on the efficacy of bed nets in the experimental hut trial. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: \\(p\\) < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Association between _CYP6P9a_ and ability to blood-feed when exposed to Olyset. The _CYP6P9a_–R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (**D**) Association between _CYP6P9b_ and ability to survive exposure to Olyset in the experimental hut trial. (**E**) Allelic frequency of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the _CYP6P9b_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9b_S_. (**F**) Association between _CYP6P9b_ gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The _CYP6P9b_-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\n", + "\n", + "header: 2.4.1 The Impact of CYP6P9b on Mortality: 2.4.2 CYP6P9b Impacting the Blood-Feeding\n", + "\n", + "A strong association was observed between _CYP6P9b_ genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could more successfully blood-fed when compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 4.1-24.9; \\(p\\) < 0.001) (Table S4; Figure 5F). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset was not different to that of homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-2.2; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 11.1; CI = 5.3-23.03: \\(p\\) < 0.001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood fed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.7; CI = 2.5-8.1; \\(p\\) < 0.01) (Table S4).\n", + "\n", + "header: 2.1.1. Quality Control and Performance of the Nets against the Hybrid Strain: 2.1.2 Performance of Nets against the Hybrid Strain Using Experimental Hut\n", + "\n", + "A total number of 578 mosquitoes from the hybrid strain were released and recaptured on a period of one week. In total, 141 samples were released in the control hut, 224 in the hut were treated with Olyset, and 213 in the hut were treated with Olyset Plus.\n", + "\n", + "**Mortality**: Analysis of mortality rates revealed very high mortality of the hybrid FUMOZ-FANG strain against the PBO-based Olyset Plus net (99.1%). In contrast, lower mortality was observed for the pyrethroid-only Olyset net (56.7%). Very low mortality was observed in the untreated control net (9.9%) (Figure 1D; Table S1).\n", + "\n", + "**Blood-feeding**: The blood-feeding rate did not significantly differ when comparing the control (7.8%) to Olyset (11.6% \\(p>0.05\\)) and Olyset Plus (5.6%; \\(p>0.05\\)). However, the blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)) (Figure 1D; Table S1).\n", + "\n", + "Figure 1: Susceptibility profile of the hybrid FUMOZ-FANG strain to pyrethroids. (**A**) Net quality assessment with recorded mortalities after cone assays with Kisumu, the _An. gambiae_-susceptible lab strain, and the _An. funestus_ FUMOZ-FANG strain. (**B**) Susceptibility profile of the hybrid FUMOZ-FANG strain to type II (deltamethrin) pyrethroids and propoxur with recorded mortalities following 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**C**) Susceptibility profile of the hybrid FUMOZ-FANG strain to deltamethrin (type II pyrethroids) and permethrin (type I pyrethroids) with recorded mortalities following 30 and 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**D**) Proportion of mortality, blood-feeding, and exophily rate for Olyset and Olyset Plus against _An. funestus_ (crossing the FUMOZ-FANG strain (F5)). Ns = \\(p>0.05\\); * = \\(p\\leq 0.05\\); ** = \\(p\\leq 0.01\\); *** = \\(p\\leq 0.001\\).\n", + "\n", + "\n", + "\n", + "\n", + "**Exophily**: The exophily rate in the hut with Olyset net (23.7%) was significantly higher than that in the control hut (13.5%) (_p_ = 0.02), as well as than for Olyset Plus (7.5%; \\(p\\) < 0.001). No significant difference was observed between Olyset Plus and the control net (_p_ = 0.3) (Figure 1D; Table S1).\n", + "\n", + "Validating the Role of CYP6P9a/b and 6.5 kb SV in Pvrethroid Resistance in the Hybrid FUMOZ-FANG Strains before the Experimental Hut Trials\n", + "\n", + "header: 2.2.2 Validating the Role of CYP6P9b_R_ Using Sample from WHO Tube Assays\n", + "\n", + "To confirm the ability of the _CYP6P9b_R_ allele to predict pyrethroid resistance phenotype in the hybrid strain FUMOZ-FANG, the F5 samples were genotyped. This revealed that those that stayed alive after exposure to permethrin for 90 minutes are mainly homozygote\n", + "\n", + "Figure 2: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (**A**) Tube assay _CYP6P9a_ and mortality. Role of _CYP6P9a_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9a_ genotypes according to resistance phenotypes. (**B**) Tube assay _CYP6P9b_ and mortality. Role of _CYP6P9b_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9b_ genotypes according to resistance phenotypes. (**C**) Cone assay _CYP6P9a_ and mortality. Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: \\(p\\) < 0.001). (**D**) Cone assay _CYP6P9a_ and mortality allele. Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the _CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**E**) Cone assay _CYP6P9b_ and mortality. Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset using the cone test, showing strong association (RR vs. SS: \\(p\\) < 0.001).\n", + "\n", + "\n", + "resistant (20.8%) and heterozygotes (75%), with only two being homozygote-susceptible. Among the 47 mosquitoes found dead after 30 min exposure to permethrin (highly susceptible), 97.87% were found to be homozygote-susceptible, and one remaining was a heterozygote (Figure 2B). A strong association was perceived between permethrin resistance and the _CYP6P9b_ genotypes when comparing RR vs. SS (OR = infinity; \\(p\\) < 0.0001) and RS vs. SS (OR = 715; \\(p\\) < 0.0001).\n", + "\n", + "2.3 Validation of the Role of CYP6P9a and CYP6P9b in Conferring Resistance Using Samples from Cone Assays\n", + "\n", + "Using dead and alive mosquitoes obtained after cone assays, _CYP6P9a_ homozygous-resistant mosquitoes (RR) and heterozygous (RS) could survive significantly better following exposure to Olyset and Olyset Plus than homozygote-susceptible mosquitoes (Table S2). Olyset shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 35.1; \\(p\\) < 0.0001) and RS vs. SS (OR = 34.6; \\(p\\) < 0.0001) for _CYP6P9a_ (Figure 2C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 7.7; \\(p\\) < 0.05) (Table S2; Figure 2D). Concerning _CYP6P9b_, homozygous-resistant mosquitoes (RR) and heterozygous (RS) could also survive significantly better following survive exposure to Olyset net. A strong association was noticed between the gene and the ability to survive when comparing RR to SS (OR = 32.4; \\(p\\) < 0.0001) and RS vs. SS (OR = 97.3; \\(p\\) < 0.0001) (Table S2; Figure 2E).\n", + "\n", + "Olyset Plus shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 6.4; \\(p\\) < 0.001) and RS vs. SS (OR = 7.2; \\(p\\) < 0.001) for _CYP6P9a_ (Table S2; Figure 3A). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.0; \\(p\\) = 0.05) (Table S2; Figure 3B). Concerning the _CYP6P9b_, Olyset Plus equally shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 9.7; \\(p\\) < 0.001) and RS vs. SS (OR = 17.9; \\(p\\) < 0.001) for _CYP6P9b_ (Table S2; Figure 3C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.2; \\(p\\) = 0.01) (Table S2).\n", + "\n", + "Figure 3: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset Plus nets after cone assays. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (_p_ < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset Plus using the cone test, showing the significant ability of the mosquitoes carrying the RR genotype to survive compared to SS (_p_ < 0.001).\n", + "\n", + "header: Study Site: Laboratory Strain: FUMOZ/FANG Crossing\n", + "\n", + "Previous studies revealed that the duplicated P450 _CYP6P9a/b_ and intergenic _6.5 kb sv_ is mainly found in mosquitoes from southern Africa and absent from mosquitoes collected elsewhere in Africa [31,45]. Moreover, these resistance markers have already been selected (close to fixation) in the southern African _An. funestus_ populations, preventing free-flying mosquitoes from being used in this region in order to assess their impact on LLIN efficacy, as all mosquitoes are nearly homozygote-resistant now [7]. Therefore, to evaluate the impact of these cytochrome P450, we opted to use a hybrid strain generated from two _An. funestus_ laboratory colonies: the FANG colony, a completely insecticide-susceptible colony originating from Angola, and the FUMOZ colony derived from southern Mozambique, which is highly resistant to pyrethroids and carbamates [48]. During rearing, the pupae of each strain were kept individually in Falcon tubes (15 mL), locked with a piece of cotton for individual emergence. After the emergence of pupae in the Falcon tube, the males and the females were separated. A reciprocal crossing was performed using 50 males and 50 females from the other strain. After the initial F1 generation obtained from the reciprocal crosses of the 50 males and 50 females of both strains, the hybrid strain was reared to F5 and F6 generation, presenting good segregation in all the three genotypes. The hybrid strain was then used for the release recapture experiment in the huts.\n", + "\n", + "header: Susceptibility Profile of the Hybrid FUMOZ/FANG Strain to Pyrethroids\n", + "\n", + "Before assessing the impact of _CYP6P9a/b_ on the effectiveness of LLINs using the experimental huts, the resistance status of the hybrid FUMOZ-FANG was evaluated in laboratory conditions via WHO tube tests and cone tests, and the role of _CYP6P9a/b_ in terms of resistance was assessed.\n", + "\n", + "**Bioassays:** WHO bioassays were conducted with 0.05% deltamethrin and 0.1% propoxur. To generate highly resistant and highly susceptible mosquitoes, WHO bioassays were conducted with 0.75% permethrin and 0.05% deltamethrin for 30 min and 90 min. For each insecticide, four replicates of 25 mosquitoes from the hybrid strains were used. Alive mosquitoes after 90 min of exposure and dead mosquitoes after 30 min of exposure were then genotyped to establish the association between the _CYP6P9a/b_ and _6.5 kb SV_ resistance alleles and the ability of mosquitoes to survive to these insecticides.\n", + "\n", + "**Cone assays:** Cone test bioassays were conducted with a fragment of Olyset and Olyset Plus using the resistant hybrid strains FUMOZ-FANG. Five batches of 10 unfed females, aged 2-5 days old, were exposed to each bed net for three minutes. They were then transferred into the holding paper cup containers. The knockdown was checked after 60 min and the mortality after 24 h. Alive and dead mosquitoes obtained after exposure were then genotyped. The association between the _CYP6P9a/b_-resistant allele and the ability of mosquitoes to survive to these insecticides was also established.\n", + "\n", + "header: Results\n", + "\n", + "All the nets used in the study were first exposed to the susceptible lab strain Kisumu for quality control. The mortality for Olyset and Olyset Plus was 100% (Figure 1A). The _An. funestus_ hybrid strain exposed to bed nets using WHO cone assays exhibited mortality rates of 30.1 \\(\\pm\\) 11.5% for Olyset and 100 \\(\\pm\\) 0% for Olyset Plus, suggesting a greater efficacy of PBO synergist nets compared to pyrethroid-only nets.\n", + "\n", + "**Susceptibility profiles of the FUMOZ-FANG:** The bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to deltamethrin with mortality of 43.7 \\(\\pm\\) 5.9%, and was resistant to propoxur with mortality of 67.3 \\(\\pm\\) 6.6% (Figure 1B). The second set of bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to permethrin with mortality of 43.7 \\(\\pm\\) 1.6% and 39.3 \\(\\pm\\) 1.6%, respectively, for 90 min and 30 min. Resistance was also observed with deltamethrin with a mortality of 86.4 \\(\\pm\\) 3.1% and 42.3 \\(\\pm\\) 2.5%, respectively, for 90 min and 30 min (Figure 1C).\n", + "\n", + "header: Resistance Escalation with Multiple Resistance Alleles Present a Greater Risk of Control Failure\n", + "\n", + "This study confirms the findings by [28], suggesting that the _6.5 kb SV_ acts as an enhancer for nearby duplicated P450 genes _CYP6P9a_ and _CYP6P9b_, leading to their increased overexpression, thus creating greater resistance. This _6.5 kb SV_ is strongly associated with an aggravation of pyrethroid resistance, which reduces the efficacy of pyrethroid-only nets. The fixation of this _6.5 kb SV_, besides the resistant alleles of _CYP6P9a_ and _CYP6P9b_, could explain the resistance escalation currently observed against the _An. funestus_ population from the southern part of Africa reducing the efficacy of bed nets [7,41].\n", + "\n", + "This study revealed that multiple and complex resistance combining elevated expression (_CYP6P9a/b_) [45], as well as the selection of cis-regulatory motifs for transcription binding sites (CnCC/MAF) [31], coupled with structural variations such as the _6.5 kb_, which is known to be enriched with several regulatory elements [28], can lead to a greater reduction in bed net efficacy. The fact that triple homozygote-resistant mosquitoes could survive better against exposure to pyrethroid-only nets compared to all genotypes reveals the greater risk that an unabated increase in resistance can likely lead to the failure of insecticide-based interventions, as predicted by the WHO global plan for insecticide resistance management. This calls for novel nets which do not rely on pyrethroids in the future. However, the impact of these resistance alleles on the efficacy of LLINs in natural populations remains to be established, as we only performed a test with a hybrid strain from two laboratory strains. This work must be urgently carried out, particularly as the molecular tools are increasingly available.\n", + "\n", + "header: 2.5.1 The Impact of 6.5 kb SV on Mortality: 2.5.2 The Impact of 6.5. kb SV on Blood-Feeding\n", + "\n", + "A strong association was observed between _6.5 \\(kb\\)_ SV genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could blood-feed better compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 3.2-31.4; \\(p\\)\\(<\\) 0.0001) (Table S4; Figure 6C). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset differs to that of homozygote-susceptible mosquitoes (SS) but not significantly (OR = 1.7; CI = 0.5-5.4; \\(p\\) = 0.4) (Table S4). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 10.2; CI = 4.9-21.11: \\(p\\)\\(<\\) 0.0001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.2; CI = 2.3-7.9; \\(p\\)\\(<\\) 0.0001) (Table S5; Figure 6D). A similar trend was observed against Olyset Plus nets (Table S5; Figure 6E,F).\n", + "\n", + "Combined Impact of CYP6P9a and CYP6Pb on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", + "\n", + "As _CYP6P9b_ genotypes were shown to be independent from those of _CYP6P9a_[28], we also assessed how combinations of genotypes at both genes impact the efficacy of Olyset for mortality and blood-feeding. Analysis of the impact of combined genotypes on mortality with Olyset confirmed the independent segregation of genotypes at both genes with several combinations of genotypes observed including RR/RR, RR/RS, RS/RS, RS/SS and SS/SS (Table S5). A comparison of the distribution of both sets of genotypes revealed that double homozygote-resistant (RR/RR) mosquitoes at both genes had a far greater ability to survive exposure to Olyset than most of the other combinations (Table S4) particularly when compared to double susceptible (SS/SS) (OR = 8.6; CI = 1.8-39.1; \\(p\\)\\(<\\) 0.01) (Table S5). A significantly increased survival is also observed in RR/RR when compared to other combinations although with a lower odds ratio, such as against RR/SS (OR = 2; \\(p\\)\\(<\\) 0.01) (Table S5).\n", + "\n", + "Analysis of the combined genotype distribution for blood-feeding also revealed a significantly increased ability to blood-feed for double homozygote-resistant mosquitoes when exposed to Olyset with the highest significance against double homozygote-susceptible mosquitoes (OR = 9.3; \\(p\\)\\(<\\) 0.001) (Table S5).\n", + "\n", + "Combined Impact of the Triple Resistance Alleles CYP6P9a/CYP6P9b/6.5 kb SV on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", + "\n", + "Experimental hut trials showed that triple RR/RR/SV\\({}^{+}\\)SV\\({}^{+}\\) homozygotes were more likely to survive exposure to Olyset compared to any other combined genotypes except RR/RS/RS (Figure 7A). RR/RR/SV+SV+ survived more than SS/SS/SV\\(-\\)SV\\(-\\) (OR = 8.5; CI: 2.53-28.46; \\(p\\)\\(=\\) 0.0005) and RS/RS/SV+SV\\(-\\) (OR = 3.57; CI = 1.82- 7.02; \\(p\\)\\(=\\) 0.0002). There was no significant difference between the RR/RR/SV+SV+ and RR/RR/SV+SV\\(-\\) genotypes (OR = 1; CI = 0.16-7.02; \\(p\\)\\(=\\) 1.0), and both had a similar trend in terms of survival with the same odds ratio (Figure 7B). In addition to the ability to survive exposure to the net, RR/RR/SV+SV+ also could blood-feed better than SS/SS/SV\\(-\\) SV\\(-\\) (OR = 7.0; CI: 2.38-20.52; \\(p\\)\\(=\\) 0.0004) and the other combinations in the presence of Olyset (Figure 7C,D).\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: 2.2.1 Role of CYP6P9a_R Using WHO Tube Assay Samples\n", + "\n", + "Using the hybrid FUMOZ-FANG strains, the role of the _CYP6P9a_R_ allele in the observed pyrethroid resistance was confirmed. The odds ratio of surviving exposure to permethrin when homozygous for the resistant _CYP6P9a_R_ allele (RR) was high at 693 (CI 88-5421; \\(p\\) < 0.0001) compared to the homozygous-susceptible mosquitoes (SS) (Figure 2A). The OR was 131 (CI 27-978; \\(p\\) < 0.0001) when comparing RR to RS, indicating the increasing resistance conferred by _CYP6P9a_.\n", + "\n", + "header: 4.6.2 Genotyping of the CYP6P9b-R Maker Using PCR-RFLP\n", + "\n", + "The PCR was carried out, as described for CYP6P9a. The following primers were used: 6p9brflp_0.5F 5'-CCCCCACAGGTGTAACTCTGAA-3' and 6p9brflp_0.5R 5'-TTATCCGTAAACTCAATAGCGATG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 550 bp. The digestion with the _Tsp_451 restriction enzyme followed 0.2 mL of Tsp451, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product was migrated on the 2% gel. Amplicons from susceptible mosquitoes were cut into two bands with sizes of 400 bp and 150 bp, and the resistant mosquitoes remained undigested with the band at 550 bp.\n", + "\n", + "header: Abstract\n", + "\n", + "Experimental Hut Trials Reveal That CYP6P9a/b P450 Alleles Are Reducing the Efficacy of Pyrethroid-Only Olyset Net against the Malaria Vector _Anopheles funestus_ but PBO-Based Olyset Plus Net Remains Effective\n", + "\n", + "Benjamin D. Menze, Leon M. J. Mugenzi, Magellan Tchouakui, Murielle J. Wondji,\n", + "\n", + "1Vector Biology Department, Liverpool School of Tropical Medicine, Pembroke Place, Liverpool L3 5QA, UK; murielle.wondji@ilstmed.ac.uk\n", + "2Medical Entomology Department, Centre for Research in Infectious Diseases (CRID), Yaounde 13591, Cameroon; leon.mugenzi@crid-cam.net (L.M.J.M.); magellan.tchouakui@crid-cam.net (M.T.); micareme.tchouop@crid-cam.net (M.T.)\n", + "* Correspondence: benjamin.menze@crid-cam.net (B.D.M.); charles.wondji@ilstmed.ac.uk (C.S.W.)\n", + "\n", + "\n", + "Malaria remains a major public health concern in Africa. Metabolic resistance in major malaria vectors such as _An. funestus_ is jeopardizing the effectiveness of long-lasting insecticidal nets (LLINs) to control malaria. Here, we used experimental hut trials (EHTs) to investigate the impact of cytochrome P450-based resistance on the efficacy of PBO-based net (Olyset Plus) compared to a permethrin-only net (Olyset), revealing a greater loss of efficacy for the latter. EHT performed with progenies of F5 crossing between the _An. funestus_ pyrethroid-resistant strain FUMOZ and the pyrethroid-susceptible strain FANG revealed that PBO-based nets (Olyset Plus) induced a significantly higher mortality rate (99.1%) than pyrethroid-only nets (Olyset) (56.7%) (\\(p<0.0001\\)). The blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)). Genotyping the _CYP6P9a/b_ and the intergenic _6.5 kb structural variant_ (SV) resistance alleles showed that, for both nets, homozygote-resistant mosquitoes have a greater ability to blood-feed than the susceptible mosquitoes. Homozygote-resistant genotypes significantly survived more with Olyset after cone assays (e.g., _CYP6P9a_ OR = 34.6; \\(p<0.0001\\)) than homozygote-susceptible mosquitoes. A similar but lower correlation was seen with Olyset Plus (OR = 6.4; \\(p<0.001\\)). Genotyping EHT samples confirmed that _CYP6P9a/b_ and _6.5 kb_SV_ homozygote-resistant mosquitoes survive and blood-feed significantly better than homozygote-susceptible mosquitoes when exposed to Olyset. Our findings highlight the negative impact of P450-based resistance on pyrethroid-only nets, further supporting that PBO nets, such as Olyset Plus, are a better solution in areas of P450-mediated resistance to pyrethroids.\n", + "\n", + "header: Impact of the Duplicated CYP6P9a and CYP6P9b P450 Genes on the Performance of Bed Nets\n", + "\n", + "The samples collected during the evaluation of Olyset and Olyset Plus in experimental huts were grouped in several categories: dead, alive, blood fed, and unfed; room and veranda. The _CYP6P9a_/b and _6.5 kb SV_ were genotyped in each group using the respective PCR assays as described [28,29,31]. This allowed the relative survival and feeding success of resistant and susceptible insects in the presence of both bed nets to be directly measured.\n", + "\n", + "header: 4.6.3 PCR Assay to Detect the 6.5 kb SV\n", + "\n", + "To easily identify the samples containing the 6.5 kb insertion, the recently designed PCR assay [28] was used to discriminate between mosquitoes with the 8.2 kb (resistant) and 1.7 kb (susceptible) _CYP6P9a_ and _CYP6P9b_ intergenic regions. Briefly, three primers were used: two (FG_5F: CTACCGTCAAAGTCCGGTAT and FG_3R: TTTCGAAAACATCCCTAAA) at regions flanking the insertion point and a third primer (FZ_INS5R: ATATGCCACGAAGGAAAGCAG) in the _6.5 kb_ insertion. One unit of KAPA Taq polymerase (Kapa Biosystems) in 1x buffer A, i.e., 25 mm of MgCl2, 25 mm of dNTPs, and 10 mm of each primer, was used to constitute a 15 mL PCR mix using the following conditions: an initial denaturation step of 3 min at 95 degC, followed by 35 cycles of 30 s at 94 degC, 30 s at 58 degC, and 60 s at 72 degC, with a final extension for 10 min at 72 degC. The amplicon was revealed on a 1.5% agarose gel stained with Midori Green Advance DNA Stain (Nippon genetics Europe GmbH) and revealed on a UV transilluminator.\n", + "\n", + "header: 3 Discussion\n", + "\n", + "The capacity to assess the impact of insecticide resistance on the effectiveness of insecticide-treated control tools is crucial in order to implement suitable insecticide resistance management (IRM) [32]. Evolution in the area of DNA-based resistance markers of P450-mediated resistance [28; 29] currently offers robust tools to screen pyrethroid resistance in field populations of the major malaria vectors such as _An. funestus_ and assess their impact on the effectiveness of LLINs. In this study, we use these markers to evaluate the extent to which pyrethroid resistance is impacting the efficacy of pyrethroid-only nets such as Olyset in comparison to PBO-based net such as Olyset Plus. This study also allowed to assess the interplay between P450 genes in the overall genetic variance to resistance and their combined impact on the efficacy of LLINs.\n", + "\n", + "PBO-Based Nets (Olyset Plus) Exhibit Greater Efficacy than Pyrethroid-Only Nets (Olyset) in the Context of P450-Based Resistance\n", + "\n", + "Olyset presented a moderate mortality compared to Olyset Plus (30.9% vs. 100%; \\(p\\) < 0.0001). The high mortality observed with PBO nets compared to pyrethroid-only nets is similar to what was observed in previous studies [33; 34; 35; 36]. The high mortality observed with PBO-based nets against the hybrid strain FUMOZ/FANG is due to the fact the mechanisms underlying the resistance in this population are driven by _CYP6P9a_ and _CYP6P9b_[37] which are inhibited by PBO [38]. These results demonstrate that PBO-based nets may be a more suitable solution in areas where resistance is mainly mediated by P450 genes.\n", + "\n", + "Figure 7: Combined impact of the triple resistance alleles (_CYP6P9a_/_CYP6P9b_/_6.5 kb SV_) on the efficacy of insecticide-treated nets. (**A**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances of being alive in the presence of Olyset Net. (**B**) Ability to survive exposure to Olyset net for the various combined genotypes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_. (**C**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances to bloodfed in the presence of Olyset net. (**D**) The triple RR/RR/SV+SV+ homozygous mosquitoes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_ exhibit a greater blood-feeding ability than other genotypes. Ns: non-significant; * (0.05); ** (0.01); *** (0.001).\n", + "\n", + "\n", + "The efficacy of nets observed in this study confirms the loss in efficacy of the pyrethroid-only nets against _Anopheles_ mosquitoes, as observed across the continent [39]. This loss of efficacy was observed in Mozambique [7,40], Malawi [41], Congo [42], and Cameroon [6,43]. Overall, similar to this study, it has been noticed that PBO-based nets demonstrate a better performance compared to pyrethroid-only nets [33,34]. The same trends were observed with pyrethroid type II with high mortality observed with PermaNet 3.0 compared to PermaNet 2.0 [28,29,31], suggesting that PBO-based nets with both type I or II can exhibit high performance against resistance sustained by P450s.\n", + "\n", + "P450 Resistance Can Reduce the Efficacy of Pyrethroid-Only Nets Significantly Better Than PBO-Based Nets\n", + "\n", + "When comparing the impact of _CYP6P9a/b_ on pyrethroid-only nets and PBO-based nets using samples from cone assays, we noticed that the impact of _CYP6P9a_ on pyrethroid-only nets was higher than with PBO-based nets (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. Olyset Plus, OR = 6.4; \\(p\\) < 0.001). The same trend was also observed with _CYP6P9b_ and the 6.5 kb SV. This can be explained by the fact that the addition of the PBO inhibits the cytochrome P450 enzymes, which is the main resistance mechanism in the strain used by the mosquitoes [44,45].\n", + "\n", + "On the other hand, Olyset nets have also shown reduced performance against _CYP6P9a_ and _CYP6P9b_-resistant mosquitoes. Strong association was observed between the resistant alleles and the increased ability of the mosquitoes to survive after exposure to these nets. Nevertheless, the impact of _CYP6P9a_ and _CYP6P9b_ seems to be more significant on PermaNet nets impregnated with deltamethrin [29,31], compared to Olyset nets impregnated with permethrin (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. PermaNet 2.0, OR = 239.0; \\(p\\) < 0.001 and Olyset Plus, OR = 6.4; \\(p\\) < 0.001 vs. PermaNet 3.0, OR = 81.0; \\(p\\) < 0.001) [29,31]. This significant impact on PermaNet could be associated with the fact that the hybrid strain is more resistant to type II pyrethroids, as shown by WHO bioassays, where the mosquitoes were more resistant to deltamethrin compared to permentrin (48.5% vs. 80.7%). With regards to the obtained odd ratios, a stronger association was observed between _CYP6P9a/CYP6P9b_ and the loss of efficacy of nets compared to what was observed with GST-based resistance through the L119F-_GSTe2_-resistant allele [43], in line with the greater role of P450 in resistance to pyrethroids in _An. funetus_, compared to that of GST. The 6.5 kb SV was shown to further exacerbate the loss of efficacy in the permethrin-only nets. The design of the simple PCR-based assay to genotype the _6.5 kb SV_ enabled us to assess the impact of such structural variation on the efficacy of insecticide-treated nets, including the pyrethroid-only and the PBO-synergist nets. A greater reduction in the efficacy of _6.5 kb SV_ was present on permethrin-only nets compared to PBO-based nets, which is similar to that observed with _CYP6P9a_ [31] and _CYP6P9b_ [29], in terms of the reduced mortality rate and blood-feeding inhibition. This pattern is also similar to that seen with deltamethrin-based nets (PermaNet 2.0 vs. PermaNet 3.0) [29,31]. Overall, the significantly greater loss of efficacy due to P450s observed with both type I (Olyset and PermaNet 2.0) and PBO-based nets (Olyset Plus and PermaNet 3.0) further supports the deployment of PBO-based nets to control P450-based metabolically resistant mosquito populations. The deployment of PBO-based nets should nevertheless also be monitored to regularly assess their efficacy since they too could be impacted by resistance, as shown by the fact that _CYP6P9a/b_-resistant mosquitoes could blood-feed significant better, even with Olyset Plus. This increased ability of resistant mosquitoes to blood-fed, even with PBO-based net, suggests that PBO-based nets are not immune to the impact of resistance, even if they remain significantly more effective than pyrethoid-only nets. The increased blood-feeding of P450-resistant mosquitoes when exposed to PBO-based nets may also lead to a higher malaria transmission, although this is mitigated by the high mortality observed for Olyset Plus in a experimental hut trial. Overall, evaluating the impact of P450-based resistance on the efficacy of Olyset vs. Olyset Plus further supports the results obtained in a cluster \n", + "randomized controlled trial with both nets in Tanzania showing greater effectiveness of Olyset Plus [46].\n", + "\n", + "header: 4.6.1 Genotyping of the CYP6P9a-R Marker Using PCR-RFLP\n", + "\n", + "DNA was extracted from various groups of mosquitoes (dead, alive, blood fed, and unfed; room and veranda) using the Livak protocol [49]. The PCR was carried out using 10 mM of each primer and 1 mL of gDNA as the template in 15 mL reaction containing 10x Kapa Taq buffer A, 25 mM of dNTPs, 25 mM of MgCl2, and 1 U of Kapa Taq (Kapa Biosystems, Boston, MA, USA). Amplification was carried out using thermocycler parameters: 95 degC for 5 min, 35 cycles of 94 degC for 30 s, 58 degC for 30 s, 72 degC for 45 s, and a final extension at 72 degC for 10 min. The following primers were used: RFLP6P9aF forward primer 5'-TCCCGAAATACAGCCTTTCAG-3 and RFLP6P9aR reverse primer 5'-ATTGGTCCATCGCTAGAAG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 450 bp. The digestion with Taq1a followed 0.2 mL of Taq1a, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product migrated on the 2% gel. Amplicons from resistant mosquitoes were cut into two bands with sizes of 350 bp and 100 bp, and the susceptible mosquitoes remained undigested with the band at 450 bp.\n", + "\n", + "header: 5 Conclusions\n", + "\n", + "This study reveals that insecticide resistance driven by _CYP6P9a/b_ and _6.5 kb SV_ can reduce the efficiency of Permethrin-based LLINs, such as Olyset, while PBO-based nets remain effective. However, the greater loss of efficacy observed in mosquitoes with multiple and complex resistance supports the need to introduce new products for vector control which is less reliant on pyrethroids. Meantime, PBO-based nets should be preferably deployed in areas of P450-based resistance.\n", + "\n", + "**Supplementary Materials:** The following supporting information can be downloaded at: [https://www.mdpi.com/article/10.3390/pathogens11060638/s1](https://www.mdpi.com/article/10.3390/pathogens11060638/s1), Table S1: Results of the performance of Olyset and Olyset Plus against _An. funestus_ females (crossing FUMOZ-FANG; F5) in experimental hut trial. Table S2: Correlation between _CYP6P9a and CYP6P9b_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S3: Correlation between the _6.5Kv SV_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S4: Correlation between genotypes of _CYP6P9a_, _CYP6P9b_ and _6.5 kb SV_ and mortality and blood-feeding after exposure to Olyset and Olyset Plus in experimental huts. Table S5: _CYP6P9a_ and _CYP6P9b_ acting together further increase the ability of _An. funestus_ to survive and blood feed against Olyset after experimental hut trial.\n", + "\n", + "**Author Contributions:** C.S.W. conceived and designed the study; L.M.J.M. and M.T. (Magellan Tchouakui) generated the lab crosses and performed the validation of the PCR; B.D.M. performed the experimental hut experiments with C.S.W. and genotyped the resistance makers with M.J.W. and M.T. (Micareme Tchoupo); B.D.M. and C.S.W. wrote the paper with assistance from M.T. (Magellan Tchouakui) and L.M.J.M. All authors have read and agreed to the published version of the manuscript.\n", + "\n", + "**Funding:** This research was funded in whole by the Welcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). For the purpose of open access, the authors applied a CC BY public copyright license to any author who accepted a manuscript version following this submission.\n", + "\n", + "**Institutional Review Board Statement:** NA.\n", + "\n", + "**Informed Consent Statement:** NA.\n", + "\n", + "**Data Availability Statement:** NA.\n", + "\n", + "**Acknowledgments:** A big thanks to Charles Wondji for his financial support through the Wellcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). I am also grateful to the Mibellon community.\n", + "\n", + "**Conflicts of Interest:** The authors declare that they have no competing interest.\n", + "\n", + "header: 2.3.1 Impact on Mosquito Mortality: 2.3.2 CYP6P9a Impacting the Blood-Feeding\n", + "\n", + "Homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed better than homozygote-susceptible mosquitoes (SS) (OR = 4.5; \\(p\\) < 0.01) when exposed to Olyset. Heterozygote mosquitoes (RS) were significantly worse at blood-feeding with Olyset compared to homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-1.7; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) fed heterozygotes (OR = 5.4; CI = 2.6-10.88; \\(p\\) < 0.001) significantly better (Table S4; Figure 5C). Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.3; CI = 1.3-4.1; \\(p\\) < 0.01) (Table S4). For Olyset Plus, homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed than homozygote-susceptible mosquitoes (RS) (OR = 6.3; \\(p\\) < 0.001) when exposed to Olyset Plus. The significant ability to blood-feed was observed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.0; CI = 1.1-3.5; \\(p\\) = 0.03) (Table S4).\n", + "\n", + "header: 1 Introduction\n", + "\n", + "Long-lasting insecticidal nets (LLINs) remain an important component of the malaria control strategies used to reduce mortality and morbidity due to this disease in Africa [1, 2]. Mostly insecticides belonging to the pyrethroid group, as well as more and more novel insecticides, are currently recommended for bed net impregnation [3, 4, 5]. In recent years, anopheles mosquitoes have increasingly been reported to show resistance against pyrethroids across Africa. This is the case for major vectors including _Anopheles funestus_[6, 7, 8, 9] and _Anopheles gambiae_[10, 11, 12, 13, 14]. This growing spread of resistance has led to a concern that LLINs may lose their efficacy. However, quantifying such loss of efficacy remains challenging without suitable metrics associated with resistance, highlighting the need to use robust genotype/phenotype analysis for this evaluation. At a time when national malaria control \n", + "programs across Africa are seeking to take evidence-based decisions on their choice of suitable nets to help improve malaria control, it is paramount to determine the extent to which existing resistance to pyrethroid really affects LLIN efficacy. This involves an understanding of the interaction between resistance mechanisms and mosquito responses to exposure to LLINs. Broadly speaking, pyrethroid resistance can be caused by alterations in the target site of the insecticide or enhanced enzymatic activities capable of metabolizing the insecticide before it reaches the target [15-17]. Target site resistance is well studied with mutations in the target of both pyrethroid and DDT insecticides, as well as the voltage-gated sodium channels which lead to knockdown resistance (_kdr_). The development of molecular assays more than twenty years ago made it possible to track this resistance mechanism using a simple PCR [18-21] or high throughput techniques, such as TaqMan assays [22]. It has also been possible to assess the impact of _kdr_ on control tools, notably in _An. gambiae_ where these markers are common [23-25], contrary to _An. funestus_, where it is still not detected [26]. The second best characterized cause of insecticide resistance is metabolic resistance, which is more complex to understand as it can involve the detoxification, sequestration, and transportation of insecticides or their conjugates [16,17,27]. Recent studies have focused on elucidating the genetic factors which cause the increased expression of detoxification genes associated with insecticide resistance in malaria vectors such as _An. funestus_, leading to the development of simple molecular assays used to detect metabolic resistance [28-31].\n", + "\n", + "The recent design of molecular assays for the duplicated _CYP6P9a/b_ and the associated _6.5 kb_ structural variant (SV), refs. [28,29,31] now provides a great opportunity to assess the impact of P450-based pyrethroid resistance on the efficacy of various LLINs, including pyrethroid-only (Olyset) and PBO (Olyset Plus) nets. This will provide evidence-based information on their effectiveness in the presence of a growing and escalading resistance to pyrethroids. Previous assessment of this impact on PermaNet nets made with type II pyrethroid deltamethrin has been performed [28,29,31], but this remains to be carried out for type I pyrethroid nets, such as the common permethrin-based Olyset nets.\n", + "\n", + "Here, using EHT, we show a significantly greater efficacy of the PBO-based net Olyset Plus compared to the pyrethroid-only Olyset net against pyrethroid-resistant _An. funestus_. Using the genotyping of DNA-based markers of P450 resistance, we reveal that _CYP6P9a/b_ P450-based pyrethroid resistance induces a significant loss of efficacy for pyrethroid-only net Olyset against _An. funestus_. A reduced efficacy was also detected for PBO-based net Olyset Plus, but at a lower extent than for Olyset net, revealing that PBO nets are more suitable to tackle such P450-based resistance.\n", + "\n", + "header: 2.1.1. Quality Control and Performance of the Nets against the Hybrid Strain: 2.1.2 Performance of Nets against the Hybrid Strain Using Experimental Hut\n", + "\n", + "A total number of 578 mosquitoes from the hybrid strain were released and recaptured on a period of one week. In total, 141 samples were released in the control hut, 224 in the hut were treated with Olyset, and 213 in the hut were treated with Olyset Plus.\n", + "\n", + "**Mortality**: Analysis of mortality rates revealed very high mortality of the hybrid FUMOZ-FANG strain against the PBO-based Olyset Plus net (99.1%). In contrast, lower mortality was observed for the pyrethroid-only Olyset net (56.7%). Very low mortality was observed in the untreated control net (9.9%) (Figure 1D; Table S1).\n", + "\n", + "**Blood-feeding**: The blood-feeding rate did not significantly differ when comparing the control (7.8%) to Olyset (11.6% \\(p>0.05\\)) and Olyset Plus (5.6%; \\(p>0.05\\)). However, the blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)) (Figure 1D; Table S1).\n", + "\n", + "Figure 1: Susceptibility profile of the hybrid FUMOZ-FANG strain to pyrethroids. (**A**) Net quality assessment with recorded mortalities after cone assays with Kisumu, the _An. gambiae_-susceptible lab strain, and the _An. funestus_ FUMOZ-FANG strain. (**B**) Susceptibility profile of the hybrid FUMOZ-FANG strain to type II (deltamethrin) pyrethroids and propoxur with recorded mortalities following 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**C**) Susceptibility profile of the hybrid FUMOZ-FANG strain to deltamethrin (type II pyrethroids) and permethrin (type I pyrethroids) with recorded mortalities following 30 and 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**D**) Proportion of mortality, blood-feeding, and exophily rate for Olyset and Olyset Plus against _An. funestus_ (crossing the FUMOZ-FANG strain (F5)). Ns = \\(p>0.05\\); * = \\(p\\leq 0.05\\); ** = \\(p\\leq 0.01\\); *** = \\(p\\leq 0.001\\).\n", + "\n", + "\n", + "\n", + "\n", + "**Exophily**: The exophily rate in the hut with Olyset net (23.7%) was significantly higher than that in the control hut (13.5%) (_p_ = 0.02), as well as than for Olyset Plus (7.5%; \\(p\\) < 0.001). No significant difference was observed between Olyset Plus and the control net (_p_ = 0.3) (Figure 1D; Table S1).\n", + "\n", + "Validating the Role of CYP6P9a/b and 6.5 kb SV in Pvrethroid Resistance in the Hybrid FUMOZ-FANG Strains before the Experimental Hut Trials\n", + "\n", + "header: Results\n", + "\n", + "All the nets used in the study were first exposed to the susceptible lab strain Kisumu for quality control. The mortality for Olyset and Olyset Plus was 100% (Figure 1A). The _An. funestus_ hybrid strain exposed to bed nets using WHO cone assays exhibited mortality rates of 30.1 \\(\\pm\\) 11.5% for Olyset and 100 \\(\\pm\\) 0% for Olyset Plus, suggesting a greater efficacy of PBO synergist nets compared to pyrethroid-only nets.\n", + "\n", + "**Susceptibility profiles of the FUMOZ-FANG:** The bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to deltamethrin with mortality of 43.7 \\(\\pm\\) 5.9%, and was resistant to propoxur with mortality of 67.3 \\(\\pm\\) 6.6% (Figure 1B). The second set of bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to permethrin with mortality of 43.7 \\(\\pm\\) 1.6% and 39.3 \\(\\pm\\) 1.6%, respectively, for 90 min and 30 min. Resistance was also observed with deltamethrin with a mortality of 86.4 \\(\\pm\\) 3.1% and 42.3 \\(\\pm\\) 2.5%, respectively, for 90 min and 30 min (Figure 1C).\n", + "\n", + "header: Table 1: Description of the long-lasting insecticidal nets used.\n", + "footer: None\n", + "columns: ['Treatment Arm', 'Description', 'Manufacturer']\n", + "\n", + "{\"0\":{\"Treatment Arm\":\"Untreated\",\"Description\":\"100% polyester with no insecticide\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"4\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"5\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"}}\n", + "\n", + "header: 2.4.1 The Impact of CYP6P9b on Mortality: 2.4.2 CYP6P9b Impacting the Blood-Feeding\n", + "\n", + "A strong association was observed between _CYP6P9b_ genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could more successfully blood-fed when compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 4.1-24.9; \\(p\\) < 0.001) (Table S4; Figure 5F). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset was not different to that of homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-2.2; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 11.1; CI = 5.3-23.03: \\(p\\) < 0.001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood fed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.7; CI = 2.5-8.1; \\(p\\) < 0.01) (Table S4).\n", + "\n", + "header: 2.2.2 Validating the Role of CYP6P9b_R_ Using Sample from WHO Tube Assays\n", + "\n", + "To confirm the ability of the _CYP6P9b_R_ allele to predict pyrethroid resistance phenotype in the hybrid strain FUMOZ-FANG, the F5 samples were genotyped. This revealed that those that stayed alive after exposure to permethrin for 90 minutes are mainly homozygote\n", + "\n", + "Figure 2: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (**A**) Tube assay _CYP6P9a_ and mortality. Role of _CYP6P9a_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9a_ genotypes according to resistance phenotypes. (**B**) Tube assay _CYP6P9b_ and mortality. Role of _CYP6P9b_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9b_ genotypes according to resistance phenotypes. (**C**) Cone assay _CYP6P9a_ and mortality. Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: \\(p\\) < 0.001). (**D**) Cone assay _CYP6P9a_ and mortality allele. Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the _CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**E**) Cone assay _CYP6P9b_ and mortality. Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset using the cone test, showing strong association (RR vs. SS: \\(p\\) < 0.001).\n", + "\n", + "\n", + "resistant (20.8%) and heterozygotes (75%), with only two being homozygote-susceptible. Among the 47 mosquitoes found dead after 30 min exposure to permethrin (highly susceptible), 97.87% were found to be homozygote-susceptible, and one remaining was a heterozygote (Figure 2B). A strong association was perceived between permethrin resistance and the _CYP6P9b_ genotypes when comparing RR vs. SS (OR = infinity; \\(p\\) < 0.0001) and RS vs. SS (OR = 715; \\(p\\) < 0.0001).\n", + "\n", + "2.3 Validation of the Role of CYP6P9a and CYP6P9b in Conferring Resistance Using Samples from Cone Assays\n", + "\n", + "Using dead and alive mosquitoes obtained after cone assays, _CYP6P9a_ homozygous-resistant mosquitoes (RR) and heterozygous (RS) could survive significantly better following exposure to Olyset and Olyset Plus than homozygote-susceptible mosquitoes (Table S2). Olyset shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 35.1; \\(p\\) < 0.0001) and RS vs. SS (OR = 34.6; \\(p\\) < 0.0001) for _CYP6P9a_ (Figure 2C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 7.7; \\(p\\) < 0.05) (Table S2; Figure 2D). Concerning _CYP6P9b_, homozygous-resistant mosquitoes (RR) and heterozygous (RS) could also survive significantly better following survive exposure to Olyset net. A strong association was noticed between the gene and the ability to survive when comparing RR to SS (OR = 32.4; \\(p\\) < 0.0001) and RS vs. SS (OR = 97.3; \\(p\\) < 0.0001) (Table S2; Figure 2E).\n", + "\n", + "Olyset Plus shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 6.4; \\(p\\) < 0.001) and RS vs. SS (OR = 7.2; \\(p\\) < 0.001) for _CYP6P9a_ (Table S2; Figure 3A). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.0; \\(p\\) = 0.05) (Table S2; Figure 3B). Concerning the _CYP6P9b_, Olyset Plus equally shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 9.7; \\(p\\) < 0.001) and RS vs. SS (OR = 17.9; \\(p\\) < 0.001) for _CYP6P9b_ (Table S2; Figure 3C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.2; \\(p\\) = 0.01) (Table S2).\n", + "\n", + "Figure 3: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset Plus nets after cone assays. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (_p_ < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset Plus using the cone test, showing the significant ability of the mosquitoes carrying the RR genotype to survive compared to SS (_p_ < 0.001).\n", + "\n", + "header: Impact of CYP6P9a on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", + "\n", + "Genotyping of the _CYP6P9a_ marker allowed us to assess the impact of P450-based metabolic resistance on the loss of efficacy of Olyset, but not for Olyset Plus, since most of the mosquitoes released in Olyset Plus huts died. To avoid confounding effects from blood-feeding, or net entry or exophily status, the distribution of the _CYP6P9a_ genotypes was assessed firstly only among unfed mosquitoes collected in the room. This revealed a highly significant difference in the frequency of the three genotypes between the dead and alive mosquitoes (chi-square = 28.8; \\(p\\) < 0.0001) (Figure 5). Analysis of the correlation between each genotype and mortality revealed that _CYP6P9a_ homozygous-resistant mosquitoes (RR) show an increased ability to survive exposure to the Olyset when compared to homozygote-susceptible mosquitoes (SS) with (OR = 5.0; CI = 2.01-12.4; \\(p\\) = 0.001). The strength of this association was further shown by the significant ability to survive exposure when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.04; CI = 1.1-3.6; \\(p\\) < 0.05). However, heterozygote mosquitoes (RS) did not survive exposure to Olyset better than homozygote-susceptible mosquitoes (SS) (OR = 1.8; CI = 0.8-3.9; \\(p\\) > 0.05) (Figure 5A; Table S4; Figure 5B).\n", + "\n", + "Figure 5: Impact of both _CYP6P9a_ and _CYP6P9b_ on the efficacy of bed nets in the experimental hut trial. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: \\(p\\) < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Association between _CYP6P9a_ and ability to blood-feed when exposed to Olyset. The _CYP6P9a_–R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (**D**) Association between _CYP6P9b_ and ability to survive exposure to Olyset in the experimental hut trial. (**E**) Allelic frequency of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the _CYP6P9b_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9b_S_. (**F**) Association between _CYP6P9b_ gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The _CYP6P9b_-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\n", + "\n", + "header: Study Site: Laboratory Strain: FUMOZ/FANG Crossing\n", + "\n", + "Previous studies revealed that the duplicated P450 _CYP6P9a/b_ and intergenic _6.5 kb sv_ is mainly found in mosquitoes from southern Africa and absent from mosquitoes collected elsewhere in Africa [31,45]. Moreover, these resistance markers have already been selected (close to fixation) in the southern African _An. funestus_ populations, preventing free-flying mosquitoes from being used in this region in order to assess their impact on LLIN efficacy, as all mosquitoes are nearly homozygote-resistant now [7]. Therefore, to evaluate the impact of these cytochrome P450, we opted to use a hybrid strain generated from two _An. funestus_ laboratory colonies: the FANG colony, a completely insecticide-susceptible colony originating from Angola, and the FUMOZ colony derived from southern Mozambique, which is highly resistant to pyrethroids and carbamates [48]. During rearing, the pupae of each strain were kept individually in Falcon tubes (15 mL), locked with a piece of cotton for individual emergence. After the emergence of pupae in the Falcon tube, the males and the females were separated. A reciprocal crossing was performed using 50 males and 50 females from the other strain. After the initial F1 generation obtained from the reciprocal crosses of the 50 males and 50 females of both strains, the hybrid strain was reared to F5 and F6 generation, presenting good segregation in all the three genotypes. The hybrid strain was then used for the release recapture experiment in the huts.\n", + "\n", + "header: Susceptibility Profile of the Hybrid FUMOZ/FANG Strain to Pyrethroids\n", + "\n", + "Before assessing the impact of _CYP6P9a/b_ on the effectiveness of LLINs using the experimental huts, the resistance status of the hybrid FUMOZ-FANG was evaluated in laboratory conditions via WHO tube tests and cone tests, and the role of _CYP6P9a/b_ in terms of resistance was assessed.\n", + "\n", + "**Bioassays:** WHO bioassays were conducted with 0.05% deltamethrin and 0.1% propoxur. To generate highly resistant and highly susceptible mosquitoes, WHO bioassays were conducted with 0.75% permethrin and 0.05% deltamethrin for 30 min and 90 min. For each insecticide, four replicates of 25 mosquitoes from the hybrid strains were used. Alive mosquitoes after 90 min of exposure and dead mosquitoes after 30 min of exposure were then genotyped to establish the association between the _CYP6P9a/b_ and _6.5 kb SV_ resistance alleles and the ability of mosquitoes to survive to these insecticides.\n", + "\n", + "**Cone assays:** Cone test bioassays were conducted with a fragment of Olyset and Olyset Plus using the resistant hybrid strains FUMOZ-FANG. Five batches of 10 unfed females, aged 2-5 days old, were exposed to each bed net for three minutes. They were then transferred into the holding paper cup containers. The knockdown was checked after 60 min and the mortality after 24 h. Alive and dead mosquitoes obtained after exposure were then genotyped. The association between the _CYP6P9a/b_-resistant allele and the ability of mosquitoes to survive to these insecticides was also established.\n", + "\n", + "header: Resistance Escalation with Multiple Resistance Alleles Present a Greater Risk of Control Failure\n", + "\n", + "This study confirms the findings by [28], suggesting that the _6.5 kb SV_ acts as an enhancer for nearby duplicated P450 genes _CYP6P9a_ and _CYP6P9b_, leading to their increased overexpression, thus creating greater resistance. This _6.5 kb SV_ is strongly associated with an aggravation of pyrethroid resistance, which reduces the efficacy of pyrethroid-only nets. The fixation of this _6.5 kb SV_, besides the resistant alleles of _CYP6P9a_ and _CYP6P9b_, could explain the resistance escalation currently observed against the _An. funestus_ population from the southern part of Africa reducing the efficacy of bed nets [7,41].\n", + "\n", + "This study revealed that multiple and complex resistance combining elevated expression (_CYP6P9a/b_) [45], as well as the selection of cis-regulatory motifs for transcription binding sites (CnCC/MAF) [31], coupled with structural variations such as the _6.5 kb_, which is known to be enriched with several regulatory elements [28], can lead to a greater reduction in bed net efficacy. The fact that triple homozygote-resistant mosquitoes could survive better against exposure to pyrethroid-only nets compared to all genotypes reveals the greater risk that an unabated increase in resistance can likely lead to the failure of insecticide-based interventions, as predicted by the WHO global plan for insecticide resistance management. This calls for novel nets which do not rely on pyrethroids in the future. However, the impact of these resistance alleles on the efficacy of LLINs in natural populations remains to be established, as we only performed a test with a hybrid strain from two laboratory strains. This work must be urgently carried out, particularly as the molecular tools are increasingly available.\n", + "\n", + "header: 2.5.1 The Impact of 6.5 kb SV on Mortality: 2.5.2 The Impact of 6.5. kb SV on Blood-Feeding\n", + "\n", + "A strong association was observed between _6.5 \\(kb\\)_ SV genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could blood-feed better compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 3.2-31.4; \\(p\\)\\(<\\) 0.0001) (Table S4; Figure 6C). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset differs to that of homozygote-susceptible mosquitoes (SS) but not significantly (OR = 1.7; CI = 0.5-5.4; \\(p\\) = 0.4) (Table S4). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 10.2; CI = 4.9-21.11: \\(p\\)\\(<\\) 0.0001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.2; CI = 2.3-7.9; \\(p\\)\\(<\\) 0.0001) (Table S5; Figure 6D). A similar trend was observed against Olyset Plus nets (Table S5; Figure 6E,F).\n", + "\n", + "Combined Impact of CYP6P9a and CYP6Pb on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", + "\n", + "As _CYP6P9b_ genotypes were shown to be independent from those of _CYP6P9a_[28], we also assessed how combinations of genotypes at both genes impact the efficacy of Olyset for mortality and blood-feeding. Analysis of the impact of combined genotypes on mortality with Olyset confirmed the independent segregation of genotypes at both genes with several combinations of genotypes observed including RR/RR, RR/RS, RS/RS, RS/SS and SS/SS (Table S5). A comparison of the distribution of both sets of genotypes revealed that double homozygote-resistant (RR/RR) mosquitoes at both genes had a far greater ability to survive exposure to Olyset than most of the other combinations (Table S4) particularly when compared to double susceptible (SS/SS) (OR = 8.6; CI = 1.8-39.1; \\(p\\)\\(<\\) 0.01) (Table S5). A significantly increased survival is also observed in RR/RR when compared to other combinations although with a lower odds ratio, such as against RR/SS (OR = 2; \\(p\\)\\(<\\) 0.01) (Table S5).\n", + "\n", + "Analysis of the combined genotype distribution for blood-feeding also revealed a significantly increased ability to blood-feed for double homozygote-resistant mosquitoes when exposed to Olyset with the highest significance against double homozygote-susceptible mosquitoes (OR = 9.3; \\(p\\)\\(<\\) 0.001) (Table S5).\n", + "\n", + "Combined Impact of the Triple Resistance Alleles CYP6P9a/CYP6P9b/6.5 kb SV on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", + "\n", + "Experimental hut trials showed that triple RR/RR/SV\\({}^{+}\\)SV\\({}^{+}\\) homozygotes were more likely to survive exposure to Olyset compared to any other combined genotypes except RR/RS/RS (Figure 7A). RR/RR/SV+SV+ survived more than SS/SS/SV\\(-\\)SV\\(-\\) (OR = 8.5; CI: 2.53-28.46; \\(p\\)\\(=\\) 0.0005) and RS/RS/SV+SV\\(-\\) (OR = 3.57; CI = 1.82- 7.02; \\(p\\)\\(=\\) 0.0002). There was no significant difference between the RR/RR/SV+SV+ and RR/RR/SV+SV\\(-\\) genotypes (OR = 1; CI = 0.16-7.02; \\(p\\)\\(=\\) 1.0), and both had a similar trend in terms of survival with the same odds ratio (Figure 7B). In addition to the ability to survive exposure to the net, RR/RR/SV+SV+ also could blood-feed better than SS/SS/SV\\(-\\) SV\\(-\\) (OR = 7.0; CI: 2.38-20.52; \\(p\\)\\(=\\) 0.0004) and the other combinations in the presence of Olyset (Figure 7C,D).\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: 2.2.1 Role of CYP6P9a_R Using WHO Tube Assay Samples\n", + "\n", + "Using the hybrid FUMOZ-FANG strains, the role of the _CYP6P9a_R_ allele in the observed pyrethroid resistance was confirmed. The odds ratio of surviving exposure to permethrin when homozygous for the resistant _CYP6P9a_R_ allele (RR) was high at 693 (CI 88-5421; \\(p\\) < 0.0001) compared to the homozygous-susceptible mosquitoes (SS) (Figure 2A). The OR was 131 (CI 27-978; \\(p\\) < 0.0001) when comparing RR to RS, indicating the increasing resistance conferred by _CYP6P9a_.\n", + "\n", + "header: 4.6.2 Genotyping of the CYP6P9b-R Maker Using PCR-RFLP\n", + "\n", + "The PCR was carried out, as described for CYP6P9a. The following primers were used: 6p9brflp_0.5F 5'-CCCCCACAGGTGTAACTCTGAA-3' and 6p9brflp_0.5R 5'-TTATCCGTAAACTCAATAGCGATG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 550 bp. The digestion with the _Tsp_451 restriction enzyme followed 0.2 mL of Tsp451, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product was migrated on the 2% gel. Amplicons from susceptible mosquitoes were cut into two bands with sizes of 400 bp and 150 bp, and the resistant mosquitoes remained undigested with the band at 550 bp.\n", + "\n", + "header: Impact of the Duplicated CYP6P9a and CYP6P9b P450 Genes on the Performance of Bed Nets\n", + "\n", + "The samples collected during the evaluation of Olyset and Olyset Plus in experimental huts were grouped in several categories: dead, alive, blood fed, and unfed; room and veranda. The _CYP6P9a_/b and _6.5 kb SV_ were genotyped in each group using the respective PCR assays as described [28,29,31]. This allowed the relative survival and feeding success of resistant and susceptible insects in the presence of both bed nets to be directly measured.\n", + "\n", + "header: Abstract\n", + "\n", + "Experimental Hut Trials Reveal That CYP6P9a/b P450 Alleles Are Reducing the Efficacy of Pyrethroid-Only Olyset Net against the Malaria Vector _Anopheles funestus_ but PBO-Based Olyset Plus Net Remains Effective\n", + "\n", + "Benjamin D. Menze, Leon M. J. Mugenzi, Magellan Tchouakui, Murielle J. Wondji,\n", + "\n", + "1Vector Biology Department, Liverpool School of Tropical Medicine, Pembroke Place, Liverpool L3 5QA, UK; murielle.wondji@ilstmed.ac.uk\n", + "2Medical Entomology Department, Centre for Research in Infectious Diseases (CRID), Yaounde 13591, Cameroon; leon.mugenzi@crid-cam.net (L.M.J.M.); magellan.tchouakui@crid-cam.net (M.T.); micareme.tchouop@crid-cam.net (M.T.)\n", + "* Correspondence: benjamin.menze@crid-cam.net (B.D.M.); charles.wondji@ilstmed.ac.uk (C.S.W.)\n", + "\n", + "\n", + "Malaria remains a major public health concern in Africa. Metabolic resistance in major malaria vectors such as _An. funestus_ is jeopardizing the effectiveness of long-lasting insecticidal nets (LLINs) to control malaria. Here, we used experimental hut trials (EHTs) to investigate the impact of cytochrome P450-based resistance on the efficacy of PBO-based net (Olyset Plus) compared to a permethrin-only net (Olyset), revealing a greater loss of efficacy for the latter. EHT performed with progenies of F5 crossing between the _An. funestus_ pyrethroid-resistant strain FUMOZ and the pyrethroid-susceptible strain FANG revealed that PBO-based nets (Olyset Plus) induced a significantly higher mortality rate (99.1%) than pyrethroid-only nets (Olyset) (56.7%) (\\(p<0.0001\\)). The blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)). Genotyping the _CYP6P9a/b_ and the intergenic _6.5 kb structural variant_ (SV) resistance alleles showed that, for both nets, homozygote-resistant mosquitoes have a greater ability to blood-feed than the susceptible mosquitoes. Homozygote-resistant genotypes significantly survived more with Olyset after cone assays (e.g., _CYP6P9a_ OR = 34.6; \\(p<0.0001\\)) than homozygote-susceptible mosquitoes. A similar but lower correlation was seen with Olyset Plus (OR = 6.4; \\(p<0.001\\)). Genotyping EHT samples confirmed that _CYP6P9a/b_ and _6.5 kb_SV_ homozygote-resistant mosquitoes survive and blood-feed significantly better than homozygote-susceptible mosquitoes when exposed to Olyset. Our findings highlight the negative impact of P450-based resistance on pyrethroid-only nets, further supporting that PBO nets, such as Olyset Plus, are a better solution in areas of P450-mediated resistance to pyrethroids.\n", + "\n", + "header: 4.6.1 Genotyping of the CYP6P9a-R Marker Using PCR-RFLP\n", + "\n", + "DNA was extracted from various groups of mosquitoes (dead, alive, blood fed, and unfed; room and veranda) using the Livak protocol [49]. The PCR was carried out using 10 mM of each primer and 1 mL of gDNA as the template in 15 mL reaction containing 10x Kapa Taq buffer A, 25 mM of dNTPs, 25 mM of MgCl2, and 1 U of Kapa Taq (Kapa Biosystems, Boston, MA, USA). Amplification was carried out using thermocycler parameters: 95 degC for 5 min, 35 cycles of 94 degC for 30 s, 58 degC for 30 s, 72 degC for 45 s, and a final extension at 72 degC for 10 min. The following primers were used: RFLP6P9aF forward primer 5'-TCCCGAAATACAGCCTTTCAG-3 and RFLP6P9aR reverse primer 5'-ATTGGTCCATCGCTAGAAG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 450 bp. The digestion with Taq1a followed 0.2 mL of Taq1a, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product migrated on the 2% gel. Amplicons from resistant mosquitoes were cut into two bands with sizes of 350 bp and 100 bp, and the susceptible mosquitoes remained undigested with the band at 450 bp.\n", + "\n", + "header: 4.6.3 PCR Assay to Detect the 6.5 kb SV\n", + "\n", + "To easily identify the samples containing the 6.5 kb insertion, the recently designed PCR assay [28] was used to discriminate between mosquitoes with the 8.2 kb (resistant) and 1.7 kb (susceptible) _CYP6P9a_ and _CYP6P9b_ intergenic regions. Briefly, three primers were used: two (FG_5F: CTACCGTCAAAGTCCGGTAT and FG_3R: TTTCGAAAACATCCCTAAA) at regions flanking the insertion point and a third primer (FZ_INS5R: ATATGCCACGAAGGAAAGCAG) in the _6.5 kb_ insertion. One unit of KAPA Taq polymerase (Kapa Biosystems) in 1x buffer A, i.e., 25 mm of MgCl2, 25 mm of dNTPs, and 10 mm of each primer, was used to constitute a 15 mL PCR mix using the following conditions: an initial denaturation step of 3 min at 95 degC, followed by 35 cycles of 30 s at 94 degC, 30 s at 58 degC, and 60 s at 72 degC, with a final extension for 10 min at 72 degC. The amplicon was revealed on a 1.5% agarose gel stained with Midori Green Advance DNA Stain (Nippon genetics Europe GmbH) and revealed on a UV transilluminator.\n", + "\n", + "header: 3 Discussion\n", + "\n", + "The capacity to assess the impact of insecticide resistance on the effectiveness of insecticide-treated control tools is crucial in order to implement suitable insecticide resistance management (IRM) [32]. Evolution in the area of DNA-based resistance markers of P450-mediated resistance [28; 29] currently offers robust tools to screen pyrethroid resistance in field populations of the major malaria vectors such as _An. funestus_ and assess their impact on the effectiveness of LLINs. In this study, we use these markers to evaluate the extent to which pyrethroid resistance is impacting the efficacy of pyrethroid-only nets such as Olyset in comparison to PBO-based net such as Olyset Plus. This study also allowed to assess the interplay between P450 genes in the overall genetic variance to resistance and their combined impact on the efficacy of LLINs.\n", + "\n", + "PBO-Based Nets (Olyset Plus) Exhibit Greater Efficacy than Pyrethroid-Only Nets (Olyset) in the Context of P450-Based Resistance\n", + "\n", + "Olyset presented a moderate mortality compared to Olyset Plus (30.9% vs. 100%; \\(p\\) < 0.0001). The high mortality observed with PBO nets compared to pyrethroid-only nets is similar to what was observed in previous studies [33; 34; 35; 36]. The high mortality observed with PBO-based nets against the hybrid strain FUMOZ/FANG is due to the fact the mechanisms underlying the resistance in this population are driven by _CYP6P9a_ and _CYP6P9b_[37] which are inhibited by PBO [38]. These results demonstrate that PBO-based nets may be a more suitable solution in areas where resistance is mainly mediated by P450 genes.\n", + "\n", + "Figure 7: Combined impact of the triple resistance alleles (_CYP6P9a_/_CYP6P9b_/_6.5 kb SV_) on the efficacy of insecticide-treated nets. (**A**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances of being alive in the presence of Olyset Net. (**B**) Ability to survive exposure to Olyset net for the various combined genotypes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_. (**C**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances to bloodfed in the presence of Olyset net. (**D**) The triple RR/RR/SV+SV+ homozygous mosquitoes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_ exhibit a greater blood-feeding ability than other genotypes. Ns: non-significant; * (0.05); ** (0.01); *** (0.001).\n", + "\n", + "\n", + "The efficacy of nets observed in this study confirms the loss in efficacy of the pyrethroid-only nets against _Anopheles_ mosquitoes, as observed across the continent [39]. This loss of efficacy was observed in Mozambique [7,40], Malawi [41], Congo [42], and Cameroon [6,43]. Overall, similar to this study, it has been noticed that PBO-based nets demonstrate a better performance compared to pyrethroid-only nets [33,34]. The same trends were observed with pyrethroid type II with high mortality observed with PermaNet 3.0 compared to PermaNet 2.0 [28,29,31], suggesting that PBO-based nets with both type I or II can exhibit high performance against resistance sustained by P450s.\n", + "\n", + "P450 Resistance Can Reduce the Efficacy of Pyrethroid-Only Nets Significantly Better Than PBO-Based Nets\n", + "\n", + "When comparing the impact of _CYP6P9a/b_ on pyrethroid-only nets and PBO-based nets using samples from cone assays, we noticed that the impact of _CYP6P9a_ on pyrethroid-only nets was higher than with PBO-based nets (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. Olyset Plus, OR = 6.4; \\(p\\) < 0.001). The same trend was also observed with _CYP6P9b_ and the 6.5 kb SV. This can be explained by the fact that the addition of the PBO inhibits the cytochrome P450 enzymes, which is the main resistance mechanism in the strain used by the mosquitoes [44,45].\n", + "\n", + "On the other hand, Olyset nets have also shown reduced performance against _CYP6P9a_ and _CYP6P9b_-resistant mosquitoes. Strong association was observed between the resistant alleles and the increased ability of the mosquitoes to survive after exposure to these nets. Nevertheless, the impact of _CYP6P9a_ and _CYP6P9b_ seems to be more significant on PermaNet nets impregnated with deltamethrin [29,31], compared to Olyset nets impregnated with permethrin (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. PermaNet 2.0, OR = 239.0; \\(p\\) < 0.001 and Olyset Plus, OR = 6.4; \\(p\\) < 0.001 vs. PermaNet 3.0, OR = 81.0; \\(p\\) < 0.001) [29,31]. This significant impact on PermaNet could be associated with the fact that the hybrid strain is more resistant to type II pyrethroids, as shown by WHO bioassays, where the mosquitoes were more resistant to deltamethrin compared to permentrin (48.5% vs. 80.7%). With regards to the obtained odd ratios, a stronger association was observed between _CYP6P9a/CYP6P9b_ and the loss of efficacy of nets compared to what was observed with GST-based resistance through the L119F-_GSTe2_-resistant allele [43], in line with the greater role of P450 in resistance to pyrethroids in _An. funetus_, compared to that of GST. The 6.5 kb SV was shown to further exacerbate the loss of efficacy in the permethrin-only nets. The design of the simple PCR-based assay to genotype the _6.5 kb SV_ enabled us to assess the impact of such structural variation on the efficacy of insecticide-treated nets, including the pyrethroid-only and the PBO-synergist nets. A greater reduction in the efficacy of _6.5 kb SV_ was present on permethrin-only nets compared to PBO-based nets, which is similar to that observed with _CYP6P9a_ [31] and _CYP6P9b_ [29], in terms of the reduced mortality rate and blood-feeding inhibition. This pattern is also similar to that seen with deltamethrin-based nets (PermaNet 2.0 vs. PermaNet 3.0) [29,31]. Overall, the significantly greater loss of efficacy due to P450s observed with both type I (Olyset and PermaNet 2.0) and PBO-based nets (Olyset Plus and PermaNet 3.0) further supports the deployment of PBO-based nets to control P450-based metabolically resistant mosquito populations. The deployment of PBO-based nets should nevertheless also be monitored to regularly assess their efficacy since they too could be impacted by resistance, as shown by the fact that _CYP6P9a/b_-resistant mosquitoes could blood-feed significant better, even with Olyset Plus. This increased ability of resistant mosquitoes to blood-fed, even with PBO-based net, suggests that PBO-based nets are not immune to the impact of resistance, even if they remain significantly more effective than pyrethoid-only nets. The increased blood-feeding of P450-resistant mosquitoes when exposed to PBO-based nets may also lead to a higher malaria transmission, although this is mitigated by the high mortality observed for Olyset Plus in a experimental hut trial. Overall, evaluating the impact of P450-based resistance on the efficacy of Olyset vs. Olyset Plus further supports the results obtained in a cluster \n", + "randomized controlled trial with both nets in Tanzania showing greater effectiveness of Olyset Plus [46].\n", + "\n", + "header: Results\n", + "\n", + "All the nets used in the study were first exposed to the susceptible lab strain Kisumu for quality control. The mortality for Olyset and Olyset Plus was 100% (Figure 1A). The _An. funestus_ hybrid strain exposed to bed nets using WHO cone assays exhibited mortality rates of 30.1 \\(\\pm\\) 11.5% for Olyset and 100 \\(\\pm\\) 0% for Olyset Plus, suggesting a greater efficacy of PBO synergist nets compared to pyrethroid-only nets.\n", + "\n", + "**Susceptibility profiles of the FUMOZ-FANG:** The bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to deltamethrin with mortality of 43.7 \\(\\pm\\) 5.9%, and was resistant to propoxur with mortality of 67.3 \\(\\pm\\) 6.6% (Figure 1B). The second set of bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to permethrin with mortality of 43.7 \\(\\pm\\) 1.6% and 39.3 \\(\\pm\\) 1.6%, respectively, for 90 min and 30 min. Resistance was also observed with deltamethrin with a mortality of 86.4 \\(\\pm\\) 3.1% and 42.3 \\(\\pm\\) 2.5%, respectively, for 90 min and 30 min (Figure 1C).\n", + "\n", + "header: 2.1.1. Quality Control and Performance of the Nets against the Hybrid Strain: 2.1.2 Performance of Nets against the Hybrid Strain Using Experimental Hut\n", + "\n", + "A total number of 578 mosquitoes from the hybrid strain were released and recaptured on a period of one week. In total, 141 samples were released in the control hut, 224 in the hut were treated with Olyset, and 213 in the hut were treated with Olyset Plus.\n", + "\n", + "**Mortality**: Analysis of mortality rates revealed very high mortality of the hybrid FUMOZ-FANG strain against the PBO-based Olyset Plus net (99.1%). In contrast, lower mortality was observed for the pyrethroid-only Olyset net (56.7%). Very low mortality was observed in the untreated control net (9.9%) (Figure 1D; Table S1).\n", + "\n", + "**Blood-feeding**: The blood-feeding rate did not significantly differ when comparing the control (7.8%) to Olyset (11.6% \\(p>0.05\\)) and Olyset Plus (5.6%; \\(p>0.05\\)). However, the blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)) (Figure 1D; Table S1).\n", + "\n", + "Figure 1: Susceptibility profile of the hybrid FUMOZ-FANG strain to pyrethroids. (**A**) Net quality assessment with recorded mortalities after cone assays with Kisumu, the _An. gambiae_-susceptible lab strain, and the _An. funestus_ FUMOZ-FANG strain. (**B**) Susceptibility profile of the hybrid FUMOZ-FANG strain to type II (deltamethrin) pyrethroids and propoxur with recorded mortalities following 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**C**) Susceptibility profile of the hybrid FUMOZ-FANG strain to deltamethrin (type II pyrethroids) and permethrin (type I pyrethroids) with recorded mortalities following 30 and 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**D**) Proportion of mortality, blood-feeding, and exophily rate for Olyset and Olyset Plus against _An. funestus_ (crossing the FUMOZ-FANG strain (F5)). Ns = \\(p>0.05\\); * = \\(p\\leq 0.05\\); ** = \\(p\\leq 0.01\\); *** = \\(p\\leq 0.001\\).\n", + "\n", + "\n", + "\n", + "\n", + "**Exophily**: The exophily rate in the hut with Olyset net (23.7%) was significantly higher than that in the control hut (13.5%) (_p_ = 0.02), as well as than for Olyset Plus (7.5%; \\(p\\) < 0.001). No significant difference was observed between Olyset Plus and the control net (_p_ = 0.3) (Figure 1D; Table S1).\n", + "\n", + "Validating the Role of CYP6P9a/b and 6.5 kb SV in Pvrethroid Resistance in the Hybrid FUMOZ-FANG Strains before the Experimental Hut Trials\n", + "\n", + "header: 5 Conclusions\n", + "\n", + "This study reveals that insecticide resistance driven by _CYP6P9a/b_ and _6.5 kb SV_ can reduce the efficiency of Permethrin-based LLINs, such as Olyset, while PBO-based nets remain effective. However, the greater loss of efficacy observed in mosquitoes with multiple and complex resistance supports the need to introduce new products for vector control which is less reliant on pyrethroids. Meantime, PBO-based nets should be preferably deployed in areas of P450-based resistance.\n", + "\n", + "**Supplementary Materials:** The following supporting information can be downloaded at: [https://www.mdpi.com/article/10.3390/pathogens11060638/s1](https://www.mdpi.com/article/10.3390/pathogens11060638/s1), Table S1: Results of the performance of Olyset and Olyset Plus against _An. funestus_ females (crossing FUMOZ-FANG; F5) in experimental hut trial. Table S2: Correlation between _CYP6P9a and CYP6P9b_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S3: Correlation between the _6.5Kv SV_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S4: Correlation between genotypes of _CYP6P9a_, _CYP6P9b_ and _6.5 kb SV_ and mortality and blood-feeding after exposure to Olyset and Olyset Plus in experimental huts. Table S5: _CYP6P9a_ and _CYP6P9b_ acting together further increase the ability of _An. funestus_ to survive and blood feed against Olyset after experimental hut trial.\n", + "\n", + "**Author Contributions:** C.S.W. conceived and designed the study; L.M.J.M. and M.T. (Magellan Tchouakui) generated the lab crosses and performed the validation of the PCR; B.D.M. performed the experimental hut experiments with C.S.W. and genotyped the resistance makers with M.J.W. and M.T. (Micareme Tchoupo); B.D.M. and C.S.W. wrote the paper with assistance from M.T. (Magellan Tchouakui) and L.M.J.M. All authors have read and agreed to the published version of the manuscript.\n", + "\n", + "**Funding:** This research was funded in whole by the Welcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). For the purpose of open access, the authors applied a CC BY public copyright license to any author who accepted a manuscript version following this submission.\n", + "\n", + "**Institutional Review Board Statement:** NA.\n", + "\n", + "**Informed Consent Statement:** NA.\n", + "\n", + "**Data Availability Statement:** NA.\n", + "\n", + "**Acknowledgments:** A big thanks to Charles Wondji for his financial support through the Wellcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). I am also grateful to the Mibellon community.\n", + "\n", + "**Conflicts of Interest:** The authors declare that they have no competing interest.\n", + "\n", + "header: Study Site: Laboratory Strain: FUMOZ/FANG Crossing\n", + "\n", + "Previous studies revealed that the duplicated P450 _CYP6P9a/b_ and intergenic _6.5 kb sv_ is mainly found in mosquitoes from southern Africa and absent from mosquitoes collected elsewhere in Africa [31,45]. Moreover, these resistance markers have already been selected (close to fixation) in the southern African _An. funestus_ populations, preventing free-flying mosquitoes from being used in this region in order to assess their impact on LLIN efficacy, as all mosquitoes are nearly homozygote-resistant now [7]. Therefore, to evaluate the impact of these cytochrome P450, we opted to use a hybrid strain generated from two _An. funestus_ laboratory colonies: the FANG colony, a completely insecticide-susceptible colony originating from Angola, and the FUMOZ colony derived from southern Mozambique, which is highly resistant to pyrethroids and carbamates [48]. During rearing, the pupae of each strain were kept individually in Falcon tubes (15 mL), locked with a piece of cotton for individual emergence. After the emergence of pupae in the Falcon tube, the males and the females were separated. A reciprocal crossing was performed using 50 males and 50 females from the other strain. After the initial F1 generation obtained from the reciprocal crosses of the 50 males and 50 females of both strains, the hybrid strain was reared to F5 and F6 generation, presenting good segregation in all the three genotypes. The hybrid strain was then used for the release recapture experiment in the huts.\n", + "\n", + "header: 2.3.1 Impact on Mosquito Mortality: 2.3.2 CYP6P9a Impacting the Blood-Feeding\n", + "\n", + "Homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed better than homozygote-susceptible mosquitoes (SS) (OR = 4.5; \\(p\\) < 0.01) when exposed to Olyset. Heterozygote mosquitoes (RS) were significantly worse at blood-feeding with Olyset compared to homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-1.7; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) fed heterozygotes (OR = 5.4; CI = 2.6-10.88; \\(p\\) < 0.001) significantly better (Table S4; Figure 5C). Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.3; CI = 1.3-4.1; \\(p\\) < 0.01) (Table S4). For Olyset Plus, homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed than homozygote-susceptible mosquitoes (RS) (OR = 6.3; \\(p\\) < 0.001) when exposed to Olyset Plus. The significant ability to blood-feed was observed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.0; CI = 1.1-3.5; \\(p\\) = 0.03) (Table S4).\n", + "\n", + "header: 1 Introduction\n", + "\n", + "Long-lasting insecticidal nets (LLINs) remain an important component of the malaria control strategies used to reduce mortality and morbidity due to this disease in Africa [1, 2]. Mostly insecticides belonging to the pyrethroid group, as well as more and more novel insecticides, are currently recommended for bed net impregnation [3, 4, 5]. In recent years, anopheles mosquitoes have increasingly been reported to show resistance against pyrethroids across Africa. This is the case for major vectors including _Anopheles funestus_[6, 7, 8, 9] and _Anopheles gambiae_[10, 11, 12, 13, 14]. This growing spread of resistance has led to a concern that LLINs may lose their efficacy. However, quantifying such loss of efficacy remains challenging without suitable metrics associated with resistance, highlighting the need to use robust genotype/phenotype analysis for this evaluation. At a time when national malaria control \n", + "programs across Africa are seeking to take evidence-based decisions on their choice of suitable nets to help improve malaria control, it is paramount to determine the extent to which existing resistance to pyrethroid really affects LLIN efficacy. This involves an understanding of the interaction between resistance mechanisms and mosquito responses to exposure to LLINs. Broadly speaking, pyrethroid resistance can be caused by alterations in the target site of the insecticide or enhanced enzymatic activities capable of metabolizing the insecticide before it reaches the target [15-17]. Target site resistance is well studied with mutations in the target of both pyrethroid and DDT insecticides, as well as the voltage-gated sodium channels which lead to knockdown resistance (_kdr_). The development of molecular assays more than twenty years ago made it possible to track this resistance mechanism using a simple PCR [18-21] or high throughput techniques, such as TaqMan assays [22]. It has also been possible to assess the impact of _kdr_ on control tools, notably in _An. gambiae_ where these markers are common [23-25], contrary to _An. funestus_, where it is still not detected [26]. The second best characterized cause of insecticide resistance is metabolic resistance, which is more complex to understand as it can involve the detoxification, sequestration, and transportation of insecticides or their conjugates [16,17,27]. Recent studies have focused on elucidating the genetic factors which cause the increased expression of detoxification genes associated with insecticide resistance in malaria vectors such as _An. funestus_, leading to the development of simple molecular assays used to detect metabolic resistance [28-31].\n", + "\n", + "The recent design of molecular assays for the duplicated _CYP6P9a/b_ and the associated _6.5 kb_ structural variant (SV), refs. [28,29,31] now provides a great opportunity to assess the impact of P450-based pyrethroid resistance on the efficacy of various LLINs, including pyrethroid-only (Olyset) and PBO (Olyset Plus) nets. This will provide evidence-based information on their effectiveness in the presence of a growing and escalading resistance to pyrethroids. Previous assessment of this impact on PermaNet nets made with type II pyrethroid deltamethrin has been performed [28,29,31], but this remains to be carried out for type I pyrethroid nets, such as the common permethrin-based Olyset nets.\n", + "\n", + "Here, using EHT, we show a significantly greater efficacy of the PBO-based net Olyset Plus compared to the pyrethroid-only Olyset net against pyrethroid-resistant _An. funestus_. Using the genotyping of DNA-based markers of P450 resistance, we reveal that _CYP6P9a/b_ P450-based pyrethroid resistance induces a significant loss of efficacy for pyrethroid-only net Olyset against _An. funestus_. A reduced efficacy was also detected for PBO-based net Olyset Plus, but at a lower extent than for Olyset net, revealing that PBO nets are more suitable to tackle such P450-based resistance.\n", + "\n", + "header: Susceptibility Profile of the Hybrid FUMOZ/FANG Strain to Pyrethroids\n", + "\n", + "Before assessing the impact of _CYP6P9a/b_ on the effectiveness of LLINs using the experimental huts, the resistance status of the hybrid FUMOZ-FANG was evaluated in laboratory conditions via WHO tube tests and cone tests, and the role of _CYP6P9a/b_ in terms of resistance was assessed.\n", + "\n", + "**Bioassays:** WHO bioassays were conducted with 0.05% deltamethrin and 0.1% propoxur. To generate highly resistant and highly susceptible mosquitoes, WHO bioassays were conducted with 0.75% permethrin and 0.05% deltamethrin for 30 min and 90 min. For each insecticide, four replicates of 25 mosquitoes from the hybrid strains were used. Alive mosquitoes after 90 min of exposure and dead mosquitoes after 30 min of exposure were then genotyped to establish the association between the _CYP6P9a/b_ and _6.5 kb SV_ resistance alleles and the ability of mosquitoes to survive to these insecticides.\n", + "\n", + "**Cone assays:** Cone test bioassays were conducted with a fragment of Olyset and Olyset Plus using the resistant hybrid strains FUMOZ-FANG. Five batches of 10 unfed females, aged 2-5 days old, were exposed to each bed net for three minutes. They were then transferred into the holding paper cup containers. The knockdown was checked after 60 min and the mortality after 24 h. Alive and dead mosquitoes obtained after exposure were then genotyped. The association between the _CYP6P9a/b_-resistant allele and the ability of mosquitoes to survive to these insecticides was also established.\n", + "\n", + "header: 2.4.1 The Impact of CYP6P9b on Mortality: 2.4.2 CYP6P9b Impacting the Blood-Feeding\n", + "\n", + "A strong association was observed between _CYP6P9b_ genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could more successfully blood-fed when compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 4.1-24.9; \\(p\\) < 0.001) (Table S4; Figure 5F). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset was not different to that of homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-2.2; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 11.1; CI = 5.3-23.03: \\(p\\) < 0.001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood fed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.7; CI = 2.5-8.1; \\(p\\) < 0.01) (Table S4).\n", + "\n", + "header: Table 1: Description of the long-lasting insecticidal nets used.\n", + "footer: None\n", + "columns: ['Treatment Arm', 'Description', 'Manufacturer']\n", + "\n", + "{\"0\":{\"Treatment Arm\":\"Untreated\",\"Description\":\"100% polyester with no insecticide\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"4\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"5\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"}}\n", + "\n", + "header: 2.2.2 Validating the Role of CYP6P9b_R_ Using Sample from WHO Tube Assays\n", + "\n", + "To confirm the ability of the _CYP6P9b_R_ allele to predict pyrethroid resistance phenotype in the hybrid strain FUMOZ-FANG, the F5 samples were genotyped. This revealed that those that stayed alive after exposure to permethrin for 90 minutes are mainly homozygote\n", + "\n", + "Figure 2: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (**A**) Tube assay _CYP6P9a_ and mortality. Role of _CYP6P9a_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9a_ genotypes according to resistance phenotypes. (**B**) Tube assay _CYP6P9b_ and mortality. Role of _CYP6P9b_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9b_ genotypes according to resistance phenotypes. (**C**) Cone assay _CYP6P9a_ and mortality. Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: \\(p\\) < 0.001). (**D**) Cone assay _CYP6P9a_ and mortality allele. Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the _CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**E**) Cone assay _CYP6P9b_ and mortality. Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset using the cone test, showing strong association (RR vs. SS: \\(p\\) < 0.001).\n", + "\n", + "\n", + "resistant (20.8%) and heterozygotes (75%), with only two being homozygote-susceptible. Among the 47 mosquitoes found dead after 30 min exposure to permethrin (highly susceptible), 97.87% were found to be homozygote-susceptible, and one remaining was a heterozygote (Figure 2B). A strong association was perceived between permethrin resistance and the _CYP6P9b_ genotypes when comparing RR vs. SS (OR = infinity; \\(p\\) < 0.0001) and RS vs. SS (OR = 715; \\(p\\) < 0.0001).\n", + "\n", + "2.3 Validation of the Role of CYP6P9a and CYP6P9b in Conferring Resistance Using Samples from Cone Assays\n", + "\n", + "Using dead and alive mosquitoes obtained after cone assays, _CYP6P9a_ homozygous-resistant mosquitoes (RR) and heterozygous (RS) could survive significantly better following exposure to Olyset and Olyset Plus than homozygote-susceptible mosquitoes (Table S2). Olyset shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 35.1; \\(p\\) < 0.0001) and RS vs. SS (OR = 34.6; \\(p\\) < 0.0001) for _CYP6P9a_ (Figure 2C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 7.7; \\(p\\) < 0.05) (Table S2; Figure 2D). Concerning _CYP6P9b_, homozygous-resistant mosquitoes (RR) and heterozygous (RS) could also survive significantly better following survive exposure to Olyset net. A strong association was noticed between the gene and the ability to survive when comparing RR to SS (OR = 32.4; \\(p\\) < 0.0001) and RS vs. SS (OR = 97.3; \\(p\\) < 0.0001) (Table S2; Figure 2E).\n", + "\n", + "Olyset Plus shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 6.4; \\(p\\) < 0.001) and RS vs. SS (OR = 7.2; \\(p\\) < 0.001) for _CYP6P9a_ (Table S2; Figure 3A). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.0; \\(p\\) = 0.05) (Table S2; Figure 3B). Concerning the _CYP6P9b_, Olyset Plus equally shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 9.7; \\(p\\) < 0.001) and RS vs. SS (OR = 17.9; \\(p\\) < 0.001) for _CYP6P9b_ (Table S2; Figure 3C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.2; \\(p\\) = 0.01) (Table S2).\n", + "\n", + "Figure 3: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset Plus nets after cone assays. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (_p_ < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset Plus using the cone test, showing the significant ability of the mosquitoes carrying the RR genotype to survive compared to SS (_p_ < 0.001).\n", + "\n", + "header: Impact of CYP6P9a on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", + "\n", + "Genotyping of the _CYP6P9a_ marker allowed us to assess the impact of P450-based metabolic resistance on the loss of efficacy of Olyset, but not for Olyset Plus, since most of the mosquitoes released in Olyset Plus huts died. To avoid confounding effects from blood-feeding, or net entry or exophily status, the distribution of the _CYP6P9a_ genotypes was assessed firstly only among unfed mosquitoes collected in the room. This revealed a highly significant difference in the frequency of the three genotypes between the dead and alive mosquitoes (chi-square = 28.8; \\(p\\) < 0.0001) (Figure 5). Analysis of the correlation between each genotype and mortality revealed that _CYP6P9a_ homozygous-resistant mosquitoes (RR) show an increased ability to survive exposure to the Olyset when compared to homozygote-susceptible mosquitoes (SS) with (OR = 5.0; CI = 2.01-12.4; \\(p\\) = 0.001). The strength of this association was further shown by the significant ability to survive exposure when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.04; CI = 1.1-3.6; \\(p\\) < 0.05). However, heterozygote mosquitoes (RS) did not survive exposure to Olyset better than homozygote-susceptible mosquitoes (SS) (OR = 1.8; CI = 0.8-3.9; \\(p\\) > 0.05) (Figure 5A; Table S4; Figure 5B).\n", + "\n", + "Figure 5: Impact of both _CYP6P9a_ and _CYP6P9b_ on the efficacy of bed nets in the experimental hut trial. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: \\(p\\) < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Association between _CYP6P9a_ and ability to blood-feed when exposed to Olyset. The _CYP6P9a_–R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (**D**) Association between _CYP6P9b_ and ability to survive exposure to Olyset in the experimental hut trial. (**E**) Allelic frequency of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the _CYP6P9b_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9b_S_. (**F**) Association between _CYP6P9b_ gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The _CYP6P9b_-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\n", + "\n", + "header: Resistance Escalation with Multiple Resistance Alleles Present a Greater Risk of Control Failure\n", + "\n", + "This study confirms the findings by [28], suggesting that the _6.5 kb SV_ acts as an enhancer for nearby duplicated P450 genes _CYP6P9a_ and _CYP6P9b_, leading to their increased overexpression, thus creating greater resistance. This _6.5 kb SV_ is strongly associated with an aggravation of pyrethroid resistance, which reduces the efficacy of pyrethroid-only nets. The fixation of this _6.5 kb SV_, besides the resistant alleles of _CYP6P9a_ and _CYP6P9b_, could explain the resistance escalation currently observed against the _An. funestus_ population from the southern part of Africa reducing the efficacy of bed nets [7,41].\n", + "\n", + "This study revealed that multiple and complex resistance combining elevated expression (_CYP6P9a/b_) [45], as well as the selection of cis-regulatory motifs for transcription binding sites (CnCC/MAF) [31], coupled with structural variations such as the _6.5 kb_, which is known to be enriched with several regulatory elements [28], can lead to a greater reduction in bed net efficacy. The fact that triple homozygote-resistant mosquitoes could survive better against exposure to pyrethroid-only nets compared to all genotypes reveals the greater risk that an unabated increase in resistance can likely lead to the failure of insecticide-based interventions, as predicted by the WHO global plan for insecticide resistance management. This calls for novel nets which do not rely on pyrethroids in the future. However, the impact of these resistance alleles on the efficacy of LLINs in natural populations remains to be established, as we only performed a test with a hybrid strain from two laboratory strains. This work must be urgently carried out, particularly as the molecular tools are increasingly available.\n", + "\n", + "header: Bed Nets Performance Assessment\n", + "\n", + "The performance of the bed nets was expressed relative to control (untreated nets). This was performed with four parameters in mind.\n", + "\n", + "**(i)**: **Exophily**. The proportion of mosquitoes found exited in the veranda trap Exophily (%) = 100 x (Ev/Et), where Ev is the total number of mosquitoes found in veranda and Et is the total number of mosquitoes in the hut.\n", + "**(ii)**: **Blood-feeding rate (BFR)**. This rate was calculated as follows: blood-feeding rate = (N mosquitoes fed) x 100/total N mosquitoes, where N mosquitoes fed was the number of mosquitoes fed and a total N mosquito was the total number of mosquitoes collected.\n", + "**(iii)**: **Blood-feeding inhibition (BFI)**. The reduction in blood-feeding in comparison with the control hut. Blood-feeding inhibition is an indicator of personal protection (PP). More precisely, the personal protection effect of each bed net is the reduction in the blood-feeding percentage induced by the net when compared to the control. The protective effect of each bed net can be calculated as follows: _personal protection_ (%) = 100 x (_Bu_ - _Bt_)/_Bu_, where _Bu_ is the total number of blood-fed mosquitoes in the huts with untreated nets and _Bt_ is the total number of blood-fed mosquitoes in the huts with treated nets [47].\n", + "**(iv)**: **Immediate and delay mortality**. The proportion of mosquitoes entering the hut that are found dead in the morning (immediate mortality) or after being caught alive and held for 24 h with access to sugar solution (delay mortality) [47]. In this study, we presented the overall mortality calculated as follows: mortality (%) = 100 x (Mt/MT), where Mt is the total number of mosquitoes found dead in the hut and MT is the total number of mosquitoes collected in the hut [28,47].\n", + "**(v)**: As mosquitoes were rather released in the huts, the deterrence, i.e., the reduction in the entry rate of mosquitoes in the treated huts relative to control, could not be determined here.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}, \"Time_elapsed\": {\"title\": \"Time Elapsed\", \"description\": \"For longitudinal studies: how long since the start of the study, in units of months?Report this value only if explicitly stated in the text.\"}, \"Blood_meal_count\": {\"title\": \"Blood Meal Count\", \"description\": \"Count of blood meals taken by mosquitos over observation period. This is a proxy for time, as mosquitoes in the study were fed blood meals once a week and oviposition recorded at each time step.\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Cameroon\",\"Site\":\"Yaounde\",\"Start_month\":1,\"Start_year\":2023,\"End_month\":6,\"End_year\":2023,\"Time_elapsed\":5.0,\"Blood_meal_count\":4.0},\"S02\":{\"Study_type\":\"Bioassay, WHO cylinder test\",\"Country\":\"Mozambique\",\"Site\":\"Lab facility\",\"Start_month\":2,\"Start_year\":2023,\"End_month\":5,\"End_year\":2023,\"Time_elapsed\":3.0,\"Blood_meal_count\":null}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Synergist_concentration\": {\"title\": \"Synergist concentration (measured)\", \"description\": \"Enter the measured concentration of the synergist.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Untreated\",\"pHI_category\":\"Good\",\"Insecticide\":null,\"Concentration_initial\":null,\"Synergist\":null,\"Synergist_concentration\":null},\"N02\":{\"Net_type\":\"Olyset\",\"pHI_category\":\"Good\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"8.6 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (2%)\",\"Synergist\":null,\"Synergist_concentration\":null},\"N03\":{\"Net_type\":\"Olyset Plus\",\"pHI_category\":\"Good\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"8.6 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (2%)\",\"Synergist\":\"PBO\",\"Synergist_concentration\":\"4.3 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (1%)\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: 2.2.1 Role of CYP6P9a_R Using WHO Tube Assay Samples\n", + "\n", + "Using the hybrid FUMOZ-FANG strains, the role of the _CYP6P9a_R_ allele in the observed pyrethroid resistance was confirmed. The odds ratio of surviving exposure to permethrin when homozygous for the resistant _CYP6P9a_R_ allele (RR) was high at 693 (CI 88-5421; \\(p\\) < 0.0001) compared to the homozygous-susceptible mosquitoes (SS) (Figure 2A). The OR was 131 (CI 27-978; \\(p\\) < 0.0001) when comparing RR to RS, indicating the increasing resistance conferred by _CYP6P9a_.\n", + "\n", + "header: 4.6.2 Genotyping of the CYP6P9b-R Maker Using PCR-RFLP\n", + "\n", + "The PCR was carried out, as described for CYP6P9a. The following primers were used: 6p9brflp_0.5F 5'-CCCCCACAGGTGTAACTCTGAA-3' and 6p9brflp_0.5R 5'-TTATCCGTAAACTCAATAGCGATG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 550 bp. The digestion with the _Tsp_451 restriction enzyme followed 0.2 mL of Tsp451, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product was migrated on the 2% gel. Amplicons from susceptible mosquitoes were cut into two bands with sizes of 400 bp and 150 bp, and the resistant mosquitoes remained undigested with the band at 550 bp.\n", + "\n", + "header: Impact of the Duplicated CYP6P9a and CYP6P9b P450 Genes on the Performance of Bed Nets\n", + "\n", + "The samples collected during the evaluation of Olyset and Olyset Plus in experimental huts were grouped in several categories: dead, alive, blood fed, and unfed; room and veranda. The _CYP6P9a_/b and _6.5 kb SV_ were genotyped in each group using the respective PCR assays as described [28,29,31]. This allowed the relative survival and feeding success of resistant and susceptible insects in the presence of both bed nets to be directly measured.\n", + "\n", + "header: Abstract\n", + "\n", + "Experimental Hut Trials Reveal That CYP6P9a/b P450 Alleles Are Reducing the Efficacy of Pyrethroid-Only Olyset Net against the Malaria Vector _Anopheles funestus_ but PBO-Based Olyset Plus Net Remains Effective\n", + "\n", + "Benjamin D. Menze, Leon M. J. Mugenzi, Magellan Tchouakui, Murielle J. Wondji,\n", + "\n", + "1Vector Biology Department, Liverpool School of Tropical Medicine, Pembroke Place, Liverpool L3 5QA, UK; murielle.wondji@ilstmed.ac.uk\n", + "2Medical Entomology Department, Centre for Research in Infectious Diseases (CRID), Yaounde 13591, Cameroon; leon.mugenzi@crid-cam.net (L.M.J.M.); magellan.tchouakui@crid-cam.net (M.T.); micareme.tchouop@crid-cam.net (M.T.)\n", + "* Correspondence: benjamin.menze@crid-cam.net (B.D.M.); charles.wondji@ilstmed.ac.uk (C.S.W.)\n", + "\n", + "\n", + "Malaria remains a major public health concern in Africa. Metabolic resistance in major malaria vectors such as _An. funestus_ is jeopardizing the effectiveness of long-lasting insecticidal nets (LLINs) to control malaria. Here, we used experimental hut trials (EHTs) to investigate the impact of cytochrome P450-based resistance on the efficacy of PBO-based net (Olyset Plus) compared to a permethrin-only net (Olyset), revealing a greater loss of efficacy for the latter. EHT performed with progenies of F5 crossing between the _An. funestus_ pyrethroid-resistant strain FUMOZ and the pyrethroid-susceptible strain FANG revealed that PBO-based nets (Olyset Plus) induced a significantly higher mortality rate (99.1%) than pyrethroid-only nets (Olyset) (56.7%) (\\(p<0.0001\\)). The blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)). Genotyping the _CYP6P9a/b_ and the intergenic _6.5 kb structural variant_ (SV) resistance alleles showed that, for both nets, homozygote-resistant mosquitoes have a greater ability to blood-feed than the susceptible mosquitoes. Homozygote-resistant genotypes significantly survived more with Olyset after cone assays (e.g., _CYP6P9a_ OR = 34.6; \\(p<0.0001\\)) than homozygote-susceptible mosquitoes. A similar but lower correlation was seen with Olyset Plus (OR = 6.4; \\(p<0.001\\)). Genotyping EHT samples confirmed that _CYP6P9a/b_ and _6.5 kb_SV_ homozygote-resistant mosquitoes survive and blood-feed significantly better than homozygote-susceptible mosquitoes when exposed to Olyset. Our findings highlight the negative impact of P450-based resistance on pyrethroid-only nets, further supporting that PBO nets, such as Olyset Plus, are a better solution in areas of P450-mediated resistance to pyrethroids.\n", + "\n", + "header: 4.6.3 PCR Assay to Detect the 6.5 kb SV\n", + "\n", + "To easily identify the samples containing the 6.5 kb insertion, the recently designed PCR assay [28] was used to discriminate between mosquitoes with the 8.2 kb (resistant) and 1.7 kb (susceptible) _CYP6P9a_ and _CYP6P9b_ intergenic regions. Briefly, three primers were used: two (FG_5F: CTACCGTCAAAGTCCGGTAT and FG_3R: TTTCGAAAACATCCCTAAA) at regions flanking the insertion point and a third primer (FZ_INS5R: ATATGCCACGAAGGAAAGCAG) in the _6.5 kb_ insertion. One unit of KAPA Taq polymerase (Kapa Biosystems) in 1x buffer A, i.e., 25 mm of MgCl2, 25 mm of dNTPs, and 10 mm of each primer, was used to constitute a 15 mL PCR mix using the following conditions: an initial denaturation step of 3 min at 95 degC, followed by 35 cycles of 30 s at 94 degC, 30 s at 58 degC, and 60 s at 72 degC, with a final extension for 10 min at 72 degC. The amplicon was revealed on a 1.5% agarose gel stained with Midori Green Advance DNA Stain (Nippon genetics Europe GmbH) and revealed on a UV transilluminator.\n", + "\n", + "header: 4.6.1 Genotyping of the CYP6P9a-R Marker Using PCR-RFLP\n", + "\n", + "DNA was extracted from various groups of mosquitoes (dead, alive, blood fed, and unfed; room and veranda) using the Livak protocol [49]. The PCR was carried out using 10 mM of each primer and 1 mL of gDNA as the template in 15 mL reaction containing 10x Kapa Taq buffer A, 25 mM of dNTPs, 25 mM of MgCl2, and 1 U of Kapa Taq (Kapa Biosystems, Boston, MA, USA). Amplification was carried out using thermocycler parameters: 95 degC for 5 min, 35 cycles of 94 degC for 30 s, 58 degC for 30 s, 72 degC for 45 s, and a final extension at 72 degC for 10 min. The following primers were used: RFLP6P9aF forward primer 5'-TCCCGAAATACAGCCTTTCAG-3 and RFLP6P9aR reverse primer 5'-ATTGGTCCATCGCTAGAAG-3'. Then, 3 mL of the PCR product migrated on the 1.5% agarose gel. The expected PCR product was 450 bp. The digestion with Taq1a followed 0.2 mL of Taq1a, 5 mL of PCR product, 1 mL of 10x NEBuffer, and 3.8 mL of distilled water. This mix was incubated at 65 degC for 2 h. Afterwards, 3 mL of the digestion product migrated on the 2% gel. Amplicons from resistant mosquitoes were cut into two bands with sizes of 350 bp and 100 bp, and the susceptible mosquitoes remained undigested with the band at 450 bp.\n", + "\n", + "header: 3 Discussion\n", + "\n", + "The capacity to assess the impact of insecticide resistance on the effectiveness of insecticide-treated control tools is crucial in order to implement suitable insecticide resistance management (IRM) [32]. Evolution in the area of DNA-based resistance markers of P450-mediated resistance [28; 29] currently offers robust tools to screen pyrethroid resistance in field populations of the major malaria vectors such as _An. funestus_ and assess their impact on the effectiveness of LLINs. In this study, we use these markers to evaluate the extent to which pyrethroid resistance is impacting the efficacy of pyrethroid-only nets such as Olyset in comparison to PBO-based net such as Olyset Plus. This study also allowed to assess the interplay between P450 genes in the overall genetic variance to resistance and their combined impact on the efficacy of LLINs.\n", + "\n", + "PBO-Based Nets (Olyset Plus) Exhibit Greater Efficacy than Pyrethroid-Only Nets (Olyset) in the Context of P450-Based Resistance\n", + "\n", + "Olyset presented a moderate mortality compared to Olyset Plus (30.9% vs. 100%; \\(p\\) < 0.0001). The high mortality observed with PBO nets compared to pyrethroid-only nets is similar to what was observed in previous studies [33; 34; 35; 36]. The high mortality observed with PBO-based nets against the hybrid strain FUMOZ/FANG is due to the fact the mechanisms underlying the resistance in this population are driven by _CYP6P9a_ and _CYP6P9b_[37] which are inhibited by PBO [38]. These results demonstrate that PBO-based nets may be a more suitable solution in areas where resistance is mainly mediated by P450 genes.\n", + "\n", + "Figure 7: Combined impact of the triple resistance alleles (_CYP6P9a_/_CYP6P9b_/_6.5 kb SV_) on the efficacy of insecticide-treated nets. (**A**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances of being alive in the presence of Olyset Net. (**B**) Ability to survive exposure to Olyset net for the various combined genotypes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_. (**C**) Distribution of combined genotypes for _CYP6P9a_, _CYP6P9b_ and the _6.5 kb SV_ showing that the three markers combine to increase the chances to bloodfed in the presence of Olyset net. (**D**) The triple RR/RR/SV+SV+ homozygous mosquitoes for the _6.5 kb SV_, _CYP6P9a_ and _CYP6P9b_ exhibit a greater blood-feeding ability than other genotypes. Ns: non-significant; * (0.05); ** (0.01); *** (0.001).\n", + "\n", + "\n", + "The efficacy of nets observed in this study confirms the loss in efficacy of the pyrethroid-only nets against _Anopheles_ mosquitoes, as observed across the continent [39]. This loss of efficacy was observed in Mozambique [7,40], Malawi [41], Congo [42], and Cameroon [6,43]. Overall, similar to this study, it has been noticed that PBO-based nets demonstrate a better performance compared to pyrethroid-only nets [33,34]. The same trends were observed with pyrethroid type II with high mortality observed with PermaNet 3.0 compared to PermaNet 2.0 [28,29,31], suggesting that PBO-based nets with both type I or II can exhibit high performance against resistance sustained by P450s.\n", + "\n", + "P450 Resistance Can Reduce the Efficacy of Pyrethroid-Only Nets Significantly Better Than PBO-Based Nets\n", + "\n", + "When comparing the impact of _CYP6P9a/b_ on pyrethroid-only nets and PBO-based nets using samples from cone assays, we noticed that the impact of _CYP6P9a_ on pyrethroid-only nets was higher than with PBO-based nets (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. Olyset Plus, OR = 6.4; \\(p\\) < 0.001). The same trend was also observed with _CYP6P9b_ and the 6.5 kb SV. This can be explained by the fact that the addition of the PBO inhibits the cytochrome P450 enzymes, which is the main resistance mechanism in the strain used by the mosquitoes [44,45].\n", + "\n", + "On the other hand, Olyset nets have also shown reduced performance against _CYP6P9a_ and _CYP6P9b_-resistant mosquitoes. Strong association was observed between the resistant alleles and the increased ability of the mosquitoes to survive after exposure to these nets. Nevertheless, the impact of _CYP6P9a_ and _CYP6P9b_ seems to be more significant on PermaNet nets impregnated with deltamethrin [29,31], compared to Olyset nets impregnated with permethrin (Olyset, OR = 35.1; \\(p\\) < 0.00001 vs. PermaNet 2.0, OR = 239.0; \\(p\\) < 0.001 and Olyset Plus, OR = 6.4; \\(p\\) < 0.001 vs. PermaNet 3.0, OR = 81.0; \\(p\\) < 0.001) [29,31]. This significant impact on PermaNet could be associated with the fact that the hybrid strain is more resistant to type II pyrethroids, as shown by WHO bioassays, where the mosquitoes were more resistant to deltamethrin compared to permentrin (48.5% vs. 80.7%). With regards to the obtained odd ratios, a stronger association was observed between _CYP6P9a/CYP6P9b_ and the loss of efficacy of nets compared to what was observed with GST-based resistance through the L119F-_GSTe2_-resistant allele [43], in line with the greater role of P450 in resistance to pyrethroids in _An. funetus_, compared to that of GST. The 6.5 kb SV was shown to further exacerbate the loss of efficacy in the permethrin-only nets. The design of the simple PCR-based assay to genotype the _6.5 kb SV_ enabled us to assess the impact of such structural variation on the efficacy of insecticide-treated nets, including the pyrethroid-only and the PBO-synergist nets. A greater reduction in the efficacy of _6.5 kb SV_ was present on permethrin-only nets compared to PBO-based nets, which is similar to that observed with _CYP6P9a_ [31] and _CYP6P9b_ [29], in terms of the reduced mortality rate and blood-feeding inhibition. This pattern is also similar to that seen with deltamethrin-based nets (PermaNet 2.0 vs. PermaNet 3.0) [29,31]. Overall, the significantly greater loss of efficacy due to P450s observed with both type I (Olyset and PermaNet 2.0) and PBO-based nets (Olyset Plus and PermaNet 3.0) further supports the deployment of PBO-based nets to control P450-based metabolically resistant mosquito populations. The deployment of PBO-based nets should nevertheless also be monitored to regularly assess their efficacy since they too could be impacted by resistance, as shown by the fact that _CYP6P9a/b_-resistant mosquitoes could blood-feed significant better, even with Olyset Plus. This increased ability of resistant mosquitoes to blood-fed, even with PBO-based net, suggests that PBO-based nets are not immune to the impact of resistance, even if they remain significantly more effective than pyrethoid-only nets. The increased blood-feeding of P450-resistant mosquitoes when exposed to PBO-based nets may also lead to a higher malaria transmission, although this is mitigated by the high mortality observed for Olyset Plus in a experimental hut trial. Overall, evaluating the impact of P450-based resistance on the efficacy of Olyset vs. Olyset Plus further supports the results obtained in a cluster \n", + "randomized controlled trial with both nets in Tanzania showing greater effectiveness of Olyset Plus [46].\n", + "\n", + "header: Results\n", + "\n", + "All the nets used in the study were first exposed to the susceptible lab strain Kisumu for quality control. The mortality for Olyset and Olyset Plus was 100% (Figure 1A). The _An. funestus_ hybrid strain exposed to bed nets using WHO cone assays exhibited mortality rates of 30.1 \\(\\pm\\) 11.5% for Olyset and 100 \\(\\pm\\) 0% for Olyset Plus, suggesting a greater efficacy of PBO synergist nets compared to pyrethroid-only nets.\n", + "\n", + "**Susceptibility profiles of the FUMOZ-FANG:** The bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to deltamethrin with mortality of 43.7 \\(\\pm\\) 5.9%, and was resistant to propoxur with mortality of 67.3 \\(\\pm\\) 6.6% (Figure 1B). The second set of bioassays performed with the reciprocal FUMOZ-FANG strains revealed that the hybrid strain was resistant to permethrin with mortality of 43.7 \\(\\pm\\) 1.6% and 39.3 \\(\\pm\\) 1.6%, respectively, for 90 min and 30 min. Resistance was also observed with deltamethrin with a mortality of 86.4 \\(\\pm\\) 3.1% and 42.3 \\(\\pm\\) 2.5%, respectively, for 90 min and 30 min (Figure 1C).\n", + "\n", + "header: 2.1.1. Quality Control and Performance of the Nets against the Hybrid Strain: 2.1.2 Performance of Nets against the Hybrid Strain Using Experimental Hut\n", + "\n", + "A total number of 578 mosquitoes from the hybrid strain were released and recaptured on a period of one week. In total, 141 samples were released in the control hut, 224 in the hut were treated with Olyset, and 213 in the hut were treated with Olyset Plus.\n", + "\n", + "**Mortality**: Analysis of mortality rates revealed very high mortality of the hybrid FUMOZ-FANG strain against the PBO-based Olyset Plus net (99.1%). In contrast, lower mortality was observed for the pyrethroid-only Olyset net (56.7%). Very low mortality was observed in the untreated control net (9.9%) (Figure 1D; Table S1).\n", + "\n", + "**Blood-feeding**: The blood-feeding rate did not significantly differ when comparing the control (7.8%) to Olyset (11.6% \\(p>0.05\\)) and Olyset Plus (5.6%; \\(p>0.05\\)). However, the blood-feeding rate was higher in Olyset compared to Olyset Plus (11.6% vs. 5.6%; \\(p=0.013\\)) (Figure 1D; Table S1).\n", + "\n", + "Figure 1: Susceptibility profile of the hybrid FUMOZ-FANG strain to pyrethroids. (**A**) Net quality assessment with recorded mortalities after cone assays with Kisumu, the _An. gambiae_-susceptible lab strain, and the _An. funestus_ FUMOZ-FANG strain. (**B**) Susceptibility profile of the hybrid FUMOZ-FANG strain to type II (deltamethrin) pyrethroids and propoxur with recorded mortalities following 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**C**) Susceptibility profile of the hybrid FUMOZ-FANG strain to deltamethrin (type II pyrethroids) and permethrin (type I pyrethroids) with recorded mortalities following 30 and 60 min exposure. Data are shown as mean \\(\\pm\\) SEM. (**D**) Proportion of mortality, blood-feeding, and exophily rate for Olyset and Olyset Plus against _An. funestus_ (crossing the FUMOZ-FANG strain (F5)). Ns = \\(p>0.05\\); * = \\(p\\leq 0.05\\); ** = \\(p\\leq 0.01\\); *** = \\(p\\leq 0.001\\).\n", + "\n", + "\n", + "\n", + "\n", + "**Exophily**: The exophily rate in the hut with Olyset net (23.7%) was significantly higher than that in the control hut (13.5%) (_p_ = 0.02), as well as than for Olyset Plus (7.5%; \\(p\\) < 0.001). No significant difference was observed between Olyset Plus and the control net (_p_ = 0.3) (Figure 1D; Table S1).\n", + "\n", + "Validating the Role of CYP6P9a/b and 6.5 kb SV in Pvrethroid Resistance in the Hybrid FUMOZ-FANG Strains before the Experimental Hut Trials\n", + "\n", + "header: 2.3.1 Impact on Mosquito Mortality: 2.3.2 CYP6P9a Impacting the Blood-Feeding\n", + "\n", + "Homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed better than homozygote-susceptible mosquitoes (SS) (OR = 4.5; \\(p\\) < 0.01) when exposed to Olyset. Heterozygote mosquitoes (RS) were significantly worse at blood-feeding with Olyset compared to homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-1.7; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) fed heterozygotes (OR = 5.4; CI = 2.6-10.88; \\(p\\) < 0.001) significantly better (Table S4; Figure 5C). Overall, the strength of this association was further shown by the significant ability to blood-feed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.3; CI = 1.3-4.1; \\(p\\) < 0.01) (Table S4). For Olyset Plus, homozygote _CYP6P9a_-resistant mosquitoes (RR) were significantly more likely to blood-feed than homozygote-susceptible mosquitoes (RS) (OR = 6.3; \\(p\\) < 0.001) when exposed to Olyset Plus. The significant ability to blood-feed was observed when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.0; CI = 1.1-3.5; \\(p\\) = 0.03) (Table S4).\n", + "\n", + "header: 5 Conclusions\n", + "\n", + "This study reveals that insecticide resistance driven by _CYP6P9a/b_ and _6.5 kb SV_ can reduce the efficiency of Permethrin-based LLINs, such as Olyset, while PBO-based nets remain effective. However, the greater loss of efficacy observed in mosquitoes with multiple and complex resistance supports the need to introduce new products for vector control which is less reliant on pyrethroids. Meantime, PBO-based nets should be preferably deployed in areas of P450-based resistance.\n", + "\n", + "**Supplementary Materials:** The following supporting information can be downloaded at: [https://www.mdpi.com/article/10.3390/pathogens11060638/s1](https://www.mdpi.com/article/10.3390/pathogens11060638/s1), Table S1: Results of the performance of Olyset and Olyset Plus against _An. funestus_ females (crossing FUMOZ-FANG; F5) in experimental hut trial. Table S2: Correlation between _CYP6P9a and CYP6P9b_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S3: Correlation between the _6.5Kv SV_ genotypes and mosquito mortality against Olyset and Olyset Plus nets after cone assays with the FANG-FUMOZ mosquito strain. Table S4: Correlation between genotypes of _CYP6P9a_, _CYP6P9b_ and _6.5 kb SV_ and mortality and blood-feeding after exposure to Olyset and Olyset Plus in experimental huts. Table S5: _CYP6P9a_ and _CYP6P9b_ acting together further increase the ability of _An. funestus_ to survive and blood feed against Olyset after experimental hut trial.\n", + "\n", + "**Author Contributions:** C.S.W. conceived and designed the study; L.M.J.M. and M.T. (Magellan Tchouakui) generated the lab crosses and performed the validation of the PCR; B.D.M. performed the experimental hut experiments with C.S.W. and genotyped the resistance makers with M.J.W. and M.T. (Micareme Tchoupo); B.D.M. and C.S.W. wrote the paper with assistance from M.T. (Magellan Tchouakui) and L.M.J.M. All authors have read and agreed to the published version of the manuscript.\n", + "\n", + "**Funding:** This research was funded in whole by the Welcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). For the purpose of open access, the authors applied a CC BY public copyright license to any author who accepted a manuscript version following this submission.\n", + "\n", + "**Institutional Review Board Statement:** NA.\n", + "\n", + "**Informed Consent Statement:** NA.\n", + "\n", + "**Data Availability Statement:** NA.\n", + "\n", + "**Acknowledgments:** A big thanks to Charles Wondji for his financial support through the Wellcome Trust (Senior Research Fellowship to CSW 101893/Z/13/Z and 217188/Z/19/Z). I am also grateful to the Mibellon community.\n", + "\n", + "**Conflicts of Interest:** The authors declare that they have no competing interest.\n", + "\n", + "header: Study Site: Laboratory Strain: FUMOZ/FANG Crossing\n", + "\n", + "Previous studies revealed that the duplicated P450 _CYP6P9a/b_ and intergenic _6.5 kb sv_ is mainly found in mosquitoes from southern Africa and absent from mosquitoes collected elsewhere in Africa [31,45]. Moreover, these resistance markers have already been selected (close to fixation) in the southern African _An. funestus_ populations, preventing free-flying mosquitoes from being used in this region in order to assess their impact on LLIN efficacy, as all mosquitoes are nearly homozygote-resistant now [7]. Therefore, to evaluate the impact of these cytochrome P450, we opted to use a hybrid strain generated from two _An. funestus_ laboratory colonies: the FANG colony, a completely insecticide-susceptible colony originating from Angola, and the FUMOZ colony derived from southern Mozambique, which is highly resistant to pyrethroids and carbamates [48]. During rearing, the pupae of each strain were kept individually in Falcon tubes (15 mL), locked with a piece of cotton for individual emergence. After the emergence of pupae in the Falcon tube, the males and the females were separated. A reciprocal crossing was performed using 50 males and 50 females from the other strain. After the initial F1 generation obtained from the reciprocal crosses of the 50 males and 50 females of both strains, the hybrid strain was reared to F5 and F6 generation, presenting good segregation in all the three genotypes. The hybrid strain was then used for the release recapture experiment in the huts.\n", + "\n", + "header: 2.4.1 The Impact of CYP6P9b on Mortality: 2.4.2 CYP6P9b Impacting the Blood-Feeding\n", + "\n", + "A strong association was observed between _CYP6P9b_ genotypes and the ability to blood-feed. Homozygote-resistant mosquitoes (RR) could more successfully blood-fed when compared to homozygote-susceptible mosquitoes (SS) (OR = 10.01; CI = 4.1-24.9; \\(p\\) < 0.001) (Table S4; Figure 5F). The blood-feeding ability of heterozygote mosquitoes (RS) in the presence of Olyset was not different to that of homozygote-susceptible mosquitoes (SS) (OR = 0.8; CI = 0.3-2.2; \\(p\\) = 1). Homozygote-resistant mosquitoes (RR) could blood-feed significantly better than heterozygotes (OR = 11.1; CI = 5.3-23.03: \\(p\\) < 0.001), suggesting an additive effect. Overall, the strength of this association was further shown by the significant ability to blood fed when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 4.7; CI = 2.5-8.1; \\(p\\) < 0.01) (Table S4).\n", + "\n", + "header: Susceptibility Profile of the Hybrid FUMOZ/FANG Strain to Pyrethroids\n", + "\n", + "Before assessing the impact of _CYP6P9a/b_ on the effectiveness of LLINs using the experimental huts, the resistance status of the hybrid FUMOZ-FANG was evaluated in laboratory conditions via WHO tube tests and cone tests, and the role of _CYP6P9a/b_ in terms of resistance was assessed.\n", + "\n", + "**Bioassays:** WHO bioassays were conducted with 0.05% deltamethrin and 0.1% propoxur. To generate highly resistant and highly susceptible mosquitoes, WHO bioassays were conducted with 0.75% permethrin and 0.05% deltamethrin for 30 min and 90 min. For each insecticide, four replicates of 25 mosquitoes from the hybrid strains were used. Alive mosquitoes after 90 min of exposure and dead mosquitoes after 30 min of exposure were then genotyped to establish the association between the _CYP6P9a/b_ and _6.5 kb SV_ resistance alleles and the ability of mosquitoes to survive to these insecticides.\n", + "\n", + "**Cone assays:** Cone test bioassays were conducted with a fragment of Olyset and Olyset Plus using the resistant hybrid strains FUMOZ-FANG. Five batches of 10 unfed females, aged 2-5 days old, were exposed to each bed net for three minutes. They were then transferred into the holding paper cup containers. The knockdown was checked after 60 min and the mortality after 24 h. Alive and dead mosquitoes obtained after exposure were then genotyped. The association between the _CYP6P9a/b_-resistant allele and the ability of mosquitoes to survive to these insecticides was also established.\n", + "\n", + "header: 1 Introduction\n", + "\n", + "Long-lasting insecticidal nets (LLINs) remain an important component of the malaria control strategies used to reduce mortality and morbidity due to this disease in Africa [1, 2]. Mostly insecticides belonging to the pyrethroid group, as well as more and more novel insecticides, are currently recommended for bed net impregnation [3, 4, 5]. In recent years, anopheles mosquitoes have increasingly been reported to show resistance against pyrethroids across Africa. This is the case for major vectors including _Anopheles funestus_[6, 7, 8, 9] and _Anopheles gambiae_[10, 11, 12, 13, 14]. This growing spread of resistance has led to a concern that LLINs may lose their efficacy. However, quantifying such loss of efficacy remains challenging without suitable metrics associated with resistance, highlighting the need to use robust genotype/phenotype analysis for this evaluation. At a time when national malaria control \n", + "programs across Africa are seeking to take evidence-based decisions on their choice of suitable nets to help improve malaria control, it is paramount to determine the extent to which existing resistance to pyrethroid really affects LLIN efficacy. This involves an understanding of the interaction between resistance mechanisms and mosquito responses to exposure to LLINs. Broadly speaking, pyrethroid resistance can be caused by alterations in the target site of the insecticide or enhanced enzymatic activities capable of metabolizing the insecticide before it reaches the target [15-17]. Target site resistance is well studied with mutations in the target of both pyrethroid and DDT insecticides, as well as the voltage-gated sodium channels which lead to knockdown resistance (_kdr_). The development of molecular assays more than twenty years ago made it possible to track this resistance mechanism using a simple PCR [18-21] or high throughput techniques, such as TaqMan assays [22]. It has also been possible to assess the impact of _kdr_ on control tools, notably in _An. gambiae_ where these markers are common [23-25], contrary to _An. funestus_, where it is still not detected [26]. The second best characterized cause of insecticide resistance is metabolic resistance, which is more complex to understand as it can involve the detoxification, sequestration, and transportation of insecticides or their conjugates [16,17,27]. Recent studies have focused on elucidating the genetic factors which cause the increased expression of detoxification genes associated with insecticide resistance in malaria vectors such as _An. funestus_, leading to the development of simple molecular assays used to detect metabolic resistance [28-31].\n", + "\n", + "The recent design of molecular assays for the duplicated _CYP6P9a/b_ and the associated _6.5 kb_ structural variant (SV), refs. [28,29,31] now provides a great opportunity to assess the impact of P450-based pyrethroid resistance on the efficacy of various LLINs, including pyrethroid-only (Olyset) and PBO (Olyset Plus) nets. This will provide evidence-based information on their effectiveness in the presence of a growing and escalading resistance to pyrethroids. Previous assessment of this impact on PermaNet nets made with type II pyrethroid deltamethrin has been performed [28,29,31], but this remains to be carried out for type I pyrethroid nets, such as the common permethrin-based Olyset nets.\n", + "\n", + "Here, using EHT, we show a significantly greater efficacy of the PBO-based net Olyset Plus compared to the pyrethroid-only Olyset net against pyrethroid-resistant _An. funestus_. Using the genotyping of DNA-based markers of P450 resistance, we reveal that _CYP6P9a/b_ P450-based pyrethroid resistance induces a significant loss of efficacy for pyrethroid-only net Olyset against _An. funestus_. A reduced efficacy was also detected for PBO-based net Olyset Plus, but at a lower extent than for Olyset net, revealing that PBO nets are more suitable to tackle such P450-based resistance.\n", + "\n", + "header: Table 1: Description of the long-lasting insecticidal nets used.\n", + "footer: None\n", + "columns: ['Treatment Arm', 'Description', 'Manufacturer']\n", + "\n", + "{\"0\":{\"Treatment Arm\":\"Untreated\",\"Description\":\"100% polyester with no insecticide\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment Arm\":\"Olyset\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"4\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"5\":{\"Treatment Arm\":\"Olyset Plus\",\"Description\":\"8.6 \\u00d7 10\\u22124 kg\\/m2 (2%) of permethrin and 4.3 \\u00d7 10\\u22124 kg\\/m2 (1%) of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"}}\n", + "\n", + "header: Impact of CYP6P9a on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", + "\n", + "Genotyping of the _CYP6P9a_ marker allowed us to assess the impact of P450-based metabolic resistance on the loss of efficacy of Olyset, but not for Olyset Plus, since most of the mosquitoes released in Olyset Plus huts died. To avoid confounding effects from blood-feeding, or net entry or exophily status, the distribution of the _CYP6P9a_ genotypes was assessed firstly only among unfed mosquitoes collected in the room. This revealed a highly significant difference in the frequency of the three genotypes between the dead and alive mosquitoes (chi-square = 28.8; \\(p\\) < 0.0001) (Figure 5). Analysis of the correlation between each genotype and mortality revealed that _CYP6P9a_ homozygous-resistant mosquitoes (RR) show an increased ability to survive exposure to the Olyset when compared to homozygote-susceptible mosquitoes (SS) with (OR = 5.0; CI = 2.01-12.4; \\(p\\) = 0.001). The strength of this association was further shown by the significant ability to survive exposure when possessing a single _CYP6P9a_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.04; CI = 1.1-3.6; \\(p\\) < 0.05). However, heterozygote mosquitoes (RS) did not survive exposure to Olyset better than homozygote-susceptible mosquitoes (SS) (OR = 1.8; CI = 0.8-3.9; \\(p\\) > 0.05) (Figure 5A; Table S4; Figure 5B).\n", + "\n", + "Figure 5: Impact of both _CYP6P9a_ and _CYP6P9b_ on the efficacy of bed nets in the experimental hut trial. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: \\(p\\) < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Association between _CYP6P9a_ and ability to blood-feed when exposed to Olyset. The _CYP6P9a_–R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (**D**) Association between _CYP6P9b_ and ability to survive exposure to Olyset in the experimental hut trial. (**E**) Allelic frequency of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the _CYP6P9b_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9b_S_. (**F**) Association between _CYP6P9b_ gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The _CYP6P9b_-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\n", + "\n", + "header: 2.2.2 Validating the Role of CYP6P9b_R_ Using Sample from WHO Tube Assays\n", + "\n", + "To confirm the ability of the _CYP6P9b_R_ allele to predict pyrethroid resistance phenotype in the hybrid strain FUMOZ-FANG, the F5 samples were genotyped. This revealed that those that stayed alive after exposure to permethrin for 90 minutes are mainly homozygote\n", + "\n", + "Figure 2: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (**A**) Tube assay _CYP6P9a_ and mortality. Role of _CYP6P9a_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9a_ genotypes according to resistance phenotypes. (**B**) Tube assay _CYP6P9b_ and mortality. Role of _CYP6P9b_ in pyrethroid resistance with samples from the WHO tube. Distribution of the _CYP6P9b_ genotypes according to resistance phenotypes. (**C**) Cone assay _CYP6P9a_ and mortality. Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: \\(p\\) < 0.001). (**D**) Cone assay _CYP6P9a_ and mortality allele. Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the _CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**E**) Cone assay _CYP6P9b_ and mortality. Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset using the cone test, showing strong association (RR vs. SS: \\(p\\) < 0.001).\n", + "\n", + "\n", + "resistant (20.8%) and heterozygotes (75%), with only two being homozygote-susceptible. Among the 47 mosquitoes found dead after 30 min exposure to permethrin (highly susceptible), 97.87% were found to be homozygote-susceptible, and one remaining was a heterozygote (Figure 2B). A strong association was perceived between permethrin resistance and the _CYP6P9b_ genotypes when comparing RR vs. SS (OR = infinity; \\(p\\) < 0.0001) and RS vs. SS (OR = 715; \\(p\\) < 0.0001).\n", + "\n", + "2.3 Validation of the Role of CYP6P9a and CYP6P9b in Conferring Resistance Using Samples from Cone Assays\n", + "\n", + "Using dead and alive mosquitoes obtained after cone assays, _CYP6P9a_ homozygous-resistant mosquitoes (RR) and heterozygous (RS) could survive significantly better following exposure to Olyset and Olyset Plus than homozygote-susceptible mosquitoes (Table S2). Olyset shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 35.1; \\(p\\) < 0.0001) and RS vs. SS (OR = 34.6; \\(p\\) < 0.0001) for _CYP6P9a_ (Figure 2C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 7.7; \\(p\\) < 0.05) (Table S2; Figure 2D). Concerning _CYP6P9b_, homozygous-resistant mosquitoes (RR) and heterozygous (RS) could also survive significantly better following survive exposure to Olyset net. A strong association was noticed between the gene and the ability to survive when comparing RR to SS (OR = 32.4; \\(p\\) < 0.0001) and RS vs. SS (OR = 97.3; \\(p\\) < 0.0001) (Table S2; Figure 2E).\n", + "\n", + "Olyset Plus shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 6.4; \\(p\\) < 0.001) and RS vs. SS (OR = 7.2; \\(p\\) < 0.001) for _CYP6P9a_ (Table S2; Figure 3A). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.0; \\(p\\) = 0.05) (Table S2; Figure 3B). Concerning the _CYP6P9b_, Olyset Plus equally shows a strong association between the resistance alleles and the ability to survive when comparing RR vs. SS (OR = 9.7; \\(p\\) < 0.001) and RS vs. SS (OR = 17.9; \\(p\\) < 0.001) for _CYP6P9b_ (Table S2; Figure 3C). The same trend was observed when looking at the allelic frequency R vs. S (OR = 2.2; \\(p\\) = 0.01) (Table S2).\n", + "\n", + "Figure 3: Association between the _CYP6P9a/b_ and the ability to survive exposure to Olyset Plus nets after cone assays. (**A**) Genotype distribution of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (_p_ < 0.001). (**B**) Allelic frequency of _CYP6P9a_ between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the _CYP6P9a_R_–resistant mosquitoes to survive compared to their susceptible counterparts _CYP6P9a_S_. (**C**) Genotype distribution of _CYP6P9b_ between alive and dead mosquitoes after exposure to Olyset Plus using the cone test, showing the significant ability of the mosquitoes carrying the RR genotype to survive compared to SS (_p_ < 0.001).\n", + "\n", + "header: Resistance Escalation with Multiple Resistance Alleles Present a Greater Risk of Control Failure\n", + "\n", + "This study confirms the findings by [28], suggesting that the _6.5 kb SV_ acts as an enhancer for nearby duplicated P450 genes _CYP6P9a_ and _CYP6P9b_, leading to their increased overexpression, thus creating greater resistance. This _6.5 kb SV_ is strongly associated with an aggravation of pyrethroid resistance, which reduces the efficacy of pyrethroid-only nets. The fixation of this _6.5 kb SV_, besides the resistant alleles of _CYP6P9a_ and _CYP6P9b_, could explain the resistance escalation currently observed against the _An. funestus_ population from the southern part of Africa reducing the efficacy of bed nets [7,41].\n", + "\n", + "This study revealed that multiple and complex resistance combining elevated expression (_CYP6P9a/b_) [45], as well as the selection of cis-regulatory motifs for transcription binding sites (CnCC/MAF) [31], coupled with structural variations such as the _6.5 kb_, which is known to be enriched with several regulatory elements [28], can lead to a greater reduction in bed net efficacy. The fact that triple homozygote-resistant mosquitoes could survive better against exposure to pyrethroid-only nets compared to all genotypes reveals the greater risk that an unabated increase in resistance can likely lead to the failure of insecticide-based interventions, as predicted by the WHO global plan for insecticide resistance management. This calls for novel nets which do not rely on pyrethroids in the future. However, the impact of these resistance alleles on the efficacy of LLINs in natural populations remains to be established, as we only performed a test with a hybrid strain from two laboratory strains. This work must be urgently carried out, particularly as the molecular tools are increasingly available.\n", + "\n", + "header: Impact of CYP6P9b on the Efficacy of Olyset and Olyset plus Nets Using Experimental Hut Trial\n", + "\n", + "The impact of _CYP6P9b_ genotypes on the ability of mosquitoes to survive exposure to Olyset was firstly evaluated on the unfed samples collected only in the room. This investigation showed that the three genotypes were significantly different in their distributions (chi-square = 23.4; \\(p\\) < 0.0001) (Figure 5). Analysis of the correlation between each genotype and mortality revealed that _CYP6P9b_ homozygous-resistant mosquitoes (RR) show an increased ability to survive exposure to the Olyset when compared to homozygote-susceptible mosquitoes (SS) (OR = 15.0; CI = 4.5-50.3; \\(p\\) < 0.001) (Figure 5D). Heterozygote mosquitoes (RS) survived exposure to Olyset significantly better than homozygote-susceptible mosquitoes (SS) (OR = 6; CI = 1.9-18.75; \\(p\\) < 0.001). Homozygote-resistant mosquitoes (RR) struggled to survive compared to heterozygotes (OR = 2.4; CI = 1.2-4.8; \\(p\\) = 1) when considering samples from the room only. On the other hand, when considering all the samples, the additive resistance conferred by each allele of _CYP6P9b_ was shown by the fact that homozygote-resistant mosquitoes (RR) could survive significantly better than heterozygotes (OR = 2.5; CI = 1.3-4.8; \\(p\\) < 0.01). Moreover, the strength of this association was further shown by the significant ability to survive exposure when possessing a single _CYP6P9b_-resistant allele (R) compared to the susceptible allele (S) (OR = 2.5; CI = 1.4-4.5; \\(p\\) < 0.01) (Table S4; Figure 5E). The same trend showing a strong association between the _CYP6P9b_ genotypes and the mortality was also observed when analyzing all the samples dead and alive, including the blood-fed mosquitoes and the one collected in the veranda (Table S4).\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}, \"Time_elapsed\": {\"title\": \"Time Elapsed\", \"description\": \"For longitudinal studies: how long since the start of the study, in units of months?Report this value only if explicitly stated in the text.\"}, \"Blood_meal_count\": {\"title\": \"Blood Meal Count\", \"description\": \"Count of blood meals taken by mosquitos over observation period. This is a proxy for time, as mosquitoes in the study were fed blood meals once a week and oviposition recorded at each time step.\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Cameroon\",\"Site\":\"Yaounde\",\"Start_month\":1,\"Start_year\":2023,\"End_month\":6,\"End_year\":2023,\"Time_elapsed\":5.0,\"Blood_meal_count\":4.0},\"S02\":{\"Study_type\":\"Bioassay, WHO cylinder test\",\"Country\":\"Mozambique\",\"Site\":\"Lab facility\",\"Start_month\":2,\"Start_year\":2023,\"End_month\":5,\"End_year\":2023,\"Time_elapsed\":3.0,\"Blood_meal_count\":null}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Synergist_concentration\": {\"title\": \"Synergist concentration (measured)\", \"description\": \"Enter the measured concentration of the synergist.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Untreated\",\"pHI_category\":\"Good\",\"Insecticide\":null,\"Concentration_initial\":null,\"Synergist\":null,\"Synergist_concentration\":null},\"N02\":{\"Net_type\":\"Olyset\",\"pHI_category\":\"Good\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"8.6 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (2%)\",\"Synergist\":null,\"Synergist_concentration\":null},\"N03\":{\"Net_type\":\"Olyset Plus\",\"pHI_category\":\"Good\",\"Insecticide\":\"Permethrin\",\"Concentration_initial\":\"8.6 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (2%)\",\"Synergist\":\"PBO\",\"Synergist_concentration\":\"4.3 \\u00d7 10\\u207b\\u2074 kg\\/m\\u00b2 (1%)\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Trial 2.\n", + "\n", + "1. Untreated net.\n", + "2. PermaNet 3.0 (Vestergaard Sarl).\n", + "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", + "4. PermaNet 3.0 + Bendiocarb IRS applied at 400 mg/m2.\n", + "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", + "6. PermaNet 3.0 + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", + "\n", + "Olyset Plus and PermaNet 3.0 are WHO prequalified pyrethroid-PBO ITNs [3]. Olyset Plus is made of polyethylene filaments coated with 20 g/Kg of permethrin and 10 g/Kg of PBO. PermaNet 3.0 consists of polyester side panels coated with deltamethrin at 2.1 g/kg and a polyethylene roof panel incorporating deltamethrin and PBO at 4.0 g/kg and 25 g/kg respectively.\n", + "\n", + "header: Tunnel tests\n", + "\n", + "The tunnel test consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections using a netting frame fitted into a slot across the tunnel. In one of the sections, a guinea pig was housed unconstrained in a small cage, and in the other section, -100 unfed female mosquitoes aged 5-8 days were released at dusk and left overnight. The net samples were deliberately hoked with nine 1-cm holes to give opportunity for mosquitoes to penetrate the animal bathed chamber for a blood meal an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 oC and 65-85% RH. The next morning, the numbers of mosquitoes found alive or dead, fed or unfed, in each section were scored. Live mosquitoes were provided with 10% glucose solution and delayed mortality was recorded after 24 h. The pyrethroid-PBO ITNs were compared to Olyset Net (a permethrin-only net, Sumitomo chemical) and PermaNet 2.0 (a deltamethrin-only net, Vestergaard Sarl) and an untreated control net. Two to three net pieces were tested per net type.\n", + "\n", + "header: Table 3: Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato exposed to pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination in experimental huts in Cové, southern Benin.\n", + "footer: Results are presented separately for the trials involving Olgest Plus (Trial 1) and PermaNet 3.0 (Trial 2). ‘For each trial, values on this column sharing a superscript letter do not differ significantly, P > 0.05, logistic regression.\n", + "columns: ['Treatment', 'Total females caught', 'Total blood-fed', '% blood-feeding', '95% CIs', '% blood-feeding inhibition', '% personal protection']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total blood-fed\":\"Trial 1\",\"% blood-feeding\":\"Trial 1\",\"95% CIs\":\"Trial 1\",\"% blood-feeding inhibition\":\"Trial 1\",\"% personal protection\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total blood-fed\":\"481\",\"% blood-feeding\":\"72a\",\"95% CIs\":\"69\\u201376\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught\":\"511\",\"Total blood-fed\":\"122\",\"% blood-feeding\":\"24b\",\"95% CIs\":\"20\\u201328\",\"% blood-feeding inhibition\":\"67\",\"% personal protection\":\"75\"},\"3\":{\"Treatment\":\"Benedicarb IRS\",\"Total females caught\":\"556\",\"Total blood-fed\":\"528\",\"% blood-feeding\":\"95c\",\"95% CIs\":\"93\\u201397\",\"% blood-feeding inhibition\":\"\\u201331\",\"% personal protection\":\"\\u2013 10\"},\"4\":{\"Treatment\":\"Olyset Plus + bendicarb IRS\",\"Total females caught\":\"288\",\"Total blood-fed\":\"64\",\"% blood-feeding\":\"22b\",\"95% CIs\":\"17\\u201327\",\"% blood-feeding inhibition\":\"69\",\"% personal protection\":\"87\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total blood-fed\":\"420\",\"% blood-feeding\":\"79d\",\"95% CIs\":\"76\\u201383\",\"% blood-feeding inhibition\":\"\\u20139\",\"% personal protection\":\"13\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total blood-fed\":\"47\",\"% blood-feeding\":\"16e\",\"95% CIs\":\"11\\u201320\",\"% blood-feeding inhibition\":\"79\",\"% personal protection\":\"90\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total blood-fed\":\"Trial 2\",\"% blood-feeding\":\"Trial 2\",\"95% CIs\":\"Trial 2\",\"% blood-feeding inhibition\":\"Trial 2\",\"% personal protection\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total blood-fed\":\"391\",\"% blood-feeding\":\"67u\",\"95% CIs\":\"64\\u201371\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total blood-fed\":\"115\",\"% blood-feeding\":\"24v\",\"95% CIs\":\"20\\u201327\",\"% blood-feeding inhibition\":\"65\",\"% personal protection\":\"71\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total blood-fed\":\"519\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 33\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught\":\"233\",\"Total blood-fed\":\"54\",\"% blood-feeding\":\"23v\",\"95% CIs\":\"18\\u201329\",\"% blood-feeding inhibition\":\"66\",\"% personal protection\":\"86\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total blood-fed\":\"406\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 4\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"},\"14\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"}}\n", + "\n", + "header: 3.2.2 Tumed test bioassays.\n", + "\n", + "To further assess the efficacy of the pyrethroid-PBO ITNs and help explain the findings in the experimental huts, tunnel tests were performed using the susceptible _An. gambiae_ Kisum strain and pyrethroid-resistant _An. gambiae_ as from Cove on net samples (30 x 30 cm) obtained from Olyset Plus and Permaket 3.0 nets. The tunnel test is an overnight animal baulesar what simulates host-seeking behaviour of vector mosquitoes under controlled laboratory conditions. Both pyrethroid-PBO ITNs were compared to pyrethroid-only nets which contained similar pyrethroid-insecticles (Olyset Net and Permaket 2.0). Mosquito mortality rates observed in the tunnels are presented in Fig. 3. Mortality in the control tunnels was 11% with the susceptible Kisum strain and 2% with the pyrethroid-resistant Cove strain. All ITN types induced >8% mortality with the susceptible Kisum strain. Olyset Plus killed significantly higher proportions of the Cove mosquitoes compared to Olyset Net (90% vs. 42%). With Permaket 3.0, mortality of Cove mosquitoes exposed to net prices obtained from the PBO treated root of the net (68%) was higher compared to net prices obtained from the sides of the net (34%) and Permaket 2.0 (27%). The results, therefore, showed higher levels of mortality against pyrethroid-resistant mosquitoes from the Cove experimental hut station with the pyrethroid-PBO ITNs relative to pyrethroid-only nets. More detailed results from the tunnel tests are available in the supplementary information (Table S1).\n", + "\n", + "header: Table 2. Entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination.\n", + "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", + "er signi\u001fcantly, P>0.05, negative binomial regression for females caught and logistic regression for exophily.\n", + "columns: ['Treatment', 'Total females caught*', '% deterrence', 'Total exiting', '% exophily*', '95% CIs']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught*\":\"Trial 1\",\"% deterrence\":\"Trial 1\",\"Total exiting\":\"Trial 1\",\"% exophily*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"664a\",\"% deterrence\":\"-\",\"Total exiting\":\"241\",\"% exophily*\":\"36a\",\"95% CIs\":\"33\\u201340\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught*\":\"511a\",\"% deterrence\":\"23\",\"Total exiting\":\"390\",\"% exophily*\":\"76b\",\"95% CIs\":\"73\\u201380\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"556a\",\"% deterrence\":\"16\",\"Total exiting\":\"282\",\"% exophily*\":\"51c\",\"95% CIs\":\"47\\u201355\"},\"4\":{\"Treatment\":\"Olyset Plus + bendiocarb IRS\",\"Total females caught*\":\"288b\",\"% deterrence\":\"57\",\"Total exiting\":\"228\",\"% exophily*\":\"79b\",\"95% CIs\":\"75\\u201384\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"531a\",\"% deterrence\":\"20\",\"Total exiting\":\"281\",\"% exophily*\":\"53c\",\"95% CIs\":\"49\\u201357\"},\"6\":{\"Treatment\":\"Olyset plus + P-methyl IRS\",\"Total females caught*\":\"304b\",\"% deterrence\":\"54\",\"Total exiting\":\"270\",\"% exophily*\":\"89d\",\"95% CIs\":\"85\\u201392\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught*\":\"Trial 2\",\"% deterrence\":\"Trial 2\",\"Total exiting\":\"Trial 2\",\"% exophily*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"581u\",\"% deterrence\":\"-\",\"Total exiting\":\"226\",\"% exophily*\":\"39u\",\"95% CIs\":\"35\\u201343\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught*\":\"488u\",\"% deterrence\":\"16\",\"Total exiting\":\"369\",\"% exophily*\":\"76v\",\"95% CIs\":\"72\\u201379\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"575u\",\"% deterrence\":\"1\",\"Total exiting\":\"360\",\"% exophily*\":\"63w\",\"95% CIs\":\"59\\u201367\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught*\":\"233v\",\"% deterrence\":\"60\",\"Total exiting\":\"185\",\"% exophily*\":\"79v\",\"95% CIs\":\"74\\u201385\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"450u\",\"% deterrence\":\"23\",\"Total exiting\":\"311\",\"% exophily*\":\"69x\",\"95% CIs\":\"65\\u201373\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught*\":\"223v\",\"% deterrence\":\"62\",\"Total exiting\":\"195\",\"% exophily*\":\"87y\",\"95% CIs\":\"83\\u201392\"}}\n", + "\n", + "header: scientific reports: Abstract\n", + "\n", + "OPEN : Pyrethroid-piperonyl butoxide (PBO) nets reduce the efficacy of indoor residual spraying with pirimiphos-methyl against pyrethroid-resistant malaria vectors\n", + "\n", + "Thomas Syme, Mariai Ghegbo, Dorothy Obuobi, Augustin Fongnikin, Abel Agbevo, Damien Todjinou, & Corine Ngufori\n", + "\n", + "\n", + "Primiphos-methyl is a pro-insecticide requiring activation by mosquito cytochrome P450 enzymes to induce toxicity while PBO blocks activation of these enzymes in pyrethroid-resistant vector mosquitoes. PBO may thus antagonise the toxicity of pirimiphos-methyl IRS when combined with pyrethroid-PBO ITMs. The impact of combining Olyset Plus and PermaNet 3.0 with Actellite 300CS IRS was evaluated against pyrethroid-resistant _Anopheles gambiae_ s.l. in two parallel experimental hut trials in southern Benin. The vector population was resistant to pyrethroids and PBO pre-exposure partially restored deltamethrin toxicity but not permitting. Mosquito mortality in experimental huts was significantly improved in the combinations of bendicocarp IRS with pyrethroid-PBO ITMs (33-3896) compared to bendicocarp IRS alone (14-16%, p < 0.001), demonstrating an additive effect. Conversely, mortality was significantly reduced in the combinations of pirimiphos-methyl IRS with pyrethroid-PBO ITMs (55-59%) compared to pirimiphos-methyl IRS alone (77-78%, p < 0.001), demonstrating evidence of an antagonistic effect when both interventions are applied in the same household. Mosquito mortality in the combination was significantly higher compared to the pyrethroid-PBO ITMs alone (55-59% vs. 22-26% p < 0.001) showing potential of pirimiphos-methyl IRS to enhance vector control when deployed to complement pyrethroid-PBO ITMs in an area where PBO fails to fully restore susceptibility to pyrethroids.\n", + "\n", + "header: Conclusion\n", + "\n", + "Our study provides the first evidence of an antagonistic effect when pyrethroid-PBO ITNs are combined with pirimphos-methyl IRS in the same household resulting in lower levels of vector mosquito mortality compared to the IRS alone. In line with WHO recommendations, vector control programmes faced with multiple choice of ITN types to deploy as an additional intervention to improve vector control impact in an area dedicated to IRS with pirimphos-methyl, may consider other types of ITNs like pyrethroid-ITNs which can better complement pirimphos-methyl IRS when deployed together. Nevertheless, the pyrethroid-PBO ITNs performed poorly probably due to the lower levels of restoration of pyrethroid susceptibility with PBO in the vector population. Combining these nets with pirimphos-methyl IRS provided significantly improved vector control compared to the net alone demonstrating the potential for pirimphos-methyl IRS to enhance malaria control when deployed to complement pyrethroid-PBO ITNs in areas where PBO fails to fully restore susceptibility to pyrethroids.\n", + "\n", + "header: Table 4.Mortality results of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs, and pirimiphos-methyl IRS applied alone and in combination.\n", + "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", + "er signi\u001fcantly, p>0.05, logistic regression\n", + "columns: ['Treatment', 'Total females caught', 'Total dead', '% mortality*', '95% CIs']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total dead\":\"Trial 1\",\"% mortality*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total dead\":\"22\",\"% mortality*\":\"3a\",\"95% CIs\":\"2\\u20135\"},\"2\":{\"Treatment\":\"Olyset Plus\",\"Total females caught\":\"511\",\"Total dead\":\"114\",\"% mortality*\":\"22b\",\"95% CIs\":\"19\\u201326\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"556\",\"Total dead\":\"87\",\"% mortality*\":\"16c\",\"95% CIs\":\"13\\u201319\"},\"4\":{\"Treatment\":\"Olyset Plus + Bendiocarb IRS\",\"Total females caught\":\"288\",\"Total dead\":\"95\",\"% mortality*\":\"33d\",\"95% CIs\":\"28\\u201338\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total dead\":\"411\",\"% mortality*\":\"77e\",\"95% CIs\":\"74\\u201381\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total dead\":\"178\",\"% mortality*\":\"59f\",\"95% CIs\":\"53\\u201364\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total dead\":\"Trial 2\",\"% mortality*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total dead\":\"12\",\"% mortality*\":\"2u\",\"95% CIs\":\"1\\u20133\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total dead\":\"127\",\"% mortality*\":\"26v\",\"95% CIs\":\"22\\u201330\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total dead\":\"80\",\"% mortality*\":\"14w\",\"95% CIs\":\"11\\u201317\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + Bendiocarb IRS\",\"Total females caught\":\"233\",\"Total dead\":\"89\",\"% mortality*\":\"38x\",\"95% CIs\":\"32\\u201344\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total dead\":\"350\",\"% mortality*\":\"78y\",\"95% CIs\":\"74\\u201382\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total dead\":\"122\",\"% mortality*\":\"55z\",\"95% CIs\":\"48\\u201361\"}}\n", + "\n", + "header: Materials and methods\n", + "\n", + "Adult F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hut station were exposed to filter papers treated with discriminating doses of deltamethrin (0.05%), permethrin (0.75%), benchicaro (0.1%) and pirimphos-methyl (0.25%) in WHO cylinders8. Deltamethrin and perme-thrin were also tested with 60 min pre-exposure to PBO (4%) to assess the involvement of metabolic enzymes in pyrethroid resistance. A comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain. Approximately 100, 3-5-day old mosquitoes of each strain were exposed to each insecticide for 60 min in four batches of 20-25. Similar numbers of mosquitoes were concurrently exposed to untreated filter papers as a control. At the end of exposure, mosquitoes were transferred to appropriately labelled holding tubes, provided access to 10% (w/v) glucose solution, and held at 27 +- 2degC and 75 +- 10% relative humidity. Knockdown was recorded 60 min after exposure and delayed mortality after 24 h for all treatments. The insecticide-treated filter papers were obtained from Universiti Sains Malaysia.\n", + "\n", + "header: Study site and experimental hut treatments.: Trial 1.\n", + "\n", + "1. Untreated net.\n", + "2. Olyset Plus (Sumitomo Chemical).\n", + "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", + "4. Olyset Plus + Bendiocarb IRS applied at 400 mg/m2.\n", + "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", + "6. Olyset Plus + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", + "\n", + "header: Experimental hut results.\n", + "\n", + "_Mosquito entry and exiting in experimental huts._\n", + "\n", + "A total of 5,404 wild female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trials (Table 2). In both trials, mosquito entry in huts with the pyrethroid-PBO ITN alone and IRS treatments alone did not differ significantly from the controls (p > 0.05) but was significantly reduced with the pyrethroid-PBO ITN plus IRS combinations compared to the single treatments (p < 0.01). Mosquito entry rates did not also differ between the combinations of the pyrethroid-PBO ITN with bendiocarb IRS relative to the combinations with pirimiphos-methyl IRS (p < 0.05). Nevertheless, IRS treatments could not be rotated and thus, treatment-induced deterrence cannot be fully distinguished from differential attractiveness due to hut position.\n", + "\n", + "The proportion of mosquitoes exiting into the veranda of the huts with the untreated net controls was 36% and 39% for Trials 1 and 2 respectively. Exiting rates were higher with the pyrethroid-PBO ITNs alone (76%) relative to the IRS insecticides alone (51-63% with bendiocarb and 53-69% with pirimiphos-methyl IRS, p < 0.005). In both trials, the highest levels of mosquito exiting were achieved with the pyrethroid-PBO ITN plus IRS combinations (79% with bendiocarb and 87-89% with pirimiphos-methyl IRS). Between the combinations, adding\n", + "primiphos-methyl IRS to the pyrethroid-PBO ITN provided significantly higher levels of mosquito exiting relative to adding bendicord IRS (87-89% vs. 79%, P < 0.05).\n", + "\n", + "Blood-feeding rates of wild malaria vector mosquitoes in experimental huts.Blood-feeding rates in huts with the untreated net controls were 72% and 67% for Trials 1 and 2 respectively (Table 3). The IRS treatments did not provide any blood-feeding inhibition relative to the controls. Blood-feeding inhibition rates were high with the pyrethroid-PBO ITN plus IRS combinations in both trials (69-79% with Olyst Plus and 63-66% with PermaNet 3.0) and this was generally similar to what was observed with the pyrethroid-PBO ITNs alone (67% with Olyst Plus and 65% with PermaNet, P > 0.05) showing that the high levels of blood-feeding inhibition in the combinations, was mostly due to the ITNs. Blood-feeding inhibition with the PermaNet 3.0 plus primiphos-methyl IRS combination (66%) was similar to the PermaNet 3.0 plus bendicord IRS combination (63%, P = 0.71) meanwhile the Olyset Plus and primiphos-methyl IRS combination induced higher levels of blood-feeding inhibition compared to the Olyst Plus and bendicord IRS combination (79% vs. 69%, P = 0.036) (Table 3). Personal protection levels showed a similar trend and were also higher with the combinations (86-90%) relative to the IRS alone (- 33-13%).\n", + "\n", + "Mortality rates of wild malaria vector mosquitoes in experimental huts.\n", + "\n", + "Wild vector mosquito mortality in the controls was 3% in Trial 1 and 2% in Trial 2 (Table 4). The pyrethroid-PBO ITNs killed relatively low mosquito proportions (22% with Olgest Plus and 26% with PermaNet 3.0) though this was higher than what was observed with benedicarb IRS alone (14% in Trial 1 and 16% in Trial 2, P < 0.10). The highest mortality was achieved with pirimphos-methyl IRS alone (77% in Trial 1 and 78% in Trial 2). In both trials, mortality in the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations was significantly reduced compared to pirimphos-methyl IRS alone (77% with pirimphos-methyl IRS vs. 59% with Olgest Plus pirimphos-methyl IRS, P < 0.001 and 78% with pirimphos-methyl IRS vs. 55% with PermaNet 3.0 plus pirimphos-methyl IRS, P < 0.001), demonstrating an antagonistic effect. Conversely, mortality was significantly higher in the combinations of benedicarb IRS with Olgest Plus (33%) and PermaNet 3.0 (38%) than benedicarb IRS alone (14-16%, P < 0.001), demonstrating an additive effect (Table 4). Nevertheless, both pyrethroid-PBO plus IRS combinations induced significantly higher\n", + "\n", + "mortality compared to the pyrethroid-PBO ITNs alone (P < 0.001). Between the combinations, mortality was consistently higher with the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations (55-59%) compared to the pyrethroid-PBO ITN plus pedicocarb IRS (33-39%, P < 0.001).\n", + "\n", + "The monthly mortality rates of wild vector mosquitoes which entered the experimental huts during the trials are presented in Fig. 1 for the combinations with pedicocarb IRS and Fig. 2 for the combinations with pirimiphos-methyl IRS. In both trials, mosquito mortality rates in huts with the pyrethroid-PBO ITNs plus pedicocarb IRS declined sharply over time from 65-75% in month 1 to 33-38% in month 3, nevertheless, it was consistently higher than the single treatments alone (Fig. 1). Mosquito mortality in the combination of Olyset Plus and pirimiphos-methyl IRS was similar to the IRS alone in month 1 (> 90%) but declined substantially relative to the IRS in subsequent months. With the PermaNet 3.0 plus pirimiphos-methyl IRS combination,\n", + "\n", + "Figure 1.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pedicocarb IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Oyset Plus (Trial 1) and panel (**b**) presents results from the trial with PermaNet 3.0 (Trial 2). Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from onset of the trial. Mosquito mortality in the control untreated huts did not exceed 5% at any time point.\n", + "\n", + "Figure 2.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pirimiphos-methyl IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Olyset Plus and panel (**b**) presents results from the trial with PermaNet 3.0. Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from the onset of the trial.\n", + "\n", + "\n", + "mosquito mortality was consistently lower than the IRS alone throughout the trial. Through the four months of the trials, the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations consistently induced higher levels of mosquito mortality relative to the pyrethroid-PBO ITNs alone.\n", + "\n", + "header: Results\n", + "\n", + "Experimental huts are used to assess the capacity of indoor vector control interventions to prevent wild vector mosquito entry and feeding and induce early mosquito exiting and mortality when applied in a human-occupied house, under carefully controlled conditions [3,12]. The hut trials were conducted at the CREC/LSHTM experimental hut station in Cowe, southern Benin (7deg14'N22deg18E), situated in a vast area of rice irrigation, which provides extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzini_ and _An. gambiae_ sensu stricto (s.s.) occur in symparity, with the latter present at lower densities and predominantly in the dry season. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold). Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (> 90%) and overexpression of CYP6P3, an enzyme associated with pyrethroid detoxification [3].\n", + "\n", + "Two experimental hut trials were performed in parallel for 4 months between April and July 2020. Trial 1 assessed the impact of combining Olyset Plus (Sumitomo Chemical), a permethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS while Trial 2 assessed the impact of combining PermaNet 3.0 (Vestergaard Sarl), a deltamethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS.\n", + "\n", + "The following six treatments were tested in each of the experimental hut trials:\n", + "\n", + "header: Data analysis.\n", + "\n", + "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental but treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to the differential attractiveness of the volunteer sleepers and huts. Results from the different experimental hut trials involving Olyset Plus and PermaNet 3.0 were analysed separately. Susceptibility bioassay results were interpreted according to WHO criteria49. All analyses were performed in Stata version 15.1.\n", + "\n", + "header: Abbreviations\n", + "\n", + "IRS Indoor residual spraying\n", + "\n", + "WHO World Health Organization\n", + "\n", + "PQ Prenqualification team\n", + "\n", + "PBO Piperonyl butoxide\n", + "\n", + "ITN Insecticide treated net\n", + "\n", + "LLIN Long-lasting insecticidal net\n", + "\n", + "GPIRM Global plan for insecticide resistance management\n", + "\n", + "WHOPES WHO pesticide evaluation scheme\n", + "\n", + "CREC Centre de Recherche Entomologique de Cotonou\n", + "\n", + "LSHTTM London School of Hygiene & Tropical Medicine\n", + "\n", + "Kdr Knockdown resistance\n", + "\n", + "PAMVERC Pan African Malaria Vector Research Consortium\n", + "\n", + "The large-scale implementation of long-lasting insecticidal nets (LLINs), and indoor residual spraying (IRS) has resulted in profound reductions in malaria-associated morbidity and mortality across sub-Saharan Africa, over the last two decades1. Unfortunately, resistance to the insecticides applied through these interventions, especially the pyrethroids, is now pervasive in vector populations in malaria-endemic countries', threatening to undermine their impact. In response, a new generation of novel LLINs and IRS based on new active ingredients with the potential to sustain vector control impact in the face of increasing resistance, have been developed3. This includes dual insecticide-treated nets containing a pyrethroid and an alternative effective new compound as well as new IRS insecticides with novel modes of action or improved formulations that have shown potential to provide enhanced control of insecticide-resistant malaria vector populations.\n", + "\n", + "Insecticide-treated nets (ITNs) combining a pyrethroid and piperonyl butoxido (PBO) were the first novel class of ITNs to be developed for malaria vector control. PBO is a synergism that can enhance the impact of pyrethroids and other insecticides by inhibiting metabolic detoxification enzymes associated with resistance, notably cytochrome P450 monooxygenases3. These nets received a conditional endorsement from the World Health Organisation (WHO) in 2017 based on results from a cluster-randomised controlled trial (CRT) in Tanzania demonstrating a reduction in malaria prevalence in communities allocated to pyrethroid-PBO ITNs relative to pyrethroid-only ITNs4. A full policy recommendation is now expected after results from a second CRT in Uganda also showed that two brands of pyrethroid-PBO ITNs reduced malaria prevalence relative to pyrethroid-only nets4. The WHO endorsement and expanding evidence base for the public health value of pyrethroid-PBO ITNs has prompted mass procurement of these nets by international malaria control agencies4,5. The proportion of pyrethroid-PBO ITNs of all ITNs delivered in sub-Saharan Africa has consequently risen from 3% in 2018 to 35% in 202112; pyrethroid-PBO ITNs are therefore replacing pyrethroid-only nets in many malaria-endemic countries.\n", + "\n", + "The increasing distribution and intensity of pyrethroid resistance has also affected malaria control policy regarding insecticide choice for IRS over the last decade. To improve vector control impact and preserve pyrethroids for ITNs, African IRS programmes partly suspended the use of pyrethroids and organochlorines in favour of carbamates and organophosphates5,12. Whilst both insecticides showed high toxicity against malaria vectors, the short residual duration of the initial formulations approved for IRS proved prohibitive, necessitating the development of longer-lasting formulations13. A new microencapsulated formulation of pirimphos-methyl was later developed (Actellic 300CS) demonstrating prolonged activity against pyrethroid-resistant malaria vector mosquitoes, lasting up to 9 months14,15. This formulation subsequently served as the insecticide of choice for the majority of IRS programmes in sub-Saharan Africa1 providing substantial control of mosquito vectors and malaria across distinct eco-epidemiological settings6,16-22.\n", + "\n", + "[MISSING_PAGE_POST]\n", + "\n", + "header: Discussion\n", + "\n", + "Given the inhibitory effect of PBO on mosquito cytochrome P450 enzymes, the WHO had temporarily recommended against the use of pyrethroid-PBO ITN in areas programmed for IRS with pirimiphos-methyl IRS until further evidence on the potential antagonism between PBO and the organo-thiophosphate pro-insecticide becomes available20. In this study, we found evidence of an antagonistic effect when pyrethroid PBO ITNs were combined with pirimiphos-methyl IRS in the same household in a pyrethroid-resistant area in Southern Benin where resistance was partly conferred by over-expression of mosquito cytochrome P450 enzymes20. Unlike the combination of the pyrethroid-PBO nets with bendicorab IRS which provided improved vector mosquito mortality compared to bendicorab IRS alone, combining these nets with pirimiphos-methyl IRS induced significantly lower levels of vector mosquito mortality rates compared to pirimiphos-methyl IRS alone. This effect\n", + "\n", + "Figure 3.: Mortality (24 h) of susceptible _Anopheles gambiae_ Kisumu and pyrethroid-resistant _An. gambiae_ s.l. Cove strains exposed to Olyset Plus and Permaket 3.0 in tunnel tests. Error bars represent 95% CIs. Both pyrethroid-PBO nets were compared to pyrethroid-only nets (Olyset Net and Permaket 2.0). Permaket 3.0 contains PBO only on the roof of the net. With both strains, 80–120 mosquitoes were exposed overnight to metting pieces cut from whole nets in 2–3 replicate tunnel tests.\n", + "\n", + "\n", + "was remarkably similar between the two brands of pyrethroid-PBO ITNs tested across both hut trials indicating that the negative interaction of the combination on mosquito mortality was less affected by the design and specifications of the pyrethroid-PBO ITN. Wild vector mosquitoes which entered the huts with the combined treatment may have contacted the pirimphos-methyl IRS on the hut wall only after picking up PBO from the ITN while attempting to blood-feed on the sheeper under the net. This pre-exposure to PBO on the ITN could have prevented the metabolic activation of the IRS insecticide in these mosquitoes, resulting in lower mortality rates relative to the IRS alone. This finding supports WHO's recommendation against the deployment of pyrethroid-PBO ITNs in areas that have already been programmed for IRS with pirimphos-methyl IRS. This is mostly important from a programmatic perspective where a vector control programme is faced with multiple choice of ITN types to deploy as an additional intervention to enhance vector control impact in an area that is already dedicated to IRS with pirimphos-methyl. In such a scenario, other types of ITNs like pyrethroid-only nets that were recently shown to complement pirimphos-methyl IRS when applied together23, should be considered.\n", + "\n", + "These findings should however not be interpreted to mean that pirimphos-methyl IRS must not be deployed to complement pyrethroid-PBO ITNs. Though pyrethroid-PBO ITNs have consistently shown improved performance in experimental hut trials against pyrethroid-resistant malaria vectors compared to pyrethroid-only nets34, the margin appears to vary depending on the intensity and mechanisms of pyrethroid-resistance encountered. In our study, the pyrethroid-PBO ITNs when applied alone in a hut induced low vector mosquito mortality (22-26%) compared to what has been observed in hut trials against the same vector population with another type of novel dual ITN (71-76%)35,40. Low levels of mosquito mortality in huts with pyrethroid-PBO ITNs and failure of PBO to fully restore pyrethroid susceptibility in bioassays have also been reported from studies in Burkina Faso37, Cameroon38, Cote d'Ivoire39 and Senegal40. This may indicate the presence of complex resistance mechanisms in the West African region unaffected by PBO. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors which continues to increase over time41, yet the public health value of pyrethroid-PBO ITNs has not been assessed in the region. It is therefore unclear whether these nets will provide the same improved epidemiological impact over pyrethroid-only nets in West Africa as observed in the East African community trials which have been the basis of their endorsement for malaria control. Our results showed a significant improvement in mosquito mortality when pirimphos-methyl IRS was combined with the pyrethroid-PBO ITNs (55-59%) compared to the pyrethroid-PBO ITNs alone (22-26%). Mosquito entry and feeding rates were also significantly lower with the combination compared to the pyrethroid-PBO ITNs alone. This provides some justification for deploying pirimphos-methyl IRS to complement pyrethroid-PBO nets in an area of high and complex pyrethroid-resistance where local vectors are less susceptible to the synergistic effect of PBO. Due to the limited choice of insecticides available for IRS, where a beneficial effect of the combination compared to the pyrethroid-PBO ITN alone has been established, pirimphos-methyl IRS should continue to be used even in the presence of high coverage with pyrethroid-PBO ITNs, preferably as part of an IRS rotational strategy. In line with WHO recommendations for insecticide resistance management42, the sustained rotation of multiple insecticide modes of action for IRS may help preserve efficacy to insecticides approved for IRS.\n", + "\n", + "Footnote 3: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 4: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 5: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 6: [https://doi.org/10.1038/s41598-022-10953-](https://doi.org/10.1038/s41598-022-10953-)\n", + "\n", + "y\n", + "\n", + "Footnote 7: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 8: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 9: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 10: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 11: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 12: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 13: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 14: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 15: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 16: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 17: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 18: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 19: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 20: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 21: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 22: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 23: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 24: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 25: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 26: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 27: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 28: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 29: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 30: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 31: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 32: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 333: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 34: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 35: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 36: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 37: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 38: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 39: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 40: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 41: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 42: https://doi.org/10.1038/s415\n", + "\n", + "\n", + "following pre-exposure to PBO, restoration of susceptibility to permethrin--the pyrethroid insecticide used on the pyrethroid-PBO ITN tested in the Tanzanian trial (Olvest Plus)--was high in the vector population from the study area (from 18 to 94%)15. Hence, the level of control achieved with pyrethroid-PBO ITN alone in the Tanzanian trial may have been optimal making the addition of pirimphos-methyl IRS unnecessary. This may not be the case in many communities in West Africa considering the afore-mentioned low levels of pyrethroid-PBO synergism reported in susceptibility bioassays and hut trials conducted across the region; in contrast, the addition of pirimphos-methyl IRS to pyrethroid-PBO ITNs in these communities could be more beneficial for control of clinical malaria compared to the ITN alone. As the range of vector control products available to vector control programmes expands, the choice of interventions and product brands must be aligned to local contexts and guided by local evidence. To help guide vector control policy, epidemiological trials and/or other empirical studies investigating the impact and cost-effectiveness of pyrethroid-PBO nets in communities in the West African region as well as their combination with IRS using pro-insectiles like pirimphos-methyl will be necessary.\n", + "\n", + "Although the inhibitory effect of PBO on mosquito cytochrome P450 enzymes formed the basis of our hypothesis for the antagonism observed between pirimphos-methyl IRS and pyrethroid-PBO ITNs in the experimental huts, behavioural interactions could also have contributed. In both trials, mosquito exiting rates into the veranda traps and blood-feeding inhibition were consistently higher in the combinations compared to the IRS insecticides alone. This could be attributed to the excitro-replenent property of the pyrethroid in the ITN stimulating directed movement of mosquitoes away from their source44. This early exiting effect was however significantly higher in the combination with pirimphos-methyl IRS compared to the combination with bendo-carb IRS suggesting a behavioural interaction in the presence of pirimphos-methyl that may have driven more mosquitoes to exit into the veranda, thus reducing mosquitoes' contact with pirimphos-methyl IRS treated walls. This may have compromised the impact of the pirimphos-methyl IRS in the combination compared to when applied alone and to the combination with bendoicarb. Further studies to assess mosquito flight behaviour, in the presence of the combinations would provide useful insight into behavioural interactions between the treatments. Controlled laboratory assays which minimise behavioural responses and assess P450 enzyme activity in exposed mosquitoes, could also elucidate the potential role of P450 enzyme inhibition in the antagonism observed in the experimental huts.\n", + "\n", + "While our trial focused on investigating the impact of combining pyrethroid-PBO ITNs with pirimphos-methyl IRS in the same households, there is a paucity of information on the interactions between these nets and other newly developed vector control products which contain new public health insecticides such as the neonciotohal, clothidinium and the pyrrole chlorfenapxy. Chlorfenapxy, an insecticide used on ITNs13 and being considered for IRS6,46, also requires activation by mosquito P450 enzymes6. Laboratory experiments have indicated the potential of PBO to antagonise the toxicity of chlorfenapxy against mosquitoes in bioassays29,30. Studies investigating the impact of co-deploying pyrethroid-PBO ITNs together with pyrethroid-chlorfenapxy ITNs or chlorfenapxy IRS in the same household will be essential to help inform optimal co-deployment policy.\n", + "\n", + "header: Hut trial outcome measures\n", + "\n", + "The efficacy of the experimental hut treatments was expressed in terms of the following outcome measures:\n", + "\n", + "1. Deterrence (%)--proportional reduction in the number of mosquitoes collected in the treated hut relative to the number collected in the control.\n", + "2. Exophily (%)--exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda trap.\n", + "3. Blood-feeding inhibition (%)--proportional reduction in blood-feeding in the treated hut relative to the control. Calculated as follows: \\[\\mathit{Blood\\ feeding\\ inhibition}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bfu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", + "4. Mortality (%)--proportion of dead mosquitoes 24 h after collection.\n", + "5. Personal protection (%)--reduction in the number of blood-fed mosquitoes in the treated hut relative to the untreated net control. Calculated as follows: \\[\\mathit{Personal\\ protection}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", + "\n", + "header: Susceptibility of wild vector mosquitoes at Cove to insecticides.\n", + "\n", + "WHO susceptibility bioassays were conducted in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove hit site to the constituent insecticides of the experimental hut treatments. Mortality rates of F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hit station following exposure to discriminating doses of deltamethrin and permethrin in WHO cylinder bioassays were low (42% and 11% respectively), confirming a high frequency of pyrethroid resistance in the Cove vector population (Table 1). Pre-exposure to PBO significantly improved mortality with deltamethrin (42% vs. 72%) but not with permethrin (11% vs. 8%). Mortality rates with the discriminating doses of bendiocarb and pirimiphos-methyl were 98% and 99% respectively. This demonstrated susceptibility to pirimiphos-methyl and bendiocarb. All insecticides induced 100% mortality with the laboratory-maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu strain. No mortality was recorded in the control with either strain.\n", + "\n", + "header: Experimental hut trial procedure\n", + "\n", + "During the hut trials, volunteer sleepers were rotated between experimental huts daily to mitigate the impact of individual attractiveness whilst bed nets were rotated weekly between the huts to reduce the impact of hut position on mosquito entry. Three (3) replicate bed nets were used per treatment and rotated within the treatment every 2 days. IRS treatments cannot be rotated and thus remained fixed throughout the trial. Consenting human volunteer sleepers alert in experimental huts between 21:00 and 06:00 to attract free-flying mosquitoes. Each morning, volunteer sleepers collected all live and dead mosquitoes from the different compartments of the hut (under the net, room, veranda) using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were then transferred to the field laboratory for morphological identification using taxonomic keys and scoring of immediate mortality and blood-feeding. All live, female _An. gambiae_ s.l. were provided access to 10% glucose (w/v) solution and held at ambient conditions in the field laboratory. Delayed mortality was recorded after 24 h for all treatments. Mosquito collections were performed 6 nights per week and on the 7th day, huts were cleaned and aired in preparation for the next rotation cycle.\n", + "\n", + "header: Wall cone bioassays\n", + "\n", + "The laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain and wild pyrethroid-resistant _An. gambiae_ s.l. Cove mosquitoes (F1) derived from breeding sites at the hut station were used for this purpose. At each time point, five cones were attached to the walls and ceiling of the IRS-treated huts. Approximately 50, 3-5-day old mosquitoes were transferred into cones in 5 batches of 10 and exposed to the treated surfaces for 30 min. As a control, mosquitoes were exposed in cones attached to the walls and ceiling of an unsprayed hut. At the end of exposure, mosquitoes were transferred to netted, plastic cups. Mosquitoes were provided access to 10% (w/v) glucose solution and delayed mortality after 24 h for all treatments.\n", + "\n", + "\n", + "Ethical considerations.Ethical approval for the conduct of the study was obtained from the ethics review boards of the Beninese Ministry of Health (No. 34) and the London School of Hygiene & Tropical Medicine (Ref: 16969). All human volunteer sleepers gave informed written consent prior to their participation; where necessary, the consent form and information sheet were explained in their local language. They were offered a free course of chemoprophylaxis spanning the duration of the trial and up to 3 weeks following its completion. A stand-by nurse was available for the duration of the trial to assess any cases of fever or adverse reactions to test items. Any confirmed cases of malaria were treated free of charge at a local health facility. Animals used as baits in tunnel test were maintained following institutional standard operating procedures (SOPs) designed to improve care and protect animals used for experimentation. All studies were performed according to relevant national and international guidelines.\n", + "\n", + "header: 3.2.3 Wall cone bioassays.\n", + "\n", + "WHO wall cone bioassays were performed on the IRS treated experimental hut walls 1 week, 2 months and 4 months after application of IRS treatments to assess their residual efficacy with increasing time elapsed from spraying. Mortality rates of the insecticide-susceptible _An. gambiae_ s.s. Kisum strain and pyrethroid-resistant _An. gambiae_ s.l. Cove strain following exposure to IRS-treated surfaces in 30 min wall cone bioassays are presented in Fig. 4. Mortality of mosquitoes exposed to pirimiphos-methyl treated walls was high (>90%) at all time points with both strains, showing no evidence of a decline in residual activity. In contrast, wall cone bioassay mortality on bendicor-treated surfaces declined rapidly, beginning at 67% and 39% in week 1 and falling to lows of 2% and 3% in month 4 with the Kisum and Cove strains respectively. No mortality was recorded in the controls at any time point with either strain.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Trial 2.\n", + "\n", + "1. Untreated net.\n", + "2. PermaNet 3.0 (Vestergaard Sarl).\n", + "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", + "4. PermaNet 3.0 + Bendiocarb IRS applied at 400 mg/m2.\n", + "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", + "6. PermaNet 3.0 + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", + "\n", + "Olyset Plus and PermaNet 3.0 are WHO prequalified pyrethroid-PBO ITNs [3]. Olyset Plus is made of polyethylene filaments coated with 20 g/Kg of permethrin and 10 g/Kg of PBO. PermaNet 3.0 consists of polyester side panels coated with deltamethrin at 2.1 g/kg and a polyethylene roof panel incorporating deltamethrin and PBO at 4.0 g/kg and 25 g/kg respectively.\n", + "\n", + "header: Tunnel tests\n", + "\n", + "The tunnel test consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections using a netting frame fitted into a slot across the tunnel. In one of the sections, a guinea pig was housed unconstrained in a small cage, and in the other section, -100 unfed female mosquitoes aged 5-8 days were released at dusk and left overnight. The net samples were deliberately hoked with nine 1-cm holes to give opportunity for mosquitoes to penetrate the animal bathed chamber for a blood meal an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 oC and 65-85% RH. The next morning, the numbers of mosquitoes found alive or dead, fed or unfed, in each section were scored. Live mosquitoes were provided with 10% glucose solution and delayed mortality was recorded after 24 h. The pyrethroid-PBO ITNs were compared to Olyset Net (a permethrin-only net, Sumitomo chemical) and PermaNet 2.0 (a deltamethrin-only net, Vestergaard Sarl) and an untreated control net. Two to three net pieces were tested per net type.\n", + "\n", + "header: Table 3: Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato exposed to pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination in experimental huts in Cové, southern Benin.\n", + "footer: Results are presented separately for the trials involving Olgest Plus (Trial 1) and PermaNet 3.0 (Trial 2). ‘For each trial, values on this column sharing a superscript letter do not differ significantly, P > 0.05, logistic regression.\n", + "columns: ['Treatment', 'Total females caught', 'Total blood-fed', '% blood-feeding', '95% CIs', '% blood-feeding inhibition', '% personal protection']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total blood-fed\":\"Trial 1\",\"% blood-feeding\":\"Trial 1\",\"95% CIs\":\"Trial 1\",\"% blood-feeding inhibition\":\"Trial 1\",\"% personal protection\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total blood-fed\":\"481\",\"% blood-feeding\":\"72a\",\"95% CIs\":\"69\\u201376\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught\":\"511\",\"Total blood-fed\":\"122\",\"% blood-feeding\":\"24b\",\"95% CIs\":\"20\\u201328\",\"% blood-feeding inhibition\":\"67\",\"% personal protection\":\"75\"},\"3\":{\"Treatment\":\"Benedicarb IRS\",\"Total females caught\":\"556\",\"Total blood-fed\":\"528\",\"% blood-feeding\":\"95c\",\"95% CIs\":\"93\\u201397\",\"% blood-feeding inhibition\":\"\\u201331\",\"% personal protection\":\"\\u2013 10\"},\"4\":{\"Treatment\":\"Olyset Plus + bendicarb IRS\",\"Total females caught\":\"288\",\"Total blood-fed\":\"64\",\"% blood-feeding\":\"22b\",\"95% CIs\":\"17\\u201327\",\"% blood-feeding inhibition\":\"69\",\"% personal protection\":\"87\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total blood-fed\":\"420\",\"% blood-feeding\":\"79d\",\"95% CIs\":\"76\\u201383\",\"% blood-feeding inhibition\":\"\\u20139\",\"% personal protection\":\"13\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total blood-fed\":\"47\",\"% blood-feeding\":\"16e\",\"95% CIs\":\"11\\u201320\",\"% blood-feeding inhibition\":\"79\",\"% personal protection\":\"90\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total blood-fed\":\"Trial 2\",\"% blood-feeding\":\"Trial 2\",\"95% CIs\":\"Trial 2\",\"% blood-feeding inhibition\":\"Trial 2\",\"% personal protection\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total blood-fed\":\"391\",\"% blood-feeding\":\"67u\",\"95% CIs\":\"64\\u201371\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total blood-fed\":\"115\",\"% blood-feeding\":\"24v\",\"95% CIs\":\"20\\u201327\",\"% blood-feeding inhibition\":\"65\",\"% personal protection\":\"71\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total blood-fed\":\"519\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 33\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught\":\"233\",\"Total blood-fed\":\"54\",\"% blood-feeding\":\"23v\",\"95% CIs\":\"18\\u201329\",\"% blood-feeding inhibition\":\"66\",\"% personal protection\":\"86\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total blood-fed\":\"406\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 4\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"},\"14\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"}}\n", + "\n", + "header: scientific reports: Abstract\n", + "\n", + "OPEN : Pyrethroid-piperonyl butoxide (PBO) nets reduce the efficacy of indoor residual spraying with pirimiphos-methyl against pyrethroid-resistant malaria vectors\n", + "\n", + "Thomas Syme, Mariai Ghegbo, Dorothy Obuobi, Augustin Fongnikin, Abel Agbevo, Damien Todjinou, & Corine Ngufori\n", + "\n", + "\n", + "Primiphos-methyl is a pro-insecticide requiring activation by mosquito cytochrome P450 enzymes to induce toxicity while PBO blocks activation of these enzymes in pyrethroid-resistant vector mosquitoes. PBO may thus antagonise the toxicity of pirimiphos-methyl IRS when combined with pyrethroid-PBO ITMs. The impact of combining Olyset Plus and PermaNet 3.0 with Actellite 300CS IRS was evaluated against pyrethroid-resistant _Anopheles gambiae_ s.l. in two parallel experimental hut trials in southern Benin. The vector population was resistant to pyrethroids and PBO pre-exposure partially restored deltamethrin toxicity but not permitting. Mosquito mortality in experimental huts was significantly improved in the combinations of bendicocarp IRS with pyrethroid-PBO ITMs (33-3896) compared to bendicocarp IRS alone (14-16%, p < 0.001), demonstrating an additive effect. Conversely, mortality was significantly reduced in the combinations of pirimiphos-methyl IRS with pyrethroid-PBO ITMs (55-59%) compared to pirimiphos-methyl IRS alone (77-78%, p < 0.001), demonstrating evidence of an antagonistic effect when both interventions are applied in the same household. Mosquito mortality in the combination was significantly higher compared to the pyrethroid-PBO ITMs alone (55-59% vs. 22-26% p < 0.001) showing potential of pirimiphos-methyl IRS to enhance vector control when deployed to complement pyrethroid-PBO ITMs in an area where PBO fails to fully restore susceptibility to pyrethroids.\n", + "\n", + "header: 3.2.2 Tumed test bioassays.\n", + "\n", + "To further assess the efficacy of the pyrethroid-PBO ITNs and help explain the findings in the experimental huts, tunnel tests were performed using the susceptible _An. gambiae_ Kisum strain and pyrethroid-resistant _An. gambiae_ as from Cove on net samples (30 x 30 cm) obtained from Olyset Plus and Permaket 3.0 nets. The tunnel test is an overnight animal baulesar what simulates host-seeking behaviour of vector mosquitoes under controlled laboratory conditions. Both pyrethroid-PBO ITNs were compared to pyrethroid-only nets which contained similar pyrethroid-insecticles (Olyset Net and Permaket 2.0). Mosquito mortality rates observed in the tunnels are presented in Fig. 3. Mortality in the control tunnels was 11% with the susceptible Kisum strain and 2% with the pyrethroid-resistant Cove strain. All ITN types induced >8% mortality with the susceptible Kisum strain. Olyset Plus killed significantly higher proportions of the Cove mosquitoes compared to Olyset Net (90% vs. 42%). With Permaket 3.0, mortality of Cove mosquitoes exposed to net prices obtained from the PBO treated root of the net (68%) was higher compared to net prices obtained from the sides of the net (34%) and Permaket 2.0 (27%). The results, therefore, showed higher levels of mortality against pyrethroid-resistant mosquitoes from the Cove experimental hut station with the pyrethroid-PBO ITNs relative to pyrethroid-only nets. More detailed results from the tunnel tests are available in the supplementary information (Table S1).\n", + "\n", + "header: Conclusion\n", + "\n", + "Our study provides the first evidence of an antagonistic effect when pyrethroid-PBO ITNs are combined with pirimphos-methyl IRS in the same household resulting in lower levels of vector mosquito mortality compared to the IRS alone. In line with WHO recommendations, vector control programmes faced with multiple choice of ITN types to deploy as an additional intervention to improve vector control impact in an area dedicated to IRS with pirimphos-methyl, may consider other types of ITNs like pyrethroid-ITNs which can better complement pirimphos-methyl IRS when deployed together. Nevertheless, the pyrethroid-PBO ITNs performed poorly probably due to the lower levels of restoration of pyrethroid susceptibility with PBO in the vector population. Combining these nets with pirimphos-methyl IRS provided significantly improved vector control compared to the net alone demonstrating the potential for pirimphos-methyl IRS to enhance malaria control when deployed to complement pyrethroid-PBO ITNs in areas where PBO fails to fully restore susceptibility to pyrethroids.\n", + "\n", + "header: Study site and experimental hut treatments.: Trial 1.\n", + "\n", + "1. Untreated net.\n", + "2. Olyset Plus (Sumitomo Chemical).\n", + "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", + "4. Olyset Plus + Bendiocarb IRS applied at 400 mg/m2.\n", + "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", + "6. Olyset Plus + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", + "\n", + "header: Table 4.Mortality results of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs, and pirimiphos-methyl IRS applied alone and in combination.\n", + "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", + "er signi\u001fcantly, p>0.05, logistic regression\n", + "columns: ['Treatment', 'Total females caught', 'Total dead', '% mortality*', '95% CIs']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total dead\":\"Trial 1\",\"% mortality*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total dead\":\"22\",\"% mortality*\":\"3a\",\"95% CIs\":\"2\\u20135\"},\"2\":{\"Treatment\":\"Olyset Plus\",\"Total females caught\":\"511\",\"Total dead\":\"114\",\"% mortality*\":\"22b\",\"95% CIs\":\"19\\u201326\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"556\",\"Total dead\":\"87\",\"% mortality*\":\"16c\",\"95% CIs\":\"13\\u201319\"},\"4\":{\"Treatment\":\"Olyset Plus + Bendiocarb IRS\",\"Total females caught\":\"288\",\"Total dead\":\"95\",\"% mortality*\":\"33d\",\"95% CIs\":\"28\\u201338\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total dead\":\"411\",\"% mortality*\":\"77e\",\"95% CIs\":\"74\\u201381\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total dead\":\"178\",\"% mortality*\":\"59f\",\"95% CIs\":\"53\\u201364\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total dead\":\"Trial 2\",\"% mortality*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total dead\":\"12\",\"% mortality*\":\"2u\",\"95% CIs\":\"1\\u20133\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total dead\":\"127\",\"% mortality*\":\"26v\",\"95% CIs\":\"22\\u201330\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total dead\":\"80\",\"% mortality*\":\"14w\",\"95% CIs\":\"11\\u201317\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + Bendiocarb IRS\",\"Total females caught\":\"233\",\"Total dead\":\"89\",\"% mortality*\":\"38x\",\"95% CIs\":\"32\\u201344\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total dead\":\"350\",\"% mortality*\":\"78y\",\"95% CIs\":\"74\\u201382\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total dead\":\"122\",\"% mortality*\":\"55z\",\"95% CIs\":\"48\\u201361\"}}\n", + "\n", + "header: Table 2. Entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination.\n", + "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", + "er signi\u001fcantly, P>0.05, negative binomial regression for females caught and logistic regression for exophily.\n", + "columns: ['Treatment', 'Total females caught*', '% deterrence', 'Total exiting', '% exophily*', '95% CIs']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught*\":\"Trial 1\",\"% deterrence\":\"Trial 1\",\"Total exiting\":\"Trial 1\",\"% exophily*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"664a\",\"% deterrence\":\"-\",\"Total exiting\":\"241\",\"% exophily*\":\"36a\",\"95% CIs\":\"33\\u201340\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught*\":\"511a\",\"% deterrence\":\"23\",\"Total exiting\":\"390\",\"% exophily*\":\"76b\",\"95% CIs\":\"73\\u201380\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"556a\",\"% deterrence\":\"16\",\"Total exiting\":\"282\",\"% exophily*\":\"51c\",\"95% CIs\":\"47\\u201355\"},\"4\":{\"Treatment\":\"Olyset Plus + bendiocarb IRS\",\"Total females caught*\":\"288b\",\"% deterrence\":\"57\",\"Total exiting\":\"228\",\"% exophily*\":\"79b\",\"95% CIs\":\"75\\u201384\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"531a\",\"% deterrence\":\"20\",\"Total exiting\":\"281\",\"% exophily*\":\"53c\",\"95% CIs\":\"49\\u201357\"},\"6\":{\"Treatment\":\"Olyset plus + P-methyl IRS\",\"Total females caught*\":\"304b\",\"% deterrence\":\"54\",\"Total exiting\":\"270\",\"% exophily*\":\"89d\",\"95% CIs\":\"85\\u201392\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught*\":\"Trial 2\",\"% deterrence\":\"Trial 2\",\"Total exiting\":\"Trial 2\",\"% exophily*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"581u\",\"% deterrence\":\"-\",\"Total exiting\":\"226\",\"% exophily*\":\"39u\",\"95% CIs\":\"35\\u201343\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught*\":\"488u\",\"% deterrence\":\"16\",\"Total exiting\":\"369\",\"% exophily*\":\"76v\",\"95% CIs\":\"72\\u201379\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"575u\",\"% deterrence\":\"1\",\"Total exiting\":\"360\",\"% exophily*\":\"63w\",\"95% CIs\":\"59\\u201367\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught*\":\"233v\",\"% deterrence\":\"60\",\"Total exiting\":\"185\",\"% exophily*\":\"79v\",\"95% CIs\":\"74\\u201385\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"450u\",\"% deterrence\":\"23\",\"Total exiting\":\"311\",\"% exophily*\":\"69x\",\"95% CIs\":\"65\\u201373\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught*\":\"223v\",\"% deterrence\":\"62\",\"Total exiting\":\"195\",\"% exophily*\":\"87y\",\"95% CIs\":\"83\\u201392\"}}\n", + "\n", + "header: Data analysis.\n", + "\n", + "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental but treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to the differential attractiveness of the volunteer sleepers and huts. Results from the different experimental hut trials involving Olyset Plus and PermaNet 3.0 were analysed separately. Susceptibility bioassay results were interpreted according to WHO criteria49. All analyses were performed in Stata version 15.1.\n", + "\n", + "header: Experimental hut results.\n", + "\n", + "_Mosquito entry and exiting in experimental huts._\n", + "\n", + "A total of 5,404 wild female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trials (Table 2). In both trials, mosquito entry in huts with the pyrethroid-PBO ITN alone and IRS treatments alone did not differ significantly from the controls (p > 0.05) but was significantly reduced with the pyrethroid-PBO ITN plus IRS combinations compared to the single treatments (p < 0.01). Mosquito entry rates did not also differ between the combinations of the pyrethroid-PBO ITN with bendiocarb IRS relative to the combinations with pirimiphos-methyl IRS (p < 0.05). Nevertheless, IRS treatments could not be rotated and thus, treatment-induced deterrence cannot be fully distinguished from differential attractiveness due to hut position.\n", + "\n", + "The proportion of mosquitoes exiting into the veranda of the huts with the untreated net controls was 36% and 39% for Trials 1 and 2 respectively. Exiting rates were higher with the pyrethroid-PBO ITNs alone (76%) relative to the IRS insecticides alone (51-63% with bendiocarb and 53-69% with pirimiphos-methyl IRS, p < 0.005). In both trials, the highest levels of mosquito exiting were achieved with the pyrethroid-PBO ITN plus IRS combinations (79% with bendiocarb and 87-89% with pirimiphos-methyl IRS). Between the combinations, adding\n", + "primiphos-methyl IRS to the pyrethroid-PBO ITN provided significantly higher levels of mosquito exiting relative to adding bendicord IRS (87-89% vs. 79%, P < 0.05).\n", + "\n", + "Blood-feeding rates of wild malaria vector mosquitoes in experimental huts.Blood-feeding rates in huts with the untreated net controls were 72% and 67% for Trials 1 and 2 respectively (Table 3). The IRS treatments did not provide any blood-feeding inhibition relative to the controls. Blood-feeding inhibition rates were high with the pyrethroid-PBO ITN plus IRS combinations in both trials (69-79% with Olyst Plus and 63-66% with PermaNet 3.0) and this was generally similar to what was observed with the pyrethroid-PBO ITNs alone (67% with Olyst Plus and 65% with PermaNet, P > 0.05) showing that the high levels of blood-feeding inhibition in the combinations, was mostly due to the ITNs. Blood-feeding inhibition with the PermaNet 3.0 plus primiphos-methyl IRS combination (66%) was similar to the PermaNet 3.0 plus bendicord IRS combination (63%, P = 0.71) meanwhile the Olyset Plus and primiphos-methyl IRS combination induced higher levels of blood-feeding inhibition compared to the Olyst Plus and bendicord IRS combination (79% vs. 69%, P = 0.036) (Table 3). Personal protection levels showed a similar trend and were also higher with the combinations (86-90%) relative to the IRS alone (- 33-13%).\n", + "\n", + "Mortality rates of wild malaria vector mosquitoes in experimental huts.\n", + "\n", + "Wild vector mosquito mortality in the controls was 3% in Trial 1 and 2% in Trial 2 (Table 4). The pyrethroid-PBO ITNs killed relatively low mosquito proportions (22% with Olgest Plus and 26% with PermaNet 3.0) though this was higher than what was observed with benedicarb IRS alone (14% in Trial 1 and 16% in Trial 2, P < 0.10). The highest mortality was achieved with pirimphos-methyl IRS alone (77% in Trial 1 and 78% in Trial 2). In both trials, mortality in the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations was significantly reduced compared to pirimphos-methyl IRS alone (77% with pirimphos-methyl IRS vs. 59% with Olgest Plus pirimphos-methyl IRS, P < 0.001 and 78% with pirimphos-methyl IRS vs. 55% with PermaNet 3.0 plus pirimphos-methyl IRS, P < 0.001), demonstrating an antagonistic effect. Conversely, mortality was significantly higher in the combinations of benedicarb IRS with Olgest Plus (33%) and PermaNet 3.0 (38%) than benedicarb IRS alone (14-16%, P < 0.001), demonstrating an additive effect (Table 4). Nevertheless, both pyrethroid-PBO plus IRS combinations induced significantly higher\n", + "\n", + "mortality compared to the pyrethroid-PBO ITNs alone (P < 0.001). Between the combinations, mortality was consistently higher with the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations (55-59%) compared to the pyrethroid-PBO ITN plus pedicocarb IRS (33-39%, P < 0.001).\n", + "\n", + "The monthly mortality rates of wild vector mosquitoes which entered the experimental huts during the trials are presented in Fig. 1 for the combinations with pedicocarb IRS and Fig. 2 for the combinations with pirimiphos-methyl IRS. In both trials, mosquito mortality rates in huts with the pyrethroid-PBO ITNs plus pedicocarb IRS declined sharply over time from 65-75% in month 1 to 33-38% in month 3, nevertheless, it was consistently higher than the single treatments alone (Fig. 1). Mosquito mortality in the combination of Olyset Plus and pirimiphos-methyl IRS was similar to the IRS alone in month 1 (> 90%) but declined substantially relative to the IRS in subsequent months. With the PermaNet 3.0 plus pirimiphos-methyl IRS combination,\n", + "\n", + "Figure 1.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pedicocarb IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Oyset Plus (Trial 1) and panel (**b**) presents results from the trial with PermaNet 3.0 (Trial 2). Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from onset of the trial. Mosquito mortality in the control untreated huts did not exceed 5% at any time point.\n", + "\n", + "Figure 2.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pirimiphos-methyl IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Olyset Plus and panel (**b**) presents results from the trial with PermaNet 3.0. Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from the onset of the trial.\n", + "\n", + "\n", + "mosquito mortality was consistently lower than the IRS alone throughout the trial. Through the four months of the trials, the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations consistently induced higher levels of mosquito mortality relative to the pyrethroid-PBO ITNs alone.\n", + "\n", + "header: Materials and methods\n", + "\n", + "Adult F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hut station were exposed to filter papers treated with discriminating doses of deltamethrin (0.05%), permethrin (0.75%), benchicaro (0.1%) and pirimphos-methyl (0.25%) in WHO cylinders8. Deltamethrin and perme-thrin were also tested with 60 min pre-exposure to PBO (4%) to assess the involvement of metabolic enzymes in pyrethroid resistance. A comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain. Approximately 100, 3-5-day old mosquitoes of each strain were exposed to each insecticide for 60 min in four batches of 20-25. Similar numbers of mosquitoes were concurrently exposed to untreated filter papers as a control. At the end of exposure, mosquitoes were transferred to appropriately labelled holding tubes, provided access to 10% (w/v) glucose solution, and held at 27 +- 2degC and 75 +- 10% relative humidity. Knockdown was recorded 60 min after exposure and delayed mortality after 24 h for all treatments. The insecticide-treated filter papers were obtained from Universiti Sains Malaysia.\n", + "\n", + "header: Hut trial outcome measures\n", + "\n", + "The efficacy of the experimental hut treatments was expressed in terms of the following outcome measures:\n", + "\n", + "1. Deterrence (%)--proportional reduction in the number of mosquitoes collected in the treated hut relative to the number collected in the control.\n", + "2. Exophily (%)--exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda trap.\n", + "3. Blood-feeding inhibition (%)--proportional reduction in blood-feeding in the treated hut relative to the control. Calculated as follows: \\[\\mathit{Blood\\ feeding\\ inhibition}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bfu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", + "4. Mortality (%)--proportion of dead mosquitoes 24 h after collection.\n", + "5. Personal protection (%)--reduction in the number of blood-fed mosquitoes in the treated hut relative to the untreated net control. Calculated as follows: \\[\\mathit{Personal\\ protection}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", + "\n", + "header: Results\n", + "\n", + "Experimental huts are used to assess the capacity of indoor vector control interventions to prevent wild vector mosquito entry and feeding and induce early mosquito exiting and mortality when applied in a human-occupied house, under carefully controlled conditions [3,12]. The hut trials were conducted at the CREC/LSHTM experimental hut station in Cowe, southern Benin (7deg14'N22deg18E), situated in a vast area of rice irrigation, which provides extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzini_ and _An. gambiae_ sensu stricto (s.s.) occur in symparity, with the latter present at lower densities and predominantly in the dry season. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold). Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (> 90%) and overexpression of CYP6P3, an enzyme associated with pyrethroid detoxification [3].\n", + "\n", + "Two experimental hut trials were performed in parallel for 4 months between April and July 2020. Trial 1 assessed the impact of combining Olyset Plus (Sumitomo Chemical), a permethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS while Trial 2 assessed the impact of combining PermaNet 3.0 (Vestergaard Sarl), a deltamethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS.\n", + "\n", + "The following six treatments were tested in each of the experimental hut trials:\n", + "\n", + "header: Susceptibility of wild vector mosquitoes at Cove to insecticides.\n", + "\n", + "WHO susceptibility bioassays were conducted in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove hit site to the constituent insecticides of the experimental hut treatments. Mortality rates of F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hit station following exposure to discriminating doses of deltamethrin and permethrin in WHO cylinder bioassays were low (42% and 11% respectively), confirming a high frequency of pyrethroid resistance in the Cove vector population (Table 1). Pre-exposure to PBO significantly improved mortality with deltamethrin (42% vs. 72%) but not with permethrin (11% vs. 8%). Mortality rates with the discriminating doses of bendiocarb and pirimiphos-methyl were 98% and 99% respectively. This demonstrated susceptibility to pirimiphos-methyl and bendiocarb. All insecticides induced 100% mortality with the laboratory-maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu strain. No mortality was recorded in the control with either strain.\n", + "\n", + "header: Discussion\n", + "\n", + "Given the inhibitory effect of PBO on mosquito cytochrome P450 enzymes, the WHO had temporarily recommended against the use of pyrethroid-PBO ITN in areas programmed for IRS with pirimiphos-methyl IRS until further evidence on the potential antagonism between PBO and the organo-thiophosphate pro-insecticide becomes available20. In this study, we found evidence of an antagonistic effect when pyrethroid PBO ITNs were combined with pirimiphos-methyl IRS in the same household in a pyrethroid-resistant area in Southern Benin where resistance was partly conferred by over-expression of mosquito cytochrome P450 enzymes20. Unlike the combination of the pyrethroid-PBO nets with bendicorab IRS which provided improved vector mosquito mortality compared to bendicorab IRS alone, combining these nets with pirimiphos-methyl IRS induced significantly lower levels of vector mosquito mortality rates compared to pirimiphos-methyl IRS alone. This effect\n", + "\n", + "Figure 3.: Mortality (24 h) of susceptible _Anopheles gambiae_ Kisumu and pyrethroid-resistant _An. gambiae_ s.l. Cove strains exposed to Olyset Plus and Permaket 3.0 in tunnel tests. Error bars represent 95% CIs. Both pyrethroid-PBO nets were compared to pyrethroid-only nets (Olyset Net and Permaket 2.0). Permaket 3.0 contains PBO only on the roof of the net. With both strains, 80–120 mosquitoes were exposed overnight to metting pieces cut from whole nets in 2–3 replicate tunnel tests.\n", + "\n", + "\n", + "was remarkably similar between the two brands of pyrethroid-PBO ITNs tested across both hut trials indicating that the negative interaction of the combination on mosquito mortality was less affected by the design and specifications of the pyrethroid-PBO ITN. Wild vector mosquitoes which entered the huts with the combined treatment may have contacted the pirimphos-methyl IRS on the hut wall only after picking up PBO from the ITN while attempting to blood-feed on the sheeper under the net. This pre-exposure to PBO on the ITN could have prevented the metabolic activation of the IRS insecticide in these mosquitoes, resulting in lower mortality rates relative to the IRS alone. This finding supports WHO's recommendation against the deployment of pyrethroid-PBO ITNs in areas that have already been programmed for IRS with pirimphos-methyl IRS. This is mostly important from a programmatic perspective where a vector control programme is faced with multiple choice of ITN types to deploy as an additional intervention to enhance vector control impact in an area that is already dedicated to IRS with pirimphos-methyl. In such a scenario, other types of ITNs like pyrethroid-only nets that were recently shown to complement pirimphos-methyl IRS when applied together23, should be considered.\n", + "\n", + "These findings should however not be interpreted to mean that pirimphos-methyl IRS must not be deployed to complement pyrethroid-PBO ITNs. Though pyrethroid-PBO ITNs have consistently shown improved performance in experimental hut trials against pyrethroid-resistant malaria vectors compared to pyrethroid-only nets34, the margin appears to vary depending on the intensity and mechanisms of pyrethroid-resistance encountered. In our study, the pyrethroid-PBO ITNs when applied alone in a hut induced low vector mosquito mortality (22-26%) compared to what has been observed in hut trials against the same vector population with another type of novel dual ITN (71-76%)35,40. Low levels of mosquito mortality in huts with pyrethroid-PBO ITNs and failure of PBO to fully restore pyrethroid susceptibility in bioassays have also been reported from studies in Burkina Faso37, Cameroon38, Cote d'Ivoire39 and Senegal40. This may indicate the presence of complex resistance mechanisms in the West African region unaffected by PBO. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors which continues to increase over time41, yet the public health value of pyrethroid-PBO ITNs has not been assessed in the region. It is therefore unclear whether these nets will provide the same improved epidemiological impact over pyrethroid-only nets in West Africa as observed in the East African community trials which have been the basis of their endorsement for malaria control. Our results showed a significant improvement in mosquito mortality when pirimphos-methyl IRS was combined with the pyrethroid-PBO ITNs (55-59%) compared to the pyrethroid-PBO ITNs alone (22-26%). Mosquito entry and feeding rates were also significantly lower with the combination compared to the pyrethroid-PBO ITNs alone. This provides some justification for deploying pirimphos-methyl IRS to complement pyrethroid-PBO nets in an area of high and complex pyrethroid-resistance where local vectors are less susceptible to the synergistic effect of PBO. Due to the limited choice of insecticides available for IRS, where a beneficial effect of the combination compared to the pyrethroid-PBO ITN alone has been established, pirimphos-methyl IRS should continue to be used even in the presence of high coverage with pyrethroid-PBO ITNs, preferably as part of an IRS rotational strategy. In line with WHO recommendations for insecticide resistance management42, the sustained rotation of multiple insecticide modes of action for IRS may help preserve efficacy to insecticides approved for IRS.\n", + "\n", + "Footnote 3: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 4: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 5: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 6: [https://doi.org/10.1038/s41598-022-10953-](https://doi.org/10.1038/s41598-022-10953-)\n", + "\n", + "y\n", + "\n", + "Footnote 7: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 8: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 9: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 10: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 11: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 12: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 13: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 14: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 15: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 16: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 17: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 18: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 19: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 20: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 21: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 22: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 23: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 24: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 25: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 26: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 27: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 28: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 29: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 30: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 31: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 32: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 333: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 34: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 35: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 36: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 37: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 38: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 39: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 40: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 41: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 42: https://doi.org/10.1038/s415\n", + "\n", + "\n", + "following pre-exposure to PBO, restoration of susceptibility to permethrin--the pyrethroid insecticide used on the pyrethroid-PBO ITN tested in the Tanzanian trial (Olvest Plus)--was high in the vector population from the study area (from 18 to 94%)15. Hence, the level of control achieved with pyrethroid-PBO ITN alone in the Tanzanian trial may have been optimal making the addition of pirimphos-methyl IRS unnecessary. This may not be the case in many communities in West Africa considering the afore-mentioned low levels of pyrethroid-PBO synergism reported in susceptibility bioassays and hut trials conducted across the region; in contrast, the addition of pirimphos-methyl IRS to pyrethroid-PBO ITNs in these communities could be more beneficial for control of clinical malaria compared to the ITN alone. As the range of vector control products available to vector control programmes expands, the choice of interventions and product brands must be aligned to local contexts and guided by local evidence. To help guide vector control policy, epidemiological trials and/or other empirical studies investigating the impact and cost-effectiveness of pyrethroid-PBO nets in communities in the West African region as well as their combination with IRS using pro-insectiles like pirimphos-methyl will be necessary.\n", + "\n", + "Although the inhibitory effect of PBO on mosquito cytochrome P450 enzymes formed the basis of our hypothesis for the antagonism observed between pirimphos-methyl IRS and pyrethroid-PBO ITNs in the experimental huts, behavioural interactions could also have contributed. In both trials, mosquito exiting rates into the veranda traps and blood-feeding inhibition were consistently higher in the combinations compared to the IRS insecticides alone. This could be attributed to the excitro-replenent property of the pyrethroid in the ITN stimulating directed movement of mosquitoes away from their source44. This early exiting effect was however significantly higher in the combination with pirimphos-methyl IRS compared to the combination with bendo-carb IRS suggesting a behavioural interaction in the presence of pirimphos-methyl that may have driven more mosquitoes to exit into the veranda, thus reducing mosquitoes' contact with pirimphos-methyl IRS treated walls. This may have compromised the impact of the pirimphos-methyl IRS in the combination compared to when applied alone and to the combination with bendoicarb. Further studies to assess mosquito flight behaviour, in the presence of the combinations would provide useful insight into behavioural interactions between the treatments. Controlled laboratory assays which minimise behavioural responses and assess P450 enzyme activity in exposed mosquitoes, could also elucidate the potential role of P450 enzyme inhibition in the antagonism observed in the experimental huts.\n", + "\n", + "While our trial focused on investigating the impact of combining pyrethroid-PBO ITNs with pirimphos-methyl IRS in the same households, there is a paucity of information on the interactions between these nets and other newly developed vector control products which contain new public health insecticides such as the neonciotohal, clothidinium and the pyrrole chlorfenapxy. Chlorfenapxy, an insecticide used on ITNs13 and being considered for IRS6,46, also requires activation by mosquito P450 enzymes6. Laboratory experiments have indicated the potential of PBO to antagonise the toxicity of chlorfenapxy against mosquitoes in bioassays29,30. Studies investigating the impact of co-deploying pyrethroid-PBO ITNs together with pyrethroid-chlorfenapxy ITNs or chlorfenapxy IRS in the same household will be essential to help inform optimal co-deployment policy.\n", + "\n", + "header: 3.2.3 Wall cone bioassays.\n", + "\n", + "WHO wall cone bioassays were performed on the IRS treated experimental hut walls 1 week, 2 months and 4 months after application of IRS treatments to assess their residual efficacy with increasing time elapsed from spraying. Mortality rates of the insecticide-susceptible _An. gambiae_ s.s. Kisum strain and pyrethroid-resistant _An. gambiae_ s.l. Cove strain following exposure to IRS-treated surfaces in 30 min wall cone bioassays are presented in Fig. 4. Mortality of mosquitoes exposed to pirimiphos-methyl treated walls was high (>90%) at all time points with both strains, showing no evidence of a decline in residual activity. In contrast, wall cone bioassay mortality on bendicor-treated surfaces declined rapidly, beginning at 67% and 39% in week 1 and falling to lows of 2% and 3% in month 4 with the Kisum and Cove strains respectively. No mortality was recorded in the controls at any time point with either strain.\n", + "\n", + "header: Experimental hut trial procedure\n", + "\n", + "During the hut trials, volunteer sleepers were rotated between experimental huts daily to mitigate the impact of individual attractiveness whilst bed nets were rotated weekly between the huts to reduce the impact of hut position on mosquito entry. Three (3) replicate bed nets were used per treatment and rotated within the treatment every 2 days. IRS treatments cannot be rotated and thus remained fixed throughout the trial. Consenting human volunteer sleepers alert in experimental huts between 21:00 and 06:00 to attract free-flying mosquitoes. Each morning, volunteer sleepers collected all live and dead mosquitoes from the different compartments of the hut (under the net, room, veranda) using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were then transferred to the field laboratory for morphological identification using taxonomic keys and scoring of immediate mortality and blood-feeding. All live, female _An. gambiae_ s.l. were provided access to 10% glucose (w/v) solution and held at ambient conditions in the field laboratory. Delayed mortality was recorded after 24 h for all treatments. Mosquito collections were performed 6 nights per week and on the 7th day, huts were cleaned and aired in preparation for the next rotation cycle.\n", + "\n", + "header: Abbreviations\n", + "\n", + "IRS Indoor residual spraying\n", + "\n", + "WHO World Health Organization\n", + "\n", + "PQ Prenqualification team\n", + "\n", + "PBO Piperonyl butoxide\n", + "\n", + "ITN Insecticide treated net\n", + "\n", + "LLIN Long-lasting insecticidal net\n", + "\n", + "GPIRM Global plan for insecticide resistance management\n", + "\n", + "WHOPES WHO pesticide evaluation scheme\n", + "\n", + "CREC Centre de Recherche Entomologique de Cotonou\n", + "\n", + "LSHTTM London School of Hygiene & Tropical Medicine\n", + "\n", + "Kdr Knockdown resistance\n", + "\n", + "PAMVERC Pan African Malaria Vector Research Consortium\n", + "\n", + "The large-scale implementation of long-lasting insecticidal nets (LLINs), and indoor residual spraying (IRS) has resulted in profound reductions in malaria-associated morbidity and mortality across sub-Saharan Africa, over the last two decades1. Unfortunately, resistance to the insecticides applied through these interventions, especially the pyrethroids, is now pervasive in vector populations in malaria-endemic countries', threatening to undermine their impact. In response, a new generation of novel LLINs and IRS based on new active ingredients with the potential to sustain vector control impact in the face of increasing resistance, have been developed3. This includes dual insecticide-treated nets containing a pyrethroid and an alternative effective new compound as well as new IRS insecticides with novel modes of action or improved formulations that have shown potential to provide enhanced control of insecticide-resistant malaria vector populations.\n", + "\n", + "Insecticide-treated nets (ITNs) combining a pyrethroid and piperonyl butoxido (PBO) were the first novel class of ITNs to be developed for malaria vector control. PBO is a synergism that can enhance the impact of pyrethroids and other insecticides by inhibiting metabolic detoxification enzymes associated with resistance, notably cytochrome P450 monooxygenases3. These nets received a conditional endorsement from the World Health Organisation (WHO) in 2017 based on results from a cluster-randomised controlled trial (CRT) in Tanzania demonstrating a reduction in malaria prevalence in communities allocated to pyrethroid-PBO ITNs relative to pyrethroid-only ITNs4. A full policy recommendation is now expected after results from a second CRT in Uganda also showed that two brands of pyrethroid-PBO ITNs reduced malaria prevalence relative to pyrethroid-only nets4. The WHO endorsement and expanding evidence base for the public health value of pyrethroid-PBO ITNs has prompted mass procurement of these nets by international malaria control agencies4,5. The proportion of pyrethroid-PBO ITNs of all ITNs delivered in sub-Saharan Africa has consequently risen from 3% in 2018 to 35% in 202112; pyrethroid-PBO ITNs are therefore replacing pyrethroid-only nets in many malaria-endemic countries.\n", + "\n", + "The increasing distribution and intensity of pyrethroid resistance has also affected malaria control policy regarding insecticide choice for IRS over the last decade. To improve vector control impact and preserve pyrethroids for ITNs, African IRS programmes partly suspended the use of pyrethroids and organochlorines in favour of carbamates and organophosphates5,12. Whilst both insecticides showed high toxicity against malaria vectors, the short residual duration of the initial formulations approved for IRS proved prohibitive, necessitating the development of longer-lasting formulations13. A new microencapsulated formulation of pirimphos-methyl was later developed (Actellic 300CS) demonstrating prolonged activity against pyrethroid-resistant malaria vector mosquitoes, lasting up to 9 months14,15. This formulation subsequently served as the insecticide of choice for the majority of IRS programmes in sub-Saharan Africa1 providing substantial control of mosquito vectors and malaria across distinct eco-epidemiological settings6,16-22.\n", + "\n", + "[MISSING_PAGE_POST]\n", + "\n", + "header: Wall cone bioassays\n", + "\n", + "The laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain and wild pyrethroid-resistant _An. gambiae_ s.l. Cove mosquitoes (F1) derived from breeding sites at the hut station were used for this purpose. At each time point, five cones were attached to the walls and ceiling of the IRS-treated huts. Approximately 50, 3-5-day old mosquitoes were transferred into cones in 5 batches of 10 and exposed to the treated surfaces for 30 min. As a control, mosquitoes were exposed in cones attached to the walls and ceiling of an unsprayed hut. At the end of exposure, mosquitoes were transferred to netted, plastic cups. Mosquitoes were provided access to 10% (w/v) glucose solution and delayed mortality after 24 h for all treatments.\n", + "\n", + "\n", + "Ethical considerations.Ethical approval for the conduct of the study was obtained from the ethics review boards of the Beninese Ministry of Health (No. 34) and the London School of Hygiene & Tropical Medicine (Ref: 16969). All human volunteer sleepers gave informed written consent prior to their participation; where necessary, the consent form and information sheet were explained in their local language. They were offered a free course of chemoprophylaxis spanning the duration of the trial and up to 3 weeks following its completion. A stand-by nurse was available for the duration of the trial to assess any cases of fever or adverse reactions to test items. Any confirmed cases of malaria were treated free of charge at a local health facility. Animals used as baits in tunnel test were maintained following institutional standard operating procedures (SOPs) designed to improve care and protect animals used for experimentation. All studies were performed according to relevant national and international guidelines.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Trial 2.\n", + "\n", + "1. Untreated net.\n", + "2. PermaNet 3.0 (Vestergaard Sarl).\n", + "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", + "4. PermaNet 3.0 + Bendiocarb IRS applied at 400 mg/m2.\n", + "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", + "6. PermaNet 3.0 + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", + "\n", + "Olyset Plus and PermaNet 3.0 are WHO prequalified pyrethroid-PBO ITNs [3]. Olyset Plus is made of polyethylene filaments coated with 20 g/Kg of permethrin and 10 g/Kg of PBO. PermaNet 3.0 consists of polyester side panels coated with deltamethrin at 2.1 g/kg and a polyethylene roof panel incorporating deltamethrin and PBO at 4.0 g/kg and 25 g/kg respectively.\n", + "\n", + "header: Tunnel tests\n", + "\n", + "The tunnel test consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections using a netting frame fitted into a slot across the tunnel. In one of the sections, a guinea pig was housed unconstrained in a small cage, and in the other section, -100 unfed female mosquitoes aged 5-8 days were released at dusk and left overnight. The net samples were deliberately hoked with nine 1-cm holes to give opportunity for mosquitoes to penetrate the animal bathed chamber for a blood meal an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 oC and 65-85% RH. The next morning, the numbers of mosquitoes found alive or dead, fed or unfed, in each section were scored. Live mosquitoes were provided with 10% glucose solution and delayed mortality was recorded after 24 h. The pyrethroid-PBO ITNs were compared to Olyset Net (a permethrin-only net, Sumitomo chemical) and PermaNet 2.0 (a deltamethrin-only net, Vestergaard Sarl) and an untreated control net. Two to three net pieces were tested per net type.\n", + "\n", + "header: scientific reports: Abstract\n", + "\n", + "OPEN : Pyrethroid-piperonyl butoxide (PBO) nets reduce the efficacy of indoor residual spraying with pirimiphos-methyl against pyrethroid-resistant malaria vectors\n", + "\n", + "Thomas Syme, Mariai Ghegbo, Dorothy Obuobi, Augustin Fongnikin, Abel Agbevo, Damien Todjinou, & Corine Ngufori\n", + "\n", + "\n", + "Primiphos-methyl is a pro-insecticide requiring activation by mosquito cytochrome P450 enzymes to induce toxicity while PBO blocks activation of these enzymes in pyrethroid-resistant vector mosquitoes. PBO may thus antagonise the toxicity of pirimiphos-methyl IRS when combined with pyrethroid-PBO ITMs. The impact of combining Olyset Plus and PermaNet 3.0 with Actellite 300CS IRS was evaluated against pyrethroid-resistant _Anopheles gambiae_ s.l. in two parallel experimental hut trials in southern Benin. The vector population was resistant to pyrethroids and PBO pre-exposure partially restored deltamethrin toxicity but not permitting. Mosquito mortality in experimental huts was significantly improved in the combinations of bendicocarp IRS with pyrethroid-PBO ITMs (33-3896) compared to bendicocarp IRS alone (14-16%, p < 0.001), demonstrating an additive effect. Conversely, mortality was significantly reduced in the combinations of pirimiphos-methyl IRS with pyrethroid-PBO ITMs (55-59%) compared to pirimiphos-methyl IRS alone (77-78%, p < 0.001), demonstrating evidence of an antagonistic effect when both interventions are applied in the same household. Mosquito mortality in the combination was significantly higher compared to the pyrethroid-PBO ITMs alone (55-59% vs. 22-26% p < 0.001) showing potential of pirimiphos-methyl IRS to enhance vector control when deployed to complement pyrethroid-PBO ITMs in an area where PBO fails to fully restore susceptibility to pyrethroids.\n", + "\n", + "header: 3.2.2 Tumed test bioassays.\n", + "\n", + "To further assess the efficacy of the pyrethroid-PBO ITNs and help explain the findings in the experimental huts, tunnel tests were performed using the susceptible _An. gambiae_ Kisum strain and pyrethroid-resistant _An. gambiae_ as from Cove on net samples (30 x 30 cm) obtained from Olyset Plus and Permaket 3.0 nets. The tunnel test is an overnight animal baulesar what simulates host-seeking behaviour of vector mosquitoes under controlled laboratory conditions. Both pyrethroid-PBO ITNs were compared to pyrethroid-only nets which contained similar pyrethroid-insecticles (Olyset Net and Permaket 2.0). Mosquito mortality rates observed in the tunnels are presented in Fig. 3. Mortality in the control tunnels was 11% with the susceptible Kisum strain and 2% with the pyrethroid-resistant Cove strain. All ITN types induced >8% mortality with the susceptible Kisum strain. Olyset Plus killed significantly higher proportions of the Cove mosquitoes compared to Olyset Net (90% vs. 42%). With Permaket 3.0, mortality of Cove mosquitoes exposed to net prices obtained from the PBO treated root of the net (68%) was higher compared to net prices obtained from the sides of the net (34%) and Permaket 2.0 (27%). The results, therefore, showed higher levels of mortality against pyrethroid-resistant mosquitoes from the Cove experimental hut station with the pyrethroid-PBO ITNs relative to pyrethroid-only nets. More detailed results from the tunnel tests are available in the supplementary information (Table S1).\n", + "\n", + "header: Table 3: Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato exposed to pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination in experimental huts in Cové, southern Benin.\n", + "footer: Results are presented separately for the trials involving Olgest Plus (Trial 1) and PermaNet 3.0 (Trial 2). ‘For each trial, values on this column sharing a superscript letter do not differ significantly, P > 0.05, logistic regression.\n", + "columns: ['Treatment', 'Total females caught', 'Total blood-fed', '% blood-feeding', '95% CIs', '% blood-feeding inhibition', '% personal protection']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total blood-fed\":\"Trial 1\",\"% blood-feeding\":\"Trial 1\",\"95% CIs\":\"Trial 1\",\"% blood-feeding inhibition\":\"Trial 1\",\"% personal protection\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total blood-fed\":\"481\",\"% blood-feeding\":\"72a\",\"95% CIs\":\"69\\u201376\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught\":\"511\",\"Total blood-fed\":\"122\",\"% blood-feeding\":\"24b\",\"95% CIs\":\"20\\u201328\",\"% blood-feeding inhibition\":\"67\",\"% personal protection\":\"75\"},\"3\":{\"Treatment\":\"Benedicarb IRS\",\"Total females caught\":\"556\",\"Total blood-fed\":\"528\",\"% blood-feeding\":\"95c\",\"95% CIs\":\"93\\u201397\",\"% blood-feeding inhibition\":\"\\u201331\",\"% personal protection\":\"\\u2013 10\"},\"4\":{\"Treatment\":\"Olyset Plus + bendicarb IRS\",\"Total females caught\":\"288\",\"Total blood-fed\":\"64\",\"% blood-feeding\":\"22b\",\"95% CIs\":\"17\\u201327\",\"% blood-feeding inhibition\":\"69\",\"% personal protection\":\"87\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total blood-fed\":\"420\",\"% blood-feeding\":\"79d\",\"95% CIs\":\"76\\u201383\",\"% blood-feeding inhibition\":\"\\u20139\",\"% personal protection\":\"13\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total blood-fed\":\"47\",\"% blood-feeding\":\"16e\",\"95% CIs\":\"11\\u201320\",\"% blood-feeding inhibition\":\"79\",\"% personal protection\":\"90\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total blood-fed\":\"Trial 2\",\"% blood-feeding\":\"Trial 2\",\"95% CIs\":\"Trial 2\",\"% blood-feeding inhibition\":\"Trial 2\",\"% personal protection\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total blood-fed\":\"391\",\"% blood-feeding\":\"67u\",\"95% CIs\":\"64\\u201371\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total blood-fed\":\"115\",\"% blood-feeding\":\"24v\",\"95% CIs\":\"20\\u201327\",\"% blood-feeding inhibition\":\"65\",\"% personal protection\":\"71\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total blood-fed\":\"519\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 33\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught\":\"233\",\"Total blood-fed\":\"54\",\"% blood-feeding\":\"23v\",\"95% CIs\":\"18\\u201329\",\"% blood-feeding inhibition\":\"66\",\"% personal protection\":\"86\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total blood-fed\":\"406\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 4\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"},\"14\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"}}\n", + "\n", + "header: Study site and experimental hut treatments.: Trial 1.\n", + "\n", + "1. Untreated net.\n", + "2. Olyset Plus (Sumitomo Chemical).\n", + "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", + "4. Olyset Plus + Bendiocarb IRS applied at 400 mg/m2.\n", + "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", + "6. Olyset Plus + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", + "\n", + "header: Conclusion\n", + "\n", + "Our study provides the first evidence of an antagonistic effect when pyrethroid-PBO ITNs are combined with pirimphos-methyl IRS in the same household resulting in lower levels of vector mosquito mortality compared to the IRS alone. In line with WHO recommendations, vector control programmes faced with multiple choice of ITN types to deploy as an additional intervention to improve vector control impact in an area dedicated to IRS with pirimphos-methyl, may consider other types of ITNs like pyrethroid-ITNs which can better complement pirimphos-methyl IRS when deployed together. Nevertheless, the pyrethroid-PBO ITNs performed poorly probably due to the lower levels of restoration of pyrethroid susceptibility with PBO in the vector population. Combining these nets with pirimphos-methyl IRS provided significantly improved vector control compared to the net alone demonstrating the potential for pirimphos-methyl IRS to enhance malaria control when deployed to complement pyrethroid-PBO ITNs in areas where PBO fails to fully restore susceptibility to pyrethroids.\n", + "\n", + "header: Hut trial outcome measures\n", + "\n", + "The efficacy of the experimental hut treatments was expressed in terms of the following outcome measures:\n", + "\n", + "1. Deterrence (%)--proportional reduction in the number of mosquitoes collected in the treated hut relative to the number collected in the control.\n", + "2. Exophily (%)--exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda trap.\n", + "3. Blood-feeding inhibition (%)--proportional reduction in blood-feeding in the treated hut relative to the control. Calculated as follows: \\[\\mathit{Blood\\ feeding\\ inhibition}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bfu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", + "4. Mortality (%)--proportion of dead mosquitoes 24 h after collection.\n", + "5. Personal protection (%)--reduction in the number of blood-fed mosquitoes in the treated hut relative to the untreated net control. Calculated as follows: \\[\\mathit{Personal\\ protection}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", + "\n", + "header: Materials and methods\n", + "\n", + "Adult F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hut station were exposed to filter papers treated with discriminating doses of deltamethrin (0.05%), permethrin (0.75%), benchicaro (0.1%) and pirimphos-methyl (0.25%) in WHO cylinders8. Deltamethrin and perme-thrin were also tested with 60 min pre-exposure to PBO (4%) to assess the involvement of metabolic enzymes in pyrethroid resistance. A comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain. Approximately 100, 3-5-day old mosquitoes of each strain were exposed to each insecticide for 60 min in four batches of 20-25. Similar numbers of mosquitoes were concurrently exposed to untreated filter papers as a control. At the end of exposure, mosquitoes were transferred to appropriately labelled holding tubes, provided access to 10% (w/v) glucose solution, and held at 27 +- 2degC and 75 +- 10% relative humidity. Knockdown was recorded 60 min after exposure and delayed mortality after 24 h for all treatments. The insecticide-treated filter papers were obtained from Universiti Sains Malaysia.\n", + "\n", + "header: Table 4.Mortality results of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs, and pirimiphos-methyl IRS applied alone and in combination.\n", + "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", + "er signi\u001fcantly, p>0.05, logistic regression\n", + "columns: ['Treatment', 'Total females caught', 'Total dead', '% mortality*', '95% CIs']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total dead\":\"Trial 1\",\"% mortality*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total dead\":\"22\",\"% mortality*\":\"3a\",\"95% CIs\":\"2\\u20135\"},\"2\":{\"Treatment\":\"Olyset Plus\",\"Total females caught\":\"511\",\"Total dead\":\"114\",\"% mortality*\":\"22b\",\"95% CIs\":\"19\\u201326\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"556\",\"Total dead\":\"87\",\"% mortality*\":\"16c\",\"95% CIs\":\"13\\u201319\"},\"4\":{\"Treatment\":\"Olyset Plus + Bendiocarb IRS\",\"Total females caught\":\"288\",\"Total dead\":\"95\",\"% mortality*\":\"33d\",\"95% CIs\":\"28\\u201338\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total dead\":\"411\",\"% mortality*\":\"77e\",\"95% CIs\":\"74\\u201381\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total dead\":\"178\",\"% mortality*\":\"59f\",\"95% CIs\":\"53\\u201364\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total dead\":\"Trial 2\",\"% mortality*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total dead\":\"12\",\"% mortality*\":\"2u\",\"95% CIs\":\"1\\u20133\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total dead\":\"127\",\"% mortality*\":\"26v\",\"95% CIs\":\"22\\u201330\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total dead\":\"80\",\"% mortality*\":\"14w\",\"95% CIs\":\"11\\u201317\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + Bendiocarb IRS\",\"Total females caught\":\"233\",\"Total dead\":\"89\",\"% mortality*\":\"38x\",\"95% CIs\":\"32\\u201344\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total dead\":\"350\",\"% mortality*\":\"78y\",\"95% CIs\":\"74\\u201382\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total dead\":\"122\",\"% mortality*\":\"55z\",\"95% CIs\":\"48\\u201361\"}}\n", + "\n", + "header: Table 2. Entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination.\n", + "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", + "er signi\u001fcantly, P>0.05, negative binomial regression for females caught and logistic regression for exophily.\n", + "columns: ['Treatment', 'Total females caught*', '% deterrence', 'Total exiting', '% exophily*', '95% CIs']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught*\":\"Trial 1\",\"% deterrence\":\"Trial 1\",\"Total exiting\":\"Trial 1\",\"% exophily*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"664a\",\"% deterrence\":\"-\",\"Total exiting\":\"241\",\"% exophily*\":\"36a\",\"95% CIs\":\"33\\u201340\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught*\":\"511a\",\"% deterrence\":\"23\",\"Total exiting\":\"390\",\"% exophily*\":\"76b\",\"95% CIs\":\"73\\u201380\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"556a\",\"% deterrence\":\"16\",\"Total exiting\":\"282\",\"% exophily*\":\"51c\",\"95% CIs\":\"47\\u201355\"},\"4\":{\"Treatment\":\"Olyset Plus + bendiocarb IRS\",\"Total females caught*\":\"288b\",\"% deterrence\":\"57\",\"Total exiting\":\"228\",\"% exophily*\":\"79b\",\"95% CIs\":\"75\\u201384\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"531a\",\"% deterrence\":\"20\",\"Total exiting\":\"281\",\"% exophily*\":\"53c\",\"95% CIs\":\"49\\u201357\"},\"6\":{\"Treatment\":\"Olyset plus + P-methyl IRS\",\"Total females caught*\":\"304b\",\"% deterrence\":\"54\",\"Total exiting\":\"270\",\"% exophily*\":\"89d\",\"95% CIs\":\"85\\u201392\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught*\":\"Trial 2\",\"% deterrence\":\"Trial 2\",\"Total exiting\":\"Trial 2\",\"% exophily*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"581u\",\"% deterrence\":\"-\",\"Total exiting\":\"226\",\"% exophily*\":\"39u\",\"95% CIs\":\"35\\u201343\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught*\":\"488u\",\"% deterrence\":\"16\",\"Total exiting\":\"369\",\"% exophily*\":\"76v\",\"95% CIs\":\"72\\u201379\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"575u\",\"% deterrence\":\"1\",\"Total exiting\":\"360\",\"% exophily*\":\"63w\",\"95% CIs\":\"59\\u201367\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught*\":\"233v\",\"% deterrence\":\"60\",\"Total exiting\":\"185\",\"% exophily*\":\"79v\",\"95% CIs\":\"74\\u201385\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"450u\",\"% deterrence\":\"23\",\"Total exiting\":\"311\",\"% exophily*\":\"69x\",\"95% CIs\":\"65\\u201373\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught*\":\"223v\",\"% deterrence\":\"62\",\"Total exiting\":\"195\",\"% exophily*\":\"87y\",\"95% CIs\":\"83\\u201392\"}}\n", + "\n", + "header: Data analysis.\n", + "\n", + "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental but treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to the differential attractiveness of the volunteer sleepers and huts. Results from the different experimental hut trials involving Olyset Plus and PermaNet 3.0 were analysed separately. Susceptibility bioassay results were interpreted according to WHO criteria49. All analyses were performed in Stata version 15.1.\n", + "\n", + "header: Experimental hut results.\n", + "\n", + "_Mosquito entry and exiting in experimental huts._\n", + "\n", + "A total of 5,404 wild female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trials (Table 2). In both trials, mosquito entry in huts with the pyrethroid-PBO ITN alone and IRS treatments alone did not differ significantly from the controls (p > 0.05) but was significantly reduced with the pyrethroid-PBO ITN plus IRS combinations compared to the single treatments (p < 0.01). Mosquito entry rates did not also differ between the combinations of the pyrethroid-PBO ITN with bendiocarb IRS relative to the combinations with pirimiphos-methyl IRS (p < 0.05). Nevertheless, IRS treatments could not be rotated and thus, treatment-induced deterrence cannot be fully distinguished from differential attractiveness due to hut position.\n", + "\n", + "The proportion of mosquitoes exiting into the veranda of the huts with the untreated net controls was 36% and 39% for Trials 1 and 2 respectively. Exiting rates were higher with the pyrethroid-PBO ITNs alone (76%) relative to the IRS insecticides alone (51-63% with bendiocarb and 53-69% with pirimiphos-methyl IRS, p < 0.005). In both trials, the highest levels of mosquito exiting were achieved with the pyrethroid-PBO ITN plus IRS combinations (79% with bendiocarb and 87-89% with pirimiphos-methyl IRS). Between the combinations, adding\n", + "primiphos-methyl IRS to the pyrethroid-PBO ITN provided significantly higher levels of mosquito exiting relative to adding bendicord IRS (87-89% vs. 79%, P < 0.05).\n", + "\n", + "Blood-feeding rates of wild malaria vector mosquitoes in experimental huts.Blood-feeding rates in huts with the untreated net controls were 72% and 67% for Trials 1 and 2 respectively (Table 3). The IRS treatments did not provide any blood-feeding inhibition relative to the controls. Blood-feeding inhibition rates were high with the pyrethroid-PBO ITN plus IRS combinations in both trials (69-79% with Olyst Plus and 63-66% with PermaNet 3.0) and this was generally similar to what was observed with the pyrethroid-PBO ITNs alone (67% with Olyst Plus and 65% with PermaNet, P > 0.05) showing that the high levels of blood-feeding inhibition in the combinations, was mostly due to the ITNs. Blood-feeding inhibition with the PermaNet 3.0 plus primiphos-methyl IRS combination (66%) was similar to the PermaNet 3.0 plus bendicord IRS combination (63%, P = 0.71) meanwhile the Olyset Plus and primiphos-methyl IRS combination induced higher levels of blood-feeding inhibition compared to the Olyst Plus and bendicord IRS combination (79% vs. 69%, P = 0.036) (Table 3). Personal protection levels showed a similar trend and were also higher with the combinations (86-90%) relative to the IRS alone (- 33-13%).\n", + "\n", + "Mortality rates of wild malaria vector mosquitoes in experimental huts.\n", + "\n", + "Wild vector mosquito mortality in the controls was 3% in Trial 1 and 2% in Trial 2 (Table 4). The pyrethroid-PBO ITNs killed relatively low mosquito proportions (22% with Olgest Plus and 26% with PermaNet 3.0) though this was higher than what was observed with benedicarb IRS alone (14% in Trial 1 and 16% in Trial 2, P < 0.10). The highest mortality was achieved with pirimphos-methyl IRS alone (77% in Trial 1 and 78% in Trial 2). In both trials, mortality in the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations was significantly reduced compared to pirimphos-methyl IRS alone (77% with pirimphos-methyl IRS vs. 59% with Olgest Plus pirimphos-methyl IRS, P < 0.001 and 78% with pirimphos-methyl IRS vs. 55% with PermaNet 3.0 plus pirimphos-methyl IRS, P < 0.001), demonstrating an antagonistic effect. Conversely, mortality was significantly higher in the combinations of benedicarb IRS with Olgest Plus (33%) and PermaNet 3.0 (38%) than benedicarb IRS alone (14-16%, P < 0.001), demonstrating an additive effect (Table 4). Nevertheless, both pyrethroid-PBO plus IRS combinations induced significantly higher\n", + "\n", + "mortality compared to the pyrethroid-PBO ITNs alone (P < 0.001). Between the combinations, mortality was consistently higher with the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations (55-59%) compared to the pyrethroid-PBO ITN plus pedicocarb IRS (33-39%, P < 0.001).\n", + "\n", + "The monthly mortality rates of wild vector mosquitoes which entered the experimental huts during the trials are presented in Fig. 1 for the combinations with pedicocarb IRS and Fig. 2 for the combinations with pirimiphos-methyl IRS. In both trials, mosquito mortality rates in huts with the pyrethroid-PBO ITNs plus pedicocarb IRS declined sharply over time from 65-75% in month 1 to 33-38% in month 3, nevertheless, it was consistently higher than the single treatments alone (Fig. 1). Mosquito mortality in the combination of Olyset Plus and pirimiphos-methyl IRS was similar to the IRS alone in month 1 (> 90%) but declined substantially relative to the IRS in subsequent months. With the PermaNet 3.0 plus pirimiphos-methyl IRS combination,\n", + "\n", + "Figure 1.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pedicocarb IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Oyset Plus (Trial 1) and panel (**b**) presents results from the trial with PermaNet 3.0 (Trial 2). Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from onset of the trial. Mosquito mortality in the control untreated huts did not exceed 5% at any time point.\n", + "\n", + "Figure 2.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pirimiphos-methyl IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Olyset Plus and panel (**b**) presents results from the trial with PermaNet 3.0. Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from the onset of the trial.\n", + "\n", + "\n", + "mosquito mortality was consistently lower than the IRS alone throughout the trial. Through the four months of the trials, the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations consistently induced higher levels of mosquito mortality relative to the pyrethroid-PBO ITNs alone.\n", + "\n", + "header: Abbreviations\n", + "\n", + "IRS Indoor residual spraying\n", + "\n", + "WHO World Health Organization\n", + "\n", + "PQ Prenqualification team\n", + "\n", + "PBO Piperonyl butoxide\n", + "\n", + "ITN Insecticide treated net\n", + "\n", + "LLIN Long-lasting insecticidal net\n", + "\n", + "GPIRM Global plan for insecticide resistance management\n", + "\n", + "WHOPES WHO pesticide evaluation scheme\n", + "\n", + "CREC Centre de Recherche Entomologique de Cotonou\n", + "\n", + "LSHTTM London School of Hygiene & Tropical Medicine\n", + "\n", + "Kdr Knockdown resistance\n", + "\n", + "PAMVERC Pan African Malaria Vector Research Consortium\n", + "\n", + "The large-scale implementation of long-lasting insecticidal nets (LLINs), and indoor residual spraying (IRS) has resulted in profound reductions in malaria-associated morbidity and mortality across sub-Saharan Africa, over the last two decades1. Unfortunately, resistance to the insecticides applied through these interventions, especially the pyrethroids, is now pervasive in vector populations in malaria-endemic countries', threatening to undermine their impact. In response, a new generation of novel LLINs and IRS based on new active ingredients with the potential to sustain vector control impact in the face of increasing resistance, have been developed3. This includes dual insecticide-treated nets containing a pyrethroid and an alternative effective new compound as well as new IRS insecticides with novel modes of action or improved formulations that have shown potential to provide enhanced control of insecticide-resistant malaria vector populations.\n", + "\n", + "Insecticide-treated nets (ITNs) combining a pyrethroid and piperonyl butoxido (PBO) were the first novel class of ITNs to be developed for malaria vector control. PBO is a synergism that can enhance the impact of pyrethroids and other insecticides by inhibiting metabolic detoxification enzymes associated with resistance, notably cytochrome P450 monooxygenases3. These nets received a conditional endorsement from the World Health Organisation (WHO) in 2017 based on results from a cluster-randomised controlled trial (CRT) in Tanzania demonstrating a reduction in malaria prevalence in communities allocated to pyrethroid-PBO ITNs relative to pyrethroid-only ITNs4. A full policy recommendation is now expected after results from a second CRT in Uganda also showed that two brands of pyrethroid-PBO ITNs reduced malaria prevalence relative to pyrethroid-only nets4. The WHO endorsement and expanding evidence base for the public health value of pyrethroid-PBO ITNs has prompted mass procurement of these nets by international malaria control agencies4,5. The proportion of pyrethroid-PBO ITNs of all ITNs delivered in sub-Saharan Africa has consequently risen from 3% in 2018 to 35% in 202112; pyrethroid-PBO ITNs are therefore replacing pyrethroid-only nets in many malaria-endemic countries.\n", + "\n", + "The increasing distribution and intensity of pyrethroid resistance has also affected malaria control policy regarding insecticide choice for IRS over the last decade. To improve vector control impact and preserve pyrethroids for ITNs, African IRS programmes partly suspended the use of pyrethroids and organochlorines in favour of carbamates and organophosphates5,12. Whilst both insecticides showed high toxicity against malaria vectors, the short residual duration of the initial formulations approved for IRS proved prohibitive, necessitating the development of longer-lasting formulations13. A new microencapsulated formulation of pirimphos-methyl was later developed (Actellic 300CS) demonstrating prolonged activity against pyrethroid-resistant malaria vector mosquitoes, lasting up to 9 months14,15. This formulation subsequently served as the insecticide of choice for the majority of IRS programmes in sub-Saharan Africa1 providing substantial control of mosquito vectors and malaria across distinct eco-epidemiological settings6,16-22.\n", + "\n", + "[MISSING_PAGE_POST]\n", + "\n", + "header: Discussion\n", + "\n", + "Given the inhibitory effect of PBO on mosquito cytochrome P450 enzymes, the WHO had temporarily recommended against the use of pyrethroid-PBO ITN in areas programmed for IRS with pirimiphos-methyl IRS until further evidence on the potential antagonism between PBO and the organo-thiophosphate pro-insecticide becomes available20. In this study, we found evidence of an antagonistic effect when pyrethroid PBO ITNs were combined with pirimiphos-methyl IRS in the same household in a pyrethroid-resistant area in Southern Benin where resistance was partly conferred by over-expression of mosquito cytochrome P450 enzymes20. Unlike the combination of the pyrethroid-PBO nets with bendicorab IRS which provided improved vector mosquito mortality compared to bendicorab IRS alone, combining these nets with pirimiphos-methyl IRS induced significantly lower levels of vector mosquito mortality rates compared to pirimiphos-methyl IRS alone. This effect\n", + "\n", + "Figure 3.: Mortality (24 h) of susceptible _Anopheles gambiae_ Kisumu and pyrethroid-resistant _An. gambiae_ s.l. Cove strains exposed to Olyset Plus and Permaket 3.0 in tunnel tests. Error bars represent 95% CIs. Both pyrethroid-PBO nets were compared to pyrethroid-only nets (Olyset Net and Permaket 2.0). Permaket 3.0 contains PBO only on the roof of the net. With both strains, 80–120 mosquitoes were exposed overnight to metting pieces cut from whole nets in 2–3 replicate tunnel tests.\n", + "\n", + "\n", + "was remarkably similar between the two brands of pyrethroid-PBO ITNs tested across both hut trials indicating that the negative interaction of the combination on mosquito mortality was less affected by the design and specifications of the pyrethroid-PBO ITN. Wild vector mosquitoes which entered the huts with the combined treatment may have contacted the pirimphos-methyl IRS on the hut wall only after picking up PBO from the ITN while attempting to blood-feed on the sheeper under the net. This pre-exposure to PBO on the ITN could have prevented the metabolic activation of the IRS insecticide in these mosquitoes, resulting in lower mortality rates relative to the IRS alone. This finding supports WHO's recommendation against the deployment of pyrethroid-PBO ITNs in areas that have already been programmed for IRS with pirimphos-methyl IRS. This is mostly important from a programmatic perspective where a vector control programme is faced with multiple choice of ITN types to deploy as an additional intervention to enhance vector control impact in an area that is already dedicated to IRS with pirimphos-methyl. In such a scenario, other types of ITNs like pyrethroid-only nets that were recently shown to complement pirimphos-methyl IRS when applied together23, should be considered.\n", + "\n", + "These findings should however not be interpreted to mean that pirimphos-methyl IRS must not be deployed to complement pyrethroid-PBO ITNs. Though pyrethroid-PBO ITNs have consistently shown improved performance in experimental hut trials against pyrethroid-resistant malaria vectors compared to pyrethroid-only nets34, the margin appears to vary depending on the intensity and mechanisms of pyrethroid-resistance encountered. In our study, the pyrethroid-PBO ITNs when applied alone in a hut induced low vector mosquito mortality (22-26%) compared to what has been observed in hut trials against the same vector population with another type of novel dual ITN (71-76%)35,40. Low levels of mosquito mortality in huts with pyrethroid-PBO ITNs and failure of PBO to fully restore pyrethroid susceptibility in bioassays have also been reported from studies in Burkina Faso37, Cameroon38, Cote d'Ivoire39 and Senegal40. This may indicate the presence of complex resistance mechanisms in the West African region unaffected by PBO. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors which continues to increase over time41, yet the public health value of pyrethroid-PBO ITNs has not been assessed in the region. It is therefore unclear whether these nets will provide the same improved epidemiological impact over pyrethroid-only nets in West Africa as observed in the East African community trials which have been the basis of their endorsement for malaria control. Our results showed a significant improvement in mosquito mortality when pirimphos-methyl IRS was combined with the pyrethroid-PBO ITNs (55-59%) compared to the pyrethroid-PBO ITNs alone (22-26%). Mosquito entry and feeding rates were also significantly lower with the combination compared to the pyrethroid-PBO ITNs alone. This provides some justification for deploying pirimphos-methyl IRS to complement pyrethroid-PBO nets in an area of high and complex pyrethroid-resistance where local vectors are less susceptible to the synergistic effect of PBO. Due to the limited choice of insecticides available for IRS, where a beneficial effect of the combination compared to the pyrethroid-PBO ITN alone has been established, pirimphos-methyl IRS should continue to be used even in the presence of high coverage with pyrethroid-PBO ITNs, preferably as part of an IRS rotational strategy. In line with WHO recommendations for insecticide resistance management42, the sustained rotation of multiple insecticide modes of action for IRS may help preserve efficacy to insecticides approved for IRS.\n", + "\n", + "Footnote 3: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 4: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 5: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 6: [https://doi.org/10.1038/s41598-022-10953-](https://doi.org/10.1038/s41598-022-10953-)\n", + "\n", + "y\n", + "\n", + "Footnote 7: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 8: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 9: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 10: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 11: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 12: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 13: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 14: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 15: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 16: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 17: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 18: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 19: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 20: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 21: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 22: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 23: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 24: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 25: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 26: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 27: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 28: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 29: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 30: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 31: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 32: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 333: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 34: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 35: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 36: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 37: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 38: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 39: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 40: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 41: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 42: https://doi.org/10.1038/s415\n", + "\n", + "\n", + "following pre-exposure to PBO, restoration of susceptibility to permethrin--the pyrethroid insecticide used on the pyrethroid-PBO ITN tested in the Tanzanian trial (Olvest Plus)--was high in the vector population from the study area (from 18 to 94%)15. Hence, the level of control achieved with pyrethroid-PBO ITN alone in the Tanzanian trial may have been optimal making the addition of pirimphos-methyl IRS unnecessary. This may not be the case in many communities in West Africa considering the afore-mentioned low levels of pyrethroid-PBO synergism reported in susceptibility bioassays and hut trials conducted across the region; in contrast, the addition of pirimphos-methyl IRS to pyrethroid-PBO ITNs in these communities could be more beneficial for control of clinical malaria compared to the ITN alone. As the range of vector control products available to vector control programmes expands, the choice of interventions and product brands must be aligned to local contexts and guided by local evidence. To help guide vector control policy, epidemiological trials and/or other empirical studies investigating the impact and cost-effectiveness of pyrethroid-PBO nets in communities in the West African region as well as their combination with IRS using pro-insectiles like pirimphos-methyl will be necessary.\n", + "\n", + "Although the inhibitory effect of PBO on mosquito cytochrome P450 enzymes formed the basis of our hypothesis for the antagonism observed between pirimphos-methyl IRS and pyrethroid-PBO ITNs in the experimental huts, behavioural interactions could also have contributed. In both trials, mosquito exiting rates into the veranda traps and blood-feeding inhibition were consistently higher in the combinations compared to the IRS insecticides alone. This could be attributed to the excitro-replenent property of the pyrethroid in the ITN stimulating directed movement of mosquitoes away from their source44. This early exiting effect was however significantly higher in the combination with pirimphos-methyl IRS compared to the combination with bendo-carb IRS suggesting a behavioural interaction in the presence of pirimphos-methyl that may have driven more mosquitoes to exit into the veranda, thus reducing mosquitoes' contact with pirimphos-methyl IRS treated walls. This may have compromised the impact of the pirimphos-methyl IRS in the combination compared to when applied alone and to the combination with bendoicarb. Further studies to assess mosquito flight behaviour, in the presence of the combinations would provide useful insight into behavioural interactions between the treatments. Controlled laboratory assays which minimise behavioural responses and assess P450 enzyme activity in exposed mosquitoes, could also elucidate the potential role of P450 enzyme inhibition in the antagonism observed in the experimental huts.\n", + "\n", + "While our trial focused on investigating the impact of combining pyrethroid-PBO ITNs with pirimphos-methyl IRS in the same households, there is a paucity of information on the interactions between these nets and other newly developed vector control products which contain new public health insecticides such as the neonciotohal, clothidinium and the pyrrole chlorfenapxy. Chlorfenapxy, an insecticide used on ITNs13 and being considered for IRS6,46, also requires activation by mosquito P450 enzymes6. Laboratory experiments have indicated the potential of PBO to antagonise the toxicity of chlorfenapxy against mosquitoes in bioassays29,30. Studies investigating the impact of co-deploying pyrethroid-PBO ITNs together with pyrethroid-chlorfenapxy ITNs or chlorfenapxy IRS in the same household will be essential to help inform optimal co-deployment policy.\n", + "\n", + "header: Results\n", + "\n", + "Experimental huts are used to assess the capacity of indoor vector control interventions to prevent wild vector mosquito entry and feeding and induce early mosquito exiting and mortality when applied in a human-occupied house, under carefully controlled conditions [3,12]. The hut trials were conducted at the CREC/LSHTM experimental hut station in Cowe, southern Benin (7deg14'N22deg18E), situated in a vast area of rice irrigation, which provides extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzini_ and _An. gambiae_ sensu stricto (s.s.) occur in symparity, with the latter present at lower densities and predominantly in the dry season. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold). Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (> 90%) and overexpression of CYP6P3, an enzyme associated with pyrethroid detoxification [3].\n", + "\n", + "Two experimental hut trials were performed in parallel for 4 months between April and July 2020. Trial 1 assessed the impact of combining Olyset Plus (Sumitomo Chemical), a permethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS while Trial 2 assessed the impact of combining PermaNet 3.0 (Vestergaard Sarl), a deltamethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS.\n", + "\n", + "The following six treatments were tested in each of the experimental hut trials:\n", + "\n", + "header: Susceptibility of wild vector mosquitoes at Cove to insecticides.\n", + "\n", + "WHO susceptibility bioassays were conducted in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove hit site to the constituent insecticides of the experimental hut treatments. Mortality rates of F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hit station following exposure to discriminating doses of deltamethrin and permethrin in WHO cylinder bioassays were low (42% and 11% respectively), confirming a high frequency of pyrethroid resistance in the Cove vector population (Table 1). Pre-exposure to PBO significantly improved mortality with deltamethrin (42% vs. 72%) but not with permethrin (11% vs. 8%). Mortality rates with the discriminating doses of bendiocarb and pirimiphos-methyl were 98% and 99% respectively. This demonstrated susceptibility to pirimiphos-methyl and bendiocarb. All insecticides induced 100% mortality with the laboratory-maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu strain. No mortality was recorded in the control with either strain.\n", + "\n", + "header: 3.2.3 Wall cone bioassays.\n", + "\n", + "WHO wall cone bioassays were performed on the IRS treated experimental hut walls 1 week, 2 months and 4 months after application of IRS treatments to assess their residual efficacy with increasing time elapsed from spraying. Mortality rates of the insecticide-susceptible _An. gambiae_ s.s. Kisum strain and pyrethroid-resistant _An. gambiae_ s.l. Cove strain following exposure to IRS-treated surfaces in 30 min wall cone bioassays are presented in Fig. 4. Mortality of mosquitoes exposed to pirimiphos-methyl treated walls was high (>90%) at all time points with both strains, showing no evidence of a decline in residual activity. In contrast, wall cone bioassay mortality on bendicor-treated surfaces declined rapidly, beginning at 67% and 39% in week 1 and falling to lows of 2% and 3% in month 4 with the Kisum and Cove strains respectively. No mortality was recorded in the controls at any time point with either strain.\n", + "\n", + "header: Experimental hut trial procedure\n", + "\n", + "During the hut trials, volunteer sleepers were rotated between experimental huts daily to mitigate the impact of individual attractiveness whilst bed nets were rotated weekly between the huts to reduce the impact of hut position on mosquito entry. Three (3) replicate bed nets were used per treatment and rotated within the treatment every 2 days. IRS treatments cannot be rotated and thus remained fixed throughout the trial. Consenting human volunteer sleepers alert in experimental huts between 21:00 and 06:00 to attract free-flying mosquitoes. Each morning, volunteer sleepers collected all live and dead mosquitoes from the different compartments of the hut (under the net, room, veranda) using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were then transferred to the field laboratory for morphological identification using taxonomic keys and scoring of immediate mortality and blood-feeding. All live, female _An. gambiae_ s.l. were provided access to 10% glucose (w/v) solution and held at ambient conditions in the field laboratory. Delayed mortality was recorded after 24 h for all treatments. Mosquito collections were performed 6 nights per week and on the 7th day, huts were cleaned and aired in preparation for the next rotation cycle.\n", + "\n", + "header: Wall cone bioassays\n", + "\n", + "The laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain and wild pyrethroid-resistant _An. gambiae_ s.l. Cove mosquitoes (F1) derived from breeding sites at the hut station were used for this purpose. At each time point, five cones were attached to the walls and ceiling of the IRS-treated huts. Approximately 50, 3-5-day old mosquitoes were transferred into cones in 5 batches of 10 and exposed to the treated surfaces for 30 min. As a control, mosquitoes were exposed in cones attached to the walls and ceiling of an unsprayed hut. At the end of exposure, mosquitoes were transferred to netted, plastic cups. Mosquitoes were provided access to 10% (w/v) glucose solution and delayed mortality after 24 h for all treatments.\n", + "\n", + "\n", + "Ethical considerations.Ethical approval for the conduct of the study was obtained from the ethics review boards of the Beninese Ministry of Health (No. 34) and the London School of Hygiene & Tropical Medicine (Ref: 16969). All human volunteer sleepers gave informed written consent prior to their participation; where necessary, the consent form and information sheet were explained in their local language. They were offered a free course of chemoprophylaxis spanning the duration of the trial and up to 3 weeks following its completion. A stand-by nurse was available for the duration of the trial to assess any cases of fever or adverse reactions to test items. Any confirmed cases of malaria were treated free of charge at a local health facility. Animals used as baits in tunnel test were maintained following institutional standard operating procedures (SOPs) designed to improve care and protect animals used for experimentation. All studies were performed according to relevant national and international guidelines.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cov\\u00e9\",\"Start_month\":4,\"Start_year\":2020,\"End_month\":7,\"End_year\":2020}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Untreated net\",\"Insecticide\":null,\"Concentration_initial\":null,\"Net_washed\":null,\"Net_holed\":null,\"pHI_category\":null},\"N02\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"Deltamethrin, PBO\",\"Concentration_initial\":\"2.1 g\\/kg, 4.0 g\\/kg, 25 g\\/kg\",\"Net_washed\":0.0,\"Net_holed\":9.0,\"pHI_category\":\"Good\"},\"N03\":{\"Net_type\":\"Olyset Plus\",\"Insecticide\":\"Permethrin, PBO\",\"Concentration_initial\":\"20 g\\/kg, 10 g\\/kg\",\"Net_washed\":0.0,\"Net_holed\":9.0,\"pHI_category\":\"Good\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Trial 2.\n", + "\n", + "1. Untreated net.\n", + "2. PermaNet 3.0 (Vestergaard Sarl).\n", + "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", + "4. PermaNet 3.0 + Bendiocarb IRS applied at 400 mg/m2.\n", + "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", + "6. PermaNet 3.0 + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", + "\n", + "Olyset Plus and PermaNet 3.0 are WHO prequalified pyrethroid-PBO ITNs [3]. Olyset Plus is made of polyethylene filaments coated with 20 g/Kg of permethrin and 10 g/Kg of PBO. PermaNet 3.0 consists of polyester side panels coated with deltamethrin at 2.1 g/kg and a polyethylene roof panel incorporating deltamethrin and PBO at 4.0 g/kg and 25 g/kg respectively.\n", + "\n", + "header: Tunnel tests\n", + "\n", + "The tunnel test consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections using a netting frame fitted into a slot across the tunnel. In one of the sections, a guinea pig was housed unconstrained in a small cage, and in the other section, -100 unfed female mosquitoes aged 5-8 days were released at dusk and left overnight. The net samples were deliberately hoked with nine 1-cm holes to give opportunity for mosquitoes to penetrate the animal bathed chamber for a blood meal an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 oC and 65-85% RH. The next morning, the numbers of mosquitoes found alive or dead, fed or unfed, in each section were scored. Live mosquitoes were provided with 10% glucose solution and delayed mortality was recorded after 24 h. The pyrethroid-PBO ITNs were compared to Olyset Net (a permethrin-only net, Sumitomo chemical) and PermaNet 2.0 (a deltamethrin-only net, Vestergaard Sarl) and an untreated control net. Two to three net pieces were tested per net type.\n", + "\n", + "header: scientific reports: Abstract\n", + "\n", + "OPEN : Pyrethroid-piperonyl butoxide (PBO) nets reduce the efficacy of indoor residual spraying with pirimiphos-methyl against pyrethroid-resistant malaria vectors\n", + "\n", + "Thomas Syme, Mariai Ghegbo, Dorothy Obuobi, Augustin Fongnikin, Abel Agbevo, Damien Todjinou, & Corine Ngufori\n", + "\n", + "\n", + "Primiphos-methyl is a pro-insecticide requiring activation by mosquito cytochrome P450 enzymes to induce toxicity while PBO blocks activation of these enzymes in pyrethroid-resistant vector mosquitoes. PBO may thus antagonise the toxicity of pirimiphos-methyl IRS when combined with pyrethroid-PBO ITMs. The impact of combining Olyset Plus and PermaNet 3.0 with Actellite 300CS IRS was evaluated against pyrethroid-resistant _Anopheles gambiae_ s.l. in two parallel experimental hut trials in southern Benin. The vector population was resistant to pyrethroids and PBO pre-exposure partially restored deltamethrin toxicity but not permitting. Mosquito mortality in experimental huts was significantly improved in the combinations of bendicocarp IRS with pyrethroid-PBO ITMs (33-3896) compared to bendicocarp IRS alone (14-16%, p < 0.001), demonstrating an additive effect. Conversely, mortality was significantly reduced in the combinations of pirimiphos-methyl IRS with pyrethroid-PBO ITMs (55-59%) compared to pirimiphos-methyl IRS alone (77-78%, p < 0.001), demonstrating evidence of an antagonistic effect when both interventions are applied in the same household. Mosquito mortality in the combination was significantly higher compared to the pyrethroid-PBO ITMs alone (55-59% vs. 22-26% p < 0.001) showing potential of pirimiphos-methyl IRS to enhance vector control when deployed to complement pyrethroid-PBO ITMs in an area where PBO fails to fully restore susceptibility to pyrethroids.\n", + "\n", + "header: 3.2.2 Tumed test bioassays.\n", + "\n", + "To further assess the efficacy of the pyrethroid-PBO ITNs and help explain the findings in the experimental huts, tunnel tests were performed using the susceptible _An. gambiae_ Kisum strain and pyrethroid-resistant _An. gambiae_ as from Cove on net samples (30 x 30 cm) obtained from Olyset Plus and Permaket 3.0 nets. The tunnel test is an overnight animal baulesar what simulates host-seeking behaviour of vector mosquitoes under controlled laboratory conditions. Both pyrethroid-PBO ITNs were compared to pyrethroid-only nets which contained similar pyrethroid-insecticles (Olyset Net and Permaket 2.0). Mosquito mortality rates observed in the tunnels are presented in Fig. 3. Mortality in the control tunnels was 11% with the susceptible Kisum strain and 2% with the pyrethroid-resistant Cove strain. All ITN types induced >8% mortality with the susceptible Kisum strain. Olyset Plus killed significantly higher proportions of the Cove mosquitoes compared to Olyset Net (90% vs. 42%). With Permaket 3.0, mortality of Cove mosquitoes exposed to net prices obtained from the PBO treated root of the net (68%) was higher compared to net prices obtained from the sides of the net (34%) and Permaket 2.0 (27%). The results, therefore, showed higher levels of mortality against pyrethroid-resistant mosquitoes from the Cove experimental hut station with the pyrethroid-PBO ITNs relative to pyrethroid-only nets. More detailed results from the tunnel tests are available in the supplementary information (Table S1).\n", + "\n", + "header: Study site and experimental hut treatments.: Trial 1.\n", + "\n", + "1. Untreated net.\n", + "2. Olyset Plus (Sumitomo Chemical).\n", + "3. Bendiocarb IRS applied at 400 mg/m2 (Ficam 80WP, Bayer).\n", + "4. Olyset Plus + Bendiocarb IRS applied at 400 mg/m2.\n", + "5. Pirimiphos-methyl IRS applied at 1000 mg/m2 (Actellic 300CS, Syngenta).\n", + "6. Olyset Plus + Pirimiphos-methyl IRS applied at 1000 mg/m2.\n", + "\n", + "header: Table 3: Blood-feeding results of wild, pyrethroid-resistant Anopheles gambiae sensu lato exposed to pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination in experimental huts in Cové, southern Benin.\n", + "footer: Results are presented separately for the trials involving Olgest Plus (Trial 1) and PermaNet 3.0 (Trial 2). ‘For each trial, values on this column sharing a superscript letter do not differ significantly, P > 0.05, logistic regression.\n", + "columns: ['Treatment', 'Total females caught', 'Total blood-fed', '% blood-feeding', '95% CIs', '% blood-feeding inhibition', '% personal protection']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total blood-fed\":\"Trial 1\",\"% blood-feeding\":\"Trial 1\",\"95% CIs\":\"Trial 1\",\"% blood-feeding inhibition\":\"Trial 1\",\"% personal protection\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total blood-fed\":\"481\",\"% blood-feeding\":\"72a\",\"95% CIs\":\"69\\u201376\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught\":\"511\",\"Total blood-fed\":\"122\",\"% blood-feeding\":\"24b\",\"95% CIs\":\"20\\u201328\",\"% blood-feeding inhibition\":\"67\",\"% personal protection\":\"75\"},\"3\":{\"Treatment\":\"Benedicarb IRS\",\"Total females caught\":\"556\",\"Total blood-fed\":\"528\",\"% blood-feeding\":\"95c\",\"95% CIs\":\"93\\u201397\",\"% blood-feeding inhibition\":\"\\u201331\",\"% personal protection\":\"\\u2013 10\"},\"4\":{\"Treatment\":\"Olyset Plus + bendicarb IRS\",\"Total females caught\":\"288\",\"Total blood-fed\":\"64\",\"% blood-feeding\":\"22b\",\"95% CIs\":\"17\\u201327\",\"% blood-feeding inhibition\":\"69\",\"% personal protection\":\"87\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total blood-fed\":\"420\",\"% blood-feeding\":\"79d\",\"95% CIs\":\"76\\u201383\",\"% blood-feeding inhibition\":\"\\u20139\",\"% personal protection\":\"13\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total blood-fed\":\"47\",\"% blood-feeding\":\"16e\",\"95% CIs\":\"11\\u201320\",\"% blood-feeding inhibition\":\"79\",\"% personal protection\":\"90\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total blood-fed\":\"Trial 2\",\"% blood-feeding\":\"Trial 2\",\"95% CIs\":\"Trial 2\",\"% blood-feeding inhibition\":\"Trial 2\",\"% personal protection\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total blood-fed\":\"391\",\"% blood-feeding\":\"67u\",\"95% CIs\":\"64\\u201371\",\"% blood-feeding inhibition\":\"\\u2013\",\"% personal protection\":\"\\u2013\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total blood-fed\":\"115\",\"% blood-feeding\":\"24v\",\"95% CIs\":\"20\\u201327\",\"% blood-feeding inhibition\":\"65\",\"% personal protection\":\"71\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total blood-fed\":\"519\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 33\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught\":\"233\",\"Total blood-fed\":\"54\",\"% blood-feeding\":\"23v\",\"95% CIs\":\"18\\u201329\",\"% blood-feeding inhibition\":\"66\",\"% personal protection\":\"86\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total blood-fed\":\"406\",\"% blood-feeding\":\"90w\",\"95% CIs\":\"88\\u201393\",\"% blood-feeding inhibition\":\"\\u201334\",\"% personal protection\":\"\\u2013 4\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"},\"14\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total blood-fed\":\"55\",\"% blood-feeding\":\"25v\",\"95% CIs\":\"19\\u201330\",\"% blood-feeding inhibition\":\"63\",\"% personal protection\":\"86\"}}\n", + "\n", + "header: Conclusion\n", + "\n", + "Our study provides the first evidence of an antagonistic effect when pyrethroid-PBO ITNs are combined with pirimphos-methyl IRS in the same household resulting in lower levels of vector mosquito mortality compared to the IRS alone. In line with WHO recommendations, vector control programmes faced with multiple choice of ITN types to deploy as an additional intervention to improve vector control impact in an area dedicated to IRS with pirimphos-methyl, may consider other types of ITNs like pyrethroid-ITNs which can better complement pirimphos-methyl IRS when deployed together. Nevertheless, the pyrethroid-PBO ITNs performed poorly probably due to the lower levels of restoration of pyrethroid susceptibility with PBO in the vector population. Combining these nets with pirimphos-methyl IRS provided significantly improved vector control compared to the net alone demonstrating the potential for pirimphos-methyl IRS to enhance malaria control when deployed to complement pyrethroid-PBO ITNs in areas where PBO fails to fully restore susceptibility to pyrethroids.\n", + "\n", + "header: Materials and methods\n", + "\n", + "Adult F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hut station were exposed to filter papers treated with discriminating doses of deltamethrin (0.05%), permethrin (0.75%), benchicaro (0.1%) and pirimphos-methyl (0.25%) in WHO cylinders8. Deltamethrin and perme-thrin were also tested with 60 min pre-exposure to PBO (4%) to assess the involvement of metabolic enzymes in pyrethroid resistance. A comparison was made with the laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain. Approximately 100, 3-5-day old mosquitoes of each strain were exposed to each insecticide for 60 min in four batches of 20-25. Similar numbers of mosquitoes were concurrently exposed to untreated filter papers as a control. At the end of exposure, mosquitoes were transferred to appropriately labelled holding tubes, provided access to 10% (w/v) glucose solution, and held at 27 +- 2degC and 75 +- 10% relative humidity. Knockdown was recorded 60 min after exposure and delayed mortality after 24 h for all treatments. The insecticide-treated filter papers were obtained from Universiti Sains Malaysia.\n", + "\n", + "header: Hut trial outcome measures\n", + "\n", + "The efficacy of the experimental hut treatments was expressed in terms of the following outcome measures:\n", + "\n", + "1. Deterrence (%)--proportional reduction in the number of mosquitoes collected in the treated hut relative to the number collected in the control.\n", + "2. Exophily (%)--exiting rates due to potential irritant effect of the treatment expressed as the proportion of mosquitoes collected in the veranda trap.\n", + "3. Blood-feeding inhibition (%)--proportional reduction in blood-feeding in the treated hut relative to the control. Calculated as follows: \\[\\mathit{Blood\\ feeding\\ inhibition}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bfu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", + "4. Mortality (%)--proportion of dead mosquitoes 24 h after collection.\n", + "5. Personal protection (%)--reduction in the number of blood-fed mosquitoes in the treated hut relative to the untreated net control. Calculated as follows: \\[\\mathit{Personal\\ protection}(\\%) = \\frac{100(B_{fu} - B_{fu})}{B_{fu}}\\] where _Bu_ is the number of blood-fed mosquitoes in the untreated net control huts and _Bt_ is the number of mosquitoes in the huts with insecticide treatments.\n", + "\n", + "header: Experimental hut results.\n", + "\n", + "_Mosquito entry and exiting in experimental huts._\n", + "\n", + "A total of 5,404 wild female _An. gambiae_ s.l. were collected in the experimental huts over the 4-month trials (Table 2). In both trials, mosquito entry in huts with the pyrethroid-PBO ITN alone and IRS treatments alone did not differ significantly from the controls (p > 0.05) but was significantly reduced with the pyrethroid-PBO ITN plus IRS combinations compared to the single treatments (p < 0.01). Mosquito entry rates did not also differ between the combinations of the pyrethroid-PBO ITN with bendiocarb IRS relative to the combinations with pirimiphos-methyl IRS (p < 0.05). Nevertheless, IRS treatments could not be rotated and thus, treatment-induced deterrence cannot be fully distinguished from differential attractiveness due to hut position.\n", + "\n", + "The proportion of mosquitoes exiting into the veranda of the huts with the untreated net controls was 36% and 39% for Trials 1 and 2 respectively. Exiting rates were higher with the pyrethroid-PBO ITNs alone (76%) relative to the IRS insecticides alone (51-63% with bendiocarb and 53-69% with pirimiphos-methyl IRS, p < 0.005). In both trials, the highest levels of mosquito exiting were achieved with the pyrethroid-PBO ITN plus IRS combinations (79% with bendiocarb and 87-89% with pirimiphos-methyl IRS). Between the combinations, adding\n", + "primiphos-methyl IRS to the pyrethroid-PBO ITN provided significantly higher levels of mosquito exiting relative to adding bendicord IRS (87-89% vs. 79%, P < 0.05).\n", + "\n", + "Blood-feeding rates of wild malaria vector mosquitoes in experimental huts.Blood-feeding rates in huts with the untreated net controls were 72% and 67% for Trials 1 and 2 respectively (Table 3). The IRS treatments did not provide any blood-feeding inhibition relative to the controls. Blood-feeding inhibition rates were high with the pyrethroid-PBO ITN plus IRS combinations in both trials (69-79% with Olyst Plus and 63-66% with PermaNet 3.0) and this was generally similar to what was observed with the pyrethroid-PBO ITNs alone (67% with Olyst Plus and 65% with PermaNet, P > 0.05) showing that the high levels of blood-feeding inhibition in the combinations, was mostly due to the ITNs. Blood-feeding inhibition with the PermaNet 3.0 plus primiphos-methyl IRS combination (66%) was similar to the PermaNet 3.0 plus bendicord IRS combination (63%, P = 0.71) meanwhile the Olyset Plus and primiphos-methyl IRS combination induced higher levels of blood-feeding inhibition compared to the Olyst Plus and bendicord IRS combination (79% vs. 69%, P = 0.036) (Table 3). Personal protection levels showed a similar trend and were also higher with the combinations (86-90%) relative to the IRS alone (- 33-13%).\n", + "\n", + "Mortality rates of wild malaria vector mosquitoes in experimental huts.\n", + "\n", + "Wild vector mosquito mortality in the controls was 3% in Trial 1 and 2% in Trial 2 (Table 4). The pyrethroid-PBO ITNs killed relatively low mosquito proportions (22% with Olgest Plus and 26% with PermaNet 3.0) though this was higher than what was observed with benedicarb IRS alone (14% in Trial 1 and 16% in Trial 2, P < 0.10). The highest mortality was achieved with pirimphos-methyl IRS alone (77% in Trial 1 and 78% in Trial 2). In both trials, mortality in the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations was significantly reduced compared to pirimphos-methyl IRS alone (77% with pirimphos-methyl IRS vs. 59% with Olgest Plus pirimphos-methyl IRS, P < 0.001 and 78% with pirimphos-methyl IRS vs. 55% with PermaNet 3.0 plus pirimphos-methyl IRS, P < 0.001), demonstrating an antagonistic effect. Conversely, mortality was significantly higher in the combinations of benedicarb IRS with Olgest Plus (33%) and PermaNet 3.0 (38%) than benedicarb IRS alone (14-16%, P < 0.001), demonstrating an additive effect (Table 4). Nevertheless, both pyrethroid-PBO plus IRS combinations induced significantly higher\n", + "\n", + "mortality compared to the pyrethroid-PBO ITNs alone (P < 0.001). Between the combinations, mortality was consistently higher with the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations (55-59%) compared to the pyrethroid-PBO ITN plus pedicocarb IRS (33-39%, P < 0.001).\n", + "\n", + "The monthly mortality rates of wild vector mosquitoes which entered the experimental huts during the trials are presented in Fig. 1 for the combinations with pedicocarb IRS and Fig. 2 for the combinations with pirimiphos-methyl IRS. In both trials, mosquito mortality rates in huts with the pyrethroid-PBO ITNs plus pedicocarb IRS declined sharply over time from 65-75% in month 1 to 33-38% in month 3, nevertheless, it was consistently higher than the single treatments alone (Fig. 1). Mosquito mortality in the combination of Olyset Plus and pirimiphos-methyl IRS was similar to the IRS alone in month 1 (> 90%) but declined substantially relative to the IRS in subsequent months. With the PermaNet 3.0 plus pirimiphos-methyl IRS combination,\n", + "\n", + "Figure 1.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pedicocarb IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Oyset Plus (Trial 1) and panel (**b**) presents results from the trial with PermaNet 3.0 (Trial 2). Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from onset of the trial. Mosquito mortality in the control untreated huts did not exceed 5% at any time point.\n", + "\n", + "Figure 2.: Monthly mortality rates of wild, pyrethroid-resistant _Anopheles gambiae_ sensu late entering experimental huts with pyrethroid-PBO ITNs and pirimiphos-methyl IRS, applied alone and in combination in Cové, southern Benin. Panel (**a**) presents results from the trial with Olyset Plus and panel (**b**) presents results from the trial with PermaNet 3.0. Error bars represent 95% CIs. Monthly mortality rates are cumulated with increasing time elapsed from the onset of the trial.\n", + "\n", + "\n", + "mosquito mortality was consistently lower than the IRS alone throughout the trial. Through the four months of the trials, the pyrethroid-PBO ITN plus pirimiphos-methyl IRS combinations consistently induced higher levels of mosquito mortality relative to the pyrethroid-PBO ITNs alone.\n", + "\n", + "header: Table 2. Entry and exiting of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs and pirimiphos-methyl IRS applied alone and in combination.\n", + "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", + "er signi\u001fcantly, P>0.05, negative binomial regression for females caught and logistic regression for exophily.\n", + "columns: ['Treatment', 'Total females caught*', '% deterrence', 'Total exiting', '% exophily*', '95% CIs']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught*\":\"Trial 1\",\"% deterrence\":\"Trial 1\",\"Total exiting\":\"Trial 1\",\"% exophily*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"664a\",\"% deterrence\":\"-\",\"Total exiting\":\"241\",\"% exophily*\":\"36a\",\"95% CIs\":\"33\\u201340\"},\"2\":{\"Treatment\":\"Olyset plus\",\"Total females caught*\":\"511a\",\"% deterrence\":\"23\",\"Total exiting\":\"390\",\"% exophily*\":\"76b\",\"95% CIs\":\"73\\u201380\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"556a\",\"% deterrence\":\"16\",\"Total exiting\":\"282\",\"% exophily*\":\"51c\",\"95% CIs\":\"47\\u201355\"},\"4\":{\"Treatment\":\"Olyset Plus + bendiocarb IRS\",\"Total females caught*\":\"288b\",\"% deterrence\":\"57\",\"Total exiting\":\"228\",\"% exophily*\":\"79b\",\"95% CIs\":\"75\\u201384\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"531a\",\"% deterrence\":\"20\",\"Total exiting\":\"281\",\"% exophily*\":\"53c\",\"95% CIs\":\"49\\u201357\"},\"6\":{\"Treatment\":\"Olyset plus + P-methyl IRS\",\"Total females caught*\":\"304b\",\"% deterrence\":\"54\",\"Total exiting\":\"270\",\"% exophily*\":\"89d\",\"95% CIs\":\"85\\u201392\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught*\":\"Trial 2\",\"% deterrence\":\"Trial 2\",\"Total exiting\":\"Trial 2\",\"% exophily*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught*\":\"581u\",\"% deterrence\":\"-\",\"Total exiting\":\"226\",\"% exophily*\":\"39u\",\"95% CIs\":\"35\\u201343\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught*\":\"488u\",\"% deterrence\":\"16\",\"Total exiting\":\"369\",\"% exophily*\":\"76v\",\"95% CIs\":\"72\\u201379\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught*\":\"575u\",\"% deterrence\":\"1\",\"Total exiting\":\"360\",\"% exophily*\":\"63w\",\"95% CIs\":\"59\\u201367\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + bendiocarb IRS\",\"Total females caught*\":\"233v\",\"% deterrence\":\"60\",\"Total exiting\":\"185\",\"% exophily*\":\"79v\",\"95% CIs\":\"74\\u201385\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught*\":\"450u\",\"% deterrence\":\"23\",\"Total exiting\":\"311\",\"% exophily*\":\"69x\",\"95% CIs\":\"65\\u201373\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught*\":\"223v\",\"% deterrence\":\"62\",\"Total exiting\":\"195\",\"% exophily*\":\"87y\",\"95% CIs\":\"83\\u201392\"}}\n", + "\n", + "header: Table 4.Mortality results of wild, pyrethroid-resistant Anopheles gambiae sensu lato in experimental huts in Covè, southern Benin treated with pyrethroid-PBO ITNs, and pirimiphos-methyl IRS applied alone and in combination.\n", + "footer: Results are presented separately for the trials involving Olyset Plus (Trial 1) and PermaNet 3.0 (Trial 2). *For each trial, values on this column sharing a superscript letter do not di\u001d\n", + "er signi\u001fcantly, p>0.05, logistic regression\n", + "columns: ['Treatment', 'Total females caught', 'Total dead', '% mortality*', '95% CIs']\n", + "\n", + "{\"0\":{\"Treatment\":\"Trial 1\",\"Total females caught\":\"Trial 1\",\"Total dead\":\"Trial 1\",\"% mortality*\":\"Trial 1\",\"95% CIs\":\"Trial 1\"},\"1\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"664\",\"Total dead\":\"22\",\"% mortality*\":\"3a\",\"95% CIs\":\"2\\u20135\"},\"2\":{\"Treatment\":\"Olyset Plus\",\"Total females caught\":\"511\",\"Total dead\":\"114\",\"% mortality*\":\"22b\",\"95% CIs\":\"19\\u201326\"},\"3\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"556\",\"Total dead\":\"87\",\"% mortality*\":\"16c\",\"95% CIs\":\"13\\u201319\"},\"4\":{\"Treatment\":\"Olyset Plus + Bendiocarb IRS\",\"Total females caught\":\"288\",\"Total dead\":\"95\",\"% mortality*\":\"33d\",\"95% CIs\":\"28\\u201338\"},\"5\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"531\",\"Total dead\":\"411\",\"% mortality*\":\"77e\",\"95% CIs\":\"74\\u201381\"},\"6\":{\"Treatment\":\"Olyset Plus + P-methyl IRS\",\"Total females caught\":\"304\",\"Total dead\":\"178\",\"% mortality*\":\"59f\",\"95% CIs\":\"53\\u201364\"},\"7\":{\"Treatment\":\"Trial 2\",\"Total females caught\":\"Trial 2\",\"Total dead\":\"Trial 2\",\"% mortality*\":\"Trial 2\",\"95% CIs\":\"Trial 2\"},\"8\":{\"Treatment\":\"Untreated net\",\"Total females caught\":\"581\",\"Total dead\":\"12\",\"% mortality*\":\"2u\",\"95% CIs\":\"1\\u20133\"},\"9\":{\"Treatment\":\"PermaNet 3.0\",\"Total females caught\":\"488\",\"Total dead\":\"127\",\"% mortality*\":\"26v\",\"95% CIs\":\"22\\u201330\"},\"10\":{\"Treatment\":\"Bendiocarb IRS\",\"Total females caught\":\"575\",\"Total dead\":\"80\",\"% mortality*\":\"14w\",\"95% CIs\":\"11\\u201317\"},\"11\":{\"Treatment\":\"PermaNet 3.0 + Bendiocarb IRS\",\"Total females caught\":\"233\",\"Total dead\":\"89\",\"% mortality*\":\"38x\",\"95% CIs\":\"32\\u201344\"},\"12\":{\"Treatment\":\"P-methyl IRS\",\"Total females caught\":\"450\",\"Total dead\":\"350\",\"% mortality*\":\"78y\",\"95% CIs\":\"74\\u201382\"},\"13\":{\"Treatment\":\"PermaNet 3.0 + P-methyl IRS\",\"Total females caught\":\"223\",\"Total dead\":\"122\",\"% mortality*\":\"55z\",\"95% CIs\":\"48\\u201361\"}}\n", + "\n", + "header: Data analysis.\n", + "\n", + "Differences in proportional outcomes (exophily, blood-feeding, mortality) between experimental but treatments were analysed using a blocked logistic regression model whereas differences in numerical outcomes (mosquito entry) were assessed using a negative binomial regression model. In addition to the fixed effect of the treatment, both models were adjusted to account for variation due to the differential attractiveness of the volunteer sleepers and huts. Results from the different experimental hut trials involving Olyset Plus and PermaNet 3.0 were analysed separately. Susceptibility bioassay results were interpreted according to WHO criteria49. All analyses were performed in Stata version 15.1.\n", + "\n", + "header: Results\n", + "\n", + "Experimental huts are used to assess the capacity of indoor vector control interventions to prevent wild vector mosquito entry and feeding and induce early mosquito exiting and mortality when applied in a human-occupied house, under carefully controlled conditions [3,12]. The hut trials were conducted at the CREC/LSHTM experimental hut station in Cowe, southern Benin (7deg14'N22deg18E), situated in a vast area of rice irrigation, which provides extensive and permanent breeding sites for mosquitoes. The rainy season extends from March to October and the dry season from November to February. _Anopheles coluzzini_ and _An. gambiae_ sensu stricto (s.s.) occur in symparity, with the latter present at lower densities and predominantly in the dry season. The vector population is susceptible to organophosphates and carbamates but exhibits intense resistance to pyrethroids (200-fold). Molecular genotyping and microarray studies have demonstrated a high frequency of the knockdown resistance L1014F allele (> 90%) and overexpression of CYP6P3, an enzyme associated with pyrethroid detoxification [3].\n", + "\n", + "Two experimental hut trials were performed in parallel for 4 months between April and July 2020. Trial 1 assessed the impact of combining Olyset Plus (Sumitomo Chemical), a permethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS while Trial 2 assessed the impact of combining PermaNet 3.0 (Vestergaard Sarl), a deltamethrin-based pyrethroid-PBO ITN with pirimiphos-methyl IRS.\n", + "\n", + "The following six treatments were tested in each of the experimental hut trials:\n", + "\n", + "header: 3.2.3 Wall cone bioassays.\n", + "\n", + "WHO wall cone bioassays were performed on the IRS treated experimental hut walls 1 week, 2 months and 4 months after application of IRS treatments to assess their residual efficacy with increasing time elapsed from spraying. Mortality rates of the insecticide-susceptible _An. gambiae_ s.s. Kisum strain and pyrethroid-resistant _An. gambiae_ s.l. Cove strain following exposure to IRS-treated surfaces in 30 min wall cone bioassays are presented in Fig. 4. Mortality of mosquitoes exposed to pirimiphos-methyl treated walls was high (>90%) at all time points with both strains, showing no evidence of a decline in residual activity. In contrast, wall cone bioassay mortality on bendicor-treated surfaces declined rapidly, beginning at 67% and 39% in week 1 and falling to lows of 2% and 3% in month 4 with the Kisum and Cove strains respectively. No mortality was recorded in the controls at any time point with either strain.\n", + "\n", + "header: Discussion\n", + "\n", + "Given the inhibitory effect of PBO on mosquito cytochrome P450 enzymes, the WHO had temporarily recommended against the use of pyrethroid-PBO ITN in areas programmed for IRS with pirimiphos-methyl IRS until further evidence on the potential antagonism between PBO and the organo-thiophosphate pro-insecticide becomes available20. In this study, we found evidence of an antagonistic effect when pyrethroid PBO ITNs were combined with pirimiphos-methyl IRS in the same household in a pyrethroid-resistant area in Southern Benin where resistance was partly conferred by over-expression of mosquito cytochrome P450 enzymes20. Unlike the combination of the pyrethroid-PBO nets with bendicorab IRS which provided improved vector mosquito mortality compared to bendicorab IRS alone, combining these nets with pirimiphos-methyl IRS induced significantly lower levels of vector mosquito mortality rates compared to pirimiphos-methyl IRS alone. This effect\n", + "\n", + "Figure 3.: Mortality (24 h) of susceptible _Anopheles gambiae_ Kisumu and pyrethroid-resistant _An. gambiae_ s.l. Cove strains exposed to Olyset Plus and Permaket 3.0 in tunnel tests. Error bars represent 95% CIs. Both pyrethroid-PBO nets were compared to pyrethroid-only nets (Olyset Net and Permaket 2.0). Permaket 3.0 contains PBO only on the roof of the net. With both strains, 80–120 mosquitoes were exposed overnight to metting pieces cut from whole nets in 2–3 replicate tunnel tests.\n", + "\n", + "\n", + "was remarkably similar between the two brands of pyrethroid-PBO ITNs tested across both hut trials indicating that the negative interaction of the combination on mosquito mortality was less affected by the design and specifications of the pyrethroid-PBO ITN. Wild vector mosquitoes which entered the huts with the combined treatment may have contacted the pirimphos-methyl IRS on the hut wall only after picking up PBO from the ITN while attempting to blood-feed on the sheeper under the net. This pre-exposure to PBO on the ITN could have prevented the metabolic activation of the IRS insecticide in these mosquitoes, resulting in lower mortality rates relative to the IRS alone. This finding supports WHO's recommendation against the deployment of pyrethroid-PBO ITNs in areas that have already been programmed for IRS with pirimphos-methyl IRS. This is mostly important from a programmatic perspective where a vector control programme is faced with multiple choice of ITN types to deploy as an additional intervention to enhance vector control impact in an area that is already dedicated to IRS with pirimphos-methyl. In such a scenario, other types of ITNs like pyrethroid-only nets that were recently shown to complement pirimphos-methyl IRS when applied together23, should be considered.\n", + "\n", + "These findings should however not be interpreted to mean that pirimphos-methyl IRS must not be deployed to complement pyrethroid-PBO ITNs. Though pyrethroid-PBO ITNs have consistently shown improved performance in experimental hut trials against pyrethroid-resistant malaria vectors compared to pyrethroid-only nets34, the margin appears to vary depending on the intensity and mechanisms of pyrethroid-resistance encountered. In our study, the pyrethroid-PBO ITNs when applied alone in a hut induced low vector mosquito mortality (22-26%) compared to what has been observed in hut trials against the same vector population with another type of novel dual ITN (71-76%)35,40. Low levels of mosquito mortality in huts with pyrethroid-PBO ITNs and failure of PBO to fully restore pyrethroid susceptibility in bioassays have also been reported from studies in Burkina Faso37, Cameroon38, Cote d'Ivoire39 and Senegal40. This may indicate the presence of complex resistance mechanisms in the West African region unaffected by PBO. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors which continues to increase over time41, yet the public health value of pyrethroid-PBO ITNs has not been assessed in the region. It is therefore unclear whether these nets will provide the same improved epidemiological impact over pyrethroid-only nets in West Africa as observed in the East African community trials which have been the basis of their endorsement for malaria control. Our results showed a significant improvement in mosquito mortality when pirimphos-methyl IRS was combined with the pyrethroid-PBO ITNs (55-59%) compared to the pyrethroid-PBO ITNs alone (22-26%). Mosquito entry and feeding rates were also significantly lower with the combination compared to the pyrethroid-PBO ITNs alone. This provides some justification for deploying pirimphos-methyl IRS to complement pyrethroid-PBO nets in an area of high and complex pyrethroid-resistance where local vectors are less susceptible to the synergistic effect of PBO. Due to the limited choice of insecticides available for IRS, where a beneficial effect of the combination compared to the pyrethroid-PBO ITN alone has been established, pirimphos-methyl IRS should continue to be used even in the presence of high coverage with pyrethroid-PBO ITNs, preferably as part of an IRS rotational strategy. In line with WHO recommendations for insecticide resistance management42, the sustained rotation of multiple insecticide modes of action for IRS may help preserve efficacy to insecticides approved for IRS.\n", + "\n", + "Footnote 3: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 4: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 5: [https://doi.org/10.1038/s41598-022-10953-y](https://doi.org/10.1038/s41598-022-10953-y)\n", + "\n", + "Footnote 6: [https://doi.org/10.1038/s41598-022-10953-](https://doi.org/10.1038/s41598-022-10953-)\n", + "\n", + "y\n", + "\n", + "Footnote 7: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 8: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 9: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 10: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 11: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 12: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 13: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 14: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 15: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 16: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 17: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 18: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 19: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 20: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 21: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 22: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 23: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 24: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 25: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 26: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 27: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 28: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 29: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 30: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 31: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 32: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 333: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 34: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 35: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 36: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 37: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 38: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 39: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 40: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 41: https://doi.org/10.1038/s41598-022-10953-y\n", + "\n", + "Footnote 42: https://doi.org/10.1038/s415\n", + "\n", + "\n", + "following pre-exposure to PBO, restoration of susceptibility to permethrin--the pyrethroid insecticide used on the pyrethroid-PBO ITN tested in the Tanzanian trial (Olvest Plus)--was high in the vector population from the study area (from 18 to 94%)15. Hence, the level of control achieved with pyrethroid-PBO ITN alone in the Tanzanian trial may have been optimal making the addition of pirimphos-methyl IRS unnecessary. This may not be the case in many communities in West Africa considering the afore-mentioned low levels of pyrethroid-PBO synergism reported in susceptibility bioassays and hut trials conducted across the region; in contrast, the addition of pirimphos-methyl IRS to pyrethroid-PBO ITNs in these communities could be more beneficial for control of clinical malaria compared to the ITN alone. As the range of vector control products available to vector control programmes expands, the choice of interventions and product brands must be aligned to local contexts and guided by local evidence. To help guide vector control policy, epidemiological trials and/or other empirical studies investigating the impact and cost-effectiveness of pyrethroid-PBO nets in communities in the West African region as well as their combination with IRS using pro-insectiles like pirimphos-methyl will be necessary.\n", + "\n", + "Although the inhibitory effect of PBO on mosquito cytochrome P450 enzymes formed the basis of our hypothesis for the antagonism observed between pirimphos-methyl IRS and pyrethroid-PBO ITNs in the experimental huts, behavioural interactions could also have contributed. In both trials, mosquito exiting rates into the veranda traps and blood-feeding inhibition were consistently higher in the combinations compared to the IRS insecticides alone. This could be attributed to the excitro-replenent property of the pyrethroid in the ITN stimulating directed movement of mosquitoes away from their source44. This early exiting effect was however significantly higher in the combination with pirimphos-methyl IRS compared to the combination with bendo-carb IRS suggesting a behavioural interaction in the presence of pirimphos-methyl that may have driven more mosquitoes to exit into the veranda, thus reducing mosquitoes' contact with pirimphos-methyl IRS treated walls. This may have compromised the impact of the pirimphos-methyl IRS in the combination compared to when applied alone and to the combination with bendoicarb. Further studies to assess mosquito flight behaviour, in the presence of the combinations would provide useful insight into behavioural interactions between the treatments. Controlled laboratory assays which minimise behavioural responses and assess P450 enzyme activity in exposed mosquitoes, could also elucidate the potential role of P450 enzyme inhibition in the antagonism observed in the experimental huts.\n", + "\n", + "While our trial focused on investigating the impact of combining pyrethroid-PBO ITNs with pirimphos-methyl IRS in the same households, there is a paucity of information on the interactions between these nets and other newly developed vector control products which contain new public health insecticides such as the neonciotohal, clothidinium and the pyrrole chlorfenapxy. Chlorfenapxy, an insecticide used on ITNs13 and being considered for IRS6,46, also requires activation by mosquito P450 enzymes6. Laboratory experiments have indicated the potential of PBO to antagonise the toxicity of chlorfenapxy against mosquitoes in bioassays29,30. Studies investigating the impact of co-deploying pyrethroid-PBO ITNs together with pyrethroid-chlorfenapxy ITNs or chlorfenapxy IRS in the same household will be essential to help inform optimal co-deployment policy.\n", + "\n", + "header: Abbreviations\n", + "\n", + "IRS Indoor residual spraying\n", + "\n", + "WHO World Health Organization\n", + "\n", + "PQ Prenqualification team\n", + "\n", + "PBO Piperonyl butoxide\n", + "\n", + "ITN Insecticide treated net\n", + "\n", + "LLIN Long-lasting insecticidal net\n", + "\n", + "GPIRM Global plan for insecticide resistance management\n", + "\n", + "WHOPES WHO pesticide evaluation scheme\n", + "\n", + "CREC Centre de Recherche Entomologique de Cotonou\n", + "\n", + "LSHTTM London School of Hygiene & Tropical Medicine\n", + "\n", + "Kdr Knockdown resistance\n", + "\n", + "PAMVERC Pan African Malaria Vector Research Consortium\n", + "\n", + "The large-scale implementation of long-lasting insecticidal nets (LLINs), and indoor residual spraying (IRS) has resulted in profound reductions in malaria-associated morbidity and mortality across sub-Saharan Africa, over the last two decades1. Unfortunately, resistance to the insecticides applied through these interventions, especially the pyrethroids, is now pervasive in vector populations in malaria-endemic countries', threatening to undermine their impact. In response, a new generation of novel LLINs and IRS based on new active ingredients with the potential to sustain vector control impact in the face of increasing resistance, have been developed3. This includes dual insecticide-treated nets containing a pyrethroid and an alternative effective new compound as well as new IRS insecticides with novel modes of action or improved formulations that have shown potential to provide enhanced control of insecticide-resistant malaria vector populations.\n", + "\n", + "Insecticide-treated nets (ITNs) combining a pyrethroid and piperonyl butoxido (PBO) were the first novel class of ITNs to be developed for malaria vector control. PBO is a synergism that can enhance the impact of pyrethroids and other insecticides by inhibiting metabolic detoxification enzymes associated with resistance, notably cytochrome P450 monooxygenases3. These nets received a conditional endorsement from the World Health Organisation (WHO) in 2017 based on results from a cluster-randomised controlled trial (CRT) in Tanzania demonstrating a reduction in malaria prevalence in communities allocated to pyrethroid-PBO ITNs relative to pyrethroid-only ITNs4. A full policy recommendation is now expected after results from a second CRT in Uganda also showed that two brands of pyrethroid-PBO ITNs reduced malaria prevalence relative to pyrethroid-only nets4. The WHO endorsement and expanding evidence base for the public health value of pyrethroid-PBO ITNs has prompted mass procurement of these nets by international malaria control agencies4,5. The proportion of pyrethroid-PBO ITNs of all ITNs delivered in sub-Saharan Africa has consequently risen from 3% in 2018 to 35% in 202112; pyrethroid-PBO ITNs are therefore replacing pyrethroid-only nets in many malaria-endemic countries.\n", + "\n", + "The increasing distribution and intensity of pyrethroid resistance has also affected malaria control policy regarding insecticide choice for IRS over the last decade. To improve vector control impact and preserve pyrethroids for ITNs, African IRS programmes partly suspended the use of pyrethroids and organochlorines in favour of carbamates and organophosphates5,12. Whilst both insecticides showed high toxicity against malaria vectors, the short residual duration of the initial formulations approved for IRS proved prohibitive, necessitating the development of longer-lasting formulations13. A new microencapsulated formulation of pirimphos-methyl was later developed (Actellic 300CS) demonstrating prolonged activity against pyrethroid-resistant malaria vector mosquitoes, lasting up to 9 months14,15. This formulation subsequently served as the insecticide of choice for the majority of IRS programmes in sub-Saharan Africa1 providing substantial control of mosquito vectors and malaria across distinct eco-epidemiological settings6,16-22.\n", + "\n", + "[MISSING_PAGE_POST]\n", + "\n", + "header: Susceptibility of wild vector mosquitoes at Cove to insecticides.\n", + "\n", + "WHO susceptibility bioassays were conducted in parallel to the experimental hut trial to determine the susceptibility of the vector population at the Cove hit site to the constituent insecticides of the experimental hut treatments. Mortality rates of F1 progeny of field-collected _An. gambiae_ s.l. from the Cove hit station following exposure to discriminating doses of deltamethrin and permethrin in WHO cylinder bioassays were low (42% and 11% respectively), confirming a high frequency of pyrethroid resistance in the Cove vector population (Table 1). Pre-exposure to PBO significantly improved mortality with deltamethrin (42% vs. 72%) but not with permethrin (11% vs. 8%). Mortality rates with the discriminating doses of bendiocarb and pirimiphos-methyl were 98% and 99% respectively. This demonstrated susceptibility to pirimiphos-methyl and bendiocarb. All insecticides induced 100% mortality with the laboratory-maintained, insecticide-susceptible _An. gambiae_ s.s. Kisumu strain. No mortality was recorded in the control with either strain.\n", + "\n", + "header: Wall cone bioassays\n", + "\n", + "The laboratory-maintained, susceptible _An. gambiae_ s.s. Kisumu strain and wild pyrethroid-resistant _An. gambiae_ s.l. Cove mosquitoes (F1) derived from breeding sites at the hut station were used for this purpose. At each time point, five cones were attached to the walls and ceiling of the IRS-treated huts. Approximately 50, 3-5-day old mosquitoes were transferred into cones in 5 batches of 10 and exposed to the treated surfaces for 30 min. As a control, mosquitoes were exposed in cones attached to the walls and ceiling of an unsprayed hut. At the end of exposure, mosquitoes were transferred to netted, plastic cups. Mosquitoes were provided access to 10% (w/v) glucose solution and delayed mortality after 24 h for all treatments.\n", + "\n", + "\n", + "Ethical considerations.Ethical approval for the conduct of the study was obtained from the ethics review boards of the Beninese Ministry of Health (No. 34) and the London School of Hygiene & Tropical Medicine (Ref: 16969). All human volunteer sleepers gave informed written consent prior to their participation; where necessary, the consent form and information sheet were explained in their local language. They were offered a free course of chemoprophylaxis spanning the duration of the trial and up to 3 weeks following its completion. A stand-by nurse was available for the duration of the trial to assess any cases of fever or adverse reactions to test items. Any confirmed cases of malaria were treated free of charge at a local health facility. Animals used as baits in tunnel test were maintained following institutional standard operating procedures (SOPs) designed to improve care and protect animals used for experimentation. All studies were performed according to relevant national and international guidelines.\n", + "\n", + "header: Experimental hut trial procedure\n", + "\n", + "During the hut trials, volunteer sleepers were rotated between experimental huts daily to mitigate the impact of individual attractiveness whilst bed nets were rotated weekly between the huts to reduce the impact of hut position on mosquito entry. Three (3) replicate bed nets were used per treatment and rotated within the treatment every 2 days. IRS treatments cannot be rotated and thus remained fixed throughout the trial. Consenting human volunteer sleepers alert in experimental huts between 21:00 and 06:00 to attract free-flying mosquitoes. Each morning, volunteer sleepers collected all live and dead mosquitoes from the different compartments of the hut (under the net, room, veranda) using a torch and aspirator and placed them in correspondingly labelled plastic cups. Mosquito collections were then transferred to the field laboratory for morphological identification using taxonomic keys and scoring of immediate mortality and blood-feeding. All live, female _An. gambiae_ s.l. were provided access to 10% glucose (w/v) solution and held at ambient conditions in the field laboratory. Delayed mortality was recorded after 24 h for all treatments. Mosquito collections were performed 6 nights per week and on the 7th day, huts were cleaned and aired in preparation for the next rotation cycle.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cov\\u00e9\",\"Start_month\":4,\"Start_year\":2020,\"End_month\":7,\"End_year\":2020}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Untreated net\",\"Insecticide\":null,\"Concentration_initial\":null,\"Net_washed\":null,\"Net_holed\":null,\"pHI_category\":null},\"N02\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"Deltamethrin, PBO\",\"Concentration_initial\":\"2.1 g\\/kg, 4.0 g\\/kg, 25 g\\/kg\",\"Net_washed\":0.0,\"Net_holed\":9.0,\"pHI_category\":\"Good\"},\"N03\":{\"Net_type\":\"Olyset Plus\",\"Insecticide\":\"Permethrin, PBO\",\"Concentration_initial\":\"20 g\\/kg, 10 g\\/kg\",\"Net_washed\":0.0,\"Net_holed\":9.0,\"pHI_category\":\"Good\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Table 1: Treatment arms and descriptions of longlasting insecticide-treated nets.\n", + "footer: PermaNet is a registered trademark of Vestergaard Frandsen Holding SA. Olyset is a registered trademark of Sumitomo Chemical Co. Ltd. DawaPlusis a registered trademark of Tana Netting Co. Ltd.PBO, piperonyl butoxide.\n", + "columns: ['Treatment arm', 'Description', 'Manufacturer']\n", + "\n", + "{\"0\":{\"Treatment arm\":\"Untreated net\",\"Description\":\"Net manufactured manually using netting material from market\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment arm\":\"Olyset\\u00ae Net\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment arm\":\"Olyset\\u00ae Plus\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin and 4.3 x 10-4 kg\\/m2 of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment arm\":\"PermaNet\\u00ae 2.0\",\"Description\":\"5.5 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"4\":{\"Treatment arm\":\"PermaNet\\u00ae 3.0\",\"Description\":\"Combination of 2.8 g\\/kg of deltamethrin coated on polyester with strengthened border (side panels) and deltamethrin (4.0 g\\/kg) and PBO (25 g\\/kg)\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"5\":{\"Treatment arm\":\"Dawa\\u00ae Plus 2.0\",\"Description\":\"8.0 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"TANA Netting\"}}\n", + "\n", + "header: Supporting Information\n", + "\n", + "Additional supporting information may be found online in the Supporting Information section at the end of the article.\n", + "\n", + "Fig. 5: Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hit relative to the control hit. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "header: Entry rate and deterrence: Exit rates and induced exophily\n", + "\n", + "Exit rates refer here to the proportion of mosquitoes present in the veranda trap. As with entrance rates, exit rates varied throughout the study (Fig. 4). On average, the induced exophily rates were between 26.4% (control net) and 48.5% (Olyset Net) (Table S4). The odds of finding a mosquito in the veranda trap were significantly increased in the huts with treated nets, with the exception of the DawaPlus, although even for the DawaPlus a tendency to induce exophily was observed (Fig. 4, Table S4).\n", + "\n", + "header: Molecular analysis\n", + "\n", + "DNA was extracted from mosquito legs by heating at 90*C for 30 min. Species were identified using the SINE200 protocol (Santolamazza _et al._, 2008) and then screened for the voltage gated sodium channel (VGSC) 1014F and 1575Y alleles using Taqman assays (Bass _et al._, 2007; Jones _et al._, 2012).\n", + "\n", + "Total RNA was extracted from six pools of 10 5-day-old non-blood-fed female _An. coluzzii_ from larval collections from Tengrela and VK5 using the RNAqueous(r)4PCR Kit for isolation of DNA-free RNA (Ambion, Inc., Austin, TX, U.S.A.) according to the manufacturer's procedures. The RNA was eluted in 50 mL of elution solution and treated with DNase. The quality and quantity of all the RNA used were assessed \n", + "using a NanoDrop ND1000 (Thermo Fisher Scientific UK Ltd, Renfrew, U.K.).\n", + "\n", + "The expression profiles of five P450 genes (_CYP6M2_, _CYP6Z2_, _CYP6Z3_, _CYP6P3_, _CYP6P4_), previously found to be over-expressed in pyrethroid-resistant field populations from Burkina Faso (Toe _et al._, 2015) and/or known to metabolize pyrethroids (Muller _et al._, 2008; Mitchell _et al._, 2012) were quantified using reverse-transcription quantitative polymerase chain reaction (RT-qPCR). The qPCR analysis was conducted at the LSTM and used the following mosquito populations: Ngousso, an insecticide-susceptible strain originating from Ngousso in Cameroon in 2006 and maintained in the insectary at LSTM; Tengrela specimens reared from larval collections in October-November 2014, and VK5 specimens reared from larval collections in October-November 2014. Approximately 600 ng of RNA was reverse-transcribed to first-strand cDNA using SuperScript(tm) III reverse transcriptase (Invitrogen, Inc., Carlsbad, CA, U.S.A.) according to the manufacturer's procedures. Samples were then purified using the Qiagen Easy Purification Kit (Qiagen Benelux BV, Venlo, the Netherlands) before proceeding to qPCR. Each of the six pool replicates were run in triplicate using 2X SYBR Brilliant III (Agilent Technologies, Inc., Palo Alto, CA, U.S.A.), forward and reverse primers (300 nM) [sequence available in Toe _et al._ (2015)] on the Mx3005p qPCR system (Agilent Technologies, Inc., Palo Alto, California) with the following cycling protocol: 95 degC for 3 min, followed by 40 cycles of 95 degC for 10 s and 60 degC for 10 s. The qPCR data were analysed using the delta Ct values method, taking into account the PCR efficiency (Pfaffi, 2001). The candidate Ct values were normalized against three housekeeping genes, encoding ribosomal protein L40 (ubiquitin) (_AGAP007927_), an elongation factor (_AGAP005128_) and the S7 ribosomal protein (_AGAP010592_). The normalized Ct values of each gene were then compared with the normalized Ct values of the susceptible Ngousso strain.\n", + "\n", + "header: Results\n", + "\n", + "In VK5, very low levels of mortality were observed after exposure to the discriminating dose of deltamethrin and permethrin, but pre-exposure to PBO significantly increased mortality rates from 2.5% (_n_ = 163) to 45% (_n_ = 158) and from 5% (_n_ = 153) to 26% (_n_ = 156) for deltamethrin and permethrin, respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig. 1). In Tengrela, mortality rates of 34% (_n_ = 85) and 14% (_n_ = 101) were recorded for deltamethrin and permethrin, respectively. When PBO was used, mortality rates increased significantly to 63% (_n_ = 84) and 42% (_n_ = 104), respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig.1). Although there was evidence of synergism, pre-exposure to PBO did not fully restore susceptibility in either site to either pyrethroid.\n", + "\n", + "_Anopheles coluzzi_ was the only species of the _An. gambiae_ complex identified by PCR of a subset of 80 specimens from Tengrela and VK5. High frequencies of the 1014F allele of the VGSC were recorded in Tengrela (0.819, 95% CI 0.750-0.875) and VK5 (0.885, 95% CI 0.824-0.930) with the 1575Y allele present at lower frequencies of 0.169 (95% CI 0.114-0.236) and 0.221 (95% CI 0.158-0.295), respectively. Samples were not genotyped for the 1014S allele as previous extensive surveys have not detected this allele in _An. coluzzi_ from these sites (Toe _et al._, 2015). There was no statistically significant difference in the frequency of either the 1014F or 1575Y allele between the two sites (Table 2).\n", + "\n", + "Several cytochrome P450 genes previously associated with pyrethroid resistance showed elevated expression levels in the Tengrela and the VK5 _An. coluzzi_ populations compared with the susceptible laboratory Ngousso strain (Fig. 2). _CYP6P3_, _CYP6M2_, _CYP6Z3_, _CYP6P4_ and _CYP6Z2_ were found to be\n", + "\n", + "Fig. 1: Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: \\(P\\) < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "\n", + "overexpressed in both field strains compared with the susceptible laboratory colony (fold change: > 2) with the most highly overexpressed genes in both populations being _CYP6Z2_ and _CYP6Z3_ (Fig. 2).\n", + "\n", + "header: Discussion\n", + "\n", + "Very low mortality rates were obtained for both permethrin and deltamethrin in the two study sites following an hour of exposure to WHO diagnostic doses. Southwestern Burkina Faso is known as a hotspot of pyrethroid resistance (Dabire _et al._, 2012; Namountougou _et al._, 2012). Rapid changes in the prevalence of pyrethroid resistance have been observed since the first national LLIN distribution programme in 2010: in 2009, mosquito mortality following deltamethrin exposure was 25% (Dabire _et al._, 2012), in VK has since fallen to just 2.5%. The frequency of the 1014F _kdr_ mutation also increased from 0.28 in 2006 (Dabire _et al._, 2009) to 0.88 in the current study. Similar increases in the prevalence of pyrethroid resistance have been witnessed in Tengrela. Mortality rates of 93% and 46% for deltamethrin and permethrin, respectively, were recorded in 2011 (Namountougou _et al._, 2012; K. H. Toe, unpublished data 2011), but these mortality rates had reduced to 33% and 13% in 2014, the year of the current study (Toe _et al._, 2015). In the present study, pyrethroid mortality was significantly increased by pre-exposure to PBO. This, together with the qPCR data showing elevated expression of multiple P450s in both field populations compared with a susceptible laboratory strain, indicate that oxidases are an important resistance mechanism in _An. coluzzi_ in southwestern Burkina Faso. It is noted that resistance was not fully restored by PBO pre-exposure, indicating that additional resistance mechanisms, such as target site resistance and possibly cuticular modifications (Toe _et al._, 2015), may contribute to the pyrethroid resistance phenotype in these populations.\n", + "\n", + "header: Abstract\n", + "\n", + "Do bednets including piperonyl butoxide offer additional protection against populations of _Anopheles gambiae s.l._ that are highly resistant to pyrethroids? An experimental hut evaluation in Burkina Faso\n", + "\n", + "K. H. T oe\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " P. Muller\n", + "\n", + "2H233\n", + "\n", + "33Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " A. Badlo\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " A. Traore\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " N. Sagnon\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " R. K. Dabi Irene\n", + "\n", + "4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " H. Ransons\n", + "\n", + "5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + "\n", + "Malaria control is dependent on the use of longlasting insecticidal nets (LLINs) containing pyrethroids. A new generation of LLINs containing both pyrethroids and the synergist piperonyl butoxide (PBO) has been developed in response to increasing pyrethroid resistance in African malaria vectors, but questions remain about the performance of these nets in areas where levels of pyrethroid resistance are very high. This study was conducted in two settings in southwest Burkina Faso, Vallee du Kou 5 and Tengrela, where _Anopheles gambiae s.l._ (Diptera: Culicidae) mortality rates in World Health Organization (WHO) discriminating dose assays were \\(<\\) 14% for permethrin and \\(<\\) 33% for delatamethrin. When mosquitoes were pre-exposed to PBO in WHO tube assays, mortality rates increased substantially but full susceptibility was not restored. Molecular characterization revealed high levels of _kdr_ alleles and elevated levels of P450s previously implicated in pyrethroid resistance. In cone bioassays and experimental huts, PBO LLINs outperformed the pyrethroid-only equivalents from the same manufacturers. Blood feeding rates were 1.6-2.2-fold lower and mortality rates were 1.69-1.78-fold greater in huts with PBO LLINs vs. non-PBO LLINs. This study indicates that PBO LLINs provide greater personal and community-level protection than standard LLINs against highly pyrethroid-resistant mosquito populations.\n", + "\n", + " insecticide resistance, insecticide resistance management, longlasting insecticidal nets, PBO.\n", + "\n", + "header: Table 2: Frequencies of 1014F and 1575Y kdr alleles in Anopheles coluzzili, in Tengrela and Vallée du Kou 5 (VK5).\n", + "footer: Chi-squared test (http://vassarstats.net/) for the comparison of the frequency of the 1014F and 1575Y mutations in Anopheles coluzzili populations from Tengrela and VK5 (October 2014). No statistical difference was observed in the frequencies of the kdr alleles in the two sites.\n", + "columns: ['1014F mutation - Unnamed: 0_level_1', '1014F mutation - Total n', '1014F mutation - LL', '1014F mutation - LF', '1014F mutation - FF', '1014F mutation - f (1014F)', '1014F mutation - P-value']\n", + "\n", + "{\"0\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"2\",\"1014F mutation - LF\":\"25\",\"1014F mutation - FF\":\"53\",\"1014F mutation - f (1014F)\":\"0.819\",\"1014F mutation - P-value\":\"0.26\"},\"1\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"78\",\"1014F mutation - LL\":\"0\",\"1014F mutation - LF\":\"18\",\"1014F mutation - FF\":\"60\",\"1014F mutation - f (1014F)\":\"0.885\",\"1014F mutation - P-value\":null},\"2\":{\"1014F mutation - Unnamed: 0_level_1\":\"1575Y mutation\",\"1014F mutation - Total n\":\"1575Y mutation\",\"1014F mutation - LL\":\"1575Y mutation\",\"1014F mutation - LF\":\"1575Y mutation\",\"1014F mutation - FF\":\"1575Y mutation\",\"1014F mutation - f (1014F)\":\"1575Y mutation\",\"1014F mutation - P-value\":\"1575Y mutation\"},\"3\":{\"1014F mutation - Unnamed: 0_level_1\":null,\"1014F mutation - Total n\":\"Total n\",\"1014F mutation - LL\":\"NN\",\"1014F mutation - LF\":\"NY\",\"1014F mutation - FF\":\"YY\",\"1014F mutation - f (1014F)\":\"f (A575Y)\",\"1014F mutation - P-value\":\"P-value\"},\"4\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"57\",\"1014F mutation - LF\":\"19\",\"1014F mutation - FF\":\"4\",\"1014F mutation - f (1014F)\":\"0.169\",\"1014F mutation - P-value\":\"0.39\"},\"5\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"77\",\"1014F mutation - LL\":\"49\",\"1014F mutation - LF\":\"22\",\"1014F mutation - FF\":\"6\",\"1014F mutation - f (1014F)\":\"0.221\",\"1014F mutation - P-value\":null}}\n", + "\n", + "header: Performance of PBO LLINs in experimental hut studies\n", + "\n", + "The enhanced performance of PBO-containing LLINs over conventional LLINs was further supported by the experimental hut results. Both blood feeding inhibition and mortality rates were significantly higher in huts containing PBO LLINs than in those containing conventional LLINs from the same manufacturers. An improved performance of the PermaNet 3.0, which contains both higher concentrations of deltamethrin compared with the PermaNet 2.0, plus PBO on the roof of the net, has also been reported in pyrethroid-resistant populations of malaria vectors in Ivory Coast (Koudou _et al._, 2011), Benin (N'Guessan _et al._, 2010) and Burkina Faso (Corbel _et al._, 2010).\n", + "\n", + "Fig. 4: Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the \\(P\\)-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "\n", + "The magnitude of this effect differs among studies, with previous studies reporting increases in mortality rates of 1.3-1.8-fold, whereas the current study reports an OR of 2.45, which corresponds to a 1.78-fold increase. Only one experimental hit study comparing the Olyset Plus with the Olyset Net has been published to date (Pennetier _et al._, 2013). This study, conducted in Benin in 2013, reported mortality rates 1.9-fold higher in the PBO arm than in the conventional LLIN arm (Pennetier _et al._, 2013), which is in line with the findings of the current study, which found a 1.89-fold (OR 2.1) elevation in mortality rates in the Olyset Plus arm.\n", + "\n", + "In addition to increased mortality rates, the current study, plus two of the previous experimental hit studies, reported significantly higher rates of blood feeding inhibition for PBO vs. conventional LLINs (Corbel _et al._, 2010; N'Guessan _et al._, 2010), indicating that PBO LLINs afford an enhanced level of personal protection in areas where vectors are resistant to pyrethroids. It should be noted that the current study was performed using unwashed nets only. Previous studies have found that the efficacy of PBO LLINS against resistant mosquitoes decreases substantially after the nets have been washed 20 times according to WHO protocols (Corbel _et al._, 2010; Tungu _et al._, 2010; Koudou _et al._, 2011). Thus further studies on the durability of the bio-efficacy of PBO LLINS under field conditions are urgently needed.\n", + "\n", + "header: Blood feeding rates and inhibition\n", + "\n", + "Average blood feeding rates were between 17.0% (PermaNet 3.0) and 56.4% (control net) (Table S4). With the exception of the DawaPlus, all treated nets reduced blood feeding (Fig. 4, Table S4), and the effect was most prominent with the PBO nets PermaNet 3.0 and Olyset Plus (Fig. 4, Table S4), for which the odds ratios (ORs) of blood feeding relative to control nets were 0.19 (95% CI 01.3-0.26) and 0.16 (95% CI 0.11-0.23), respectively.\n", + "\n", + "header: Mortality rates and induced mortality\n", + "\n", + "Average mortality rates ranged from 9.5% in the control arm to 46.1% in the PermaNet 3.0 arm (Table S4). Mortality was statistically higher in all treated net conditions than in the control huts. As with blood feeding inhibition, the PBO nets showed the largest effects in increasing mortality (Fig. 5, Table S4); the ORs for mortality relative to control nets were 5.56 (95% CI 3.92-7.89) and 8.14\n", + "Fig. 2: Expression levels of candidate genes previously associated with pyrethroid resistance in Tengrela and Vallée du Kou 5. The analysis was performed using the 2−\n", + "\n", + "\n", + "\n", + "\n", + "(95% CI 5.64-11.75) for the Olyset Plus and PermaNet 3.0, respectively, compared with 2.65 (95% CI 1.87-3.75) and 3.33 (95% CI 2.35-4.74) for the Olyset Net and PermaNet 2.0, respectively.\n", + "\n", + "header: Impact of PBO on LLIN efficacy in pyrethroid-resistant mosquitoes\n", + "\n", + "The performance of nets containing PBO as compared with pyrethroid-only nets from the same manufacturer is shown in Fig. 5. The PermaNet 3.0 deterred more mosquitoes than the PermaNet 2.0 (OR = 0.67, \\(P\\) < 0.01) (Fig. 5, Table S5), but there was no significant difference between the Olyset Plus and Olyset Net (_P_ = 0.412). The Olyset Net induced more exophily than the Olyset Plus (OR = 0.76, \\(P\\) < 0.05), but there was no significant difference in exophily between the PermaNet 2.0 and 3.0 (_P_ = 0.727) (Table S5). The PBO nets from both manufacturers considerably reduced blood feeding compared with non-PBO nets with ORs of 0.34 (_P_ < 0.001) and 0.55 (_P_ < 0.01) for the PermaNet 3.0 and Olyset Plus, respectively (Fig. 5, Table S4). In addition, the PBO nets killed significantly more _An. gambiae s.l._ than the non-PBO nets. The ORs for mortality were 2.45 (_P_ < 0.001) for the PermaNet 3.0 and 2.1 (_P_ < 0.001) for the Olyset Plus (Fig. 5, Table S5).\n", + "\n", + "header: Experimental hut results\n", + "\n", + "In total, 12 915 specimens from four different mosquito genera were collected inside the huts (sleeping rooms and veranda traps) over the 6-week trial (Tengrela, \\(n\\) = 5808; VK5, \\(n\\) = 7107). Most specimens collected from the huts belonged to the _An. gambiae s.l._ species complex, accounting for 75.4% (_n_ = 4379) in Tengrela and 98.8% (_n_ = 7020) in VK5. The second most frequently collected _Anopheles_ species was _An. rhinorensis_, of which 49 and 19 specimens were collected in Tengrela and VK5, respectively. Other _Anopheles_ mosquito species, including _An. funestus_ (_n_ = 3), _An. nili_ (_n_ = 2) and _An. coustani_ (_n_ = 3), were collected in Tengrela. Additional mosquito taxa were also collected, including _Mansonia_ sp. (_n_ = 1330 in Tengrela and \\(n\\) = 45 in VK5), _Culex_ sp. (_n_ = 41 in Tengrela and \\(n\\) = 23 in VK5) and _Aedes_ sp. (_n_ = 1 in Tengrela) (all: Diptera: Culicidae). Because of the low numbers of other genera, only data for _An. gambiae s.l._ were included in the analysis.\n", + "\n", + "Within the total of 11 399 _An. gambiae s.l._ caught at both field sites, there was considerable variation between weeks and treatments in the numbers of mosquitoes entering the huts in both study locations (Fig. 4). The average number of mosquitoes caught per night/per hut was between 13 (PermaNet 3.0) and 20.7 (Olyset Net) mosquitoes (Table S3) and induced deterrence was found only for the Olyset Net, albeit at a low ratio of 1.31 (95% CI 1.02-1.66; \\(P\\) < 0.05) (Fig. 4).\n", + "\n", + "header: Introduction\n", + "\n", + "Use of the longlasting insecticidal net (LLIN) is pivotal in the fight against malaria in Africa. A massive scaling up of the distribution of this commodity has occurred over the past 15 years, with 178 million LLINs delivered for use in sub-Saharan Africa (SSA) in 2015 alone [World Health Organization (WHO), 2016]. Although reliable estimates of LLIN usage are very hard to obtain, the WHO estimates that 53% of the population at risk in SSA slept under an LLIN in 2015 [WHO, 2016]. The results have been dramatic: an estimated 450 million clinical cases of malaria were averted in the last 15 years by the use of LLINs [Bhatt _et al._, 2015].\n", + "\n", + "All LLINs in current use contain pyrethroid insecticides, but there is growing recognition that increases in the prevalence and intensity of pyrethroid resistance, driven at least in part by the scale-up in the use of LLINs, could jeopardize recent gains in malaria control [WHO, 2012]. Direct evidence that pyrethroid\n", + "resistance is reducing either the personal or community-level protection provided by LLINS is challenging to obtain (Kleinschmidt _et al._, 2015; Ranson & Lissenden, 2016), but models of malaria transmission predict that even relatively low levels of resistance can substantially reduce the public health benefits of LILINS (Churcher _et al._, 2016). In countries that rely on the LLIN as the primary malaria prevention tool, the only currently available alternatives to conventional pyrethroid-only LLINS are nets in which the synerigent piperonyl butoxide (PBO) has been included in the fibres making up all, or part, of the net. Piperonyl butoxide inhibits cytochrome P450s, which comprise one of the most important enzyme families involved in pyrethroid resistance, and exposure to PBO has been shown to reduce resistance and sometimes to restore susceptibility to pyrethroids in malaria vectors (Jones _et al._, 2013; Edi _et al._, 2014).\n", + "\n", + "Four brands of LLIN containing PBO have received interim approval from the WHO as conventional LLINS. These are the PermaNet(r) 3.0 (deltamethrin+PBO) (Vestergaard Frandsen Holding SA, Lausanne, Switzerland), the Olvest(r) Plus (permethrin+PBO) (Sumitomo Chemical Asia Pte Ltd, Health and Crop Sciences Sector, Tokyo, Japan), the Veeralin(r) (alpha cypermethrin+PBO) (VKA Polymers Pte Ltd, Karur, India) and the DawaPlus(r) (deltamethrin+PBO) (Tana Netting Co. Ltd, Dubai, U.A.E.). The benefit of the addition of PBO is only expected to manifest in areas in which mosquito populations are resistant to pyrethroids and experimental hut trials of PBO LLINS in areas of resistance have supported this prediction. Increased mosquito mortality was observed in experimental huts containing PBO LLINS compared with conventional LLINS in Ivory Coast, Benin and Burkina Faso (Corbel _et al._, 2010; Ngousso _et al._, 2010; Koudou _et al._, 2011; Pennetier _et al._, 2013) and reductions in blood feeding rates were also reported in trials in the latter two countries. All of these sites reported high levels of pyrethroid resistance.\n", + "\n", + "There has been a dramatic escalation in the strength of pyrethroid resistance in southwestern Burkina Faso since earlier trials of PBO LLINS in 2007. World Health Organization cone bioassays performed in 2012 revealed that none of the conventional LLINS were effective in killing local vector populations and that the performance of the PBO LLIN PermaNet(r) 3.0 was also compromised in these assays (Toe _et al._, 2014). Although the numbers of malaria deaths in Burkina Faso have fallen over the past 10 years, numbers of malaria cases have risen year on year despite countywide LLIN distribution campaigns [National Malaria Control Programme (NMCP), personal communication; K.H.Toe, 2017]. In order to advise the NMCP on whether a switch to PBO LLINS may be warranted to target these highly resistant populations, an experimental hut trial was undertaken in two rice-growing areas in the southwestern region of Burkina Faso.\n", + "\n", + "header: Conclusions\n", + "\n", + "The results of these experimental hit studies with entomological endpoints suggest that substituting conventional LLINs with PBO LLINs in areas where there is a high prevalence of pyrethroid resistance in local vectors may be an effective strategy to maintain the efficacy of malaria vector control. The public health benefit of this would depend on a wide range of factors, including the level of malaria endemicity, LLIN coverage rates and the predominant mosquito vectors present, but a recent modelling exercise predicts that in some settings, a switch to PBO LLINs could aver up to 0.5 clinical cases per person per year (Churcher _et al._, 2016). These predictions from models are now being evaluated in large-scale field trials. A recent study in Tanzania reported a 33% protective efficacy of PBO LLINs over conventional LLINs after 2 years of use (Protopopoff _et al._, 2018). A larger trial, involving the distribution of over 10.7 million nets in Uganda, is evaluating whether PBO nets reduce malaria prevalence under programmatic conditions ([https://www.againstmalaria.com](https://www.againstmalaria.com), [https://www.pmi.gov](https://www.pmi.gov)).\n", + "\n", + "In light of the results from experimental hit studies, including the current study, and after reviewing data from the first clinical trial of a PBO LLIN, the WHO recently made a policy recommendation that national malaria control programmes should consider deployment of PBO LLINs in areas with pyrethroid-resistant vectors (WHO, 2017). If deployed at scale, PBO LLINs may play an important role in reducing the immediate threat of pyrethroid resistance to malaria control.\n", + "\n", + "header: Experimental hut trials\n", + "\n", + "Each station consisted of six experimental huts built according to the West African style (WHO, 2013). The study had six arms that used, respectively, five different LLINs and one net with no insecticide treatment as a negative control (Table 1). The nets were obtained from the manufacturers and were unpacked and kept in the shade for 24 h, but not washed prior to testing. Two of the nets, the OlysetPlus and PermaNet 3.0, contain PBO, whereas the other three LLINs contain only pyrethroids. The LLINs were holed according to WHO standard procedures (WHO, 2013). A total of six holes (4 cm x 4 cm) per net were cut, two on each of the long sides and one on each of the short sides.\n", + "\n", + "Study participants (male sleepers) spent 6 nights per week under a net in an experimental hut from 20.00 hours to 05.00 hours, followed by 1 day of break. The sleepers were rotated through the six huts so that each sleeper spent 1 night per week under each net type. To complete a full Latin square rotation with all combinations of sleeper, net type and hut, the study ran over 36 days from 8 September to 22 October 2014.\n", + "\n", + "Each morning at 05.00 hours, mosquitoes were collected manually by the sleepers, with supervision, from under the net, inside the hut and on the exit veranda. The collected specimens were morphologically identified to genus and, where possible, to species level (Gillies & Coetzee, 1987), grouped according to their gonotrophic stage (blood-fed, unfed or gravid), and scored as dead or alive. Live mosquitoes were transferred to paper cups, provided with 10% sugar water and kept in the insectary described above for 24 h, after which delayed mortality was recorded. All specimens were stored on silica gel for further molecular analysis.\n", + "\n", + "Data analysis was performed in the open-source statistical software R Version 3.3.2 (R Development Core Team, 2011) using the libraries 'lme4' (Bates _et al._, 2012) and 'glmADMB' (Skaug _et al._, 2012) for generalized linear mixed models (GLMMs). Plots were then generated with the package 'ggplot2' (Wickham, 2009).\n", + "\n", + "In the statistical analysis of hut trial data, in order to increase the number of replicates, give more power and increase confidence in the analysis, data collected from both sites (Tengrela and VK5) were pooled and the following four outcomes for _An. coluzzii_ were compared between the LLINs and the untreated control net, as well as between the PBO and non-PBO nets from the same manufacturer: (a) deterrence (i.e. the reduction in hut entry relative to the control or non-PBO net); (b) induced exophily (i.e. the ratio of the odds of a mosquito being found in the veranda trap compared with the hut); (c) blood feeding inhibition (i.e. the ratio of the odds of blood\n", + "\n", + "fed vs. unfed mosquitoes), and (d) induced mortality [i.e. the ratio of the odds of dead vs. alive mosquitoes] (The original dataset for _An. gambiae s.l._ is supplied in Table S2.) Immediate mortality and mortality at 24 h post-collection were combined for the analysis. Deterrence was analysed as the ratio in total numbers between the treatment arms (or PBO net) vs. the control arm (or non-PBO net). The numbers of mosquitoes in the room and the veranda were combined and analysed using a GLMM with a negative binomial distribution and a log link function using the R function 'glmandmdb()' in the 'glmmADMB' package. In the model, the net type was the fixed effect term and random intercepts were introduced for the sleeper and the hut, and a random slope for the day depending on the location. For proportional outcomes of induced exophily, blood feeding inhibition and induced mortality, the negative binomial model was replaced by a GLMM with a binomial distribution and logit link function using the R function 'glmer()' in the 'lme4' package. In the models, in addition to the terms listed above, a random intercept was introduced for each observation to account for unexplained overdispersion. For statistical testing, the level of significance was set at \\(a\\) = 0.05.\n", + "\n", + "In addition to the ratios described above, averages (i.e. the modes) and 95% confidence intervals (CIs) of the crude values underlying the outcomes were computed by the same models as above but using the individual nets as the intercept. These corresponding crude values were: (a) entry rate (i.e. the number of mosquitoes entering a hut); (b) exit rate (i.e. the number of mosquitoes collected from the veranda trap; (c) blood feeding rate (i.e. the proportion of blood-fed mosquitoes), and (d) mortality rate (i.e. the proportion of dead mosquitoes at 24 h post-collection).\n", + "\n", + "The study participants were recruited from the local communities and gave informed consent. Ethical approval was obtained from the Ethical Committee for Health Research of the Ministry of Health and Ministry of Research in Burkina Faso (Deliberation No. 2013-07-057, 11 July 2013). Malaria chemotherapy was not offered to study participants in line with Ministry of Health recommendations. However, medical supervision was provided throughout the study and any malaria case was treated according to national requirements.\n", + "\n", + "header: Study sites: Characterization of mosquito populations\n", + "\n", + "_Anopheles gambiae s.l._ larvae were collected in Tengrela and VK5 and reared to adults in local insectaries (mean relative humidity: 75+- 10%; mean temperature: 27+- 2*C). To assess susceptibility to pyrethroids, batches of approximately 25 non-blood-fed _An. gambiae s.l._ females aged 3-5 days were exposed to papers treated with 0.75% permethrin or 0.05% deltamethrin. The papers and susceptibility test kits were purchased from the Universiti Sains Malaysia (Penang, Malaysia). In parallel bioassays, mosquitoes were exposed to papers treated with 4% PBO [prepared by the Liverpool School of Tropical Medicine (LSTM)] for 1 h before they were transferred to tubes containing either insecticide-treated papers or insecticide-free papers and exposed for a further 1 h. Knock-down was recorded at the end of exposure and mortality was recorded 24 h later.\n", + "\n", + "The bio-efficacy of the LLINS was tested using non-blood-fed mosquitoes aged 3-5 days from local larval collections, and from the Kisumu susceptible laboratory strain, using the WHO cone bioassay procedure (WHO, 2013). For each LLIN type, two unwashed nets were tested under insectary conditions. Ten mosquitoes per cone were exposed for 3 min to 30 cm x 30 cm net pieces sampled from the top, the short and the long sides of the net. During exposure, the set-up was kept at an angle of 45 degrees as recommended (Owusu & Muller, 2016). Knock-down and mortality were recorded at 60 min and 24 h after exposure, respectively. Conventional LLINs were compared with PBO LLINS using Fisher's exact test (2x2 contingency table, significance level of 0.05) (http://wwwgraphpadcom/quickcales/contingency2) (Roberts & Andre, 1994).\n", + "\n", + "header: Pyrethroid resistance in southwest Burkina Faso: Bio-efficacy of LLINs in cone bioassays\n", + "\n", + "The low levels of mortality observed in cone bioassays in this study are similar to those reported previously in VK7, a neighbouring village to VK5, in the Vallee du Kou rice-growing region. However, whereas the current study found that exposure to the tops of the PermaNet 3.0 nets resulted in mortality levels exceeding the WHO threshold of 80%, equivalent bioassays conducted in the VK7 population in 2012 showed mortality of only 43%. Cone bioassays are not a reliable method of comparing the performance of LLINs containing different pyrethroids because of the inherent differences in extico-repellency within this class, which can affect exposure time (Siegert _et al._, 2009). In particular, cone tests may underestimate the performance of permethrin LLINs; this is indicated by comparison of the cone bioassay results in Fig. 3, in which the Olyset Net was found to induce considerably lower mortality than the PermaNet 2.0, although experimental hut results showed similar levels of mortality in huts with these two net types (Table S3).\n", + "\n", + "Fig. 3: Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (_P_ < 0.001), † (_P_ < 0.0001), n.s. (non-significant, \\(\\frac{1}{2}\\) (_P_ < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wicyclonlinelibrary.com].\n", + "\n", + "\n", + "Nevertheless, the results of these cone bioassays provide further evidence that resistance can be at least partially ameliorated by exposure to PBO.\n", + "\n", + "header: _Pyrethroid resistance in Tengrela and VK5 and associated mechanisms_: Efficacy of LLINs under laboratory conditions\n", + "\n", + "All LLINs tested showed good bio-efficacy in cone bioassays against the susceptible laboratory Kisumu strain with 60 min knock-down and 24 h mortality rates of all LLINs above the 98% and 80% WHO thresholds (WHO, 2005) (Table S1). By contrast, in tests using the field-caught mosquitoes, the mortality threshold was met only by the top panels of the PermaNet 3.0 (Fig. 3). Knock-down rates exceeded the 98% threshold for the PermaNet 3.0 in VK5 only (Table S1).\n", + "\n", + "header: Materials and methods\n", + "\n", + "The experimental hut studies were carried out at two field stations in southwest Burkina Faso: the first is located in the Vallee du Kou.5 (VK5) near Bobo-Dioulasso (11*39' N, 04*41' W) and belongs to the Institut de Recherche en Science de la Sante (IRSS)/Centre MURAZ, and the second is located at Tengrela (10*40' N, 04*50' W) near Banfora and is maintained by the Centre National de Recherche et de Formation sur le Paludisme (CNRFP). These two sites are separated by approximately 120 km. Previous surveys revealed _Anopheles coluzzii_ (formerly _Anopheles gambiae s.s._ M molecular form) to be the predominant _Anopheles_ species at both sites. High levels of resistance to both DDT and pyrethroids have been reported previously at both sites (Ngufor _et al._, 2014; Toe _et al._, 2015).\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Supporting Information\n", + "\n", + "Additional supporting information may be found online in the Supporting Information section at the end of the article.\n", + "\n", + "Fig. 5: Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hit relative to the control hit. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "header: Table 1: Treatment arms and descriptions of longlasting insecticide-treated nets.\n", + "footer: PermaNet is a registered trademark of Vestergaard Frandsen Holding SA. Olyset is a registered trademark of Sumitomo Chemical Co. Ltd. DawaPlusis a registered trademark of Tana Netting Co. Ltd.PBO, piperonyl butoxide.\n", + "columns: ['Treatment arm', 'Description', 'Manufacturer']\n", + "\n", + "{\"0\":{\"Treatment arm\":\"Untreated net\",\"Description\":\"Net manufactured manually using netting material from market\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment arm\":\"Olyset\\u00ae Net\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment arm\":\"Olyset\\u00ae Plus\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin and 4.3 x 10-4 kg\\/m2 of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment arm\":\"PermaNet\\u00ae 2.0\",\"Description\":\"5.5 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"4\":{\"Treatment arm\":\"PermaNet\\u00ae 3.0\",\"Description\":\"Combination of 2.8 g\\/kg of deltamethrin coated on polyester with strengthened border (side panels) and deltamethrin (4.0 g\\/kg) and PBO (25 g\\/kg)\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"5\":{\"Treatment arm\":\"Dawa\\u00ae Plus 2.0\",\"Description\":\"8.0 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"TANA Netting\"}}\n", + "\n", + "header: Entry rate and deterrence: Exit rates and induced exophily\n", + "\n", + "Exit rates refer here to the proportion of mosquitoes present in the veranda trap. As with entrance rates, exit rates varied throughout the study (Fig. 4). On average, the induced exophily rates were between 26.4% (control net) and 48.5% (Olyset Net) (Table S4). The odds of finding a mosquito in the veranda trap were significantly increased in the huts with treated nets, with the exception of the DawaPlus, although even for the DawaPlus a tendency to induce exophily was observed (Fig. 4, Table S4).\n", + "\n", + "header: Discussion\n", + "\n", + "Very low mortality rates were obtained for both permethrin and deltamethrin in the two study sites following an hour of exposure to WHO diagnostic doses. Southwestern Burkina Faso is known as a hotspot of pyrethroid resistance (Dabire _et al._, 2012; Namountougou _et al._, 2012). Rapid changes in the prevalence of pyrethroid resistance have been observed since the first national LLIN distribution programme in 2010: in 2009, mosquito mortality following deltamethrin exposure was 25% (Dabire _et al._, 2012), in VK has since fallen to just 2.5%. The frequency of the 1014F _kdr_ mutation also increased from 0.28 in 2006 (Dabire _et al._, 2009) to 0.88 in the current study. Similar increases in the prevalence of pyrethroid resistance have been witnessed in Tengrela. Mortality rates of 93% and 46% for deltamethrin and permethrin, respectively, were recorded in 2011 (Namountougou _et al._, 2012; K. H. Toe, unpublished data 2011), but these mortality rates had reduced to 33% and 13% in 2014, the year of the current study (Toe _et al._, 2015). In the present study, pyrethroid mortality was significantly increased by pre-exposure to PBO. This, together with the qPCR data showing elevated expression of multiple P450s in both field populations compared with a susceptible laboratory strain, indicate that oxidases are an important resistance mechanism in _An. coluzzi_ in southwestern Burkina Faso. It is noted that resistance was not fully restored by PBO pre-exposure, indicating that additional resistance mechanisms, such as target site resistance and possibly cuticular modifications (Toe _et al._, 2015), may contribute to the pyrethroid resistance phenotype in these populations.\n", + "\n", + "header: Abstract\n", + "\n", + "Do bednets including piperonyl butoxide offer additional protection against populations of _Anopheles gambiae s.l._ that are highly resistant to pyrethroids? An experimental hut evaluation in Burkina Faso\n", + "\n", + "K. H. T oe\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " P. Muller\n", + "\n", + "2H233\n", + "\n", + "33Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " A. Badlo\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " A. Traore\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " N. Sagnon\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " R. K. Dabi Irene\n", + "\n", + "4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " H. Ransons\n", + "\n", + "5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + "\n", + "Malaria control is dependent on the use of longlasting insecticidal nets (LLINs) containing pyrethroids. A new generation of LLINs containing both pyrethroids and the synergist piperonyl butoxide (PBO) has been developed in response to increasing pyrethroid resistance in African malaria vectors, but questions remain about the performance of these nets in areas where levels of pyrethroid resistance are very high. This study was conducted in two settings in southwest Burkina Faso, Vallee du Kou 5 and Tengrela, where _Anopheles gambiae s.l._ (Diptera: Culicidae) mortality rates in World Health Organization (WHO) discriminating dose assays were \\(<\\) 14% for permethrin and \\(<\\) 33% for delatamethrin. When mosquitoes were pre-exposed to PBO in WHO tube assays, mortality rates increased substantially but full susceptibility was not restored. Molecular characterization revealed high levels of _kdr_ alleles and elevated levels of P450s previously implicated in pyrethroid resistance. In cone bioassays and experimental huts, PBO LLINs outperformed the pyrethroid-only equivalents from the same manufacturers. Blood feeding rates were 1.6-2.2-fold lower and mortality rates were 1.69-1.78-fold greater in huts with PBO LLINs vs. non-PBO LLINs. This study indicates that PBO LLINs provide greater personal and community-level protection than standard LLINs against highly pyrethroid-resistant mosquito populations.\n", + "\n", + " insecticide resistance, insecticide resistance management, longlasting insecticidal nets, PBO.\n", + "\n", + "header: Performance of PBO LLINs in experimental hut studies\n", + "\n", + "The enhanced performance of PBO-containing LLINs over conventional LLINs was further supported by the experimental hut results. Both blood feeding inhibition and mortality rates were significantly higher in huts containing PBO LLINs than in those containing conventional LLINs from the same manufacturers. An improved performance of the PermaNet 3.0, which contains both higher concentrations of deltamethrin compared with the PermaNet 2.0, plus PBO on the roof of the net, has also been reported in pyrethroid-resistant populations of malaria vectors in Ivory Coast (Koudou _et al._, 2011), Benin (N'Guessan _et al._, 2010) and Burkina Faso (Corbel _et al._, 2010).\n", + "\n", + "Fig. 4: Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the \\(P\\)-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "\n", + "The magnitude of this effect differs among studies, with previous studies reporting increases in mortality rates of 1.3-1.8-fold, whereas the current study reports an OR of 2.45, which corresponds to a 1.78-fold increase. Only one experimental hit study comparing the Olyset Plus with the Olyset Net has been published to date (Pennetier _et al._, 2013). This study, conducted in Benin in 2013, reported mortality rates 1.9-fold higher in the PBO arm than in the conventional LLIN arm (Pennetier _et al._, 2013), which is in line with the findings of the current study, which found a 1.89-fold (OR 2.1) elevation in mortality rates in the Olyset Plus arm.\n", + "\n", + "In addition to increased mortality rates, the current study, plus two of the previous experimental hit studies, reported significantly higher rates of blood feeding inhibition for PBO vs. conventional LLINs (Corbel _et al._, 2010; N'Guessan _et al._, 2010), indicating that PBO LLINs afford an enhanced level of personal protection in areas where vectors are resistant to pyrethroids. It should be noted that the current study was performed using unwashed nets only. Previous studies have found that the efficacy of PBO LLINS against resistant mosquitoes decreases substantially after the nets have been washed 20 times according to WHO protocols (Corbel _et al._, 2010; Tungu _et al._, 2010; Koudou _et al._, 2011). Thus further studies on the durability of the bio-efficacy of PBO LLINS under field conditions are urgently needed.\n", + "\n", + "header: Blood feeding rates and inhibition\n", + "\n", + "Average blood feeding rates were between 17.0% (PermaNet 3.0) and 56.4% (control net) (Table S4). With the exception of the DawaPlus, all treated nets reduced blood feeding (Fig. 4, Table S4), and the effect was most prominent with the PBO nets PermaNet 3.0 and Olyset Plus (Fig. 4, Table S4), for which the odds ratios (ORs) of blood feeding relative to control nets were 0.19 (95% CI 01.3-0.26) and 0.16 (95% CI 0.11-0.23), respectively.\n", + "\n", + "header: Results\n", + "\n", + "In VK5, very low levels of mortality were observed after exposure to the discriminating dose of deltamethrin and permethrin, but pre-exposure to PBO significantly increased mortality rates from 2.5% (_n_ = 163) to 45% (_n_ = 158) and from 5% (_n_ = 153) to 26% (_n_ = 156) for deltamethrin and permethrin, respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig. 1). In Tengrela, mortality rates of 34% (_n_ = 85) and 14% (_n_ = 101) were recorded for deltamethrin and permethrin, respectively. When PBO was used, mortality rates increased significantly to 63% (_n_ = 84) and 42% (_n_ = 104), respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig.1). Although there was evidence of synergism, pre-exposure to PBO did not fully restore susceptibility in either site to either pyrethroid.\n", + "\n", + "_Anopheles coluzzi_ was the only species of the _An. gambiae_ complex identified by PCR of a subset of 80 specimens from Tengrela and VK5. High frequencies of the 1014F allele of the VGSC were recorded in Tengrela (0.819, 95% CI 0.750-0.875) and VK5 (0.885, 95% CI 0.824-0.930) with the 1575Y allele present at lower frequencies of 0.169 (95% CI 0.114-0.236) and 0.221 (95% CI 0.158-0.295), respectively. Samples were not genotyped for the 1014S allele as previous extensive surveys have not detected this allele in _An. coluzzi_ from these sites (Toe _et al._, 2015). There was no statistically significant difference in the frequency of either the 1014F or 1575Y allele between the two sites (Table 2).\n", + "\n", + "Several cytochrome P450 genes previously associated with pyrethroid resistance showed elevated expression levels in the Tengrela and the VK5 _An. coluzzi_ populations compared with the susceptible laboratory Ngousso strain (Fig. 2). _CYP6P3_, _CYP6M2_, _CYP6Z3_, _CYP6P4_ and _CYP6Z2_ were found to be\n", + "\n", + "Fig. 1: Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: \\(P\\) < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "\n", + "overexpressed in both field strains compared with the susceptible laboratory colony (fold change: > 2) with the most highly overexpressed genes in both populations being _CYP6Z2_ and _CYP6Z3_ (Fig. 2).\n", + "\n", + "header: Mortality rates and induced mortality\n", + "\n", + "Average mortality rates ranged from 9.5% in the control arm to 46.1% in the PermaNet 3.0 arm (Table S4). Mortality was statistically higher in all treated net conditions than in the control huts. As with blood feeding inhibition, the PBO nets showed the largest effects in increasing mortality (Fig. 5, Table S4); the ORs for mortality relative to control nets were 5.56 (95% CI 3.92-7.89) and 8.14\n", + "Fig. 2: Expression levels of candidate genes previously associated with pyrethroid resistance in Tengrela and Vallée du Kou 5. The analysis was performed using the 2−\n", + "\n", + "\n", + "\n", + "\n", + "(95% CI 5.64-11.75) for the Olyset Plus and PermaNet 3.0, respectively, compared with 2.65 (95% CI 1.87-3.75) and 3.33 (95% CI 2.35-4.74) for the Olyset Net and PermaNet 2.0, respectively.\n", + "\n", + "header: Molecular analysis\n", + "\n", + "DNA was extracted from mosquito legs by heating at 90*C for 30 min. Species were identified using the SINE200 protocol (Santolamazza _et al._, 2008) and then screened for the voltage gated sodium channel (VGSC) 1014F and 1575Y alleles using Taqman assays (Bass _et al._, 2007; Jones _et al._, 2012).\n", + "\n", + "Total RNA was extracted from six pools of 10 5-day-old non-blood-fed female _An. coluzzii_ from larval collections from Tengrela and VK5 using the RNAqueous(r)4PCR Kit for isolation of DNA-free RNA (Ambion, Inc., Austin, TX, U.S.A.) according to the manufacturer's procedures. The RNA was eluted in 50 mL of elution solution and treated with DNase. The quality and quantity of all the RNA used were assessed \n", + "using a NanoDrop ND1000 (Thermo Fisher Scientific UK Ltd, Renfrew, U.K.).\n", + "\n", + "The expression profiles of five P450 genes (_CYP6M2_, _CYP6Z2_, _CYP6Z3_, _CYP6P3_, _CYP6P4_), previously found to be over-expressed in pyrethroid-resistant field populations from Burkina Faso (Toe _et al._, 2015) and/or known to metabolize pyrethroids (Muller _et al._, 2008; Mitchell _et al._, 2012) were quantified using reverse-transcription quantitative polymerase chain reaction (RT-qPCR). The qPCR analysis was conducted at the LSTM and used the following mosquito populations: Ngousso, an insecticide-susceptible strain originating from Ngousso in Cameroon in 2006 and maintained in the insectary at LSTM; Tengrela specimens reared from larval collections in October-November 2014, and VK5 specimens reared from larval collections in October-November 2014. Approximately 600 ng of RNA was reverse-transcribed to first-strand cDNA using SuperScript(tm) III reverse transcriptase (Invitrogen, Inc., Carlsbad, CA, U.S.A.) according to the manufacturer's procedures. Samples were then purified using the Qiagen Easy Purification Kit (Qiagen Benelux BV, Venlo, the Netherlands) before proceeding to qPCR. Each of the six pool replicates were run in triplicate using 2X SYBR Brilliant III (Agilent Technologies, Inc., Palo Alto, CA, U.S.A.), forward and reverse primers (300 nM) [sequence available in Toe _et al._ (2015)] on the Mx3005p qPCR system (Agilent Technologies, Inc., Palo Alto, California) with the following cycling protocol: 95 degC for 3 min, followed by 40 cycles of 95 degC for 10 s and 60 degC for 10 s. The qPCR data were analysed using the delta Ct values method, taking into account the PCR efficiency (Pfaffi, 2001). The candidate Ct values were normalized against three housekeeping genes, encoding ribosomal protein L40 (ubiquitin) (_AGAP007927_), an elongation factor (_AGAP005128_) and the S7 ribosomal protein (_AGAP010592_). The normalized Ct values of each gene were then compared with the normalized Ct values of the susceptible Ngousso strain.\n", + "\n", + "header: Conclusions\n", + "\n", + "The results of these experimental hit studies with entomological endpoints suggest that substituting conventional LLINs with PBO LLINs in areas where there is a high prevalence of pyrethroid resistance in local vectors may be an effective strategy to maintain the efficacy of malaria vector control. The public health benefit of this would depend on a wide range of factors, including the level of malaria endemicity, LLIN coverage rates and the predominant mosquito vectors present, but a recent modelling exercise predicts that in some settings, a switch to PBO LLINs could aver up to 0.5 clinical cases per person per year (Churcher _et al._, 2016). These predictions from models are now being evaluated in large-scale field trials. A recent study in Tanzania reported a 33% protective efficacy of PBO LLINs over conventional LLINs after 2 years of use (Protopopoff _et al._, 2018). A larger trial, involving the distribution of over 10.7 million nets in Uganda, is evaluating whether PBO nets reduce malaria prevalence under programmatic conditions ([https://www.againstmalaria.com](https://www.againstmalaria.com), [https://www.pmi.gov](https://www.pmi.gov)).\n", + "\n", + "In light of the results from experimental hit studies, including the current study, and after reviewing data from the first clinical trial of a PBO LLIN, the WHO recently made a policy recommendation that national malaria control programmes should consider deployment of PBO LLINs in areas with pyrethroid-resistant vectors (WHO, 2017). If deployed at scale, PBO LLINs may play an important role in reducing the immediate threat of pyrethroid resistance to malaria control.\n", + "\n", + "header: Impact of PBO on LLIN efficacy in pyrethroid-resistant mosquitoes\n", + "\n", + "The performance of nets containing PBO as compared with pyrethroid-only nets from the same manufacturer is shown in Fig. 5. The PermaNet 3.0 deterred more mosquitoes than the PermaNet 2.0 (OR = 0.67, \\(P\\) < 0.01) (Fig. 5, Table S5), but there was no significant difference between the Olyset Plus and Olyset Net (_P_ = 0.412). The Olyset Net induced more exophily than the Olyset Plus (OR = 0.76, \\(P\\) < 0.05), but there was no significant difference in exophily between the PermaNet 2.0 and 3.0 (_P_ = 0.727) (Table S5). The PBO nets from both manufacturers considerably reduced blood feeding compared with non-PBO nets with ORs of 0.34 (_P_ < 0.001) and 0.55 (_P_ < 0.01) for the PermaNet 3.0 and Olyset Plus, respectively (Fig. 5, Table S4). In addition, the PBO nets killed significantly more _An. gambiae s.l._ than the non-PBO nets. The ORs for mortality were 2.45 (_P_ < 0.001) for the PermaNet 3.0 and 2.1 (_P_ < 0.001) for the Olyset Plus (Fig. 5, Table S5).\n", + "\n", + "header: Introduction\n", + "\n", + "Use of the longlasting insecticidal net (LLIN) is pivotal in the fight against malaria in Africa. A massive scaling up of the distribution of this commodity has occurred over the past 15 years, with 178 million LLINs delivered for use in sub-Saharan Africa (SSA) in 2015 alone [World Health Organization (WHO), 2016]. Although reliable estimates of LLIN usage are very hard to obtain, the WHO estimates that 53% of the population at risk in SSA slept under an LLIN in 2015 [WHO, 2016]. The results have been dramatic: an estimated 450 million clinical cases of malaria were averted in the last 15 years by the use of LLINs [Bhatt _et al._, 2015].\n", + "\n", + "All LLINs in current use contain pyrethroid insecticides, but there is growing recognition that increases in the prevalence and intensity of pyrethroid resistance, driven at least in part by the scale-up in the use of LLINs, could jeopardize recent gains in malaria control [WHO, 2012]. Direct evidence that pyrethroid\n", + "resistance is reducing either the personal or community-level protection provided by LLINS is challenging to obtain (Kleinschmidt _et al._, 2015; Ranson & Lissenden, 2016), but models of malaria transmission predict that even relatively low levels of resistance can substantially reduce the public health benefits of LILINS (Churcher _et al._, 2016). In countries that rely on the LLIN as the primary malaria prevention tool, the only currently available alternatives to conventional pyrethroid-only LLINS are nets in which the synerigent piperonyl butoxide (PBO) has been included in the fibres making up all, or part, of the net. Piperonyl butoxide inhibits cytochrome P450s, which comprise one of the most important enzyme families involved in pyrethroid resistance, and exposure to PBO has been shown to reduce resistance and sometimes to restore susceptibility to pyrethroids in malaria vectors (Jones _et al._, 2013; Edi _et al._, 2014).\n", + "\n", + "Four brands of LLIN containing PBO have received interim approval from the WHO as conventional LLINS. These are the PermaNet(r) 3.0 (deltamethrin+PBO) (Vestergaard Frandsen Holding SA, Lausanne, Switzerland), the Olvest(r) Plus (permethrin+PBO) (Sumitomo Chemical Asia Pte Ltd, Health and Crop Sciences Sector, Tokyo, Japan), the Veeralin(r) (alpha cypermethrin+PBO) (VKA Polymers Pte Ltd, Karur, India) and the DawaPlus(r) (deltamethrin+PBO) (Tana Netting Co. Ltd, Dubai, U.A.E.). The benefit of the addition of PBO is only expected to manifest in areas in which mosquito populations are resistant to pyrethroids and experimental hut trials of PBO LLINS in areas of resistance have supported this prediction. Increased mosquito mortality was observed in experimental huts containing PBO LLINS compared with conventional LLINS in Ivory Coast, Benin and Burkina Faso (Corbel _et al._, 2010; Ngousso _et al._, 2010; Koudou _et al._, 2011; Pennetier _et al._, 2013) and reductions in blood feeding rates were also reported in trials in the latter two countries. All of these sites reported high levels of pyrethroid resistance.\n", + "\n", + "There has been a dramatic escalation in the strength of pyrethroid resistance in southwestern Burkina Faso since earlier trials of PBO LLINS in 2007. World Health Organization cone bioassays performed in 2012 revealed that none of the conventional LLINS were effective in killing local vector populations and that the performance of the PBO LLIN PermaNet(r) 3.0 was also compromised in these assays (Toe _et al._, 2014). Although the numbers of malaria deaths in Burkina Faso have fallen over the past 10 years, numbers of malaria cases have risen year on year despite countywide LLIN distribution campaigns [National Malaria Control Programme (NMCP), personal communication; K.H.Toe, 2017]. In order to advise the NMCP on whether a switch to PBO LLINS may be warranted to target these highly resistant populations, an experimental hut trial was undertaken in two rice-growing areas in the southwestern region of Burkina Faso.\n", + "\n", + "header: Pyrethroid resistance in southwest Burkina Faso: Bio-efficacy of LLINs in cone bioassays\n", + "\n", + "The low levels of mortality observed in cone bioassays in this study are similar to those reported previously in VK7, a neighbouring village to VK5, in the Vallee du Kou rice-growing region. However, whereas the current study found that exposure to the tops of the PermaNet 3.0 nets resulted in mortality levels exceeding the WHO threshold of 80%, equivalent bioassays conducted in the VK7 population in 2012 showed mortality of only 43%. Cone bioassays are not a reliable method of comparing the performance of LLINs containing different pyrethroids because of the inherent differences in extico-repellency within this class, which can affect exposure time (Siegert _et al._, 2009). In particular, cone tests may underestimate the performance of permethrin LLINs; this is indicated by comparison of the cone bioassay results in Fig. 3, in which the Olyset Net was found to induce considerably lower mortality than the PermaNet 2.0, although experimental hut results showed similar levels of mortality in huts with these two net types (Table S3).\n", + "\n", + "Fig. 3: Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (_P_ < 0.001), † (_P_ < 0.0001), n.s. (non-significant, \\(\\frac{1}{2}\\) (_P_ < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wicyclonlinelibrary.com].\n", + "\n", + "\n", + "Nevertheless, the results of these cone bioassays provide further evidence that resistance can be at least partially ameliorated by exposure to PBO.\n", + "\n", + "header: Experimental hut trials\n", + "\n", + "Each station consisted of six experimental huts built according to the West African style (WHO, 2013). The study had six arms that used, respectively, five different LLINs and one net with no insecticide treatment as a negative control (Table 1). The nets were obtained from the manufacturers and were unpacked and kept in the shade for 24 h, but not washed prior to testing. Two of the nets, the OlysetPlus and PermaNet 3.0, contain PBO, whereas the other three LLINs contain only pyrethroids. The LLINs were holed according to WHO standard procedures (WHO, 2013). A total of six holes (4 cm x 4 cm) per net were cut, two on each of the long sides and one on each of the short sides.\n", + "\n", + "Study participants (male sleepers) spent 6 nights per week under a net in an experimental hut from 20.00 hours to 05.00 hours, followed by 1 day of break. The sleepers were rotated through the six huts so that each sleeper spent 1 night per week under each net type. To complete a full Latin square rotation with all combinations of sleeper, net type and hut, the study ran over 36 days from 8 September to 22 October 2014.\n", + "\n", + "Each morning at 05.00 hours, mosquitoes were collected manually by the sleepers, with supervision, from under the net, inside the hut and on the exit veranda. The collected specimens were morphologically identified to genus and, where possible, to species level (Gillies & Coetzee, 1987), grouped according to their gonotrophic stage (blood-fed, unfed or gravid), and scored as dead or alive. Live mosquitoes were transferred to paper cups, provided with 10% sugar water and kept in the insectary described above for 24 h, after which delayed mortality was recorded. All specimens were stored on silica gel for further molecular analysis.\n", + "\n", + "Data analysis was performed in the open-source statistical software R Version 3.3.2 (R Development Core Team, 2011) using the libraries 'lme4' (Bates _et al._, 2012) and 'glmADMB' (Skaug _et al._, 2012) for generalized linear mixed models (GLMMs). Plots were then generated with the package 'ggplot2' (Wickham, 2009).\n", + "\n", + "In the statistical analysis of hut trial data, in order to increase the number of replicates, give more power and increase confidence in the analysis, data collected from both sites (Tengrela and VK5) were pooled and the following four outcomes for _An. coluzzii_ were compared between the LLINs and the untreated control net, as well as between the PBO and non-PBO nets from the same manufacturer: (a) deterrence (i.e. the reduction in hut entry relative to the control or non-PBO net); (b) induced exophily (i.e. the ratio of the odds of a mosquito being found in the veranda trap compared with the hut); (c) blood feeding inhibition (i.e. the ratio of the odds of blood\n", + "\n", + "fed vs. unfed mosquitoes), and (d) induced mortality [i.e. the ratio of the odds of dead vs. alive mosquitoes] (The original dataset for _An. gambiae s.l._ is supplied in Table S2.) Immediate mortality and mortality at 24 h post-collection were combined for the analysis. Deterrence was analysed as the ratio in total numbers between the treatment arms (or PBO net) vs. the control arm (or non-PBO net). The numbers of mosquitoes in the room and the veranda were combined and analysed using a GLMM with a negative binomial distribution and a log link function using the R function 'glmandmdb()' in the 'glmmADMB' package. In the model, the net type was the fixed effect term and random intercepts were introduced for the sleeper and the hut, and a random slope for the day depending on the location. For proportional outcomes of induced exophily, blood feeding inhibition and induced mortality, the negative binomial model was replaced by a GLMM with a binomial distribution and logit link function using the R function 'glmer()' in the 'lme4' package. In the models, in addition to the terms listed above, a random intercept was introduced for each observation to account for unexplained overdispersion. For statistical testing, the level of significance was set at \\(a\\) = 0.05.\n", + "\n", + "In addition to the ratios described above, averages (i.e. the modes) and 95% confidence intervals (CIs) of the crude values underlying the outcomes were computed by the same models as above but using the individual nets as the intercept. These corresponding crude values were: (a) entry rate (i.e. the number of mosquitoes entering a hut); (b) exit rate (i.e. the number of mosquitoes collected from the veranda trap; (c) blood feeding rate (i.e. the proportion of blood-fed mosquitoes), and (d) mortality rate (i.e. the proportion of dead mosquitoes at 24 h post-collection).\n", + "\n", + "The study participants were recruited from the local communities and gave informed consent. Ethical approval was obtained from the Ethical Committee for Health Research of the Ministry of Health and Ministry of Research in Burkina Faso (Deliberation No. 2013-07-057, 11 July 2013). Malaria chemotherapy was not offered to study participants in line with Ministry of Health recommendations. However, medical supervision was provided throughout the study and any malaria case was treated according to national requirements.\n", + "\n", + "header: _Pyrethroid resistance in Tengrela and VK5 and associated mechanisms_: Efficacy of LLINs under laboratory conditions\n", + "\n", + "All LLINs tested showed good bio-efficacy in cone bioassays against the susceptible laboratory Kisumu strain with 60 min knock-down and 24 h mortality rates of all LLINs above the 98% and 80% WHO thresholds (WHO, 2005) (Table S1). By contrast, in tests using the field-caught mosquitoes, the mortality threshold was met only by the top panels of the PermaNet 3.0 (Fig. 3). Knock-down rates exceeded the 98% threshold for the PermaNet 3.0 in VK5 only (Table S1).\n", + "\n", + "header: Experimental hut results\n", + "\n", + "In total, 12 915 specimens from four different mosquito genera were collected inside the huts (sleeping rooms and veranda traps) over the 6-week trial (Tengrela, \\(n\\) = 5808; VK5, \\(n\\) = 7107). Most specimens collected from the huts belonged to the _An. gambiae s.l._ species complex, accounting for 75.4% (_n_ = 4379) in Tengrela and 98.8% (_n_ = 7020) in VK5. The second most frequently collected _Anopheles_ species was _An. rhinorensis_, of which 49 and 19 specimens were collected in Tengrela and VK5, respectively. Other _Anopheles_ mosquito species, including _An. funestus_ (_n_ = 3), _An. nili_ (_n_ = 2) and _An. coustani_ (_n_ = 3), were collected in Tengrela. Additional mosquito taxa were also collected, including _Mansonia_ sp. (_n_ = 1330 in Tengrela and \\(n\\) = 45 in VK5), _Culex_ sp. (_n_ = 41 in Tengrela and \\(n\\) = 23 in VK5) and _Aedes_ sp. (_n_ = 1 in Tengrela) (all: Diptera: Culicidae). Because of the low numbers of other genera, only data for _An. gambiae s.l._ were included in the analysis.\n", + "\n", + "Within the total of 11 399 _An. gambiae s.l._ caught at both field sites, there was considerable variation between weeks and treatments in the numbers of mosquitoes entering the huts in both study locations (Fig. 4). The average number of mosquitoes caught per night/per hut was between 13 (PermaNet 3.0) and 20.7 (Olyset Net) mosquitoes (Table S3) and induced deterrence was found only for the Olyset Net, albeit at a low ratio of 1.31 (95% CI 1.02-1.66; \\(P\\) < 0.05) (Fig. 4).\n", + "\n", + "header: Table 2: Frequencies of 1014F and 1575Y kdr alleles in Anopheles coluzzili, in Tengrela and Vallée du Kou 5 (VK5).\n", + "footer: Chi-squared test (http://vassarstats.net/) for the comparison of the frequency of the 1014F and 1575Y mutations in Anopheles coluzzili populations from Tengrela and VK5 (October 2014). No statistical difference was observed in the frequencies of the kdr alleles in the two sites.\n", + "columns: ['1014F mutation - Unnamed: 0_level_1', '1014F mutation - Total n', '1014F mutation - LL', '1014F mutation - LF', '1014F mutation - FF', '1014F mutation - f (1014F)', '1014F mutation - P-value']\n", + "\n", + "{\"0\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"2\",\"1014F mutation - LF\":\"25\",\"1014F mutation - FF\":\"53\",\"1014F mutation - f (1014F)\":\"0.819\",\"1014F mutation - P-value\":\"0.26\"},\"1\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"78\",\"1014F mutation - LL\":\"0\",\"1014F mutation - LF\":\"18\",\"1014F mutation - FF\":\"60\",\"1014F mutation - f (1014F)\":\"0.885\",\"1014F mutation - P-value\":null},\"2\":{\"1014F mutation - Unnamed: 0_level_1\":\"1575Y mutation\",\"1014F mutation - Total n\":\"1575Y mutation\",\"1014F mutation - LL\":\"1575Y mutation\",\"1014F mutation - LF\":\"1575Y mutation\",\"1014F mutation - FF\":\"1575Y mutation\",\"1014F mutation - f (1014F)\":\"1575Y mutation\",\"1014F mutation - P-value\":\"1575Y mutation\"},\"3\":{\"1014F mutation - Unnamed: 0_level_1\":null,\"1014F mutation - Total n\":\"Total n\",\"1014F mutation - LL\":\"NN\",\"1014F mutation - LF\":\"NY\",\"1014F mutation - FF\":\"YY\",\"1014F mutation - f (1014F)\":\"f (A575Y)\",\"1014F mutation - P-value\":\"P-value\"},\"4\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"57\",\"1014F mutation - LF\":\"19\",\"1014F mutation - FF\":\"4\",\"1014F mutation - f (1014F)\":\"0.169\",\"1014F mutation - P-value\":\"0.39\"},\"5\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"77\",\"1014F mutation - LL\":\"49\",\"1014F mutation - LF\":\"22\",\"1014F mutation - FF\":\"6\",\"1014F mutation - f (1014F)\":\"0.221\",\"1014F mutation - P-value\":null}}\n", + "\n", + "header: Study sites: Characterization of mosquito populations\n", + "\n", + "_Anopheles gambiae s.l._ larvae were collected in Tengrela and VK5 and reared to adults in local insectaries (mean relative humidity: 75+- 10%; mean temperature: 27+- 2*C). To assess susceptibility to pyrethroids, batches of approximately 25 non-blood-fed _An. gambiae s.l._ females aged 3-5 days were exposed to papers treated with 0.75% permethrin or 0.05% deltamethrin. The papers and susceptibility test kits were purchased from the Universiti Sains Malaysia (Penang, Malaysia). In parallel bioassays, mosquitoes were exposed to papers treated with 4% PBO [prepared by the Liverpool School of Tropical Medicine (LSTM)] for 1 h before they were transferred to tubes containing either insecticide-treated papers or insecticide-free papers and exposed for a further 1 h. Knock-down was recorded at the end of exposure and mortality was recorded 24 h later.\n", + "\n", + "The bio-efficacy of the LLINS was tested using non-blood-fed mosquitoes aged 3-5 days from local larval collections, and from the Kisumu susceptible laboratory strain, using the WHO cone bioassay procedure (WHO, 2013). For each LLIN type, two unwashed nets were tested under insectary conditions. Ten mosquitoes per cone were exposed for 3 min to 30 cm x 30 cm net pieces sampled from the top, the short and the long sides of the net. During exposure, the set-up was kept at an angle of 45 degrees as recommended (Owusu & Muller, 2016). Knock-down and mortality were recorded at 60 min and 24 h after exposure, respectively. Conventional LLINs were compared with PBO LLINS using Fisher's exact test (2x2 contingency table, significance level of 0.05) (http://wwwgraphpadcom/quickcales/contingency2) (Roberts & Andre, 1994).\n", + "\n", + "header: Materials and methods\n", + "\n", + "The experimental hut studies were carried out at two field stations in southwest Burkina Faso: the first is located in the Vallee du Kou.5 (VK5) near Bobo-Dioulasso (11*39' N, 04*41' W) and belongs to the Institut de Recherche en Science de la Sante (IRSS)/Centre MURAZ, and the second is located at Tengrela (10*40' N, 04*50' W) near Banfora and is maintained by the Centre National de Recherche et de Formation sur le Paludisme (CNRFP). These two sites are separated by approximately 120 km. Previous surveys revealed _Anopheles coluzzii_ (formerly _Anopheles gambiae s.s._ M molecular form) to be the predominant _Anopheles_ species at both sites. High levels of resistance to both DDT and pyrethroids have been reported previously at both sites (Ngufor _et al._, 2014; Toe _et al._, 2015).\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Supporting Information\n", + "\n", + "Additional supporting information may be found online in the Supporting Information section at the end of the article.\n", + "\n", + "Fig. 5: Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hit relative to the control hit. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "header: Entry rate and deterrence: Exit rates and induced exophily\n", + "\n", + "Exit rates refer here to the proportion of mosquitoes present in the veranda trap. As with entrance rates, exit rates varied throughout the study (Fig. 4). On average, the induced exophily rates were between 26.4% (control net) and 48.5% (Olyset Net) (Table S4). The odds of finding a mosquito in the veranda trap were significantly increased in the huts with treated nets, with the exception of the DawaPlus, although even for the DawaPlus a tendency to induce exophily was observed (Fig. 4, Table S4).\n", + "\n", + "header: Table 1: Treatment arms and descriptions of longlasting insecticide-treated nets.\n", + "footer: PermaNet is a registered trademark of Vestergaard Frandsen Holding SA. Olyset is a registered trademark of Sumitomo Chemical Co. Ltd. DawaPlusis a registered trademark of Tana Netting Co. Ltd.PBO, piperonyl butoxide.\n", + "columns: ['Treatment arm', 'Description', 'Manufacturer']\n", + "\n", + "{\"0\":{\"Treatment arm\":\"Untreated net\",\"Description\":\"Net manufactured manually using netting material from market\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment arm\":\"Olyset\\u00ae Net\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment arm\":\"Olyset\\u00ae Plus\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin and 4.3 x 10-4 kg\\/m2 of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment arm\":\"PermaNet\\u00ae 2.0\",\"Description\":\"5.5 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"4\":{\"Treatment arm\":\"PermaNet\\u00ae 3.0\",\"Description\":\"Combination of 2.8 g\\/kg of deltamethrin coated on polyester with strengthened border (side panels) and deltamethrin (4.0 g\\/kg) and PBO (25 g\\/kg)\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"5\":{\"Treatment arm\":\"Dawa\\u00ae Plus 2.0\",\"Description\":\"8.0 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"TANA Netting\"}}\n", + "\n", + "header: Discussion\n", + "\n", + "Very low mortality rates were obtained for both permethrin and deltamethrin in the two study sites following an hour of exposure to WHO diagnostic doses. Southwestern Burkina Faso is known as a hotspot of pyrethroid resistance (Dabire _et al._, 2012; Namountougou _et al._, 2012). Rapid changes in the prevalence of pyrethroid resistance have been observed since the first national LLIN distribution programme in 2010: in 2009, mosquito mortality following deltamethrin exposure was 25% (Dabire _et al._, 2012), in VK has since fallen to just 2.5%. The frequency of the 1014F _kdr_ mutation also increased from 0.28 in 2006 (Dabire _et al._, 2009) to 0.88 in the current study. Similar increases in the prevalence of pyrethroid resistance have been witnessed in Tengrela. Mortality rates of 93% and 46% for deltamethrin and permethrin, respectively, were recorded in 2011 (Namountougou _et al._, 2012; K. H. Toe, unpublished data 2011), but these mortality rates had reduced to 33% and 13% in 2014, the year of the current study (Toe _et al._, 2015). In the present study, pyrethroid mortality was significantly increased by pre-exposure to PBO. This, together with the qPCR data showing elevated expression of multiple P450s in both field populations compared with a susceptible laboratory strain, indicate that oxidases are an important resistance mechanism in _An. coluzzi_ in southwestern Burkina Faso. It is noted that resistance was not fully restored by PBO pre-exposure, indicating that additional resistance mechanisms, such as target site resistance and possibly cuticular modifications (Toe _et al._, 2015), may contribute to the pyrethroid resistance phenotype in these populations.\n", + "\n", + "header: Molecular analysis\n", + "\n", + "DNA was extracted from mosquito legs by heating at 90*C for 30 min. Species were identified using the SINE200 protocol (Santolamazza _et al._, 2008) and then screened for the voltage gated sodium channel (VGSC) 1014F and 1575Y alleles using Taqman assays (Bass _et al._, 2007; Jones _et al._, 2012).\n", + "\n", + "Total RNA was extracted from six pools of 10 5-day-old non-blood-fed female _An. coluzzii_ from larval collections from Tengrela and VK5 using the RNAqueous(r)4PCR Kit for isolation of DNA-free RNA (Ambion, Inc., Austin, TX, U.S.A.) according to the manufacturer's procedures. The RNA was eluted in 50 mL of elution solution and treated with DNase. The quality and quantity of all the RNA used were assessed \n", + "using a NanoDrop ND1000 (Thermo Fisher Scientific UK Ltd, Renfrew, U.K.).\n", + "\n", + "The expression profiles of five P450 genes (_CYP6M2_, _CYP6Z2_, _CYP6Z3_, _CYP6P3_, _CYP6P4_), previously found to be over-expressed in pyrethroid-resistant field populations from Burkina Faso (Toe _et al._, 2015) and/or known to metabolize pyrethroids (Muller _et al._, 2008; Mitchell _et al._, 2012) were quantified using reverse-transcription quantitative polymerase chain reaction (RT-qPCR). The qPCR analysis was conducted at the LSTM and used the following mosquito populations: Ngousso, an insecticide-susceptible strain originating from Ngousso in Cameroon in 2006 and maintained in the insectary at LSTM; Tengrela specimens reared from larval collections in October-November 2014, and VK5 specimens reared from larval collections in October-November 2014. Approximately 600 ng of RNA was reverse-transcribed to first-strand cDNA using SuperScript(tm) III reverse transcriptase (Invitrogen, Inc., Carlsbad, CA, U.S.A.) according to the manufacturer's procedures. Samples were then purified using the Qiagen Easy Purification Kit (Qiagen Benelux BV, Venlo, the Netherlands) before proceeding to qPCR. Each of the six pool replicates were run in triplicate using 2X SYBR Brilliant III (Agilent Technologies, Inc., Palo Alto, CA, U.S.A.), forward and reverse primers (300 nM) [sequence available in Toe _et al._ (2015)] on the Mx3005p qPCR system (Agilent Technologies, Inc., Palo Alto, California) with the following cycling protocol: 95 degC for 3 min, followed by 40 cycles of 95 degC for 10 s and 60 degC for 10 s. The qPCR data were analysed using the delta Ct values method, taking into account the PCR efficiency (Pfaffi, 2001). The candidate Ct values were normalized against three housekeeping genes, encoding ribosomal protein L40 (ubiquitin) (_AGAP007927_), an elongation factor (_AGAP005128_) and the S7 ribosomal protein (_AGAP010592_). The normalized Ct values of each gene were then compared with the normalized Ct values of the susceptible Ngousso strain.\n", + "\n", + "header: Results\n", + "\n", + "In VK5, very low levels of mortality were observed after exposure to the discriminating dose of deltamethrin and permethrin, but pre-exposure to PBO significantly increased mortality rates from 2.5% (_n_ = 163) to 45% (_n_ = 158) and from 5% (_n_ = 153) to 26% (_n_ = 156) for deltamethrin and permethrin, respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig. 1). In Tengrela, mortality rates of 34% (_n_ = 85) and 14% (_n_ = 101) were recorded for deltamethrin and permethrin, respectively. When PBO was used, mortality rates increased significantly to 63% (_n_ = 84) and 42% (_n_ = 104), respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig.1). Although there was evidence of synergism, pre-exposure to PBO did not fully restore susceptibility in either site to either pyrethroid.\n", + "\n", + "_Anopheles coluzzi_ was the only species of the _An. gambiae_ complex identified by PCR of a subset of 80 specimens from Tengrela and VK5. High frequencies of the 1014F allele of the VGSC were recorded in Tengrela (0.819, 95% CI 0.750-0.875) and VK5 (0.885, 95% CI 0.824-0.930) with the 1575Y allele present at lower frequencies of 0.169 (95% CI 0.114-0.236) and 0.221 (95% CI 0.158-0.295), respectively. Samples were not genotyped for the 1014S allele as previous extensive surveys have not detected this allele in _An. coluzzi_ from these sites (Toe _et al._, 2015). There was no statistically significant difference in the frequency of either the 1014F or 1575Y allele between the two sites (Table 2).\n", + "\n", + "Several cytochrome P450 genes previously associated with pyrethroid resistance showed elevated expression levels in the Tengrela and the VK5 _An. coluzzi_ populations compared with the susceptible laboratory Ngousso strain (Fig. 2). _CYP6P3_, _CYP6M2_, _CYP6Z3_, _CYP6P4_ and _CYP6Z2_ were found to be\n", + "\n", + "Fig. 1: Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: \\(P\\) < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "\n", + "overexpressed in both field strains compared with the susceptible laboratory colony (fold change: > 2) with the most highly overexpressed genes in both populations being _CYP6Z2_ and _CYP6Z3_ (Fig. 2).\n", + "\n", + "header: Blood feeding rates and inhibition\n", + "\n", + "Average blood feeding rates were between 17.0% (PermaNet 3.0) and 56.4% (control net) (Table S4). With the exception of the DawaPlus, all treated nets reduced blood feeding (Fig. 4, Table S4), and the effect was most prominent with the PBO nets PermaNet 3.0 and Olyset Plus (Fig. 4, Table S4), for which the odds ratios (ORs) of blood feeding relative to control nets were 0.19 (95% CI 01.3-0.26) and 0.16 (95% CI 0.11-0.23), respectively.\n", + "\n", + "header: Performance of PBO LLINs in experimental hut studies\n", + "\n", + "The enhanced performance of PBO-containing LLINs over conventional LLINs was further supported by the experimental hut results. Both blood feeding inhibition and mortality rates were significantly higher in huts containing PBO LLINs than in those containing conventional LLINs from the same manufacturers. An improved performance of the PermaNet 3.0, which contains both higher concentrations of deltamethrin compared with the PermaNet 2.0, plus PBO on the roof of the net, has also been reported in pyrethroid-resistant populations of malaria vectors in Ivory Coast (Koudou _et al._, 2011), Benin (N'Guessan _et al._, 2010) and Burkina Faso (Corbel _et al._, 2010).\n", + "\n", + "Fig. 4: Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the \\(P\\)-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "\n", + "The magnitude of this effect differs among studies, with previous studies reporting increases in mortality rates of 1.3-1.8-fold, whereas the current study reports an OR of 2.45, which corresponds to a 1.78-fold increase. Only one experimental hit study comparing the Olyset Plus with the Olyset Net has been published to date (Pennetier _et al._, 2013). This study, conducted in Benin in 2013, reported mortality rates 1.9-fold higher in the PBO arm than in the conventional LLIN arm (Pennetier _et al._, 2013), which is in line with the findings of the current study, which found a 1.89-fold (OR 2.1) elevation in mortality rates in the Olyset Plus arm.\n", + "\n", + "In addition to increased mortality rates, the current study, plus two of the previous experimental hit studies, reported significantly higher rates of blood feeding inhibition for PBO vs. conventional LLINs (Corbel _et al._, 2010; N'Guessan _et al._, 2010), indicating that PBO LLINs afford an enhanced level of personal protection in areas where vectors are resistant to pyrethroids. It should be noted that the current study was performed using unwashed nets only. Previous studies have found that the efficacy of PBO LLINS against resistant mosquitoes decreases substantially after the nets have been washed 20 times according to WHO protocols (Corbel _et al._, 2010; Tungu _et al._, 2010; Koudou _et al._, 2011). Thus further studies on the durability of the bio-efficacy of PBO LLINS under field conditions are urgently needed.\n", + "\n", + "header: Abstract\n", + "\n", + "Do bednets including piperonyl butoxide offer additional protection against populations of _Anopheles gambiae s.l._ that are highly resistant to pyrethroids? An experimental hut evaluation in Burkina Faso\n", + "\n", + "K. H. T oe\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " P. Muller\n", + "\n", + "2H233\n", + "\n", + "33Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " A. Badlo\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " A. Traore\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " N. Sagnon\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " R. K. Dabi Irene\n", + "\n", + "4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " H. Ransons\n", + "\n", + "5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + "\n", + "Malaria control is dependent on the use of longlasting insecticidal nets (LLINs) containing pyrethroids. A new generation of LLINs containing both pyrethroids and the synergist piperonyl butoxide (PBO) has been developed in response to increasing pyrethroid resistance in African malaria vectors, but questions remain about the performance of these nets in areas where levels of pyrethroid resistance are very high. This study was conducted in two settings in southwest Burkina Faso, Vallee du Kou 5 and Tengrela, where _Anopheles gambiae s.l._ (Diptera: Culicidae) mortality rates in World Health Organization (WHO) discriminating dose assays were \\(<\\) 14% for permethrin and \\(<\\) 33% for delatamethrin. When mosquitoes were pre-exposed to PBO in WHO tube assays, mortality rates increased substantially but full susceptibility was not restored. Molecular characterization revealed high levels of _kdr_ alleles and elevated levels of P450s previously implicated in pyrethroid resistance. In cone bioassays and experimental huts, PBO LLINs outperformed the pyrethroid-only equivalents from the same manufacturers. Blood feeding rates were 1.6-2.2-fold lower and mortality rates were 1.69-1.78-fold greater in huts with PBO LLINs vs. non-PBO LLINs. This study indicates that PBO LLINs provide greater personal and community-level protection than standard LLINs against highly pyrethroid-resistant mosquito populations.\n", + "\n", + " insecticide resistance, insecticide resistance management, longlasting insecticidal nets, PBO.\n", + "\n", + "header: Mortality rates and induced mortality\n", + "\n", + "Average mortality rates ranged from 9.5% in the control arm to 46.1% in the PermaNet 3.0 arm (Table S4). Mortality was statistically higher in all treated net conditions than in the control huts. As with blood feeding inhibition, the PBO nets showed the largest effects in increasing mortality (Fig. 5, Table S4); the ORs for mortality relative to control nets were 5.56 (95% CI 3.92-7.89) and 8.14\n", + "Fig. 2: Expression levels of candidate genes previously associated with pyrethroid resistance in Tengrela and Vallée du Kou 5. The analysis was performed using the 2−\n", + "\n", + "\n", + "\n", + "\n", + "(95% CI 5.64-11.75) for the Olyset Plus and PermaNet 3.0, respectively, compared with 2.65 (95% CI 1.87-3.75) and 3.33 (95% CI 2.35-4.74) for the Olyset Net and PermaNet 2.0, respectively.\n", + "\n", + "header: Table 2: Frequencies of 1014F and 1575Y kdr alleles in Anopheles coluzzili, in Tengrela and Vallée du Kou 5 (VK5).\n", + "footer: Chi-squared test (http://vassarstats.net/) for the comparison of the frequency of the 1014F and 1575Y mutations in Anopheles coluzzili populations from Tengrela and VK5 (October 2014). No statistical difference was observed in the frequencies of the kdr alleles in the two sites.\n", + "columns: ['1014F mutation - Unnamed: 0_level_1', '1014F mutation - Total n', '1014F mutation - LL', '1014F mutation - LF', '1014F mutation - FF', '1014F mutation - f (1014F)', '1014F mutation - P-value']\n", + "\n", + "{\"0\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"2\",\"1014F mutation - LF\":\"25\",\"1014F mutation - FF\":\"53\",\"1014F mutation - f (1014F)\":\"0.819\",\"1014F mutation - P-value\":\"0.26\"},\"1\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"78\",\"1014F mutation - LL\":\"0\",\"1014F mutation - LF\":\"18\",\"1014F mutation - FF\":\"60\",\"1014F mutation - f (1014F)\":\"0.885\",\"1014F mutation - P-value\":null},\"2\":{\"1014F mutation - Unnamed: 0_level_1\":\"1575Y mutation\",\"1014F mutation - Total n\":\"1575Y mutation\",\"1014F mutation - LL\":\"1575Y mutation\",\"1014F mutation - LF\":\"1575Y mutation\",\"1014F mutation - FF\":\"1575Y mutation\",\"1014F mutation - f (1014F)\":\"1575Y mutation\",\"1014F mutation - P-value\":\"1575Y mutation\"},\"3\":{\"1014F mutation - Unnamed: 0_level_1\":null,\"1014F mutation - Total n\":\"Total n\",\"1014F mutation - LL\":\"NN\",\"1014F mutation - LF\":\"NY\",\"1014F mutation - FF\":\"YY\",\"1014F mutation - f (1014F)\":\"f (A575Y)\",\"1014F mutation - P-value\":\"P-value\"},\"4\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"57\",\"1014F mutation - LF\":\"19\",\"1014F mutation - FF\":\"4\",\"1014F mutation - f (1014F)\":\"0.169\",\"1014F mutation - P-value\":\"0.39\"},\"5\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"77\",\"1014F mutation - LL\":\"49\",\"1014F mutation - LF\":\"22\",\"1014F mutation - FF\":\"6\",\"1014F mutation - f (1014F)\":\"0.221\",\"1014F mutation - P-value\":null}}\n", + "\n", + "header: Impact of PBO on LLIN efficacy in pyrethroid-resistant mosquitoes\n", + "\n", + "The performance of nets containing PBO as compared with pyrethroid-only nets from the same manufacturer is shown in Fig. 5. The PermaNet 3.0 deterred more mosquitoes than the PermaNet 2.0 (OR = 0.67, \\(P\\) < 0.01) (Fig. 5, Table S5), but there was no significant difference between the Olyset Plus and Olyset Net (_P_ = 0.412). The Olyset Net induced more exophily than the Olyset Plus (OR = 0.76, \\(P\\) < 0.05), but there was no significant difference in exophily between the PermaNet 2.0 and 3.0 (_P_ = 0.727) (Table S5). The PBO nets from both manufacturers considerably reduced blood feeding compared with non-PBO nets with ORs of 0.34 (_P_ < 0.001) and 0.55 (_P_ < 0.01) for the PermaNet 3.0 and Olyset Plus, respectively (Fig. 5, Table S4). In addition, the PBO nets killed significantly more _An. gambiae s.l._ than the non-PBO nets. The ORs for mortality were 2.45 (_P_ < 0.001) for the PermaNet 3.0 and 2.1 (_P_ < 0.001) for the Olyset Plus (Fig. 5, Table S5).\n", + "\n", + "header: Introduction\n", + "\n", + "Use of the longlasting insecticidal net (LLIN) is pivotal in the fight against malaria in Africa. A massive scaling up of the distribution of this commodity has occurred over the past 15 years, with 178 million LLINs delivered for use in sub-Saharan Africa (SSA) in 2015 alone [World Health Organization (WHO), 2016]. Although reliable estimates of LLIN usage are very hard to obtain, the WHO estimates that 53% of the population at risk in SSA slept under an LLIN in 2015 [WHO, 2016]. The results have been dramatic: an estimated 450 million clinical cases of malaria were averted in the last 15 years by the use of LLINs [Bhatt _et al._, 2015].\n", + "\n", + "All LLINs in current use contain pyrethroid insecticides, but there is growing recognition that increases in the prevalence and intensity of pyrethroid resistance, driven at least in part by the scale-up in the use of LLINs, could jeopardize recent gains in malaria control [WHO, 2012]. Direct evidence that pyrethroid\n", + "resistance is reducing either the personal or community-level protection provided by LLINS is challenging to obtain (Kleinschmidt _et al._, 2015; Ranson & Lissenden, 2016), but models of malaria transmission predict that even relatively low levels of resistance can substantially reduce the public health benefits of LILINS (Churcher _et al._, 2016). In countries that rely on the LLIN as the primary malaria prevention tool, the only currently available alternatives to conventional pyrethroid-only LLINS are nets in which the synerigent piperonyl butoxide (PBO) has been included in the fibres making up all, or part, of the net. Piperonyl butoxide inhibits cytochrome P450s, which comprise one of the most important enzyme families involved in pyrethroid resistance, and exposure to PBO has been shown to reduce resistance and sometimes to restore susceptibility to pyrethroids in malaria vectors (Jones _et al._, 2013; Edi _et al._, 2014).\n", + "\n", + "Four brands of LLIN containing PBO have received interim approval from the WHO as conventional LLINS. These are the PermaNet(r) 3.0 (deltamethrin+PBO) (Vestergaard Frandsen Holding SA, Lausanne, Switzerland), the Olvest(r) Plus (permethrin+PBO) (Sumitomo Chemical Asia Pte Ltd, Health and Crop Sciences Sector, Tokyo, Japan), the Veeralin(r) (alpha cypermethrin+PBO) (VKA Polymers Pte Ltd, Karur, India) and the DawaPlus(r) (deltamethrin+PBO) (Tana Netting Co. Ltd, Dubai, U.A.E.). The benefit of the addition of PBO is only expected to manifest in areas in which mosquito populations are resistant to pyrethroids and experimental hut trials of PBO LLINS in areas of resistance have supported this prediction. Increased mosquito mortality was observed in experimental huts containing PBO LLINS compared with conventional LLINS in Ivory Coast, Benin and Burkina Faso (Corbel _et al._, 2010; Ngousso _et al._, 2010; Koudou _et al._, 2011; Pennetier _et al._, 2013) and reductions in blood feeding rates were also reported in trials in the latter two countries. All of these sites reported high levels of pyrethroid resistance.\n", + "\n", + "There has been a dramatic escalation in the strength of pyrethroid resistance in southwestern Burkina Faso since earlier trials of PBO LLINS in 2007. World Health Organization cone bioassays performed in 2012 revealed that none of the conventional LLINS were effective in killing local vector populations and that the performance of the PBO LLIN PermaNet(r) 3.0 was also compromised in these assays (Toe _et al._, 2014). Although the numbers of malaria deaths in Burkina Faso have fallen over the past 10 years, numbers of malaria cases have risen year on year despite countywide LLIN distribution campaigns [National Malaria Control Programme (NMCP), personal communication; K.H.Toe, 2017]. In order to advise the NMCP on whether a switch to PBO LLINS may be warranted to target these highly resistant populations, an experimental hut trial was undertaken in two rice-growing areas in the southwestern region of Burkina Faso.\n", + "\n", + "header: Conclusions\n", + "\n", + "The results of these experimental hit studies with entomological endpoints suggest that substituting conventional LLINs with PBO LLINs in areas where there is a high prevalence of pyrethroid resistance in local vectors may be an effective strategy to maintain the efficacy of malaria vector control. The public health benefit of this would depend on a wide range of factors, including the level of malaria endemicity, LLIN coverage rates and the predominant mosquito vectors present, but a recent modelling exercise predicts that in some settings, a switch to PBO LLINs could aver up to 0.5 clinical cases per person per year (Churcher _et al._, 2016). These predictions from models are now being evaluated in large-scale field trials. A recent study in Tanzania reported a 33% protective efficacy of PBO LLINs over conventional LLINs after 2 years of use (Protopopoff _et al._, 2018). A larger trial, involving the distribution of over 10.7 million nets in Uganda, is evaluating whether PBO nets reduce malaria prevalence under programmatic conditions ([https://www.againstmalaria.com](https://www.againstmalaria.com), [https://www.pmi.gov](https://www.pmi.gov)).\n", + "\n", + "In light of the results from experimental hit studies, including the current study, and after reviewing data from the first clinical trial of a PBO LLIN, the WHO recently made a policy recommendation that national malaria control programmes should consider deployment of PBO LLINs in areas with pyrethroid-resistant vectors (WHO, 2017). If deployed at scale, PBO LLINs may play an important role in reducing the immediate threat of pyrethroid resistance to malaria control.\n", + "\n", + "header: _Pyrethroid resistance in Tengrela and VK5 and associated mechanisms_: Efficacy of LLINs under laboratory conditions\n", + "\n", + "All LLINs tested showed good bio-efficacy in cone bioassays against the susceptible laboratory Kisumu strain with 60 min knock-down and 24 h mortality rates of all LLINs above the 98% and 80% WHO thresholds (WHO, 2005) (Table S1). By contrast, in tests using the field-caught mosquitoes, the mortality threshold was met only by the top panels of the PermaNet 3.0 (Fig. 3). Knock-down rates exceeded the 98% threshold for the PermaNet 3.0 in VK5 only (Table S1).\n", + "\n", + "header: Experimental hut results\n", + "\n", + "In total, 12 915 specimens from four different mosquito genera were collected inside the huts (sleeping rooms and veranda traps) over the 6-week trial (Tengrela, \\(n\\) = 5808; VK5, \\(n\\) = 7107). Most specimens collected from the huts belonged to the _An. gambiae s.l._ species complex, accounting for 75.4% (_n_ = 4379) in Tengrela and 98.8% (_n_ = 7020) in VK5. The second most frequently collected _Anopheles_ species was _An. rhinorensis_, of which 49 and 19 specimens were collected in Tengrela and VK5, respectively. Other _Anopheles_ mosquito species, including _An. funestus_ (_n_ = 3), _An. nili_ (_n_ = 2) and _An. coustani_ (_n_ = 3), were collected in Tengrela. Additional mosquito taxa were also collected, including _Mansonia_ sp. (_n_ = 1330 in Tengrela and \\(n\\) = 45 in VK5), _Culex_ sp. (_n_ = 41 in Tengrela and \\(n\\) = 23 in VK5) and _Aedes_ sp. (_n_ = 1 in Tengrela) (all: Diptera: Culicidae). Because of the low numbers of other genera, only data for _An. gambiae s.l._ were included in the analysis.\n", + "\n", + "Within the total of 11 399 _An. gambiae s.l._ caught at both field sites, there was considerable variation between weeks and treatments in the numbers of mosquitoes entering the huts in both study locations (Fig. 4). The average number of mosquitoes caught per night/per hut was between 13 (PermaNet 3.0) and 20.7 (Olyset Net) mosquitoes (Table S3) and induced deterrence was found only for the Olyset Net, albeit at a low ratio of 1.31 (95% CI 1.02-1.66; \\(P\\) < 0.05) (Fig. 4).\n", + "\n", + "header: Pyrethroid resistance in southwest Burkina Faso: Bio-efficacy of LLINs in cone bioassays\n", + "\n", + "The low levels of mortality observed in cone bioassays in this study are similar to those reported previously in VK7, a neighbouring village to VK5, in the Vallee du Kou rice-growing region. However, whereas the current study found that exposure to the tops of the PermaNet 3.0 nets resulted in mortality levels exceeding the WHO threshold of 80%, equivalent bioassays conducted in the VK7 population in 2012 showed mortality of only 43%. Cone bioassays are not a reliable method of comparing the performance of LLINs containing different pyrethroids because of the inherent differences in extico-repellency within this class, which can affect exposure time (Siegert _et al._, 2009). In particular, cone tests may underestimate the performance of permethrin LLINs; this is indicated by comparison of the cone bioassay results in Fig. 3, in which the Olyset Net was found to induce considerably lower mortality than the PermaNet 2.0, although experimental hut results showed similar levels of mortality in huts with these two net types (Table S3).\n", + "\n", + "Fig. 3: Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (_P_ < 0.001), † (_P_ < 0.0001), n.s. (non-significant, \\(\\frac{1}{2}\\) (_P_ < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wicyclonlinelibrary.com].\n", + "\n", + "\n", + "Nevertheless, the results of these cone bioassays provide further evidence that resistance can be at least partially ameliorated by exposure to PBO.\n", + "\n", + "header: Experimental hut trials\n", + "\n", + "Each station consisted of six experimental huts built according to the West African style (WHO, 2013). The study had six arms that used, respectively, five different LLINs and one net with no insecticide treatment as a negative control (Table 1). The nets were obtained from the manufacturers and were unpacked and kept in the shade for 24 h, but not washed prior to testing. Two of the nets, the OlysetPlus and PermaNet 3.0, contain PBO, whereas the other three LLINs contain only pyrethroids. The LLINs were holed according to WHO standard procedures (WHO, 2013). A total of six holes (4 cm x 4 cm) per net were cut, two on each of the long sides and one on each of the short sides.\n", + "\n", + "Study participants (male sleepers) spent 6 nights per week under a net in an experimental hut from 20.00 hours to 05.00 hours, followed by 1 day of break. The sleepers were rotated through the six huts so that each sleeper spent 1 night per week under each net type. To complete a full Latin square rotation with all combinations of sleeper, net type and hut, the study ran over 36 days from 8 September to 22 October 2014.\n", + "\n", + "Each morning at 05.00 hours, mosquitoes were collected manually by the sleepers, with supervision, from under the net, inside the hut and on the exit veranda. The collected specimens were morphologically identified to genus and, where possible, to species level (Gillies & Coetzee, 1987), grouped according to their gonotrophic stage (blood-fed, unfed or gravid), and scored as dead or alive. Live mosquitoes were transferred to paper cups, provided with 10% sugar water and kept in the insectary described above for 24 h, after which delayed mortality was recorded. All specimens were stored on silica gel for further molecular analysis.\n", + "\n", + "Data analysis was performed in the open-source statistical software R Version 3.3.2 (R Development Core Team, 2011) using the libraries 'lme4' (Bates _et al._, 2012) and 'glmADMB' (Skaug _et al._, 2012) for generalized linear mixed models (GLMMs). Plots were then generated with the package 'ggplot2' (Wickham, 2009).\n", + "\n", + "In the statistical analysis of hut trial data, in order to increase the number of replicates, give more power and increase confidence in the analysis, data collected from both sites (Tengrela and VK5) were pooled and the following four outcomes for _An. coluzzii_ were compared between the LLINs and the untreated control net, as well as between the PBO and non-PBO nets from the same manufacturer: (a) deterrence (i.e. the reduction in hut entry relative to the control or non-PBO net); (b) induced exophily (i.e. the ratio of the odds of a mosquito being found in the veranda trap compared with the hut); (c) blood feeding inhibition (i.e. the ratio of the odds of blood\n", + "\n", + "fed vs. unfed mosquitoes), and (d) induced mortality [i.e. the ratio of the odds of dead vs. alive mosquitoes] (The original dataset for _An. gambiae s.l._ is supplied in Table S2.) Immediate mortality and mortality at 24 h post-collection were combined for the analysis. Deterrence was analysed as the ratio in total numbers between the treatment arms (or PBO net) vs. the control arm (or non-PBO net). The numbers of mosquitoes in the room and the veranda were combined and analysed using a GLMM with a negative binomial distribution and a log link function using the R function 'glmandmdb()' in the 'glmmADMB' package. In the model, the net type was the fixed effect term and random intercepts were introduced for the sleeper and the hut, and a random slope for the day depending on the location. For proportional outcomes of induced exophily, blood feeding inhibition and induced mortality, the negative binomial model was replaced by a GLMM with a binomial distribution and logit link function using the R function 'glmer()' in the 'lme4' package. In the models, in addition to the terms listed above, a random intercept was introduced for each observation to account for unexplained overdispersion. For statistical testing, the level of significance was set at \\(a\\) = 0.05.\n", + "\n", + "In addition to the ratios described above, averages (i.e. the modes) and 95% confidence intervals (CIs) of the crude values underlying the outcomes were computed by the same models as above but using the individual nets as the intercept. These corresponding crude values were: (a) entry rate (i.e. the number of mosquitoes entering a hut); (b) exit rate (i.e. the number of mosquitoes collected from the veranda trap; (c) blood feeding rate (i.e. the proportion of blood-fed mosquitoes), and (d) mortality rate (i.e. the proportion of dead mosquitoes at 24 h post-collection).\n", + "\n", + "The study participants were recruited from the local communities and gave informed consent. Ethical approval was obtained from the Ethical Committee for Health Research of the Ministry of Health and Ministry of Research in Burkina Faso (Deliberation No. 2013-07-057, 11 July 2013). Malaria chemotherapy was not offered to study participants in line with Ministry of Health recommendations. However, medical supervision was provided throughout the study and any malaria case was treated according to national requirements.\n", + "\n", + "header: Study sites: Characterization of mosquito populations\n", + "\n", + "_Anopheles gambiae s.l._ larvae were collected in Tengrela and VK5 and reared to adults in local insectaries (mean relative humidity: 75+- 10%; mean temperature: 27+- 2*C). To assess susceptibility to pyrethroids, batches of approximately 25 non-blood-fed _An. gambiae s.l._ females aged 3-5 days were exposed to papers treated with 0.75% permethrin or 0.05% deltamethrin. The papers and susceptibility test kits were purchased from the Universiti Sains Malaysia (Penang, Malaysia). In parallel bioassays, mosquitoes were exposed to papers treated with 4% PBO [prepared by the Liverpool School of Tropical Medicine (LSTM)] for 1 h before they were transferred to tubes containing either insecticide-treated papers or insecticide-free papers and exposed for a further 1 h. Knock-down was recorded at the end of exposure and mortality was recorded 24 h later.\n", + "\n", + "The bio-efficacy of the LLINS was tested using non-blood-fed mosquitoes aged 3-5 days from local larval collections, and from the Kisumu susceptible laboratory strain, using the WHO cone bioassay procedure (WHO, 2013). For each LLIN type, two unwashed nets were tested under insectary conditions. Ten mosquitoes per cone were exposed for 3 min to 30 cm x 30 cm net pieces sampled from the top, the short and the long sides of the net. During exposure, the set-up was kept at an angle of 45 degrees as recommended (Owusu & Muller, 2016). Knock-down and mortality were recorded at 60 min and 24 h after exposure, respectively. Conventional LLINs were compared with PBO LLINS using Fisher's exact test (2x2 contingency table, significance level of 0.05) (http://wwwgraphpadcom/quickcales/contingency2) (Roberts & Andre, 1994).\n", + "\n", + "header: Materials and methods\n", + "\n", + "The experimental hut studies were carried out at two field stations in southwest Burkina Faso: the first is located in the Vallee du Kou.5 (VK5) near Bobo-Dioulasso (11*39' N, 04*41' W) and belongs to the Institut de Recherche en Science de la Sante (IRSS)/Centre MURAZ, and the second is located at Tengrela (10*40' N, 04*50' W) near Banfora and is maintained by the Centre National de Recherche et de Formation sur le Paludisme (CNRFP). These two sites are separated by approximately 120 km. Previous surveys revealed _Anopheles coluzzii_ (formerly _Anopheles gambiae s.s._ M molecular form) to be the predominant _Anopheles_ species at both sites. High levels of resistance to both DDT and pyrethroids have been reported previously at both sites (Ngufor _et al._, 2014; Toe _et al._, 2015).\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Burkina Faso\",\"Site\":\"Vallee du Kou 5\",\"Start_month\":9,\"Start_year\":2014,\"End_month\":10,\"End_year\":2014},\"S02\":{\"Study_type\":\"Hut trial\",\"Country\":\"Burkina Faso\",\"Site\":\"Tengrela\",\"Start_month\":9,\"Start_year\":2014,\"End_month\":10,\"End_year\":2014}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Untreated net\",\"Net_holed\":0.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":null,\"Concentration_initial\":null},\"N02\":{\"Net_type\":\"Olyset Net\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"8.6 x 10-4 kg\\/m2\"},\"N03\":{\"Net_type\":\"Olyset Plus\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"permethrin, PBO\",\"Concentration_initial\":\"8.6 x 10-4 kg\\/m2, 4.3 x 10-4 kg\\/m2\"},\"N04\":{\"Net_type\":\"PermaNet 2.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"5.5 x 10-5 kg\\/m2\"},\"N05\":{\"Net_type\":\"PermaNet 3.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin, PBO\",\"Concentration_initial\":\"2.8 g\\/kg, 4.0 g\\/kg, 25 g\\/kg\"},\"N06\":{\"Net_type\":\"Dawa Plus 2.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"8.0 x 10-5 kg\\/m2\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Supporting Information\n", + "\n", + "Additional supporting information may be found online in the Supporting Information section at the end of the article.\n", + "\n", + "Fig. 5: Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hit relative to the control hit. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "header: Entry rate and deterrence: Exit rates and induced exophily\n", + "\n", + "Exit rates refer here to the proportion of mosquitoes present in the veranda trap. As with entrance rates, exit rates varied throughout the study (Fig. 4). On average, the induced exophily rates were between 26.4% (control net) and 48.5% (Olyset Net) (Table S4). The odds of finding a mosquito in the veranda trap were significantly increased in the huts with treated nets, with the exception of the DawaPlus, although even for the DawaPlus a tendency to induce exophily was observed (Fig. 4, Table S4).\n", + "\n", + "header: Table 1: Treatment arms and descriptions of longlasting insecticide-treated nets.\n", + "footer: PermaNet is a registered trademark of Vestergaard Frandsen Holding SA. Olyset is a registered trademark of Sumitomo Chemical Co. Ltd. DawaPlusis a registered trademark of Tana Netting Co. Ltd.PBO, piperonyl butoxide.\n", + "columns: ['Treatment arm', 'Description', 'Manufacturer']\n", + "\n", + "{\"0\":{\"Treatment arm\":\"Untreated net\",\"Description\":\"Net manufactured manually using netting material from market\",\"Manufacturer\":\"Local market\"},\"1\":{\"Treatment arm\":\"Olyset\\u00ae Net\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"2\":{\"Treatment arm\":\"Olyset\\u00ae Plus\",\"Description\":\"8.6 x 10-4 kg\\/m2 of permethrin and 4.3 x 10-4 kg\\/m2 of PBO incorporated into polyethylene\",\"Manufacturer\":\"Sumitomo Chemical\"},\"3\":{\"Treatment arm\":\"PermaNet\\u00ae 2.0\",\"Description\":\"5.5 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"4\":{\"Treatment arm\":\"PermaNet\\u00ae 3.0\",\"Description\":\"Combination of 2.8 g\\/kg of deltamethrin coated on polyester with strengthened border (side panels) and deltamethrin (4.0 g\\/kg) and PBO (25 g\\/kg)\",\"Manufacturer\":\"Vestergaard Frandsen\"},\"5\":{\"Treatment arm\":\"Dawa\\u00ae Plus 2.0\",\"Description\":\"8.0 x 10-5 kg\\/m2 of deltamethrin coated on polyester\",\"Manufacturer\":\"TANA Netting\"}}\n", + "\n", + "header: Discussion\n", + "\n", + "Very low mortality rates were obtained for both permethrin and deltamethrin in the two study sites following an hour of exposure to WHO diagnostic doses. Southwestern Burkina Faso is known as a hotspot of pyrethroid resistance (Dabire _et al._, 2012; Namountougou _et al._, 2012). Rapid changes in the prevalence of pyrethroid resistance have been observed since the first national LLIN distribution programme in 2010: in 2009, mosquito mortality following deltamethrin exposure was 25% (Dabire _et al._, 2012), in VK has since fallen to just 2.5%. The frequency of the 1014F _kdr_ mutation also increased from 0.28 in 2006 (Dabire _et al._, 2009) to 0.88 in the current study. Similar increases in the prevalence of pyrethroid resistance have been witnessed in Tengrela. Mortality rates of 93% and 46% for deltamethrin and permethrin, respectively, were recorded in 2011 (Namountougou _et al._, 2012; K. H. Toe, unpublished data 2011), but these mortality rates had reduced to 33% and 13% in 2014, the year of the current study (Toe _et al._, 2015). In the present study, pyrethroid mortality was significantly increased by pre-exposure to PBO. This, together with the qPCR data showing elevated expression of multiple P450s in both field populations compared with a susceptible laboratory strain, indicate that oxidases are an important resistance mechanism in _An. coluzzi_ in southwestern Burkina Faso. It is noted that resistance was not fully restored by PBO pre-exposure, indicating that additional resistance mechanisms, such as target site resistance and possibly cuticular modifications (Toe _et al._, 2015), may contribute to the pyrethroid resistance phenotype in these populations.\n", + "\n", + "header: Molecular analysis\n", + "\n", + "DNA was extracted from mosquito legs by heating at 90*C for 30 min. Species were identified using the SINE200 protocol (Santolamazza _et al._, 2008) and then screened for the voltage gated sodium channel (VGSC) 1014F and 1575Y alleles using Taqman assays (Bass _et al._, 2007; Jones _et al._, 2012).\n", + "\n", + "Total RNA was extracted from six pools of 10 5-day-old non-blood-fed female _An. coluzzii_ from larval collections from Tengrela and VK5 using the RNAqueous(r)4PCR Kit for isolation of DNA-free RNA (Ambion, Inc., Austin, TX, U.S.A.) according to the manufacturer's procedures. The RNA was eluted in 50 mL of elution solution and treated with DNase. The quality and quantity of all the RNA used were assessed \n", + "using a NanoDrop ND1000 (Thermo Fisher Scientific UK Ltd, Renfrew, U.K.).\n", + "\n", + "The expression profiles of five P450 genes (_CYP6M2_, _CYP6Z2_, _CYP6Z3_, _CYP6P3_, _CYP6P4_), previously found to be over-expressed in pyrethroid-resistant field populations from Burkina Faso (Toe _et al._, 2015) and/or known to metabolize pyrethroids (Muller _et al._, 2008; Mitchell _et al._, 2012) were quantified using reverse-transcription quantitative polymerase chain reaction (RT-qPCR). The qPCR analysis was conducted at the LSTM and used the following mosquito populations: Ngousso, an insecticide-susceptible strain originating from Ngousso in Cameroon in 2006 and maintained in the insectary at LSTM; Tengrela specimens reared from larval collections in October-November 2014, and VK5 specimens reared from larval collections in October-November 2014. Approximately 600 ng of RNA was reverse-transcribed to first-strand cDNA using SuperScript(tm) III reverse transcriptase (Invitrogen, Inc., Carlsbad, CA, U.S.A.) according to the manufacturer's procedures. Samples were then purified using the Qiagen Easy Purification Kit (Qiagen Benelux BV, Venlo, the Netherlands) before proceeding to qPCR. Each of the six pool replicates were run in triplicate using 2X SYBR Brilliant III (Agilent Technologies, Inc., Palo Alto, CA, U.S.A.), forward and reverse primers (300 nM) [sequence available in Toe _et al._ (2015)] on the Mx3005p qPCR system (Agilent Technologies, Inc., Palo Alto, California) with the following cycling protocol: 95 degC for 3 min, followed by 40 cycles of 95 degC for 10 s and 60 degC for 10 s. The qPCR data were analysed using the delta Ct values method, taking into account the PCR efficiency (Pfaffi, 2001). The candidate Ct values were normalized against three housekeeping genes, encoding ribosomal protein L40 (ubiquitin) (_AGAP007927_), an elongation factor (_AGAP005128_) and the S7 ribosomal protein (_AGAP010592_). The normalized Ct values of each gene were then compared with the normalized Ct values of the susceptible Ngousso strain.\n", + "\n", + "header: Results\n", + "\n", + "In VK5, very low levels of mortality were observed after exposure to the discriminating dose of deltamethrin and permethrin, but pre-exposure to PBO significantly increased mortality rates from 2.5% (_n_ = 163) to 45% (_n_ = 158) and from 5% (_n_ = 153) to 26% (_n_ = 156) for deltamethrin and permethrin, respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig. 1). In Tengrela, mortality rates of 34% (_n_ = 85) and 14% (_n_ = 101) were recorded for deltamethrin and permethrin, respectively. When PBO was used, mortality rates increased significantly to 63% (_n_ = 84) and 42% (_n_ = 104), respectively (Fisher's exact test, \\(P\\) < 0.0001) (Fig.1). Although there was evidence of synergism, pre-exposure to PBO did not fully restore susceptibility in either site to either pyrethroid.\n", + "\n", + "_Anopheles coluzzi_ was the only species of the _An. gambiae_ complex identified by PCR of a subset of 80 specimens from Tengrela and VK5. High frequencies of the 1014F allele of the VGSC were recorded in Tengrela (0.819, 95% CI 0.750-0.875) and VK5 (0.885, 95% CI 0.824-0.930) with the 1575Y allele present at lower frequencies of 0.169 (95% CI 0.114-0.236) and 0.221 (95% CI 0.158-0.295), respectively. Samples were not genotyped for the 1014S allele as previous extensive surveys have not detected this allele in _An. coluzzi_ from these sites (Toe _et al._, 2015). There was no statistically significant difference in the frequency of either the 1014F or 1575Y allele between the two sites (Table 2).\n", + "\n", + "Several cytochrome P450 genes previously associated with pyrethroid resistance showed elevated expression levels in the Tengrela and the VK5 _An. coluzzi_ populations compared with the susceptible laboratory Ngousso strain (Fig. 2). _CYP6P3_, _CYP6M2_, _CYP6Z3_, _CYP6P4_ and _CYP6Z2_ were found to be\n", + "\n", + "Fig. 1: Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: \\(P\\) < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "\n", + "overexpressed in both field strains compared with the susceptible laboratory colony (fold change: > 2) with the most highly overexpressed genes in both populations being _CYP6Z2_ and _CYP6Z3_ (Fig. 2).\n", + "\n", + "header: Blood feeding rates and inhibition\n", + "\n", + "Average blood feeding rates were between 17.0% (PermaNet 3.0) and 56.4% (control net) (Table S4). With the exception of the DawaPlus, all treated nets reduced blood feeding (Fig. 4, Table S4), and the effect was most prominent with the PBO nets PermaNet 3.0 and Olyset Plus (Fig. 4, Table S4), for which the odds ratios (ORs) of blood feeding relative to control nets were 0.19 (95% CI 01.3-0.26) and 0.16 (95% CI 0.11-0.23), respectively.\n", + "\n", + "header: Performance of PBO LLINs in experimental hut studies\n", + "\n", + "The enhanced performance of PBO-containing LLINs over conventional LLINs was further supported by the experimental hut results. Both blood feeding inhibition and mortality rates were significantly higher in huts containing PBO LLINs than in those containing conventional LLINs from the same manufacturers. An improved performance of the PermaNet 3.0, which contains both higher concentrations of deltamethrin compared with the PermaNet 2.0, plus PBO on the roof of the net, has also been reported in pyrethroid-resistant populations of malaria vectors in Ivory Coast (Koudou _et al._, 2011), Benin (N'Guessan _et al._, 2010) and Burkina Faso (Corbel _et al._, 2010).\n", + "\n", + "Fig. 4: Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the \\(P\\)-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\n", + "\n", + "\n", + "The magnitude of this effect differs among studies, with previous studies reporting increases in mortality rates of 1.3-1.8-fold, whereas the current study reports an OR of 2.45, which corresponds to a 1.78-fold increase. Only one experimental hit study comparing the Olyset Plus with the Olyset Net has been published to date (Pennetier _et al._, 2013). This study, conducted in Benin in 2013, reported mortality rates 1.9-fold higher in the PBO arm than in the conventional LLIN arm (Pennetier _et al._, 2013), which is in line with the findings of the current study, which found a 1.89-fold (OR 2.1) elevation in mortality rates in the Olyset Plus arm.\n", + "\n", + "In addition to increased mortality rates, the current study, plus two of the previous experimental hit studies, reported significantly higher rates of blood feeding inhibition for PBO vs. conventional LLINs (Corbel _et al._, 2010; N'Guessan _et al._, 2010), indicating that PBO LLINs afford an enhanced level of personal protection in areas where vectors are resistant to pyrethroids. It should be noted that the current study was performed using unwashed nets only. Previous studies have found that the efficacy of PBO LLINS against resistant mosquitoes decreases substantially after the nets have been washed 20 times according to WHO protocols (Corbel _et al._, 2010; Tungu _et al._, 2010; Koudou _et al._, 2011). Thus further studies on the durability of the bio-efficacy of PBO LLINS under field conditions are urgently needed.\n", + "\n", + "header: Abstract\n", + "\n", + "Do bednets including piperonyl butoxide offer additional protection against populations of _Anopheles gambiae s.l._ that are highly resistant to pyrethroids? An experimental hut evaluation in Burkina Faso\n", + "\n", + "K. H. T oe\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " P. Muller\n", + "\n", + "2H233\n", + "\n", + "33Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " A. Badlo\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " A. Traore\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " N. Sagnon\n", + "\n", + "1Departement des Sciences Biomedicales, Centre National de Recherche et de Formation sur le Paludisme, Ouagadougou, Burkina Faso, 2Epidemiology and Public Health Department, Swiss Tropical and Public Health Institute, Basel, Switzerland, 3University of Basel, Basel, Basel, Switzerland, 4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " R. K. Dabi Irene\n", + "\n", + "4Department of Medical Biology and Public Health, Institut de Recherche en Science de la Sante, Bobo-Dioulasso, Burkina Faso and 5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + " H. Ransons\n", + "\n", + "5Department of Vector Biology, Liverpool School of Tropical Medicine, Liverpool, U.K.\n", + "\n", + "\n", + "Malaria control is dependent on the use of longlasting insecticidal nets (LLINs) containing pyrethroids. A new generation of LLINs containing both pyrethroids and the synergist piperonyl butoxide (PBO) has been developed in response to increasing pyrethroid resistance in African malaria vectors, but questions remain about the performance of these nets in areas where levels of pyrethroid resistance are very high. This study was conducted in two settings in southwest Burkina Faso, Vallee du Kou 5 and Tengrela, where _Anopheles gambiae s.l._ (Diptera: Culicidae) mortality rates in World Health Organization (WHO) discriminating dose assays were \\(<\\) 14% for permethrin and \\(<\\) 33% for delatamethrin. When mosquitoes were pre-exposed to PBO in WHO tube assays, mortality rates increased substantially but full susceptibility was not restored. Molecular characterization revealed high levels of _kdr_ alleles and elevated levels of P450s previously implicated in pyrethroid resistance. In cone bioassays and experimental huts, PBO LLINs outperformed the pyrethroid-only equivalents from the same manufacturers. Blood feeding rates were 1.6-2.2-fold lower and mortality rates were 1.69-1.78-fold greater in huts with PBO LLINs vs. non-PBO LLINs. This study indicates that PBO LLINs provide greater personal and community-level protection than standard LLINs against highly pyrethroid-resistant mosquito populations.\n", + "\n", + " insecticide resistance, insecticide resistance management, longlasting insecticidal nets, PBO.\n", + "\n", + "header: Mortality rates and induced mortality\n", + "\n", + "Average mortality rates ranged from 9.5% in the control arm to 46.1% in the PermaNet 3.0 arm (Table S4). Mortality was statistically higher in all treated net conditions than in the control huts. As with blood feeding inhibition, the PBO nets showed the largest effects in increasing mortality (Fig. 5, Table S4); the ORs for mortality relative to control nets were 5.56 (95% CI 3.92-7.89) and 8.14\n", + "Fig. 2: Expression levels of candidate genes previously associated with pyrethroid resistance in Tengrela and Vallée du Kou 5. The analysis was performed using the 2−\n", + "\n", + "\n", + "\n", + "\n", + "(95% CI 5.64-11.75) for the Olyset Plus and PermaNet 3.0, respectively, compared with 2.65 (95% CI 1.87-3.75) and 3.33 (95% CI 2.35-4.74) for the Olyset Net and PermaNet 2.0, respectively.\n", + "\n", + "header: Impact of PBO on LLIN efficacy in pyrethroid-resistant mosquitoes\n", + "\n", + "The performance of nets containing PBO as compared with pyrethroid-only nets from the same manufacturer is shown in Fig. 5. The PermaNet 3.0 deterred more mosquitoes than the PermaNet 2.0 (OR = 0.67, \\(P\\) < 0.01) (Fig. 5, Table S5), but there was no significant difference between the Olyset Plus and Olyset Net (_P_ = 0.412). The Olyset Net induced more exophily than the Olyset Plus (OR = 0.76, \\(P\\) < 0.05), but there was no significant difference in exophily between the PermaNet 2.0 and 3.0 (_P_ = 0.727) (Table S5). The PBO nets from both manufacturers considerably reduced blood feeding compared with non-PBO nets with ORs of 0.34 (_P_ < 0.001) and 0.55 (_P_ < 0.01) for the PermaNet 3.0 and Olyset Plus, respectively (Fig. 5, Table S4). In addition, the PBO nets killed significantly more _An. gambiae s.l._ than the non-PBO nets. The ORs for mortality were 2.45 (_P_ < 0.001) for the PermaNet 3.0 and 2.1 (_P_ < 0.001) for the Olyset Plus (Fig. 5, Table S5).\n", + "\n", + "header: Table 2: Frequencies of 1014F and 1575Y kdr alleles in Anopheles coluzzili, in Tengrela and Vallée du Kou 5 (VK5).\n", + "footer: Chi-squared test (http://vassarstats.net/) for the comparison of the frequency of the 1014F and 1575Y mutations in Anopheles coluzzili populations from Tengrela and VK5 (October 2014). No statistical difference was observed in the frequencies of the kdr alleles in the two sites.\n", + "columns: ['1014F mutation - Unnamed: 0_level_1', '1014F mutation - Total n', '1014F mutation - LL', '1014F mutation - LF', '1014F mutation - FF', '1014F mutation - f (1014F)', '1014F mutation - P-value']\n", + "\n", + "{\"0\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"2\",\"1014F mutation - LF\":\"25\",\"1014F mutation - FF\":\"53\",\"1014F mutation - f (1014F)\":\"0.819\",\"1014F mutation - P-value\":\"0.26\"},\"1\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"78\",\"1014F mutation - LL\":\"0\",\"1014F mutation - LF\":\"18\",\"1014F mutation - FF\":\"60\",\"1014F mutation - f (1014F)\":\"0.885\",\"1014F mutation - P-value\":null},\"2\":{\"1014F mutation - Unnamed: 0_level_1\":\"1575Y mutation\",\"1014F mutation - Total n\":\"1575Y mutation\",\"1014F mutation - LL\":\"1575Y mutation\",\"1014F mutation - LF\":\"1575Y mutation\",\"1014F mutation - FF\":\"1575Y mutation\",\"1014F mutation - f (1014F)\":\"1575Y mutation\",\"1014F mutation - P-value\":\"1575Y mutation\"},\"3\":{\"1014F mutation - Unnamed: 0_level_1\":null,\"1014F mutation - Total n\":\"Total n\",\"1014F mutation - LL\":\"NN\",\"1014F mutation - LF\":\"NY\",\"1014F mutation - FF\":\"YY\",\"1014F mutation - f (1014F)\":\"f (A575Y)\",\"1014F mutation - P-value\":\"P-value\"},\"4\":{\"1014F mutation - Unnamed: 0_level_1\":\"Tengrela\",\"1014F mutation - Total n\":\"80\",\"1014F mutation - LL\":\"57\",\"1014F mutation - LF\":\"19\",\"1014F mutation - FF\":\"4\",\"1014F mutation - f (1014F)\":\"0.169\",\"1014F mutation - P-value\":\"0.39\"},\"5\":{\"1014F mutation - Unnamed: 0_level_1\":\"VK5\",\"1014F mutation - Total n\":\"77\",\"1014F mutation - LL\":\"49\",\"1014F mutation - LF\":\"22\",\"1014F mutation - FF\":\"6\",\"1014F mutation - f (1014F)\":\"0.221\",\"1014F mutation - P-value\":null}}\n", + "\n", + "header: Introduction\n", + "\n", + "Use of the longlasting insecticidal net (LLIN) is pivotal in the fight against malaria in Africa. A massive scaling up of the distribution of this commodity has occurred over the past 15 years, with 178 million LLINs delivered for use in sub-Saharan Africa (SSA) in 2015 alone [World Health Organization (WHO), 2016]. Although reliable estimates of LLIN usage are very hard to obtain, the WHO estimates that 53% of the population at risk in SSA slept under an LLIN in 2015 [WHO, 2016]. The results have been dramatic: an estimated 450 million clinical cases of malaria were averted in the last 15 years by the use of LLINs [Bhatt _et al._, 2015].\n", + "\n", + "All LLINs in current use contain pyrethroid insecticides, but there is growing recognition that increases in the prevalence and intensity of pyrethroid resistance, driven at least in part by the scale-up in the use of LLINs, could jeopardize recent gains in malaria control [WHO, 2012]. Direct evidence that pyrethroid\n", + "resistance is reducing either the personal or community-level protection provided by LLINS is challenging to obtain (Kleinschmidt _et al._, 2015; Ranson & Lissenden, 2016), but models of malaria transmission predict that even relatively low levels of resistance can substantially reduce the public health benefits of LILINS (Churcher _et al._, 2016). In countries that rely on the LLIN as the primary malaria prevention tool, the only currently available alternatives to conventional pyrethroid-only LLINS are nets in which the synerigent piperonyl butoxide (PBO) has been included in the fibres making up all, or part, of the net. Piperonyl butoxide inhibits cytochrome P450s, which comprise one of the most important enzyme families involved in pyrethroid resistance, and exposure to PBO has been shown to reduce resistance and sometimes to restore susceptibility to pyrethroids in malaria vectors (Jones _et al._, 2013; Edi _et al._, 2014).\n", + "\n", + "Four brands of LLIN containing PBO have received interim approval from the WHO as conventional LLINS. These are the PermaNet(r) 3.0 (deltamethrin+PBO) (Vestergaard Frandsen Holding SA, Lausanne, Switzerland), the Olvest(r) Plus (permethrin+PBO) (Sumitomo Chemical Asia Pte Ltd, Health and Crop Sciences Sector, Tokyo, Japan), the Veeralin(r) (alpha cypermethrin+PBO) (VKA Polymers Pte Ltd, Karur, India) and the DawaPlus(r) (deltamethrin+PBO) (Tana Netting Co. Ltd, Dubai, U.A.E.). The benefit of the addition of PBO is only expected to manifest in areas in which mosquito populations are resistant to pyrethroids and experimental hut trials of PBO LLINS in areas of resistance have supported this prediction. Increased mosquito mortality was observed in experimental huts containing PBO LLINS compared with conventional LLINS in Ivory Coast, Benin and Burkina Faso (Corbel _et al._, 2010; Ngousso _et al._, 2010; Koudou _et al._, 2011; Pennetier _et al._, 2013) and reductions in blood feeding rates were also reported in trials in the latter two countries. All of these sites reported high levels of pyrethroid resistance.\n", + "\n", + "There has been a dramatic escalation in the strength of pyrethroid resistance in southwestern Burkina Faso since earlier trials of PBO LLINS in 2007. World Health Organization cone bioassays performed in 2012 revealed that none of the conventional LLINS were effective in killing local vector populations and that the performance of the PBO LLIN PermaNet(r) 3.0 was also compromised in these assays (Toe _et al._, 2014). Although the numbers of malaria deaths in Burkina Faso have fallen over the past 10 years, numbers of malaria cases have risen year on year despite countywide LLIN distribution campaigns [National Malaria Control Programme (NMCP), personal communication; K.H.Toe, 2017]. In order to advise the NMCP on whether a switch to PBO LLINS may be warranted to target these highly resistant populations, an experimental hut trial was undertaken in two rice-growing areas in the southwestern region of Burkina Faso.\n", + "\n", + "header: Conclusions\n", + "\n", + "The results of these experimental hit studies with entomological endpoints suggest that substituting conventional LLINs with PBO LLINs in areas where there is a high prevalence of pyrethroid resistance in local vectors may be an effective strategy to maintain the efficacy of malaria vector control. The public health benefit of this would depend on a wide range of factors, including the level of malaria endemicity, LLIN coverage rates and the predominant mosquito vectors present, but a recent modelling exercise predicts that in some settings, a switch to PBO LLINs could aver up to 0.5 clinical cases per person per year (Churcher _et al._, 2016). These predictions from models are now being evaluated in large-scale field trials. A recent study in Tanzania reported a 33% protective efficacy of PBO LLINs over conventional LLINs after 2 years of use (Protopopoff _et al._, 2018). A larger trial, involving the distribution of over 10.7 million nets in Uganda, is evaluating whether PBO nets reduce malaria prevalence under programmatic conditions ([https://www.againstmalaria.com](https://www.againstmalaria.com), [https://www.pmi.gov](https://www.pmi.gov)).\n", + "\n", + "In light of the results from experimental hit studies, including the current study, and after reviewing data from the first clinical trial of a PBO LLIN, the WHO recently made a policy recommendation that national malaria control programmes should consider deployment of PBO LLINs in areas with pyrethroid-resistant vectors (WHO, 2017). If deployed at scale, PBO LLINs may play an important role in reducing the immediate threat of pyrethroid resistance to malaria control.\n", + "\n", + "header: Experimental hut results\n", + "\n", + "In total, 12 915 specimens from four different mosquito genera were collected inside the huts (sleeping rooms and veranda traps) over the 6-week trial (Tengrela, \\(n\\) = 5808; VK5, \\(n\\) = 7107). Most specimens collected from the huts belonged to the _An. gambiae s.l._ species complex, accounting for 75.4% (_n_ = 4379) in Tengrela and 98.8% (_n_ = 7020) in VK5. The second most frequently collected _Anopheles_ species was _An. rhinorensis_, of which 49 and 19 specimens were collected in Tengrela and VK5, respectively. Other _Anopheles_ mosquito species, including _An. funestus_ (_n_ = 3), _An. nili_ (_n_ = 2) and _An. coustani_ (_n_ = 3), were collected in Tengrela. Additional mosquito taxa were also collected, including _Mansonia_ sp. (_n_ = 1330 in Tengrela and \\(n\\) = 45 in VK5), _Culex_ sp. (_n_ = 41 in Tengrela and \\(n\\) = 23 in VK5) and _Aedes_ sp. (_n_ = 1 in Tengrela) (all: Diptera: Culicidae). Because of the low numbers of other genera, only data for _An. gambiae s.l._ were included in the analysis.\n", + "\n", + "Within the total of 11 399 _An. gambiae s.l._ caught at both field sites, there was considerable variation between weeks and treatments in the numbers of mosquitoes entering the huts in both study locations (Fig. 4). The average number of mosquitoes caught per night/per hut was between 13 (PermaNet 3.0) and 20.7 (Olyset Net) mosquitoes (Table S3) and induced deterrence was found only for the Olyset Net, albeit at a low ratio of 1.31 (95% CI 1.02-1.66; \\(P\\) < 0.05) (Fig. 4).\n", + "\n", + "header: _Pyrethroid resistance in Tengrela and VK5 and associated mechanisms_: Efficacy of LLINs under laboratory conditions\n", + "\n", + "All LLINs tested showed good bio-efficacy in cone bioassays against the susceptible laboratory Kisumu strain with 60 min knock-down and 24 h mortality rates of all LLINs above the 98% and 80% WHO thresholds (WHO, 2005) (Table S1). By contrast, in tests using the field-caught mosquitoes, the mortality threshold was met only by the top panels of the PermaNet 3.0 (Fig. 3). Knock-down rates exceeded the 98% threshold for the PermaNet 3.0 in VK5 only (Table S1).\n", + "\n", + "header: Pyrethroid resistance in southwest Burkina Faso: Bio-efficacy of LLINs in cone bioassays\n", + "\n", + "The low levels of mortality observed in cone bioassays in this study are similar to those reported previously in VK7, a neighbouring village to VK5, in the Vallee du Kou rice-growing region. However, whereas the current study found that exposure to the tops of the PermaNet 3.0 nets resulted in mortality levels exceeding the WHO threshold of 80%, equivalent bioassays conducted in the VK7 population in 2012 showed mortality of only 43%. Cone bioassays are not a reliable method of comparing the performance of LLINs containing different pyrethroids because of the inherent differences in extico-repellency within this class, which can affect exposure time (Siegert _et al._, 2009). In particular, cone tests may underestimate the performance of permethrin LLINs; this is indicated by comparison of the cone bioassay results in Fig. 3, in which the Olyset Net was found to induce considerably lower mortality than the PermaNet 2.0, although experimental hut results showed similar levels of mortality in huts with these two net types (Table S3).\n", + "\n", + "Fig. 3: Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (_P_ < 0.001), † (_P_ < 0.0001), n.s. (non-significant, \\(\\frac{1}{2}\\) (_P_ < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wicyclonlinelibrary.com].\n", + "\n", + "\n", + "Nevertheless, the results of these cone bioassays provide further evidence that resistance can be at least partially ameliorated by exposure to PBO.\n", + "\n", + "header: Experimental hut trials\n", + "\n", + "Each station consisted of six experimental huts built according to the West African style (WHO, 2013). The study had six arms that used, respectively, five different LLINs and one net with no insecticide treatment as a negative control (Table 1). The nets were obtained from the manufacturers and were unpacked and kept in the shade for 24 h, but not washed prior to testing. Two of the nets, the OlysetPlus and PermaNet 3.0, contain PBO, whereas the other three LLINs contain only pyrethroids. The LLINs were holed according to WHO standard procedures (WHO, 2013). A total of six holes (4 cm x 4 cm) per net were cut, two on each of the long sides and one on each of the short sides.\n", + "\n", + "Study participants (male sleepers) spent 6 nights per week under a net in an experimental hut from 20.00 hours to 05.00 hours, followed by 1 day of break. The sleepers were rotated through the six huts so that each sleeper spent 1 night per week under each net type. To complete a full Latin square rotation with all combinations of sleeper, net type and hut, the study ran over 36 days from 8 September to 22 October 2014.\n", + "\n", + "Each morning at 05.00 hours, mosquitoes were collected manually by the sleepers, with supervision, from under the net, inside the hut and on the exit veranda. The collected specimens were morphologically identified to genus and, where possible, to species level (Gillies & Coetzee, 1987), grouped according to their gonotrophic stage (blood-fed, unfed or gravid), and scored as dead or alive. Live mosquitoes were transferred to paper cups, provided with 10% sugar water and kept in the insectary described above for 24 h, after which delayed mortality was recorded. All specimens were stored on silica gel for further molecular analysis.\n", + "\n", + "Data analysis was performed in the open-source statistical software R Version 3.3.2 (R Development Core Team, 2011) using the libraries 'lme4' (Bates _et al._, 2012) and 'glmADMB' (Skaug _et al._, 2012) for generalized linear mixed models (GLMMs). Plots were then generated with the package 'ggplot2' (Wickham, 2009).\n", + "\n", + "In the statistical analysis of hut trial data, in order to increase the number of replicates, give more power and increase confidence in the analysis, data collected from both sites (Tengrela and VK5) were pooled and the following four outcomes for _An. coluzzii_ were compared between the LLINs and the untreated control net, as well as between the PBO and non-PBO nets from the same manufacturer: (a) deterrence (i.e. the reduction in hut entry relative to the control or non-PBO net); (b) induced exophily (i.e. the ratio of the odds of a mosquito being found in the veranda trap compared with the hut); (c) blood feeding inhibition (i.e. the ratio of the odds of blood\n", + "\n", + "fed vs. unfed mosquitoes), and (d) induced mortality [i.e. the ratio of the odds of dead vs. alive mosquitoes] (The original dataset for _An. gambiae s.l._ is supplied in Table S2.) Immediate mortality and mortality at 24 h post-collection were combined for the analysis. Deterrence was analysed as the ratio in total numbers between the treatment arms (or PBO net) vs. the control arm (or non-PBO net). The numbers of mosquitoes in the room and the veranda were combined and analysed using a GLMM with a negative binomial distribution and a log link function using the R function 'glmandmdb()' in the 'glmmADMB' package. In the model, the net type was the fixed effect term and random intercepts were introduced for the sleeper and the hut, and a random slope for the day depending on the location. For proportional outcomes of induced exophily, blood feeding inhibition and induced mortality, the negative binomial model was replaced by a GLMM with a binomial distribution and logit link function using the R function 'glmer()' in the 'lme4' package. In the models, in addition to the terms listed above, a random intercept was introduced for each observation to account for unexplained overdispersion. For statistical testing, the level of significance was set at \\(a\\) = 0.05.\n", + "\n", + "In addition to the ratios described above, averages (i.e. the modes) and 95% confidence intervals (CIs) of the crude values underlying the outcomes were computed by the same models as above but using the individual nets as the intercept. These corresponding crude values were: (a) entry rate (i.e. the number of mosquitoes entering a hut); (b) exit rate (i.e. the number of mosquitoes collected from the veranda trap; (c) blood feeding rate (i.e. the proportion of blood-fed mosquitoes), and (d) mortality rate (i.e. the proportion of dead mosquitoes at 24 h post-collection).\n", + "\n", + "The study participants were recruited from the local communities and gave informed consent. Ethical approval was obtained from the Ethical Committee for Health Research of the Ministry of Health and Ministry of Research in Burkina Faso (Deliberation No. 2013-07-057, 11 July 2013). Malaria chemotherapy was not offered to study participants in line with Ministry of Health recommendations. However, medical supervision was provided throughout the study and any malaria case was treated according to national requirements.\n", + "\n", + "header: Materials and methods\n", + "\n", + "The experimental hut studies were carried out at two field stations in southwest Burkina Faso: the first is located in the Vallee du Kou.5 (VK5) near Bobo-Dioulasso (11*39' N, 04*41' W) and belongs to the Institut de Recherche en Science de la Sante (IRSS)/Centre MURAZ, and the second is located at Tengrela (10*40' N, 04*50' W) near Banfora and is maintained by the Centre National de Recherche et de Formation sur le Paludisme (CNRFP). These two sites are separated by approximately 120 km. Previous surveys revealed _Anopheles coluzzii_ (formerly _Anopheles gambiae s.s._ M molecular form) to be the predominant _Anopheles_ species at both sites. High levels of resistance to both DDT and pyrethroids have been reported previously at both sites (Ngufor _et al._, 2014; Toe _et al._, 2015).\n", + "\n", + "header: Study sites: Characterization of mosquito populations\n", + "\n", + "_Anopheles gambiae s.l._ larvae were collected in Tengrela and VK5 and reared to adults in local insectaries (mean relative humidity: 75+- 10%; mean temperature: 27+- 2*C). To assess susceptibility to pyrethroids, batches of approximately 25 non-blood-fed _An. gambiae s.l._ females aged 3-5 days were exposed to papers treated with 0.75% permethrin or 0.05% deltamethrin. The papers and susceptibility test kits were purchased from the Universiti Sains Malaysia (Penang, Malaysia). In parallel bioassays, mosquitoes were exposed to papers treated with 4% PBO [prepared by the Liverpool School of Tropical Medicine (LSTM)] for 1 h before they were transferred to tubes containing either insecticide-treated papers or insecticide-free papers and exposed for a further 1 h. Knock-down was recorded at the end of exposure and mortality was recorded 24 h later.\n", + "\n", + "The bio-efficacy of the LLINS was tested using non-blood-fed mosquitoes aged 3-5 days from local larval collections, and from the Kisumu susceptible laboratory strain, using the WHO cone bioassay procedure (WHO, 2013). For each LLIN type, two unwashed nets were tested under insectary conditions. Ten mosquitoes per cone were exposed for 3 min to 30 cm x 30 cm net pieces sampled from the top, the short and the long sides of the net. During exposure, the set-up was kept at an angle of 45 degrees as recommended (Owusu & Muller, 2016). Knock-down and mortality were recorded at 60 min and 24 h after exposure, respectively. Conventional LLINs were compared with PBO LLINS using Fisher's exact test (2x2 contingency table, significance level of 0.05) (http://wwwgraphpadcom/quickcales/contingency2) (Roberts & Andre, 1994).\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}, \"Start_month\": {\"title\": \"Start Month\", \"description\": \"Numerical start month of the reporting period (some studies may report multiple time periods)\"}, \"Start_year\": {\"title\": \"Start Year\", \"description\": \"Reporting period start year (some studies may report on multiple time periods)\"}, \"End_month\": {\"title\": \"End Month\", \"description\": \"Numerical end month of the reporting period\"}, \"End_year\": {\"title\": \"End Year\", \"description\": \"Reporting period end year\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Burkina Faso\",\"Site\":\"Vallee du Kou 5\",\"Start_month\":9,\"Start_year\":2014,\"End_month\":10,\"End_year\":2014},\"S02\":{\"Study_type\":\"Hut trial\",\"Country\":\"Burkina Faso\",\"Site\":\"Tengrela\",\"Start_month\":9,\"Start_year\":2014,\"End_month\":10,\"End_year\":2014}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Concentration_initial\": {\"title\": \"Insecticide concentration (initial)\", \"description\": \"Enter the initial concentration of the insecticide(s) for net type at the time of distribution.\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"Net_age\": {\"title\": \"Net Age\", \"description\": \"Age of the net in months - if reported (some studies return to villages with nets given 1-2 years prior). When a range of net age's are given, use the midpoint in the range or the median in a distribution.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"Untreated net\",\"Net_holed\":0.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":null,\"Concentration_initial\":null},\"N02\":{\"Net_type\":\"Olyset Net\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"permethrin\",\"Concentration_initial\":\"8.6 x 10-4 kg\\/m2\"},\"N03\":{\"Net_type\":\"Olyset Plus\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"permethrin, PBO\",\"Concentration_initial\":\"8.6 x 10-4 kg\\/m2, 4.3 x 10-4 kg\\/m2\"},\"N04\":{\"Net_type\":\"PermaNet 2.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"5.5 x 10-5 kg\\/m2\"},\"N05\":{\"Net_type\":\"PermaNet 3.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin, PBO\",\"Concentration_initial\":\"2.8 g\\/kg, 4.0 g\\/kg, 25 g\\/kg\"},\"N06\":{\"Net_type\":\"Dawa Plus 2.0\",\"Net_holed\":6.0,\"Net_age\":\"NA\",\"pHI_category\":\"Good\",\"Insecticide\":\"deltamethrin\",\"Concentration_initial\":\"8.0 x 10-5 kg\\/m2\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Disclaimer\n", + "\n", + "The findings and conclusions in this manuscript are those of the authors and do not necessarily represent the views of the CDC. Use of trade names is for identification only and does not imply endorsement by the Centers for Disease Control and Prevention, the Public Health Service, or the US Department of Health and Human Services.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "Data supporting the conclusions of this article are included within the article.\n", + "\n", + "header: Abbreviations\n", + "\n", + "DDT: Dichroo-diphenyl-trichloroethane; ELISA: Enzyme-linked immunosorbent Assay; IRS: Indoor residual spray; ITS: Insecticide-treated net; PBO: Piperonyl butoxide; PCR Polymerase chain reaction; WHO: World Health Organization; WHORES: World Health Organization Pesticide Evaluation Scheme.\n", + "\n", + "header: Use of nets for the study\n", + "\n", + "During the study, two types of nets (PermaNet(r) 2.0 and PermaNet(r) 3.0) with and without IRS were assessed. Moreover, an untreated net was used with IRS and untreated net without IRS was used as a negative control. Both PermaNet(r) 2.0 and PermaNet(r) 3.0 nets are treated with the pyrethroid deltamethrin, but PermaNet 3.0 has also PBO synergist. During the study, each ITN in each hut was replaced by a new replicate net every 3 weeks since the trial had no replicate huts. Eighteen holes (4 cm x 4 cm) were cut in each net purposefully to simulate a torn net [11].\n", + "\n", + "header: Indoor residual spraying (IRS)\n", + "\n", + "Actcllic(r) 300CS, a pirimiphos-methyl-based IRS insecticide, was applied to the three IRS treatment huts 1 week before the start of the trial. Pirimiphos-methyl is an organophosphate insecticide being used for IRS by the malaria elimination program of Ethiopia. During the spraying, filter papers were affixed to the wall surfaces at three heights (high, middle and low) to ensure the application was properly and uniformly applied and determine the concentration of the applied insecticide. The spray operators were trained on the spraying techniques and the wall surfaces of huts were lined with chalk to properly maintain the swath and avoid overlap following the WHO protocol.\n", + "\n", + "header: Abstract\n", + "\n", + "An experimental hut study evaluating the impact of pyrethroid-only and PBO nets alone and in combination with pirrimiphos-methyl-based IRS in Ethiopia\n", + "\n", + "Delenasaw Yevhalaw, Meshesha Balkew, Endalew Zermene, Sheleme Chibsa, Peter Mumba, Cecilia Flatley, Akiliu Seyoum, Melissa Yoshimizu, Sarah Zohdy, Dereje Dengela\n", + "\n", + "\n", + "\n", + "Pyrethroid resistance observed in populations of malaria vectors is widespread in Ethiopia and could potentially compromise the effectiveness of insecticide-based malaria vector control interventions. In this study, the impact of combining indoor residual spraying (IRS) and insecticide-treated nets (ITNs) on mosquito behaviour and mortality was evaluated using experimental huts.\n", + "\n", + "header: Wall bioassay\n", + "\n", + "Cone bioassays were conducted twice during the trial period to assess the bio-efficacy of Actclic 300CS. At each time point, three cones were fixed to the wall surfaces at three heights from the ground (high 160 cm, medium 100 cm and low 40 cm) of each hut and ten mosquitoes were used per cone with a total of 30 mosquitoes per hut, for each of the three sprayed huts and a control hut (120 mosquitoes in total). Mosquitoes were exposed for 30 min after which immediate knockdown was recorded and mortality was recorded after a 24 h holding period. Non-blood-fed, 3-5 day old adult female _Anopheles gambiae_ sensu lato (s.l.) were used for bioassays.\n", + "\n", + "The first cone bioassay was conducted 3 weeks after spray using a confirmed susceptible _An. arabiensis_ strain from Sekoru Insectary without pre-exposure to PBO synergist. The second bioassay was conducted at the end of the trial (10 weeks after spray). In the second bioassay, both susceptible _An. arabiensis_ laboratory strain from Sekoru Insectary and wild _An. gambiae_ s.l. were used. The assay was carried out with and without PBO pre-exposure for both strains. Wild populations of _An. gambiae_ s.l. used for the bioassays were raised from larvae and pupae collected from semi-permanent and permanent breeding habitats around Wolfkite area, central Ethiopia. They were reared to adults at Asendabo Field Insectary. Mosquitoes were exposed to papers treated with PBO (2%) in a WHO cylinder for 1 h.\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Background\n", + "\n", + "Malaria is an important public health and socio-economic problem in Ethiopia. The main malaria vector in Ethiopia is _Anopheles arabiensis,_ while _Anopheles pharoetiss, Anopheles funestus_ and _Anopheles nili_ play a secondary role in malaria transmission. _Anopheles stephensi,_ a common and efficient urban malaria vector in Southeast Asia and the Mediterranean Region, has also recently been reported in Ethiopia and neighboring countries including Djibouti and Sudan [1]. There is widespread resistance to dichloro-diphenyl-trichloroethane (DDT) and pyrethroids in _An. arabiensis_ and resistance has also been detected to organophosphates in some populations. _Anopheles pharoensis_ was also reported to be highly resistant to DDT [2]. The _kdr_ mutation (L1014F) has been detected in _An. arabiensis_ from many sites, while _ace-1R_ and _kdr_ (L1014S) were not detected in all populations [3, 4, 5]. Bottle bioassay tests with _An. arabiensis_ populations from all surveyed areas of Ethiopia found resistance to both permethrin and deltamethrin. However, susceptibility to permethrin and deltamethrin was restored following pre-exposure of mosquitoes to the synergist piperonyl butoxide (PBO), indicating involvement of P450-based metabolic resistance mechanisms in the Ethiopian populations of _An. arabiensis_[6].\n", + "\n", + "Indoor residual spraying (IRS) and insecticide-treated nets (ITNs) are the main vector control interventions in Ethiopia. Ethiopia has a long history of IRS. It began spraying DDT in the late 1950s during the Malaria Eradication Programme and malathion was also used for IRS in a few areas until 2010. Deltamethrin, a pyrethroid insecticide, was used for IRS from 2009 to 2013, and since then, bendiocarb and propoxur (carbamate insecticides) and pirimihos-methyl (organophosphate insecticide) have been used for IRS in Ethiopia. The PMI VectorLink Ethiopia Project piloted the clothianidin (neonicotinoid)-based insecticides, SumiShield(r) 50WG and Fludora Fusion WP-SB, in 2020 in Menge District in the Benishangul Gumuz Region. Insecticide-treated nets have been widely distributed to households in malaria risk areas every 3 years mainly through the health extension programme [7].\n", + "\n", + "Recent studies in Tanzania showed that the impact of PBO nets could be comparable to the impact of pyrethroid-only nets when combined with IRS, and that there was no significant difference in malaria prevalence between the pyrethroid-only net + IRS and PBO net + IRS study arms [8]. This is of interest for malaria control operations in Ethiopia, as such data can inform future decisions on ITN procurements and strategic\n", + "distribution, as well as insecticide choices for IRS, which may reduce overall malaria vector control costs. In addition, it is also important to understand possible antagonistic effects of PBO and pirimiphos-methyl, as suggested by the World Health Organization (WHO), before recommending the combined use of PBO nets and pirimiphos methyl IRS for malaria control in Ethiopia.\n", + "\n", + "This study aimed at assessing the impact of the combination of currently available vector control tools (IRS, pyrethroid-only nets, and PBO nets) on mosquito behaviour, mortality and the possible antagonistic effect of PBO and pirimiphos-methyl using experimental hurts in Asendabo, Ethiopia. The hypothesis for the Ethiopia context was that the use of PBO nets in combination with IRS would better control malaria vectors than PBO nets alone and that the use of IRS in combination with pyrethroid-only nets would better control malaria vectors than pyrethroid-only nets alone.\n", + "\n", + "header: Competing interests\n", + "\n", + "We declare that we have no competing interests.\n", + "\n", + "header: Results\n", + "\n", + "The personal protection rate of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 33.3% and 50%, respectively. The mean killing effect of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 2% and 49%, respectively. Huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone demonstrated significantly higher excito-repellency than the control hut. However, mosquito mortality in the hut with IRS + untreated net, hut with IRS + PermaNet(r) 2.0 and hut with IRS + PermaNet(r) 3.0 were not significantly different from each other (p > 0.05). Additionally, pre-exposure of both the susceptible _Anopheles arabiensis_ laboratory strain and wild _Anopheles gambiae_ sensu late to PBO in the cone bioassay tests of Actellite 300CS sprayed surfaces did not reduce mosquito mortality when compared to mortality without pre-exposure to PBO.\n", + "\n", + "header: Conclusion\n", + "\n", + "Mosquito mortality rates from the huts with IRS alone were similar to mosquito mortality rates from the huts with the combination of vector control intervention tools (IRS + ITNs) and mosquito mortality rates from huts with PBO nets alone were significantly higher than huts with pyrethroid-only nets. The findings of this study help inform studies to be conducted under field condition for decision-making for future selection of cost-effective vector control intervention tools.\n", + "\n", + "header: Background: Methods\n", + "\n", + "A Latin Square Design was employed using six experimental huts to collect entomological data. Human volunteers slept in huts with different types of nets (pyrethroid-only net, PBO net, and untreated net) either with or without IRS (Actallic 300CS). The hut with no IRS and an untreated net served as a negative control. The study was conducted for a total of 54 nights. Both alive and dead mosquitoes were collected from inside nets, in the central rooms and verandah the following morning. Data were analysed using Stata/SE 14.0 software package (College Station, TX, USA).\n", + "\n", + "header: Conclusion\n", + "\n", + "In this study, significantly higher mosquito mortality rates were recorded from treatment huts with IRS than huts with ITNs alone, regardless of net type. Interestingly, the hut with IRS + untreated net had similar mosquito mortality rates as huts with combinations of vector control tools (IRS + pyrethroid-only nets and IRS + PBO nets). Moreover, immediate mortality rate of mosquitoes in IRS + untreated net was significantly higher than PermaNet 2.0 and PermaNet 3.0 nets. These suggest that IRS alone provides the greatest vector control impact. Indoor residual spraying alone or in combination with ITNs offered significantly higher personal protection against mosquito bites than the control hut. Moreover, the proportion of mosquito mortality was significantly higher in huts with PBO nets than huts with pyrethroid-only nets, but remained significantly lower than the huts that received IRS. In general, the findings of this study revealed that IRS alone was as efficacious as combinations of vector tools (IRS + ITNs) for malaria vector control at least over the 9-week study period. Field studies to further assess the impact of combinations of vector tools on malaria vector control in different eco-epidemiological settings are also warranted. This study \n", + "provides additional data for considering future selection of the most appropriate vector control tools for improved malaria vector control and management of insecticide resistance. This study also indicated that there was no antagonistic effect between PBO and IRS with pirimib-phos-methyl. However, further studies may be needed to determine if there are antagonistic effects in large scale IRS applications to evaluate the efficacy of PBO vs. IRS against different resistant vector populations in Ethiopia for decision-making to deploy either PBO nets or pirimib-phos-based IRS intervention.\n", + "\n", + "header: Results\n", + "\n", + "Overall, a total of 386 mosquitoes, comprising 235 _Anopheles_ spp. (60.9%) and 151 _Culex_ spp. (39.1%), were collected during the study. Of the _Anopheles_ mosquitoes, _An. gambiae_ s.l, _An. pharoensis_ and _Anopheles__custani_ accounted for 228 (97.0%), 6 (2.6%) and 1 (0.4%), respectively. The proportion of the total _Anopheles_ mosquitoes collected from each hut is presented in Fig. 1. There were no significant differences in mean percentage of _Anopheles_ mosquitoes between the different treatment and control huts (p > 0.05).\n", + "\n", + "An immediate mosquito mortality of 100% was recorded from all three huts with IRS throughout the study period. The mean immediate mosquito mortality rates from the control, PermaNet(r) 2.0 and PermaNet(r) 3.0 huts were 13.3% (95% CI 3-23%), 20.0% (95% CI 6-33%) and 70.0% (95% CI 55-84%), respectively (Fig. 2). The immediate mosquito mortality rate from the hut with IRS + untreated net was significantly higher than the PermaNet(r) 3.0 hut (p < 0.001). Similarly, the immediate mosquito mortality rate from the hut with PermaNet(r) 3.0 was significantly higher than that from the control hut (p < 0.001) as well as the PermaNet(r) 2.0 (p < 0.001) hut. The mosquito mortality rate from the PermaNet(r) 2.0 hut was not significantly different from that of the control hut (p = 0.4). On average the killing effect of PermaNet(r) 2.0 and PermaNet(r) 3.0 compared to the untreated net were 2.2% and 48.9%, respectively. The killing effects in the huts with PermaNet(r) 2.0 and PermaNet(r) 3.0 increased to 60.0% and 75.5% when combined with IRS. Delayed mosquito mortality rates of 14.3% and 41.7% were recorded from huts with PermaNet(r) 2.0 and PermaNet(r) 3.0, respectively.\n", + "\n", + "Of the 50 sub-samples of _An. gambiae_ s.l. analysed using species-specific PCR, 46 (92%) were identified as _An. arabiensis_ and four mosquito samples failed to amplify. The blood-feeding rate of the _Anopheles_\n", + "\n", + "Fig. 1: Proportion of mosquitoes collected that were _Anopheles_ spp. in each experimental hut, Asendabo, Ethiopia. Control is no IRS and untreated net \n", + "collected from each of the huts is presented in Fig. 3. Overall, 26 of the _Anopheles_ (11.1%) were blood-fed upon collection. Of the fed mosquitoes, human, bovine and mixed human/bovine blood were detected in 14 (53.9%), 2 (7.7%), 5 (19.2%) of the specimens, respectively. Blood meals from the remaining 5 (19.2%) of the specimens were unidentified. The overall proportion of human blood-fed _Anopheles_ was 73.1% (n = 19). The personal protection rates of PermaNet(r) 2.0 and PermaNet(r) 3.0 nets were 33.3% and 50%, respectively. When combined with IRS, the personal protection rate of PermaNet(r) 2.0 increased to 83.3% while the personal protection rate of PermaNet(r) 2.0 decreased to 83.3%.\n", + "\n", + "\n", + "\n", + "The personal protection rate of PermaNet(r)\n", + "\n", + "\n", + "PernaNet(r) 3.0 remained the same (50%). The proportions of human blood-fed _Anopheles_ collected from the control, PernaNet(r) 2.0, PernaNet(r) 3.0 and combined IRS-treated huts were 13.3% (95% CI 3.4-23.3), 11.4% (95% CI 0.9-22.0), 7.5% (95% CI 0.0-15.7) and 5.2% (95% CI 1.2-9.3), respectively.\n", + "\n", + "Overall, the majority of _Anopheles_ were collected from the rooms of the huts. The proportions of _Anopheles_ collected from the verandah of the IRS-treated and the control huts were 16.5% and 13.3%, respectively (Fig. 4). The proportion of _Anopheles_ collected from verandah of a hut with PernaNet(r) 2.0 was significantly higher than the proportion of _Anopheles_ collected from the control hut (p = 0.02).\n", + "\n", + "The mean knockdown rates of the susceptible _An. arabiensis_ laboratory strain in the bioassays conducted 3 weeks post-spray were 20.2% and 2.9% in the IRS-treated and control huts, respectively. The mean 24 h mortality rates from IRS-treated and control huts were 100% and 2.9%, respectively (Fig. 5).\n", + "\n", + "The combined mean 30 min knockdown rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. exposed to IRS-treated huts 10 weeks post-spray, with and without pre-exposure to PBO, was 1.1% (Fig. 6). The 24 h mortality rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. at 10 weeks post-spray which were exposed to IRS-treated hut wall surfaces were 100%, irrespective of pre-exposure of mosquitoes to PBO.\n", + "\n", + "header: Blood meal host source analysis and mosquito identification\n", + "\n", + "All the fed mosquitoes collected from the different huts were assayed to determine the blood meal host source using direct ELISA [13]. Moreover, a sub-sample of _An. gambiae_ s.l. was also molecularly identified to species using species-specific PCR following established protocol [14].\n", + "\n", + "header: Data analysis\n", + "\n", + "Data from the five treatment huts were compared with data from the control hut to determine the insecticidal effects on the variables listed above.\n", + "\n", + "Personal protection, killing effect, and exophily were estimated using the following formulas [9, 11].\n", + "\n", + "\\[\\text{Personal protection }(\\%) = 100 \\times (B_{u} - B_{t} )/B_{u} ;\\]\n", + "\n", + "where \\(B_{t}\\) is the total number of freshly blood-fed mosquitoes in the huts with treated nets. \\(B_{u}\\) is the total number of freshly blood-fed mosquitoes in the huts with untreated nets.\n", + "\n", + "\\[\\text{Killing effect }(\\%) = 100 \\times (K_{t} - K_{u} )/T_{u} ;\\]\n", + "\n", + "where \\(K_{t}\\) is number of mosquitoes killed (immediate) in the huts with treated nets. \\(K_{u}\\) is number of mosquitoes killed (immediate) in the huts with untreated nets. \\(T_{u}\\) is the total number of mosquitoes collected from the huts with untreated nets.\n", + "\n", + "\n", + "Exophily (%) = (E_v/Et) x 100;\n", + "\n", + "where Ev is the number of mosquitoes found in verandah. Et is the total number of mosquitoes found inside the hut and verandah\n", + "\n", + "For all three parameters, mosquito entry was estimated by adding the number of dead and alive mosquitoes observed inside the hut and the verandah. Estimates of personal protection and killing effect were determined using mosquitoes from all collection nights.\n", + "\n", + "To test differences in mean mosquito density in each of the treatment huts, ANOVA was employed after log-transformation of non-normal distributed mosquito count data. T-tests were employed to determine the differences in mean proportions of blood-fed mosquitoes and mosquitoes exiting early from the different test huts and control hut.\n", + "\n", + "In all analyses, the hut with the untreated net and without IRS was used as a negative control, but comparisons were made between all treatment groups. In all analyses, individual huts and sleepers were included in the models as random effects.\n", + "\n", + "header: Discussion\n", + "\n", + "Malaria vector control interventions have been intensified over the last decade in Ethiopia resulting in remarkable progress, with a reduction in children under-five mortality rates from 123 deaths per 1000 live births in 2005 to 55 deaths per 1000 live births in 2019 [15]. The vector control activities including mass-distribution/replacement of ITNs every 3 years in accordance with WHO recommendations and deployment of IRS in targeted areas appear to have played vital roles in the successes obtained in malaria control in Ethiopia [16]. However, malaria still remains a public health challenge in the country, where an estimated 52% of the population lives in areas at risk of malaria. With the successes gained in malaria control, a national malaria elimination goal is set for 2030 [17]. This study evaluated the impact of combining currently available vector control tools on mosquito behaviour and mortality.\n", + "\n", + "Compared to PernaNet(r) 2.0, PernaNet(r) 3.0 is impregnated with a higher concentration of deltamethrin and the roof panel is treated with both deltamethrin and PBO. The higher killing effect of PernaNet(r) 3.0 compared to PernaNet(r) 2.0 in this study could be attributed to the presence of the PBO synergist on the roof panel of the net and/or higher dosage of deltamethrin in the net. The synergist PBO works to inhibit P450 detoxification of pyrethroid insecticides and can result in partial or complete restoration of susceptibility to certain pyrethroids, such as deltamethrin, hence enhancing efficacy of the insecticides [18]. The role of PBO in affecting susceptibility in both wild and laboratory strain mosquitoes exposed to Actellite(r) 300CS\n", + "\n", + "Fig. 4: Proportion of _Anopheles_ collected from inside nets, rooms and verandahs of different experimental huts, Asendabo, Ethiopia \n", + "sprayed walls could not be determined as mortality rates in all IRS treatment huts were 100%. PBO nets have been shown to provide high levels of protection against _An. gambiae_ in a recent experimental hut trial in Cote d'Ivoire [19]. Moreover, the improved protective role of PBO nets on malaria prevalence was also documented in Uganda [20]. Personal protective efficacy of PBO nets may also last longer compared to the standard nets [21]. PBO nets are particularly important as a malaria control tool in areas where the protection against PBO is not a viable alternative to the standard nets.\n", + "\n", + "Fig. 5: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain following wall bioassays 3 weeks after ActeIlic 300CS spraying, Asendabo, Ethiopia\n", + "\n", + "Fig. 6: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain and wild _An. gambiae_ s.l. (with and without pre-exposure to PBO) following wall bioassays 10 weeks after IRS using ActeIlic 300CS, Asendabo, Ethiopia \n", + "pyrethroid resistance is high in the vector populations [22] and is, therefore, under consideration for more widespread distribution in Ethiopia. Despite these added advantages of PBO nets, the cost is currently higher than pyrethroid nets which may limit their wider use in malaria vector control in malaria endemic areas. Additionally, this study provides an example of a setting with high levels of pyrethroid resistance where PBO nets may not be sufficient.\n", + "\n", + "The proportion of _Anopheles_ retrieved from the verandah of huts with both PermaNet 2.0 and PermaNet 3.0 was higher than those from the verandah of the control hut. Huts with PermaNet 2.0 induced significantly higher exito-repellency compared to control huts. Insecticides often induce toxicity to mosquitoes. However, the non-toxic 'exito-repellent' effects of insecticides are often less understood. Pyrethroid and organophosphate insecticides are also known to have these non-killing effects. The impact of the non-killing effects of the insecticides on the risk of malaria is not clearly understood. Though exito-repellency appears to reduce indoor human-vector contact, it may on the contrary enhance risk of outdoor mosquito biting [23].\n", + "\n", + "The role of IRS as a key malaria vector control intervention tool is evident. Immediate mortality was observed in mosquitoes collected from the three huts sprayed with Actellic(r) 300CS up to the end of the study at 10 weeks post-spray. The proportion of blood-fed _Anopheles_ was significantly lower in the IRS-treated huts compared to the control hut. This could be due to the fast-acting nature of Actellic(r) 300CS insecticide with both contact and fumigant effects. This shows the potential of Actellic(r) 300CS as an insecticide of choice for IRS in areas where the local vector population is susceptible to the insecticide. _Anopheles arabiensis_ is susceptible to pirimibos-methyl in most parts of Ethiopia [10, 24]. Some earlier studies conducted in Ethiopia showed the effectiveness of combining IRS with ITNs compared to ITNs alone in suppressing vector populations [25]. Added benefits of combining IRS and ITNs in malaria prevention was also reported from other areas in sub-Saharan Africa [26-28]. In contrast, limited or no added benefit of combining IRS with ITNs as compared to ITNs alone has been reported elsewhere [29, 30]. This inconsistency could be attributed to differences in the intensity of malaria transmission and insecticide resistance of the local vector populations. The impact of the combined use of available vector control interventions appears to be more pronounced when applied in high transmission areas, and where the local vector populations are susceptible to the insecticide used for the IRS component [25].\n", + "\n", + "The importance of combining IRS and ITNs for malaria vector control is believed partly to come from the low or inconsistent utilization of ITNs by users and short residual efficacy of IRS insecticides [31, 32]. In Ethiopia, household surveys have shown approximately 50% of children under five and pregnant women use their nets with geographic variation [33]. The gap often created as a result of low utilization of ITNs may be complemented with IRS. ITN utilization and care depends on personal decisions and behavior [34]. However, once properly implemented, IRS rapidly suppresses local vector populations with no additional behaviors required from the residents, hence reducing malaria incidence [35]. However, effectiveness of IRS for malaria vector control is highly affected by both physiological and behavioral resistance of the local vector population to the insecticide [36], apart from operational factors and higher costs.\n", + "\n", + "As the study was conducted during the dry season of the year, the mosquito population density was not high and, therefore, limits the generalizability of the results. However, the findings of this study could provide preliminary information for vector control programs for the rational choice of future vector control intervention tools. In addition, combining indoor residual spraying using pirimibos-methyl with PBO nets has been reported to be antagonistic in some studies, but a negative interaction or antagonism between PBO and pirimibos-methyl was not detected in this study.\n", + "\n", + "header: Variables\n", + "\n", + "Four study outcomes measured were:\n", + "\n", + "1. Deterrence--the reduction in hut entry by mosquitoes in treatment huts relative to the control hut (hut with untreated net and no IRS).\n", + "2. Exophily--the proportion of mosquitoes found resting on the walls of the verandah.\n", + "3. Blood-feeding inhibition--the reduction in blood-feeding in treatment huts in comparison with control hut (hut with untreated net and no IRS).\n", + "4. Immediate and delayed mortality--the proportion of mosquitoes entering the hut that were dead in the morning (immediate mortality) or after being caught alive and held for 24 h with access to a sugar solution (delayed mortality).\n", + "\n", + "header: Methods\n", + "\n", + "The study was conducted using six experimental huts located at Asendabo, Jimma Zone, Oromia Regional State, Ethiopia, located between latitudes 7\" 42' 50\" N and 07\" 53' 50\" N and longitudes 37\" 11' 22\" E and 37\" 20' 36\" E, at altitudes ranging from 1672 to 1864 m above sea level. The huts were used previously for evaluation of vector control tools [9], but the roofs, walls, floors, ceilings and verandahs of each hut were completely renovated for use in this study. The huts are located approximately 0.3 km from the reservoir shore of Gilgel Gibe hydroelectric power dam in Nada District, Oromia Regional State, Ethiopia. Earlier work showed that _An. arabiensis_ population from the study area was resistant to DDT, pyrethroids and malathion, while they were susceptible to primiphos-methyl and some of the carbamates used in malaria vector control [10].\n", + "\n", + "The six treatments in this study included:\n", + "\n", + "1. Control hut (no IRS, untreated net only).\n", + "2. Hut with PermaNet(r) 2.0 (deltamethrin) only (no IRS).\n", + "3. Hut with PermaNet(r) 3.0 (deltamethrin with PBO) only (no IRS).\n", + "4. Hut sprayed with Actcllic 300CS (1 g/m2) and untreated net.\n", + "5. Hut sprayed with Actcllic 300CS (1 g/m2) and PermaNet(r) 2.0.\n", + "6. Hut sprayed with Actcllic 300CS (1 g/m2) and PermaNet(r) 3.0.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Disclaimer\n", + "\n", + "The findings and conclusions in this manuscript are those of the authors and do not necessarily represent the views of the CDC. Use of trade names is for identification only and does not imply endorsement by the Centers for Disease Control and Prevention, the Public Health Service, or the US Department of Health and Human Services.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "Data supporting the conclusions of this article are included within the article.\n", + "\n", + "header: Indoor residual spraying (IRS)\n", + "\n", + "Actcllic(r) 300CS, a pirimiphos-methyl-based IRS insecticide, was applied to the three IRS treatment huts 1 week before the start of the trial. Pirimiphos-methyl is an organophosphate insecticide being used for IRS by the malaria elimination program of Ethiopia. During the spraying, filter papers were affixed to the wall surfaces at three heights (high, middle and low) to ensure the application was properly and uniformly applied and determine the concentration of the applied insecticide. The spray operators were trained on the spraying techniques and the wall surfaces of huts were lined with chalk to properly maintain the swath and avoid overlap following the WHO protocol.\n", + "\n", + "header: Wall bioassay\n", + "\n", + "Cone bioassays were conducted twice during the trial period to assess the bio-efficacy of Actclic 300CS. At each time point, three cones were fixed to the wall surfaces at three heights from the ground (high 160 cm, medium 100 cm and low 40 cm) of each hut and ten mosquitoes were used per cone with a total of 30 mosquitoes per hut, for each of the three sprayed huts and a control hut (120 mosquitoes in total). Mosquitoes were exposed for 30 min after which immediate knockdown was recorded and mortality was recorded after a 24 h holding period. Non-blood-fed, 3-5 day old adult female _Anopheles gambiae_ sensu lato (s.l.) were used for bioassays.\n", + "\n", + "The first cone bioassay was conducted 3 weeks after spray using a confirmed susceptible _An. arabiensis_ strain from Sekoru Insectary without pre-exposure to PBO synergist. The second bioassay was conducted at the end of the trial (10 weeks after spray). In the second bioassay, both susceptible _An. arabiensis_ laboratory strain from Sekoru Insectary and wild _An. gambiae_ s.l. were used. The assay was carried out with and without PBO pre-exposure for both strains. Wild populations of _An. gambiae_ s.l. used for the bioassays were raised from larvae and pupae collected from semi-permanent and permanent breeding habitats around Wolfkite area, central Ethiopia. They were reared to adults at Asendabo Field Insectary. Mosquitoes were exposed to papers treated with PBO (2%) in a WHO cylinder for 1 h.\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Abbreviations\n", + "\n", + "DDT: Dichroo-diphenyl-trichloroethane; ELISA: Enzyme-linked immunosorbent Assay; IRS: Indoor residual spray; ITS: Insecticide-treated net; PBO: Piperonyl butoxide; PCR Polymerase chain reaction; WHO: World Health Organization; WHORES: World Health Organization Pesticide Evaluation Scheme.\n", + "\n", + "header: Background\n", + "\n", + "Malaria is an important public health and socio-economic problem in Ethiopia. The main malaria vector in Ethiopia is _Anopheles arabiensis,_ while _Anopheles pharoetiss, Anopheles funestus_ and _Anopheles nili_ play a secondary role in malaria transmission. _Anopheles stephensi,_ a common and efficient urban malaria vector in Southeast Asia and the Mediterranean Region, has also recently been reported in Ethiopia and neighboring countries including Djibouti and Sudan [1]. There is widespread resistance to dichloro-diphenyl-trichloroethane (DDT) and pyrethroids in _An. arabiensis_ and resistance has also been detected to organophosphates in some populations. _Anopheles pharoensis_ was also reported to be highly resistant to DDT [2]. The _kdr_ mutation (L1014F) has been detected in _An. arabiensis_ from many sites, while _ace-1R_ and _kdr_ (L1014S) were not detected in all populations [3, 4, 5]. Bottle bioassay tests with _An. arabiensis_ populations from all surveyed areas of Ethiopia found resistance to both permethrin and deltamethrin. However, susceptibility to permethrin and deltamethrin was restored following pre-exposure of mosquitoes to the synergist piperonyl butoxide (PBO), indicating involvement of P450-based metabolic resistance mechanisms in the Ethiopian populations of _An. arabiensis_[6].\n", + "\n", + "Indoor residual spraying (IRS) and insecticide-treated nets (ITNs) are the main vector control interventions in Ethiopia. Ethiopia has a long history of IRS. It began spraying DDT in the late 1950s during the Malaria Eradication Programme and malathion was also used for IRS in a few areas until 2010. Deltamethrin, a pyrethroid insecticide, was used for IRS from 2009 to 2013, and since then, bendiocarb and propoxur (carbamate insecticides) and pirimihos-methyl (organophosphate insecticide) have been used for IRS in Ethiopia. The PMI VectorLink Ethiopia Project piloted the clothianidin (neonicotinoid)-based insecticides, SumiShield(r) 50WG and Fludora Fusion WP-SB, in 2020 in Menge District in the Benishangul Gumuz Region. Insecticide-treated nets have been widely distributed to households in malaria risk areas every 3 years mainly through the health extension programme [7].\n", + "\n", + "Recent studies in Tanzania showed that the impact of PBO nets could be comparable to the impact of pyrethroid-only nets when combined with IRS, and that there was no significant difference in malaria prevalence between the pyrethroid-only net + IRS and PBO net + IRS study arms [8]. This is of interest for malaria control operations in Ethiopia, as such data can inform future decisions on ITN procurements and strategic\n", + "distribution, as well as insecticide choices for IRS, which may reduce overall malaria vector control costs. In addition, it is also important to understand possible antagonistic effects of PBO and pirimiphos-methyl, as suggested by the World Health Organization (WHO), before recommending the combined use of PBO nets and pirimiphos methyl IRS for malaria control in Ethiopia.\n", + "\n", + "This study aimed at assessing the impact of the combination of currently available vector control tools (IRS, pyrethroid-only nets, and PBO nets) on mosquito behaviour, mortality and the possible antagonistic effect of PBO and pirimiphos-methyl using experimental hurts in Asendabo, Ethiopia. The hypothesis for the Ethiopia context was that the use of PBO nets in combination with IRS would better control malaria vectors than PBO nets alone and that the use of IRS in combination with pyrethroid-only nets would better control malaria vectors than pyrethroid-only nets alone.\n", + "\n", + "header: Abstract\n", + "\n", + "An experimental hut study evaluating the impact of pyrethroid-only and PBO nets alone and in combination with pirrimiphos-methyl-based IRS in Ethiopia\n", + "\n", + "Delenasaw Yevhalaw, Meshesha Balkew, Endalew Zermene, Sheleme Chibsa, Peter Mumba, Cecilia Flatley, Akiliu Seyoum, Melissa Yoshimizu, Sarah Zohdy, Dereje Dengela\n", + "\n", + "\n", + "\n", + "Pyrethroid resistance observed in populations of malaria vectors is widespread in Ethiopia and could potentially compromise the effectiveness of insecticide-based malaria vector control interventions. In this study, the impact of combining indoor residual spraying (IRS) and insecticide-treated nets (ITNs) on mosquito behaviour and mortality was evaluated using experimental huts.\n", + "\n", + "header: Use of nets for the study\n", + "\n", + "During the study, two types of nets (PermaNet(r) 2.0 and PermaNet(r) 3.0) with and without IRS were assessed. Moreover, an untreated net was used with IRS and untreated net without IRS was used as a negative control. Both PermaNet(r) 2.0 and PermaNet(r) 3.0 nets are treated with the pyrethroid deltamethrin, but PermaNet 3.0 has also PBO synergist. During the study, each ITN in each hut was replaced by a new replicate net every 3 weeks since the trial had no replicate huts. Eighteen holes (4 cm x 4 cm) were cut in each net purposefully to simulate a torn net [11].\n", + "\n", + "header: Results\n", + "\n", + "The personal protection rate of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 33.3% and 50%, respectively. The mean killing effect of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 2% and 49%, respectively. Huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone demonstrated significantly higher excito-repellency than the control hut. However, mosquito mortality in the hut with IRS + untreated net, hut with IRS + PermaNet(r) 2.0 and hut with IRS + PermaNet(r) 3.0 were not significantly different from each other (p > 0.05). Additionally, pre-exposure of both the susceptible _Anopheles arabiensis_ laboratory strain and wild _Anopheles gambiae_ sensu late to PBO in the cone bioassay tests of Actellite 300CS sprayed surfaces did not reduce mosquito mortality when compared to mortality without pre-exposure to PBO.\n", + "\n", + "header: Conclusion\n", + "\n", + "In this study, significantly higher mosquito mortality rates were recorded from treatment huts with IRS than huts with ITNs alone, regardless of net type. Interestingly, the hut with IRS + untreated net had similar mosquito mortality rates as huts with combinations of vector control tools (IRS + pyrethroid-only nets and IRS + PBO nets). Moreover, immediate mortality rate of mosquitoes in IRS + untreated net was significantly higher than PermaNet 2.0 and PermaNet 3.0 nets. These suggest that IRS alone provides the greatest vector control impact. Indoor residual spraying alone or in combination with ITNs offered significantly higher personal protection against mosquito bites than the control hut. Moreover, the proportion of mosquito mortality was significantly higher in huts with PBO nets than huts with pyrethroid-only nets, but remained significantly lower than the huts that received IRS. In general, the findings of this study revealed that IRS alone was as efficacious as combinations of vector tools (IRS + ITNs) for malaria vector control at least over the 9-week study period. Field studies to further assess the impact of combinations of vector tools on malaria vector control in different eco-epidemiological settings are also warranted. This study \n", + "provides additional data for considering future selection of the most appropriate vector control tools for improved malaria vector control and management of insecticide resistance. This study also indicated that there was no antagonistic effect between PBO and IRS with pirimib-phos-methyl. However, further studies may be needed to determine if there are antagonistic effects in large scale IRS applications to evaluate the efficacy of PBO vs. IRS against different resistant vector populations in Ethiopia for decision-making to deploy either PBO nets or pirimib-phos-based IRS intervention.\n", + "\n", + "header: Conclusion\n", + "\n", + "Mosquito mortality rates from the huts with IRS alone were similar to mosquito mortality rates from the huts with the combination of vector control intervention tools (IRS + ITNs) and mosquito mortality rates from huts with PBO nets alone were significantly higher than huts with pyrethroid-only nets. The findings of this study help inform studies to be conducted under field condition for decision-making for future selection of cost-effective vector control intervention tools.\n", + "\n", + "header: Competing interests\n", + "\n", + "We declare that we have no competing interests.\n", + "\n", + "header: Blood meal host source analysis and mosquito identification\n", + "\n", + "All the fed mosquitoes collected from the different huts were assayed to determine the blood meal host source using direct ELISA [13]. Moreover, a sub-sample of _An. gambiae_ s.l. was also molecularly identified to species using species-specific PCR following established protocol [14].\n", + "\n", + "header: Results\n", + "\n", + "Overall, a total of 386 mosquitoes, comprising 235 _Anopheles_ spp. (60.9%) and 151 _Culex_ spp. (39.1%), were collected during the study. Of the _Anopheles_ mosquitoes, _An. gambiae_ s.l, _An. pharoensis_ and _Anopheles__custani_ accounted for 228 (97.0%), 6 (2.6%) and 1 (0.4%), respectively. The proportion of the total _Anopheles_ mosquitoes collected from each hut is presented in Fig. 1. There were no significant differences in mean percentage of _Anopheles_ mosquitoes between the different treatment and control huts (p > 0.05).\n", + "\n", + "An immediate mosquito mortality of 100% was recorded from all three huts with IRS throughout the study period. The mean immediate mosquito mortality rates from the control, PermaNet(r) 2.0 and PermaNet(r) 3.0 huts were 13.3% (95% CI 3-23%), 20.0% (95% CI 6-33%) and 70.0% (95% CI 55-84%), respectively (Fig. 2). The immediate mosquito mortality rate from the hut with IRS + untreated net was significantly higher than the PermaNet(r) 3.0 hut (p < 0.001). Similarly, the immediate mosquito mortality rate from the hut with PermaNet(r) 3.0 was significantly higher than that from the control hut (p < 0.001) as well as the PermaNet(r) 2.0 (p < 0.001) hut. The mosquito mortality rate from the PermaNet(r) 2.0 hut was not significantly different from that of the control hut (p = 0.4). On average the killing effect of PermaNet(r) 2.0 and PermaNet(r) 3.0 compared to the untreated net were 2.2% and 48.9%, respectively. The killing effects in the huts with PermaNet(r) 2.0 and PermaNet(r) 3.0 increased to 60.0% and 75.5% when combined with IRS. Delayed mosquito mortality rates of 14.3% and 41.7% were recorded from huts with PermaNet(r) 2.0 and PermaNet(r) 3.0, respectively.\n", + "\n", + "Of the 50 sub-samples of _An. gambiae_ s.l. analysed using species-specific PCR, 46 (92%) were identified as _An. arabiensis_ and four mosquito samples failed to amplify. The blood-feeding rate of the _Anopheles_\n", + "\n", + "Fig. 1: Proportion of mosquitoes collected that were _Anopheles_ spp. in each experimental hut, Asendabo, Ethiopia. Control is no IRS and untreated net \n", + "collected from each of the huts is presented in Fig. 3. Overall, 26 of the _Anopheles_ (11.1%) were blood-fed upon collection. Of the fed mosquitoes, human, bovine and mixed human/bovine blood were detected in 14 (53.9%), 2 (7.7%), 5 (19.2%) of the specimens, respectively. Blood meals from the remaining 5 (19.2%) of the specimens were unidentified. The overall proportion of human blood-fed _Anopheles_ was 73.1% (n = 19). The personal protection rates of PermaNet(r) 2.0 and PermaNet(r) 3.0 nets were 33.3% and 50%, respectively. When combined with IRS, the personal protection rate of PermaNet(r) 2.0 increased to 83.3% while the personal protection rate of PermaNet(r) 2.0 decreased to 83.3%.\n", + "\n", + "\n", + "\n", + "The personal protection rate of PermaNet(r)\n", + "\n", + "\n", + "PernaNet(r) 3.0 remained the same (50%). The proportions of human blood-fed _Anopheles_ collected from the control, PernaNet(r) 2.0, PernaNet(r) 3.0 and combined IRS-treated huts were 13.3% (95% CI 3.4-23.3), 11.4% (95% CI 0.9-22.0), 7.5% (95% CI 0.0-15.7) and 5.2% (95% CI 1.2-9.3), respectively.\n", + "\n", + "Overall, the majority of _Anopheles_ were collected from the rooms of the huts. The proportions of _Anopheles_ collected from the verandah of the IRS-treated and the control huts were 16.5% and 13.3%, respectively (Fig. 4). The proportion of _Anopheles_ collected from verandah of a hut with PernaNet(r) 2.0 was significantly higher than the proportion of _Anopheles_ collected from the control hut (p = 0.02).\n", + "\n", + "The mean knockdown rates of the susceptible _An. arabiensis_ laboratory strain in the bioassays conducted 3 weeks post-spray were 20.2% and 2.9% in the IRS-treated and control huts, respectively. The mean 24 h mortality rates from IRS-treated and control huts were 100% and 2.9%, respectively (Fig. 5).\n", + "\n", + "The combined mean 30 min knockdown rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. exposed to IRS-treated huts 10 weeks post-spray, with and without pre-exposure to PBO, was 1.1% (Fig. 6). The 24 h mortality rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. at 10 weeks post-spray which were exposed to IRS-treated hut wall surfaces were 100%, irrespective of pre-exposure of mosquitoes to PBO.\n", + "\n", + "header: Variables\n", + "\n", + "Four study outcomes measured were:\n", + "\n", + "1. Deterrence--the reduction in hut entry by mosquitoes in treatment huts relative to the control hut (hut with untreated net and no IRS).\n", + "2. Exophily--the proportion of mosquitoes found resting on the walls of the verandah.\n", + "3. Blood-feeding inhibition--the reduction in blood-feeding in treatment huts in comparison with control hut (hut with untreated net and no IRS).\n", + "4. Immediate and delayed mortality--the proportion of mosquitoes entering the hut that were dead in the morning (immediate mortality) or after being caught alive and held for 24 h with access to a sugar solution (delayed mortality).\n", + "\n", + "header: Background: Methods\n", + "\n", + "A Latin Square Design was employed using six experimental huts to collect entomological data. Human volunteers slept in huts with different types of nets (pyrethroid-only net, PBO net, and untreated net) either with or without IRS (Actallic 300CS). The hut with no IRS and an untreated net served as a negative control. The study was conducted for a total of 54 nights. Both alive and dead mosquitoes were collected from inside nets, in the central rooms and verandah the following morning. Data were analysed using Stata/SE 14.0 software package (College Station, TX, USA).\n", + "\n", + "header: Data analysis\n", + "\n", + "Data from the five treatment huts were compared with data from the control hut to determine the insecticidal effects on the variables listed above.\n", + "\n", + "Personal protection, killing effect, and exophily were estimated using the following formulas [9, 11].\n", + "\n", + "\\[\\text{Personal protection }(\\%) = 100 \\times (B_{u} - B_{t} )/B_{u} ;\\]\n", + "\n", + "where \\(B_{t}\\) is the total number of freshly blood-fed mosquitoes in the huts with treated nets. \\(B_{u}\\) is the total number of freshly blood-fed mosquitoes in the huts with untreated nets.\n", + "\n", + "\\[\\text{Killing effect }(\\%) = 100 \\times (K_{t} - K_{u} )/T_{u} ;\\]\n", + "\n", + "where \\(K_{t}\\) is number of mosquitoes killed (immediate) in the huts with treated nets. \\(K_{u}\\) is number of mosquitoes killed (immediate) in the huts with untreated nets. \\(T_{u}\\) is the total number of mosquitoes collected from the huts with untreated nets.\n", + "\n", + "\n", + "Exophily (%) = (E_v/Et) x 100;\n", + "\n", + "where Ev is the number of mosquitoes found in verandah. Et is the total number of mosquitoes found inside the hut and verandah\n", + "\n", + "For all three parameters, mosquito entry was estimated by adding the number of dead and alive mosquitoes observed inside the hut and the verandah. Estimates of personal protection and killing effect were determined using mosquitoes from all collection nights.\n", + "\n", + "To test differences in mean mosquito density in each of the treatment huts, ANOVA was employed after log-transformation of non-normal distributed mosquito count data. T-tests were employed to determine the differences in mean proportions of blood-fed mosquitoes and mosquitoes exiting early from the different test huts and control hut.\n", + "\n", + "In all analyses, the hut with the untreated net and without IRS was used as a negative control, but comparisons were made between all treatment groups. In all analyses, individual huts and sleepers were included in the models as random effects.\n", + "\n", + "header: Discussion\n", + "\n", + "Malaria vector control interventions have been intensified over the last decade in Ethiopia resulting in remarkable progress, with a reduction in children under-five mortality rates from 123 deaths per 1000 live births in 2005 to 55 deaths per 1000 live births in 2019 [15]. The vector control activities including mass-distribution/replacement of ITNs every 3 years in accordance with WHO recommendations and deployment of IRS in targeted areas appear to have played vital roles in the successes obtained in malaria control in Ethiopia [16]. However, malaria still remains a public health challenge in the country, where an estimated 52% of the population lives in areas at risk of malaria. With the successes gained in malaria control, a national malaria elimination goal is set for 2030 [17]. This study evaluated the impact of combining currently available vector control tools on mosquito behaviour and mortality.\n", + "\n", + "Compared to PernaNet(r) 2.0, PernaNet(r) 3.0 is impregnated with a higher concentration of deltamethrin and the roof panel is treated with both deltamethrin and PBO. The higher killing effect of PernaNet(r) 3.0 compared to PernaNet(r) 2.0 in this study could be attributed to the presence of the PBO synergist on the roof panel of the net and/or higher dosage of deltamethrin in the net. The synergist PBO works to inhibit P450 detoxification of pyrethroid insecticides and can result in partial or complete restoration of susceptibility to certain pyrethroids, such as deltamethrin, hence enhancing efficacy of the insecticides [18]. The role of PBO in affecting susceptibility in both wild and laboratory strain mosquitoes exposed to Actellite(r) 300CS\n", + "\n", + "Fig. 4: Proportion of _Anopheles_ collected from inside nets, rooms and verandahs of different experimental huts, Asendabo, Ethiopia \n", + "sprayed walls could not be determined as mortality rates in all IRS treatment huts were 100%. PBO nets have been shown to provide high levels of protection against _An. gambiae_ in a recent experimental hut trial in Cote d'Ivoire [19]. Moreover, the improved protective role of PBO nets on malaria prevalence was also documented in Uganda [20]. Personal protective efficacy of PBO nets may also last longer compared to the standard nets [21]. PBO nets are particularly important as a malaria control tool in areas where the protection against PBO is not a viable alternative to the standard nets.\n", + "\n", + "Fig. 5: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain following wall bioassays 3 weeks after ActeIlic 300CS spraying, Asendabo, Ethiopia\n", + "\n", + "Fig. 6: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain and wild _An. gambiae_ s.l. (with and without pre-exposure to PBO) following wall bioassays 10 weeks after IRS using ActeIlic 300CS, Asendabo, Ethiopia \n", + "pyrethroid resistance is high in the vector populations [22] and is, therefore, under consideration for more widespread distribution in Ethiopia. Despite these added advantages of PBO nets, the cost is currently higher than pyrethroid nets which may limit their wider use in malaria vector control in malaria endemic areas. Additionally, this study provides an example of a setting with high levels of pyrethroid resistance where PBO nets may not be sufficient.\n", + "\n", + "The proportion of _Anopheles_ retrieved from the verandah of huts with both PermaNet 2.0 and PermaNet 3.0 was higher than those from the verandah of the control hut. Huts with PermaNet 2.0 induced significantly higher exito-repellency compared to control huts. Insecticides often induce toxicity to mosquitoes. However, the non-toxic 'exito-repellent' effects of insecticides are often less understood. Pyrethroid and organophosphate insecticides are also known to have these non-killing effects. The impact of the non-killing effects of the insecticides on the risk of malaria is not clearly understood. Though exito-repellency appears to reduce indoor human-vector contact, it may on the contrary enhance risk of outdoor mosquito biting [23].\n", + "\n", + "The role of IRS as a key malaria vector control intervention tool is evident. Immediate mortality was observed in mosquitoes collected from the three huts sprayed with Actellic(r) 300CS up to the end of the study at 10 weeks post-spray. The proportion of blood-fed _Anopheles_ was significantly lower in the IRS-treated huts compared to the control hut. This could be due to the fast-acting nature of Actellic(r) 300CS insecticide with both contact and fumigant effects. This shows the potential of Actellic(r) 300CS as an insecticide of choice for IRS in areas where the local vector population is susceptible to the insecticide. _Anopheles arabiensis_ is susceptible to pirimibos-methyl in most parts of Ethiopia [10, 24]. Some earlier studies conducted in Ethiopia showed the effectiveness of combining IRS with ITNs compared to ITNs alone in suppressing vector populations [25]. Added benefits of combining IRS and ITNs in malaria prevention was also reported from other areas in sub-Saharan Africa [26-28]. In contrast, limited or no added benefit of combining IRS with ITNs as compared to ITNs alone has been reported elsewhere [29, 30]. This inconsistency could be attributed to differences in the intensity of malaria transmission and insecticide resistance of the local vector populations. The impact of the combined use of available vector control interventions appears to be more pronounced when applied in high transmission areas, and where the local vector populations are susceptible to the insecticide used for the IRS component [25].\n", + "\n", + "The importance of combining IRS and ITNs for malaria vector control is believed partly to come from the low or inconsistent utilization of ITNs by users and short residual efficacy of IRS insecticides [31, 32]. In Ethiopia, household surveys have shown approximately 50% of children under five and pregnant women use their nets with geographic variation [33]. The gap often created as a result of low utilization of ITNs may be complemented with IRS. ITN utilization and care depends on personal decisions and behavior [34]. However, once properly implemented, IRS rapidly suppresses local vector populations with no additional behaviors required from the residents, hence reducing malaria incidence [35]. However, effectiveness of IRS for malaria vector control is highly affected by both physiological and behavioral resistance of the local vector population to the insecticide [36], apart from operational factors and higher costs.\n", + "\n", + "As the study was conducted during the dry season of the year, the mosquito population density was not high and, therefore, limits the generalizability of the results. However, the findings of this study could provide preliminary information for vector control programs for the rational choice of future vector control intervention tools. In addition, combining indoor residual spraying using pirimibos-methyl with PBO nets has been reported to be antagonistic in some studies, but a negative interaction or antagonism between PBO and pirimibos-methyl was not detected in this study.\n", + "\n", + "header: Funding\n", + "\n", + "This work was funded by the US President's Malaria initiative.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Abbreviations\n", + "\n", + "DDT: Dichroo-diphenyl-trichloroethane; ELISA: Enzyme-linked immunosorbent Assay; IRS: Indoor residual spray; ITS: Insecticide-treated net; PBO: Piperonyl butoxide; PCR Polymerase chain reaction; WHO: World Health Organization; WHORES: World Health Organization Pesticide Evaluation Scheme.\n", + "\n", + "header: Disclaimer\n", + "\n", + "The findings and conclusions in this manuscript are those of the authors and do not necessarily represent the views of the CDC. Use of trade names is for identification only and does not imply endorsement by the Centers for Disease Control and Prevention, the Public Health Service, or the US Department of Health and Human Services.\n", + "\n", + "header: Indoor residual spraying (IRS)\n", + "\n", + "Actcllic(r) 300CS, a pirimiphos-methyl-based IRS insecticide, was applied to the three IRS treatment huts 1 week before the start of the trial. Pirimiphos-methyl is an organophosphate insecticide being used for IRS by the malaria elimination program of Ethiopia. During the spraying, filter papers were affixed to the wall surfaces at three heights (high, middle and low) to ensure the application was properly and uniformly applied and determine the concentration of the applied insecticide. The spray operators were trained on the spraying techniques and the wall surfaces of huts were lined with chalk to properly maintain the swath and avoid overlap following the WHO protocol.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "Data supporting the conclusions of this article are included within the article.\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Abstract\n", + "\n", + "An experimental hut study evaluating the impact of pyrethroid-only and PBO nets alone and in combination with pirrimiphos-methyl-based IRS in Ethiopia\n", + "\n", + "Delenasaw Yevhalaw, Meshesha Balkew, Endalew Zermene, Sheleme Chibsa, Peter Mumba, Cecilia Flatley, Akiliu Seyoum, Melissa Yoshimizu, Sarah Zohdy, Dereje Dengela\n", + "\n", + "\n", + "\n", + "Pyrethroid resistance observed in populations of malaria vectors is widespread in Ethiopia and could potentially compromise the effectiveness of insecticide-based malaria vector control interventions. In this study, the impact of combining indoor residual spraying (IRS) and insecticide-treated nets (ITNs) on mosquito behaviour and mortality was evaluated using experimental huts.\n", + "\n", + "header: Wall bioassay\n", + "\n", + "Cone bioassays were conducted twice during the trial period to assess the bio-efficacy of Actclic 300CS. At each time point, three cones were fixed to the wall surfaces at three heights from the ground (high 160 cm, medium 100 cm and low 40 cm) of each hut and ten mosquitoes were used per cone with a total of 30 mosquitoes per hut, for each of the three sprayed huts and a control hut (120 mosquitoes in total). Mosquitoes were exposed for 30 min after which immediate knockdown was recorded and mortality was recorded after a 24 h holding period. Non-blood-fed, 3-5 day old adult female _Anopheles gambiae_ sensu lato (s.l.) were used for bioassays.\n", + "\n", + "The first cone bioassay was conducted 3 weeks after spray using a confirmed susceptible _An. arabiensis_ strain from Sekoru Insectary without pre-exposure to PBO synergist. The second bioassay was conducted at the end of the trial (10 weeks after spray). In the second bioassay, both susceptible _An. arabiensis_ laboratory strain from Sekoru Insectary and wild _An. gambiae_ s.l. were used. The assay was carried out with and without PBO pre-exposure for both strains. Wild populations of _An. gambiae_ s.l. used for the bioassays were raised from larvae and pupae collected from semi-permanent and permanent breeding habitats around Wolfkite area, central Ethiopia. They were reared to adults at Asendabo Field Insectary. Mosquitoes were exposed to papers treated with PBO (2%) in a WHO cylinder for 1 h.\n", + "\n", + "header: Background\n", + "\n", + "Malaria is an important public health and socio-economic problem in Ethiopia. The main malaria vector in Ethiopia is _Anopheles arabiensis,_ while _Anopheles pharoetiss, Anopheles funestus_ and _Anopheles nili_ play a secondary role in malaria transmission. _Anopheles stephensi,_ a common and efficient urban malaria vector in Southeast Asia and the Mediterranean Region, has also recently been reported in Ethiopia and neighboring countries including Djibouti and Sudan [1]. There is widespread resistance to dichloro-diphenyl-trichloroethane (DDT) and pyrethroids in _An. arabiensis_ and resistance has also been detected to organophosphates in some populations. _Anopheles pharoensis_ was also reported to be highly resistant to DDT [2]. The _kdr_ mutation (L1014F) has been detected in _An. arabiensis_ from many sites, while _ace-1R_ and _kdr_ (L1014S) were not detected in all populations [3, 4, 5]. Bottle bioassay tests with _An. arabiensis_ populations from all surveyed areas of Ethiopia found resistance to both permethrin and deltamethrin. However, susceptibility to permethrin and deltamethrin was restored following pre-exposure of mosquitoes to the synergist piperonyl butoxide (PBO), indicating involvement of P450-based metabolic resistance mechanisms in the Ethiopian populations of _An. arabiensis_[6].\n", + "\n", + "Indoor residual spraying (IRS) and insecticide-treated nets (ITNs) are the main vector control interventions in Ethiopia. Ethiopia has a long history of IRS. It began spraying DDT in the late 1950s during the Malaria Eradication Programme and malathion was also used for IRS in a few areas until 2010. Deltamethrin, a pyrethroid insecticide, was used for IRS from 2009 to 2013, and since then, bendiocarb and propoxur (carbamate insecticides) and pirimihos-methyl (organophosphate insecticide) have been used for IRS in Ethiopia. The PMI VectorLink Ethiopia Project piloted the clothianidin (neonicotinoid)-based insecticides, SumiShield(r) 50WG and Fludora Fusion WP-SB, in 2020 in Menge District in the Benishangul Gumuz Region. Insecticide-treated nets have been widely distributed to households in malaria risk areas every 3 years mainly through the health extension programme [7].\n", + "\n", + "Recent studies in Tanzania showed that the impact of PBO nets could be comparable to the impact of pyrethroid-only nets when combined with IRS, and that there was no significant difference in malaria prevalence between the pyrethroid-only net + IRS and PBO net + IRS study arms [8]. This is of interest for malaria control operations in Ethiopia, as such data can inform future decisions on ITN procurements and strategic\n", + "distribution, as well as insecticide choices for IRS, which may reduce overall malaria vector control costs. In addition, it is also important to understand possible antagonistic effects of PBO and pirimiphos-methyl, as suggested by the World Health Organization (WHO), before recommending the combined use of PBO nets and pirimiphos methyl IRS for malaria control in Ethiopia.\n", + "\n", + "This study aimed at assessing the impact of the combination of currently available vector control tools (IRS, pyrethroid-only nets, and PBO nets) on mosquito behaviour, mortality and the possible antagonistic effect of PBO and pirimiphos-methyl using experimental hurts in Asendabo, Ethiopia. The hypothesis for the Ethiopia context was that the use of PBO nets in combination with IRS would better control malaria vectors than PBO nets alone and that the use of IRS in combination with pyrethroid-only nets would better control malaria vectors than pyrethroid-only nets alone.\n", + "\n", + "header: Competing interests\n", + "\n", + "We declare that we have no competing interests.\n", + "\n", + "header: Results\n", + "\n", + "The personal protection rate of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 33.3% and 50%, respectively. The mean killing effect of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 2% and 49%, respectively. Huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone demonstrated significantly higher excito-repellency than the control hut. However, mosquito mortality in the hut with IRS + untreated net, hut with IRS + PermaNet(r) 2.0 and hut with IRS + PermaNet(r) 3.0 were not significantly different from each other (p > 0.05). Additionally, pre-exposure of both the susceptible _Anopheles arabiensis_ laboratory strain and wild _Anopheles gambiae_ sensu late to PBO in the cone bioassay tests of Actellite 300CS sprayed surfaces did not reduce mosquito mortality when compared to mortality without pre-exposure to PBO.\n", + "\n", + "header: Use of nets for the study\n", + "\n", + "During the study, two types of nets (PermaNet(r) 2.0 and PermaNet(r) 3.0) with and without IRS were assessed. Moreover, an untreated net was used with IRS and untreated net without IRS was used as a negative control. Both PermaNet(r) 2.0 and PermaNet(r) 3.0 nets are treated with the pyrethroid deltamethrin, but PermaNet 3.0 has also PBO synergist. During the study, each ITN in each hut was replaced by a new replicate net every 3 weeks since the trial had no replicate huts. Eighteen holes (4 cm x 4 cm) were cut in each net purposefully to simulate a torn net [11].\n", + "\n", + "header: Conclusion\n", + "\n", + "Mosquito mortality rates from the huts with IRS alone were similar to mosquito mortality rates from the huts with the combination of vector control intervention tools (IRS + ITNs) and mosquito mortality rates from huts with PBO nets alone were significantly higher than huts with pyrethroid-only nets. The findings of this study help inform studies to be conducted under field condition for decision-making for future selection of cost-effective vector control intervention tools.\n", + "\n", + "header: Conclusion\n", + "\n", + "In this study, significantly higher mosquito mortality rates were recorded from treatment huts with IRS than huts with ITNs alone, regardless of net type. Interestingly, the hut with IRS + untreated net had similar mosquito mortality rates as huts with combinations of vector control tools (IRS + pyrethroid-only nets and IRS + PBO nets). Moreover, immediate mortality rate of mosquitoes in IRS + untreated net was significantly higher than PermaNet 2.0 and PermaNet 3.0 nets. These suggest that IRS alone provides the greatest vector control impact. Indoor residual spraying alone or in combination with ITNs offered significantly higher personal protection against mosquito bites than the control hut. Moreover, the proportion of mosquito mortality was significantly higher in huts with PBO nets than huts with pyrethroid-only nets, but remained significantly lower than the huts that received IRS. In general, the findings of this study revealed that IRS alone was as efficacious as combinations of vector tools (IRS + ITNs) for malaria vector control at least over the 9-week study period. Field studies to further assess the impact of combinations of vector tools on malaria vector control in different eco-epidemiological settings are also warranted. This study \n", + "provides additional data for considering future selection of the most appropriate vector control tools for improved malaria vector control and management of insecticide resistance. This study also indicated that there was no antagonistic effect between PBO and IRS with pirimib-phos-methyl. However, further studies may be needed to determine if there are antagonistic effects in large scale IRS applications to evaluate the efficacy of PBO vs. IRS against different resistant vector populations in Ethiopia for decision-making to deploy either PBO nets or pirimib-phos-based IRS intervention.\n", + "\n", + "header: Results\n", + "\n", + "Overall, a total of 386 mosquitoes, comprising 235 _Anopheles_ spp. (60.9%) and 151 _Culex_ spp. (39.1%), were collected during the study. Of the _Anopheles_ mosquitoes, _An. gambiae_ s.l, _An. pharoensis_ and _Anopheles__custani_ accounted for 228 (97.0%), 6 (2.6%) and 1 (0.4%), respectively. The proportion of the total _Anopheles_ mosquitoes collected from each hut is presented in Fig. 1. There were no significant differences in mean percentage of _Anopheles_ mosquitoes between the different treatment and control huts (p > 0.05).\n", + "\n", + "An immediate mosquito mortality of 100% was recorded from all three huts with IRS throughout the study period. The mean immediate mosquito mortality rates from the control, PermaNet(r) 2.0 and PermaNet(r) 3.0 huts were 13.3% (95% CI 3-23%), 20.0% (95% CI 6-33%) and 70.0% (95% CI 55-84%), respectively (Fig. 2). The immediate mosquito mortality rate from the hut with IRS + untreated net was significantly higher than the PermaNet(r) 3.0 hut (p < 0.001). Similarly, the immediate mosquito mortality rate from the hut with PermaNet(r) 3.0 was significantly higher than that from the control hut (p < 0.001) as well as the PermaNet(r) 2.0 (p < 0.001) hut. The mosquito mortality rate from the PermaNet(r) 2.0 hut was not significantly different from that of the control hut (p = 0.4). On average the killing effect of PermaNet(r) 2.0 and PermaNet(r) 3.0 compared to the untreated net were 2.2% and 48.9%, respectively. The killing effects in the huts with PermaNet(r) 2.0 and PermaNet(r) 3.0 increased to 60.0% and 75.5% when combined with IRS. Delayed mosquito mortality rates of 14.3% and 41.7% were recorded from huts with PermaNet(r) 2.0 and PermaNet(r) 3.0, respectively.\n", + "\n", + "Of the 50 sub-samples of _An. gambiae_ s.l. analysed using species-specific PCR, 46 (92%) were identified as _An. arabiensis_ and four mosquito samples failed to amplify. The blood-feeding rate of the _Anopheles_\n", + "\n", + "Fig. 1: Proportion of mosquitoes collected that were _Anopheles_ spp. in each experimental hut, Asendabo, Ethiopia. Control is no IRS and untreated net \n", + "collected from each of the huts is presented in Fig. 3. Overall, 26 of the _Anopheles_ (11.1%) were blood-fed upon collection. Of the fed mosquitoes, human, bovine and mixed human/bovine blood were detected in 14 (53.9%), 2 (7.7%), 5 (19.2%) of the specimens, respectively. Blood meals from the remaining 5 (19.2%) of the specimens were unidentified. The overall proportion of human blood-fed _Anopheles_ was 73.1% (n = 19). The personal protection rates of PermaNet(r) 2.0 and PermaNet(r) 3.0 nets were 33.3% and 50%, respectively. When combined with IRS, the personal protection rate of PermaNet(r) 2.0 increased to 83.3% while the personal protection rate of PermaNet(r) 2.0 decreased to 83.3%.\n", + "\n", + "\n", + "\n", + "The personal protection rate of PermaNet(r)\n", + "\n", + "\n", + "PernaNet(r) 3.0 remained the same (50%). The proportions of human blood-fed _Anopheles_ collected from the control, PernaNet(r) 2.0, PernaNet(r) 3.0 and combined IRS-treated huts were 13.3% (95% CI 3.4-23.3), 11.4% (95% CI 0.9-22.0), 7.5% (95% CI 0.0-15.7) and 5.2% (95% CI 1.2-9.3), respectively.\n", + "\n", + "Overall, the majority of _Anopheles_ were collected from the rooms of the huts. The proportions of _Anopheles_ collected from the verandah of the IRS-treated and the control huts were 16.5% and 13.3%, respectively (Fig. 4). The proportion of _Anopheles_ collected from verandah of a hut with PernaNet(r) 2.0 was significantly higher than the proportion of _Anopheles_ collected from the control hut (p = 0.02).\n", + "\n", + "The mean knockdown rates of the susceptible _An. arabiensis_ laboratory strain in the bioassays conducted 3 weeks post-spray were 20.2% and 2.9% in the IRS-treated and control huts, respectively. The mean 24 h mortality rates from IRS-treated and control huts were 100% and 2.9%, respectively (Fig. 5).\n", + "\n", + "The combined mean 30 min knockdown rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. exposed to IRS-treated huts 10 weeks post-spray, with and without pre-exposure to PBO, was 1.1% (Fig. 6). The 24 h mortality rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. at 10 weeks post-spray which were exposed to IRS-treated hut wall surfaces were 100%, irrespective of pre-exposure of mosquitoes to PBO.\n", + "\n", + "header: Data analysis\n", + "\n", + "Data from the five treatment huts were compared with data from the control hut to determine the insecticidal effects on the variables listed above.\n", + "\n", + "Personal protection, killing effect, and exophily were estimated using the following formulas [9, 11].\n", + "\n", + "\\[\\text{Personal protection }(\\%) = 100 \\times (B_{u} - B_{t} )/B_{u} ;\\]\n", + "\n", + "where \\(B_{t}\\) is the total number of freshly blood-fed mosquitoes in the huts with treated nets. \\(B_{u}\\) is the total number of freshly blood-fed mosquitoes in the huts with untreated nets.\n", + "\n", + "\\[\\text{Killing effect }(\\%) = 100 \\times (K_{t} - K_{u} )/T_{u} ;\\]\n", + "\n", + "where \\(K_{t}\\) is number of mosquitoes killed (immediate) in the huts with treated nets. \\(K_{u}\\) is number of mosquitoes killed (immediate) in the huts with untreated nets. \\(T_{u}\\) is the total number of mosquitoes collected from the huts with untreated nets.\n", + "\n", + "\n", + "Exophily (%) = (E_v/Et) x 100;\n", + "\n", + "where Ev is the number of mosquitoes found in verandah. Et is the total number of mosquitoes found inside the hut and verandah\n", + "\n", + "For all three parameters, mosquito entry was estimated by adding the number of dead and alive mosquitoes observed inside the hut and the verandah. Estimates of personal protection and killing effect were determined using mosquitoes from all collection nights.\n", + "\n", + "To test differences in mean mosquito density in each of the treatment huts, ANOVA was employed after log-transformation of non-normal distributed mosquito count data. T-tests were employed to determine the differences in mean proportions of blood-fed mosquitoes and mosquitoes exiting early from the different test huts and control hut.\n", + "\n", + "In all analyses, the hut with the untreated net and without IRS was used as a negative control, but comparisons were made between all treatment groups. In all analyses, individual huts and sleepers were included in the models as random effects.\n", + "\n", + "header: Author details\n", + "\n", + "1School of Medical Laboratory Sciences, Faculty of Health Sciences, Jimma University, Jimma, Ethiopia. 2Tropical and Infectious Diseases Research Center, Jimma University, Jimma, Ethiopia. 3HAR Associates, PMI VectorLine Project Ethiopia, Addis Ababa, Ethiopia. 4US President's Malaria Initiative, USAID, Washington, DC, USA. 7US President's Malaria Initiative, Center for Disease Control and Prevention, Atlanta, GA, USA.\n", + "\n", + "header: Background: Methods\n", + "\n", + "A Latin Square Design was employed using six experimental huts to collect entomological data. Human volunteers slept in huts with different types of nets (pyrethroid-only net, PBO net, and untreated net) either with or without IRS (Actallic 300CS). The hut with no IRS and an untreated net served as a negative control. The study was conducted for a total of 54 nights. Both alive and dead mosquitoes were collected from inside nets, in the central rooms and verandah the following morning. Data were analysed using Stata/SE 14.0 software package (College Station, TX, USA).\n", + "\n", + "header: Variables\n", + "\n", + "Four study outcomes measured were:\n", + "\n", + "1. Deterrence--the reduction in hut entry by mosquitoes in treatment huts relative to the control hut (hut with untreated net and no IRS).\n", + "2. Exophily--the proportion of mosquitoes found resting on the walls of the verandah.\n", + "3. Blood-feeding inhibition--the reduction in blood-feeding in treatment huts in comparison with control hut (hut with untreated net and no IRS).\n", + "4. Immediate and delayed mortality--the proportion of mosquitoes entering the hut that were dead in the morning (immediate mortality) or after being caught alive and held for 24 h with access to a sugar solution (delayed mortality).\n", + "\n", + "header: Funding\n", + "\n", + "This work was funded by the US President's Malaria initiative.\n", + "\n", + "header: Blood meal host source analysis and mosquito identification\n", + "\n", + "All the fed mosquitoes collected from the different huts were assayed to determine the blood meal host source using direct ELISA [13]. Moreover, a sub-sample of _An. gambiae_ s.l. was also molecularly identified to species using species-specific PCR following established protocol [14].\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Ethiopia\",\"Site\":\"Asendabo\"}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_holed\":18.0,\"pHI_category\":\"Torn\",\"Synergist\":null},\"N02\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"deltamethrin\",\"Net_holed\":18.0,\"pHI_category\":\"Torn\",\"Synergist\":\"PBO\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Abbreviations\n", + "\n", + "DDT: Dichroo-diphenyl-trichloroethane; ELISA: Enzyme-linked immunosorbent Assay; IRS: Indoor residual spray; ITS: Insecticide-treated net; PBO: Piperonyl butoxide; PCR Polymerase chain reaction; WHO: World Health Organization; WHORES: World Health Organization Pesticide Evaluation Scheme.\n", + "\n", + "header: Disclaimer\n", + "\n", + "The findings and conclusions in this manuscript are those of the authors and do not necessarily represent the views of the CDC. Use of trade names is for identification only and does not imply endorsement by the Centers for Disease Control and Prevention, the Public Health Service, or the US Department of Health and Human Services.\n", + "\n", + "header: Indoor residual spraying (IRS)\n", + "\n", + "Actcllic(r) 300CS, a pirimiphos-methyl-based IRS insecticide, was applied to the three IRS treatment huts 1 week before the start of the trial. Pirimiphos-methyl is an organophosphate insecticide being used for IRS by the malaria elimination program of Ethiopia. During the spraying, filter papers were affixed to the wall surfaces at three heights (high, middle and low) to ensure the application was properly and uniformly applied and determine the concentration of the applied insecticide. The spray operators were trained on the spraying techniques and the wall surfaces of huts were lined with chalk to properly maintain the swath and avoid overlap following the WHO protocol.\n", + "\n", + "header: Availability of data and materials\n", + "\n", + "Data supporting the conclusions of this article are included within the article.\n", + "\n", + "header: Abstract\n", + "\n", + "An experimental hut study evaluating the impact of pyrethroid-only and PBO nets alone and in combination with pirrimiphos-methyl-based IRS in Ethiopia\n", + "\n", + "Delenasaw Yevhalaw, Meshesha Balkew, Endalew Zermene, Sheleme Chibsa, Peter Mumba, Cecilia Flatley, Akiliu Seyoum, Melissa Yoshimizu, Sarah Zohdy, Dereje Dengela\n", + "\n", + "\n", + "\n", + "Pyrethroid resistance observed in populations of malaria vectors is widespread in Ethiopia and could potentially compromise the effectiveness of insecticide-based malaria vector control interventions. In this study, the impact of combining indoor residual spraying (IRS) and insecticide-treated nets (ITNs) on mosquito behaviour and mortality was evaluated using experimental huts.\n", + "\n", + "header: Ethics approval and consent to participate: Consent for publication\n", + "\n", + "Not applicable.\n", + "\n", + "header: Background\n", + "\n", + "Malaria is an important public health and socio-economic problem in Ethiopia. The main malaria vector in Ethiopia is _Anopheles arabiensis,_ while _Anopheles pharoetiss, Anopheles funestus_ and _Anopheles nili_ play a secondary role in malaria transmission. _Anopheles stephensi,_ a common and efficient urban malaria vector in Southeast Asia and the Mediterranean Region, has also recently been reported in Ethiopia and neighboring countries including Djibouti and Sudan [1]. There is widespread resistance to dichloro-diphenyl-trichloroethane (DDT) and pyrethroids in _An. arabiensis_ and resistance has also been detected to organophosphates in some populations. _Anopheles pharoensis_ was also reported to be highly resistant to DDT [2]. The _kdr_ mutation (L1014F) has been detected in _An. arabiensis_ from many sites, while _ace-1R_ and _kdr_ (L1014S) were not detected in all populations [3, 4, 5]. Bottle bioassay tests with _An. arabiensis_ populations from all surveyed areas of Ethiopia found resistance to both permethrin and deltamethrin. However, susceptibility to permethrin and deltamethrin was restored following pre-exposure of mosquitoes to the synergist piperonyl butoxide (PBO), indicating involvement of P450-based metabolic resistance mechanisms in the Ethiopian populations of _An. arabiensis_[6].\n", + "\n", + "Indoor residual spraying (IRS) and insecticide-treated nets (ITNs) are the main vector control interventions in Ethiopia. Ethiopia has a long history of IRS. It began spraying DDT in the late 1950s during the Malaria Eradication Programme and malathion was also used for IRS in a few areas until 2010. Deltamethrin, a pyrethroid insecticide, was used for IRS from 2009 to 2013, and since then, bendiocarb and propoxur (carbamate insecticides) and pirimihos-methyl (organophosphate insecticide) have been used for IRS in Ethiopia. The PMI VectorLink Ethiopia Project piloted the clothianidin (neonicotinoid)-based insecticides, SumiShield(r) 50WG and Fludora Fusion WP-SB, in 2020 in Menge District in the Benishangul Gumuz Region. Insecticide-treated nets have been widely distributed to households in malaria risk areas every 3 years mainly through the health extension programme [7].\n", + "\n", + "Recent studies in Tanzania showed that the impact of PBO nets could be comparable to the impact of pyrethroid-only nets when combined with IRS, and that there was no significant difference in malaria prevalence between the pyrethroid-only net + IRS and PBO net + IRS study arms [8]. This is of interest for malaria control operations in Ethiopia, as such data can inform future decisions on ITN procurements and strategic\n", + "distribution, as well as insecticide choices for IRS, which may reduce overall malaria vector control costs. In addition, it is also important to understand possible antagonistic effects of PBO and pirimiphos-methyl, as suggested by the World Health Organization (WHO), before recommending the combined use of PBO nets and pirimiphos methyl IRS for malaria control in Ethiopia.\n", + "\n", + "This study aimed at assessing the impact of the combination of currently available vector control tools (IRS, pyrethroid-only nets, and PBO nets) on mosquito behaviour, mortality and the possible antagonistic effect of PBO and pirimiphos-methyl using experimental hurts in Asendabo, Ethiopia. The hypothesis for the Ethiopia context was that the use of PBO nets in combination with IRS would better control malaria vectors than PBO nets alone and that the use of IRS in combination with pyrethroid-only nets would better control malaria vectors than pyrethroid-only nets alone.\n", + "\n", + "header: Wall bioassay\n", + "\n", + "Cone bioassays were conducted twice during the trial period to assess the bio-efficacy of Actclic 300CS. At each time point, three cones were fixed to the wall surfaces at three heights from the ground (high 160 cm, medium 100 cm and low 40 cm) of each hut and ten mosquitoes were used per cone with a total of 30 mosquitoes per hut, for each of the three sprayed huts and a control hut (120 mosquitoes in total). Mosquitoes were exposed for 30 min after which immediate knockdown was recorded and mortality was recorded after a 24 h holding period. Non-blood-fed, 3-5 day old adult female _Anopheles gambiae_ sensu lato (s.l.) were used for bioassays.\n", + "\n", + "The first cone bioassay was conducted 3 weeks after spray using a confirmed susceptible _An. arabiensis_ strain from Sekoru Insectary without pre-exposure to PBO synergist. The second bioassay was conducted at the end of the trial (10 weeks after spray). In the second bioassay, both susceptible _An. arabiensis_ laboratory strain from Sekoru Insectary and wild _An. gambiae_ s.l. were used. The assay was carried out with and without PBO pre-exposure for both strains. Wild populations of _An. gambiae_ s.l. used for the bioassays were raised from larvae and pupae collected from semi-permanent and permanent breeding habitats around Wolfkite area, central Ethiopia. They were reared to adults at Asendabo Field Insectary. Mosquitoes were exposed to papers treated with PBO (2%) in a WHO cylinder for 1 h.\n", + "\n", + "header: Results\n", + "\n", + "The personal protection rate of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 33.3% and 50%, respectively. The mean killing effect of huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone was 2% and 49%, respectively. Huts with PermaNet(r) 2.0 alone and PermaNet(r) 3.0 alone demonstrated significantly higher excito-repellency than the control hut. However, mosquito mortality in the hut with IRS + untreated net, hut with IRS + PermaNet(r) 2.0 and hut with IRS + PermaNet(r) 3.0 were not significantly different from each other (p > 0.05). Additionally, pre-exposure of both the susceptible _Anopheles arabiensis_ laboratory strain and wild _Anopheles gambiae_ sensu late to PBO in the cone bioassay tests of Actellite 300CS sprayed surfaces did not reduce mosquito mortality when compared to mortality without pre-exposure to PBO.\n", + "\n", + "header: Use of nets for the study\n", + "\n", + "During the study, two types of nets (PermaNet(r) 2.0 and PermaNet(r) 3.0) with and without IRS were assessed. Moreover, an untreated net was used with IRS and untreated net without IRS was used as a negative control. Both PermaNet(r) 2.0 and PermaNet(r) 3.0 nets are treated with the pyrethroid deltamethrin, but PermaNet 3.0 has also PBO synergist. During the study, each ITN in each hut was replaced by a new replicate net every 3 weeks since the trial had no replicate huts. Eighteen holes (4 cm x 4 cm) were cut in each net purposefully to simulate a torn net [11].\n", + "\n", + "header: Competing interests\n", + "\n", + "We declare that we have no competing interests.\n", + "\n", + "header: Conclusion\n", + "\n", + "In this study, significantly higher mosquito mortality rates were recorded from treatment huts with IRS than huts with ITNs alone, regardless of net type. Interestingly, the hut with IRS + untreated net had similar mosquito mortality rates as huts with combinations of vector control tools (IRS + pyrethroid-only nets and IRS + PBO nets). Moreover, immediate mortality rate of mosquitoes in IRS + untreated net was significantly higher than PermaNet 2.0 and PermaNet 3.0 nets. These suggest that IRS alone provides the greatest vector control impact. Indoor residual spraying alone or in combination with ITNs offered significantly higher personal protection against mosquito bites than the control hut. Moreover, the proportion of mosquito mortality was significantly higher in huts with PBO nets than huts with pyrethroid-only nets, but remained significantly lower than the huts that received IRS. In general, the findings of this study revealed that IRS alone was as efficacious as combinations of vector tools (IRS + ITNs) for malaria vector control at least over the 9-week study period. Field studies to further assess the impact of combinations of vector tools on malaria vector control in different eco-epidemiological settings are also warranted. This study \n", + "provides additional data for considering future selection of the most appropriate vector control tools for improved malaria vector control and management of insecticide resistance. This study also indicated that there was no antagonistic effect between PBO and IRS with pirimib-phos-methyl. However, further studies may be needed to determine if there are antagonistic effects in large scale IRS applications to evaluate the efficacy of PBO vs. IRS against different resistant vector populations in Ethiopia for decision-making to deploy either PBO nets or pirimib-phos-based IRS intervention.\n", + "\n", + "header: Conclusion\n", + "\n", + "Mosquito mortality rates from the huts with IRS alone were similar to mosquito mortality rates from the huts with the combination of vector control intervention tools (IRS + ITNs) and mosquito mortality rates from huts with PBO nets alone were significantly higher than huts with pyrethroid-only nets. The findings of this study help inform studies to be conducted under field condition for decision-making for future selection of cost-effective vector control intervention tools.\n", + "\n", + "header: Results\n", + "\n", + "Overall, a total of 386 mosquitoes, comprising 235 _Anopheles_ spp. (60.9%) and 151 _Culex_ spp. (39.1%), were collected during the study. Of the _Anopheles_ mosquitoes, _An. gambiae_ s.l, _An. pharoensis_ and _Anopheles__custani_ accounted for 228 (97.0%), 6 (2.6%) and 1 (0.4%), respectively. The proportion of the total _Anopheles_ mosquitoes collected from each hut is presented in Fig. 1. There were no significant differences in mean percentage of _Anopheles_ mosquitoes between the different treatment and control huts (p > 0.05).\n", + "\n", + "An immediate mosquito mortality of 100% was recorded from all three huts with IRS throughout the study period. The mean immediate mosquito mortality rates from the control, PermaNet(r) 2.0 and PermaNet(r) 3.0 huts were 13.3% (95% CI 3-23%), 20.0% (95% CI 6-33%) and 70.0% (95% CI 55-84%), respectively (Fig. 2). The immediate mosquito mortality rate from the hut with IRS + untreated net was significantly higher than the PermaNet(r) 3.0 hut (p < 0.001). Similarly, the immediate mosquito mortality rate from the hut with PermaNet(r) 3.0 was significantly higher than that from the control hut (p < 0.001) as well as the PermaNet(r) 2.0 (p < 0.001) hut. The mosquito mortality rate from the PermaNet(r) 2.0 hut was not significantly different from that of the control hut (p = 0.4). On average the killing effect of PermaNet(r) 2.0 and PermaNet(r) 3.0 compared to the untreated net were 2.2% and 48.9%, respectively. The killing effects in the huts with PermaNet(r) 2.0 and PermaNet(r) 3.0 increased to 60.0% and 75.5% when combined with IRS. Delayed mosquito mortality rates of 14.3% and 41.7% were recorded from huts with PermaNet(r) 2.0 and PermaNet(r) 3.0, respectively.\n", + "\n", + "Of the 50 sub-samples of _An. gambiae_ s.l. analysed using species-specific PCR, 46 (92%) were identified as _An. arabiensis_ and four mosquito samples failed to amplify. The blood-feeding rate of the _Anopheles_\n", + "\n", + "Fig. 1: Proportion of mosquitoes collected that were _Anopheles_ spp. in each experimental hut, Asendabo, Ethiopia. Control is no IRS and untreated net \n", + "collected from each of the huts is presented in Fig. 3. Overall, 26 of the _Anopheles_ (11.1%) were blood-fed upon collection. Of the fed mosquitoes, human, bovine and mixed human/bovine blood were detected in 14 (53.9%), 2 (7.7%), 5 (19.2%) of the specimens, respectively. Blood meals from the remaining 5 (19.2%) of the specimens were unidentified. The overall proportion of human blood-fed _Anopheles_ was 73.1% (n = 19). The personal protection rates of PermaNet(r) 2.0 and PermaNet(r) 3.0 nets were 33.3% and 50%, respectively. When combined with IRS, the personal protection rate of PermaNet(r) 2.0 increased to 83.3% while the personal protection rate of PermaNet(r) 2.0 decreased to 83.3%.\n", + "\n", + "\n", + "\n", + "The personal protection rate of PermaNet(r)\n", + "\n", + "\n", + "PernaNet(r) 3.0 remained the same (50%). The proportions of human blood-fed _Anopheles_ collected from the control, PernaNet(r) 2.0, PernaNet(r) 3.0 and combined IRS-treated huts were 13.3% (95% CI 3.4-23.3), 11.4% (95% CI 0.9-22.0), 7.5% (95% CI 0.0-15.7) and 5.2% (95% CI 1.2-9.3), respectively.\n", + "\n", + "Overall, the majority of _Anopheles_ were collected from the rooms of the huts. The proportions of _Anopheles_ collected from the verandah of the IRS-treated and the control huts were 16.5% and 13.3%, respectively (Fig. 4). The proportion of _Anopheles_ collected from verandah of a hut with PernaNet(r) 2.0 was significantly higher than the proportion of _Anopheles_ collected from the control hut (p = 0.02).\n", + "\n", + "The mean knockdown rates of the susceptible _An. arabiensis_ laboratory strain in the bioassays conducted 3 weeks post-spray were 20.2% and 2.9% in the IRS-treated and control huts, respectively. The mean 24 h mortality rates from IRS-treated and control huts were 100% and 2.9%, respectively (Fig. 5).\n", + "\n", + "The combined mean 30 min knockdown rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. exposed to IRS-treated huts 10 weeks post-spray, with and without pre-exposure to PBO, was 1.1% (Fig. 6). The 24 h mortality rate of the _An. arabiensis_ laboratory strain and wild population of _An. gambiae_ s.l. at 10 weeks post-spray which were exposed to IRS-treated hut wall surfaces were 100%, irrespective of pre-exposure of mosquitoes to PBO.\n", + "\n", + "header: Data analysis\n", + "\n", + "Data from the five treatment huts were compared with data from the control hut to determine the insecticidal effects on the variables listed above.\n", + "\n", + "Personal protection, killing effect, and exophily were estimated using the following formulas [9, 11].\n", + "\n", + "\\[\\text{Personal protection }(\\%) = 100 \\times (B_{u} - B_{t} )/B_{u} ;\\]\n", + "\n", + "where \\(B_{t}\\) is the total number of freshly blood-fed mosquitoes in the huts with treated nets. \\(B_{u}\\) is the total number of freshly blood-fed mosquitoes in the huts with untreated nets.\n", + "\n", + "\\[\\text{Killing effect }(\\%) = 100 \\times (K_{t} - K_{u} )/T_{u} ;\\]\n", + "\n", + "where \\(K_{t}\\) is number of mosquitoes killed (immediate) in the huts with treated nets. \\(K_{u}\\) is number of mosquitoes killed (immediate) in the huts with untreated nets. \\(T_{u}\\) is the total number of mosquitoes collected from the huts with untreated nets.\n", + "\n", + "\n", + "Exophily (%) = (E_v/Et) x 100;\n", + "\n", + "where Ev is the number of mosquitoes found in verandah. Et is the total number of mosquitoes found inside the hut and verandah\n", + "\n", + "For all three parameters, mosquito entry was estimated by adding the number of dead and alive mosquitoes observed inside the hut and the verandah. Estimates of personal protection and killing effect were determined using mosquitoes from all collection nights.\n", + "\n", + "To test differences in mean mosquito density in each of the treatment huts, ANOVA was employed after log-transformation of non-normal distributed mosquito count data. T-tests were employed to determine the differences in mean proportions of blood-fed mosquitoes and mosquitoes exiting early from the different test huts and control hut.\n", + "\n", + "In all analyses, the hut with the untreated net and without IRS was used as a negative control, but comparisons were made between all treatment groups. In all analyses, individual huts and sleepers were included in the models as random effects.\n", + "\n", + "header: Background: Methods\n", + "\n", + "A Latin Square Design was employed using six experimental huts to collect entomological data. Human volunteers slept in huts with different types of nets (pyrethroid-only net, PBO net, and untreated net) either with or without IRS (Actallic 300CS). The hut with no IRS and an untreated net served as a negative control. The study was conducted for a total of 54 nights. Both alive and dead mosquitoes were collected from inside nets, in the central rooms and verandah the following morning. Data were analysed using Stata/SE 14.0 software package (College Station, TX, USA).\n", + "\n", + "header: Variables\n", + "\n", + "Four study outcomes measured were:\n", + "\n", + "1. Deterrence--the reduction in hut entry by mosquitoes in treatment huts relative to the control hut (hut with untreated net and no IRS).\n", + "2. Exophily--the proportion of mosquitoes found resting on the walls of the verandah.\n", + "3. Blood-feeding inhibition--the reduction in blood-feeding in treatment huts in comparison with control hut (hut with untreated net and no IRS).\n", + "4. Immediate and delayed mortality--the proportion of mosquitoes entering the hut that were dead in the morning (immediate mortality) or after being caught alive and held for 24 h with access to a sugar solution (delayed mortality).\n", + "\n", + "header: Funding\n", + "\n", + "This work was funded by the US President's Malaria initiative.\n", + "\n", + "header: Discussion\n", + "\n", + "Malaria vector control interventions have been intensified over the last decade in Ethiopia resulting in remarkable progress, with a reduction in children under-five mortality rates from 123 deaths per 1000 live births in 2005 to 55 deaths per 1000 live births in 2019 [15]. The vector control activities including mass-distribution/replacement of ITNs every 3 years in accordance with WHO recommendations and deployment of IRS in targeted areas appear to have played vital roles in the successes obtained in malaria control in Ethiopia [16]. However, malaria still remains a public health challenge in the country, where an estimated 52% of the population lives in areas at risk of malaria. With the successes gained in malaria control, a national malaria elimination goal is set for 2030 [17]. This study evaluated the impact of combining currently available vector control tools on mosquito behaviour and mortality.\n", + "\n", + "Compared to PernaNet(r) 2.0, PernaNet(r) 3.0 is impregnated with a higher concentration of deltamethrin and the roof panel is treated with both deltamethrin and PBO. The higher killing effect of PernaNet(r) 3.0 compared to PernaNet(r) 2.0 in this study could be attributed to the presence of the PBO synergist on the roof panel of the net and/or higher dosage of deltamethrin in the net. The synergist PBO works to inhibit P450 detoxification of pyrethroid insecticides and can result in partial or complete restoration of susceptibility to certain pyrethroids, such as deltamethrin, hence enhancing efficacy of the insecticides [18]. The role of PBO in affecting susceptibility in both wild and laboratory strain mosquitoes exposed to Actellite(r) 300CS\n", + "\n", + "Fig. 4: Proportion of _Anopheles_ collected from inside nets, rooms and verandahs of different experimental huts, Asendabo, Ethiopia \n", + "sprayed walls could not be determined as mortality rates in all IRS treatment huts were 100%. PBO nets have been shown to provide high levels of protection against _An. gambiae_ in a recent experimental hut trial in Cote d'Ivoire [19]. Moreover, the improved protective role of PBO nets on malaria prevalence was also documented in Uganda [20]. Personal protective efficacy of PBO nets may also last longer compared to the standard nets [21]. PBO nets are particularly important as a malaria control tool in areas where the protection against PBO is not a viable alternative to the standard nets.\n", + "\n", + "Fig. 5: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain following wall bioassays 3 weeks after ActeIlic 300CS spraying, Asendabo, Ethiopia\n", + "\n", + "Fig. 6: Mean 30 min knockdown and 24 h mortality rates of the susceptible _An. arabiensis_ laboratory strain and wild _An. gambiae_ s.l. (with and without pre-exposure to PBO) following wall bioassays 10 weeks after IRS using ActeIlic 300CS, Asendabo, Ethiopia \n", + "pyrethroid resistance is high in the vector populations [22] and is, therefore, under consideration for more widespread distribution in Ethiopia. Despite these added advantages of PBO nets, the cost is currently higher than pyrethroid nets which may limit their wider use in malaria vector control in malaria endemic areas. Additionally, this study provides an example of a setting with high levels of pyrethroid resistance where PBO nets may not be sufficient.\n", + "\n", + "The proportion of _Anopheles_ retrieved from the verandah of huts with both PermaNet 2.0 and PermaNet 3.0 was higher than those from the verandah of the control hut. Huts with PermaNet 2.0 induced significantly higher exito-repellency compared to control huts. Insecticides often induce toxicity to mosquitoes. However, the non-toxic 'exito-repellent' effects of insecticides are often less understood. Pyrethroid and organophosphate insecticides are also known to have these non-killing effects. The impact of the non-killing effects of the insecticides on the risk of malaria is not clearly understood. Though exito-repellency appears to reduce indoor human-vector contact, it may on the contrary enhance risk of outdoor mosquito biting [23].\n", + "\n", + "The role of IRS as a key malaria vector control intervention tool is evident. Immediate mortality was observed in mosquitoes collected from the three huts sprayed with Actellic(r) 300CS up to the end of the study at 10 weeks post-spray. The proportion of blood-fed _Anopheles_ was significantly lower in the IRS-treated huts compared to the control hut. This could be due to the fast-acting nature of Actellic(r) 300CS insecticide with both contact and fumigant effects. This shows the potential of Actellic(r) 300CS as an insecticide of choice for IRS in areas where the local vector population is susceptible to the insecticide. _Anopheles arabiensis_ is susceptible to pirimibos-methyl in most parts of Ethiopia [10, 24]. Some earlier studies conducted in Ethiopia showed the effectiveness of combining IRS with ITNs compared to ITNs alone in suppressing vector populations [25]. Added benefits of combining IRS and ITNs in malaria prevention was also reported from other areas in sub-Saharan Africa [26-28]. In contrast, limited or no added benefit of combining IRS with ITNs as compared to ITNs alone has been reported elsewhere [29, 30]. This inconsistency could be attributed to differences in the intensity of malaria transmission and insecticide resistance of the local vector populations. The impact of the combined use of available vector control interventions appears to be more pronounced when applied in high transmission areas, and where the local vector populations are susceptible to the insecticide used for the IRS component [25].\n", + "\n", + "The importance of combining IRS and ITNs for malaria vector control is believed partly to come from the low or inconsistent utilization of ITNs by users and short residual efficacy of IRS insecticides [31, 32]. In Ethiopia, household surveys have shown approximately 50% of children under five and pregnant women use their nets with geographic variation [33]. The gap often created as a result of low utilization of ITNs may be complemented with IRS. ITN utilization and care depends on personal decisions and behavior [34]. However, once properly implemented, IRS rapidly suppresses local vector populations with no additional behaviors required from the residents, hence reducing malaria incidence [35]. However, effectiveness of IRS for malaria vector control is highly affected by both physiological and behavioral resistance of the local vector population to the insecticide [36], apart from operational factors and higher costs.\n", + "\n", + "As the study was conducted during the dry season of the year, the mosquito population density was not high and, therefore, limits the generalizability of the results. However, the findings of this study could provide preliminary information for vector control programs for the rational choice of future vector control intervention tools. In addition, combining indoor residual spraying using pirimibos-methyl with PBO nets has been reported to be antagonistic in some studies, but a negative interaction or antagonism between PBO and pirimibos-methyl was not detected in this study.\n", + "\n", + "header: Blood meal host source analysis and mosquito identification\n", + "\n", + "All the fed mosquitoes collected from the different huts were assayed to determine the blood meal host source using direct ELISA [13]. Moreover, a sub-sample of _An. gambiae_ s.l. was also molecularly identified to species using species-specific PCR following established protocol [14].\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Ethiopia\",\"Site\":\"Asendabo\"}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Net_holed\": {\"title\": \"Net Holed\", \"description\": \"Numerical count of the number of holes a net has - 0 if new and NA if not reported\\nNote - for tunnel tests there are holes that allow the mosquitoes the option of passing through to feed on the guinea pig.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"PermaNet 2.0\",\"Insecticide\":\"deltamethrin\",\"Net_holed\":18.0,\"pHI_category\":\"Torn\",\"Synergist\":null},\"N02\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"deltamethrin\",\"Net_holed\":18.0,\"pHI_category\":\"Torn\",\"Synergist\":\"PBO\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Chemical analysis results\n", + "\n", + "For PermaNet 3.0, PBO was only recorded from the roof panel of the nets; for Olyset Plus, PBO was recorded on all 5 panels (Table 6). Compared to the pyrethroid component, much less PBO was retained in both types of pyrethroid-PBO ITNs after 20 washes (58.7% vs. 25% with Olyset Plus and 80.9% vs. 68.8% with PermaNet 3.0, P < 0.05). The decrease in PBO content after washing was more evident in Olyset Plus than in PermaNet 3.0 netting, hence the wash retention index of PBO was higher with PermaNet 3.0 compared to Olyset Plus (98.1% vs. 93.3%).\n", + "\n", + "Figure 4: Tunnel test mortality (%) of susceptible and resistant strains of _Anopheles gambiae_ s.l. exposed to Olyset Plus vs. Olyset Net\n", + "\n", + "Figure 3: Mortality (%) of susceptible and resistant strains of _An. gambiae_ s.l. in cone bioassays with Olyset Plus and Olyset Net. S = susceptible, R = resistant\n", + "\n", + "header: Supplementary laboratory bioassays\n", + "\n", + "To help further explain the results obtained in the experimental huts, WHO cone bioassays and tunnel tests were performed on samples of netting (\\(30\\times 30\\) cm) obtained from Olyset Net and Olyset Plus when unwashed and after 10 and 20 washes. Washing was performed in the laboratory following WHO guidelines [22]. PermaNet 3.0 was not tested in the laboratory bioassays owing to the restricted application of PBO to the roof of the net preventing a realistic direct comparison with Olyset Plus in bioassays especially tunnel tests. Net samples from each ITN type and each wash point were tested against the following strains:\n", + "\n", + "1. _An. gambiae_ sensu lato (s.l.) strains from Cove, Benin (Cove strain) which is highly pyrethroid resistant. It originates from the experimental hut station in Cove and has shown > 200-fold resistance compared to the susceptible Kisumu strain in susceptibility bioassays. Resistance is mediated by elevated levels of P450s and high frequencies of _kdr_ [20].\n", + "2. _An. gambiae_ VKPer strain, which originated from the Kou Valley in Burkina Faso. VKPer has moderate levels of pyrethroid resistance mediated only by high frequencies of _kdr_.\n", + "3. _An. gambiae_ s.s. Kisumu strain, a reference susceptible strain which originated from Kisumu Kenya.\n", + "\n", + "Approximately two hundred 2-5 days old mosquitoes of each strain were exposed for 3 min in cone bioassays to four net samples of each net type in cohorts of 5 mosquitoes per cone. Knock down in cone bioassays was recorded after 1 h and mortality after 24 h.\n", + "\n", + "Two to three hundred 5-8 days old mosquitoes of each strain were also exposed to each net type in tunnel tests in replicates of 50 mosquitoes per net sample. The tunnel test is a laboratory assay designed to simulate natural host-seeking behaviour of mosquitoes at night in the presence of a net. It consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections by means of a netting frame fitted into a slot across the tunnel. An anesthetized guinea pig was housed unconstrained in a small cage in one section, and mosquitoes were released in the other section at dusk and left overnight. The net samples were holed with nine 1-cm diameter holes to allow host-seeking mosquitoes to penetrate the baited chamber; an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 degC and 75-85% RH. The next morning, the numbers found alive or dead, fed, or unfed, in each section were recorded. Live mosquitoes were provided with sugar solution and delayed mortality recorded after 24 h. The guinea pigs used in this study were kept in accordance with institutional guidelines for animal care.\n", + "\n", + "header: Experimental hut treatments\n", + "\n", + "Olyset Plus and PermaNet 3.0 were compared in the experimental huts when unwashed and after 20 standardized washes. A WHO-recommended pyrethroid-only long-lasting net (Olyset Net) was included to demonstrate the added effect of PBO on the insecticide-resistant local vector species. Nets were washed using savon de Marseilles and rinsed twice following WHO procedures for washing nets for experimental hut studies [22].\n", + "\n", + "The following seven (7) treatments were thus tested in seven experimental huts:\n", + "\n", + "1. Untreated polyethylene net\n", + "2. Olyset Net unwashed (permethrin only)\n", + "3. Olyset Net washed 20 times.\n", + "4. PermaNet 3.0 unwashed (Roof: deltamethrin plus PBO; sides: deltamethrin only)\n", + "5. PermaNet 3.0 washed 20 times.\n", + "6. Olyset Plus unwashed (permethrin plus PBO on all panels)\n", + "7. Olyset Plus washed 20 times.\n", + "\n", + "header: Background: Methods\n", + "\n", + "An experimental hut trial was performed in Cove, Benin to compare PermaNet 3.0 (deltamethrin plus PBO on roof panel only) to Olyset Plus (permethrin plus PBO on all panels) against wild pyrethroid-resistant _Anopheles gambiae_ sensu lato (s.l) following World Health Organization (WHO) guidelines. Both nets were tested unwashed and after 20 standardized washes compared to Olyset Net. Laboratory bioassays were also performed to help explain findings in the experimental huts.\n", + "\n", + "header: Mosquito blood-feeding rates in experimental huts\n", + "\n", + "The blood-feeding rates of wild pyrethroid-resistant _An. gambiae s.l_ that entered the experimental huts are presented in Fig. 2 with further details on mosquito feeding provided in Table 4. The percentage blood-feeding was lower in huts with the unwashed pyrethroid-PBO ITNs and was lowest of all with unwashed Olyset Plus as compared to unwashed PermaNet 3.0 (8% vs 19%, P < 0.001). For all net types, the data showed an overall increase in blood feeding with washed nets compared to unwashed nets and a decrease in blood-feeding inhibition relative to the untreated net. Percentage blood-feeding when washed 20 times did not differ significantly between the pyrethroid-PBO types (38% with PermaNet 3.0 vs. 35% with Olyset Plus, P = 0.708). The proportions of mosquitoes collected resting in the nets were lowest with the\n", + "\n", + "Fig. 1: Mortality of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", + "unwashed pyrethroid-PBO nets (2-6%), which is consistent with the higher toxicity observed with this type of net. Personal protection with both types of pyrethroid-PBO ITMs were > 80% when unwashed but this declined after 20 washes to 53% with PermaNet 3.0 and 11% with Olyset Plus.\n", + "\n", + "header: Abstract\n", + "\n", + "Comparative efficacy of two pyrethroid-piperonyl butoxide nets (Olyset Plus and PermaNet 3.0) against pyrethroid resistant malaria vectors: a non-inferiority assessment\n", + "\n", + "Corine Ngufor, Josias Fagbohoun, Abel Agbevo, Hanafy Ismail, Joseph D. Challenger, Thomas S. Churcher, Mark Rowland\n", + "\n", + "\n", + "\n", + "Pyrethroid-PBO nets were conditionally recommended for control of malaria transmitted by mosquitoes with oxidase-based pyrethroid-resistance based on epidemiological evidence of additional protective effect with Olyset Plus compared to a pyrethroid-only net (Olyset Net). Entomological studies can be used to assess the comparative performance of other brands of pyrethroid-PBO ITNs to Olyset Plus.\n", + "\n", + "header: Table 4: Blood-feeding rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", + "footer: Values along a row bearing the same letter label are not significantly different (P > 0.05) * Value set to zero as more blood fed mosquitoes were caught in washed Olyset Net huts than control hut\n", + "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", + "\n", + "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total blood fed\",\"Control\":\"496\",\"Olyset Net\":\"324\",\"Olyset Net.1\":\"807\",\"PermaNet 3.0\":\"95\",\"PermaNet 3.0.1\":\"231\",\"Olyset Plus\":\"56\",\"Olyset Plus.1\":\"442\"},\"3\":{\"Net type\":\"% Blood fed\",\"Control\":\"52a\",\"Olyset Net\":\"29b\",\"Olyset Net.1\":\"52a\",\"PermaNet 3.0\":\"19c\",\"PermaNet 3.0.1\":\"38d\",\"Olyset Plus\":\"8e\",\"Olyset Plus.1\":\"35d\"},\"4\":{\"Net type\":\"95% conf intervals\",\"Control\":\"48.4\\u201354.7\",\"Olyset Net\":\"25.9\\u201331.2\",\"Olyset Net.1\":\"49.7\\u201354.7\",\"PermaNet 3.0\":\"15.9\\u201322.9\",\"PermaNet 3.0.1\":\"33.7\\u201341.3\",\"Olyset Plus\":\"6.1\\u201310.2\",\"Olyset Plus.1\":\"32.1\\u201337.3\"},\"5\":{\"Net type\":\"% Blood-feeding inhibition\",\"Control\":\"-\",\"Olyset Net\":\"44\",\"Olyset Net.1\":\"0\",\"PermaNet 3.0\":\"63\",\"PermaNet 3.0.1\":\"27\",\"Olyset Plus\":\"85\",\"Olyset Plus.1\":\"33\"},\"6\":{\"Net type\":\"inside net\",\"Control\":\"294\",\"Olyset Net\":\"184\",\"Olyset Net.1\":\"542\",\"PermaNet 3.0\":\"28\",\"PermaNet 3.0.1\":\"130\",\"Olyset Plus\":\"17\",\"Olyset Plus.1\":\"241\"},\"7\":{\"Net type\":\"inside net (%)\",\"Control\":\"31a\",\"Olyset Net\":\"16bc\",\"Olyset Net.1\":\"35a\",\"PermaNet 3.0\":\"6d\",\"PermaNet 3.0.1\":\"21b\",\"Olyset Plus\":\"2e\",\"Olyset Plus.1\":\"19c\"},\"8\":{\"Net type\":\"Personal protection (%)\",\"Control\":\"-\",\"Olyset Net\":\"35\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"81\",\"PermaNet 3.0.1\":\"53\",\"Olyset Plus\":\"89\",\"Olyset Plus.1\":\"11\"}}\n", + "\n", + "header: Mosquito entry and exiting rates in experimental huts: Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts\n", + "\n", + "Mortality rates of wild pyrethroid resistant mosquitoes that entered the experimental huts are presented in Fig. 1 with further details provided in Table 3. The lowest mortality was achieved with Olyset Net (18% before washing and 12% after 20 washes). Percentage mortality with unwashed pyrethroid-PBO nets was highest with PermaNet 3.0 (41%) but this declined significantly after 20 washes (17%, P < 0.001). Mortality with unwashed Olyset Plus was 28% and while this value was significantly lower than the mortality shown by unwashed PermaNet 3.0 (P < 0.001), it did not decrease significantly after 20 washes (28% vs. 24%, P = 0.433) whereas for PermaNet 3.0 it declined. Hence, Olyset Plus induced higher mortality rates than PermaNet 3.0 after 20 washes (24% vs 17%, P < 0.001). With respect to the pyrethroid-only ITN, both pyrethroid-PBO nets induced significantly higher mortality rates than Olyset Net with nets washed 20 times (P < 0.001) though the difference was higher with Olyset Plus (24% vs. 12%), than with PermaNet 3.0 (17% vs. 12%). After 20 washes, mortality with PermaNet 3.0 declined to the same level as the unwashed Olyset Net, (17% vs. 18%, P = 0.061) but remained significantly higher with Olyset Plus (24% vs. 17%, P = 0.036).\n", + "\n", + "header: Cone bioassay results: Tunnel test results\n", + "\n", + "The results from the tunnel tests comparing Olyset Plus and Olyset Net unwashed and after 10 and 20 washes against all three strains are presented in Figs. 4 and 5 for mortality and blood-feeding inhibition respectively. Mortality rates were generally higher in the tunnels tests compared to the cone bioassays and decreased as the strain become more pyrethroid-resistant (Fig. 4). Mortality rates with the Kisumu strain were very high with Olyset Net and Olyset Plus (> 95%). With the VKPer strain, mortality remained > 80% after 20 washes with both ITN types. With the Cove strain, mortality was significantly higher with Olyset Plus compared to Olyset Net at 0 and 10 washes but about the same after 20 washes. With unwashed nets, blood-feeding inhibition in the tunnel tests was consistently higher with Olyset Plus (> 90%) compared to Olyset Net (27-75%) for all three strains tested (Fig. 5). After 10 and 20 washes, blood-feeding inhibition of the Kisumu and VKPer strain remained > 80% with Olyset Plus and Olyset Net. With Cove strain, blood-feeding inhibition was also higher with Olyset Plus at 0 and 10 washes but declined to about the same level as Olyset Net after 20 washes (56%).\n", + "Mortality in the untreated control tunnel was < 10% with all three strains.\n", + "\n", + "header: Results\n", + "\n", + "Mortality with permethrin and alpha-cypermethrin treated papers was 100% with the laboratory-maintained pyrethroid-susceptible _An. gambiae_ Kisumu strain. With wild pyrethroid resistant _An. gambiae_ s.l. from Cove, mortality rates were <50% with all three pyrethroid insecticides tested (Table 1) thus confirming the high levels of pyrethroid resistance in this vector population. Mortality however increased from 19.2 to 52.5% with permethrin, 41.7% to 69.7% with deltamethrin and 0% to 82.4% with alphacypermethrin after pre-exposure of the Cove strain to PBO synergist (Table 1). This result demonstrated that mixed function oxidases are overexpressed in the wild Cove vector population and their effect can be effectively inhibited by the PBO synergist.\n", + "\n", + "header: Table 2 Entry and exiting rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", + "footer: Values along a row bearing the same letter label are not signi\u001d\n", + "cantly different (P>0.05)* Value set to zero as more mosquitoes caught in Olyset Net huts than control huts\n", + "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", + "\n", + "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"N collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"N females\\/night\",\"Control\":\"23a\",\"Olyset Net\":\"27ab\",\"Olyset Net.1\":\"37b\",\"PermaNet 3.0\":\"12c\",\"PermaNet 3.0.1\":\"15d\",\"Olyset Plus\":\"16d\",\"Olyset Plus.1\":\"30ab\"},\"3\":{\"Net type\":\"% deterrence\",\"Control\":null,\"Olyset Net\":\"0*\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"49\",\"PermaNet 3.0.1\":\"36\",\"Olyset Plus\":\"28\",\"Olyset Plus.1\":\"0\"},\"4\":{\"Net type\":\"N exiting\",\"Control\":\"429\",\"Olyset Net\":\"639\",\"Olyset Net.1\":\"669\",\"PermaNet 3.0\":\"319\",\"PermaNet 3.0.1\":\"370\",\"Olyset Plus\":\"468\",\"Olyset Plus.1\":\"712\"},\"5\":{\"Net type\":\"% exiting\",\"Control\":\"45a\",\"Olyset Net\":\"56b\",\"Olyset Net.1\":\"43a\",\"PermaNet 3.0\":\"65cd\",\"PermaNet 3.0.1\":\"60ce\",\"Olyset Plus\":\"68d\",\"Olyset Plus.1\":\"56be\"},\"6\":{\"Net type\":\"95% conf. limits\",\"Control\":\"41.5\\u201347.7\",\"Olyset Net\":\"53.4\\u201359.2\",\"Olyset Net.1\":\"40.8\\u201345.7\",\"PermaNet 3.0\":\"61.0\\u201369.5\",\"PermaNet 3.0.1\":\"56.2\\u201363.9\",\"Olyset Plus\":\"64.4\\u201371.4\",\"Olyset Plus.1\":\"53.1\\u201358.6\"}}\n", + "\n", + "header: Experimental hut site: Insecticide resistance bioassays\n", + "\n", + "To assess the frequency of pyrethroid resistance and presence of mixed function oxidases in the Cove vector population during the trial, adult mosquitoes that emerged from larvae collected from breeding sites close to experimental huts were tested in WHO cylinder bioassays with and without pre-exposure to PBO. A total of ~100 mosquitoes of the pyrethroid resistant _An. gambiae_ s.l. Cove strain and the pyrethroid susceptible _An. gambiae_ Kisumu strain were exposed to treated filter papers in WHO cylinder bioassays in batches of 25. Tests were performed with papers treated with permethrin 0.75%, alpha-cypermethrin 0.05% and deltamethrin 0.05%. To assess presence of MFO, some mosquitoes were also pre-exposed to papers treated with 4% PBO prior to exposure to insecticide-treated papers. Exposure to PBO and to insecticides lasted 1 h, knockdown was recorded after 60 min and mortality after 24 h.\n", + "\n", + "header: Background\n", + "\n", + "Long-lasting insecticidal nets (LLINs) remain one of the most powerful tools to reduce malaria transmission in a community and provide personal protection to the user [1, 2]. They have contributed significantly to recent reductions in malaria burden [3]. Their efficacy is however threatened by increasing resistance to pyrethroids [4, 5]; the insecticide of choice used on bed-nets owing to its safety, low cost and rapid activity on vector mosquitoes [6]. To maintain the effectiveness of insecticide treated nets for malaria control, new types of LLINs treated with alternative insecticides and compounds which can either replace or complement pyrethroids on bed-nets are urgently needed.\n", + "\n", + "A new class of insecticide treated nets (ITNs) combining pyrethroids and piperonyl butoxide (PBO) (pyrethroid-PBO ITNs) have been developed [7]. PBO is a synergist that inhibits specific metabolic enzymes such as mixed-function oxidases within mosquitoes that detoxify or sequester insecticides before they can have a toxic effect on the mosquito. Pyrethroid-PBO nets can therefore induce increased mortality of pyrethroid-resistant malaria vectors that express mixed function oxidase based pyrethroid resistance mechanisms that are inhibited by the PBO in the net. These nets were given an interim endorsement as a new WHO class of vector control products in 2017 based on epidemiological data from a cluster randomized controlled trial in North Eastern Tanzania [8], that demonstrated additional malaria control with one prototype pyrethroid-PBO net (Olyset Plus) compared to a pyrethroid-only net (Olyset Net), against pyrethroid resistant malaria vectors of moderate intensity, partly conferred by monooxygenase-based resistance mechanism. Pyrethroid-PBO ITNs are conditionally recommended for malaria vector control instead of pyrethroid-only ITNs in areas of confirmed intermediate levels of resistance mediated by monooxygenase-based resistance mechanism [9]. This endorsement has been followed by an increasing uptake of pyrethroid-PBO nets worldwide [10]; in sub-Saharan Africa for example, the proportion of pyrethroid-PBO nets of all nets delivered increased from 3% in 2018 to 35% in 2021.\n", + "\n", + "While Olyset Plus was the first in class pyrethroid-PBO net to demonstrate public health value as observed in the Tanzanian trial [8], there are currently five additional types of pyrethroid-PBO ITNs on the World Health Organization (WHO) list of prequalified vector control products: PermaNet 3.0, Veeralin, Tsara Boost, Tsara Plus and very recently DuraNet Plus [7]. These nets have all demonstrated superiority over pyrethroid-only nets in terms of mosquito mortality and blood-feeding inhibition in multiple experimental hut trials across Africa [11, 12, 13, 14, 15, 16, 17]. However, they differ from Olyset Plus in their design and specifications; typically, the location of PBO on the net (i.e., all panels vs. roof panel only), the type and dose of pyrethroid used, bioavailability and retention of PBO after washing and could, therefore, differ in entomological and epidemiological impact. A recent large cluster-randomized trial in Uganda, evaluating the efficacy of Olyset Plus and PermaNet 3.0 compared to pyrethroid-only nets in a setting of high pyrethroid resistance, also demonstrated better protection against malaria with pyrethroid-PBO nets compared to pyrethroid-only nets for up to 18 months confirming the findings of the Tanzanian trial [18]. While the Ugandan trial was not powered to directly compare between the different ITN brands tested, the results showed that the additional protective effect of the pyrethroid-PBO net compared to the pyrethroid-only net was initially large with PermaNet 3.0 at 6 months post-distribution but lasted only up to 12 months whereas additional protective effect with Olyset Plus appeared to have a delayed onset which was not observed at 6 months but became evident at 12 months and lasted up to 18 months. There are major differences in design between Olyset Plus and PermaNet 3.0, which could have implications on their epidemiological impact; Olyset Plus is a polyethylene net incorporated with permethrin and PBO on all panels while PermaNet 3.0 is a polyester net coated with deltamethrin with PBO restricted to the roof of the net.\n", + "\n", + "To generate assurance of comparative performance of new candidate products within an established WHO vector control product class, without the need for epidemiological evidence for each new product, the WHO has developed new experimental hut study guidelines for assessing their non-inferiority to a first in class product for which evidence of public health value has already been generated [19]. These provisional guidelines are to be piloted with pyrethroid-PBO nets by comparing other WHO/PQ-listed pyrethroid-PBO nets with the first in class product, Olyset Plus. This study compared the efficacy and wash resistance of Olyset Plus and PermaNet\n", + "3.0 and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against wild free-flying pyrethroid resistant malaria vectors in Southern Benin.\n", + "\n", + "header: Supplementary laboratory bioassays results\n", + "\n", + "The 3-min cone bioassay mortality results for all 3 mosquito strains and wash points tested are presented in Fig. 3. Unwashed Olyset Net induced very low mortality rates against the susceptible Kisumu strain (17-20%) and even lower mortality rates against the pyrethroid resistant strains (< 5%). Cone bioassay mortality rates with unwashed Olyset Plus were higher across all 3 strains compared to Olyset Net though mortality decreased as the strain tested became more pyrethroid-resistant. Cone bioassay mortality however dropped significantly with washed net samples. Mortality with the untreated net samples did not exceed 5% with any strain tested.\n", + "\n", + "header: Insecticide resistance in malaria vectors in Cove: Experimental hut trial results\n", + "\n", + "A total of 6711 pyrethroid resistant female _An. gambiae_ s.l. were collected during the experimental hut trial. The entry and exiting rates of wild pyrethroid resistant _An. gambiae_ s.l. from the experimental huts with the different ITN types tested in the trial are presented in Table 2. Compared to the control, Olyset Net did not deter mosquitoes from entering the experimental huts (0% when unwashed and after 20 washes). Mosquito deterrence was significantly higher with PermaNet 3.0 compared to Olyset Plus both unwashed (49% vs. 28%, P < 0.001) and after 20 washes (36% vs. 0%, P < 0.001). Nevertheless, early exiting of mosquitoes from the experimental huts into the veranda trap did not differ significantly between both pyrethroid-PBO net types both when unwashed (65% with PermaNet 3.0 vs 68% with Olyset Plus, P = 0.232) and after 20 washes (60% with PermaNet 3.0 vs. 56% with Olyset Plus, P = 0.053).\n", + "\\begin{table}\n", + "\\begin{tabular}{l c c c c c c}\n", + "**Net type** & **Control** & **Olyset Net** & & **PermNet 3.0** & **Olyset Plus** \\\\ Number of washes & 0 & 0 & 20 & 0 & 20 & 0 & 20 \\\\ N collected & 962 & 1135 & 1546 & 489 & 616 & 688 & 1275 \\\\ N females/night & 233 & 27\\({}^{\\text{hb}}\\) & 37\\({}^{\\text{b}}\\) & 12\\({}^{\\text{c}}\\) & 15\\({}^{\\text{d}}\\) & 16\\({}^{\\text{d}}\\) & 30\\({}^{\\text{hb}}\\) \\\\ \\% deterrence & – & 0\\({}^{\\text{a}}\\) & 0\\({}^{\\text{a}}\\) & 49 & 36 & 28 & 0 \\\\ N eating & 429 & 639 & 669 & 319 & 370 &\n", + "\n", + "header: Table 1: Mortality of pyrethroid resistant Anopheles gambiae s.l. from Cove in WHO cylinder bioassays with and without pre-exposure to PBO\n", + "footer: None\n", + "columns: ['Variable', 'N exposed', 'N dead', '% Dead']\n", + "\n", + "{\"0\":{\"Variable\":\"Control\",\"N exposed\":101,\"N dead\":0,\"% Dead\":0.0},\"1\":{\"Variable\":\"PBO 4% only\",\"N exposed\":103,\"N dead\":3,\"% Dead\":2.9},\"2\":{\"Variable\":\"Permethrin 0.75%\",\"N exposed\":104,\"N dead\":20,\"% Dead\":19.2},\"3\":{\"Variable\":\"Deltamethrin 0.05%\",\"N exposed\":91,\"N dead\":38,\"% Dead\":41.7},\"4\":{\"Variable\":\"Alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":0,\"% Dead\":0.0},\"5\":{\"Variable\":\"PBO 4% then permethrin 0.75%\",\"N exposed\":99,\"N dead\":52,\"% Dead\":52.5},\"6\":{\"Variable\":\"PBO 4% then deltamethrin 0.05%\",\"N exposed\":99,\"N dead\":69,\"% Dead\":69.7},\"7\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4},\"8\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4}}\n", + "\n", + "header: Chemical analysis\n", + "\n", + "At the end of the experimental hut trial, five pieces of netting (\\(25\\times 25\\) cm) obtained from the panels of replicate nets of each net type (before and after washing) used in the huts were assessed for deltamethrin, permethrin and PBO content using HPLC. Insecticide was extracted from each net piece with an area of 48 sq cm collected from the five net samples (\\(25\\times 25\\) cm) obtained from each whole net. The insecticide content of each sample was determined by injecting ten ul aliquots of the extract on a reverse-phase Hypersil GOLD C18 column (75 A, \\(250\\times 4.6\\) mm, 5-um particle size; Thermo Scientific) at room temperature. A mobile phase of 70% acetonitrile in water was used at a flow rate of 1 ml min\\({}^{-1}\\) to separate the target analyte. Chromatographic peaks of the insecticides and internal standard were detected at a wavelength of 232 nm with the Ultimate 3000 UV detector and analysed with Dionex Chromeleon(tm) 6.8 Chromatography Data System software. Quantities of insecticide were calculated from standard curves established by known concentrations of the insecticide authenticated standards and corrected by internal standard readings in each sample relative to control.\n", + "\n", + "Data from chemical analysis was used to calculate the percentage retention of each active ingredient after 20 washes relative to the unwashed net and the wash retention index. Wash-resistance index was calculated according to WHO guidelines [22] as indicated below:\n", + "\n", + "\\[\\text{Wash resistance index} = 100\\times\\text{n}\\sqrt{(\\text{tn}/\\text{t0})}\\] \\[\\left(\\text{free migration stage behaviour}\\right)\\]\n", + "\n", + "where \\(\\text{tn}=\\text{total active ingredient content after n washing cycles, t0=total active ingredient content before washing, n=number of washes.\n", + "\n", + "header: Results\n", + "\n", + "With unwashed nets, mosquito mortality was higher in huts with PermaNet 3.0 compared to Olyset Plus (41% vs. 28%, P < 0.001). After 20 washes, mortality declined significantly with PermaNet 3.0 (41% unwashed vs. 17% after washing P < 0.001), but not with Olyset Plus (28% unwashed vs. 24% after washing P = 0.433); Olyset Plus induced significantly higher mortality than PermaNet 3.0 and Olyset Net after 20 washes. PermaNet 3.0 showed a higher wash retention of PBO compared to Olyset Plus. A non-inferiority analysis performed with data from unwashed and washed nets together using a margin recommended by the WHO, showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality (25% with Olyset Plus vs. 27% with PermaNet 3.0, OR = 1.528, 95%Cl = 1.02-2.29) but not in reducing mosquito feeding (25% with Olyset Plus vs. 30% with PermaNet 3.0, OR = 1.192, 95%Cl = 0.77-1.84). Both pyrethroid-PBO nets were superior to Olyset Net.\n", + "\n", + "header: Table 3 Mortality of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", + "footer: Values along a row bearing the same letter label are not signi\u001d\n", + "cantly di\u001c\n", + "erent (P>0.05)\n", + "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", + "\n", + "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total dead\",\"Control\":\"12\",\"Olyset Net\":\"209\",\"Olyset Net.1\":\"284\",\"PermaNet 3.0\":\"198\",\"PermaNet 3.0.1\":\"103\",\"Olyset Plus\":\"190\",\"Olyset Plus.1\":\"297\"},\"3\":{\"Net type\":\"Mortality (%)\",\"Control\":\"1a\",\"Olyset Net\":\"18b\",\"Olyset Net.1\":\"12c\",\"PermaNet 3.0\":\"41d\",\"PermaNet 3.0.1\":\"17b\",\"Olyset Plus\":\"28e\",\"Olyset Plus.1\":\"24e\"},\"4\":{\"Net type\":\"95% conf. limits\",\"Control\":\"0.6\\u20132.0\",\"Olyset Net\":\"16.2\\u201320.1\",\"Olyset Net.1\":\"10.3\\u201313.5\",\"PermaNet 3.0\":\"36.1\\u201344.8\",\"PermaNet 3.0.1\":\"13.8\\u201319.8\",\"Olyset Plus\":\"24.4\\u201331.1\",\"Olyset Plus.1\":\"21.0\\u201325.6\"},\"5\":{\"Net type\":\"Corrected for control (%)\",\"Control\":\"-\",\"Olyset Net\":\"17\",\"Olyset Net.1\":\"11\",\"PermaNet 3.0\":\"41\",\"PermaNet 3.0.1\":\"17\",\"Olyset Plus\":\"27\",\"Olyset Plus.1\":\"22\"}}\n", + "\n", + "header: Discussion\n", + "\n", + "Following the interim endorsement of pyrethroid-PBO nets by the WHO [23], malaria vector control programmes are faced with additional choice of different brands of prequalified pyrethroid-PBO nets [7]. Considering the wide variations in design of the available brands of these nets, studies generating the required assurance of comparative performance to Olyset Plus (the first in class pyrethroid-PBO net to demonstrate empirical evidence of entomological and epidemiological impact) are necessary. This study compared the efficacy and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against pyrethroid resistant malaria vectors in a highly endemic country of West Africa, following WHO guidelines [19, 22].\n", + "\n", + "The WHO susceptibility bioassays confirmed the high levels of pyrethroid resistance in the vector population at the experimental hut site during the trial, corroborating previous findings [20]. The increased mortality achieved in bioassays with pre-exposure to PBO showed that pyrethroid-resistance was indeed at least partly mediated by increased mono-oxygenase activity. The experimental hut trial demonstrated improved levels of mortality and blood-feeding inhibition with both pyrethroid-PBO ITN types compared to a standard pyrethroid-only LLIN against a vector population that was very resistant to pyrethroids; this was supported by results from the laboratory assays which compared Olyset Plus to Olyset Net against pyrethroid-resistant mosquito strains. These observations are partly attributable to the synergistic effect of the PBO on pyrethroid resistance and are consistent with other experimental hut trials across Africa and epidemiological trials performed in Tanzania [8] and Uganda [18].\n", + "\n", + "Twenty washes in experimental hut studies are indicated by WHO as a proxy for the ability of an ITN to withstand multiple washes under operational use over a 3-year life span [19, 22]. With unwashed nets, the levels of improved mortality relative to the standard pyrethroid-only net were higher with PermaNet 3.0 than with Olyset Plus. However, unlike with Olyset Plus, this effect was lost with PermaNet 3.0 after twenty washes;\n", + "Figure 5: Blood-feeding inhibition (%) of susceptible and resistant strains of _An. gambiae s.l._ in tunnel tests with Olyset Plus and Olyset Net. Blood-feeding inhibition was calculated relative to the control tunnel. 5 = susceptible, R = Resistant\n", + "PermanNet 3.0 killed significantly lower proportions of mosquitoes than Olyset Plus and same proportions as an unwashed pyrethroid-only ITN. Though the RCT in Uganda was not powered to assess differences between the pyrethroid-PBO ITN brands tested (PermanNet 3.0 vs. Olyset Plus) [18], the results from our trial appear consistent with some of the differences in epidemiological effect observed between both brands: (1) The high experimental hut mortality with the unwashed PermaNet 3.0 supports the higher initial protective effect observed with the net in the Ugandan trial at the 6 months epidemiological survey which was not seen with Olyset Plus. (2) The higher rate of decline in experimental hut mortality after washing with PermaNet 3.0 compared to Olyset Plus is consistent with the shorter-lived epidemiological effect in the Ugandan trial with PermaNet 3.0 (up to 12 months) compared to Olyset Plus which remained more protective than the pyrethroid-only net at 18 months. However, care should be taken to not over-interpret the comparisons between results from our hut trial and Ugandan RCT considering the different geographical settings and the lack of sufficient power to differentiate between the epidemiological impact of both pyrethroid-PBO net type in the Ugandan trial.\n", + "\n", + "The difference in hut performance between both pyrethroid-PBO ITNs can be attributed to differences in the retention and movement of PBO across the polymer fibre in Olyset Plus compared to PermaNet 3.0 and/or differences in design and specification. Retention of biofeficacy of pyrethroid-PBO nets is a fine balance between migration and replenishment of PBO from the core to the surface of fibres and the maintenance of an internal reservoir sufficient to last the lifespan of the LLIN, which is typically set at 3 years of use [24]. The chemical analysis results showed a faster release of PBO in the Olyset Plus netting after 20 washes compared to PermaNet 3.0 though it is unclear whether this may have increased the bioavailability of the PBO on the surface of Olyset Plus after washing. Whether sufficient PBO would remain within the fibres of both pyrethroid-PBO nets after 3 years of household use is presently unknown and is the subject of ongoing WHO durability trials of Olyset Plus and PermaNet 3.0 which are not yet completed [18, 25]. Another factor which may contribute to the discrepancies in efficacy of the two pyrethroid-PBO ITNs are differences in design and specification: Olyset Plus is treated with the pyrethroid permethrin while PermaNet 3.0 is treated with deltamethrin, and Olyset Plus contains PBO on every panel whereas in PermaNet 3.0, PBO is available only on the top panel of the net. It is not clear whether the restricted application of PBO to the roof of the net would affect bioefficacy. This would require comparative trials of the PermaNet 3.0 with pyrethroid-PBO restricted to the upper panel and pyrethroid to side panels versus an ITN with all 5 panels treated with pyrethroid-PBO. Behavioural studies of mosquitoes around nets indicate that mosquitoes may first make multiple contacts with the roof panel in response to odour plumes [26]; however, experimental hut trials comparing restricted versus full PBO coverage on nets are too few to be definitive on the question of efficacy.\n", + "\n", + "Despite the differences in performance observed between both pyrethroid-PBO net types with regards to their impact after 20 standardized washes, the non-inferiority analysis performed in accordance with recent WHO guidelines [19] showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality but not with blood-feeding inhibition. The higher blood-feeding inhibition observed with Olyset Plus could be due to the high excito-repellency of permethrin in Olyset Plus compared to deltamethrin in PermaNet 3.0 [27]. Alternatively, the study may not have had sufficient power to demonstrate non-inferiority of PermaNet 3.0 to Olyset Plus for both endpoints; further studies are on-going to help guide power calculations for ITN non-inferiority studies. The non-inferiority margin used for the analysis was defined by WHO as an odds ratio of 0.7 in mosquito mortality and feeding between a candidate net and the first in class net considered acceptable for both products to be in the same policy class. According to these guidelines, if non-inferiority is demonstrated in two independent experimental hut trials in different geographical locations representative of where the products will be deployed, then PermaNet 3.0 will be placed in the same WHO vector control product class as Olyset Plus [19]. It is however not clear whether non-inferiority must be demonstrated for both endpoints (mortality and blood-feeding) for a second-in class product to become part of an intervention class. While the guidelines were developed more like a compromise between the risk of accepting an inferior product and the feasibility of conducting epidemiological trials, the findings from our trial show that non-inferiority experimental hut trials are complex, and results must be interpreted with care. Comparative performance between products may also depend on other location-specific factors, such as the intensity of insecticide resistance and behaviour of the target vector population which should be taken into consideration when choosing between products of the same class.\n", + "\n", + "While the present hut trial in Benin and earlier hut trials in Benin, Tanzania, Cameroon, Burkina Faso, Cote d'Ivoire and Vietnam where the vectors were also resistant have shown some additional effect of pyrethroid-PBO nets over a standard pyrethroid net [12, 13, 15-17], the margin appears to vary depending on the level of \n", + "pyrethroid-resistance encountered [28]. The absolute increase in hut trial mortality with Olyset Plus compared to Olyset Net in the present study (24-28% vs. 12-18%) conducted in an area of intense pyrethroid-resistance [20] is lower than what has been previously reported with Olyset Plus in another area in Northern Benin where pyrethroid resistance was less prevalent (67-81% vs. 36-42%) [16]. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors [29] mediated by complex and multiple insecticide resistance mechanisms which may not be effectively tackled by the synergistic effects of PBO in pyrethroid-PBO ITNs [4, 23]. It is therefore not clear whether a diminishment in experimental but mortality with pyrethroid-PBO nets due to increasing intensity of pyrethroid-resistance would translate to a reduced epidemiological effect of pyrethroid-PBO ITNs in West Africa compared to East Africa which has been the site of the only epidemiological trials so far.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ITNCondition` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Chemical analysis results\n", + "\n", + "For PermaNet 3.0, PBO was only recorded from the roof panel of the nets; for Olyset Plus, PBO was recorded on all 5 panels (Table 6). Compared to the pyrethroid component, much less PBO was retained in both types of pyrethroid-PBO ITNs after 20 washes (58.7% vs. 25% with Olyset Plus and 80.9% vs. 68.8% with PermaNet 3.0, P < 0.05). The decrease in PBO content after washing was more evident in Olyset Plus than in PermaNet 3.0 netting, hence the wash retention index of PBO was higher with PermaNet 3.0 compared to Olyset Plus (98.1% vs. 93.3%).\n", + "\n", + "Figure 4: Tunnel test mortality (%) of susceptible and resistant strains of _Anopheles gambiae_ s.l. exposed to Olyset Plus vs. Olyset Net\n", + "\n", + "Figure 3: Mortality (%) of susceptible and resistant strains of _An. gambiae_ s.l. in cone bioassays with Olyset Plus and Olyset Net. S = susceptible, R = resistant\n", + "\n", + "header: Abstract\n", + "\n", + "Comparative efficacy of two pyrethroid-piperonyl butoxide nets (Olyset Plus and PermaNet 3.0) against pyrethroid resistant malaria vectors: a non-inferiority assessment\n", + "\n", + "Corine Ngufor, Josias Fagbohoun, Abel Agbevo, Hanafy Ismail, Joseph D. Challenger, Thomas S. Churcher, Mark Rowland\n", + "\n", + "\n", + "\n", + "Pyrethroid-PBO nets were conditionally recommended for control of malaria transmitted by mosquitoes with oxidase-based pyrethroid-resistance based on epidemiological evidence of additional protective effect with Olyset Plus compared to a pyrethroid-only net (Olyset Net). Entomological studies can be used to assess the comparative performance of other brands of pyrethroid-PBO ITNs to Olyset Plus.\n", + "\n", + "header: Results\n", + "\n", + "Mortality with permethrin and alpha-cypermethrin treated papers was 100% with the laboratory-maintained pyrethroid-susceptible _An. gambiae_ Kisumu strain. With wild pyrethroid resistant _An. gambiae_ s.l. from Cove, mortality rates were <50% with all three pyrethroid insecticides tested (Table 1) thus confirming the high levels of pyrethroid resistance in this vector population. Mortality however increased from 19.2 to 52.5% with permethrin, 41.7% to 69.7% with deltamethrin and 0% to 82.4% with alphacypermethrin after pre-exposure of the Cove strain to PBO synergist (Table 1). This result demonstrated that mixed function oxidases are overexpressed in the wild Cove vector population and their effect can be effectively inhibited by the PBO synergist.\n", + "\n", + "header: Background: Methods\n", + "\n", + "An experimental hut trial was performed in Cove, Benin to compare PermaNet 3.0 (deltamethrin plus PBO on roof panel only) to Olyset Plus (permethrin plus PBO on all panels) against wild pyrethroid-resistant _Anopheles gambiae_ sensu lato (s.l) following World Health Organization (WHO) guidelines. Both nets were tested unwashed and after 20 standardized washes compared to Olyset Net. Laboratory bioassays were also performed to help explain findings in the experimental huts.\n", + "\n", + "header: Mosquito blood-feeding rates in experimental huts\n", + "\n", + "The blood-feeding rates of wild pyrethroid-resistant _An. gambiae s.l_ that entered the experimental huts are presented in Fig. 2 with further details on mosquito feeding provided in Table 4. The percentage blood-feeding was lower in huts with the unwashed pyrethroid-PBO ITNs and was lowest of all with unwashed Olyset Plus as compared to unwashed PermaNet 3.0 (8% vs 19%, P < 0.001). For all net types, the data showed an overall increase in blood feeding with washed nets compared to unwashed nets and a decrease in blood-feeding inhibition relative to the untreated net. Percentage blood-feeding when washed 20 times did not differ significantly between the pyrethroid-PBO types (38% with PermaNet 3.0 vs. 35% with Olyset Plus, P = 0.708). The proportions of mosquitoes collected resting in the nets were lowest with the\n", + "\n", + "Fig. 1: Mortality of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", + "unwashed pyrethroid-PBO nets (2-6%), which is consistent with the higher toxicity observed with this type of net. Personal protection with both types of pyrethroid-PBO ITMs were > 80% when unwashed but this declined after 20 washes to 53% with PermaNet 3.0 and 11% with Olyset Plus.\n", + "\n", + "header: Supplementary laboratory bioassays\n", + "\n", + "To help further explain the results obtained in the experimental huts, WHO cone bioassays and tunnel tests were performed on samples of netting (\\(30\\times 30\\) cm) obtained from Olyset Net and Olyset Plus when unwashed and after 10 and 20 washes. Washing was performed in the laboratory following WHO guidelines [22]. PermaNet 3.0 was not tested in the laboratory bioassays owing to the restricted application of PBO to the roof of the net preventing a realistic direct comparison with Olyset Plus in bioassays especially tunnel tests. Net samples from each ITN type and each wash point were tested against the following strains:\n", + "\n", + "1. _An. gambiae_ sensu lato (s.l.) strains from Cove, Benin (Cove strain) which is highly pyrethroid resistant. It originates from the experimental hut station in Cove and has shown > 200-fold resistance compared to the susceptible Kisumu strain in susceptibility bioassays. Resistance is mediated by elevated levels of P450s and high frequencies of _kdr_ [20].\n", + "2. _An. gambiae_ VKPer strain, which originated from the Kou Valley in Burkina Faso. VKPer has moderate levels of pyrethroid resistance mediated only by high frequencies of _kdr_.\n", + "3. _An. gambiae_ s.s. Kisumu strain, a reference susceptible strain which originated from Kisumu Kenya.\n", + "\n", + "Approximately two hundred 2-5 days old mosquitoes of each strain were exposed for 3 min in cone bioassays to four net samples of each net type in cohorts of 5 mosquitoes per cone. Knock down in cone bioassays was recorded after 1 h and mortality after 24 h.\n", + "\n", + "Two to three hundred 5-8 days old mosquitoes of each strain were also exposed to each net type in tunnel tests in replicates of 50 mosquitoes per net sample. The tunnel test is a laboratory assay designed to simulate natural host-seeking behaviour of mosquitoes at night in the presence of a net. It consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections by means of a netting frame fitted into a slot across the tunnel. An anesthetized guinea pig was housed unconstrained in a small cage in one section, and mosquitoes were released in the other section at dusk and left overnight. The net samples were holed with nine 1-cm diameter holes to allow host-seeking mosquitoes to penetrate the baited chamber; an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 degC and 75-85% RH. The next morning, the numbers found alive or dead, fed, or unfed, in each section were recorded. Live mosquitoes were provided with sugar solution and delayed mortality recorded after 24 h. The guinea pigs used in this study were kept in accordance with institutional guidelines for animal care.\n", + "\n", + "header: Supplementary laboratory bioassays results\n", + "\n", + "The 3-min cone bioassay mortality results for all 3 mosquito strains and wash points tested are presented in Fig. 3. Unwashed Olyset Net induced very low mortality rates against the susceptible Kisumu strain (17-20%) and even lower mortality rates against the pyrethroid resistant strains (< 5%). Cone bioassay mortality rates with unwashed Olyset Plus were higher across all 3 strains compared to Olyset Net though mortality decreased as the strain tested became more pyrethroid-resistant. Cone bioassay mortality however dropped significantly with washed net samples. Mortality with the untreated net samples did not exceed 5% with any strain tested.\n", + "\n", + "header: Experimental hut treatments\n", + "\n", + "Olyset Plus and PermaNet 3.0 were compared in the experimental huts when unwashed and after 20 standardized washes. A WHO-recommended pyrethroid-only long-lasting net (Olyset Net) was included to demonstrate the added effect of PBO on the insecticide-resistant local vector species. Nets were washed using savon de Marseilles and rinsed twice following WHO procedures for washing nets for experimental hut studies [22].\n", + "\n", + "The following seven (7) treatments were thus tested in seven experimental huts:\n", + "\n", + "1. Untreated polyethylene net\n", + "2. Olyset Net unwashed (permethrin only)\n", + "3. Olyset Net washed 20 times.\n", + "4. PermaNet 3.0 unwashed (Roof: deltamethrin plus PBO; sides: deltamethrin only)\n", + "5. PermaNet 3.0 washed 20 times.\n", + "6. Olyset Plus unwashed (permethrin plus PBO on all panels)\n", + "7. Olyset Plus washed 20 times.\n", + "\n", + "header: Experimental hut site: Insecticide resistance bioassays\n", + "\n", + "To assess the frequency of pyrethroid resistance and presence of mixed function oxidases in the Cove vector population during the trial, adult mosquitoes that emerged from larvae collected from breeding sites close to experimental huts were tested in WHO cylinder bioassays with and without pre-exposure to PBO. A total of ~100 mosquitoes of the pyrethroid resistant _An. gambiae_ s.l. Cove strain and the pyrethroid susceptible _An. gambiae_ Kisumu strain were exposed to treated filter papers in WHO cylinder bioassays in batches of 25. Tests were performed with papers treated with permethrin 0.75%, alpha-cypermethrin 0.05% and deltamethrin 0.05%. To assess presence of MFO, some mosquitoes were also pre-exposed to papers treated with 4% PBO prior to exposure to insecticide-treated papers. Exposure to PBO and to insecticides lasted 1 h, knockdown was recorded after 60 min and mortality after 24 h.\n", + "\n", + "header: Table 1: Mortality of pyrethroid resistant Anopheles gambiae s.l. from Cove in WHO cylinder bioassays with and without pre-exposure to PBO\n", + "footer: None\n", + "columns: ['Variable', 'N exposed', 'N dead', '% Dead']\n", + "\n", + "{\"0\":{\"Variable\":\"Control\",\"N exposed\":101,\"N dead\":0,\"% Dead\":0.0},\"1\":{\"Variable\":\"PBO 4% only\",\"N exposed\":103,\"N dead\":3,\"% Dead\":2.9},\"2\":{\"Variable\":\"Permethrin 0.75%\",\"N exposed\":104,\"N dead\":20,\"% Dead\":19.2},\"3\":{\"Variable\":\"Deltamethrin 0.05%\",\"N exposed\":91,\"N dead\":38,\"% Dead\":41.7},\"4\":{\"Variable\":\"Alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":0,\"% Dead\":0.0},\"5\":{\"Variable\":\"PBO 4% then permethrin 0.75%\",\"N exposed\":99,\"N dead\":52,\"% Dead\":52.5},\"6\":{\"Variable\":\"PBO 4% then deltamethrin 0.05%\",\"N exposed\":99,\"N dead\":69,\"% Dead\":69.7},\"7\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4},\"8\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4}}\n", + "\n", + "header: Table 4: Blood-feeding rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", + "footer: Values along a row bearing the same letter label are not significantly different (P > 0.05) * Value set to zero as more blood fed mosquitoes were caught in washed Olyset Net huts than control hut\n", + "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", + "\n", + "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total blood fed\",\"Control\":\"496\",\"Olyset Net\":\"324\",\"Olyset Net.1\":\"807\",\"PermaNet 3.0\":\"95\",\"PermaNet 3.0.1\":\"231\",\"Olyset Plus\":\"56\",\"Olyset Plus.1\":\"442\"},\"3\":{\"Net type\":\"% Blood fed\",\"Control\":\"52a\",\"Olyset Net\":\"29b\",\"Olyset Net.1\":\"52a\",\"PermaNet 3.0\":\"19c\",\"PermaNet 3.0.1\":\"38d\",\"Olyset Plus\":\"8e\",\"Olyset Plus.1\":\"35d\"},\"4\":{\"Net type\":\"95% conf intervals\",\"Control\":\"48.4\\u201354.7\",\"Olyset Net\":\"25.9\\u201331.2\",\"Olyset Net.1\":\"49.7\\u201354.7\",\"PermaNet 3.0\":\"15.9\\u201322.9\",\"PermaNet 3.0.1\":\"33.7\\u201341.3\",\"Olyset Plus\":\"6.1\\u201310.2\",\"Olyset Plus.1\":\"32.1\\u201337.3\"},\"5\":{\"Net type\":\"% Blood-feeding inhibition\",\"Control\":\"-\",\"Olyset Net\":\"44\",\"Olyset Net.1\":\"0\",\"PermaNet 3.0\":\"63\",\"PermaNet 3.0.1\":\"27\",\"Olyset Plus\":\"85\",\"Olyset Plus.1\":\"33\"},\"6\":{\"Net type\":\"inside net\",\"Control\":\"294\",\"Olyset Net\":\"184\",\"Olyset Net.1\":\"542\",\"PermaNet 3.0\":\"28\",\"PermaNet 3.0.1\":\"130\",\"Olyset Plus\":\"17\",\"Olyset Plus.1\":\"241\"},\"7\":{\"Net type\":\"inside net (%)\",\"Control\":\"31a\",\"Olyset Net\":\"16bc\",\"Olyset Net.1\":\"35a\",\"PermaNet 3.0\":\"6d\",\"PermaNet 3.0.1\":\"21b\",\"Olyset Plus\":\"2e\",\"Olyset Plus.1\":\"19c\"},\"8\":{\"Net type\":\"Personal protection (%)\",\"Control\":\"-\",\"Olyset Net\":\"35\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"81\",\"PermaNet 3.0.1\":\"53\",\"Olyset Plus\":\"89\",\"Olyset Plus.1\":\"11\"}}\n", + "\n", + "header: Mosquito entry and exiting rates in experimental huts: Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts\n", + "\n", + "Mortality rates of wild pyrethroid resistant mosquitoes that entered the experimental huts are presented in Fig. 1 with further details provided in Table 3. The lowest mortality was achieved with Olyset Net (18% before washing and 12% after 20 washes). Percentage mortality with unwashed pyrethroid-PBO nets was highest with PermaNet 3.0 (41%) but this declined significantly after 20 washes (17%, P < 0.001). Mortality with unwashed Olyset Plus was 28% and while this value was significantly lower than the mortality shown by unwashed PermaNet 3.0 (P < 0.001), it did not decrease significantly after 20 washes (28% vs. 24%, P = 0.433) whereas for PermaNet 3.0 it declined. Hence, Olyset Plus induced higher mortality rates than PermaNet 3.0 after 20 washes (24% vs 17%, P < 0.001). With respect to the pyrethroid-only ITN, both pyrethroid-PBO nets induced significantly higher mortality rates than Olyset Net with nets washed 20 times (P < 0.001) though the difference was higher with Olyset Plus (24% vs. 12%), than with PermaNet 3.0 (17% vs. 12%). After 20 washes, mortality with PermaNet 3.0 declined to the same level as the unwashed Olyset Net, (17% vs. 18%, P = 0.061) but remained significantly higher with Olyset Plus (24% vs. 17%, P = 0.036).\n", + "\n", + "header: Cone bioassay results: Tunnel test results\n", + "\n", + "The results from the tunnel tests comparing Olyset Plus and Olyset Net unwashed and after 10 and 20 washes against all three strains are presented in Figs. 4 and 5 for mortality and blood-feeding inhibition respectively. Mortality rates were generally higher in the tunnels tests compared to the cone bioassays and decreased as the strain become more pyrethroid-resistant (Fig. 4). Mortality rates with the Kisumu strain were very high with Olyset Net and Olyset Plus (> 95%). With the VKPer strain, mortality remained > 80% after 20 washes with both ITN types. With the Cove strain, mortality was significantly higher with Olyset Plus compared to Olyset Net at 0 and 10 washes but about the same after 20 washes. With unwashed nets, blood-feeding inhibition in the tunnel tests was consistently higher with Olyset Plus (> 90%) compared to Olyset Net (27-75%) for all three strains tested (Fig. 5). After 10 and 20 washes, blood-feeding inhibition of the Kisumu and VKPer strain remained > 80% with Olyset Plus and Olyset Net. With Cove strain, blood-feeding inhibition was also higher with Olyset Plus at 0 and 10 washes but declined to about the same level as Olyset Net after 20 washes (56%).\n", + "Mortality in the untreated control tunnel was < 10% with all three strains.\n", + "\n", + "header: Background\n", + "\n", + "Long-lasting insecticidal nets (LLINs) remain one of the most powerful tools to reduce malaria transmission in a community and provide personal protection to the user [1, 2]. They have contributed significantly to recent reductions in malaria burden [3]. Their efficacy is however threatened by increasing resistance to pyrethroids [4, 5]; the insecticide of choice used on bed-nets owing to its safety, low cost and rapid activity on vector mosquitoes [6]. To maintain the effectiveness of insecticide treated nets for malaria control, new types of LLINs treated with alternative insecticides and compounds which can either replace or complement pyrethroids on bed-nets are urgently needed.\n", + "\n", + "A new class of insecticide treated nets (ITNs) combining pyrethroids and piperonyl butoxide (PBO) (pyrethroid-PBO ITNs) have been developed [7]. PBO is a synergist that inhibits specific metabolic enzymes such as mixed-function oxidases within mosquitoes that detoxify or sequester insecticides before they can have a toxic effect on the mosquito. Pyrethroid-PBO nets can therefore induce increased mortality of pyrethroid-resistant malaria vectors that express mixed function oxidase based pyrethroid resistance mechanisms that are inhibited by the PBO in the net. These nets were given an interim endorsement as a new WHO class of vector control products in 2017 based on epidemiological data from a cluster randomized controlled trial in North Eastern Tanzania [8], that demonstrated additional malaria control with one prototype pyrethroid-PBO net (Olyset Plus) compared to a pyrethroid-only net (Olyset Net), against pyrethroid resistant malaria vectors of moderate intensity, partly conferred by monooxygenase-based resistance mechanism. Pyrethroid-PBO ITNs are conditionally recommended for malaria vector control instead of pyrethroid-only ITNs in areas of confirmed intermediate levels of resistance mediated by monooxygenase-based resistance mechanism [9]. This endorsement has been followed by an increasing uptake of pyrethroid-PBO nets worldwide [10]; in sub-Saharan Africa for example, the proportion of pyrethroid-PBO nets of all nets delivered increased from 3% in 2018 to 35% in 2021.\n", + "\n", + "While Olyset Plus was the first in class pyrethroid-PBO net to demonstrate public health value as observed in the Tanzanian trial [8], there are currently five additional types of pyrethroid-PBO ITNs on the World Health Organization (WHO) list of prequalified vector control products: PermaNet 3.0, Veeralin, Tsara Boost, Tsara Plus and very recently DuraNet Plus [7]. These nets have all demonstrated superiority over pyrethroid-only nets in terms of mosquito mortality and blood-feeding inhibition in multiple experimental hut trials across Africa [11, 12, 13, 14, 15, 16, 17]. However, they differ from Olyset Plus in their design and specifications; typically, the location of PBO on the net (i.e., all panels vs. roof panel only), the type and dose of pyrethroid used, bioavailability and retention of PBO after washing and could, therefore, differ in entomological and epidemiological impact. A recent large cluster-randomized trial in Uganda, evaluating the efficacy of Olyset Plus and PermaNet 3.0 compared to pyrethroid-only nets in a setting of high pyrethroid resistance, also demonstrated better protection against malaria with pyrethroid-PBO nets compared to pyrethroid-only nets for up to 18 months confirming the findings of the Tanzanian trial [18]. While the Ugandan trial was not powered to directly compare between the different ITN brands tested, the results showed that the additional protective effect of the pyrethroid-PBO net compared to the pyrethroid-only net was initially large with PermaNet 3.0 at 6 months post-distribution but lasted only up to 12 months whereas additional protective effect with Olyset Plus appeared to have a delayed onset which was not observed at 6 months but became evident at 12 months and lasted up to 18 months. There are major differences in design between Olyset Plus and PermaNet 3.0, which could have implications on their epidemiological impact; Olyset Plus is a polyethylene net incorporated with permethrin and PBO on all panels while PermaNet 3.0 is a polyester net coated with deltamethrin with PBO restricted to the roof of the net.\n", + "\n", + "To generate assurance of comparative performance of new candidate products within an established WHO vector control product class, without the need for epidemiological evidence for each new product, the WHO has developed new experimental hut study guidelines for assessing their non-inferiority to a first in class product for which evidence of public health value has already been generated [19]. These provisional guidelines are to be piloted with pyrethroid-PBO nets by comparing other WHO/PQ-listed pyrethroid-PBO nets with the first in class product, Olyset Plus. This study compared the efficacy and wash resistance of Olyset Plus and PermaNet\n", + "3.0 and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against wild free-flying pyrethroid resistant malaria vectors in Southern Benin.\n", + "\n", + "header: Conclusion\n", + "\n", + "Olyset Plus outperformed PermaNet 3.0 in terms of its ability to cause greater margins of improved mosquito mortality compared to a standard pyrethroid net, after multiple standardized washes. However, using a margin of non-inferiority defined by the WHO, PermaNet 3.0 was non-inferior to Olyset Plus in inducing mosquito mortality. Considering the low levels of mortality observed and increasing pyrethroid-resistance in West Africa, it is unclear whether either of these nets would demonstrate the same epidemiological impact observed in community trials in East Africa.\n", + "\n", + "header: Discussion\n", + "\n", + "Following the interim endorsement of pyrethroid-PBO nets by the WHO [23], malaria vector control programmes are faced with additional choice of different brands of prequalified pyrethroid-PBO nets [7]. Considering the wide variations in design of the available brands of these nets, studies generating the required assurance of comparative performance to Olyset Plus (the first in class pyrethroid-PBO net to demonstrate empirical evidence of entomological and epidemiological impact) are necessary. This study compared the efficacy and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against pyrethroid resistant malaria vectors in a highly endemic country of West Africa, following WHO guidelines [19, 22].\n", + "\n", + "The WHO susceptibility bioassays confirmed the high levels of pyrethroid resistance in the vector population at the experimental hut site during the trial, corroborating previous findings [20]. The increased mortality achieved in bioassays with pre-exposure to PBO showed that pyrethroid-resistance was indeed at least partly mediated by increased mono-oxygenase activity. The experimental hut trial demonstrated improved levels of mortality and blood-feeding inhibition with both pyrethroid-PBO ITN types compared to a standard pyrethroid-only LLIN against a vector population that was very resistant to pyrethroids; this was supported by results from the laboratory assays which compared Olyset Plus to Olyset Net against pyrethroid-resistant mosquito strains. These observations are partly attributable to the synergistic effect of the PBO on pyrethroid resistance and are consistent with other experimental hut trials across Africa and epidemiological trials performed in Tanzania [8] and Uganda [18].\n", + "\n", + "Twenty washes in experimental hut studies are indicated by WHO as a proxy for the ability of an ITN to withstand multiple washes under operational use over a 3-year life span [19, 22]. With unwashed nets, the levels of improved mortality relative to the standard pyrethroid-only net were higher with PermaNet 3.0 than with Olyset Plus. However, unlike with Olyset Plus, this effect was lost with PermaNet 3.0 after twenty washes;\n", + "Figure 5: Blood-feeding inhibition (%) of susceptible and resistant strains of _An. gambiae s.l._ in tunnel tests with Olyset Plus and Olyset Net. Blood-feeding inhibition was calculated relative to the control tunnel. 5 = susceptible, R = Resistant\n", + "PermanNet 3.0 killed significantly lower proportions of mosquitoes than Olyset Plus and same proportions as an unwashed pyrethroid-only ITN. Though the RCT in Uganda was not powered to assess differences between the pyrethroid-PBO ITN brands tested (PermanNet 3.0 vs. Olyset Plus) [18], the results from our trial appear consistent with some of the differences in epidemiological effect observed between both brands: (1) The high experimental hut mortality with the unwashed PermaNet 3.0 supports the higher initial protective effect observed with the net in the Ugandan trial at the 6 months epidemiological survey which was not seen with Olyset Plus. (2) The higher rate of decline in experimental hut mortality after washing with PermaNet 3.0 compared to Olyset Plus is consistent with the shorter-lived epidemiological effect in the Ugandan trial with PermaNet 3.0 (up to 12 months) compared to Olyset Plus which remained more protective than the pyrethroid-only net at 18 months. However, care should be taken to not over-interpret the comparisons between results from our hut trial and Ugandan RCT considering the different geographical settings and the lack of sufficient power to differentiate between the epidemiological impact of both pyrethroid-PBO net type in the Ugandan trial.\n", + "\n", + "The difference in hut performance between both pyrethroid-PBO ITNs can be attributed to differences in the retention and movement of PBO across the polymer fibre in Olyset Plus compared to PermaNet 3.0 and/or differences in design and specification. Retention of biofeficacy of pyrethroid-PBO nets is a fine balance between migration and replenishment of PBO from the core to the surface of fibres and the maintenance of an internal reservoir sufficient to last the lifespan of the LLIN, which is typically set at 3 years of use [24]. The chemical analysis results showed a faster release of PBO in the Olyset Plus netting after 20 washes compared to PermaNet 3.0 though it is unclear whether this may have increased the bioavailability of the PBO on the surface of Olyset Plus after washing. Whether sufficient PBO would remain within the fibres of both pyrethroid-PBO nets after 3 years of household use is presently unknown and is the subject of ongoing WHO durability trials of Olyset Plus and PermaNet 3.0 which are not yet completed [18, 25]. Another factor which may contribute to the discrepancies in efficacy of the two pyrethroid-PBO ITNs are differences in design and specification: Olyset Plus is treated with the pyrethroid permethrin while PermaNet 3.0 is treated with deltamethrin, and Olyset Plus contains PBO on every panel whereas in PermaNet 3.0, PBO is available only on the top panel of the net. It is not clear whether the restricted application of PBO to the roof of the net would affect bioefficacy. This would require comparative trials of the PermaNet 3.0 with pyrethroid-PBO restricted to the upper panel and pyrethroid to side panels versus an ITN with all 5 panels treated with pyrethroid-PBO. Behavioural studies of mosquitoes around nets indicate that mosquitoes may first make multiple contacts with the roof panel in response to odour plumes [26]; however, experimental hut trials comparing restricted versus full PBO coverage on nets are too few to be definitive on the question of efficacy.\n", + "\n", + "Despite the differences in performance observed between both pyrethroid-PBO net types with regards to their impact after 20 standardized washes, the non-inferiority analysis performed in accordance with recent WHO guidelines [19] showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality but not with blood-feeding inhibition. The higher blood-feeding inhibition observed with Olyset Plus could be due to the high excito-repellency of permethrin in Olyset Plus compared to deltamethrin in PermaNet 3.0 [27]. Alternatively, the study may not have had sufficient power to demonstrate non-inferiority of PermaNet 3.0 to Olyset Plus for both endpoints; further studies are on-going to help guide power calculations for ITN non-inferiority studies. The non-inferiority margin used for the analysis was defined by WHO as an odds ratio of 0.7 in mosquito mortality and feeding between a candidate net and the first in class net considered acceptable for both products to be in the same policy class. According to these guidelines, if non-inferiority is demonstrated in two independent experimental hut trials in different geographical locations representative of where the products will be deployed, then PermaNet 3.0 will be placed in the same WHO vector control product class as Olyset Plus [19]. It is however not clear whether non-inferiority must be demonstrated for both endpoints (mortality and blood-feeding) for a second-in class product to become part of an intervention class. While the guidelines were developed more like a compromise between the risk of accepting an inferior product and the feasibility of conducting epidemiological trials, the findings from our trial show that non-inferiority experimental hut trials are complex, and results must be interpreted with care. Comparative performance between products may also depend on other location-specific factors, such as the intensity of insecticide resistance and behaviour of the target vector population which should be taken into consideration when choosing between products of the same class.\n", + "\n", + "While the present hut trial in Benin and earlier hut trials in Benin, Tanzania, Cameroon, Burkina Faso, Cote d'Ivoire and Vietnam where the vectors were also resistant have shown some additional effect of pyrethroid-PBO nets over a standard pyrethroid net [12, 13, 15-17], the margin appears to vary depending on the level of \n", + "pyrethroid-resistance encountered [28]. The absolute increase in hut trial mortality with Olyset Plus compared to Olyset Net in the present study (24-28% vs. 12-18%) conducted in an area of intense pyrethroid-resistance [20] is lower than what has been previously reported with Olyset Plus in another area in Northern Benin where pyrethroid resistance was less prevalent (67-81% vs. 36-42%) [16]. Compared to East Africa, West Africa has shown historically higher intensity of pyrethroid resistance in malaria vectors [29] mediated by complex and multiple insecticide resistance mechanisms which may not be effectively tackled by the synergistic effects of PBO in pyrethroid-PBO ITNs [4, 23]. It is therefore not clear whether a diminishment in experimental but mortality with pyrethroid-PBO nets due to increasing intensity of pyrethroid-resistance would translate to a reduced epidemiological effect of pyrethroid-PBO ITNs in West Africa compared to East Africa which has been the site of the only epidemiological trials so far.\n", + "\n", + "header: Results\n", + "\n", + "With unwashed nets, mosquito mortality was higher in huts with PermaNet 3.0 compared to Olyset Plus (41% vs. 28%, P < 0.001). After 20 washes, mortality declined significantly with PermaNet 3.0 (41% unwashed vs. 17% after washing P < 0.001), but not with Olyset Plus (28% unwashed vs. 24% after washing P = 0.433); Olyset Plus induced significantly higher mortality than PermaNet 3.0 and Olyset Net after 20 washes. PermaNet 3.0 showed a higher wash retention of PBO compared to Olyset Plus. A non-inferiority analysis performed with data from unwashed and washed nets together using a margin recommended by the WHO, showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality (25% with Olyset Plus vs. 27% with PermaNet 3.0, OR = 1.528, 95%Cl = 1.02-2.29) but not in reducing mosquito feeding (25% with Olyset Plus vs. 30% with PermaNet 3.0, OR = 1.192, 95%Cl = 0.77-1.84). Both pyrethroid-PBO nets were superior to Olyset Net.\n", + "\n", + "header: Insecticide resistance in malaria vectors in Cove: Experimental hut trial results\n", + "\n", + "A total of 6711 pyrethroid resistant female _An. gambiae_ s.l. were collected during the experimental hut trial. The entry and exiting rates of wild pyrethroid resistant _An. gambiae_ s.l. from the experimental huts with the different ITN types tested in the trial are presented in Table 2. Compared to the control, Olyset Net did not deter mosquitoes from entering the experimental huts (0% when unwashed and after 20 washes). Mosquito deterrence was significantly higher with PermaNet 3.0 compared to Olyset Plus both unwashed (49% vs. 28%, P < 0.001) and after 20 washes (36% vs. 0%, P < 0.001). Nevertheless, early exiting of mosquitoes from the experimental huts into the veranda trap did not differ significantly between both pyrethroid-PBO net types both when unwashed (65% with PermaNet 3.0 vs 68% with Olyset Plus, P = 0.232) and after 20 washes (60% with PermaNet 3.0 vs. 56% with Olyset Plus, P = 0.053).\n", + "\\begin{table}\n", + "\\begin{tabular}{l c c c c c c}\n", + "**Net type** & **Control** & **Olyset Net** & & **PermNet 3.0** & **Olyset Plus** \\\\ Number of washes & 0 & 0 & 20 & 0 & 20 & 0 & 20 \\\\ N collected & 962 & 1135 & 1546 & 489 & 616 & 688 & 1275 \\\\ N females/night & 233 & 27\\({}^{\\text{hb}}\\) & 37\\({}^{\\text{b}}\\) & 12\\({}^{\\text{c}}\\) & 15\\({}^{\\text{d}}\\) & 16\\({}^{\\text{d}}\\) & 30\\({}^{\\text{hb}}\\) \\\\ \\% deterrence & – & 0\\({}^{\\text{a}}\\) & 0\\({}^{\\text{a}}\\) & 49 & 36 & 28 & 0 \\\\ N eating & 429 & 639 & 669 & 319 & 370 &\n", + "\n", + "header: Non-inferiority assessment\n", + "\n", + "According to recent provisional WHO guidelines [19], for a candidate pyrethroid-PBO ITN product to be included in this new WHO intervention class without the need for epidemiological evidence, it must demonstrate non-inferiority to the first in class product which has already demonstrated public health value (Olyset Plus) and superiority to a pyrethroid-only LLIN in experimental hut trials [19]. Briefly, the candidate pyrethroid-PBO product is deemed non-inferior if: (1) The lower 95% confidence interval estimate of the odds ratio describing the difference in mosquito mortality between the candidate and active comparator product is greater than 0.7. and (2) The upper 95% confidence interval estimate of the odds ratio describing the difference in mosquito blood-feeding between the candidate and active comparator product is less than 1.43. Following the WHO guidelines, both unwashed and washed data of each product were analysed together to generate single estimates of efficacy representative of the overall performance over the lifetime of the product in the field.\n", + "\n", + "Each primary endpoint for non-inferiority (mortality and blood-feeding rate for unwashed and washed nets combined), was assessed using binomial generalized linear mixed models (GLMMs) with a logit link function fitted using the 'lme4' package of R version 3.5.3 for Windows as described earlier. Results from the non-inferiority assessment of PermaNet 3.0 to Olyset Plus are presented in Table 5 below. The odds ratio for\n", + "Fig. 2: Blood-feeding rates of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", + "the difference in mosquito mortality between PermaNet 3.0 and Olyset Plus was 1.528 (95% confidence interval: 1.021-2.289) while the odds ratio for the difference in mosquito blood feeding was 1.192 (95% confidence interval: 0.772-1.841). Following the WHO criteria described above, PermaNet 3.0 was non-inferior to Olyset Plus in terms of its ability to kill wild pyrethroid- resistant _An. gambiae_ s.l. in the experimental hut trial in Cove Benin. In contrast PermaNet 3.0 was not non-inferior to Olyset Plus in terms of proportions of mosquitoes that blood-fed and, therefore, fails to demonstrate non-inferiority for blood feeding inhibition in this trial. The results also showed superiority of both pyrethroid-PBO net types to Olyset Net both in terms of mosquito mortality (25-27% vs. 15%, P < 0.001) and reducing blood-feeding (25%-30% vs. 42%, P < 0.001).\n", + "\n", + "header: Chemical analysis\n", + "\n", + "At the end of the experimental hut trial, five pieces of netting (\\(25\\times 25\\) cm) obtained from the panels of replicate nets of each net type (before and after washing) used in the huts were assessed for deltamethrin, permethrin and PBO content using HPLC. Insecticide was extracted from each net piece with an area of 48 sq cm collected from the five net samples (\\(25\\times 25\\) cm) obtained from each whole net. The insecticide content of each sample was determined by injecting ten ul aliquots of the extract on a reverse-phase Hypersil GOLD C18 column (75 A, \\(250\\times 4.6\\) mm, 5-um particle size; Thermo Scientific) at room temperature. A mobile phase of 70% acetonitrile in water was used at a flow rate of 1 ml min\\({}^{-1}\\) to separate the target analyte. Chromatographic peaks of the insecticides and internal standard were detected at a wavelength of 232 nm with the Ultimate 3000 UV detector and analysed with Dionex Chromeleon(tm) 6.8 Chromatography Data System software. Quantities of insecticide were calculated from standard curves established by known concentrations of the insecticide authenticated standards and corrected by internal standard readings in each sample relative to control.\n", + "\n", + "Data from chemical analysis was used to calculate the percentage retention of each active ingredient after 20 washes relative to the unwashed net and the wash retention index. Wash-resistance index was calculated according to WHO guidelines [22] as indicated below:\n", + "\n", + "\\[\\text{Wash resistance index} = 100\\times\\text{n}\\sqrt{(\\text{tn}/\\text{t0})}\\] \\[\\left(\\text{free migration stage behaviour}\\right)\\]\n", + "\n", + "where \\(\\text{tn}=\\text{total active ingredient content after n washing cycles, t0=total active ingredient content before washing, n=number of washes.\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `Observation` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. \n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Chemical analysis results\n", + "\n", + "For PermaNet 3.0, PBO was only recorded from the roof panel of the nets; for Olyset Plus, PBO was recorded on all 5 panels (Table 6). Compared to the pyrethroid component, much less PBO was retained in both types of pyrethroid-PBO ITNs after 20 washes (58.7% vs. 25% with Olyset Plus and 80.9% vs. 68.8% with PermaNet 3.0, P < 0.05). The decrease in PBO content after washing was more evident in Olyset Plus than in PermaNet 3.0 netting, hence the wash retention index of PBO was higher with PermaNet 3.0 compared to Olyset Plus (98.1% vs. 93.3%).\n", + "\n", + "Figure 4: Tunnel test mortality (%) of susceptible and resistant strains of _Anopheles gambiae_ s.l. exposed to Olyset Plus vs. Olyset Net\n", + "\n", + "Figure 3: Mortality (%) of susceptible and resistant strains of _An. gambiae_ s.l. in cone bioassays with Olyset Plus and Olyset Net. S = susceptible, R = resistant\n", + "\n", + "header: Supplementary laboratory bioassays results\n", + "\n", + "The 3-min cone bioassay mortality results for all 3 mosquito strains and wash points tested are presented in Fig. 3. Unwashed Olyset Net induced very low mortality rates against the susceptible Kisumu strain (17-20%) and even lower mortality rates against the pyrethroid resistant strains (< 5%). Cone bioassay mortality rates with unwashed Olyset Plus were higher across all 3 strains compared to Olyset Net though mortality decreased as the strain tested became more pyrethroid-resistant. Cone bioassay mortality however dropped significantly with washed net samples. Mortality with the untreated net samples did not exceed 5% with any strain tested.\n", + "\n", + "header: Mosquito entry and exiting rates in experimental huts: Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts\n", + "\n", + "Mortality rates of wild pyrethroid resistant mosquitoes that entered the experimental huts are presented in Fig. 1 with further details provided in Table 3. The lowest mortality was achieved with Olyset Net (18% before washing and 12% after 20 washes). Percentage mortality with unwashed pyrethroid-PBO nets was highest with PermaNet 3.0 (41%) but this declined significantly after 20 washes (17%, P < 0.001). Mortality with unwashed Olyset Plus was 28% and while this value was significantly lower than the mortality shown by unwashed PermaNet 3.0 (P < 0.001), it did not decrease significantly after 20 washes (28% vs. 24%, P = 0.433) whereas for PermaNet 3.0 it declined. Hence, Olyset Plus induced higher mortality rates than PermaNet 3.0 after 20 washes (24% vs 17%, P < 0.001). With respect to the pyrethroid-only ITN, both pyrethroid-PBO nets induced significantly higher mortality rates than Olyset Net with nets washed 20 times (P < 0.001) though the difference was higher with Olyset Plus (24% vs. 12%), than with PermaNet 3.0 (17% vs. 12%). After 20 washes, mortality with PermaNet 3.0 declined to the same level as the unwashed Olyset Net, (17% vs. 18%, P = 0.061) but remained significantly higher with Olyset Plus (24% vs. 17%, P = 0.036).\n", + "\n", + "header: Experimental hut treatments\n", + "\n", + "Olyset Plus and PermaNet 3.0 were compared in the experimental huts when unwashed and after 20 standardized washes. A WHO-recommended pyrethroid-only long-lasting net (Olyset Net) was included to demonstrate the added effect of PBO on the insecticide-resistant local vector species. Nets were washed using savon de Marseilles and rinsed twice following WHO procedures for washing nets for experimental hut studies [22].\n", + "\n", + "The following seven (7) treatments were thus tested in seven experimental huts:\n", + "\n", + "1. Untreated polyethylene net\n", + "2. Olyset Net unwashed (permethrin only)\n", + "3. Olyset Net washed 20 times.\n", + "4. PermaNet 3.0 unwashed (Roof: deltamethrin plus PBO; sides: deltamethrin only)\n", + "5. PermaNet 3.0 washed 20 times.\n", + "6. Olyset Plus unwashed (permethrin plus PBO on all panels)\n", + "7. Olyset Plus washed 20 times.\n", + "\n", + "header: Mosquito blood-feeding rates in experimental huts\n", + "\n", + "The blood-feeding rates of wild pyrethroid-resistant _An. gambiae s.l_ that entered the experimental huts are presented in Fig. 2 with further details on mosquito feeding provided in Table 4. The percentage blood-feeding was lower in huts with the unwashed pyrethroid-PBO ITNs and was lowest of all with unwashed Olyset Plus as compared to unwashed PermaNet 3.0 (8% vs 19%, P < 0.001). For all net types, the data showed an overall increase in blood feeding with washed nets compared to unwashed nets and a decrease in blood-feeding inhibition relative to the untreated net. Percentage blood-feeding when washed 20 times did not differ significantly between the pyrethroid-PBO types (38% with PermaNet 3.0 vs. 35% with Olyset Plus, P = 0.708). The proportions of mosquitoes collected resting in the nets were lowest with the\n", + "\n", + "Fig. 1: Mortality of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", + "unwashed pyrethroid-PBO nets (2-6%), which is consistent with the higher toxicity observed with this type of net. Personal protection with both types of pyrethroid-PBO ITMs were > 80% when unwashed but this declined after 20 washes to 53% with PermaNet 3.0 and 11% with Olyset Plus.\n", + "\n", + "header: Background: Methods\n", + "\n", + "An experimental hut trial was performed in Cove, Benin to compare PermaNet 3.0 (deltamethrin plus PBO on roof panel only) to Olyset Plus (permethrin plus PBO on all panels) against wild pyrethroid-resistant _Anopheles gambiae_ sensu lato (s.l) following World Health Organization (WHO) guidelines. Both nets were tested unwashed and after 20 standardized washes compared to Olyset Net. Laboratory bioassays were also performed to help explain findings in the experimental huts.\n", + "\n", + "header: Results\n", + "\n", + "Mortality with permethrin and alpha-cypermethrin treated papers was 100% with the laboratory-maintained pyrethroid-susceptible _An. gambiae_ Kisumu strain. With wild pyrethroid resistant _An. gambiae_ s.l. from Cove, mortality rates were <50% with all three pyrethroid insecticides tested (Table 1) thus confirming the high levels of pyrethroid resistance in this vector population. Mortality however increased from 19.2 to 52.5% with permethrin, 41.7% to 69.7% with deltamethrin and 0% to 82.4% with alphacypermethrin after pre-exposure of the Cove strain to PBO synergist (Table 1). This result demonstrated that mixed function oxidases are overexpressed in the wild Cove vector population and their effect can be effectively inhibited by the PBO synergist.\n", + "\n", + "header: Supplementary laboratory bioassays\n", + "\n", + "To help further explain the results obtained in the experimental huts, WHO cone bioassays and tunnel tests were performed on samples of netting (\\(30\\times 30\\) cm) obtained from Olyset Net and Olyset Plus when unwashed and after 10 and 20 washes. Washing was performed in the laboratory following WHO guidelines [22]. PermaNet 3.0 was not tested in the laboratory bioassays owing to the restricted application of PBO to the roof of the net preventing a realistic direct comparison with Olyset Plus in bioassays especially tunnel tests. Net samples from each ITN type and each wash point were tested against the following strains:\n", + "\n", + "1. _An. gambiae_ sensu lato (s.l.) strains from Cove, Benin (Cove strain) which is highly pyrethroid resistant. It originates from the experimental hut station in Cove and has shown > 200-fold resistance compared to the susceptible Kisumu strain in susceptibility bioassays. Resistance is mediated by elevated levels of P450s and high frequencies of _kdr_ [20].\n", + "2. _An. gambiae_ VKPer strain, which originated from the Kou Valley in Burkina Faso. VKPer has moderate levels of pyrethroid resistance mediated only by high frequencies of _kdr_.\n", + "3. _An. gambiae_ s.s. Kisumu strain, a reference susceptible strain which originated from Kisumu Kenya.\n", + "\n", + "Approximately two hundred 2-5 days old mosquitoes of each strain were exposed for 3 min in cone bioassays to four net samples of each net type in cohorts of 5 mosquitoes per cone. Knock down in cone bioassays was recorded after 1 h and mortality after 24 h.\n", + "\n", + "Two to three hundred 5-8 days old mosquitoes of each strain were also exposed to each net type in tunnel tests in replicates of 50 mosquitoes per net sample. The tunnel test is a laboratory assay designed to simulate natural host-seeking behaviour of mosquitoes at night in the presence of a net. It consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections by means of a netting frame fitted into a slot across the tunnel. An anesthetized guinea pig was housed unconstrained in a small cage in one section, and mosquitoes were released in the other section at dusk and left overnight. The net samples were holed with nine 1-cm diameter holes to allow host-seeking mosquitoes to penetrate the baited chamber; an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 degC and 75-85% RH. The next morning, the numbers found alive or dead, fed, or unfed, in each section were recorded. Live mosquitoes were provided with sugar solution and delayed mortality recorded after 24 h. The guinea pigs used in this study were kept in accordance with institutional guidelines for animal care.\n", + "\n", + "header: Cone bioassay results: Tunnel test results\n", + "\n", + "The results from the tunnel tests comparing Olyset Plus and Olyset Net unwashed and after 10 and 20 washes against all three strains are presented in Figs. 4 and 5 for mortality and blood-feeding inhibition respectively. Mortality rates were generally higher in the tunnels tests compared to the cone bioassays and decreased as the strain become more pyrethroid-resistant (Fig. 4). Mortality rates with the Kisumu strain were very high with Olyset Net and Olyset Plus (> 95%). With the VKPer strain, mortality remained > 80% after 20 washes with both ITN types. With the Cove strain, mortality was significantly higher with Olyset Plus compared to Olyset Net at 0 and 10 washes but about the same after 20 washes. With unwashed nets, blood-feeding inhibition in the tunnel tests was consistently higher with Olyset Plus (> 90%) compared to Olyset Net (27-75%) for all three strains tested (Fig. 5). After 10 and 20 washes, blood-feeding inhibition of the Kisumu and VKPer strain remained > 80% with Olyset Plus and Olyset Net. With Cove strain, blood-feeding inhibition was also higher with Olyset Plus at 0 and 10 washes but declined to about the same level as Olyset Net after 20 washes (56%).\n", + "Mortality in the untreated control tunnel was < 10% with all three strains.\n", + "\n", + "header: Abstract\n", + "\n", + "Comparative efficacy of two pyrethroid-piperonyl butoxide nets (Olyset Plus and PermaNet 3.0) against pyrethroid resistant malaria vectors: a non-inferiority assessment\n", + "\n", + "Corine Ngufor, Josias Fagbohoun, Abel Agbevo, Hanafy Ismail, Joseph D. Challenger, Thomas S. Churcher, Mark Rowland\n", + "\n", + "\n", + "\n", + "Pyrethroid-PBO nets were conditionally recommended for control of malaria transmitted by mosquitoes with oxidase-based pyrethroid-resistance based on epidemiological evidence of additional protective effect with Olyset Plus compared to a pyrethroid-only net (Olyset Net). Entomological studies can be used to assess the comparative performance of other brands of pyrethroid-PBO ITNs to Olyset Plus.\n", + "\n", + "header: Table 4: Blood-feeding rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", + "footer: Values along a row bearing the same letter label are not significantly different (P > 0.05) * Value set to zero as more blood fed mosquitoes were caught in washed Olyset Net huts than control hut\n", + "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", + "\n", + "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total blood fed\",\"Control\":\"496\",\"Olyset Net\":\"324\",\"Olyset Net.1\":\"807\",\"PermaNet 3.0\":\"95\",\"PermaNet 3.0.1\":\"231\",\"Olyset Plus\":\"56\",\"Olyset Plus.1\":\"442\"},\"3\":{\"Net type\":\"% Blood fed\",\"Control\":\"52a\",\"Olyset Net\":\"29b\",\"Olyset Net.1\":\"52a\",\"PermaNet 3.0\":\"19c\",\"PermaNet 3.0.1\":\"38d\",\"Olyset Plus\":\"8e\",\"Olyset Plus.1\":\"35d\"},\"4\":{\"Net type\":\"95% conf intervals\",\"Control\":\"48.4\\u201354.7\",\"Olyset Net\":\"25.9\\u201331.2\",\"Olyset Net.1\":\"49.7\\u201354.7\",\"PermaNet 3.0\":\"15.9\\u201322.9\",\"PermaNet 3.0.1\":\"33.7\\u201341.3\",\"Olyset Plus\":\"6.1\\u201310.2\",\"Olyset Plus.1\":\"32.1\\u201337.3\"},\"5\":{\"Net type\":\"% Blood-feeding inhibition\",\"Control\":\"-\",\"Olyset Net\":\"44\",\"Olyset Net.1\":\"0\",\"PermaNet 3.0\":\"63\",\"PermaNet 3.0.1\":\"27\",\"Olyset Plus\":\"85\",\"Olyset Plus.1\":\"33\"},\"6\":{\"Net type\":\"inside net\",\"Control\":\"294\",\"Olyset Net\":\"184\",\"Olyset Net.1\":\"542\",\"PermaNet 3.0\":\"28\",\"PermaNet 3.0.1\":\"130\",\"Olyset Plus\":\"17\",\"Olyset Plus.1\":\"241\"},\"7\":{\"Net type\":\"inside net (%)\",\"Control\":\"31a\",\"Olyset Net\":\"16bc\",\"Olyset Net.1\":\"35a\",\"PermaNet 3.0\":\"6d\",\"PermaNet 3.0.1\":\"21b\",\"Olyset Plus\":\"2e\",\"Olyset Plus.1\":\"19c\"},\"8\":{\"Net type\":\"Personal protection (%)\",\"Control\":\"-\",\"Olyset Net\":\"35\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"81\",\"PermaNet 3.0.1\":\"53\",\"Olyset Plus\":\"89\",\"Olyset Plus.1\":\"11\"}}\n", + "\n", + "header: Results\n", + "\n", + "With unwashed nets, mosquito mortality was higher in huts with PermaNet 3.0 compared to Olyset Plus (41% vs. 28%, P < 0.001). After 20 washes, mortality declined significantly with PermaNet 3.0 (41% unwashed vs. 17% after washing P < 0.001), but not with Olyset Plus (28% unwashed vs. 24% after washing P = 0.433); Olyset Plus induced significantly higher mortality than PermaNet 3.0 and Olyset Net after 20 washes. PermaNet 3.0 showed a higher wash retention of PBO compared to Olyset Plus. A non-inferiority analysis performed with data from unwashed and washed nets together using a margin recommended by the WHO, showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality (25% with Olyset Plus vs. 27% with PermaNet 3.0, OR = 1.528, 95%Cl = 1.02-2.29) but not in reducing mosquito feeding (25% with Olyset Plus vs. 30% with PermaNet 3.0, OR = 1.192, 95%Cl = 0.77-1.84). Both pyrethroid-PBO nets were superior to Olyset Net.\n", + "\n", + "header: Chemical analysis\n", + "\n", + "At the end of the experimental hut trial, five pieces of netting (\\(25\\times 25\\) cm) obtained from the panels of replicate nets of each net type (before and after washing) used in the huts were assessed for deltamethrin, permethrin and PBO content using HPLC. Insecticide was extracted from each net piece with an area of 48 sq cm collected from the five net samples (\\(25\\times 25\\) cm) obtained from each whole net. The insecticide content of each sample was determined by injecting ten ul aliquots of the extract on a reverse-phase Hypersil GOLD C18 column (75 A, \\(250\\times 4.6\\) mm, 5-um particle size; Thermo Scientific) at room temperature. A mobile phase of 70% acetonitrile in water was used at a flow rate of 1 ml min\\({}^{-1}\\) to separate the target analyte. Chromatographic peaks of the insecticides and internal standard were detected at a wavelength of 232 nm with the Ultimate 3000 UV detector and analysed with Dionex Chromeleon(tm) 6.8 Chromatography Data System software. Quantities of insecticide were calculated from standard curves established by known concentrations of the insecticide authenticated standards and corrected by internal standard readings in each sample relative to control.\n", + "\n", + "Data from chemical analysis was used to calculate the percentage retention of each active ingredient after 20 washes relative to the unwashed net and the wash retention index. Wash-resistance index was calculated according to WHO guidelines [22] as indicated below:\n", + "\n", + "\\[\\text{Wash resistance index} = 100\\times\\text{n}\\sqrt{(\\text{tn}/\\text{t0})}\\] \\[\\left(\\text{free migration stage behaviour}\\right)\\]\n", + "\n", + "where \\(\\text{tn}=\\text{total active ingredient content after n washing cycles, t0=total active ingredient content before washing, n=number of washes.\n", + "\n", + "header: Table 1: Mortality of pyrethroid resistant Anopheles gambiae s.l. from Cove in WHO cylinder bioassays with and without pre-exposure to PBO\n", + "footer: None\n", + "columns: ['Variable', 'N exposed', 'N dead', '% Dead']\n", + "\n", + "{\"0\":{\"Variable\":\"Control\",\"N exposed\":101,\"N dead\":0,\"% Dead\":0.0},\"1\":{\"Variable\":\"PBO 4% only\",\"N exposed\":103,\"N dead\":3,\"% Dead\":2.9},\"2\":{\"Variable\":\"Permethrin 0.75%\",\"N exposed\":104,\"N dead\":20,\"% Dead\":19.2},\"3\":{\"Variable\":\"Deltamethrin 0.05%\",\"N exposed\":91,\"N dead\":38,\"% Dead\":41.7},\"4\":{\"Variable\":\"Alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":0,\"% Dead\":0.0},\"5\":{\"Variable\":\"PBO 4% then permethrin 0.75%\",\"N exposed\":99,\"N dead\":52,\"% Dead\":52.5},\"6\":{\"Variable\":\"PBO 4% then deltamethrin 0.05%\",\"N exposed\":99,\"N dead\":69,\"% Dead\":69.7},\"7\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4},\"8\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4}}\n", + "\n", + "header: Background\n", + "\n", + "Long-lasting insecticidal nets (LLINs) remain one of the most powerful tools to reduce malaria transmission in a community and provide personal protection to the user [1, 2]. They have contributed significantly to recent reductions in malaria burden [3]. Their efficacy is however threatened by increasing resistance to pyrethroids [4, 5]; the insecticide of choice used on bed-nets owing to its safety, low cost and rapid activity on vector mosquitoes [6]. To maintain the effectiveness of insecticide treated nets for malaria control, new types of LLINs treated with alternative insecticides and compounds which can either replace or complement pyrethroids on bed-nets are urgently needed.\n", + "\n", + "A new class of insecticide treated nets (ITNs) combining pyrethroids and piperonyl butoxide (PBO) (pyrethroid-PBO ITNs) have been developed [7]. PBO is a synergist that inhibits specific metabolic enzymes such as mixed-function oxidases within mosquitoes that detoxify or sequester insecticides before they can have a toxic effect on the mosquito. Pyrethroid-PBO nets can therefore induce increased mortality of pyrethroid-resistant malaria vectors that express mixed function oxidase based pyrethroid resistance mechanisms that are inhibited by the PBO in the net. These nets were given an interim endorsement as a new WHO class of vector control products in 2017 based on epidemiological data from a cluster randomized controlled trial in North Eastern Tanzania [8], that demonstrated additional malaria control with one prototype pyrethroid-PBO net (Olyset Plus) compared to a pyrethroid-only net (Olyset Net), against pyrethroid resistant malaria vectors of moderate intensity, partly conferred by monooxygenase-based resistance mechanism. Pyrethroid-PBO ITNs are conditionally recommended for malaria vector control instead of pyrethroid-only ITNs in areas of confirmed intermediate levels of resistance mediated by monooxygenase-based resistance mechanism [9]. This endorsement has been followed by an increasing uptake of pyrethroid-PBO nets worldwide [10]; in sub-Saharan Africa for example, the proportion of pyrethroid-PBO nets of all nets delivered increased from 3% in 2018 to 35% in 2021.\n", + "\n", + "While Olyset Plus was the first in class pyrethroid-PBO net to demonstrate public health value as observed in the Tanzanian trial [8], there are currently five additional types of pyrethroid-PBO ITNs on the World Health Organization (WHO) list of prequalified vector control products: PermaNet 3.0, Veeralin, Tsara Boost, Tsara Plus and very recently DuraNet Plus [7]. These nets have all demonstrated superiority over pyrethroid-only nets in terms of mosquito mortality and blood-feeding inhibition in multiple experimental hut trials across Africa [11, 12, 13, 14, 15, 16, 17]. However, they differ from Olyset Plus in their design and specifications; typically, the location of PBO on the net (i.e., all panels vs. roof panel only), the type and dose of pyrethroid used, bioavailability and retention of PBO after washing and could, therefore, differ in entomological and epidemiological impact. A recent large cluster-randomized trial in Uganda, evaluating the efficacy of Olyset Plus and PermaNet 3.0 compared to pyrethroid-only nets in a setting of high pyrethroid resistance, also demonstrated better protection against malaria with pyrethroid-PBO nets compared to pyrethroid-only nets for up to 18 months confirming the findings of the Tanzanian trial [18]. While the Ugandan trial was not powered to directly compare between the different ITN brands tested, the results showed that the additional protective effect of the pyrethroid-PBO net compared to the pyrethroid-only net was initially large with PermaNet 3.0 at 6 months post-distribution but lasted only up to 12 months whereas additional protective effect with Olyset Plus appeared to have a delayed onset which was not observed at 6 months but became evident at 12 months and lasted up to 18 months. There are major differences in design between Olyset Plus and PermaNet 3.0, which could have implications on their epidemiological impact; Olyset Plus is a polyethylene net incorporated with permethrin and PBO on all panels while PermaNet 3.0 is a polyester net coated with deltamethrin with PBO restricted to the roof of the net.\n", + "\n", + "To generate assurance of comparative performance of new candidate products within an established WHO vector control product class, without the need for epidemiological evidence for each new product, the WHO has developed new experimental hut study guidelines for assessing their non-inferiority to a first in class product for which evidence of public health value has already been generated [19]. These provisional guidelines are to be piloted with pyrethroid-PBO nets by comparing other WHO/PQ-listed pyrethroid-PBO nets with the first in class product, Olyset Plus. This study compared the efficacy and wash resistance of Olyset Plus and PermaNet\n", + "3.0 and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against wild free-flying pyrethroid resistant malaria vectors in Southern Benin.\n", + "\n", + "header: Conclusion\n", + "\n", + "Olyset Plus outperformed PermaNet 3.0 in terms of its ability to cause greater margins of improved mosquito mortality compared to a standard pyrethroid net, after multiple standardized washes. However, using a margin of non-inferiority defined by the WHO, PermaNet 3.0 was non-inferior to Olyset Plus in inducing mosquito mortality. Considering the low levels of mortality observed and increasing pyrethroid-resistance in West Africa, it is unclear whether either of these nets would demonstrate the same epidemiological impact observed in community trials in East Africa.\n", + "\n", + "header: Experimental hut site: Insecticide resistance bioassays\n", + "\n", + "To assess the frequency of pyrethroid resistance and presence of mixed function oxidases in the Cove vector population during the trial, adult mosquitoes that emerged from larvae collected from breeding sites close to experimental huts were tested in WHO cylinder bioassays with and without pre-exposure to PBO. A total of ~100 mosquitoes of the pyrethroid resistant _An. gambiae_ s.l. Cove strain and the pyrethroid susceptible _An. gambiae_ Kisumu strain were exposed to treated filter papers in WHO cylinder bioassays in batches of 25. Tests were performed with papers treated with permethrin 0.75%, alpha-cypermethrin 0.05% and deltamethrin 0.05%. To assess presence of MFO, some mosquitoes were also pre-exposed to papers treated with 4% PBO prior to exposure to insecticide-treated papers. Exposure to PBO and to insecticides lasted 1 h, knockdown was recorded after 60 min and mortality after 24 h.\n", + "\n", + "header: Non-inferiority assessment\n", + "\n", + "According to recent provisional WHO guidelines [19], for a candidate pyrethroid-PBO ITN product to be included in this new WHO intervention class without the need for epidemiological evidence, it must demonstrate non-inferiority to the first in class product which has already demonstrated public health value (Olyset Plus) and superiority to a pyrethroid-only LLIN in experimental hut trials [19]. Briefly, the candidate pyrethroid-PBO product is deemed non-inferior if: (1) The lower 95% confidence interval estimate of the odds ratio describing the difference in mosquito mortality between the candidate and active comparator product is greater than 0.7. and (2) The upper 95% confidence interval estimate of the odds ratio describing the difference in mosquito blood-feeding between the candidate and active comparator product is less than 1.43. Following the WHO guidelines, both unwashed and washed data of each product were analysed together to generate single estimates of efficacy representative of the overall performance over the lifetime of the product in the field.\n", + "\n", + "Each primary endpoint for non-inferiority (mortality and blood-feeding rate for unwashed and washed nets combined), was assessed using binomial generalized linear mixed models (GLMMs) with a logit link function fitted using the 'lme4' package of R version 3.5.3 for Windows as described earlier. Results from the non-inferiority assessment of PermaNet 3.0 to Olyset Plus are presented in Table 5 below. The odds ratio for\n", + "Fig. 2: Blood-feeding rates of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", + "the difference in mosquito mortality between PermaNet 3.0 and Olyset Plus was 1.528 (95% confidence interval: 1.021-2.289) while the odds ratio for the difference in mosquito blood feeding was 1.192 (95% confidence interval: 0.772-1.841). Following the WHO criteria described above, PermaNet 3.0 was non-inferior to Olyset Plus in terms of its ability to kill wild pyrethroid- resistant _An. gambiae_ s.l. in the experimental hut trial in Cove Benin. In contrast PermaNet 3.0 was not non-inferior to Olyset Plus in terms of proportions of mosquitoes that blood-fed and, therefore, fails to demonstrate non-inferiority for blood feeding inhibition in this trial. The results also showed superiority of both pyrethroid-PBO net types to Olyset Net both in terms of mosquito mortality (25-27% vs. 15%, P < 0.001) and reducing blood-feeding (25%-30% vs. 42%, P < 0.001).\n", + "\n", + "header: Table 2 Entry and exiting rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", + "footer: Values along a row bearing the same letter label are not signi\u001d\n", + "cantly different (P>0.05)* Value set to zero as more mosquitoes caught in Olyset Net huts than control huts\n", + "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", + "\n", + "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"N collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"N females\\/night\",\"Control\":\"23a\",\"Olyset Net\":\"27ab\",\"Olyset Net.1\":\"37b\",\"PermaNet 3.0\":\"12c\",\"PermaNet 3.0.1\":\"15d\",\"Olyset Plus\":\"16d\",\"Olyset Plus.1\":\"30ab\"},\"3\":{\"Net type\":\"% deterrence\",\"Control\":null,\"Olyset Net\":\"0*\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"49\",\"PermaNet 3.0.1\":\"36\",\"Olyset Plus\":\"28\",\"Olyset Plus.1\":\"0\"},\"4\":{\"Net type\":\"N exiting\",\"Control\":\"429\",\"Olyset Net\":\"639\",\"Olyset Net.1\":\"669\",\"PermaNet 3.0\":\"319\",\"PermaNet 3.0.1\":\"370\",\"Olyset Plus\":\"468\",\"Olyset Plus.1\":\"712\"},\"5\":{\"Net type\":\"% exiting\",\"Control\":\"45a\",\"Olyset Net\":\"56b\",\"Olyset Net.1\":\"43a\",\"PermaNet 3.0\":\"65cd\",\"PermaNet 3.0.1\":\"60ce\",\"Olyset Plus\":\"68d\",\"Olyset Plus.1\":\"56be\"},\"6\":{\"Net type\":\"95% conf. limits\",\"Control\":\"41.5\\u201347.7\",\"Olyset Net\":\"53.4\\u201359.2\",\"Olyset Net.1\":\"40.8\\u201345.7\",\"PermaNet 3.0\":\"61.0\\u201369.5\",\"PermaNet 3.0.1\":\"56.2\\u201363.9\",\"Olyset Plus\":\"64.4\\u201371.4\",\"Olyset Plus.1\":\"53.1\\u201358.6\"}}\n", + "\n", + "header: Table 3 Mortality of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", + "footer: Values along a row bearing the same letter label are not signi\u001d\n", + "cantly di\u001c\n", + "erent (P>0.05)\n", + "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", + "\n", + "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total dead\",\"Control\":\"12\",\"Olyset Net\":\"209\",\"Olyset Net.1\":\"284\",\"PermaNet 3.0\":\"198\",\"PermaNet 3.0.1\":\"103\",\"Olyset Plus\":\"190\",\"Olyset Plus.1\":\"297\"},\"3\":{\"Net type\":\"Mortality (%)\",\"Control\":\"1a\",\"Olyset Net\":\"18b\",\"Olyset Net.1\":\"12c\",\"PermaNet 3.0\":\"41d\",\"PermaNet 3.0.1\":\"17b\",\"Olyset Plus\":\"28e\",\"Olyset Plus.1\":\"24e\"},\"4\":{\"Net type\":\"95% conf. limits\",\"Control\":\"0.6\\u20132.0\",\"Olyset Net\":\"16.2\\u201320.1\",\"Olyset Net.1\":\"10.3\\u201313.5\",\"PermaNet 3.0\":\"36.1\\u201344.8\",\"PermaNet 3.0.1\":\"13.8\\u201319.8\",\"Olyset Plus\":\"24.4\\u201331.1\",\"Olyset Plus.1\":\"21.0\\u201325.6\"},\"5\":{\"Net type\":\"Corrected for control (%)\",\"Control\":\"-\",\"Olyset Net\":\"17\",\"Olyset Net.1\":\"11\",\"PermaNet 3.0\":\"41\",\"PermaNet 3.0.1\":\"17\",\"Olyset Plus\":\"27\",\"Olyset Plus.1\":\"22\"}}\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `ClinicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `ClinicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `ClinicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cove\"}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"deltamethrin\",\"Synergist\":\"PBO\",\"Net_washed\":20.0,\"pHI_category\":\"All\"},\"N02\":{\"Net_type\":\"Olyset Plus\",\"Insecticide\":\"permethrin\",\"Synergist\":\"PBO\",\"Net_washed\":20.0,\"pHI_category\":\"All\"},\"N03\":{\"Net_type\":\"Olyset Net\",\"Insecticide\":\"permethrin\",\"Synergist\":null,\"Net_washed\":20.0,\"pHI_category\":\"All\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n", + "** Messages: **\n", + "user: Your ability to extract and summarize this context accurately is essential for effective analysis. Pay close attention to the context's language, structure, and any cross-references to ensure a comprehensive and precise extraction of information. Do not use prior knowledge or information from outside the context to answer the questions. Only use the information provided in the context to answer the questions.\n", + "Context information is below.\n", + "---------------------\n", + "header: Chemical analysis results\n", + "\n", + "For PermaNet 3.0, PBO was only recorded from the roof panel of the nets; for Olyset Plus, PBO was recorded on all 5 panels (Table 6). Compared to the pyrethroid component, much less PBO was retained in both types of pyrethroid-PBO ITNs after 20 washes (58.7% vs. 25% with Olyset Plus and 80.9% vs. 68.8% with PermaNet 3.0, P < 0.05). The decrease in PBO content after washing was more evident in Olyset Plus than in PermaNet 3.0 netting, hence the wash retention index of PBO was higher with PermaNet 3.0 compared to Olyset Plus (98.1% vs. 93.3%).\n", + "\n", + "Figure 4: Tunnel test mortality (%) of susceptible and resistant strains of _Anopheles gambiae_ s.l. exposed to Olyset Plus vs. Olyset Net\n", + "\n", + "Figure 3: Mortality (%) of susceptible and resistant strains of _An. gambiae_ s.l. in cone bioassays with Olyset Plus and Olyset Net. S = susceptible, R = resistant\n", + "\n", + "header: Supplementary laboratory bioassays results\n", + "\n", + "The 3-min cone bioassay mortality results for all 3 mosquito strains and wash points tested are presented in Fig. 3. Unwashed Olyset Net induced very low mortality rates against the susceptible Kisumu strain (17-20%) and even lower mortality rates against the pyrethroid resistant strains (< 5%). Cone bioassay mortality rates with unwashed Olyset Plus were higher across all 3 strains compared to Olyset Net though mortality decreased as the strain tested became more pyrethroid-resistant. Cone bioassay mortality however dropped significantly with washed net samples. Mortality with the untreated net samples did not exceed 5% with any strain tested.\n", + "\n", + "header: Experimental hut treatments\n", + "\n", + "Olyset Plus and PermaNet 3.0 were compared in the experimental huts when unwashed and after 20 standardized washes. A WHO-recommended pyrethroid-only long-lasting net (Olyset Net) was included to demonstrate the added effect of PBO on the insecticide-resistant local vector species. Nets were washed using savon de Marseilles and rinsed twice following WHO procedures for washing nets for experimental hut studies [22].\n", + "\n", + "The following seven (7) treatments were thus tested in seven experimental huts:\n", + "\n", + "1. Untreated polyethylene net\n", + "2. Olyset Net unwashed (permethrin only)\n", + "3. Olyset Net washed 20 times.\n", + "4. PermaNet 3.0 unwashed (Roof: deltamethrin plus PBO; sides: deltamethrin only)\n", + "5. PermaNet 3.0 washed 20 times.\n", + "6. Olyset Plus unwashed (permethrin plus PBO on all panels)\n", + "7. Olyset Plus washed 20 times.\n", + "\n", + "header: Background: Methods\n", + "\n", + "An experimental hut trial was performed in Cove, Benin to compare PermaNet 3.0 (deltamethrin plus PBO on roof panel only) to Olyset Plus (permethrin plus PBO on all panels) against wild pyrethroid-resistant _Anopheles gambiae_ sensu lato (s.l) following World Health Organization (WHO) guidelines. Both nets were tested unwashed and after 20 standardized washes compared to Olyset Net. Laboratory bioassays were also performed to help explain findings in the experimental huts.\n", + "\n", + "header: Abstract\n", + "\n", + "Comparative efficacy of two pyrethroid-piperonyl butoxide nets (Olyset Plus and PermaNet 3.0) against pyrethroid resistant malaria vectors: a non-inferiority assessment\n", + "\n", + "Corine Ngufor, Josias Fagbohoun, Abel Agbevo, Hanafy Ismail, Joseph D. Challenger, Thomas S. Churcher, Mark Rowland\n", + "\n", + "\n", + "\n", + "Pyrethroid-PBO nets were conditionally recommended for control of malaria transmitted by mosquitoes with oxidase-based pyrethroid-resistance based on epidemiological evidence of additional protective effect with Olyset Plus compared to a pyrethroid-only net (Olyset Net). Entomological studies can be used to assess the comparative performance of other brands of pyrethroid-PBO ITNs to Olyset Plus.\n", + "\n", + "header: Mosquito entry and exiting rates in experimental huts: Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts\n", + "\n", + "Mortality rates of wild pyrethroid resistant mosquitoes that entered the experimental huts are presented in Fig. 1 with further details provided in Table 3. The lowest mortality was achieved with Olyset Net (18% before washing and 12% after 20 washes). Percentage mortality with unwashed pyrethroid-PBO nets was highest with PermaNet 3.0 (41%) but this declined significantly after 20 washes (17%, P < 0.001). Mortality with unwashed Olyset Plus was 28% and while this value was significantly lower than the mortality shown by unwashed PermaNet 3.0 (P < 0.001), it did not decrease significantly after 20 washes (28% vs. 24%, P = 0.433) whereas for PermaNet 3.0 it declined. Hence, Olyset Plus induced higher mortality rates than PermaNet 3.0 after 20 washes (24% vs 17%, P < 0.001). With respect to the pyrethroid-only ITN, both pyrethroid-PBO nets induced significantly higher mortality rates than Olyset Net with nets washed 20 times (P < 0.001) though the difference was higher with Olyset Plus (24% vs. 12%), than with PermaNet 3.0 (17% vs. 12%). After 20 washes, mortality with PermaNet 3.0 declined to the same level as the unwashed Olyset Net, (17% vs. 18%, P = 0.061) but remained significantly higher with Olyset Plus (24% vs. 17%, P = 0.036).\n", + "\n", + "header: Mosquito blood-feeding rates in experimental huts\n", + "\n", + "The blood-feeding rates of wild pyrethroid-resistant _An. gambiae s.l_ that entered the experimental huts are presented in Fig. 2 with further details on mosquito feeding provided in Table 4. The percentage blood-feeding was lower in huts with the unwashed pyrethroid-PBO ITNs and was lowest of all with unwashed Olyset Plus as compared to unwashed PermaNet 3.0 (8% vs 19%, P < 0.001). For all net types, the data showed an overall increase in blood feeding with washed nets compared to unwashed nets and a decrease in blood-feeding inhibition relative to the untreated net. Percentage blood-feeding when washed 20 times did not differ significantly between the pyrethroid-PBO types (38% with PermaNet 3.0 vs. 35% with Olyset Plus, P = 0.708). The proportions of mosquitoes collected resting in the nets were lowest with the\n", + "\n", + "Fig. 1: Mortality of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", + "unwashed pyrethroid-PBO nets (2-6%), which is consistent with the higher toxicity observed with this type of net. Personal protection with both types of pyrethroid-PBO ITMs were > 80% when unwashed but this declined after 20 washes to 53% with PermaNet 3.0 and 11% with Olyset Plus.\n", + "\n", + "header: Cone bioassay results: Tunnel test results\n", + "\n", + "The results from the tunnel tests comparing Olyset Plus and Olyset Net unwashed and after 10 and 20 washes against all three strains are presented in Figs. 4 and 5 for mortality and blood-feeding inhibition respectively. Mortality rates were generally higher in the tunnels tests compared to the cone bioassays and decreased as the strain become more pyrethroid-resistant (Fig. 4). Mortality rates with the Kisumu strain were very high with Olyset Net and Olyset Plus (> 95%). With the VKPer strain, mortality remained > 80% after 20 washes with both ITN types. With the Cove strain, mortality was significantly higher with Olyset Plus compared to Olyset Net at 0 and 10 washes but about the same after 20 washes. With unwashed nets, blood-feeding inhibition in the tunnel tests was consistently higher with Olyset Plus (> 90%) compared to Olyset Net (27-75%) for all three strains tested (Fig. 5). After 10 and 20 washes, blood-feeding inhibition of the Kisumu and VKPer strain remained > 80% with Olyset Plus and Olyset Net. With Cove strain, blood-feeding inhibition was also higher with Olyset Plus at 0 and 10 washes but declined to about the same level as Olyset Net after 20 washes (56%).\n", + "Mortality in the untreated control tunnel was < 10% with all three strains.\n", + "\n", + "header: Results\n", + "\n", + "Mortality with permethrin and alpha-cypermethrin treated papers was 100% with the laboratory-maintained pyrethroid-susceptible _An. gambiae_ Kisumu strain. With wild pyrethroid resistant _An. gambiae_ s.l. from Cove, mortality rates were <50% with all three pyrethroid insecticides tested (Table 1) thus confirming the high levels of pyrethroid resistance in this vector population. Mortality however increased from 19.2 to 52.5% with permethrin, 41.7% to 69.7% with deltamethrin and 0% to 82.4% with alphacypermethrin after pre-exposure of the Cove strain to PBO synergist (Table 1). This result demonstrated that mixed function oxidases are overexpressed in the wild Cove vector population and their effect can be effectively inhibited by the PBO synergist.\n", + "\n", + "header: Supplementary laboratory bioassays\n", + "\n", + "To help further explain the results obtained in the experimental huts, WHO cone bioassays and tunnel tests were performed on samples of netting (\\(30\\times 30\\) cm) obtained from Olyset Net and Olyset Plus when unwashed and after 10 and 20 washes. Washing was performed in the laboratory following WHO guidelines [22]. PermaNet 3.0 was not tested in the laboratory bioassays owing to the restricted application of PBO to the roof of the net preventing a realistic direct comparison with Olyset Plus in bioassays especially tunnel tests. Net samples from each ITN type and each wash point were tested against the following strains:\n", + "\n", + "1. _An. gambiae_ sensu lato (s.l.) strains from Cove, Benin (Cove strain) which is highly pyrethroid resistant. It originates from the experimental hut station in Cove and has shown > 200-fold resistance compared to the susceptible Kisumu strain in susceptibility bioassays. Resistance is mediated by elevated levels of P450s and high frequencies of _kdr_ [20].\n", + "2. _An. gambiae_ VKPer strain, which originated from the Kou Valley in Burkina Faso. VKPer has moderate levels of pyrethroid resistance mediated only by high frequencies of _kdr_.\n", + "3. _An. gambiae_ s.s. Kisumu strain, a reference susceptible strain which originated from Kisumu Kenya.\n", + "\n", + "Approximately two hundred 2-5 days old mosquitoes of each strain were exposed for 3 min in cone bioassays to four net samples of each net type in cohorts of 5 mosquitoes per cone. Knock down in cone bioassays was recorded after 1 h and mortality after 24 h.\n", + "\n", + "Two to three hundred 5-8 days old mosquitoes of each strain were also exposed to each net type in tunnel tests in replicates of 50 mosquitoes per net sample. The tunnel test is a laboratory assay designed to simulate natural host-seeking behaviour of mosquitoes at night in the presence of a net. It consists of a square glass cylinder (25 cm high, 25 cm wide, 60 cm in length) divided into two sections by means of a netting frame fitted into a slot across the tunnel. An anesthetized guinea pig was housed unconstrained in a small cage in one section, and mosquitoes were released in the other section at dusk and left overnight. The net samples were holed with nine 1-cm diameter holes to allow host-seeking mosquitoes to penetrate the baited chamber; an untreated net sample served as the control. The tunnels were kept overnight in a dark room at 25-29 degC and 75-85% RH. The next morning, the numbers found alive or dead, fed, or unfed, in each section were recorded. Live mosquitoes were provided with sugar solution and delayed mortality recorded after 24 h. The guinea pigs used in this study were kept in accordance with institutional guidelines for animal care.\n", + "\n", + "header: Table 4: Blood-feeding rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", + "footer: Values along a row bearing the same letter label are not significantly different (P > 0.05) * Value set to zero as more blood fed mosquitoes were caught in washed Olyset Net huts than control hut\n", + "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", + "\n", + "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"Total collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"Total blood fed\",\"Control\":\"496\",\"Olyset Net\":\"324\",\"Olyset Net.1\":\"807\",\"PermaNet 3.0\":\"95\",\"PermaNet 3.0.1\":\"231\",\"Olyset Plus\":\"56\",\"Olyset Plus.1\":\"442\"},\"3\":{\"Net type\":\"% Blood fed\",\"Control\":\"52a\",\"Olyset Net\":\"29b\",\"Olyset Net.1\":\"52a\",\"PermaNet 3.0\":\"19c\",\"PermaNet 3.0.1\":\"38d\",\"Olyset Plus\":\"8e\",\"Olyset Plus.1\":\"35d\"},\"4\":{\"Net type\":\"95% conf intervals\",\"Control\":\"48.4\\u201354.7\",\"Olyset Net\":\"25.9\\u201331.2\",\"Olyset Net.1\":\"49.7\\u201354.7\",\"PermaNet 3.0\":\"15.9\\u201322.9\",\"PermaNet 3.0.1\":\"33.7\\u201341.3\",\"Olyset Plus\":\"6.1\\u201310.2\",\"Olyset Plus.1\":\"32.1\\u201337.3\"},\"5\":{\"Net type\":\"% Blood-feeding inhibition\",\"Control\":\"-\",\"Olyset Net\":\"44\",\"Olyset Net.1\":\"0\",\"PermaNet 3.0\":\"63\",\"PermaNet 3.0.1\":\"27\",\"Olyset Plus\":\"85\",\"Olyset Plus.1\":\"33\"},\"6\":{\"Net type\":\"inside net\",\"Control\":\"294\",\"Olyset Net\":\"184\",\"Olyset Net.1\":\"542\",\"PermaNet 3.0\":\"28\",\"PermaNet 3.0.1\":\"130\",\"Olyset Plus\":\"17\",\"Olyset Plus.1\":\"241\"},\"7\":{\"Net type\":\"inside net (%)\",\"Control\":\"31a\",\"Olyset Net\":\"16bc\",\"Olyset Net.1\":\"35a\",\"PermaNet 3.0\":\"6d\",\"PermaNet 3.0.1\":\"21b\",\"Olyset Plus\":\"2e\",\"Olyset Plus.1\":\"19c\"},\"8\":{\"Net type\":\"Personal protection (%)\",\"Control\":\"-\",\"Olyset Net\":\"35\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"81\",\"PermaNet 3.0.1\":\"53\",\"Olyset Plus\":\"89\",\"Olyset Plus.1\":\"11\"}}\n", + "\n", + "header: Results\n", + "\n", + "With unwashed nets, mosquito mortality was higher in huts with PermaNet 3.0 compared to Olyset Plus (41% vs. 28%, P < 0.001). After 20 washes, mortality declined significantly with PermaNet 3.0 (41% unwashed vs. 17% after washing P < 0.001), but not with Olyset Plus (28% unwashed vs. 24% after washing P = 0.433); Olyset Plus induced significantly higher mortality than PermaNet 3.0 and Olyset Net after 20 washes. PermaNet 3.0 showed a higher wash retention of PBO compared to Olyset Plus. A non-inferiority analysis performed with data from unwashed and washed nets together using a margin recommended by the WHO, showed that PermaNet 3.0 was non-inferior to Olyset Plus in terms of mosquito mortality (25% with Olyset Plus vs. 27% with PermaNet 3.0, OR = 1.528, 95%Cl = 1.02-2.29) but not in reducing mosquito feeding (25% with Olyset Plus vs. 30% with PermaNet 3.0, OR = 1.192, 95%Cl = 0.77-1.84). Both pyrethroid-PBO nets were superior to Olyset Net.\n", + "\n", + "header: Background\n", + "\n", + "Long-lasting insecticidal nets (LLINs) remain one of the most powerful tools to reduce malaria transmission in a community and provide personal protection to the user [1, 2]. They have contributed significantly to recent reductions in malaria burden [3]. Their efficacy is however threatened by increasing resistance to pyrethroids [4, 5]; the insecticide of choice used on bed-nets owing to its safety, low cost and rapid activity on vector mosquitoes [6]. To maintain the effectiveness of insecticide treated nets for malaria control, new types of LLINs treated with alternative insecticides and compounds which can either replace or complement pyrethroids on bed-nets are urgently needed.\n", + "\n", + "A new class of insecticide treated nets (ITNs) combining pyrethroids and piperonyl butoxide (PBO) (pyrethroid-PBO ITNs) have been developed [7]. PBO is a synergist that inhibits specific metabolic enzymes such as mixed-function oxidases within mosquitoes that detoxify or sequester insecticides before they can have a toxic effect on the mosquito. Pyrethroid-PBO nets can therefore induce increased mortality of pyrethroid-resistant malaria vectors that express mixed function oxidase based pyrethroid resistance mechanisms that are inhibited by the PBO in the net. These nets were given an interim endorsement as a new WHO class of vector control products in 2017 based on epidemiological data from a cluster randomized controlled trial in North Eastern Tanzania [8], that demonstrated additional malaria control with one prototype pyrethroid-PBO net (Olyset Plus) compared to a pyrethroid-only net (Olyset Net), against pyrethroid resistant malaria vectors of moderate intensity, partly conferred by monooxygenase-based resistance mechanism. Pyrethroid-PBO ITNs are conditionally recommended for malaria vector control instead of pyrethroid-only ITNs in areas of confirmed intermediate levels of resistance mediated by monooxygenase-based resistance mechanism [9]. This endorsement has been followed by an increasing uptake of pyrethroid-PBO nets worldwide [10]; in sub-Saharan Africa for example, the proportion of pyrethroid-PBO nets of all nets delivered increased from 3% in 2018 to 35% in 2021.\n", + "\n", + "While Olyset Plus was the first in class pyrethroid-PBO net to demonstrate public health value as observed in the Tanzanian trial [8], there are currently five additional types of pyrethroid-PBO ITNs on the World Health Organization (WHO) list of prequalified vector control products: PermaNet 3.0, Veeralin, Tsara Boost, Tsara Plus and very recently DuraNet Plus [7]. These nets have all demonstrated superiority over pyrethroid-only nets in terms of mosquito mortality and blood-feeding inhibition in multiple experimental hut trials across Africa [11, 12, 13, 14, 15, 16, 17]. However, they differ from Olyset Plus in their design and specifications; typically, the location of PBO on the net (i.e., all panels vs. roof panel only), the type and dose of pyrethroid used, bioavailability and retention of PBO after washing and could, therefore, differ in entomological and epidemiological impact. A recent large cluster-randomized trial in Uganda, evaluating the efficacy of Olyset Plus and PermaNet 3.0 compared to pyrethroid-only nets in a setting of high pyrethroid resistance, also demonstrated better protection against malaria with pyrethroid-PBO nets compared to pyrethroid-only nets for up to 18 months confirming the findings of the Tanzanian trial [18]. While the Ugandan trial was not powered to directly compare between the different ITN brands tested, the results showed that the additional protective effect of the pyrethroid-PBO net compared to the pyrethroid-only net was initially large with PermaNet 3.0 at 6 months post-distribution but lasted only up to 12 months whereas additional protective effect with Olyset Plus appeared to have a delayed onset which was not observed at 6 months but became evident at 12 months and lasted up to 18 months. There are major differences in design between Olyset Plus and PermaNet 3.0, which could have implications on their epidemiological impact; Olyset Plus is a polyethylene net incorporated with permethrin and PBO on all panels while PermaNet 3.0 is a polyester net coated with deltamethrin with PBO restricted to the roof of the net.\n", + "\n", + "To generate assurance of comparative performance of new candidate products within an established WHO vector control product class, without the need for epidemiological evidence for each new product, the WHO has developed new experimental hut study guidelines for assessing their non-inferiority to a first in class product for which evidence of public health value has already been generated [19]. These provisional guidelines are to be piloted with pyrethroid-PBO nets by comparing other WHO/PQ-listed pyrethroid-PBO nets with the first in class product, Olyset Plus. This study compared the efficacy and wash resistance of Olyset Plus and PermaNet\n", + "3.0 and assessed the non-inferiority of PermaNet 3.0 to Olyset Plus in experimental huts against wild free-flying pyrethroid resistant malaria vectors in Southern Benin.\n", + "\n", + "header: Table 1: Mortality of pyrethroid resistant Anopheles gambiae s.l. from Cove in WHO cylinder bioassays with and without pre-exposure to PBO\n", + "footer: None\n", + "columns: ['Variable', 'N exposed', 'N dead', '% Dead']\n", + "\n", + "{\"0\":{\"Variable\":\"Control\",\"N exposed\":101,\"N dead\":0,\"% Dead\":0.0},\"1\":{\"Variable\":\"PBO 4% only\",\"N exposed\":103,\"N dead\":3,\"% Dead\":2.9},\"2\":{\"Variable\":\"Permethrin 0.75%\",\"N exposed\":104,\"N dead\":20,\"% Dead\":19.2},\"3\":{\"Variable\":\"Deltamethrin 0.05%\",\"N exposed\":91,\"N dead\":38,\"% Dead\":41.7},\"4\":{\"Variable\":\"Alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":0,\"% Dead\":0.0},\"5\":{\"Variable\":\"PBO 4% then permethrin 0.75%\",\"N exposed\":99,\"N dead\":52,\"% Dead\":52.5},\"6\":{\"Variable\":\"PBO 4% then deltamethrin 0.05%\",\"N exposed\":99,\"N dead\":69,\"% Dead\":69.7},\"7\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4},\"8\":{\"Variable\":\"PBO 4% then alpha-cypermethrin 0.05%\",\"N exposed\":102,\"N dead\":84,\"% Dead\":82.4}}\n", + "\n", + "header: Conclusion\n", + "\n", + "Olyset Plus outperformed PermaNet 3.0 in terms of its ability to cause greater margins of improved mosquito mortality compared to a standard pyrethroid net, after multiple standardized washes. However, using a margin of non-inferiority defined by the WHO, PermaNet 3.0 was non-inferior to Olyset Plus in inducing mosquito mortality. Considering the low levels of mortality observed and increasing pyrethroid-resistance in West Africa, it is unclear whether either of these nets would demonstrate the same epidemiological impact observed in community trials in East Africa.\n", + "\n", + "header: Experimental hut site: Insecticide resistance bioassays\n", + "\n", + "To assess the frequency of pyrethroid resistance and presence of mixed function oxidases in the Cove vector population during the trial, adult mosquitoes that emerged from larvae collected from breeding sites close to experimental huts were tested in WHO cylinder bioassays with and without pre-exposure to PBO. A total of ~100 mosquitoes of the pyrethroid resistant _An. gambiae_ s.l. Cove strain and the pyrethroid susceptible _An. gambiae_ Kisumu strain were exposed to treated filter papers in WHO cylinder bioassays in batches of 25. Tests were performed with papers treated with permethrin 0.75%, alpha-cypermethrin 0.05% and deltamethrin 0.05%. To assess presence of MFO, some mosquitoes were also pre-exposed to papers treated with 4% PBO prior to exposure to insecticide-treated papers. Exposure to PBO and to insecticides lasted 1 h, knockdown was recorded after 60 min and mortality after 24 h.\n", + "\n", + "header: Chemical analysis\n", + "\n", + "At the end of the experimental hut trial, five pieces of netting (\\(25\\times 25\\) cm) obtained from the panels of replicate nets of each net type (before and after washing) used in the huts were assessed for deltamethrin, permethrin and PBO content using HPLC. Insecticide was extracted from each net piece with an area of 48 sq cm collected from the five net samples (\\(25\\times 25\\) cm) obtained from each whole net. The insecticide content of each sample was determined by injecting ten ul aliquots of the extract on a reverse-phase Hypersil GOLD C18 column (75 A, \\(250\\times 4.6\\) mm, 5-um particle size; Thermo Scientific) at room temperature. A mobile phase of 70% acetonitrile in water was used at a flow rate of 1 ml min\\({}^{-1}\\) to separate the target analyte. Chromatographic peaks of the insecticides and internal standard were detected at a wavelength of 232 nm with the Ultimate 3000 UV detector and analysed with Dionex Chromeleon(tm) 6.8 Chromatography Data System software. Quantities of insecticide were calculated from standard curves established by known concentrations of the insecticide authenticated standards and corrected by internal standard readings in each sample relative to control.\n", + "\n", + "Data from chemical analysis was used to calculate the percentage retention of each active ingredient after 20 washes relative to the unwashed net and the wash retention index. Wash-resistance index was calculated according to WHO guidelines [22] as indicated below:\n", + "\n", + "\\[\\text{Wash resistance index} = 100\\times\\text{n}\\sqrt{(\\text{tn}/\\text{t0})}\\] \\[\\left(\\text{free migration stage behaviour}\\right)\\]\n", + "\n", + "where \\(\\text{tn}=\\text{total active ingredient content after n washing cycles, t0=total active ingredient content before washing, n=number of washes.\n", + "\n", + "header: Table 2 Entry and exiting rates of wild pyrethroid resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin\n", + "footer: Values along a row bearing the same letter label are not signi\u001d\n", + "cantly different (P>0.05)* Value set to zero as more mosquitoes caught in Olyset Net huts than control huts\n", + "columns: ['Net type', 'Control', 'Olyset Net', 'Olyset Net.1', 'PermaNet 3.0', 'PermaNet 3.0.1', 'Olyset Plus', 'Olyset Plus.1']\n", + "\n", + "{\"0\":{\"Net type\":\"Number of washes\",\"Control\":\"0\",\"Olyset Net\":\"0\",\"Olyset Net.1\":\"20\",\"PermaNet 3.0\":\"0\",\"PermaNet 3.0.1\":\"20\",\"Olyset Plus\":\"0\",\"Olyset Plus.1\":\"20\"},\"1\":{\"Net type\":\"N collected\",\"Control\":\"962\",\"Olyset Net\":\"1135\",\"Olyset Net.1\":\"1546\",\"PermaNet 3.0\":\"489\",\"PermaNet 3.0.1\":\"616\",\"Olyset Plus\":\"688\",\"Olyset Plus.1\":\"1275\"},\"2\":{\"Net type\":\"N females\\/night\",\"Control\":\"23a\",\"Olyset Net\":\"27ab\",\"Olyset Net.1\":\"37b\",\"PermaNet 3.0\":\"12c\",\"PermaNet 3.0.1\":\"15d\",\"Olyset Plus\":\"16d\",\"Olyset Plus.1\":\"30ab\"},\"3\":{\"Net type\":\"% deterrence\",\"Control\":null,\"Olyset Net\":\"0*\",\"Olyset Net.1\":\"0*\",\"PermaNet 3.0\":\"49\",\"PermaNet 3.0.1\":\"36\",\"Olyset Plus\":\"28\",\"Olyset Plus.1\":\"0\"},\"4\":{\"Net type\":\"N exiting\",\"Control\":\"429\",\"Olyset Net\":\"639\",\"Olyset Net.1\":\"669\",\"PermaNet 3.0\":\"319\",\"PermaNet 3.0.1\":\"370\",\"Olyset Plus\":\"468\",\"Olyset Plus.1\":\"712\"},\"5\":{\"Net type\":\"% exiting\",\"Control\":\"45a\",\"Olyset Net\":\"56b\",\"Olyset Net.1\":\"43a\",\"PermaNet 3.0\":\"65cd\",\"PermaNet 3.0.1\":\"60ce\",\"Olyset Plus\":\"68d\",\"Olyset Plus.1\":\"56be\"},\"6\":{\"Net type\":\"95% conf. limits\",\"Control\":\"41.5\\u201347.7\",\"Olyset Net\":\"53.4\\u201359.2\",\"Olyset Net.1\":\"40.8\\u201345.7\",\"PermaNet 3.0\":\"61.0\\u201369.5\",\"PermaNet 3.0.1\":\"56.2\\u201363.9\",\"Olyset Plus\":\"64.4\\u201371.4\",\"Olyset Plus.1\":\"53.1\\u201358.6\"}}\n", + "\n", + "header: Non-inferiority assessment\n", + "\n", + "According to recent provisional WHO guidelines [19], for a candidate pyrethroid-PBO ITN product to be included in this new WHO intervention class without the need for epidemiological evidence, it must demonstrate non-inferiority to the first in class product which has already demonstrated public health value (Olyset Plus) and superiority to a pyrethroid-only LLIN in experimental hut trials [19]. Briefly, the candidate pyrethroid-PBO product is deemed non-inferior if: (1) The lower 95% confidence interval estimate of the odds ratio describing the difference in mosquito mortality between the candidate and active comparator product is greater than 0.7. and (2) The upper 95% confidence interval estimate of the odds ratio describing the difference in mosquito blood-feeding between the candidate and active comparator product is less than 1.43. Following the WHO guidelines, both unwashed and washed data of each product were analysed together to generate single estimates of efficacy representative of the overall performance over the lifetime of the product in the field.\n", + "\n", + "Each primary endpoint for non-inferiority (mortality and blood-feeding rate for unwashed and washed nets combined), was assessed using binomial generalized linear mixed models (GLMMs) with a logit link function fitted using the 'lme4' package of R version 3.5.3 for Windows as described earlier. Results from the non-inferiority assessment of PermaNet 3.0 to Olyset Plus are presented in Table 5 below. The odds ratio for\n", + "Fig. 2: Blood-feeding rates of wild pyrethroid-resistant _Anopheles gambiae_ s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\n", + "the difference in mosquito mortality between PermaNet 3.0 and Olyset Plus was 1.528 (95% confidence interval: 1.021-2.289) while the odds ratio for the difference in mosquito blood feeding was 1.192 (95% confidence interval: 0.772-1.841). Following the WHO criteria described above, PermaNet 3.0 was non-inferior to Olyset Plus in terms of its ability to kill wild pyrethroid- resistant _An. gambiae_ s.l. in the experimental hut trial in Cove Benin. In contrast PermaNet 3.0 was not non-inferior to Olyset Plus in terms of proportions of mosquitoes that blood-fed and, therefore, fails to demonstrate non-inferiority for blood feeding inhibition in this trial. The results also showed superiority of both pyrethroid-PBO net types to Olyset Net both in terms of mosquito mortality (25-27% vs. 15%, P < 0.001) and reducing blood-feeding (25%-30% vs. 42%, P < 0.001).\n", + "\n", + "header: Insecticide resistance in malaria vectors in Cove: Experimental hut trial results\n", + "\n", + "A total of 6711 pyrethroid resistant female _An. gambiae_ s.l. were collected during the experimental hut trial. The entry and exiting rates of wild pyrethroid resistant _An. gambiae_ s.l. from the experimental huts with the different ITN types tested in the trial are presented in Table 2. Compared to the control, Olyset Net did not deter mosquitoes from entering the experimental huts (0% when unwashed and after 20 washes). Mosquito deterrence was significantly higher with PermaNet 3.0 compared to Olyset Plus both unwashed (49% vs. 28%, P < 0.001) and after 20 washes (36% vs. 0%, P < 0.001). Nevertheless, early exiting of mosquitoes from the experimental huts into the veranda trap did not differ significantly between both pyrethroid-PBO net types both when unwashed (65% with PermaNet 3.0 vs 68% with Olyset Plus, P = 0.232) and after 20 washes (60% with PermaNet 3.0 vs. 56% with Olyset Plus, P = 0.053).\n", + "\\begin{table}\n", + "\\begin{tabular}{l c c c c c c}\n", + "**Net type** & **Control** & **Olyset Net** & & **PermNet 3.0** & **Olyset Plus** \\\\ Number of washes & 0 & 0 & 20 & 0 & 20 & 0 & 20 \\\\ N collected & 962 & 1135 & 1546 & 489 & 616 & 688 & 1275 \\\\ N females/night & 233 & 27\\({}^{\\text{hb}}\\) & 37\\({}^{\\text{b}}\\) & 12\\({}^{\\text{c}}\\) & 15\\({}^{\\text{d}}\\) & 16\\({}^{\\text{d}}\\) & 30\\({}^{\\text{hb}}\\) \\\\ \\% deterrence & – & 0\\({}^{\\text{a}}\\) & 0\\({}^{\\text{a}}\\) & 49 & 36 & 28 & 0 \\\\ N eating & 429 & 639 & 669 & 319 & 370 &\n", + "---------------------\n", + "Query: Your task is to extract data from a research paper.\n", + "The `EntomologicalOutcome` details can be split across the provided context. Respond with details by looking at the whole context always.\n", + "If you don't find the information in the given context or you are not sure, omit the key-value in your JSON response. The `EntomologicalOutcome` data you're extracting is dependent on the provided `Observation, ITNCondition` tables containing entities which you need to reference. There can be multiple `EntomologicalOutcome` data entries for each unique combination of these references.Here are the data already extracted from the paper:\n", + "\n", + "###Observation###\n", + "Schema:\n", + "{\"title\": \"Observation\", \"description\": \"A collection of observations from a single publication. Each Observation entity extracted should have unique `Site`, `Start_month`, `End_month`, and `Time_elapsed` (if reported). Country and Site are typically located in Africa.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `observation_ref`\\nSpecifications:\\nstr_startswith: \\\"S\\\"\"}, \"Study_type\": {\"title\": \"Study Type\", \"description\": \"The different study types from a single publication\"}, \"Country\": {\"title\": \"Country\", \"description\": \"Country where the study was conducted\"}, \"Site\": {\"title\": \"Site\", \"description\": \"Specific geographic information (such as district name) where the study was conducted and where the mosquitoes was collected. If mosquitoes were collected from a lab, enter 'Lab facility' here.\"}}}\n", + "Data:\n", + "{\"S01\":{\"Study_type\":\"Hut trial\",\"Country\":\"Benin\",\"Site\":\"Cove\"}}\n", + "\n", + "###ITNCondition###\n", + "Schema:\n", + "{\"title\": \"ITNCondition\", \"description\": \"The paper contains a collection of nets including untreated nets, no nets, and different brands of treated nets, which is used to compare effectiveness in malaria prevention and control.\", \"type\": \"object\", \"properties\": {\"reference\": {\"title\": \"Reference\", \"description\": \"Unique identifier where other tables can reference entries with the key `itncondition_ref`\\nSpecifications:\\nstr_startswith: \\\"N\\\"\"}, \"Net_type\": {\"title\": \"Net Type\", \"description\": \"Name of net brand or type\"}, \"Insecticide\": {\"title\": \"Insecticide\", \"description\": \"Enter the active ingredient insecticide or insecticides combination (in order of concentration, delimited by comma) used in the net type here.\"}, \"Synergist\": {\"title\": \"Synergist\", \"description\": \"Enter the synergist or synergists combination (delimited by comma).\"}, \"Net_washed\": {\"title\": \"Net Washed\", \"description\": \"Numerical count of number of net washes - 0 if none and NA if not reported.\"}, \"pHI_category\": {\"title\": \"Phi Category\", \"description\": \"Classification of the nets holed surface area, as one of \\\"Good\\\", \\\"Damaged\\\", \\\"Torn\\\", \\\"Serviceable\\\", or \\\"All\\\", as proposed by WHO\"}}}\n", + "Data:\n", + "{\"N01\":{\"Net_type\":\"PermaNet 3.0\",\"Insecticide\":\"deltamethrin\",\"Synergist\":\"PBO\",\"Net_washed\":20.0,\"pHI_category\":\"All\"},\"N02\":{\"Net_type\":\"Olyset Plus\",\"Insecticide\":\"permethrin\",\"Synergist\":\"PBO\",\"Net_washed\":20.0,\"pHI_category\":\"All\"},\"N03\":{\"Net_type\":\"Olyset Net\",\"Insecticide\":\"permethrin\",\"Synergist\":null,\"Net_washed\":20.0,\"pHI_category\":\"All\"}}\n", + "\n", + "\n", + "Answer: \n", + "**************************************************\n", + "** Response: **\n", + "assistant: None\n", + "**************************************************\n", + "\n", + "\n" + ] + } + ], + "source": [ + "for ref, paper in tqdm(papers.loc[references].iterrows(), total=len(references)):\n", + " if ref in pred_extractions and pred_extractions[ref]: continue\n", + " \n", + " indexes[paper.name] = load_index(\n", + " paper, llm_model=llm_model, \n", + " embed_model=embed_model, \n", + " weaviate_client=weaviate_client,\n", + " index_name='LlamaIndexDocumentSections',\n", + " )\n", + "\n", + " ### comment out langfuse code \n", + " # global_handler.set_trace_params(\n", + " # name=f\"extract-{ref}\",\n", + " # session_id=ref,\n", + " # user_id='jonnytr',\n", + " # tags=['itn-recalibration', ref, 'complete-extraction']\n", + " # )\n", + "\n", + " pred_extractions[ref], responses[ref] = extract_paper(\n", + " paper, schema_structure=ss,\n", + " index=indexes[paper.name], \n", + " llm_models=[llm_model, 'gpt-4-turbo'], embed_model=embed_model, \n", + " verbose=2,\n", + " )" + ] }, { - "hovertemplate": "Schema=Observation
N values=%{x}
latencies=%{y}", - "legendgroup": "Observation", - "marker": { - "color": "#EF553B", - "symbol": "circle" - }, - "mode": "markers", - "name": "Observation", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - 10, - 10, - 2, - 2, - 6, - 6, - 6, - 6, - 5, - 5, - 20, - 20, - 15, - 15, - 15, - 15, - 6, - 6, - 6, - 6, - 6, - 6, - 4, - 4, - 4, - 4 - ], - "xaxis": "x", - "y": [ - 1.279, - 1.46, - 1.208, - 1.42, - 1.079, - 1.223, - 1.186, - 1.337, - 1.048, - 1.206, - 2.46, - 2.625, - 4.65, - 4.871, - 2.033, - 2.226, - 0.974, - 1.182, - 0.665, - 0.814, - 0.777, - 0.922, - 0.582, - 1.004, - 0.587, - 0.734 - ], - "yaxis": "y" + "cell_type": "markdown", + "id": "38e7de0c-a1d9-460c-a649-6e3da0a7780b", + "metadata": {}, + "source": [ + "### View extraction results" + ] }, { - "hovertemplate": "Schema=ITNCondition
N values=%{x}
latencies=%{y}", - "legendgroup": "ITNCondition", - "marker": { - "color": "#00cc96", - "symbol": "circle" - }, - "mode": "markers", - "name": "ITNCondition", - "orientation": "v", - "showlegend": true, - "type": "scatter", - "x": [ - 3, - 3, - 2, - 2, - 12, - 12, - 2, - 2, - 8, - 8, - 8, - 8, - 9, - 9, - 10, - 10, - 2, - 2, - 8, - 8, - 2, - 2, - 10, - 10, - 20, - 20, - 10, - 10, - 10, - 10, - 38, - 38, - 12, - 12, - 12, - 12, - 10, - 10, - 42, - 42, - 40, - 40, - 10, - 10 - ], - "xaxis": "x", - "y": [ - 1.8, - 1.954, - 0.822, - 1.107, - 2.151, - 2.298, - 0.61, - 0.76, - 1.095, - 1.269, - 1.457, - 1.886, - 1.389, - 1.653, - 1.122, - 1.328, - 0.598, - 0.75, - 1.037, - 1.507, - 0.597, - 0.802, - 1.934, - 2.132, - 1.741, - 1.957, - 1.014, - 1.197, - 3.924, - 4.144, - 2.694, - 2.887, - 1.05, - 1.243, - 1.295, - 1.497, - 0.834, - 0.992, - 4.896, - 5.168, - 1.894, - 2.107, - 0.751, - 0.922 - ], - "yaxis": "y" - } - ], - "layout": { - "height": 360, - "legend": { - "title": { - "text": "Schema" - }, - "tracegroupgap": 0 + "cell_type": "code", + "execution_count": null, + "id": "44975cd7-5132-4624-8d22-82de44851fb7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
accrombessi2023efficacymieguim2021insightsgebremariam2021evaluationgichuki2021bioefficacysyme2021whichzahouli2023smalldiouf2022evaluationibrahim2020exploringkibondo2022influencemeiwald2022associationmenze2022experimentalsyme2022pyrethroidtoe2018doyewhalaw2022experimentalngufor2022comparative
ITNCondition(3, 3)(9, 5)(4, 7)(2, 11)(1, 4)(6, 3)(5, 5)(5, 5)(3, 4)(3, 3)(3, 6)(3, 6)(6, 6)(2, 5)(3, 5)
Observation(3, 7)(1, 7)(1, 7)(1, 6)(1, 7)(1, 7)(2, 6)(1, 3)(1, 5)(1, 7)(2, 9)(1, 7)(2, 7)(1, 3)(1, 3)
ClinicalOutcome(3, 12)(1, 3)(1, 3)(2, 7)(1, 3)(1, 1)(1, 7)NaN(4, 4)NaN(3, 3)(3, 3)(2, 1)(2, 3)(2, 3)
EntomologicalOutcome(1, 6)(9, 6)(2, 6)(1, 9)(1, 3)(6, 8)(1, 1)(1, 7)(4, 7)(3, 5)(1, 7)(3, 9)(1, 2)(2, 8)(1, 10)
\n", + "
" + ], + "text/plain": [ + " accrombessi2023efficacy mieguim2021insights \\\n", + "ITNCondition (3, 3) (9, 5) \n", + "Observation (3, 7) (1, 7) \n", + "ClinicalOutcome (3, 12) (1, 3) \n", + "EntomologicalOutcome (1, 6) (9, 6) \n", + "\n", + " gebremariam2021evaluation gichuki2021bioefficacy \\\n", + "ITNCondition (4, 7) (2, 11) \n", + "Observation (1, 7) (1, 6) \n", + "ClinicalOutcome (1, 3) (2, 7) \n", + "EntomologicalOutcome (2, 6) (1, 9) \n", + "\n", + " syme2021which zahouli2023small diouf2022evaluation \\\n", + "ITNCondition (1, 4) (6, 3) (5, 5) \n", + "Observation (1, 7) (1, 7) (2, 6) \n", + "ClinicalOutcome (1, 3) (1, 1) (1, 7) \n", + "EntomologicalOutcome (1, 3) (6, 8) (1, 1) \n", + "\n", + " ibrahim2020exploring kibondo2022influence \\\n", + "ITNCondition (5, 5) (3, 4) \n", + "Observation (1, 3) (1, 5) \n", + "ClinicalOutcome NaN (4, 4) \n", + "EntomologicalOutcome (1, 7) (4, 7) \n", + "\n", + " meiwald2022association menze2022experimental \\\n", + "ITNCondition (3, 3) (3, 6) \n", + "Observation (1, 7) (2, 9) \n", + "ClinicalOutcome NaN (3, 3) \n", + "EntomologicalOutcome (3, 5) (1, 7) \n", + "\n", + " syme2022pyrethroid toe2018do yewhalaw2022experimental \\\n", + "ITNCondition (3, 6) (6, 6) (2, 5) \n", + "Observation (1, 7) (2, 7) (1, 3) \n", + "ClinicalOutcome (3, 3) (2, 1) (2, 3) \n", + "EntomologicalOutcome (3, 9) (1, 2) (2, 8) \n", + "\n", + " ngufor2022comparative \n", + "ITNCondition (3, 5) \n", + "Observation (1, 3) \n", + "ClinicalOutcome (2, 3) \n", + "EntomologicalOutcome (1, 10) " + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "pd.DataFrame({ref: {k: v.dropna(axis=1, how='all').shape \\\n", + " for k,v in ext.items() if v.size} \\\n", + " for ref, ext in pred_extractions.items()})" + ] }, - "template": { - "data": { - "bar": [ - { - "error_x": { - "color": "#2a3f5f" - }, - "error_y": { - "color": "#2a3f5f" - }, - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "bar" - } - ], - "barpolar": [ - { - "marker": { - "line": { - "color": "#E5ECF6", - "width": 0.5 - }, - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "barpolar" - } - ], - "carpet": [ - { - "aaxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "baxis": { - "endlinecolor": "#2a3f5f", - "gridcolor": "white", - "linecolor": "white", - "minorgridcolor": "white", - "startlinecolor": "#2a3f5f" - }, - "type": "carpet" - } - ], - "choropleth": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "choropleth" - } - ], - "contour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + { + "cell_type": "code", + "execution_count": null, + "id": "42d68ac2-0b76-4e4f-9b17-068fe62dc7c1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
accrombessi2023efficacymieguim2021insightsgebremariam2021evaluationgichuki2021bioefficacysyme2021whichzahouli2023smalldiouf2022evaluationibrahim2020exploringkibondo2022influencemeiwald2022associationmenze2022experimentalsyme2022pyrethroidtoe2018doyewhalaw2022experimentalngufor2022comparative
ITNCondition(3, 3)(9, 5)(4, 7)(2, 11)(1, 4)(6, 3)(5, 5)(5, 5)(3, 4)(3, 3)(3, 6)(3, 6)(6, 6)(2, 5)(3, 5)
Observation(3, 7)(1, 7)(1, 7)(1, 6)(1, 7)(1, 7)(2, 6)(1, 3)(1, 5)(1, 7)(2, 9)(1, 7)(2, 7)(1, 3)(1, 3)
ClinicalOutcome(3, 12)(1, 3)(1, 3)(2, 7)(1, 3)(1, 1)(1, 7)NaN(4, 4)NaN(3, 3)(3, 3)(2, 1)(2, 3)(2, 3)
EntomologicalOutcome(1, 6)(9, 6)(2, 6)(1, 9)(1, 3)(6, 8)(1, 1)(1, 7)(4, 7)(3, 5)(1, 7)(3, 9)(1, 2)(2, 8)(1, 10)
\n", + "
" + ], + "text/plain": [ + " accrombessi2023efficacy mieguim2021insights \\\n", + "ITNCondition (3, 3) (9, 5) \n", + "Observation (3, 7) (1, 7) \n", + "ClinicalOutcome (3, 12) (1, 3) \n", + "EntomologicalOutcome (1, 6) (9, 6) \n", + "\n", + " gebremariam2021evaluation gichuki2021bioefficacy \\\n", + "ITNCondition (4, 7) (2, 11) \n", + "Observation (1, 7) (1, 6) \n", + "ClinicalOutcome (1, 3) (2, 7) \n", + "EntomologicalOutcome (2, 6) (1, 9) \n", + "\n", + " syme2021which zahouli2023small diouf2022evaluation \\\n", + "ITNCondition (1, 4) (6, 3) (5, 5) \n", + "Observation (1, 7) (1, 7) (2, 6) \n", + "ClinicalOutcome (1, 3) (1, 1) (1, 7) \n", + "EntomologicalOutcome (1, 3) (6, 8) (1, 1) \n", + "\n", + " ibrahim2020exploring kibondo2022influence \\\n", + "ITNCondition (5, 5) (3, 4) \n", + "Observation (1, 3) (1, 5) \n", + "ClinicalOutcome NaN (4, 4) \n", + "EntomologicalOutcome (1, 7) (4, 7) \n", + "\n", + " meiwald2022association menze2022experimental \\\n", + "ITNCondition (3, 3) (3, 6) \n", + "Observation (1, 7) (2, 9) \n", + "ClinicalOutcome NaN (3, 3) \n", + "EntomologicalOutcome (3, 5) (1, 7) \n", + "\n", + " syme2022pyrethroid toe2018do yewhalaw2022experimental \\\n", + "ITNCondition (3, 6) (6, 6) (2, 5) \n", + "Observation (1, 7) (2, 7) (1, 3) \n", + "ClinicalOutcome (3, 3) (2, 1) (2, 3) \n", + "EntomologicalOutcome (3, 9) (1, 2) (2, 8) \n", + "\n", + " ngufor2022comparative \n", + "ITNCondition (3, 5) \n", + "Observation (1, 3) \n", + "ClinicalOutcome (2, 3) \n", + "EntomologicalOutcome (1, 10) " + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } ], - "type": "contour" - } - ], - "contourcarpet": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "contourcarpet" - } - ], - "heatmap": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" + "source": [ + "pd.DataFrame({ref: {k: v.dropna(axis=1, how='all').shape \\\n", + " for k,v in ext.items() if v.size} \\\n", + " for ref, ext in pred_extractions.items()})" + ] + }, + { + "cell_type": "markdown", + "id": "c7c36b44-4dd9-4e9e-b38c-1ceb2f37cd61", + "metadata": { + "jp-MarkdownHeadingCollapsed": true }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "source": [ + "# Evaluations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f29f23f7-13d1-4f94-a2f0-edd00c099b7a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[UserModel(id=UUID('6d8ee721-49b7-4d1f-bf4c-d6b0eb187c62'), first_name='Jonny', last_name='Tran', full_name='Jonny Tran', username='jonnytr', role=, workspaces=['jonnytr', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing'], api_key='a14427ea-9197-11ec-b909-0242ac120002', inserted_at=datetime.datetime(2024, 1, 11, 1, 48, 44, 477722), updated_at=datetime.datetime(2024, 3, 22, 6, 56, 39, 809768)),\n", + " UserModel(id=UUID('e96c9d89-36f4-4240-a592-9734087371d3'), first_name='Amelia', last_name='Bertozzi-Villa', full_name='Amelia Bertozzi-Villa', username='ameliabv', role=, workspaces=['ameliabv', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing'], api_key='9df5c40e-b5ce-4d19-ac07-50381a5c79aa', inserted_at=datetime.datetime(2024, 1, 11, 1, 48, 44, 549157), updated_at=datetime.datetime(2024, 3, 22, 6, 56, 39, 815293)),\n", + " UserModel(id=UUID('91b12ed4-2aff-46d6-9eb3-c15d44e00e2a'), first_name='Kate', last_name='Battle', full_name='Kate Battle', username='kateb', role=, workspaces=['kateb', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing'], api_key='27fc2244-e9a0-4e24-adb2-6c85b25b05c2', inserted_at=datetime.datetime(2024, 1, 11, 1, 48, 44, 553978), updated_at=datetime.datetime(2024, 3, 22, 6, 56, 39, 820769))]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } ], - "type": "heatmap" - } - ], - "heatmapgl": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" + "source": [ + "users = ex.Workspace.from_name('itn-recalibration').users\n", + "username_to_user = {u.username: u for u in users}\n", + "users" + ] + }, + { + "cell_type": "markdown", + "id": "2b7c2daa-a13a-40f8-99d1-c7555c7e1ea2", + "metadata": {}, + "source": [ + "### LLM v.s. Gold-standard" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "609d3528-89a9-4e97-96bb-cb8e9b39187b", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c4e2940893be4da38738edd2833e1235", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "0it [00:00, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - "type": "heatmapgl" - } - ], - "histogram": [ - { - "marker": { - "pattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - } - }, - "type": "histogram" - } - ], - "histogram2d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" + "source": [ + "true_extractions = {}\n", + "for ref, paper in tqdm(papers.loc[references].iterrows()):\n", + " true_extractions[paper.name] = get_paper_extractions(\n", + " paper, extraction_dataset, field='extraction', answer='extraction-correction', schemas=ss, users=username_to_user['jonnytr'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ee696003-5b24-4a0b-9d75-3e861bdde993", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n" + ] + }, + { + "data": { + "text/html": [ + "
[05/20/24 14:31:26] WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
+                            "                             Column Net_age has different dtypes: float64 and object                               \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m[05/20/24 14:31:26]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=313994;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=281588;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column Net_age has different dtypes: float64 and object \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
+                            "                             Column Net_age has different dtypes: float64 and object                               \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=556840;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=355166;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column Net_age has different dtypes: float64 and object \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
+                            "                             Column Net_age has different dtypes: float64 and object                               \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=959376;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=421327;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column Net_age has different dtypes: float64 and object \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n" + ] + }, + { + "data": { + "text/html": [ + "
[05/20/24 14:31:27] WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
+                            "                             Column Start_month has different dtypes: int64 and float64                            \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m[05/20/24 14:31:27]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=128814;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=918999;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column Start_month has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
+                            "                             Column End_month has different dtypes: int64 and float64                              \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=168465;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=668759;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column End_month has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
+                            "                             Column End_year has different dtypes: int64 and float64                               \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=249416;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=613773;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column End_year has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
+                            "                             Column Start_month has different dtypes: int64 and float64                            \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=361072;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=177476;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column Start_month has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
+                            "                             Column End_month has different dtypes: int64 and float64                              \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=542229;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=491101;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column End_month has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:97\n",
+                            "                             Column End_year has different dtypes: int64 and float64                               \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=349467;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=494108;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#97\u001b\\\u001b[2m97\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column End_year has different dtypes: int64 and float64 \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:67: FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + " return true_df, pred_df\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
  grits
  con
  f1precisionrecall
ReferenceSchema   
padonou2012decreasedObservation0.7563030.6923080.833333
ITNCondition0.0833800.0469010.375210
EntomologicalOutcome0.3960720.4356790.363066
ClinicalOutcome0.0000000.0000001.000000
randriamaherijaona2015doObservation0.6422100.7224870.577989
ITNCondition0.5882050.7107480.501704
EntomologicalOutcome0.0718350.5706870.038330
ClinicalOutcome0.0000000.0000001.000000
quinones1998permethrinObservation0.5777780.8666670.433333
ITNCondition0.2285710.8000000.133333
EntomologicalOutcome0.3775210.5770680.280519
ClinicalOutcome0.0000000.0000001.000000
kilian2008longObservation0.6666671.0000000.500000
ITNCondition0.0931280.3362960.054048
EntomologicalOutcome0.2223990.5559970.138999
ClinicalOutcome0.0000000.0000001.000000
mosqueira2015pilotObservation0.5900000.9833330.421429
ITNCondition0.2705420.9468950.157816
EntomologicalOutcome0.2080570.3849050.142557
ClinicalOutcome0.0000000.0000001.000000
azizi2022implementingObservation0.4434520.5068030.394180
ITNCondition0.3407080.9274830.208684
EntomologicalOutcome0.0487240.4872410.025644
ClinicalOutcome0.0000000.0000001.000000
magesa1991trialObservation0.1173960.7865530.063432
ITNCondition0.4723080.5313470.425077
EntomologicalOutcome0.0476900.7153530.024667
ClinicalOutcome0.0000000.0000001.000000
clegban2021evaluationObservation0.7272731.0000000.571429
ITNCondition0.3407930.5963870.238555
EntomologicalOutcome0.3076670.7178910.195788
ClinicalOutcome0.0000000.0000001.000000
robert1991influenceObservation0.2395830.9583330.136905
ITNCondition0.4696550.4109480.547930
EntomologicalOutcome0.4034570.4827070.346559
ClinicalOutcome0.0000000.0000001.000000
pwalia2019highObservation0.4375000.3500000.583333
ITNCondition0.3250860.4876290.243815
EntomologicalOutcome0.2414660.3974120.173416
ClinicalOutcome1.0000001.0000001.000000
mnzava2001malariaObservation0.5411710.9470490.378819
ITNCondition0.1586010.1744610.145384
EntomologicalOutcome0.1724440.4526670.106510
ClinicalOutcome1.0000001.0000001.000000
kitau2012speciesObservation0.7500001.0000000.600000
ITNCondition0.8234270.8822430.771963
EntomologicalOutcome0.1542160.5367900.090042
ClinicalOutcome0.0000000.0000001.000000
apetogbo2022insecticideObservation0.0000000.0000001.000000
ITNCondition0.0000000.0000001.000000
EntomologicalOutcome0.0000000.0000001.000000
ClinicalOutcome0.0000000.0000001.000000
hougard2003efficacyObservation0.8571431.0000000.750000
ITNCondition0.1903580.6662550.111042
EntomologicalOutcome0.0886650.3546590.050666
ClinicalOutcome0.0000000.0000001.000000
ketoh2018efficacyObservation0.6296300.9444440.472222
ITNCondition0.6561520.9607940.498189
EntomologicalOutcome0.0923870.4586360.051367
ClinicalOutcome0.0000000.0000001.000000
kilian2011evidenceObservation0.7000000.8750000.583333
ITNCondition0.2159400.5614450.133677
EntomologicalOutcome0.8355580.8355580.835558
ClinicalOutcome0.1356560.0968970.226093
menze2020experimentalObservation0.5986390.6984130.523810
ITNCondition0.6108600.8144800.488688
EntomologicalOutcome0.0987660.3891850.056560
ClinicalOutcome0.0000000.0000001.000000
kawada2014smallObservation0.8000001.0000000.666667
ITNCondition0.5985160.6733300.538664
EntomologicalOutcome0.5439920.7797220.417708
ClinicalOutcome0.0000000.0000001.000000
mbogo1996impactObservation0.7142861.0000000.555556
ITNCondition0.4845510.6460670.387640
EntomologicalOutcome0.3219950.5903240.221372
ClinicalOutcome0.0000000.0000001.000000
darriet2005pyrethoidObservation1.0000001.0000001.000000
ITNCondition0.3544950.2481460.620366
EntomologicalOutcome0.5127550.5554850.476130
ClinicalOutcome0.0000000.0000001.000000
bamou2021increasedObservation0.8000001.0000000.666667
ITNCondition0.7681370.9601720.640114
EntomologicalOutcome0.2247330.2857320.185197
ClinicalOutcome0.0000000.0000001.000000
pennetier2013efficacyObservation0.8571430.9285710.795918
ITNCondition0.1977990.7582300.113734
EntomologicalOutcome0.0636790.6540740.033469
ClinicalOutcome0.0000000.0000001.000000
darriet2002experimentalObservation0.7407410.6666670.833333
ITNCondition0.6336790.7920980.528066
EntomologicalOutcome0.6139920.7674900.511660
ClinicalOutcome0.0000000.0000001.000000
kawada2014preventiveObservation0.4729730.3500000.729167
ITNCondition0.5000000.9166670.343750
EntomologicalOutcome0.7272731.0000000.571429
ClinicalOutcome0.0000000.0000001.000000
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } ], - "type": "histogram2d" - } - ], - "histogram2dcontour": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "source": [ + "llm_metrics = grits_from_batch(true_extractions, pred_extractions, exclude_columns=['Site'])\n", + "llm_metrics.style.background_gradient(axis=1, vmin=0, vmax=1, cmap='RdYlGn')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a60800ce-9a96-4508-ad8f-349c241540e6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 grits
 con
 f1precisionrecall
Schema   
Easy50.1%71.1%48.5%
Hard28.2%54.1%26.4%
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 84, + "metadata": {}, + "output_type": "execute_result" + } ], - "type": "histogram2dcontour" - } - ], - "mesh3d": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - }, - "type": "mesh3d" - } - ], - "parcoords": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "parcoords" - } - ], - "pie": [ - { - "automargin": true, - "type": "pie" - } - ], - "scatter": [ - { - "fillpattern": { - "fillmode": "overlay", - "size": 10, - "solidity": 0.2 - }, - "type": "scatter" - } - ], - "scatter3d": [ - { - "line": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatter3d" - } - ], - "scattercarpet": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattercarpet" - } - ], - "scattergeo": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergeo" - } - ], - "scattergl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattergl" - } - ], - "scattermapbox": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scattermapbox" - } - ], - "scatterpolar": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolar" - } - ], - "scatterpolargl": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterpolargl" - } - ], - "scatterternary": [ - { - "marker": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "type": "scatterternary" - } - ], - "surface": [ - { - "colorbar": { - "outlinewidth": 0, - "ticks": "" + "source": [ + "df = llm_metrics.query(\"Schema != 'ClinicalOutcome'\").groupby('Schema').mean()\n", + "df.groupby({'Observation': 'Easy', 'ITNCondition': 'Easy', 'EntomologicalOutcome': 'Hard', 'ClinicalOutcome': 'Hard'})\\\n", + " .mean(0).map(lambda n: '{:.1%}'.format(n)).style.background_gradient(axis=1, vmin=0, vmax=1, cmap='RdYlGn')" + ] + }, + { + "cell_type": "markdown", + "id": "71dfe132-d82e-46f6-b4b7-bdeb3e1bd23e", + "metadata": {}, + "source": [ + "## Precision of partial extractions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5e07edc2-586c-448d-bc31-c21f61edec67", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] }, - "colorscale": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" - ], - [ - 0.4444444444444444, - "#bd3786" - ], - [ - 0.5555555555555556, - "#d8576b" - ], - [ - 0.6666666666666666, - "#ed7953" - ], - [ - 0.7777777777777778, - "#fb9f3a" - ], - [ - 0.8888888888888888, - "#fdca26" - ], - [ - 1, - "#f0f921" - ] + "outputs": [ + { + "data": { + "text/plain": [ + "(3, 3)" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } ], - "type": "surface" - } - ], - "table": [ - { - "cells": { - "fill": { - "color": "#EBF0F8" - }, - "line": { - "color": "white" - } - }, - "header": { - "fill": { - "color": "#C8D4E3" - }, - "line": { - "color": "white" - } + "source": [ + "### comment out langfuse code \n", + "# true_tables = defaultdict(list)\n", + "# pred_tables = defaultdict(list)\n", + "# latencies = defaultdict(list)\n", + "# pred_sizes = defaultdict(list)\n", + "# costs = defaultdict(list)\n", + "# \n", + "# traces_iter = get_langfuse_traces(global_handler.langfuse, references=references, user_id='jonnytr', \n", + "# input_match='Please complete the following')\n", + "# for trace in traces_iter:\n", + "# reference = list(trace.metadata.get('metadata', {}).values())[0]['reference']\n", + "# schema = next((schema for schema in ss.schemas \\\n", + "# if set(schema.columns).intersection(trace.output['items'][0].keys()).difference({'observation_ref', 'reference', 'itncondition_ref'})), None)\n", + "# if not schema:\n", + "# continue\n", + "# \n", + "# pred_df = json_to_df(trace.output['items'], schema=schema).reset_index()\n", + "# \n", + "# pred_tables[schema.name].append(pred_df)\n", + "# true_tables[schema.name].append(true_extractions[reference][schema])\n", + "# latencies[schema.name].append((trace.end_time - trace.start_time).total_seconds())\n", + "# pred_sizes[schema.name].append(pred_df.size)\n", + "# costs[schema.name].append(trace.calculated_total_cost)\n", + "# \n", + "# pred_sizes = pd.concat([pd.Series(values, name=schema) for schema, values in pred_sizes.items()], axis=1).stack()\n", + "# pred_sizes.index.names = ['index', 'Schema']\n", + "# pred_sizes.name = 'N values'\n", + "# pred_sizes.index = pred_sizes.index.swaplevel()\n", + "# \n", + "# latencies = pd.concat([pd.Series(values, name=schema) for schema, values in latencies.items()], axis=1).stack()\n", + "# latencies.index.names = ['index', 'Schema']\n", + "# latencies.name = 'latencies'\n", + "# latencies.index = latencies.index.swaplevel()\n", + "# \n", + "# costs = pd.concat([pd.Series(values, name=schema) for schema, values in costs.items()], axis=1).stack()\n", + "# costs.index.names = ['index', 'Schema']\n", + "# costs.name = 'costs'\n", + "# costs.index = costs.index.swaplevel()\n", + "# \n", + "# len(pred_tables), len(true_tables)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9f4c823-a3bc-4684-b4f8-d61902b3dfb6", + "metadata": { + "scrolled": true }, - "type": "table" - } - ] - }, - "layout": { - "annotationdefaults": { - "arrowcolor": "#2a3f5f", - "arrowhead": 0, - "arrowwidth": 1 - }, - "autotypenumbers": "strict", - "coloraxis": { - "colorbar": { - "outlinewidth": 0, - "ticks": "" - } - }, - "colorscale": { - "diverging": [ - [ - 0, - "#8e0152" - ], - [ - 0.1, - "#c51b7d" - ], - [ - 0.2, - "#de77ae" + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "
[06/13/24 00:51:34] WARNING  WARNING:extralit.metrics.utils:                                            utils.py:99\n",
+                            "                             Column Mortality_rate has different dtypes: float64 and object                        \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m[06/13/24 00:51:34]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=440171;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=944946;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#99\u001b\\\u001b[2m99\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column Mortality_rate has different dtypes: float64 and object \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:99\n",
+                            "                             Column Mortality_rate has different dtypes: float64 and object                        \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=5376;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=224478;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#99\u001b\\\u001b[2m99\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column Mortality_rate has different dtypes: float64 and object \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n", + "/Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py:43: FutureWarning:\n", + "\n", + "Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set `pd.set_option('future.no_silent_downcasting', True)`\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "
[06/13/24 00:51:38] WARNING  WARNING:extralit.metrics.utils:                                            utils.py:99\n",
+                            "                             Column Net_holed has different dtypes: float64 and object                             \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m[06/13/24 00:51:38]\u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=807084;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=132183;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#99\u001b\\\u001b[2m99\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column Net_holed has different dtypes: float64 and object \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                    WARNING  WARNING:extralit.metrics.utils:                                            utils.py:99\n",
+                            "                             Column Net_holed has different dtypes: float64 and object                             \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[31mWARNING \u001b[0m WARNING:extralit.metrics.utils: \u001b]8;id=853636;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py\u001b\\\u001b[2mutils.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=282247;file:///Users/jonnytr/Projects/extralit/src/extralit/metrics/utils.py#99\u001b\\\u001b[2m99\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m Column Net_holed has different dtypes: float64 and object \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/yg/6jm_z4c91d30k5l7hm3s7h580000gp/T/ipykernel_49560/670417324.py:8: PerformanceWarning:\n", + "\n", + "indexing past lexsort depth may impact performance.\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SchemaN valueslatenciesf1precisionrecallSchema (counts)
index
0EntomologicalOutcome18.03.4450.6000000.4285711.000000EntomologicalOutcome (n=212)
1EntomologicalOutcome18.03.6510.6000000.4285711.000000EntomologicalOutcome (n=212)
2EntomologicalOutcome36.05.2311.0000001.0000001.000000EntomologicalOutcome (n=212)
3EntomologicalOutcome36.05.4891.0000001.0000001.000000EntomologicalOutcome (n=212)
4EntomologicalOutcome72.08.4770.6341461.0000000.464286EntomologicalOutcome (n=212)
........................
21Observation6.00.9220.7333330.8555560.641667Observation (n=26)
22Observation4.00.5820.6095240.7111110.533333Observation (n=26)
23Observation4.01.0040.6095240.7111110.533333Observation (n=26)
24Observation4.00.5870.6122450.7142860.535714Observation (n=26)
25Observation4.00.7340.6122450.7142860.535714Observation (n=26)
\n", + "

282 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " Schema N values latencies f1 precision \\\n", + "index \n", + "0 EntomologicalOutcome 18.0 3.445 0.600000 0.428571 \n", + "1 EntomologicalOutcome 18.0 3.651 0.600000 0.428571 \n", + "2 EntomologicalOutcome 36.0 5.231 1.000000 1.000000 \n", + "3 EntomologicalOutcome 36.0 5.489 1.000000 1.000000 \n", + "4 EntomologicalOutcome 72.0 8.477 0.634146 1.000000 \n", + "... ... ... ... ... ... \n", + "21 Observation 6.0 0.922 0.733333 0.855556 \n", + "22 Observation 4.0 0.582 0.609524 0.711111 \n", + "23 Observation 4.0 1.004 0.609524 0.711111 \n", + "24 Observation 4.0 0.587 0.612245 0.714286 \n", + "25 Observation 4.0 0.734 0.612245 0.714286 \n", + "\n", + " recall Schema (counts) \n", + "index \n", + "0 1.000000 EntomologicalOutcome (n=212) \n", + "1 1.000000 EntomologicalOutcome (n=212) \n", + "2 1.000000 EntomologicalOutcome (n=212) \n", + "3 1.000000 EntomologicalOutcome (n=212) \n", + "4 0.464286 EntomologicalOutcome (n=212) \n", + "... ... ... \n", + "21 0.641667 Observation (n=26) \n", + "22 0.533333 Observation (n=26) \n", + "23 0.533333 Observation (n=26) \n", + "24 0.535714 Observation (n=26) \n", + "25 0.535714 Observation (n=26) \n", + "\n", + "[282 rows x 7 columns]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 0.3, - "#f1b6da" - ], - [ - 0.4, - "#fde0ef" - ], - [ - 0.5, - "#f7f7f7" - ], - [ - 0.6, - "#e6f5d0" - ], - [ - 0.7, - "#b8e186" - ], - [ - 0.8, - "#7fbc41" - ], - [ - 0.9, - "#4d9221" - ], - [ - 1, - "#276419" + "source": [ + "### comment out langfuse code \n", + "# results = grits_from_batch(true_tables, pred_tables, \n", + "# index_columns=['reference', 'observation_ref', 'itncondition_ref'], \n", + "# index_names=['Schema', 'index'])\n", + "# \n", + "# results[pred_sizes.name] = results.index.map(pred_sizes)\n", + "# results[latencies.name] = results.index.map(latencies)\n", + "# \n", + "# results = pd.concat(([results[[pred_sizes.name, latencies.name]].droplevel(level=[1,2], axis=1), results[('grits', 'con')]]), axis=1)\n", + "# results = results.reset_index(level=['Schema'])\n", + "# results['Schema (counts)'] = results['Schema'].map({k:f'{k} (n={v})' for k,v in results.reset_index()['Schema'].value_counts().items()})\n", + "# results" ] - ], - "sequential": [ - [ - 0, - "#0d0887" - ], - [ - 0.1111111111111111, - "#46039f" - ], - [ - 0.2222222222222222, - "#7201a8" - ], - [ - 0.3333333333333333, - "#9c179e" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "264c86fc-a707-4c7e-b529-012ed390d793", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Schema\n", + "EntomologicalOutcome 0.936392\n", + "ITNCondition 0.761387\n", + "Observation 0.899817\n", + "Name: precision, dtype: float64" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 0.4444444444444444, - "#bd3786" + "source": [ + "### comment out langfuse code \n", + "# results.groupby('Schema')['precision'].mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5bcde074-55c7-4911-984f-87edc8d29d35", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + " \n", + " " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "hovertemplate": "Schema (counts)=EntomologicalOutcome (n=212)
Schema=%{x}
precision=%{y}", + "legendgroup": "EntomologicalOutcome (n=212)", + "marker": { + "color": "#636efa" + }, + "name": "EntomologicalOutcome (n=212)", + "notched": false, + "offsetgroup": "EntomologicalOutcome (n=212)", + "orientation": "v", + "showlegend": true, + "type": "box", + "x": [ + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome", + "EntomologicalOutcome" + ], + "x0": " ", + "xaxis": "x", + "y": [ + 0.42857142857142855, + 0.42857142857142855, + 1, + 1, + 1, + 1, + 1, + 1, + 0.9230769230769231, + 0.9230769230769231, + 0.9807692307692307, + 0.9807692307692307, + 1, + 1, + 1, + 1, + 0.8941798941798944, + 0.8941798941798944, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0.7333333333333333, + 0.7333333333333333, + 1, + 1, + 1, + 1, + 1, + 1, + 0.944927536231884, + 0.944927536231884, + 1, + 1, + 1, + 1, + 0.6049602571341699, + 0.6049602571341699, + 1, + 1, + 0.32919254658385094, + 0.32919254658385094, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0.9470899470899471, + 0.9470899470899471, + 1, + 1, + 0.95, + 0.95, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0.875, + 0.875, + 0.9285714285714286, + 0.9285714285714286, + 1, + 1, + 0.9714285714285714, + 0.9714285714285714, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0.9422222222222223, + 0.9422222222222223, + 0.9333333333333332, + 0.9333333333333332, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0.9166666666666666, + 0.9166666666666666, + 1, + 1, + 0, + 0, + 1, + 1, + 1, + 1, + 1, + 1, + 0.9423076923076923, + 0.9423076923076923, + 1, + 1, + 1, + 1, + 0.9523809523809524, + 0.9523809523809524, + 1, + 1, + 0.8333333333333333, + 0.8333333333333333, + 0.8181818181818182, + 0.8181818181818182, + 0.9, + 0.9, + 0.6166666666666667, + 0.6166666666666667, + 1, + 1, + 0.85, + 0.85, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0.9583333333333334, + 0.9583333333333334, + 1, + 1, + 0.9933333333333333, + 0.9933333333333333, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0.9166666666666666, + 0.9166666666666666, + 0.9583333333333334, + 0.9583333333333334, + 1, + 1, + 1, + 1, + 0.8266666666666667, + 0.8266666666666667, + 0.8666666666666666, + 0.8666666666666666, + 1, + 1, + 1, + 1, + 1, + 1, + 0.91875, + 0.91875, + 0.9821428571428571, + 0.9821428571428571, + 0.9189814814814815, + 0.9189814814814815, + 0.5, + 0.5, + 1, + 1, + 1, + 1, + 0.7626262626262627, + 0.7626262626262627, + 1, + 1, + 0.6432900432900434, + 0.6432900432900434, + 0.7955555555555556, + 0.7955555555555556, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1 + ], + "y0": " ", + "yaxis": "y" + }, + { + "alignmentgroup": "True", + "hovertemplate": "Schema (counts)=ITNCondition (n=44)
Schema=%{x}
precision=%{y}", + "legendgroup": "ITNCondition (n=44)", + "marker": { + "color": "#EF553B" + }, + "name": "ITNCondition (n=44)", + "notched": false, + "offsetgroup": "ITNCondition (n=44)", + "orientation": "v", + "showlegend": true, + "type": "box", + "x": [ + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition", + "ITNCondition" + ], + "x0": " ", + "xaxis": "x", + "y": [ + 0.8529411764705882, + 0.8529411764705882, + 0.6724137931034483, + 0.6724137931034483, + 1, + 1, + 0.6666666666666666, + 0.6666666666666666, + 1, + 1, + 0.5361853832442067, + 0.5361853832442067, + 1, + 1, + 0.6666666666666666, + 0.6666666666666666, + 1, + 1, + 0.968421052631579, + 0.968421052631579, + 0.95, + 0.95, + 0.6957519746137631, + 0.6957519746137631, + 1, + 1, + 0.31962481962481964, + 0.31962481962481964, + 0.8263157894736842, + 0.8263157894736842, + 0.3346153846153846, + 0.3346153846153846, + 0.5619047619047618, + 0.5619047619047618, + 0.4693877551020407, + 0.4693877551020407, + 0.6158730158730158, + 0.6158730158730158, + 0.6137471655328798, + 0.6137471655328798, + 1, + 1, + 1, + 1 + ], + "y0": " ", + "yaxis": "y" + }, + { + "alignmentgroup": "True", + "hovertemplate": "Schema (counts)=Observation (n=26)
Schema=%{x}
precision=%{y}", + "legendgroup": "Observation (n=26)", + "marker": { + "color": "#00cc96" + }, + "name": "Observation (n=26)", + "notched": false, + "offsetgroup": "Observation (n=26)", + "orientation": "v", + "showlegend": true, + "type": "box", + "x": [ + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation", + "Observation" + ], + "x0": " ", + "xaxis": "x", + "y": [ + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 0.5, + 0.5, + 1, + 1, + 1, + 1, + 0.9166666666666666, + 0.9166666666666666, + 1, + 1, + 0.8555555555555556, + 0.8555555555555556, + 0.7111111111111111, + 0.7111111111111111, + 0.7142857142857143, + 0.7142857142857143 + ], + "y0": " ", + "yaxis": "y" + } + ], + "layout": { + "boxmode": "overlay", + "height": 360, + "legend": { + "title": { + "text": "Schema (counts)" + }, + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Precision of LLM Partial Extraction Completions" + }, + "width": 700, + "xaxis": { + "anchor": "y", + "autorange": true, + "domain": [ + 0, + 1 + ], + "range": [ + -0.5, + 2.5 + ], + "title": { + "text": "Schemas" + }, + "type": "category" + }, + "yaxis": { + "anchor": "x", + "autorange": true, + "domain": [ + 0, + 1 + ], + "dtick": 0.1, + "range": [ + -0.05555555555555555, + 1.0555555555555556 + ], + "title": { + "text": "precision" + }, + "type": "linear" + } + } + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAABGYAAAFoCAYAAAAVe/0kAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQV4VEfbhp8kWHD34u4Up6W4U9zdCe5eiru7S/EGd2mx4g7FC5Ti7gQJJPn/d/jOsrvZZDfZ3WQ3+8x1fdfX7J4z8849c047z77iFhAQEAA2EiABEiABEiABEiABEiABEiABEiABEiCBMCfgRmEmzJlzQBIgARIgARIgARIgARIgARIgARIgARJQBCjMcCOQAAmQAAmQAAmQAAmQAAmQAAmQAAmQQDgRoDATTuA5LAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQmOEeIAESIAESIAESIAESIAESIAESIAESIIFwIkBhJpzAc1gSIAESIAESIAESIAESIAESIAESIAESoDDDPUACJEACJEACJEACJEACJEACJEACJEAC4USAwkw4geewJEACJEACJEACJEACJEACJEACJEACJEBhhnuABEiABEiABEiABEiABEiABEiABEiABMKJAIWZcALPYUmABEiABEiABEiABEiABEiABEiABEiAwgz3AAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmEEwEKM+EEnsOSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAIUZ7gESIAESIAESIAESIAESIAESIAESIAESCCcCFGbCCTyHJQESIAESIAESIAESIAESIAESIAESIAEKM9wDJEACJEACJEACJEACJEACJEACJEACJBBOBCjMhBN4DksCJEACJEACJEACJEACJEACJEACJEACFGa4B0iABEiABEiABEiABEiABEiABEiABEggnAhQmAkn8ByWBEiABEiABEiABEiABEiABEiABEiABCjMcA+QAAmQAAmQAAmQAAmQAAmQAAmQAAmQQDgRoDATTuA5LAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQmOEeIAESIAESIAESIAESIAESIAESIAESIIFwIkBhJpzAc1gSIAESIAESIAESIAESIAESIAESIAESoDDDPUACJEACJEACJEACJEACJEACJEACJEAC4USAwkw4geewJEACJEACJEACJEACJEACJEACJEACJEBhhnuABEiABEiABEiABEiABEiABEiABEiABMKJAIWZcALPYUmABEiABEiABEiABEiABEiABEiABEiAwgz3AAmQAAmQAAmQAAmQAAmQAAmQAAmQAAmEEwEKM+EEnsOSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAIUZ7gESIAESIAESIAESIAESIAESIAESIAESCCcCFGbCCTyHJQESIAESIAESIAESIAESIAESIAESIAEKM9wDJEACJEACJEACJEACJEACJEACJEACJBBOBCjMhBN4DksCJEACJEACJEACJEACJEACJEACJEACFGa4B0iABEiABEiABEiABEiABEiABEiABEggnAhQmAkn8ByWBEiABEiABEiABEiABEiABEiABEiABCjMcA+QAAmQAAmQAAmQAAmQAAmQAAmQAAmQQDgRoDATTuA5LAmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQmAmnPfD+w0f4+wcgZgxPiy344ueHjx99ESVyJESJEtni+8LrwlPnr+HcpRt45/MBqVIkRs1KP4WXKU4/bkBAAHzef4SHhwc8o0UJ0Xxk3yxdswupUyRF6WLfh+jeiH6xoz1Tss6Pn73E589fkChBXESLGrK1Do/1uv/oGXbtP4FCebMhe+Y0NjMhNO9Imw3OjkiABEiABEiABEiABEggDAm4hDBz8/YDVG02wABr/LixUCBPFjSrWwG5s6UPQ+RfhypVpzseP32JE9vnIEb0aBaNv2X3EfQbNQ9tGlVBtza1LbonvC6as3Qzpi9arxs+ZbJE2LVqvElztPUR4WZ4n5ZBmtxn+Bxs23NM9SP9mWr6a923YwM0rVM+0GVaP/LF33sWwcPDPVhMBSp6QQ6JWovuGQ1ZMqRCg+qlUal0IZsi/n3TXjx88iLQ+t57+BTlG/RGjsxp8fvcwSEa88NHX+Sv0FaJMtOGdwn23jVb92PIhCVBXpMkUTzsXTM5ROMHNacQdWLFxX5+/pgyfy3SpU6GGhWLGfTkKM/U1Rt3MG7mKhw/e8XAvqwZU6NOleKoUraoxe8JK1CF6tajpy6hda/xGNClMRrVLBOiPg6fvIhjpy+jUa0ySJoovsG9oXlHhmhwXkwCJEACJEACJEACJEACDkLAJYSZG7fuo1qLgeowX7xIbshB9Z+bd3Hx2i21DAsn9kHhfNnCdEkGjlmAF6/eYvLQjhb/Kn7szGX85r0L5YrnD3TADFPjzQymCQGpUyZRQkCGtCnw6vU7xI0T0+Sd2vpUr/AjRvZrHWTvPYbMUr/M71gxTnngmGpaX/KdiG8iIkSOHEl36YNHz1C2fi/d3+f3LEQkD49gZ6QJM3Lo/PzFD4+evMBfx86rezq3rAmvplVthr9J51E4c+EfXNpvKI48e/Eag8YtQprvkkIEp5C0kAgz3pv3Yeik35ArW3qkS5Us0DBxYsVAnxCOH9ScQjIHa64V75M8ZVujRNE8mDmqm0FXjvBM6YthlUsXRs6s6fDxky+uXL+j9ru0eeN74YcCOazBYLd7rRFmZv22CTMXb1Bio4iO+i0070i7TZIdkwAJkAAJkAAJkAAJkIAdCbiUMGN88F+5YQ9GTl0WKi8EO65JmHUtYRNubm42H+/WnYeo0rQ/2jethk4ta5jt3x7CjHi1iJfLmAFt8XO5ojobJs31xsJV23V/WyrMRIsaGQc3Ttfdd+HqLdT3Gqr+Pr5tdohC0oIDYg8RIzTCzKj+bVCt/A9m186SC+wxJ0vG1a4JTpgJST+WXBvSZ0oEt+I1u6quZ4zqipJF8xoM8++dhxAPr+5t69hNmAmpzcYcLBFmghojOGHGHG9r7TbXP78nARIgARIgARIgARIggbAi4NLCjPyHfcFK7dUB/tyfC+Hn54fug2fi+5wZUbdqSazf9hcuXP0XsWJGx9BeLdSaSKjM1AVrcfbCdeXxkjdHRrRvVi3QoUnyqsxdtgVHT1/C7XuPId4jPxbMifrVSymX/fGzVkNyM0wZ1km31hLOMG/5Vpy7dB1v331Q9xTNnx0Na351879y/TamLVyPulVLGBzgJPRl8lxvNZbYJCFaEu6k/wv7pWv/YcbiDSosQsbdtOuw6i996uTo6VVPeRJZ0syNde3mXQyZuAR/X76pPJTSpU6uuu3aupYK/zHV7CHMtKhfEZt2HkK8OLGwaclIJUDJmpSs3R1lf8qHf/69p+YfWmFG5tFjyEzs2n8Sy2cMVJ4so6etgKyhMJI9lSldStSuUhx1q5ZC5EhfvXLEEyKoPSa5gzbuPKzu/anwt/X4pVsTJE4QF10GTVdhd5qHzsvXby0a0x7CzJLfd6qwm58K51IhXVqTsKHhk5eqPCm92tfD6o17gpxTgnixg33e5BmRPEUPHj9T+1r2U9ni+dGiXkXIvfrtzv3HkEO+7Lunz1+rXCdlf8qP8iUKYMDo+ZCQGRHr8ufOrG7zjBYVk4Z0CPdnatS0FVix/g+0alAJPdrVNfl8iLAknlrRPaOq78WjSuZ6/tJNiGCYL1dm9GhXB6lSJNHdrz3vtSsXx+37jyAhW7LnZV/18qqL5EkTYcHKrfjjwCn1ThMPqV+7N4WETmlt7MxVKtyyZYOKmLd8C46euqzGk7CqHm3r6DzRghJmXr/1wYxF6xV7eQfK8yChZI1qllXhg2u3HsD8FVshYXoyftzYXz3q6lcrpd5Hpt6R8r14GK3dckB5PGpekF1b1zYI9dJs79iiOmYu3oiDx/9WfVcoWRB9OtRX73StmXvvWvJe5DUkQAIkQAIkQAIkQAIkYA0BlxZmBFyx6p3Voe/cHwvwyfczClVuD8mjIYch+VyahMSIt4QcEpt1Ha0++z5nJsSIHhUHj19Qf0uIhIRKSHv+8g3qtB2sDjUifIjAIklwpb9eXvUgokHjTiNx9uJ1XciK5mUi9xfJnx2xY0ZX90gfmteHqQPQnftPUKv1r+owL0JM7FgxcODoefW3vteDHEy8+k7S7RWZY8zonupQJi248CDtJkvGksNSzyGz1GFLuCX5X96IwT2aqRANU80ewox460SLFgWT563BnLE9UKxQLmgeUmvnD1VhQdYKM3LgF4Fr6bQBSJQgDio26qv2jhxu5eApB1lZh5b1K6Gn19dDt4hDQe2xIvmyqxw60vQPyCIgJEoQL1CeGBEjLBnTHsLMk2evULlJPzU/EaZEoJQmB23J59KwRmkM7NpEeXsENaf4cWMH+7zJs/nx02fkzp4esWPGwKVrt9S+kpCXFbN+0YWgnTx3Fc27jdE9l5Ic+ezFG8q2hRN7Qw7pIkroc5Wk20um9EN4P1OS+0qewQPrpyJh/Dhm3+V/HjyNroO+em6J6CRrq4XVbVg0Qokf0oyfdxEwZE+KQCLPpQgT8s9aribhKvdKH1qr126oLtxTPhPuWvineKHJe0maKYb670AZQwRFbR9oz4MkpJb9oolumljSplFllC9RMNA7UsaSPDy/rdml5vBDwZy4dfuhsknesesWDNclxjZlu3gfyZ7Qz2VlyXvX7KLwAhIgARIgARIgARIgARKwkoBLCzPyS27b3hPUIVgO69qhWZhKotSmtcsrj4+3794jRbKEqNlykDpEbV4yEunTpFDotf+w1z/UDJ6wWP0aLF4ibRv/rK6TCkybdh1Sh0k51BgLM5IoVxLmDuvdErUqf61eJPfIQUwObOLFY+oApB18xw3yguSnkCYeMdVb/KL+ed/aySrMRjuoiVA0vG8rXcLjWUs2YuaSjUo4kANTcM3SseSgJAejji1qoEOzama3qL2EmSa1y6Fo1Y7Kg2jBxN4oV7+XWs8FE3qjdpvBVgkz+sLE4U0zEDVqFNx/+FTl09GaeAxUadJPiQsnd8xRHwe3x+RwGVTYjylxRT6zZMzQCDNiqxx+jZsIbfKsSNOeHxGjNi4eqZ6Fhh2GqwP8sukDdJXDgpqTORYinGVMl1InwMjz0HXQNOw9fBabFo9UrEVAlfxRIjIsntwPBfNmUbbJAVy8zyqVLoy03yUNMsdMeD5TUhEqd+lWypNH2x/BPSwiHFds1EeJtVuXjkba/+UAEiG2Q//JKFYoJ+aM7am60H/eRw9oq6uW1GvYbOzYe1yJMCLcyrtPPAd7DpX8TSexf90UVQ1KmiZuiJjcuFZZ5SEj+75++6HKhp0rx+G75IlNvpfEa2r1pr1qjKrliiqPNVkTee5krTQhKrhQJuN35M3/7qNq84HK5sWT++q8XrTwRP13mGa7eJe1blhFCTYiFlVo2EfZoSX9tuS9a/YFxgtIgARIgARIgARIgARIwEoCLiXMiJdL41pl8PqND67evAupFiNNS6ypHRT1DzgaXy2niIQ4/dK1iQF28aIR75ezu+fD3cNdHbbkV+Jty8cEmVjW+NChHVDaNfkZ7ZtV14W+6A9kfIjUDnYitmz+bZSBTZrgMmt0dxUWoB3UJFyhXrVSumsl9Khmq0E6D4eg9lNIxnIUYUby22ihIuKltHj1Dt1ah1SYES4j+rbE+w+fcP/hM/WrvRzwZL26tKqlwyahSjf+u4/HT17ixes3WLZmtxLzjmyZCUmcG9wek05CIsxog5obMzTCjIgtyZMkDLQd4seLZVDZadrCdSpkT7zFREiREDwRLpMlSaC715wwY+p5024WMebWnQe491DCmd5g35Gz2HPwjM5D7fzlm0oMkhCZEX1bmdy+weWYCc9nSkSOkrW76YRhc+9yecfIe0NCgQZ0aWRwufY+Obp1lvK2C+p516pQSfUz/fL1G3YcxC9jF2LSkI7KE0cTZsTLxFg0kudowpzfMX5Qe1WVzJihrFnOUi1070A3fMtjNeu3jUqA1kS0kAgzC1ZuUx5wEv4pYWpa054pTWAPznYt/FAToCx575pbF35PAiRAAiRAAiRAAiRAAtYScClhxhiWHD5H9m2tQoekaf+BL270Ej6i37bvOY7ew2cHy/uP1RMQACjPDPFeES+WoJqxMCOhFjVafvVykV/QJfSm8PdZ8XO5H3Tu+cYHIPGMkbH0wwq08f746xS6/TpDhZNIWElQBzXJh1Kmbg+VC0XLo2PK5pCM5UjCjBbuI3MSAUvLNxNSYUa/XLbGR8oDSz4MCRGR3Cpzl29RFWZMNfGqkapUwe0xuS8kwoylY4ZGmLE0+a8Ids27jlHCpDRT1YPMCTOmnjfpS7zFhk5cogsp1Oc6fWRXlPohr8qdIiXkh/RqjjpVSphkHxJhJiT73NpnSrNLC5U09zIPSlSR+zQBct2CYSqXU1C2ibdR54FTA/HS3hcibmklxcXrxJQws//IOXQcMEXnZWf8XtLeKcHNZ+zAdqhStojKlRNUVSbjd6SEH67f/peBt5A2RqXGfZUnjlbNLCjbpeKYVB6Td3XypAlViJu59665deH3JEACJEACJEACJEACJGAtAZcSZkSAad2wMqJGiaxc8I1zOgR3aNZK2ooIkj/X1wSixk1+PX74+Llyt9fPY2DqWuNDh1wjpZwlrGj3gVPKG0OaHNokh4mELRgfgMQTQ3JUmBpLPAs6DZiqy2kT1EFN+9XenDATkrEcSZgRhiJQycFTX2wIqTAj/Uwf2UV5QCVNHF/9T7/M9oxFGzB76SYl/kjiZQnBkf0lOTEkt4Y9hBlLx7SnMCNcJIeL5AuRpoUY6e/50Agz2l4XkVI8n3JlTYcUSRNhz6HTGDFlGTRhxnvLfiXeGFff0h8/JMJMSPa5tc+U2KgJCppHVXAvdO0dZGqukih3ifdOrJo1SCXSDco2TVQxFrL2HjqDzr9MU15H5oQZTdyRsunN6pQP8r0kIW11fjYtlknImSQrDokwo4VS7l49ASmSGnpzibgiIsvFfYtV2FRQwowWYqUJM5a8d639lyzvJwESIAESIAESIAESIAFzBFxKmDEul20MJzhh5tiZy2jVY5zKmSK5U4Jq2iFYkqFKUtSgmilhRrtWcj7IL9USMiAhBlq4jLEwo40lOVQkkal+W7VxjzrAiuePeCRYe4gMyViOJsxcv3UPf/x1Gq0bVNLlPQmpMGNcLtt4XbUkrsYHbC1BsD2EGUvHtKcwox30JWeJHIwlT47koBFBRWuhEWY0sUdypkiok9a0kBtNmDl2+jJa9RwXbGl2TZgxFTIVns+UzKnvyLnY+sdRJT5JwmpTTd4Hfv7+OHn2Klr3Go/OLWvqKnNp12shOvvWTkHihHHtKsxIGJ8IjtoaGDOU0Lp85duqhNDBvQPFdk2YWTlrkC7vlTanoPJw/Ta1v666llwrnmOFq0iC7DjYvnysuj0kwoy59665f4nyexIgARIgARIgARIgARKwlgCFGT2CwQkzUpr4x2qd1YFTEm9KGJTWJKfC/iNnUerH79VH2q+3+tVq5HNJPinJWuUXbeNDhwgnObOkU+EuWpOcHSIgSMiGHIJMJSrVBAbJMSPeGtIkvKROm8HqoKwl6LRWmJF+LR3L0YQZUw+JrYWZAhW9lJfTsa2zdElJ37x7j3Z9JqoSzpYKM10GTVM5VLQDtma7KXHF0jHtJcxIJZ8aLQepEspbl47BotXbIXlAjEPrgppTcM+blqR24aQ+KPx9Nt2+FkFgxfo/daLAsxevUbxmV/Vc/uk9UeXx0X9+pPKTPKvZSzRXopF2cNeuCe9nSr8qkKkwMPGik/LzzepWQOb036m5ynykipp4/kl79PQFStfpoT7f4z1JeYzYy2NG1qxq8wEq+a+Wp8UUwwYdhqt9r1VE038GJexNvGWk5LlWKU0TkPWvM35HakmOJQRKQqG0Jh6G3QfPMPActFSYseS9a+2/ZHk/CZAACZAACZAACZAACZgjQGFGj5C5/B8r1v+hcjnIIVCSyYo7vRysDhw9p0QQLb+Bfvle8bCRQ8i1fyXZ8D7lcWOqXLYcROXgUffnEioZqM/7D9i467A63Cyc2AeF82UzKcxolXEk5Ek8eWJ4RlNeNsfPXlH5TwZ1b6pmaAthxtKxQivMyMFSO4Trb1xJQiseBT2GSOWYE0qo0krr6l8nVZgiR4qkqvSI94HcE1SztTCj2SZeAiV/yAsRDLb+cUSXH8VSYUYrNy1eUJKEVQ7Akqw5buyYgcplWzpmaIQZEQ+lmpFxixM7Jvp2bKBKyzfqOEIl/JVQu3y5MqkKSXKYlvWXfEUSHictqDnFiuGpymWbyjEjibmHTV6qEsj+XFaq+nzNOaOVvda8NaR/CSGTsC65tmHNMir5rex/ycmihfaIp4kICBL2ly1Tajx49FzlSDElKli6z23xTIn9ImhNnOOtWEk1uLzZM8L38xfFVkLwpGmijZZsWdZHnm9hLgl1ZZ/oixu2EmZkLSWxc4HcWSCeMPJuEUFO38PHFMNL1/5D3XZDlO1iZ44safH0+SucOn9NVfMSryp5z525cB1NOo9UolKLehXVvsqeKY3K+2UszIjnUMOOI9Q7UcS/4oVzK1ukPLs0/RAnS4UZS9675v4lyu9JgARIgARIgARIgARIwFoCLiHMaGVWzeV98Xn/EQUreZk8KApoORjs3HcC42evVgchrYlQU69aSZXPRWty+Bg5dZlKSKk1ybnQr3ND5eJvfOiQQ+SMxRvUQUO/325taqkqLNK0sA0toa92nRzeBoxeoMtLI5+L+NOlZU1d6I522BzcoxmkspTWtBwz8pl8Z65ZMpZ2KDMVcmGqf219ghpbq7aieVEEdZ1UoEqZLKHK8WMu5EwTZrSyucHNWzxTYsX0xN41k4O8TDhKUlU5yGpNEkCLQCMiwZHNMxEndgyY22MiDk5dsBYbdx7WradUOUqeNJESZqQajVSlkWbpmJowo39vUBPRcrYE9b0coIWDFmpkXBJdP9my5sUV1JySJk4Q5PMmXl+Dxy/Gxp2HdKaIGCGJbSV564xRXVGyaF71nVzrvXm/qtijn6RZRI5B3Zqq8s+yxyR/k5SElqaVqHaEZ0rsES+ScbNWK9FBv0mIWO0qJVTel+ieUdVcpQy4fpJpmYtUWxOxQmtBPe+a18mw3i1Rq/JPuuu1vDHGOWZkP4snnuTe0bjJsyUePO7uX6stBcVQ7h0zfaUuMbT+c9G3U0PlMSNNQjaltLb27tPy35gK95SKekMnLdGto9wvgtyEwR2QM0ta3XyCEmbknSxeOn96T0KyxPGVeGfuvWvuncjvSYAESIAESIAESIAESMBaAi4hzFgLydT9r9/64Mmzl4gXJ5Y6YEj4QFDXvXj5Bgnix1G/5Jtr0q+IPjGiR0PihPFMls021YeEU8nBRn7VlpANLczB3Hih+T4sxwqNfeF1j3C5++CJEgfEy0eEmNA28YR4+OS5SiCsn6/FuD9bjhlaWy29z9I56fcn4pN4WiSIHxtJE8UPdigRTp8+f42Pnz6pZyda1CiBrpfwsjdvfZBEnq3IkYLtLzz2uQgvEr7k6/sFiRLGNQjN0jdWWIoIFilSJCVMSGUwWzd9cUNCOUVUlH2tCTKWjifvpAePn8MzahQ1J/2k2Vofsnby/ooZw1O9U801EfvkWUsQL47KqWNtC+1719pxeT8JkAAJkAAJkAAJkAAJCAEKM9wHJEACJEACgQgE5XVCVCRAAiRAAiRAAiRAAiRAArYlQGHGtjzZGwmQAAlECAIUZiLEMnISJEACJEACJEACJEACTkCAwowTLBJNJAESIIGwJiB5Z3x8PhjkrglrGzgeCZAACZAACZAACZAACbgCAQozrrDKnCMJkAAJkAAJkAAJkAAJkAAJkAAJkIBDEqAw45DLQqNIgARIgARIgARIgARIgARIgARIgARcgQCFGVdYZc6RBEiABEiABEiABEiABEiABEiABEjAIQlQmHHIZaFRJEACJEACJEACJEACJEACJEACJEACrkCAwowrrDLnSAIkQAIkQAIkQAIkQAIkQAIkQAIk4JAEKMw45LLQKBIgARIgARIgARIgARIgARIgARIgAVcgQGHGFVaZcyQBEiABEiABEiABEiABEiABEiABEnBIAhRmHHJZaBQJkAAJkAAJkAAJkAAJkAAJkAAJkIArEKAw4wqrzDmSAAmQAAmQAAmQAAmQAAmQAAmQAAk4JAEKMw65LDSKBEiABEiABEiABEiABEiABEiABEjAFQhQmHGFVeYcSYAESIAESIAESIAESIAESIAESIAEHJIAhRmHXBYaRQIkQAIkQAIkQAIkQAIkQAIkQAIk4AoEKMy4wipzjiRAAiRAAiRAAiRAAiRAAiRAAiRAAg5JgMKMQy4LjSIBEiABEiABEiABEiABEiABEiABEnAFAhRmXGGVOUcSIAESIAESIAESIAESIAESIAESIAGHJEBhxiGXhUaRAAmQAAmQAAmQAAmQAAmQAAmQAAm4AgEKM66wypwjCZAACZAACZAACZAACZAACZAACZCAQxKgMOOQy0KjSIAESIAESIAESIAESIAESIAESIAEXIEAhRlXWGXOkQRIgARIgARIgARIgARIgARIgARIwCEJUJhxyGWhUSRAAiRAAiRAAiRAAiRAAiRAAiRAAq5AgMKMK6wy50gCJEACJEACJEACJEACJEACJEACJOCQBCjMOOSy0CgSIAESIAESIAESIAESIAESIAESIAFXIEBhxhVWmXMkARIgARIgARIgARIgARIgARIgARJwSAIUZhxyWWgUCZAACZAACZAACZAACZAACZAACZCAKxCgMOMKq8w5kgAJkAAJkAAJkAAJkAAJkAAJkAAJOCQBCjMOuSw0igRIgARIgARIgARIgARIgARIgARIwBUIUJhxhVXmHEmABEiABEiABEiABEiABEiABEiABBySAIUZh1wWGkUCJEACJEACJEACJEACJEACJEACJOAKBCjMuMIqc44kQAIkQAIkQAIkQAIkQAIkQAIkQAIOSYDCjEMuC40iARIgARIF9UCUAAAgAElEQVQgARIgARIgARIgARIgARJwBQIUZlxhlTlHEiABEiABEiABEiABEiABEiABEiABhyRAYcYhl4VGkQAJkAAJkAAJkAAJkAAJkAAJkAAJuAIBCjOusMqcIwmQAAmQAAmQAAmQAAmQAAmQAAmQgEMSoDDjkMtCo0iABEiABEiABEiABEiABEiABEiABFyBAIUZV1hlzpEESIAESIAESIAESIAESIAESIAESMAhCVCYcchloVEkQAIkQAIkQAIkQAIkQAIkQAIkQAKuQIDCjCusMudIAiRAAiRAAiRAAiRAAiRAAiRAAiTgkAQozDjkstAoEiABEiABEiABEiABEiABEiABEiABVyBAYcYVVplzJAESIAESIAESIAESIAESIAESIAEScEgCFGYcclloFAmQAAmQAAmQAAmQAAmQAAmQAAmQgCsQoDDjCqvMOZIACZAACZAACZAACZAACZAACZAACTgkAQozDrksNIoESIAESIAESIAESIAESIAESIAESMAVCFCYcYVV5hxJgARIgARIgARIgARIgARIgARIgAQckgCFGYdcFhpFAiRAAiRAAiRAAiRAAiRAAiRAAiTgCgQozLjCKnOOJEACJEACJEACJEACJEACJEACJEACDkmAwoxDLguNIgESIAESIAESIAESIAESIAESIAEScAUCFGasXOUHzz9Y2QNvJwESIAESIAESIAESIAESiIgEkifwjIjT4pxIgARsTIDCjJVAKcxYCZC3kwAJkAAJkAAJkAAJkEAEJUBhJoIuLKdFAjYmQGHGSqAUZqwEyNtJgARIgARIgARIgARIIIISoDATQReW0yIBGxOgMGMh0ICAAPj5+yOSh4fBHRRmLATIy0iABEiABEiABEiABEjAxQhQmHGxBed0SSCUBCjMWAhuy+4jmDx/DfaumUxhxkJmvIwESIAESIAESIAESIAEXJkAhRlXXn3OnQQsJ0BhxgyrO/cfo02vCbj38CmSJIpHYcbyvcUrSYAESIAESIAESIAESMClCVCYcenl5+RJwGICFGbMoPri54dnL15j76GzWLByK4UZi7cWLyQBEiABEiABEiABEiAB1yZAYca115+zJwFLCVCYsZDUjr3HMX72agozFvLiZSRAAiRAAiRAAiRAAiTg6gRsLcxcu3kXF678i1dv3iFBvNhInTIpcmVLFygPpinuZy9ex7hZqzF9RBckjB/HaZbm7bv36DpoOjJnSIW+HRs4jd2mDJ2/YisOHD2PCYPbI2mi+E49FxpvWwIUZizkGZQw8/bDFwt7iLiXTZ4ZgDt3I+78ODPzBKpWckPJn8xfxysiNoGAZ4/g37N+xJ4kZ2eWgPuk3+GWIInZ63hBxCYw7fnf+OXx8Yg9Sc4uWAL5oiXEvnQ1XJ5SLM9INmMwatpyrFj/p+ovZbJEKtWC9s+7Vo03O87B43/Dq+8k/Ok9CckSO48oMGbGSuw+cBLrFgxDvDixzM4zrC44fvYKWnYfix0rxiFVisQWDfv+wyc07TJKrd+UYZ0suocXuQYBCjMWrnOQwsz7zxb2EHEvmzwLFGYi7vJaNLOqFUFhxiJSEfsiJcz0cu5fsiL2CoXN7NwnrqYwEzaoHXoUJcw8OeHQNtI4+xJQwkza6vYdxAl6jxU9sk2sFC+LDv0nw6tpVbRuWAWe0aLA1/czjp6+jN+8d2LR5L5mx3FGYebStf9Qt90QzBnbA8UK5TI7x7C84Njpy2jVcxx2rBiLVCks/0Hi8j//oU7bIZg1ujuKF8kdliZzLAcmQGHGwsVhKFPQoOYt9MC9+24WkuRlEZFA+TL++KGof0ScGucUAgJuzx/D85fGCPCMgS8l+StpCNBFiEsj7V0Pt4/v8WHkCgTEt+yXwwgxcU7CJIE5by5i+ItTpOPCBPJESYBtyX92YQJfp26rUKYp89dChcGsn2o2DOnoqUvq2gtXbyFRgjgoki87OrWsgYtXbymPmRF9W2HTrsMQ0aNk0TxoVrcCsmdOo1urg8cvYO6yzZDQJ/HsqFbhR7RpVAWRI3ngw0dftOk1HpVKF8ap81ch14r3TU+vesquqQvW4uzFGyiSPxtaNaiM3NnSq37FpolzvXH73mO8//ARmdKlRIv6FVG13A/B7pEug6bh8ZOX+H3uYIPr/Pz88fvmfdi08xD+vfMQqVMmQZli+ZRwJU0q6i5avR3//HtPjSW2VClbRH338vVbdB44DT296iJvjozqM8kr2rzrGLRqWAkli+bF+cs3MX7WajSsUQbeW/YFYvX46Uu06D5GzSdrxtSIFjUKMqRJgSG9mqt7Zy7eoDhEixoZObKkU3ZpLGS8HkNm4s79J1g7f6jLPyME8JUAhRkzOyEgIABfvvhh574Tqlz2rpXj4ebupovjfPD8g8vvJU2Y+T6PH2LHdnkcLgXgxr9uuHfPHRRmXGrZg5wshRnX3gcUZlx7/Y1nrwkz+aImQvFoyQnHhQg8/PIeq3yug8KMbYWZMxf+QZPOo1CxVCElkqRPk9xkXhnNs0bEiPrVSuGtzwflUTNjVDe8eeujhBlpTeuUx3fJE6vv4saOqRM+NK+an8sVVULH35dvYuGq7UrEaFm/EiTfS+EqHVQfco2IDZt3H1HXSatdpTgyp0+FNVv2QcSTzb+NUp/v2n8Cx85cQZ7sGZSIsffwGWz94yiWTR+I73N+FUdMtWLVO6NjixpqLvpt4hxvJbyUKJoH5YoXwD8372KJ905c2r8E2/YcQ5/hc/BDgRyoULKgOscdPnkR4we1R6XShSCiSqk63Q08VkSYyV26FYb2aqHmoHEIipVwmLZwHVZu2IMOzaohfrzYiB83FgrmzYofq3VGgTxZ0KB6Kfi8/6jCsPLnzoLWDSvrprD38Fl0HjgV5/5YgMiRbRfu5kKvmgg3VQozZpb0xq37qNZioMFV8hIaM6Ct+ozCDEBhJsK9FyyeEIUZi1G5xIUUZlximYOcJIUZ115/49lTmHHd/UBhxnDtbeUx4+8fgIlzflfig9bE26NquaKoUbGY7nBftdkAfPL9DP2cM+KhEhAAiLgjwozkasmSIZXqZs/BMxCvlH1rpyBxwrio0fIXJEoQF/PG99KNI94dciYSkUUTZgZ2bYKGNUqra8RDpGGH4TrhQz7ThI09ayYZJLmVH73fvH2P56/e4Oem/dHLq57ynDHVXr/xQdGqHZVXiXilaE0q5hav2RV1q5bE4B7NdJ8/efZKzaFS476I7hnNwBtF5iVcti8fGyJhJjhWpkKZNBaThnRA+RIFdbaJp5GEnxnPYePiEciYNqXrvjA4cx0BCjNWbgYKMxRmrNxCTn07hRmnXj6bG09hxuZInapDCjNOtVx2N5bCjN0RO+wAFGbsI8zoH+jFK+bazTsQYeDm7QfIkTmt8ngR4eH7cm3QrE559DFRvchUjhkJd6rvNRSr5wxGlvTfIU/Z1srzI4lexSAt/Ei8UTRhRvM+EbvuPniCCg37YM7YnihWKKcyVcujsmrWIOTKll6FD02Y/Tt2HzilQpm0Jt4w4nFiqp3++x+VKPfgxunKJq1pSXenj+yKUj/kNbhVYyDeKd3b1tF9N2mut/L8Obt7Pl6+fmexx4x+omR9VjmzpFX8jXPMfP78RfX94tVblC72vfIQqliyEJIlSWBgpwhtOUu1gLGA47APNg2zOwEKM1YipjBDYcbKLeTUt1OYcerls7nxFGZsjtSpOqQw41TLZXdjKczYHbHDDkBhxr7CjH7v4n0ydcE6lU9mw6IRSJ4kAQpVbq/yybRvGljsMCXMXLl+G7XbDFbCTLpUyVCwkhfqVCmhRAXD5qZEF1PCzINHz1C2fi8DYebqjTuo1fpXaMJMgw7Dce/BE/Tr3AgiaiSMHxflG/RCgxplghRmTp2/hmZdR+PwphmIGyemzhxtHkum9FMhQ/pNQodkDl1b10Lbxt9yHM1eugkzFm3AqZ3zVEiXiCczRnVV+WSkBRXKpC/M6LMKSpiRvl6/9VHVs06cvYKT566q/vXHkr9l7XKUbIEJv7ZX4WlsJEBhxso9QGGGwoyVW8ipb6cw49TLZ3PjKczYHKlTdUhhxqmWy+7GUpixO2KHHYDCjH2EGTngZ8uUBjGiRzMYQHKcjJy6DCtnDVL5XiQnS/IkCQMlyxUPjcMnLwQql20sNsj9BfJkVZ4cxiKQm5tbqISZdKmTK8FIPFj086zIWMEJM69ev8MP1Tph/cLhyJz+O505d+4/RsVGfVWunW5taus+l5w2Hh7uikH6NCkgwo3WJD/Pf3cfKu+bdz4flD2SBFnCwKSJp4t4CxnnmAlOmJHkyI07jYR+OJJmgzauhGM16DAM6VMnh3j4aO35yzf4qUYXJahJPiA2EqAwY+UeoDBDYcbKLeTUt1OYcerls7nxFGZsjtSpOqQw41TLZXdjKczYHbHDDkBhxj7CTL9R83D4xAU0r1cR2TOlgadnVJy7dEN5gaRMlhDec4eoPDMSriNhO+L1UqtKcXz65KsS/LZuVEWX/Dc4sUETelo1qKSS+/r6fsG5S9ch4VOSdya0HjPilePh7q6qN/n5+WHd9r8gVW+DC2USkiKydGldS81Hv3n1nYjTf19X+WnKF8+vKjPNWrJRCR3iQSRVrNo1+VklMN5z6AzmLN1sIAy17jUeIvwM7NoYL16+xYJV21QC45AIM1KuPG+5NmhUswxqVymhBB/xxlm9aQ+a1amANKmS4fa9R2jVY5yyU/LpaE1L0szkvw77KgtzwyjMWImcwgwwd6EH7t93Q8wYAfDwsBIob3cqAh8/Ap983VCxnD+KFGa5bKdaPDsYS2HGDlCdqEsKM060WGFgKoWZMIDsoENQmLGPMCMHeRFYJL+KfqtcurASO5Ikiqc+/vzFD3OXboaE7mhNctBMHtpR5aOR5L/6CXk1jxnJUSPXicfHivV/YPqiDQa5YESo6dGurs7bRD/HzMPHz1GmXk8l3EglJGnXbt5FzVaDsHr2r8iZNZ2qijRs0m+49/Cp+l5KV0tVpqDCrjTbpXKR5IRZPsOwGIskAB41bTl27T+pm6eEX00b3gUimEyY463mobUmtcuhR9s6iBIlsvpI8sPI/cJEmlSckipPw3q3RK3KP5lMXmzMSu77bc0uLFixVeWUkVw6Iuz0GjpL16/kxin9Yz706VhfJSTWWo8hsyCePyyX7aAvsnAwi8KMldApzHwTZqxEydudmACFGSdePBuaTmHGhjCdsCsKM064aHY0mcKMHeE6eNcUZgwXyFZVmbReRXh58fINPn/5ohL0Ro5k+ldREViePHuJGDE8ETtm9BDvGsmBIuKHVHNKEC+2ChGytkmf/919pEpLx4kVw6LuLlz5F/XbDzMQffRvlGS/T5+/QsL4cVQZbv0mlZAePXmOpIkTGFRE0r/mzv0nStSK+j/BxiKjjC6S/DTCSmyI9L9fqcWzSHLNpEiaEBICpt+0/DumkheHZnzeEzEIuKwwI0qqqK9SUs34YTG1tBIHKO53+omn5DoKM8CDh27w/WT4wokYj4f5Wbx4DWzc5I64cQNQs2qA+Rsi6BXx4wcgdmzXnX8EXdYQT4vCTIiRRagbKMxEqOW0ejIUZqxG6LQdUJixrzDjtBvDCsMlh46EI61fMDzQWcyKbsPlVhGLmncdrc6g+jlnwsUYDupQBFxOmBGldvbSzZi5eINaCHEvmzGqm0qWZardf/QMPQbPxMVrt9TXkvl74uAOSjmmMONQezlcjHn8BJg5JxISJwI6tf8SLjZwUBJwFAIUZhxlJcLHDgoz4cPdUUelMOOoK2N/uyjMUJix9S578+49OvafgqwZU2NAl0a27j5M+5u3fAv2HDyDKcM6BSqhHaaGcDCHI+BywoyWPXvZ9AHImSUdpi1cj217juLP3yfB3T2w18eQCUvw6OlzDO3VUrm4teszEenTJMeo/m0ozDjcdg57gyjMhD1zjui4BCjMOO7ahIVlFGbCgrLzjEFhxnnWytaWUpihMGPrPcX+SMAVCLicMDNxjjeu3LiNBRN6q/V98uwVStbuphIviQqr30SdLVKlA2aN7o7iRXKrr/YeOoPOv0zDxX2LVQgUQ5lc4TEJeo4UZlx7/Tl7QwIUZlx7R1CYce31N549hRnX3Q8UZijMuO7u58xJIPQEXE6Y6TVsNuLFiYmBXZvoqGUv0dxAfNG+0GrczxnbE8UK5VQfa8ma/towTYUzUZgJ/eaLCHdSmIkIq8g52IoAhRlbkXTOfijMOOe62ctqCjP2Iuv4/VKYoTDj+LuUFpKA4xFwOWGmbe8JyJw+FXp61dWtRoGKXhjSqzmk3Jxxa99vMq7dvIPOLWsicqRI2P3XSRUXqAkzL976Ot6q0qIwI/DoMTBpuhuSJAZ6dmHy2zADz4Eck8CzR3Dv2xABnjGAMrUc00ZaZT8Cf6yF28f38B+3CkiQxH7jsGenIDDj5QUMfnoCBaIlRsnoKZzCZhppGwIizCx7cw15oyXEn6mq2aZTJ+4lfizDSkFOPBWaTgIkYEcCLifMiMeMJPwd0KWxDmtQHjNygZQ6W7ByG85fvolYMTxVabqDxy/oQpk++vrZcXnYtaMTePAoAKMmBiBZEjcM7OWalakcfY1oX9gRCHj6CJ+61wOix0Ck8rXDbmAHGsk/ADCRrsyBLLSfKV92rgU++CDqFG+4JaQwYz/SztHzlGfn0f/hcRSKnhhlYqZ0DqNppU0IPPjsg8UvryG/ZyIczFDDJn06cyfRopguZ22vOb18DTx5EvIfC+PGdUOSRPayiv2SAAmYI+BywozkmBEPmHnjeyk2weWYMQWvZfexiBE9mq68GUOZzG2xiP09Q5ki9vpydiEjwFCmkPGKaFczlCmirah182Eok3X8nPluhjIZrl7yBJ5hupx7D/pj5dqQ/3Bcqpg7GtYOWxEpTMFwMBJwcAIuJ8x8q8o0EDmzpsPUBWuxfc8xXVWmJd47VaiSVG2SJnlmJMnvFz8/bP3jCEZNW4HVcwYjZ5a06nsKMw6+w+1sHoUZOwNm905FgMKMUy2XzY2lMGNzpE7dIYUZp14+q4ynMBPOwsxf/li5zg9RowAxYphfyk+fAuDz3g0li7mjkQsJM6/f+uDIyYuoULKgOuuFtvn5+eOT72dE94wa2i5w685DPHn+CoXyZjXo4/PnL3j6/BUSJ4qHSB4RVzQ7c+G6ilLRiu2EGqTRjR8++uLlqzdImjiByerLcrmc8d3d3AN9L58/ff5aRdpIZWat+bz/iL+OnVc6QspktnUxczlhJiAgADMWb8CcpZsV3+ie0TBvfE/kzZFR/T1+1mp4b9mPkzvmqL8Pn7wIyUsjLX3q5Bjau4XuWgoztnpsnLcfCjPOu3a03PYEKMzYnqkz9UhhxplWy/62UpixP2NHHYHCTDgLM//zmEmTCsiZzd3sNrl1B7h42R+h9ZjZsvsI+o2aF2ic3u3ro3m9CsGOf+/hU0ya641xg7zCXHi4dO0/1G03BOf3LLRq7KOnLqF1r/E4vGkG4saJaZa3qQuWrtmF/UfOYdHkvurr5y/fYOTUZdi1/6Tu8ipli2BA58aIE9u82haeXEMK4O6DJ6jQsI+qmFwkf/aQ3h7k9Z0HTsXew2fV9yKuVK9QzCDHrHwuwk29dkPQtvHPEL5am79iK6bMX6v7u3yJAhjco7mO/YQ5v+P03/9g+fSB8PAw/4xZOimXE2Y0MB8/+eLFy+AVNLlW1LKHj5+rCkwi4hg3esxYutXse93+gx7w9/O37yAmevfxccPJ0+6I7hmAggXCfnwxKVlSN2TNEj5jhzlwDujQBCjMOPTy2N04CjN2R+xUA1CYcarlsqmxFGYMcYZXKFNYCjPjZq3C0mlfow20Fj9ebMSJFbyIcOX6bdRuMxjn/liAyJEj2XQfmuvMVsKMRFfcvvcYmTN8F2qBR1+Y8fcPQIP2w+Dn74+R/VojXerkuP7vXfQbOQ/CdMmUfuamhvDkatY4owu8+k5EpnTfoUe7b4V5QtqHqetnLNqAciUKIFWKxDh2+jI6DpiC1bN/VZ4u0kRcWbx6h/rnsQPbGQgza7bux3fJEyN3tgwQ4ahVj7Fo1aCyTmj8/MUPtVoNQqOaZVCvWilbmKv6cFlhxlYEKczYiqR1/fw6LGxf5mKtSquml1stwA2wnWZqOY/cufxRqzqFGcuJ8Up7EaAwYy+yztEvhRnnWKewspLCTFiRdrxxKMwYromrCDMHN043uRnHzFiJSJE8cPO/Bzh1/hpKFs2Dzq1qqoOviDIiImTNmBoe7u4Y0LUxcmROi0Wrt2PVxj14++4DShf7Hv07NVLeCjdu3VfeOZVKF8LydX9AQn3kQB8lSmTMXboZL1+/RZPa5ZQHhDQJMwqqL2Nh5ubtBxg5ZRmOn72ioiQ6tayJcsXzq34kzGbcrNXYue+E+jtvjgzIlP479PKqB7lvwKj5WDlrkPKekB/0x8/+HSfPXVFiU5li+VTRmWVrd2Px7zvw+OlL5cHRoHpptG9WTYVR6QszB46eR4f+k7FjxVikSvEtkf61m3dRs9UgLJ7cDwXzZsGQCUtQ6PusqFiqkLJp35Gzyj4RGUxxzZU1HdZt+wsr1v+Bew+fIUuGVOjRro6KBJF7J89do+byfc5MGNS9KTKl+5q0XdZP1ubm7fuqAI54tfTr2BDzV27F3kNnlS1dWtVC5vTfqetljSUC5d87D1H2p3xoUKOMLgWI8Qa5eO0W6rUbiiNbZupEPPHAOnDsvPp78+4jys5OLWsECvMK6ZuvVJ3uqF+tlG5vvHr9Dh99fdGww3D0aFvXQJgx7nvQuEW4//CpzqNJvhdvpl/GLtRF2YTUHlPXU5ixkiKFGSsB2uj28PCYOXTEA1++GP3LN7k/MmUIeSZ8azDQY8YaerzXlgQozNiSpvP1RWHG+dbMnhbPeXMJw1+cRDKP6EgTKZY9h2LfDkbgXcBnXPB9gdxREmB78q8HZFduriDMiFjSvqlhafSiBbKrQ377fpPVYb1bm1rIkDYlJs3xVoKCCCobdhxUh1sJYxHxRsSO3QdOYtzM1ejdoT6SJY6PqQvWIXnSBJg2vAsuXPkX9dsPQ9mf8qPOzyVU1dyZizcoYUfEmC9f/NB7+GxsXToaaVMlg3g+BNWXvjAjAk7FRn2QPVMaNKtbASfOXsHMJRuxdv5Q1feA0fNV6EqnFjWQOmUSzPptoxKDxCb9fgL8A1CtxUAkThgPrRpUgni/SFjM8hkDsfvAKTXH75Inwt37T9D5l2mYNbq7yquiL8zMW74FO/Yex4ZFIwI9NuUb9EbTOuWVp0aTzqOUKNOwRml1nbCUfuQ+U1z/OnpeiVoiohTJlw1HTl1C7FgxUDBPFmVzm0ZV8FPhXErwOnnuKnatmqDy5mjrJyJO2u+SYfCExZBQKbleRBoZM1bM6BgzoC3u3H+iOPb0qotihXJh176TWL/jL+zxnmQyj4/YuffQGV1RHZnHkt93Yvzs1WhRvyJ+LJhTsRDGshbSxPtFGJlq+XNnRofm1QN9JR5NlRr31fHWv0CYdm5ZM0hhRrxjyjfohcqlixiEQkkYVP4KbbF/3RQkShDXJq84CjNWYqQwYyVAJ7395Stg8rTAXjqenkD/3kZqjZPOkWaTQEgJUJgJKbGIdT2FmYi1ntbORhNmrO2H9zsvAQozX9fOVYSZ6hV+NNisklRXDudysP8+Z0Z1kJcmXhvL1+1WAoKpkJsGHYYrL4nBPZqp6/88eBpdB03Hkc0zcef+YyXMXNy3WB3033/4iAIVveA9dwiyZ06jrq/R8hclXtSoWAzB9SXigpZj5viZKyqn6J/ek5QYJK1qswHKfvHuyVe+LUb1b4Nq5X9Q3836bROu3rgdSJg5efaqyjezfflYJeAYt5v/3cflf27j6YtXKoymdaMqaFanvIEwM3zyUtx/9BRzxvYMdH/jTiMVSxG1ghNmTHGVe1MmT6QEFP02beE6bPvzGHatGq8+lvw2P9XoghmjuqJk0byB1k9yr1y/dQ8zR3VT14u3za/jFkE8pmYt2Yitfx7FxMEd1HcilMl6rVswTK2pcRs7cxViRo+Gji1q6L4SYebQyQtKrJMmiZGrNO2v1l+8ph49faH2jamWMH7cQN45kqy3cacRiBkjugoDM84JY06YESFq+57j2LZsDBInNBRgZK/17dgQhfNlM2lPSD+kMBNSYkbXU5ixEqCT3n76jBs2bQ2cHd39/5O6DxlEYcZJl5VmW0mAwoyVAJ38dgozTr6ANjb/lO8THPC5b+Nenae7395exXP/T2gWKzMSuAfOUeg8Mwm9pckix0DDmJlC30EEudMVhBnJMRNUKJOxMLNr/wlMmrtGCQGmBIRi1Tsr4UGEFWkSGlSmXk+sXzgcvr6fDYQZ8XTJVbolfp87WIVASRMBolLpwsqTJLi+RDTQhJnNuw5j8rw1BnOQA7mEMHVvW0clp9W8cGSMoISZTTsPq9AfrYiM/haWzyWcqdQPeZH6u6SqKnCTWuWUZ4i+x4x42Mh3pjxmJByndcMqam4hFWZEwOrXqSFqVf7J4MnSEjfrCzYyjghpKtzKSFgTbxXlqfQ/YebYmcto1WMcLu1fojxypLqxFtakDSQhWz8UyBHoiZa8L+IVI+NozViYefLsFUrW7oY9ayYhaaL4KlxNPHNMtdgxoytPKa2JV0vXQdPw6MkLlQPJVHLm4IQZEZrEc0q/IrP+uCLmiQBZs5Ih09C+uijMhJbc/+6jMGMlQCe93fcLMHxkJBhX14sUGfi1P4UZJ11Wmm0lAQozVgJ08tspzDj5AtJ8mxIoeX8j/vn8CntTVEPmyPFs2jc7cy4CFGYMPWb0hZmrN+6gVutfcWb3fF1JYvFC+KFgTpW/RZpW9Wjf2il4/PSFgTAjoUI5S7UIUpgJri8pQ60JMweP/41OA6bqvDI0gcxE6WkAACAASURBVCdrxlTo37kxClVujwm/tteVcw5KmDl0/IJKMntg/VQkjB9Ht1E1LxSpuqSVxJakt4XyZgskzGg5ZvSFIOlIE7FEYMiXKxNadh+Lnwrn1iWk1Q9lCoproe+zKXFGv0k+mCOnLuqEIPEwKVjJC5OGdED5EgUDCTMiHJ27dMOkMDNxjjf+u/vQIDQpuKdVxCoJp+rQ7FsYnDlhRviMnbnSZLfCQ5vfm3fv0eWXafjw4RPmjusZZMUsU8KM7KuJc35XlZp/m9oP2TJ99cYybrK/+nRoYLNqUhRmrHy3U5ixEqCT3v7wETB7jgcC3N3w/04yuuYWAAwdTGHGSZeVZltJgMKMlQCd/HYKM06+gDTfpgQozNgUp1N35irCTKCqTHFjq9CT4DxmtDwdIljkypoeAQEBWLRqu8pLMmVoJyRJFB8jpizFwycvsGbeEFy8eitEwoxU5gmqLwkp0oQZ8YwpV783GlQvpcKLTp27apADZuCYBTh78bryIpHwqTlLNyNvzoyBQpm0fqT0suTckZwy4g3TskElFKnSASP6tkK54gVUzp1ew2YrQcLYY0aryuT7+TNGD2iL9GlS4NrNO+gzfI7yGNFKaos4JLlwpg7vrBLTjp6+Eu983iuBxRTXxau3Y/WmvSokS3LDnDp3De/ef0AMz2gq/EqEmKL5cyh7pW8td4rx+gUnzJy58I/y5BHvm4qlC+H1Gx/88dcp5M+VGRnSpgj0HK/f/hcOnbiASUM66r4zJ8xY8jJ4/+ET6nsNVdWVJw/thJgxPNVt7u7uulA1+U5yAkmYlFfTqqhSpoiuMpjkPRKhS8LJ0qX+5oGTJFE8XeUtqfAsIW4iGBqHOFlio6lrXFaYEVe4l6/fKZASo2iuyUP4+bNfoNrxFGbMkYuY3/99CVi7LhKkFpK75PqV/7kDAQHAcAozEXPROSuzBCjMmEUUoS+gMBOhl5eTCyEBCjMhBBaBL3cFYUYLh9Ffxt7t6ytvDjnYi4dH64aV1ddSzWbSXG9dThMRT2Yv3aS+k7wiubOnx4DRC9SBXprkapk+oosSKC6IMOM1VJdjxpTHjAgDUrVJwmPk/BZUX5f/+Q912g7B+T0L1WFbPDFELJF7pMlhXZLCSpO8JuNmroJ4okhpZ/8Af0SLEgXjBnnBuB/x8Bk4doGqviRNEiAvmz4AC1dtV/OWJlWfPvl+VjYKIwlx2nf4rE50EQ+bkVOXKVZaE7FHqjtpJcgl90qPITPxz7/3EN0zGvLlyohnL97okuQac82TI6MSuTbuPKS6lHvG/tJOhVYJf7le+1yEFamGJc14/YyFGaliJd5GWviWiC0iEmkcZf3mjO1hUGFKm5OWzPno1lmQMCRpS7x34sjJi5g3vpf6WzybStTqhr1rJkOEEUuasJdwLOMm1bC0kLseQ2ZBvLf0m+alJF40koPIuOnnDpLcR/1HzWdVJksWJKhrRImdvXSzyuAtTRZoxqhuyJ0tvclbZGFlEx87c0V9L4mLBnRppDJ0S6MwY81qOO+9N28BS5Z6BBL1RJ8Z/is9Zpx3ZWm5NQQozFhDz/nvpTDj/GvIGdiOAIUZ27F09p7CXJj5yx8r1/khaWIgXRp3s/gePvLHrTtAyWLuaFQ7cP5Esx3Y4ALx8BAPEU10kC5fv/XBx4++Fh/GgzPD0r4kZ42IMPHjxoZntCi6LsW7QsQbaSIGSRiSCB36ITjG44u4Ei1qFMSI/i3HlIQJSYiNlmDYHDpxJHjy/BWSJIyn8+YwvkfslbApzT79701xlT5fvfFBgnixDRLhigfIsxevkTRxfJN9mbNV/3s5b8v8pVy4/poa9yHXtek9QeUH6tamdkiGCNdrZT/UaTMYdX4uqauKZQuDXM5jRtzQJCmUKJc5s6TDtIXrsW3PUfz5+yS4S+ZWoyZuY6/evFNxdG7/H7YydOJvePr8pS5TNoUZW2xD5+tDPGZ+X+MBD3c35SWj4pn+P4xJQpmGDaEw43wrSottQYDCjC0oOm8fFGacd+1oue0JUJixPVNn7THMhZmD/li51i/EuEoVc0fDcBJmQmxsGN+wYOU2bPvzqEosK54qImBIMmJblUkO4+k41HBaKWupmFQgTxaHsi0oY6QylYRgrZ7zq9Uilv4YLifMSFKiKzdu60pwaZmetTr1xgsgIo64YI3s11p9JfFm0xetV+5U0ijMOMXzY3Mj3/kAo8dHgsf/wpc0YSZmLKBvDwozNgfODp2CAIUZp1gmuxlJYcZuaNmxExKgMOOEi2Ynk8NamDnzdwD+3B9yYeb73O4oU9y8h42dMDl0t+KVIqWw3/p8QKIEcVAkX3Zd3hKHNtxJjDt2+jLe+rxH2Z/yO7zF73w+qDA7CVEzVRLdmgm4nDAjsYPx4sTEwK5NdNyyl2iOWaO76zJt6wPde+iMSv4kcXZStk0yV7esXwm1qxRXlz16+cEa/rzXiQn8MkRcGr95WYnjTMKEQPdOIf+XoRNjcGnTzWencjE8zx8j6oBGCPCMAb9SX+OyXa9pLnSuN3OPPevg9vE9Po1eCcRP7HoAOGOXJyBPv9aK392gqjLt/646qzK5zM7Q3wHfJp003tfEo2wkQAIkEBwBlxNmpN545vSp0NOrro6L1HUf0qs5KpcuHIjV/UfP0KbXeJXo6fDJi4gWNTIWT+6nyyzt52f6JcxtF7EJ3L0PjJj4BQH+/5Nm3CXmFIgRHZgyKnzicyM2ccecHZ9+w3Xxf/oI77vUBaLHQJQKdRxz0exslZ9/gApxdMXmu2MN8MEH0aevgXvCJK6IgHN2cQL6T36uq964/PElzmepg+zR4rs4GVeZvul3v4eHa/47wVVWnfMkAVsRcDlhRjxmJOGvZLXWWnAeM/XaDUXxonlUcicpgTZ4whJIrfujW2eqmDKGMtlqKzpXP6pc9rxIgYyOGhUY2JehTM61mrTWVgQYymQrks7ZD0OZnHPdaLV9CDCUyT5cnbHXsA5lckZGtJkESEBylUo6ZBdqkmNGasFrJbiCyzEjmbMLVvJSJdpK/fi1ZNila/+pmvcbF49AxrQpKcy40N4xnurQER7w8zf8FSRt2gC0aMJQJhfeFi49dQozLr38oDDj2uvP2RsSoDDDHaERoDDDvUACJGAJAZcTZr5VZRqInFnTYeqCtdi+55iuKpPUTt9z8Iyq2iRN6pinTZUUY3/xQvRoUSFZmPcdOYvNv42ix4wlOywCX3PxMrBxswc+fXKDmxuQKGEAWjXzkygONhJwSQIUZlxy2XWTpjDj2uvP2VOY4R4wTSCshZmAF0/h9/BuiJfDPX4iuCf7LsT38QYSIAHbEHA5YUYchGYs3oA5SzcrgtE9o2He+J7ImyOj+luS+3pv2Y+TO+aov69cv43ZSzcpsUauzZ87swprElFHGkOZbLMRnbGX+Ys9cPeuocdM9Wp++D63SzmhOePS0WY7EaAwYyewTtIthRknWSiaGSYE6DETJpidYpCwFmY+7VyHD4u+Vo8NSYtaoRY8W3YPyS28lgRIwIYEXE6Y0dh9/OSLFy/fIGniBHC3IFGjhDV9+eKHOLEN3SEozNhwNzpRV1Iue+zESHo1mb4aHzsO0Ksrc8w40VLSVBsScH/xBNEGNkJAlGjwz/ujDXtmV85AwP3sQbj5fsLHkSvgz6pMzrBktNGOBCjM2BGuk3UdbsJMtOhwjxXLLK2AD+8R8O4topavCc9WPcxeHx4XvH7jA/8Af8SNHRNu4qZu43b91j2VS1RKIPv5+eOT72dE94xqchRz39vCtDMXrit7ihfJbYvurO5DqhQnjB8HubKlt7ovdhA0AZcVZmy1KSjM2Iqkc/Xz9yVg7brAyX89PIDBAynMONdq0lpbEdA8ZmzVH/txTgIfRq5AAIUZ51w8Wm0zAhRmbIbS6TsKL2HGI31WRM4buOKsMVC/G1fw+dwxhNZjpmX3sTh+9orqNkfmtOjUsga8+k4Kct3Wzh+KjgOm4PHTl1gwoTeK5M+urj1w9DyGTlqCvWu+evuIAOK9ZR9mLdmIF6/eqs8keqFB9VLo0e5bdV1bbJBZv23C1Ru3MW14Fxw9dQmte43H4U0zEDdOTPQdORetG1ZWuUWlGX9vi/H1+7j74AkqNOxjwMaWY/j6fkarnuPx4eMnyFoYN6lIXL3FLwacJY1Hn+FzsW3ZGCROGNeW5rAvPQIUZqzcDhRmrATopLfTY8ZJF45m25WA5jEjg/BgblfUDtm524snyi56zDjk8tCoMCZAYSaMgTvwcBFdmPni54fhk5dCogvGDGwLX98vePz0hVqRW3ceovMv07B8xkDl7SItRdKEqNCoDz5//oLkSRJi9ZxflReMsTAzf8VWzFu+FUN7tUCJornx8dNnHDt9GRPmrNaJN7Zadn1h5p3PB9y+9xiZM3yn8olK9d7Fk/uhYN4sajjj721lg9aPV9+JyJTuO5uLT+q/zQIC8MvYhdi48xCyZkwdSJgRL51GHUfg5u0HaNWgkoENssYvX7/DpCEdbD1l9vc/AhRmrNwKFGasBOjEt89d4IH7D765U0pmmRrMMePEK0rTrSXAHDPWEnTu+5ljxrnXj9bblgCFGdvydObeIrowI2szTAkzHzB2YDuDpbp28y5qthqEgxunI37cb2FVpep0R4dm1TF4wmJd9Vt9Yeb1Wx8U/bkjfu3eFPWqlTLoU9JRRIsaRXnULFq9Has27sHbdx9Qutj36N+pkUo7cePWffQbNQ9VyhbBqg171P0iNNStWlL98/sPHzFu5mps23MM0aJGVp44IsSIx4yIEgNGzcfKWYNUkZiFq7YjZbJESliqUakYCuTJovvew8NdXT9yyjLlNZQ+dXJ0alkT5YrnV+OMmbESkSJ54OZ/D3Dq/DWULJoHnVvVxHfJE5vc0hev3UK9dkNxZMtMxIn1NX3Glt1HcODYefX35t1HkCVDKuWVVChv1hA/FiJ2SdGbKmWLYsfe4wbCjAhsnQZMQdJECfDm3XukTJbQQJjRKhlvWToa6VIlC/HYvME8AQoz5hkFewWFGSsBOvHto8dHwnsffM0z4w74+wNFCvujcgV/J54VTSeB0BOgMBN6dhHhTgozEWEVOQdbEaAwYyuSzt8PhRnTwszgHs1x8eq/2LX/JDYsGoFDJy7oQpm0KroH1k9VuU1MtTVb9ytxpXeH+kiWOD6mLliH5EkTKHHlwpV/Ub/9MJT6Ia8SY+4+eIqRU5fpBI+hk37DgaPn0LF5DWRIm0IVhYkc2UPde+naf6jbbgjO71moPH4krKdPxwbIljE1kiaOjzdv3+u+F3GoYqM+yJ4pDZrVrYATZ69g5pKNSvAQj5T2/SYrQaZbm1rIkDYlJs3xRqHvswbpDbNhx0FIPpfpI7vqprzk950YP3s1WtSviB8L5lSCitiohSGJF9G85VtMMlJFa5pXV9/tPnAKwyf/hjXzh+Kvo+dVsRv9UKZR01bgxq17mDuuJ/qOnBdImJE+JGxNhLLyJQo4/4PpgDOgMGPlolCYsRKgk97+8hUweVrgHDOenkD/3swx46TLSrOtJEBhxkqATn47hRknX0Cab1MCFGZsitOpO6MwE7QwkydHBpSp2xNDejVHzOieOmFm1/4T6DFkFi7sXRxkkZYGHYYr75HBPZqp/fHnwdPoOmg6jmyeiTv3Hyth5uK+xbpkwcWqd8awPi3xY4GcyFO2NYb3aYmalX5S9+qHMukLM6ZCmfS/P37mCtr2noA/vScpcUha1WYDUKxQLiUYiTDzfc6MaNOoivpu3ba/sHzdbiVEmWpjZ65CzOjR0LFFDQNh5tDJCyrnjDQRi6o07a/mKd5Bj56+UFWETbWE8eMiZ5a0uHD1lhJVFk3uq/723rzPQJgRryMRgLznDlF9Cntjjxnpf9zMVYhhZJ9TP5wOZrzLCjOS+Eji5CSBkTXZvSnMONiODiNzTp9xw6atHoFGkwJfQwZRmAmjZeAwDkaAwoyDLUgYm0NhJoyBcziHJkBhxqGXJ0yNozATtDAjVYcWrNyGNVv2KyFj1LTlKn+M5jGzb+2UIJPNitAiSYBrVCym1vPh4+coU68n1i8cDjnnGQszlRr3RacWNZEza1qVXFc/JCe0wszmXYcxed4aFaqlNQnPklwtk4Z0DCTMiOA0ae4a7Fo13uQelKTI4hXToHrpIIUZLaRoz5pJSJooPl6+fos797/meDNusWNGR9pUyVQOoKOnL6FEkTzqksvXbyuvmzpViqN9s2qo3WYwUqdMggxpUqjv9xw6g1gxoyvPGE1Uks9lrW78dx9jBrQN02fIVQZzOWFGkh7NXroZMxdvUGss8Y4zRnVD7iDKf8lDr2UC198UmxaPVK5vFGZc5VExnKfvF2DEqMAeM4kTB6CTl59rQuGsXZ4AhRnX3gIUZlx7/Tl7QwIUZrgjNAIUZoIXZiTfS/Ga3ZA3RwZ16BdhRspjF63aEQO6NEajmmUMNtP7D59UKesaLX/BDwVzopdXPfW9Vi1JxBxJPhyUMFO2eH7kKdPKoOqROWFm4aQ+KPx9NjWOvsfMweN/o9OAqTrvFfm+caeRyJoxFQZ2bRJiYUZy0sSOFQMdmlXTzVk8WfQ9ZoyFGcnNM3bmSpMP3E+Fc6Nfp4YQO/W9as5fvom/L99Ek9rl0LhWWZXHRvL6aE2SA8ePGxs/ly1ikONnwpzfETVKZHRuWZMPuB0IuJwwoymwy6YPQM4s6TBt4Xps23MUf/4+yaSrnJQs8/eXtK5f2+V//kOvYbPVSyNJongUZuywKZ2lyx073XD0xDevmciRgRZN/ZAyxbf94ixzoZ0kYAsCFGZsQdF5+6Aw47xrF1Etv/75NZ75fQyX6XV/dhB3v7zDlITFkDLS12o0Ydnc3QJQKGrSsBySYwVBIKILM8ZVmST8R2vBJf+VHDPiMSNt5YY9KgeMnK20ctnyI7oIJiP6tkKZYvkgSX9Pnrumq8o0Y9EGrN/xF6YM7YQkieJjxJSlePjkBdbMG4KLV28FKcxUKl0IXQZNU8mD+3ZsoEQgyTmj5acxDmWSEKACebOgdcMqeP/+I+49fKrLMSOeMeXq91alpVs3qoJT566qKlSzRndXczMOZTLnMbN++18q145422jNnDATmgfPOJTJuI+gQpkkbKtW5Z9QvkTB0AzLe8wQcDlhZuIcb1y5cVsXp6epjlqSJnM7RkqYJUoQT8UlSqPHjDliEfv7j77AP9eAuHHckSoVk/5G7NXm7MwRoDBjjlDE/p7CTMReX2ecXaenB7DB55Yzmm4Tm++naW6TftiJdQQiujAjwoVUJJKWI3Na/D53cIiFmU++n1Gmbg9EjhxJJ8x8/uKH5Wt3K3FGvGqkSfUkEUEkhEk+GzB6Af7465T6TkJxpo/ogvRpUqicKvW9hhrkmJFQJvH0qFiqkAqVatt7oupD+pQoiEQJ4qjkv/IjfJ22X5P/isi05+AZDJm4WEVQtG9aDaV+zGvwvXisyI/2mo1eTavqPEpEmMmXKxNaN6ysbJREx5PmegcZyqQlLT66dRYkDEnaEu+dOHLyIuaN76X+fvr8FUrU6qZzEgjN7gyNMKONu3nJSMWYzfYEXE6YkQcnXpyYyr1Ma1KfXlM2g0N88txVNO82Bn+snoDkSROqSynM2H5TskcSIAHnJEBhxjnXzVZWU5ixFUn2YysC017/jQPvH9iqO6fqJ7KbG1YnLe9UNkdUY8NLmHFPngqRMn4Nvwmu+d2/Db8bVxC1fE14tuph7vJw+f75yzfKw0UqNLlLQke9JiE4Hz/6Km+bkDQRfp48e6nytEjZ62AZ+fmrXC4J4sU2mZtUbJMkvBL+4xktSkjMMLhWUm606T1BCVzd2tQOdT/2uFHy/8gcRbxisw8BlxNmxAUrc/pU6OlVV0e0QEUvlQ28cunCQVKWB6W+1zB8nyuTcnvTmp9emJN9loi9kgAJkIBzEPB/+gg+nesA0WMgSsU6zmG0ja309wfcg//vOxuP6Djd+W5fA3zwQYwZa+GeMInjGEZLSIAESCAcCXgYCQn2NuXTznX4sGhyiIeJWqEWPFt2D/F9vMG2BG7fewzx7lkypR8K5Mli285D2ZvkqPHqO8mg+lQou+JtwRBwOWFGPGYk4a8kk9KaJR4zWgm2A+unKrVWa49fhk/sMnc1CZAACTgcgeePEXVAIwR4xoBfKVdNDCc5pgx/zXO4dbKTQR571sHt43t8Gr0SiJ/YTqOwWxIgARJwLgJJ4kULU4M/nziATyKUh7BFLvgTolb69sN1CG/n5TYkcOz0Zbz1eY+yP+W3Ya+h72rH3uNIlCAu8ufOHPpOeKdZAg4jzEhN9nsPnwUyuEj+bCq+z1ZNcsxcu3lHF6dnSY4ZSWolNeklJtE4CzVDmWy1MuyHBEjA2QkwlMnZV9A6+xnKZB0/3k0CJBAxCYR1KFPEpMhZkUDEJxDuwszFa7fQc8gsleHaVDuyZSbixIphs5X4VpVpIHJmTYepC9Zi+55juqpMkmBJkjxJ1SatSYbs0dNX4k/viYFsoTBjs6VhRyRAAk5OgMKMky+gleZTmLESIG8nARKIkAQozETIZeWkSMDmBMJdmOk8cCr++fcehvVpiWSJEyByJEPvGCl/ZpzkyRoKkitmxuINmLN0s+pGMnHPG98TeXNkVH+Pn7Ua3lv24+SOOepvLUt40zrl0aZRlUBDU5ixZjV4LwmQQEQiQGEmIq1myOdCYSbkzHgHCZBAxCdAYSbirzFnSAK2IBDuwkypOt1R5+cSqvxYWLaPn3zx4uUbJE2cwCrhh8JMWK4axyIBEnBkAhRmHHl17G8bhRn7M+YIJEACzkeAwozzrRktJoHwIBDuwkzfkXPx+bMfJg3pEB7zt3pMCjNWI3TqDj76Av9cA+LGcUeqVP5OPRcaTwLWEqAwYy1B576fwoxzrx+tJwESsA+BsBZm7n/2wfWPr0M8mRRRYiBj1G8FTkLcAW8gARKwikC4CzMHjp5Hh/6TMWNUV1VH3rhlSved2dryVhGw8mYKM1YCdOLbd+x0w9ET30LvIkcGWjT1Q8oUUpWFjQRcjwCFGddbc/0ZU5hx7fXn7EmABEwTCGthZubTi+h052CIl6NTohyYnqpYiO/jDSRAArYhEO7CjOSY2Xv4bJCzsXXyX9tg+9YLhRlbE3WO/ny/ACNGRQpkbOLEAejk5ecck6CVJGBjAhRmbAzUybqjMONkC0ZzSYAEwoRAWAszM55cQOe7hxDLPTLie5gv1f3W/xNe+PmiY6IcmGGlMOPz/qMq85wkYTy4ubkZ8N21/wQK5s2KeHFihQl3awfx8/NXuUaje0a1tqsg7z9z4TrevnuP4kVy23SMDx998fKV+ZQdz1++UeMmiBdb/f/eQ2eQMH4c5MqW3qb2sDPLCIS7MHP73mO8eesTpLVZM6W2ablsy7BYfhWFGctZRaQr/7vjjkVL3ANNSbxmBvX/EpGmyrmQgMUEKMxYjCpCXkhhJkIuKydFAiRgJYGwFmY0j5mC0ROhYpzUZq0/+f4ptr++DWs8Zq5cv41B4xZB/l+aFFdp06gyWjaopDvHZS/RHMtnDNQVXDFrWBhfIOk1WjesjIxpU6qRj566hNa9xuPwphmIGyemza25++AJKjTsgwUTeqNI/uw261/f6SF+3FioXqEYenrV1fXv7x+Ahau2YemaXXjx6q1aK63ozb4jZ9Fn+FxsWzYGiRPGtZlN7MgyAuEuzFhmpuNeRWHGcdfGnpa9fAVMnhbYY8bTE+jfm8KMPdmzb8clQGHGcdcmLCyjMBMWlDkGCZCAsxGI6MLM0+evUKJWN/xcrih6tK2L2LGi49CJC+g/aj5aNqioK/Di6MKM2Ld4cj8UzJtFbbF3Ph8gDgSZM3xnFycBr74TISk7erT7JprYYm/PWLQB5UoUQKoUiXHs9GV0HDAFq2f/ipxZ06nuJ87xxsadB+HVtBoqlioE38+fDdKJDJ+8FC9fv3Pa/K+2YBhefTiEMHPz9gPMX7EVl6/9h3fvPyBd6uSoWfEnVChZ0KqKScFB9fX9rDadqIHGrnZB3ff58xc8ef4KieLHQZQokdVlFGbCa+uG/7gjxkSCr6+hHfny+qPaz0wCHP6rQwvCgwCFmfCg7jhjUphxnLWgJSRAAo5DIKILM3LQ333gJLYtH2MgYKzauAcjpizDie1zECN6NIjw0aR2ORw/cxn//HtPCTmDezSHZ7QoEO+RMTNW4sTZq4gWNTKK5MuOEX1bqfPWqfPXMH7Wavx75yHK/pQPDWqUQc4sadUCN+gwHG0bV8HB4xeUt07+XJlVaNCQXs11G2Dusi3wef9BCSDiFXPk5EXlKZI+dXJ0bFED5UsUwKS53li4ajtSJkuEuLFjokalYiiQJwsGjJqPlbMGqXyncl4dOWUZjp+9ou7t1LImyhXPr8bZsvsIDhw7jzixYmDz7iPIkiEVOrWsgUJ5s5rciBev3UK9dkOhn7Ljxq376DdqHqqULYJVG/ao+1o1qIS6VUtatZmlAnL9aqXQtvHP0EQ0YVujoul8Qk+evULJ2t2wZelopEuVzKqxeXPICIS7MHPh6i3U9xqqrBY3rvhxYuHo6UvqgWnTqAq6takdshmZuTogIACzl27GzMUb1JXi4jVjVDfkDiaW7tadh/h1/GKcufCPumdQ96Zqg0ujMGPT5XGqzgaP8IC/37f42QA3IH3aALRowhwzTrWQNNZmBCjM2AylU3ZEYcYpl41GkwAJ2JlARBdmWnYfi2yZ06CXVz0Dkg+fvECZuj2wdv7Q/2vvzuNsLvs/jr9nxr7vS4tCQllulbTclXLfJEoqFcnSIsm+FgnJ1tiyrxEVIbIlQkpR6aZF0aJFSVmzr2N+j8/V75xmY8bMmTlzvuf1/Y/z/V7f63pe55w5532uRRXLXeKCmUrlS7vpTXv2HdDIyfP0XKdmLqBpvHNIpAAAIABJREFU1W2ooqKi3Pc+W+Ji3tL39Vyn5rI1UOo+1N1NxbmpRhUtf2+D5i/7QKvmDHc/rFuZdjx0z391QYnCuvjC4mrf6yWtmjvcjQKxNWL+3aCdBvV8XP+56Wq9Nv9dXVb6IhUukE9r1n+uEZPmat2isdq1d7/ubvmsuj/VWFeUu0QlihXSwUNHdf8TffXFqqmy9WasHldefqma33+7Pt20RWOnv+Vv2/Q33lH0+Nlq+WBd/fvaylq2+hN9/e3P7vGkjgXL1rr1XEYP6OB/+KstP+rBJ5/XbTdWc2HMr7/v1oCXZvrDGxv9MunVxUmWd03V8mrT4u5Ej9mInzua9tC4QZ3cOjar1m5U+96j3PdYC8eyZ8+qu2rfoLtq3xjvWuvTBxrc5kIrjowTCHowY8OrLCF8a9oAl5jaYeGJvVAsuQz0vL5Nm79X07YDNHN0T1WuUEajps7X0lXrtfKN4UmOzvlz935Z0mhDvZo0rKWK5S7V8RMn/AtXEcxk3JM1M91p5x/S+EmJpzJlzyb1epqpTJmpr6hLxglE7NulnL0eUmyWrDpz6d9DgTnCRyDy5y2KOH1axwa8pthCxcKn4bQUAQQQOIeA14OZOo27uS/6FkrEPY6fOKmr67TyhwIJpzINHPWqbLHgAU8/5r6b2aKzPds3jbe2ybjpb2nJyvUa1qeNK/r06RgXXrw55Xk3KsXKnDCki26qUdl/awsi7rnjZrdezLsffKaeg6Zo3aIxypo1iwtYvt22XVt/2C4bGTL65fl6Y2IfFxglnMpkwYovmPlk4xYXHq2cM1wli/29i/BdzXu6sKhbmwdlwcyHG75y68XYYT/q12/2jAt98ufLnejZMWTsLOXJlcON2PEdvmBm83vT/LM5brq7nZ7v/ohuvaGa/ti9z7+GT8ICixQq4B9F5HvMbJu2fUF5cufS9JFPu1E/r81fKXO30Tzly1ysb3/8VTb16cXerVWv1nX+Yl8cO8uNcopbP17k6S8Q9GDGnnDNGtVxo2PiHjv+2KPaD3bVzNG9dFXlcgGTsOF2W374xf/C8Q3X8qW5CW9kT8zF767Te2+OTHJ+IcFMwLompAo6WzBjC9D3600wE1KdSWUDJuALZgJWIAWFpADBTEh2G5VGAIF0EvB6MGML5NqXfAso4h47/9yr/zzQJV6IEnfx39kLV2va7GVaPivaTWF6euBE2Q/iNp3osYfqqVH9mm5qj43yKF/24nhlP9m8gW6sXsmFKQkXFLbwwRa2fef1F9W210vu2vaP3utCoNY9hrtQ5rZ/V1PJYoXdUhqzxvV2uxCdK5hZtPwjN2hg7Vuj/fXoM3SamzY1vO9TiYIZ3/dL38idhE8tG5hgI2sa313rnMGMhUxtW96jO2rV0P4Dh7R9x64kn6X58uRS6TjTjmxXpg69R+mPXfs0Y1RP/+LFZvPGwtVa9MpAfzlmfPz4SY18vq3//6a8vlQ//LxDg3u2SqdXBcUmJRD0YMYSUtuGbFJ013j1s7l69kQJ9Py2rs+PV8H8edSrw8P++9kL0TfEKyGSpaE5c2RXyeKFZW8wNhSvdfO7/IskEcyE5wvLgplxE6MSrU9EMBOezwda/bdAxLEjyrJyXthyRH7/paK+/1Ix5aroTLkqYetw+j/3KTZn4l8IwxaEhiOAQFgLeD2YsfVZbFTL8tej3agU3/H6glVuKo7t+GM7/yQMUfoNf8XNmrBZDHbYaBYbafLu2s/cKI4lMwZp/ttr9fOvO+NN+Yn7ZEoqmPnrwGHd2KCtons/qW79x2vZa0NU6sLi/mk8cdd1sevjBjNTh3fXdVdd4W4Rd8TM2k++VNueL8UbAWPfYSuWK+W+UyYcMZNcMGPr6eTLm1ttmjdIcTDz/vovNGTs60m+lm6+rqqebtvEPXbw8FG1f3aUjh07oYkvdom3o5SV0eaZEfp85VRlzRLlzrfvxseOn9DYgR39ZQ+d8IayZ8uqdo/cE9av3YxufNCDmblL1qjv0Olu+JStMWN722/4fKsWrfhIFxQvotkTnkvx4rwpwbNhaOXLloq3bVj1uq3dIlFxh3D5yrIXrC3cZAskZcuWRZNfW6qjx45r4bQB7s3n+EnWE0mJu9fO+W2HNHD4GUVG2tQ7+0Zqc/Ck7Nml4QMSb6PttfbTHgQQSCxw+s1pOr1gurI0bKEs97aECAEEEEAAAeXI9vcX4Iw6Mnq7bN+CsvY9qkvrB9zUnQ8+/lK9Bk9xi9e2bnaXa7p9p7IRGHfUus6t0dL9hQluxoTNnLAZDffVv8XtJGQjWu57vI9bn8UCg4fbDXTX1a1VQwcOHnHTk2yR38tKX5jkiBm7ly3yu+Td9e67pW96ka3R8miXFzV/an/3A/vSVR+74MgXzNi6KtWrVdBjTerr6NHj+m3nbv9UJhsZU/vBbmp892167KH6+uzzrWr37Cj/D/vnG8zMf/sDt3OVjbbxHUlNZYo7YiYlz5+jx064tVtPx8RoRL+2ypM7p7ssMjLSTcGy0KZWo85q3qiObNSRLULcpE1/Fy7Zkh2+w74v31vvZtWpeW1Kbss5ARIIejBj68nYcClbACruYQsfPduxmYoXLRigpv5djKWCtuCvzWH0HecaMWOPjerfXrVuusqd7pszaC9qGxq39+CJgNaPwkJHoGffCMXEWfzXal6mjPRES3ZlCp1epKYIBE4gcuErilg8Q7F3NtOZBs0DVzAlIYAAAgiErEDhfNkztO4ZHcxY42xHpN4vvhxvDZQOj93rFvrNEvV3MGXfqWzkjP3AbYftPtS/2yNu56V2vV7S6o82uf+3735NGv7HrRFjh4UYg0a/7r/ukouKa8KQzm4UzNm24LapUS07DXZbPvvChTNnYtW571gX7Nhh3zXtnr6tpG3KVN9h09wGNE82a+CmOzVq9ffiv9YGG21i3yN99bfAyTeiZPqcd9xuT74ZIL6wavXcEUl+l/WFMOuXjJNNQ7LDtyFO3DVmLJixe9hapyk5fGujJjzXvvv6pmGt/+xrte892t8OC2R6tG3i7ydf3RdNH6Cyl16YkttyToAEgh7M+Nphc+F27Nyt4ydPujl/hQvmC1AT4xdjiawt+uR74SS3xowltpYA+xa02vbzDt3VopdmT+jjFlliKlO6dFNIFLr5G2npsigdORyhiCipZPFYNWsSo1yM4A+J/qOSCARaIOuSGcq6dKZO1XtYp+o3C3TxlIcAAgggEIICGT2Vacyur9Tu1w9VIUcB1chdIlmxrcf26ZOju/RU0UoaUyrpLZSTLeT/Tzh85Jhbd6V40UJJbqpiP8j/uWe/cmTLFm+KjV1uiwXbTkjFihRIdDu7znZostkKtiV1Wg7bEcoWwrVZGgkPm05la7nY91Db9Smpx20R3kIF8vk3rUlNXaw9j3cb6hYdDvQOxCmpj42osRDHlvewsCzuYYsDWxttYAJHxgpkmmAmo5r9z65MvVS5Yhm9NGWe3l71sX9XJks8LTH1zXd8efbbbmEqC2JsONiIiXO16sP/acXsYe4FSTCTUT3HfRBAAIHMLUAwk7n7h9ohgAACwRDI6GDGN2LmfNvatmgljU5jMHO+9wzn831bWduOSdX/lTl2srS1dGyB5Li7T4VzH2V024MSzGz86jsNGTNLI/u3k61y/eWWbWdtd3Tv1omSvLQgWUI5ZtoCTZixyBVjKeGk6C6qVunvnZ+ix83WnMVr3EJVdpw8eUo9B09x+9HbYcPrRvZr61bvtoNgJi29wbUIIICAdwQIZrzTl7QEAQQQCJRARgczC/76SS/9+eV5V79hwdLqUCx8F64/b7AAXGDr3hw6clT/vfmaAJSW9iLs+27RwgV0TdXyaS+MEs5bIEjBzPeKHj/bLXi0eMVHsnl2ZzuGPPtEQIMZ331suNy+/QdVoljhJIfaJayPLZZ05MgxlShWKN7QNoKZ837OcQECCCDgSQGCGU92K41CAAEE0iSQ0cFMmirLxQggEDSBoAQzQWttOtyYYCYdUCkSAQQQCEEBgpkQ7DSqjAACCKSzAMFMOgNTPAIeEQh6MGOLC239frsbMmVruNh8O9u+LFfO7HrgrtvStLBSRvQRwUxGKHMPBBBAIPMLEMxk/j6ihggggEBGCxDMZLQ490MgNAWCHszY/vG21/2SmYMVExOj/z7QxW1TZsc9d9ys/t0fydSyBDOZunuoHAIIIJBhAgQzGUbNjRBAAIGQESCYCZmuoqIIBFUg6MHMA0/0U80b/+X2i7cFh2x/+HmT+7lwpuNzY7R+yVj/vupBlTrLzQlmMmOvUCcEEEAg4wUIZjLenDsigAACmV2AYCaz9xD1QyBzCAQ9mKnTuJtaNb1T99a7WUPGztLyNZ9q9dwROnrshKrXfcKFNBXLXZI5tJKoBcFMpu0aKoYAAghkqADBTIZyczMEEEAgJAQIZkKim6gkAkEXCHow81TPkTpzJlZdn3xALToMUs0bqrnpSz9u36k7mz2jJTMGqXSpkgGHsm2w9x84rGJFCsTbZel8b0Qwc75inI8AAgh4U4Bgxpv9SqsQQACBtAgQzKRFj2sRCB+BoAczGz7fqhYdB/vFfUHM8IlzNOut1fpo4Whly5Y1YD0SGxur8TMWaey0Ba7MQgXyaszAjqp6Rdkk77Fq7Ua17z0q0WMbV0xW9mxZRTATsK6hIAQQQCCkBQhmQrr7qDwCCCCQLgIEM+nCSqEIeE4g6MGMiX7/02/avPUnXV3lcpW6sLhDfm3+uypauKBq33JNQNE3bf5eTdsO0MzRPVW5QhmNmjpfS1et18o3hisyMiLRvVau/Z+eGTjZTamKe5S6sJgbaUMwE9DuoTAEEEAgZAUIZkK266g4AgggkG4CBDPpRkvBCHhKIFMEMxkpOmzCHG354RdNGdrN3XbXnr90630dz7qWjQUz/YZN19q3RidZTYKZjOy9zHWvzd9IS5dF6cjhCEVESSWLx6pZkxjlyp256kltEEAgYwQIZjLGmbsgkJkF9p0+rod2vauvT+5TjGJVOCqHBhWqoXq5S2fmalO3dBQgmElHXIpGwEMCQQlmNn71nYaMmaWR/dtp0fKP9OWWbWclje7dWrly5ggYue36VDB/HvXq8LC/zCtrttC4QZ10y/VVE93HgpkOvUerQZ0blT17Nl1Ttbzq1Kzu3ymKYCZgXRNyBfV7IUoxZ+KPsipdOlYtH44JubZQYQQQSLsAwUzaDSkBgVAXuP+Pd/TR8T/iNSNbRKR+uqRZqDeN+qdSgGAmlXBchkCYCQQpmPle0eNna3jfp7R4xUf6asuPZ2Uf8uwTAQ1mWnUbqvJlS6lL6/v996xet7X6dm2herWuS1SPr7b+5HaKyp83t37/c6/mLHpPTRrW8gc7h46dDrOnDM01gR2/S0NHxSbCyJFdGtQv8ZQ41BBAwPsCsQum6cxbryjy7uaKaNjS+w2mhQggkEjg4q2v6MCZk4n+f13pe1QpZ2HEwlAgb84sYdhqmowAAucrEJRg5nwrGcjzbcSMLfjbs31Tf7HnGjGT8N7z3/5AvV98WV+smupGzRw6eiqQ1aOsEBHYsdOCmcSVdcFM3xBpBNVEAIGACsQumK4zC19RZAMLZloEtGwKQwCB0BC4+NsZZwlmGqpSDoKZ0OjFwNYyb67AbWIS2JpRGgIIZCaBoAcztuvR+BkLZVOW4m6L3b3/BOXOnVN9OjcPqJetMfPttu2aFN3VlZvcGjMJb772k6/Uuscw/W/5JOXIno3FfwPaO6FVGFOZQqu/qC0C6S3AVKb0FqZ8BDK/AFOZMn8fZXQNmcqU0eLcD4HQFAh6MNOu10s6ExursQM7xhNc/eFGtXt2lNYtGqv8+QK3muo/uzL1UuWKZfTSlHl6e9XH/l2Zps95RxYW2a5Ndry+YJXKl71YV1x+qQ4cOqxuz09Q1ixRenlED/c4a8yE5hM/ELVm8d9AKFIGAt4RIJjxTl/SEgRSK8Div6mV8+51BDPe7VtahkAgBYIezNzRtIcebHCbmjWqE69d+w8c0r8btNPcSX1dKBKoIzY2VmOmLdCEGYtckbaw8KToLqpWqZz7d/S42ZqzeI02LJvg/j184hxNnfW2//ZVrijrRvdcVLIowUygOoVyEEAAAQ8IEMx4oBNpAgIIIBBgAYKZAINSHAIeFQh6MNOi42DlzJFd4wd3ike8bPUnsvVg3p09VBeUKBJw/uMnTmrf/oMqUaywIiPPvVirnbt771/KmzuXCuTPE68ujJgJeNdQIAIIIBCSAgQzIdltVBoBBBBIVwGCmXTlpXAEPCMQ9GDmlbnL9eLYWer8xP265bqqKlIovz7Z9I1emvKmQ14yY3CywUkwe4NgJpj63BsBBBDIPAIEM5mnL6gJAgggkFkECGYyS09QDwQyt0DQg5nTMTHq3n+i25I67mE7J40b3FmVK5TO1IIEM5m6e6gcAgggkGECBDMZRs2NEEAAgZARIJgJma6ioggEVSDowYyv9V9+s01bf9iuI0eP65KLiuvaahWVJ3fOoOKk5OYEMylR4hwEEEDA+wIEM97vY1qIAAIInK8Awcz5inE+AuEpkGmCGeM/dvyksmSJcrsehcpBMBMqPZU+9dz0RYS2fBOp3HlidW31MypZIn3uQ6kIIJD5BQhmMn8fUUMEEEAgowUIZjJanPshEJoCQQ9mbCrTpFeXaNaCldr31yEN7tlKd9a+Qa17DFO2bFk1qn/7TC1LMJOpuyddKzd5WpR+/TX+wtF3N4jRVVVj0/W+FI4AAplTgGAmc/YLtUIAAQSCKUAwE0x97o1A6AgEPZhZs+5zPdVzpO6542Z9ummL2rZs6IKZFe9/pk59xmjd4rHKnzd3wEVPnjyl/QcOq1iRAoqIOPeuTOe6OcFMwLsmJAo8fEQaMiyLEj5z8uWXunY4HRJtoJIIIBBYAYKZwHpSGgIIIOAFAYIZL/QibUAg/QWCHszYyJiLLyimXh0eVqtuQ3Xnf29wwcwfu/epVqPOmje5nyqWuyRgErGxsRo/Y5HGTlvgyrRFhscM7KiqV5RN9h4jJs3VlNeXav2SccqXJ5c7n2AmWTZPnvDl19K8N7MkaltUlNSnF8GMJzudRiGQjADBDE8RBBBAAIGEAgQzPCcQQCAlAkEPZm5r1ElPNm+gRvVrJhnMLHploMpeckFK2pKiczZt/l5N2w7QzNE9VblCGY2aOl9LV63XyjeGn3Nb7gXL1urZIVPdPQhmUkTt6ZMYMePp7qVxCKRKgGAmVWxchAACCHhagGDG091L4xAImEDQg5mOz43RXwcP6+XhPdy6Mr4RM6OmvqmJMxdr44rJyp4ta8AaPGzCHG354RdNGdrNlblrz1+69b6O5xyZs+HzrWrzzEg9362luj4/nmAmYL0R2gWxxkxo9x+1RyDQAgQzgRalPAQQQCD0BQhmQr8PaQECGSEQ9GDm222/6p5He7stsg8dPqp/XXmZTsec0Qcff6GOj9+nxx+qH1AHC1YK5s/jpk75jitrttC4QZ10y/VVE93rl9/+1H2P99HI59uqeJGCatCyF8FMQHsktAtjV6bQ7j9qj0AgBQhmAqlJWQgggIA3BAhmvNGPtAKB9BYIejBjDbRwxkbIfLppq44eO67Ly1ykh+75r1sQODIy9QvzJoVn69iUL1tKXVrf73+4et3W6tu1herVui7eJQcOHtH9T/RV8/tvV5OGtfTDTzsSBTP7Dp1M7z6ifAQQQACBEBCIWDhdEYtmKPauZopt0CIEakwVEUAAAQTSW6BQ3mzpfQvKRwABDwgEPZhZ/9nXOnj4iOrUvNZx2uK8adklKbk+sREztuBvz/ZN/aeebcTM8jWfqnPfcWrWqI7bfWffgUNavGKdHmhwmxrVv8UtSnz8ZExyt+RxBBBAAIEwEDj95jSdXjBdWRq2UJZ7W4ZBi2kiAggggEByAjmyRSV3Co8jgAACCnow07nvWB0+ckyTortmSHfYGjPfbtvuv9+51pjZ9vMOrfpwo79ee/Yd0GvzV+qJh+90o2vKXnohuzJlSK9xEwQQQCDzCzCVKfP3ETVEAAEEMlqAqUwZLc79EAhNgaAHM+NeWaiF73yo5bOiM0Twn12ZeqlyxTJ6aco8vb3qY/+uTNPnvKNVaze6XZsSHklNZWK77AzpNm6CAAIIZHoBgplM30VUEAEEEMhwAYKZDCfnhgiEpEDQgxkbhVL3oR4a3reNbqpRJd0RbarUmGkLNGHGInevXDlzaFJ0F1WrVM79O3rcbM1ZvEYblk0gmEn33uAGCCCAgHcECGa805e0BAEEEAiUAMFMoCQpBwFvCwQ9mLE1X5at/uSsyusWj1X+vLkD3gvHT5zUvv0HVaJY4TQtMMyImYB3DQUigAACISlAMBOS3UalEUAAgXQVIJhJV14KR8AzAkEPZmza0K+/7zoraOOGtZQ9W9ZMC04wk2m7hoohgAACGSpAMJOh3NwMAQQQCAkBgpmQ6CYqiUDQBYIezARdII0VIJhJIyCXI4AAAh4RIJjxSEfSDAQQQCCAAgQzAcSkKAQ8LJApgpmPNmzWm0vf10/bdzpq2+2o8d21dHWVyzM9PcFMpu8iKogAAghkiADBTIYwcxMEEEAgpAQIZkKqu6gsAkETCHowY6FMq25DHcCN1Sspa9YsWrPuc/fv5zo10wMNbgsaTkpuTDCTEiXvnnP8pPTdt1KB/JEqVeqMdxtKyxBAIFkBgplkiTgBAQQQCDsBgpmw63IajECqBIIezNzVvKf2HziklXOG+9eSOXHylJ4ZOEnL12zQ/5ZPUo7s2VLVuIy4iGAmI5Qz5z2WvROh9Z9G+SuXNavUslmMLrowNnNWmFohgEC6ChDMpCsvhSOAAAIhKUAwE5LdRqURyHCBoAczdzTtof/efI06tWoUr/GbNn+vpm0HaP7U/ipf9uIMh0npDQlmUirlrfNOnpZeGJglUaOKFYtV29Yx3mosrUEAgRQJEMykiImTEEAAgbASIJgJq+6msQikWiDowczAUa/qx+07NWVot3iN2PbzDt3VopfemzdSxYoUSHUDz3bhyZOntP/AYVd2RETEOcs/HROjPfsOKPZMrIoVKaioqEj/+QQzAe+akCjw5+2Renn6P88DX6Vt1EzvZ06HRBuoJAIIBFaAYCawnpSGAAIIeEGAYMYLvUgbEEh/gaAHM/OWvK8+Q6fpiYfvVOGC+f0tthEz76//Qh0fv8/9X66c2dWw7k1pFomNjdX4GYs0dtoCV1ahAnk1ZmBHVb2ibJJlv7FwtZ4fMcP/WPGiBTXqhfaqVL60+z+CmTR3SUgWsP8vacSoxCNmcuaUnulGMBOSnUqlPSEQuW2zsi6cFpS2RO79QxH7dim2UDGdKVwiKHU4ffcjiilzZVDuzU0RQAABBBILEMzwrEAAgZQIBD2Y6fjcGL37wWfJ1vWikkW1fFZ0sucld4JvitTM0T1VuUIZjZo6X0tXrdfKN4YrMjLxyJnFK9apQP48urpKednIma79xun06Ri9PKIHwUxy2B5/fFB0Fh07Fr+RNa49o3q3swiwx7ue5mVigajPP1L2iX0zcQ3Tt2onnnxeMVWuT9+bUDoCCCCAQIoFCGZSTMWJCIS1QNCDmYzWHzZhjrb88It/6tSuPX/p1vs6at7kfqpY7pJkq9P1+fE6cyZWw/u2IZhJVsvbJxw8LC1cFKXfd0rZskWoSuUzqlWTUMbbvU7rMrtAxOEDivz958xezXSr35kLSis2T750K5+CEUAAAQTOT4Bg5vy8OBuBcBUIu2DGgpWC+fOoV4eH/X1+Zc0WGjeok265vupZnweLVnyk1R9u0nc//qrhfZ9ShctKuXP/2J9gyES4PpPCtt3nXp8obFnCpOH0fph09Hk0M1axihDPjPMg41QEPCPAnoye6cpUNiTpZ0CJgjlTWR6XIYBAOAmEXTDTqttQlS9bSl1a3+/v5+p1W6tv1xaqV+u6s/b9yMnz9L8vv9OuPfvVv/ujurZaBXduTAx/hsPpBZO4rfR/OPc/vR/OvZ9020+dPqOsWRIvDI4UAgh4X4BI1vt9fO4WJv0MiIrimRHuzwzaj0BKBMIumLERM7bgb8/2Tf0+KRkx4zt54szFevXNFVr71mj3Xyz+m5KnGecggAACCCCAAAIIIBB+AkxlCr8+p8UIpEYg7IIZW2Pm223bNSm6q/M63zVmVrz/mTr1GaMvVk1VlqgogpnUPOu4BgEEEEAAAQQQQACBMBAgmAmDTqaJCARAIOyCmX92ZeqlyhXL6KUp8/T2qo/9uzJNn/OOVq3dKNu1yY5x09/SjddWVvmyF2vv/oOyETc5s2djV6YAPPkoAgEEEEAAAQQQQAABLwsQzHi5d2kbAoETCLtgJjY2VmOmLdCEGYucYq6cOTQpuouqVSrn/h09brbmLF6jDcsmuH/3GjxFb73zoV/czhvcq5Vs+247mMoUuCcjJSGAAAIIIIAAAggg4CUBghkv9SZtQSD9BMIumPFRHj9xUvv2H1SJYoUVGXnuRblOnjylXXv/Up5cOVUgf554vUEwk35PTkpGAAEEEEAAAQQQQCCUBQhmQrn3qDsCGScQtsFMoIgJZgIlSTkIIIAAAggggAACCHhLgGDGW/1JaxBILwGCmTTKEsykEZDLEUAAAQQQQAABBBDwqADBjEc7lmYhEGABgpk0ghLMpBGQyxFAAAEEEEAAAQQQ8KgAwYxHO5ZmIRBgAYKZNIISzKQRkMsRQAABBBBAAAEEEPCoAMGMRzuWZiEQYAGCmTSCEsykEZDLEUAAAQQQQAABBBDwqADBjEc7lmYhEGCBsA1mbKel/QcOq1iRAoqIOPeuTKdjYrR77wEVKpBX2bNljdcFBDMBfkZSHAIIIIAAAggggAACHhEgmPFIR9IMBNJZIOyCmdjYWI2fsUhjpy1wtBa2jBnYUVWvKJsk9eTXlmjk5Hn+x+qdM75fAAAgAElEQVTUrK4+nVsof77c7v8IZtL5GUrxCCCAAAIIIIAAAgiEqADBTIh2HNVGIIMFwi6Y2bT5ezVtO0AzR/dU5QplNGrqfC1dtV4r3xiuyMjEI2fmLlmjiy8opqpXXKZff9+lRzsP0aON66nFA7cTzGTwk5XbIYAAAggggAACCCAQSgIEM6HUW9QVgeAJhF0wM2zCHG354RdNGdrNqe/a85duva+j5k3up4rlLkm2J3q/+LJ27Nytl0f0IJhJVosTEEAAAQQQQAABBBAIXwGCmfDte1qOwPkIhF0w0/X58SqYP496dXjY73RlzRYaN6iTbrm+6jntTp2OUZ3GXVWv1vXq0vp+gpnzeaZxLgIIIIAAAggggAACYSZAMBNmHU5zEUilQNgFM626DVX5sqX8wYq5Va/bWn27tlC9Wtedk7HP0Gl6e9UnWjpzsFs02I6YM7GppOcyBBBAAAGvCZyOiVWWqHMvKO+1NtMeBBBAAIGzC0QlsVQCXggggEBCgbALZmzEjC3427N9U79FSkbMjJv+lsZOf0uzJ/RR5Qql/df+uf84zyoEEEAAAQScQKxiFSGCGZ4OCCCAAAJ/CxQvmAMKBBBAIFmBsAtmbI2Zb7dt16Torg4nuTVmzpyJ1bAJb2jO4jV65aWndcXll8ZDZVemZJ9jnIAAAggggAACCCCAQFgKMJUpLLudRiNw3gJhF8z8sytTL1WuWEYvTZmnt1d97N+Vafqcd7Rq7Ua3a5Mdzw6ZqgXL1mrCkC4qc0lJP3DxogWVJSqK7bLP+ynHBQgggAACCCCAAAIIhIcAwUx49DOtRCCtAmEXzMTGxmrMtAWaMGORs8uVM4cmRXdRtUrl3L+jx812o2M2LJvg/l2ncTf9tnN3Iue3Xx2iSy4qTjCT1mcg1yOAAAIIIIAAAggg4FEBghmPdizNQiDAAmEXzPj8jp84qX37D6pEscKKTMOiXExlCvAzkuIQQAABBBBAAAEEEPCIAMGMRzqSZiCQzgJhG8wEypVgJlCSlIMAAggggAACCCCAgLcECGa81Z+0BoH0EiCYSaMswUwaAbkcAQQQQAABBBBAAAGPChDMeLRjaRYCARYgmEkjKMFMGgG5HAEEEEAAAQQQQAABjwoQzHi0Y2kWAgEWIJhJIyjBTBoBuRwBBBBAAAEEEEAAAY8KEMx4tGNpFgIBFiCYSSMowUwaAbkcAQQQQAABBBBAAAGPChDMeLRjaRYCARYI22Dm5MlT2n/gsIoVKaCIiIhkWW2b7ZgzZ5QlKireuQQzydJxAgIIIIAAAggggAACYSlAMBOW3U6jEThvgbALZixgGT9jkcZOW+CwChXIqzEDO6rqFWXPibd4xTqNmDxXq+eOIJg576cZFyCAAAIIIIAAAgggEH4CBDPh1+e0GIHUCIRdMLNp8/dq2naAZo7uqcoVymjU1Plaumq9Vr4xXJGRiUfObN/xpx7vOlS/7dyt4kULEsyk5lnGNQgggAACCCCAAAIIhKEAwUwYdjpNRiAVAmEXzAybMEdbfvhFU4Z2c1y79vylW+/rqHmT+6liuUsSEZ6OidGefQe0+sNNmvL6EoKZVDzJuAQBBBBAAAEEEEAAgXAUIJgJx16nzQicv0DYBTNdnx+vgvnzqFeHh/1aV9ZsoXGDOumW66ueVXDZ6k8UPX42wcz5P8e4AgEEEEAAAQQQQACBsBQgmAnLbqfRCJy3QNgFM626DVX5sqXUpfX9fqzqdVurb9cWqlfruvMOZo6fjDlvdC5AAAEEEPCmQExMrKKikl9Q3putp1UIIIAAAgkFcmSLv3EIQggggEBSAmEXzNiIGVvwt2f7pn6PtIyY2XvwBM8sBBBAAAEEnEBsrJSCjf7QQgABBBAIE4HC+bKHSUtpJgIIpEUg7IIZW2Pm223bNSm6q3NLbo0ZHy5TmdLyNONaBBBAAAEEEEAAAQTCT4CpTOHX57QYgdQIhF0w88+uTL1UuWIZvTRlnt5e9bF/V6bpc97RqrUb3a5Nf//6GavTp2P0znufuu2yl78erYjICGWJ+ntY4u97j6XGnWsQQAABBBBAAAEEEEDA4wIEMx7vYJqHQIAEwi6YsaBlzLQFmjBjkSPMlTOHJkV3UbVK5dy/o8fN1pzFa7Rh2QT37x9+2qEGLXvF476z9g0a3LMVwUyAnoQUgwACCCCAAAIIIICAFwUIZrzYq7QJgcALhF0w4yM8fuKk9u0/qBLFCisyMvULNTJiJvBPSkpEAAEEEEAAAQQQQMALAgQzXuhF2oBA+guEbTATKFqCmUBJUg4CCCCAAAIIIIAAAt4SIJjxVn/SGgTSS4BgJo2yBDNpBORyBBBAAAEEEEAAAQQ8KkAw49GOpVkIBFiAYCaNoAQzaQTkcgQQQAABBBBAAAEEPCpAMOPRjqVZCARYgGAmjaAEM2kE5HIEEEAAAQQQQAABBDwqQDDj0Y6lWQgEWIBgJo2gBDNpBORyBBBAAAEEEEAAAQQ8KkAw49GOpVkIBFiAYCaFoIcOH9XpmBgVzJ833hUEMykE5DQEEEAAAQQQQAABBMJMgGAmzDqc5iKQSgGCmWTgjh47rh4vTNTqjza5M6tcUVajX2ivIoXyu38TzKTymcdlCCCAAAIIIIAAAgh4XIBgxuMdTPMQCJAAwUwykFNeX6q5i9do5uheypkjm558eoRKlyqp/t0fIZgJ0JOQYhBAAAEEEEAAAQQQ8KIAwYwXe5U2IRB4AYKZZEzve7yP6tSsrscfqu/OXL7mU3XuO06b35umiIgIRswE/jkZMiVu/kZauixKRw5HKCJKKlk8Vs2axChX7pBpAhVFAAEEEEAAAQQQSEcBgpl0xKVoBDwkQDCTTGdWr9taL/R41IUzdnzz3c9q1Kqv1i0eq/x5cxPMeOjFcL5N6fdClGLORMS7rHTpWLV8OOZ8i+J8BBBAAAEEEEAAAQ8KEMx4sFNpEgLpIEAwcw7U2NhYVbq1pcYN6qRbrq/qztz28w7d1aKXVr4xTCWLF06HLqHIUBD4dYfU78VTiaqaM4c0ekjWUGgCdUQAAQQQQAABBBBAAAEEEMgEAgQzyXSCjZgZ8PRjqn3LNe7MhCNmMkEfUoUgCBDMBAGdWyKAAAIIIIAAAggggAACHhQgmEmmU22NmdtvvVaPNannzmSNGQ++ClLZJKYypRKOyxBAAAEEEEAAgTARYCpTmHQ0zUQgjQIEM8kATn5tieYted/typQrZ3a17jGcXZnS+KTzyuUs/uuVnqQdCCCAAAIIIIBA+ggQzKSPK6Ui4DUBgplkevTI0ePq+vx4ffDxF+7MSuVLa/SADipWpID79+97j3ntOUF7EEAAAQQQQAABBBBAIAACBDMBQKQIBMJAgGAmhZ184NARnTp1WkUK5Y93BcFMCgE5DQEEEEAAAQQQQACBMBMgmAmzDqe5CKRSgGAmlXC+ywhm0gjI5QgggAACCCCAAAIIeFSAYMajHUuzEAiwAMFMGkEJZtIIyOUIIIAAAggggAACCHhUgGDGox1LsxAIsADBTBpBCWbSCMjlCCCAAAIIIIAAAgh4VIBgxqMdS7MQCLAAwUwaQQlm0gjI5QgggAACCCCAAAIIeFSAYMajHUuzEAiwAMFMgEEpDgEEEEAAAQQQQAABBBBAAAEEEEipAMFMSqU4DwEEEEAAAQQQQAABBBBAAAEEEAiwAMFMgEEpDgEEEEAAAQQQQAABBBBAAAEEEEipAMFMSqU4L+QFDhw6onUbNuv2W69VREREqtsTE3NGJ06eUq6c2VNdxk/bd2rX3r9Uo1rFeGWcOROrP/fsV/68udNUfqorxoUIIOAEYmNjtWffAeXMkV15cudMF5WPN36j4kUKqnSpkjp1OkYxMTHKkT1bkvdK7vF0qSCFIhDCAuf6e/rj9p3as/eArq1WIWRaePzESUVFRipr1iwhU2cqigACCCCQcgGCmZRbceb/C/y2c7fqNO6WyOPm66pq/OBO53Sya4dPnKMXe7dWlqioDDX9+tufdf8TffXFqqlpuvf6z77WY12j9dHCMSqQP0+q2jBj7nKtWfe5Xh7Rw11/6tRpTZy5WONnLPSXV+WKsurf7RFdVvrCFN2jx4CJeqxJPZUrfVGKzuckBEJV4HRMjKrWetRffXve2zHl9aVnbdLyWdH+960PF45Wwfx53bn2frT/wGH17/6I+/fhI8f00pR5en3BKn9Zl1xUXG2a3636/70+oGQPtxvoguKH7vmPxry8QKs+/J8WvPyCknqfjPt4QCtBYQh4TCAlf0+nv/GOPtzwlaYMTfxZJjNwvL/+C3215Ue1faShvzpN2w5QlYpl1P2pxpmhitQBAQQQQCDAAgQzAQYNh+J8wYx9oClRrJC/ybly5lDxogXPSbDl+1903+N99Pm7UzL8V59ABTP2xe2X3/5U+csuTnXAkzCYGTZhjmYvXK3hfdvo2moVte+vQ4oeN0trP/lKK98Ypvz5cif71LqyZgtNG/F0SP0CmGyjOAGBswjYl6/6zZ7RIw/W1X31a8pGxB04eNidvWTlei15d70mDOns/h0VFanIyEgXzBQqkFcN696kzk/c7x6z195fB/8JZix0/f2PPRrw9GO68vJLtXvfAb296mPZ+8fI59sGtD/iBjO79vylQ4ePqOylFyqp98m4jwe0EhSGgMcEUvL3NLMHM6/NX6l33vtUM0f39PeOjbTNmTO7ShT953OXx7qO5iCAAAJhLUAwE9bdn7rG+4KZd15/URdfUCxRIYPHvK4sWaK07eff9dkX3+rWG/6ldo/e4861UMa+dFQsd4kbktuzQ1NVKl9aL89+W7PeWqVDh4+p1k1X6Zm2D7kw4oefdujpgZN0R60aevXNd93IEvtClS1bVk2csUj7DxzSw/fVVqumd7p62DSjs5WVMJjZ9svvGjBypj7ZtEVlL7lAbR+5R7VvucaVc+jwUb04brb7YGRHtUqX6fKyF6tr6wdk1/UcOFmvj+vtvvAdO35S46a/pRXvb9DRY8dV/V8V9Ey7h1x48/zwV7Rz1z5Xhjn06viwm6YUN5ixEOamu9tpUM/HdVftG/2eNmz5vw90UeOG/1Gb5g3Ud+h01biqoureVsOd8966Ta5+Q3o94X71nzrrbV1UsqgK5MujhnfcpAcb3KaNX32nEZPmaesP23VRySLO6p47bnZtOFvbrf+sb7b9ssMFQ9dfc6WefqqJJr++RKs/3OSCn/aP3qvyZS929bA+jh43WzY0/L83X+3qW7lC6dQ9ubgKgfMQsKDFXvv31rs53lX2XjJrwSotemWg//9971v2erHRZe/NG6liRQrEC2Y+2rBZrboN1fyp/f3Pb18B9nq0aUYWAL04dpZWvP+Z8ubJ6UKhVk3ru5B28Yp1ev/jL9xrfNGKdapwWSn3i7dvyuL2Hbv0wsgZsvvYKJzdew+o4+P3uREzS1d9rP99+Z2e69QsyfdJq7/vcd/rf8TEue61fFXly9W7UzNdXubv0XKN2/R37zdWR3sfsveCNi3uVs4cSU+TOg9yTkUgUwuk9O+pBTMLl3+oKy6/1L1OLLB9rnNz3Vi9kmufjZh79c0V7jVqr9W2LRuq5g3/cn/vbUTd0pXr3ai7BxrcqnvuuMW9tuxvZ6kLi+vAocNat+FrNah9o+YuWaPenZu5zzl27N77l9r2fEnRz7WWjYqZ9sYy/bl7v7t/47tr6cnmDWTvE03bvuB+oPFd98qoZzRqyptuBK39DT/XZx3f5yYb4Wfvg3Y82vgO3X/XrZm676gcAgggEO4CBDPh/gxIRft9X3CaNKyl/Hn/mcpT6qJiLlh48ukR7st6x8fv1WWlL9LwCXNcoGCByoJla/XskKlu+LCFNxZ2WKDx4tjZ6tbmQZUsVkgvTXlTF5QorFH927uhvA8++bz+e/M1anRnTX3xzTaNnbbABTv2hez06Rh16z9eS2YMcus02Iegs5UVN5ixDzV1H+rufhFvfv/t+nTTFo2d/pbmTe7nyu45aLL7EmQfxuxD2bhX3nJhkNUpYcDT+8WX9dGGr9TukXvcuW8u/cB9EYqIjND3P/7myjt2/IT6RE9zH+zMIW4wY+GJ/XK+bvFY94Uu7tFv+Cvau/+Au6+dY6GMudthllaOTX34/qffdHfLZ90Q5yvKXeJGMtkaGXUf6uE+xN1zx036+dc/9PnXP6hn+6bnbLuv/zo/0UilLy6pPkOnuakVjz9U34U0ds+8eXJpcM9W7gOkOXZpfb9uqlFFy9/boPnLPtCqOcPTtI5PKp6WXBKGAqkJZux19tQzI1WxXCn16vBwvGDGpkLNf/sDvf3qkLNqdu8/wQWd9jre99dBDRr9uj9csS970eNnq+WDdfXvaytr2epP3PuFva/Y9Ku7mvdUoQL53GspW9Ys6jVkih5tXM8FM3HfE5J6n1z4zof+6Y/2xatBy16unJuvq+JC6w2fb9XyWUPd2lQ2es7C5tbNGrh/d+s/wY3Gs9coBwJeFkjp31Pfa7V1s7tUpWJZN2L1223btXruCG3a/L1s2pC9ZspccoE2bf7Bfdawv732A4n9uNTpiUbub1y/YdP1ZLMGurP2De6zzwcff6E6Na9V1SvLqnKFMpowY6EuuqCYC1ztsNf5vCXvu9DYAiH7HHTxBUX1645davfsKI0b1Mn9uDNi0hx9snGLC1ztsPC1fe9Rrq5PPHznOT/r+D433XZjNRfG/Pr7bg14aWaSnzG8/FygbQgggECoCRDMhFqPZYL6+oIZG9mSN3cuf43KlblILe6/3X04uapyOfelwQ4LKuyXJwsQkhqib7/u2i/LfTo3d+evXPs/deg9WusWjdX2HX+6YGbze9PchyA3IqVua82Z2FdXlr/Und/wkWfVrFEdNz3hXGVZvX1rzNgHHvtlfOWc4S4MssO+NNkXFxvdc3WdVhr4zONqUOfvESzjXlmorT/8kiiYOXUqRtfc3kov9HjU3T/hYb+Obfzqe+3as999CMuXN5fGDuwY70vY8jWfqnPfcfp6zfRE19u6EmvWf+6+2J0rmLELE05lsmvfWLRaHywYFS8k8Y0KSKrtFo4l7L+Rk+e54MfqbYeN1HnuxZe19q3RbqSQTRsZ1qeNe8w+vFp/vTnledenHAikp0BqgxkLTJt3GCQb9Tdn0Rr/VKb+I2bo1993aVJ01ySr7Xv/ie79pBvFZ4f9Sv7Jxm/c+1vC6RE29cCmW9l72Q8/71Cz9gP9IbJdG3cqU9xgJqn3ybiPj5r6ppau/Fi2bo4de/cf1M0N22vMwA669YZq7r3g1TG9VK1SOfe4jRAqUjC/C785EPCyQEr/niZ8rdpC37fc00HLXhuiHTv3uHXkJgzpouuvucI/ZdlGy9jfewt0bRStHRbk2oL99uOJ/e20kaQ2Cs53vPvBZ+r43Bh99s4kN6rGPmc0bljLjY6xY9vPO/TNd79o976/NG32Mj32UH01b1RHSU1leqrnSH8wcz6fm+w+Nir3+e6PuPcHDgQQQACBzClAMJM5+yVT1yq5qUwJv9jbB6XhE+e6LxFJfeGwDwz267Mv2Nj5517954EubjrByZOn4gUzNtKlSq1H9MbEPv4hvvbL1h21rnO/Zp2rLAsNfMHMouUfacSkuS5c8B02MsSmMHVq1Ui3N+ke7wvU2YIZ+5XLvnj5RuzE7Tj7tbzr8+PdL1326/x3P/6mHNmzug978UfMfK+H2w1wX94SriVjv87tO3Aw2REzdt+EwYx9GbPDpm7EPeyD5NnaPrzvU4mCmUmvLv57pNL/BzO2k8yjnV90QZJNM1u1dmOiaR82HNs3JDxTP5mpXEgLpDaYsZFpFswWLVzAjWDxrTGT3IgZX9BiI2psdJwdtpaNjWzbsGxComDG1oW59b6OWjV3uBuV13/ETHee70htMGOvOzts1JrvuK1RJxeG2xe+hMGM/Vp+OuaMP/wO6U6n8gicQ8B+CEnJ39Ok1pixH31e6PGIbrvxKg0a87reWLja3clGwNgIUt+6VjYKNu7uaTYlMqm/nXatfYa5sUE79e3awr1nPPBEP//IFQt1Z85bIRvZcsnFJdxaVg/fW9uNuEsumDmfz01Wjzua9lDblvf4A2WeRAgggAACmU+AYCbz9Ummr1FaghmbAnDvY89p44rJyp4tq2urjXi58drKbv0WO3y7HtkaEH/u3hcvmLHtLyvf1vKswcy5yrLRK75gZu0nX7p53nHDEAt4LEB5pl1T1aj3pIY+96Ruub6qq9PZgpkjR4/rhjuf0kv92+k/N10dr+/sl7Hbb6vh1oexw9a+sS9nCYMZWyfn3w3aJRp1Y7/O1X6wi5reW9sNXX6k0xDZzlctHrjdlRd3KpP9276MTR3eXddddYV7fOiEN/TB+i/irbNh/28jXs7WdvslMGGwNvm1JW4KVFLBjC2y+POvOzV6QIdM/7ylgt4TSEsw89XWn/Rg635uel7JYoXdrkz2vtC6x3D/lMa4YkePnXBfzG646yn3WrBpiXbYyLS3V3/spj8l/LIXN5ixX+TtS5kFM7ZQuh1nC2aSep+MG+bamk7rPtvsRunYYe9D197R2k29sC+RBDPee67TopQJpPTvacLX6h+796lWo87xFtA/cPCIvtyyza3hVv4y+2zwkPt7P3dSX7c2TcIj4d9O3+N2/eatP7n1Yey1aguL+0a52c6MvjWoWvcYphrVrnDBjK1xY0GNjXzzHXFHzJzP5ya7nmAmZc8fzkIAAQSCKUAwE0z9EL23L5ix4f4XFC/sb4Vvt4BzjZjxDQW2DyM2V9rWQXl51ttuXZKR/dqqeNFCbnFMWzDXPvzYh5m4U5mSC2bsS9LZyrLhwr5gxkbG1H6wmxrffZsbOvzZ51v987stjOk1eIqbZ26/QNv0hQkzFqla5XJJrjFjgY5Ns+rVoakuvbiEm2LwryvLqs/Q6bLpXZ1bNXJrtNjol4IF8iQKZgzQt4tEdO/W7ovivv0HNWjMa1r/2TdaOWeYW3vGwiELdiwE2rFzt1vb4vCRo/4vZxbcVK9WQY81qa+jR4+70UmPdnnRzW2/s/aN2rlrr9Zt2Oy2/D1X288nmPHN57df7uvWqiH7IGtDt6+pUj7F23yH6MuAagdZIOGuTLYQt+841+K/cddysjUbbMSXrcNkwYy9HzVrP8hNPezf/VFVrlhGu/fud4tsb/72J/f6t9d7ntw51KdzC7f4eKc+Y1X7lupunaVzBTNFCuXX9fWfcuvJNGn4H7d+lo188S3+Gzd4Sep9ct6SNf41ZnzhtQUxN1xTyY3As/eHNW+OdKOACGaC/OTk9kEVSMnfU3ut2jRc+yxio1rGv7LQrXdnI3ttfbmDh4+6kTNRkRFuXbw8eXK5v6X2d/bU6Ri92Lu17DVt69LY+Tb96GzBjG+knaHMHN3LTfW28q+v38b9IGPvH7Yun42wtR9yLJixv61PdB/uplbZe5st6t+210v+qUzn+qyT8HMTwUxQn47cHAEEEEixAMFMiqk40SfgC2YSithojvGDO7kPJ1dXuVyPNannTlm+ZoP7xcm3HoJ9oBg/Y6F7zBYBtkXyeg6a4r7Q22HDfUe/0N5tG+v7Vdu3xkxSwYz96mzrPdgQfgtRzlbWN9/9rEat+uqLVVPdnHHbEcE+CNk1dtgigLaArx3265ntvGK/XF9e5mKdiT2jHNmyuQ9jCcuxBXBtsWALcuywnZEmD+3m1qp4esBEt7OC/UJuc89t0VwzsuHL7320yX0otMO+ZE6cudjvYv9nuzHYL2v2K5sd9uGuc9+xbkqUlXd1lXLas++g+3XfDvuC2XfYNHc/W4zQdoOZPucdt2OS7/C18VxtT9h/CUfM2C5WNuLGNyXDpkZZSORztP6zbYptdwoOBNJDwBbSrVrrUX/R9l5jUxB9x7mCmfVLxilfnr/XxvItmu0LZuz//jpwWMMmznFrR/gOe063aX63CzXtdWhrYNluSHbYyBkLJu21ba83Cz99a9TYKL2a93Z0C4oWL1rQ/Qpu04rssB2UbIcnC1JtGmbC94SE75O2Rk3c9wx7D7Vz7LD3A6uDrftlR1LBTMyZWP8CpOnRJ5SJQGYRSMnfU3utjp32lv/vlr2GbCSc7Tr48f++cT/U+P6m2bTcvl1a6IISRdwOSn2HTXeL/PoOG9FqOxUm/NsZ18M+p9hC/ktnDvav+WY7KdpnIztsse4TJ0+5zzE2Ktbe49r2HOl2RrTD1qjp3n+8C4tt44NzfdZJ+LnJrrcRM/b5xrerY2bpK+qBAAIIIPCPAMEMz4agCNgvwidPnYq3C5F9STl+/KT7ApPWI6Vl2Zo1FsLYOhNxt5K1D0UW3thhYZANMf5XpXL+aUlJ1e/wkWM6eeq02/bSd1g5tmZOiWKFlTXL3+Wd67B7/bFrr/Lny6Pcuf6e7pDwsPraL3W++sV93Npjv+IXLpjP/+HP/s+GTRfIl9vtLOU7ztb25OqY1OM20sDukTVrlkQ7S6WmPK5BINgC9vqwBTktkC2Q/5/d53z1smlK2bNnPe/nu32hOnT4WIre55J6n4zrYlt42xQp24UtqfeDYBtyfwSCKZCSv6c2RdECk5LFC8d7Dfn+pllgYzubJTzstWcjRAsXypem155NbbLRM75NCBLexz7LZMua9axb3af0s04w+4F7I4AAAgikTIBgJmVOnBVmArYI6NKV690W3PYLuX35scWIbZoABwIIIIAAAggggAACCCCAAAKBEiCYCZQk5XhKwEalbNi0VYeOHFPRwvl1/dVXKk/unJ5qI41BAAEEEEAAAQQQQAABBBAIvgDBTPD7gBoggAACCCCAAAIIIIAAAggggECYChDMhGnH02wEEEAAAQQQQAABBBBAAAEEEAi+AMFM8PuAGiCAAAIIIIAAAggggAACCCCAQJgKEMyEacfTbAQQQAABBBBAAAEEEEAAAQQQCL4AwUzw+0DxaRcAAAwdSURBVIAaIIAAAggggAACCCCAAAIIIIBAmAoQzIRpx9NsBBBAAAEEEEAAAQQQQAABBBAIvgDBTPD7gBoggAACCCCAAAIIIIAAAggggECYChDMhGnH02wEEEAAAQQQQAABBBBAAAEEEAi+AMFM8PuAGiCAAAIIIIAAAggggAACCCCAQJgKEMyEacfTbAQQQAABBBBAAAEEEEAAAQQQCL4AwUzw+4AaIIAAAggggAACCCCAAAIIIIBAmAoQzIRpx9NsBBBAAAEEEEAAAQQQQAABBBAIvgDBTPD7gBoggAACCCCAAAIIIIAAAggggECYChDMhGnH02wEEEDA6wK79vylTzZ+oz/37Fe+vLlVslghXV3lcuXKmSPZph87flKPdB6iti0b6sbqlZI9nxMQQAABBBBAAAEEEEitAMFMauW4DgEEEEAg0wq8veoTdes/3tXvopJF9dvO3f66LnttiEpdWPycdT90+Kiuq99G0b2f1B21amTadlIxBBBAAAEEEEAAgdAXIJgJ/T6kBQgggAACcQT+3L1ftzXq5Ea6DOrZSoUL5lNMzBl99+OvGjNtgbq2fkClS5UkmOFZgwACCCCAAAIIIJApBAhmMkU3UAkEEEAAgUAJrP3kK7XuMUwj+rVV7VuuOWex6z/7WpNfW6Kvtv6kooXz6/qrr1TbRxoqS1SUGzHzVMuG+vGX3/X++i9U4bJSevi+2vHK/OW3PzV0/Gx9vHGLcmTPqptqVFHXJx9UoQJ5ZdOhHu8arTtqXafPvtgqq5dNp+rS+gEVKZRfL02Zp02bf9D111yhRxvXU9Uryrq6/rF7n54eMEnbft6hfX8dUvGiBXVX7RtdXbJmiXLnfPHNNo2dtsBdb/etVKGMWje7y19GoCwpBwEEEEAAAQQQQCD9BQhm0t+YOyCAAAIIZKDA0WMnVL3uE6pY7hJ1eeJ+/atSOeXMkS1RDSxsafPMCF1e5iI92OA2HTpyTK/MeUdjBnZUmVIlXTBjR71a16la5XJ6f/3nLlxZv2Sc8uXJJVvD5tb7Ouqqypfr/jtrat+BQ5ry2hJdWf5STRjSRb7pUFbGnbVvcKHJohXr9OU321y599W/ReXLltLcxe+5ET2LXhno/n/7jj81cvI81ahWUYUK5tP3P+1wIUzHx+/T4w/V1/4Dh/TvBu1U/V8V1Pju23Tk6HGteH+DrqlaQY81qZeB0twKAQQQQAABBBBAIBACBDOBUKQMBBBAAIFMJbBoxUeKHjfbjTixo+wlF+i2f1+lFvffrgL587j/u6t5T504eUrLZ0X763702HHFxkpnzpxxwUyvDg+rScNa7nEr66a722l436dUp2Z1V/6cxWv0/vyR/gWFZy9crf4jZuiDBaOULWuWRGXYSJcmbfrHW7tm7SdfqnWP4Vo1d7hKFC0Uz9FCFwtibARNntw5XODjK2N43zaqU/Na//k2QiepACpTdQyVQQABBBBAAAEEEEgkQDDDkwIBBBBAwJMCx0+cdKNctny/XZ9//YM2fL7VBShLZw5W/ny5dVXtx9W8UR11f6pxovafbfHfK2u2ULc2D7qAp0XHwa5MG5njO+w6W2h47qS+uviCYokWEP719126vUl3F7DcVKOyu+yb735Wo1Z9NWtcb1W5oqxOx8S46VVzF6+RrZfjO2xkzszRPXXq1Gm3ho4FRbVuukr/uvIy1b21hkoWL+zJfqRRCCCAAAIIIICA1wUIZrzew7QPAQQQQMAJ+Nae6d2pmer/53rVqPekW0/myWYNUhXMPPBEP0VGRapN88TXV73yMkVIiYKZ3//Yo/8+2DVeMLP1h+2697Hn/MHMqKlvauLMxer8xP1uzZoSxQpp4KhXtWPnHhfM2HHg0BG9Nn+lPt20xYVDdowZ2EG33lCN3kYAAQQQQAABBBAIMQGCmRDrMKqLAAIIIHBuge9/+s2NjLmwRJF4J3677Vfd82hvdWl9vx558A43LemC4kX0xsQ+8c47cyZWR44eS3K77LgjZnoNnqL1//taS2cOiTeFKDY2VhEREf41ZuJuuZ2SYMYCHxvRMym6q79ePQdN1q+/73bBjK1HExUV6X/swMEjatzmeTdda/SADjw9EEAAAQQQQAABBEJMgGAmxDqM6iKAAAIInFtgwbK1enbIVDVrVEfXVqug4kUKykalvL5glbZ8/4uWvTZEpS4srqmz3tbwiXPUqH5N3Vv/Fp04cdIt/vvYQ/X9i//GDVXsrnGDGSvrvsf76ObrqrodkfLkzunuM232Mk0Z2s2FJ7ZOzfkGM8MmzJGtVTO4ZysVKZxfH3z8hSbMWOQWGbZgZs26zzV74So1b3S7Li1VUr/89oce7fyiWj5Y120FzoEAAggggAACCCAQWgIEM6HVX9QWAQQQQCAZAdtm2qYCLV31cbwzbf2Wp9s28W8pfep0jCbOWKTxMxb6z6tUvrRG9HtK+fLmdlOdkgpmbE0aW5vGDlu494WRM926Mr7D1o4Z0a+dYmJiEpWx88+9+s8DXdxomBurV3KX+EbyzB7/nCpXLKMdf+xxi/1u/Oo797jV+0zMGeXMmV3TRz6t7378TV37jdO2X353j9vW3LX+fbW6P/WgfxFiniQIIIAAAggggAACoSNAMBM6fUVNEUAAAQTOQ8CmJO3766DbTrpYkYJn3bHIpgbt2rNfuXPndNtgp+awNV8OHzmmooXyK1u2rKkpItE1FuJERkaqeNGCSZZnCw3bfW3Klk2d4kAAAQQQQAABBBAITQGCmdDsN2qNAAIIIIAAAggggAACCCCAAAIeECCY8UAn0gQEEEAAAQQQQAABBBBAAAEEEAhNAYKZ0Ow3ao0AAggggAACCCCAAAIIIIAAAh4QIJjxQCfSBAQQQAABBBBAAAEEEEAAAQQQCE0BgpnQ7DdqjQACCCCAAAIIIIAAAggggAACHhAgmPFAJ9IEBBBAAAEEEEAAAQQQQAABBBAITQGCmdDsN2qNAAIIIIAAAggggAACCCCAAAIeECCY8UAn0gQEEEAAAQQQQAABBBBAAAEEEAhNAYKZ0Ow3ao0AAggggAACCCCAAAIIIIAAAh4QIJjxQCfSBAQQQAABBBBAAAEEEEAAAQQQCE0BgpnQ7DdqjQACCCCAAAIIIIAAAggggAACHhAgmPFAJ9IEBBBAAAEEEEAAAQQQQAABBBAITQGCmdDsN2qNAAIIIIAAAggggAACCCCAAAIeECCY8UAn0gQEEEAAAQQQQAABBBBAAAEEEAhNAYKZ0Ow3ao0AAggggAACCCCAAAIIIIAAAh4QIJjxQCfSBAQQQAABBBBAAAEEEEAAAQQQCE0BgpnQ7DdqjQACCCCAAAIIIIAAAggggAACHhAgmPFAJ9IEBBBAAAEEEEAAAQQQQAABBBAITQGCmdDsN2qNAAIIIIAAAggggAACCCCAAAIeECCY8UAn0gQEEEAAAQQQQAABBBBAAAEEEAhNAYKZ0Ow3ao0AAggggAACCCCAAAIIIIAAAh4QIJjxQCfSBAQQQAABBBBAAAEEEEAAAQQQCE0BgpnQ7DdqjQACCCCAAAIIIIAAAggggAACHhAgmPFAJ9IEBBBAAAEEEEAAAQQQQAABBBAITQGCmdDsN2qNAAIIIIAAAggggAACCCCAAAIeECCY8UAn0gQEEEAAAQQQQAABBBBAAAEEEAhNAYKZ0Ow3ao0AAggggAACCCCAAAIIIIAAAh4QIJjxQCfSBAQQQAABBBBAAAEEEEAAAQQQCE0BgpnQ7DdqjQACCCCAAAIIIIAAAggggAACHhAgmPFAJ9IEBBBAAAEEEEAAAQQQQAABBBAITQGCmdDsN2qNAAIIIIAAAggggAACCCCAAAIeECCY8UAn0gQEEEAAAQQQQAABBBBAAAEEEAhNAYKZ0Ow3ao0AAggggAACCCCAAAIIIIAAAh4QIJjxQCfSBAQQQAABBBBAAAEEEEAAAQQQCE0BgpnQ7DdqjQACCCCAAAIIIIAAAggggAACHhAgmPFAJ9IEBBBAAAEEEEAAAQQQQAABBBAITQGCmdDsN2qNAAIIIIAAAggggAACCCCAAAIeECCY8UAn0gQEEEAAAQQQQAABBBBAAAEEEAhNAYKZ0Ow3ao0AAggggAACCCCAAAIIIIAAAh4Q+D9vw3aIMdsi1wAAAABJRU5ErkJggg==", + "text/html": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - [ - 0.5555555555555556, - "#d8576b" + "source": [ + "### comment out langfuse code \n", + "# px.box(\n", + "# results, \n", + "# y='precision',\n", + "# x='Schema',\n", + "# color='Schema (counts)',\n", + "# title='Precision of LLM Partial Extraction Completions', \n", + "# boxmode='overlay',\n", + "# width=700,\n", + "# ).update_layout(\n", + "# xaxis_title='Schemas',\n", + "# yaxis_dtick=0.1,\n", + "# # showlegend=False,\n", + "# )" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21b11403-7b51-4c49-9b2d-febbf8953554", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "Schema=EntomologicalOutcome
N values=%{x}
latencies=%{y}", + "legendgroup": "EntomologicalOutcome", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "EntomologicalOutcome", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + 18, + 18, + 36, + 36, + 72, + 72, + 27, + 27, + 84, + 84, + 72, + 72, + 60, + 60, + 36, + 36, + 24, + 24, + 36, + 36, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 66, + 66, + 66, + 66, + 66, + 66, + 66, + 66, + 69, + 69, + 88, + 88, + 6, + 6, + 6, + 6, + 6, + 6, + 12, + 12, + 18, + 18, + 6, + 6, + 40, + 40, + 12, + 12, + 12, + 12, + 12, + 12, + 3, + 3, + 3, + 3, + 6, + 6, + 3, + 3, + 18, + 18, + 18, + 18, + 18, + 18, + 9, + 9, + 3, + 3, + 3, + 3, + 72, + 72, + 12, + 12, + 27, + 27, + 15, + 15, + 9, + 9, + 7, + 7, + 4, + 4, + 3, + 3, + 21, + 21, + 21, + 21, + 28, + 28, + 21, + 21, + 5, + 5, + 3, + 3, + 3, + 3, + 6, + 6, + 3, + 3, + 3, + 3, + 30, + 30, + 27, + 27, + 27, + 27, + 24, + 24, + 4, + 4, + 36, + 36, + 36, + 36, + 18, + 18, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 120, + 120, + 72, + 72, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 18, + 18, + 9, + 9, + 72, + 72, + 72, + 72, + 3, + 3, + 3, + 3, + 3, + 3, + 42, + 42, + 6, + 6, + 28, + 28, + 3, + 3, + 3, + 3, + 3, + 3, + 60, + 60, + 30, + 30, + 40, + 40, + 72, + 72, + 3, + 3, + 15, + 15, + 60, + 60, + 72, + 72 + ], + "xaxis": "x", + "y": [ + 3.445, + 3.651, + 5.231, + 5.489, + 8.477, + 8.728, + 3.5, + 3.747, + 8.494, + 8.78, + 8.625, + 8.807, + 8.996, + 9.242, + 5.716, + 6.008, + 4.284, + 4.531, + 5.674, + 5.882, + 1.084, + 1.297, + 1.146, + 1.311, + 1.208, + 1.445, + 1.2, + 1.437, + 1.089, + 1.324, + 1.987, + 2.174, + 1.2, + 1.367, + 1.175, + 1.382, + 9.427, + 9.676, + 9.104, + 9.394, + 12.654, + 12.921, + 15.391, + 15.676, + 9.685, + 9.976, + 9.792, + 10.049, + 1.521, + 1.711, + 1.628, + 1.835, + 1.863, + 2.091, + 1.72, + 1.925, + 2.487, + 2.717, + 1.211, + 1.357, + 6.375, + 6.612, + 2.198, + 2.348, + 3.037, + 3.26, + 3.137, + 3.301, + 0.943, + 1.16, + 1.089, + 1.277, + 1.256, + 1.7, + 1.203, + 1.397, + 3.787, + 3.977, + 3.234, + 3.416, + 3.435, + 3.652, + 2.113, + 2.448, + 0.867, + 1.078, + 1.009, + 1.209, + 13.302, + 13.525, + 2.897, + 3.069, + 3.452, + 3.686, + 2.25, + 2.446, + 1.724, + 1.959, + 1.459, + 1.659, + 0.977, + 1.201, + 0.966, + 1.192, + 2.517, + 2.708, + 3.594, + 3.791, + 3.382, + 3.563, + 3.097, + 3.329, + 0.889, + 1.059, + 2.221, + 2.454, + 1.063, + 1.266, + 1.597, + 1.823, + 1.101, + 1.338, + 0.855, + 1.064, + 7.387, + 7.658, + 4.459, + 4.684, + 3.989, + 4.231, + 3.669, + 3.835, + 1.371, + 1.589, + 4.404, + 4.624, + 4.727, + 4.923, + 2.437, + 2.64, + 2.02, + 2.166, + 2.319, + 2.54, + 5.221, + 5.436, + 2.112, + 2.277, + 1.867, + 2.038, + 1.884, + 2.104, + 12.161, + 12.485, + 8.528, + 8.844, + 2.171, + 2.375, + 1.789, + 2.043, + 1.855, + 2.069, + 1.631, + 1.869, + 2.709, + 2.942, + 1.964, + 2.137, + 2.564, + 2.759, + 2.216, + 2.399, + 1.656, + 1.861, + 17.407, + 17.724, + 10.474, + 10.816, + 1.132, + 1.316, + 0.885, + 1.2, + 0.909, + 1.094, + 5.468, + 5.748, + 1.116, + 1.32, + 3.149, + 3.357, + 0.987, + 1.222, + 0.705, + 1.074, + 0.698, + 0.883, + 6.556, + 6.778, + 3.185, + 3.383, + 5.732, + 5.943, + 6.886, + 7.162, + 0.791, + 1.019, + 1.811, + 2.003, + 5.652, + 5.923, + 8.337, + 8.571 + ], + "yaxis": "y" + }, + { + "hovertemplate": "Schema=Observation
N values=%{x}
latencies=%{y}", + "legendgroup": "Observation", + "marker": { + "color": "#EF553B", + "symbol": "circle" + }, + "mode": "markers", + "name": "Observation", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + 10, + 10, + 2, + 2, + 6, + 6, + 6, + 6, + 5, + 5, + 20, + 20, + 15, + 15, + 15, + 15, + 6, + 6, + 6, + 6, + 6, + 6, + 4, + 4, + 4, + 4 + ], + "xaxis": "x", + "y": [ + 1.279, + 1.46, + 1.208, + 1.42, + 1.079, + 1.223, + 1.186, + 1.337, + 1.048, + 1.206, + 2.46, + 2.625, + 4.65, + 4.871, + 2.033, + 2.226, + 0.974, + 1.182, + 0.665, + 0.814, + 0.777, + 0.922, + 0.582, + 1.004, + 0.587, + 0.734 + ], + "yaxis": "y" + }, + { + "hovertemplate": "Schema=ITNCondition
N values=%{x}
latencies=%{y}", + "legendgroup": "ITNCondition", + "marker": { + "color": "#00cc96", + "symbol": "circle" + }, + "mode": "markers", + "name": "ITNCondition", + "orientation": "v", + "showlegend": true, + "type": "scatter", + "x": [ + 3, + 3, + 2, + 2, + 12, + 12, + 2, + 2, + 8, + 8, + 8, + 8, + 9, + 9, + 10, + 10, + 2, + 2, + 8, + 8, + 2, + 2, + 10, + 10, + 20, + 20, + 10, + 10, + 10, + 10, + 38, + 38, + 12, + 12, + 12, + 12, + 10, + 10, + 42, + 42, + 40, + 40, + 10, + 10 + ], + "xaxis": "x", + "y": [ + 1.8, + 1.954, + 0.822, + 1.107, + 2.151, + 2.298, + 0.61, + 0.76, + 1.095, + 1.269, + 1.457, + 1.886, + 1.389, + 1.653, + 1.122, + 1.328, + 0.598, + 0.75, + 1.037, + 1.507, + 0.597, + 0.802, + 1.934, + 2.132, + 1.741, + 1.957, + 1.014, + 1.197, + 3.924, + 4.144, + 2.694, + 2.887, + 1.05, + 1.243, + 1.295, + 1.497, + 0.834, + 0.992, + 4.896, + 5.168, + 1.894, + 2.107, + 0.751, + 0.922 + ], + "yaxis": "y" + } + ], + "layout": { + "height": 360, + "legend": { + "title": { + "text": "Schema" + }, + "tracegroupgap": 0 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "title": { + "text": "Latency v.s. number of values" + }, + "width": 700, + "xaxis": { + "anchor": "y", + "autorange": true, + "domain": [ + 0, + 1 + ], + "range": [ + -5.8956118833469615, + 127.89561188334696 + ], + "title": { + "text": "N values" + }, + "type": "linear" + }, + "yaxis": { + "anchor": "x", + "autorange": true, + "domain": [ + 0, + 1 + ], + "range": [ + -0.8326310679611651, + 19.138631067961164 + ], + "title": { + "text": "Latency (s)" + }, + "type": "linear" + } + } + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAABGYAAAFoCAYAAAAVe/0kAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQecTNfbx3+zxVpl9S56jRKECCJEJ6JFJ4gWPToheu+9C6K3ECVEjfLXQoggCKJEiV4Wu7bN+z6HmWy1s3dmd+7d+Z3P5/++yc495zz3+5xNMl/nPMdkNpvNYCMBEiABEiABEiABEiABEiABEiABEiABEohzAiaKmThnzglJgARIgARIgARIgARIgARIgARIgARIQBGgmOFCIAESIAESIAESIAESIAESIAESIAESIAEnEaCYcRJ4TksCJEACJEACJEACJEACJEACJEACJEACFDNcAyRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgJAIUM04Cz2lJgARIgARIgARIgARIgARIgARIgARIgGKGa4AESIAESIAESIAESIAESIAESIAESIAEnESAYsZJ4DktCZAACZAACZAACZAACZAACZAACZAACVDMcA2QAAmQAAmQAAmQAAmQAAmQAAmQAAmQgJMIUMw4CTynJQESIAESIAESIAESIAESIAESIAESIAGKGa4BEiABEiABEiABEiABEiABEiABEiABEnASAYoZJ4HntCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAMcM1QAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJOIkAx4yTwnJYESIAESIAESIAESIAESIAESIAESIAEKGa4BkiABEiABEiABEiABEiABEiABEiABEjASQQoZpwEntOSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAMUM1wAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJOIkAxYyTwHNaEiABEiABEiABEiABEiABEiABEiABEqCY4RogARIgARIgARIgARIgARIgARIgARIgAScRoJhxEnhOSwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIUM1wDJEACJEACJEACJEACJEACJEACJEACJOAkAhQzTgLPaUmABEiABEiABEiABEiABEiABEiABEiAYoZrgARIgARIgARIgARIgARIgARIgARIgAScRIBixkngOS0JkAAJkAAJkAAJkAAJkAAJkAAJkAAJUMxwDZAACZAACZAACZAACZAACZAACZAACZCAkwhQzDgJPKclARIgARIgARIgARIgARIgARIgARIgAYoZrgESIAESIAESIAESIAESIAESIAESIAEScBIBihkngee0JEACJEACJEACJEACJEACJEACJEACJEAxwzVAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAk4iQDHjJPCclgRIgARIgARIgARIgARIgARIgARIgAQoZrgGSIAESIAESIAESIAESIAESIAESIAESMBJBChmnASe05IACZAACZAACZAACZAACZAACZAACZAAxQzXAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAk4iQDFjJPAc1oSIAESIAESIAESIAESIAESIAESIAESoJjhGiABEiABEiABEiABEiABEiABEiABEiABJxGgmHESeE5LAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhQzXAMkYCOBf27fw64DJ1Dq/QLInzurjb2c/9jVG3dw+MQ53H/4BEkSe6Np3UpI5O0V64EFBQdj6bodyJopPSqWLRbr83ECEiABEiABEiABEiABEiABEjAiAZcQM1eu30atlgNQr8bHGNG3td15OnT8LI7+9ieafV4J6dOktHs8DmAMAgeP/YEO/SZjcI8WaFS7giGCPnryT7TpOT5MrHvXTUG6NCliPX4//wAUr9ZeSZnpI7rF+nycgARIgARIgARIgARIgARIgASMSMAlxMzlq7dQ+8uBqFPtI4zq39buPM3+fhNmLd6INfOGoGDe7HaPxwGMQcCIYqZV97E4/vsFLJzYByWK5sOLl/5Iksgb7u5usQ6dYibWEXMCEiABEiABEiABEiABEiCBeECAYkZDEilmNECzs4vZbIbJZLJzFNu6RzWXXsXM29iUqN4BeXO+g+UzB9r28g58imLGgTA5FAmQAAmQAAmQAAmQAAmQQLwlQDETKrWbdhzC+q37cevf+7h7/zEyZ0iD997NiTZNP1VfbqXJ5wtWbMXNO/dR+N2cSO6TRP28ce0KKFfqPfXXcnRq2sL1OHXmEh498UXRgrnRsWVtlClR0DrbuFmr1Bydv6yDWYt/hHzpl1btkw/Qt1NjJE2SKMyik+NTKzfuxh9/XoGnpwcK5MmGz6qUQYWPiqLH4Jnw8kqA8d92gJtbWHkxatoy3LzzAJOHdoZ3wgQRFrLUAZH+3gm9MO7bryLIj9HTV0Bqq0wa0inKuiR7Dp7Eqk17cPHyDTV+tncyqOMrwiShV8Q5o/ttOnfxGmYu3ogGNcvh1r8PIHk5f+k6cmbNiF4dGlk5yzgrN+5R7EZ/0xYpkiW1Di0/k886taqDQvle72qyMO/QohZmLt6AIyf+RMrkSdURt6+++Aynzl7C/OVbceL0RST08lQ/79qmHjzc3VV/i5jp06kx/PxfYee+4/jr75sqv/IzWSuhmy3rYOP2g9i5/wQGdf8C12/exS+HT6l3btmgGj4omi9KVCI9Zi/5EXv+95vqJzVvalctg2b1Kqs1IHntOnA6Dhw9jUTeCVH8vbxqrBoVSuKzKqXtWgevAgIwZvoKXLh8A3fuPcJLP3/kyZEZ9WuWQ8NaFeDp8ZpXZGImJvmy9XcpICAQqzbtxbbdR/H3jTtImsRb8ahVpTSqlv8guuXGz0mABEiABEiABEiABEiABEjAqQQoZkLhHzBmgZIA8kU7beoUuHPvoRIh8sV285JRyJAulSpmKmJGhIuIG4tAadfsU/UlUL7Ut/x6jBq1WKE8SJzICwePnVF/P2t0d5QvXUT9daOvhuHsxavW2eVIlHyplC+54WvhLF69HRPnrlHPfvzhe3jy7LmKS9q5fUvQb9Q8bN11RB1XKVW8gHVMS22dCmWKYsaor6NcaD2HzsaOfb9i2YwBKmZLE/lUtUkfJZTmT+gdaX+ZV+YXRqWKvwv5kvzbH5fUe+xcPRGZ0qeO8QK3CBBLR6mHIsdv5H2kbV8xHlkypVV/PWzy91i7+RfsWTc5TL2ftVv2YdikJZg9podV5ETG3JKDkkXz49ip82pMyYXl58JN+EkLH5fkX44EiRiRtvn70UoeSbN1HUyZvw4LV/6kJJ8lp9JfaiHJOoisBQYFo3nnkSpGESJ5c2VRElDyZTmuJ8806ThcCS1plmLFDT8rj4a1Pol0XFvXwY1bd1G9WT9Vp0bGFQYiuSTnrRvXQK8ODdX4kYmZmOTLVoZDJi5WwlTiKV44L27ffagkm/y91NNhIwESIAESIAESIAESIAESIAE9E6CYCZUdESPpUqdA4kQJrT8VESM7LYb0bGn9QhvVUSbZpVCv9SAlEETk5MyWSY0jt+LUbPGN+hK9cdFI9TOLJJDdG22b1lS7WR4+foZqTfuqL7h/7FmkvvBavgSLBFgytb+SQ9Ju//sA0xdtwNgB7XHyzF/4outoJYYmD+1kjX3C7NVYsvZnJVVC79YJvyCPnDiHtr0nRBBC85dvwbSFP2Dq8C6o/HHxSNdxk04jlFDYunQMsmfJYP1CvmbzXrWDI/QuFlt/ESwCRCTHiH5trDtRZIfIrCU/qi/+IgCkxeSLvoV55y/rok2TGvBK4AlL/SEZq0vrumpc+fnFK/+gXptBaFavEgZ0a67mssQl4mZ439bWXVSLVm/DpLlr0aBmeQzt3UrtVrF1HVjEjIitPh0b4cP334VXggQqhuTJXu/GCt9EQoiMEMEyqHsLtUNGJEjH/pNVPZmVswdZmRUo30rJNpFu0TVb14HMdevOfeTK/np9S3vq+wI1v+gP/1eBOL59rnUdhC/+a2u+bGUovytyXEskzM8rxiNBAk81970HT7B55yG0bfppdK/Nz0mABEiABEiABEiABEiABEjAqQQoZiLBf+fuQ1z75188ePQUl67exHertuHLxtXRu0Mj9XRUYubMhato3GGY+sL87ddfhBlZdtHIn+Kf2rlAfXkUSSAiyPIl1vJwz6GzsGPfcez7YSrSpEoOy5f+MQPaoVaVMpEuFqkx8ukX/dXOjf0bpiF1ymTqi/rHdbupozqywyT8EafQAwUHh6By417qaJXEI5IgJMSM6s36qp1BhzfPVMenImsihEQMhd6ZYu+KjqqWi0WWNK1bEQPf8LX1i77EFBXzCg16IDAwCAd/nBEm9LJ1uqodUduWj1M/jyou/1cBeL9qe7WDaseqCYjJOrCImVWzB6ldM7a09n0mQo62WXJt6WO5gUmkU8+vXu9aiYmYiek6kPe+fO0W7t57jEdPn2HZup1KSh7eMgvJkia2a8eMrQxF4IiYkXW+YtYg604qWzjyGRIgARIgARIgARIgARIgARLQAwGKmVBZuHLtFvqNmm89/hE6QS0bVEXfzk3Uj6ISM9v2HEOfEXPemtddqyciY/rUUUoCi2iwPDdo/CJs2HYgzDGZyCZY9eMejJy6TH0hly/mW3YeRv/R8zGgWzNVdyS6ZtkdIztwpAbJyTOX8EXXUWrHQY/2DaLs/sNPBzB4wiL1edbM6fB+4bz4pExRfFK6iOZivVEJEKlnUqlhT1XLZFjvL9WcjhAzdVt/q+rwhJdkNZr3g+/zl1Zh87bivzKG1Js5s3cxfv7lV5vXgUXM/Lh4JHJnzxxdmtTnUYkkEYnl6n0d5nrqmIgZGduWdSACZ97yLepmssjaoU0z1W4fe44yxeR3yXKUT2IRuVW0QC61hi3Ht2yCyodIgARIgARIgARIgARIgARIwEkEKGbegH/y9DnK1O6i/k4kjNRyyZwxDZ75vkCD9kPVz6ITM+u27sPQiUvUl0KpdRFZq1GxpNqREtXujRFTlmL1pr2wiJnew+dg+95jaieG7MiIqslRktKfdVZHOnatnqTq3MgOHcvuhejWl0V6lCiSTx2ZkveQ9wl9RCmqMeQIjNTdsdRokefkuM/yWd9aC8FGN3/oz6MSIHI85ZP63SMVM7vXTkaGtCmtw0RVYyayXUpRiZlaLQfg8VPfGImZs78sxvqf9tu8DrSIGdkhIgVuw9dPsayBsiULYe64XopFTMWMLetg5qKNmLN0k6qn065ZTeTOkVnt0ho/axV+2nMUtoiZ6PIVk98l2TUjx7vkf5aaOvLuoXe5xWT98VkSIAESIAESIAESIAESIAESiEsCFDNvaO/930l0/Xa6+qLZvV19aw4sNV4iEzOha3lIB8tRkk4ta0PqmLyt2SpmZFeC7NAJX9g3srEtRVBl18zkeWvVkSqpjWNr69h/irrFZ8N3I1R9FVtrk1jGl4KzUm9GZIO64Sia2jZRxRUTMTN8ylKs2bQ3gkCKSzEjO0g+rNlJiSEpAByTdaBFzFjq+pzcuUDVorG0yI56xVTMyFjRrQMRVqGPLFnmtxTPfpuYsTVfMWEYeh1JzRlZP7J7TB3De3OsytbfAT5HAiRAAiRAAiRAAiRAAiRAAnFNgGLmDXHLF/nOreqoK5YtTXaryK6V0GJGrvyVa6il0G7o63hld8VHtbuqHTGy00R2r1ia1GzZd/gUKnxUTP3IVjGz7/Dv6DxgKmQXxKzRPVRBYEvbe+iU9cYg+ZmlLofl8/ULhsXoOIdFTsnOHLnhZ/ygDvi04ofW+aQIstSzkeNNskNCmhw5qVyueJidMSs27Mbo6cvDHKOKrG9Uiz0mYkZ2bsgOjomDO6J6hZJqSDlCM2zyEnWcK/ytTLGxY8Zy7MZSKDgm60CLmJFCw1J7SI5zybEuSxPmwt5yHE1+rkXMRLcOZMeOCJCjW2dbbyV79vwlvuo7SYm5t4kZW/NlK0ORL3K9uvx+hG7dBk2HXOMe09+BuP4HMOcjARIgARIgARIgARIgARIgAZcSMyJKPiz2boSsZ0yXWskF2SUiUqVOtTJInzYVjv9+3nrVdWgxY6m/IuN92ag6XgUEokCebOqq6hUbdmH09BVqHDlKIddFy61M+4/8rmqQyPXWMREzIkLa9ByvjgnJlc7VK5aE7ND4afdRVXTXMp7lpeq3G6KOc8iV38tnDozRCpcCuKVrdVFfuiX+Axunq9uiLE2+5EsLfS20pfBqneofIUeWDLj17wPI9d5yO8/2FeOsAieyvo4QM3ILUavuY1W8rZtUh5/fK2zdfUQVMpYWG2JGxJUIkfRpUqqciiSR9sv6qUibOrn6a1vXgRYxI7d3SWFnaSISc2bLiKMnz6trw+V40YZFI+Dh7q4+1yJmolsHlmu1ZY1JPSGpbbN112G1Q0Xa28RMTPJlC0OpC1Wr1UD1u1GudBGkT5MC5y/dUEfrZMfX99O+eWvh6xj9gvBhEiABEiABEiABEiABEiABEogFAi4hZixf3qLiJ0VC5U/WpbaL1HixNBEv9WuWV0VOWzWshj6dGls/E/kgz8vOEmlyTbJclywiRYq/Tpiz2ioH5HNVV6b2J9abnaLaMSM7cWRHTugaHFI7ZOaiDernlibj1a3+kfUqZ8vPp3/3A+Yt24IJgzpC6tnEtE1dsF59qf2ifhX079I0THeLXNmydIySMNJk94ZwEJljaVIEWK5xFlFlaZH1jSo2uXFIbh4KfUW5PGupMRP+iJZFbljGk3mlkK5cdT53XE+ULVlYfRQVc5FZcqNV+OK/UntGpIPltiZLXPJ+8ryliaiZMqwz3s2TzfozW9eBhfemxaPCXD8dXd5ECPUbOVeJIUuTXSMj+7W1yjD5uXC31A2KbszQn79tHUgeug6chrMXr1q7yM4qYSUC8fDmWUjm89+tTHLVuly5bmm25ssWhlIbaviU79VNZqGbrAFZP+9kTBuT1+azJEACJEACJEACJEACJEACJBDnBFxCzMSEqhzJuHn7HrwTeiFr5vRv/dN2+eIoYiZJYm+kSJY0wjQiVO49eKw+S5XCR/MtRZaBpcip7AQx/f9OkLRpUlh3RYT+vErj3vB97odDm2aoa7njogkH2cUh/5Nri1OlSBbnuxTk6Mu/9x5Bdj+JFIjtJuvk1pvci5gxmSQrkTdHr4PQs4gMuf/wCTJlSAOfJIli+7Wt48vRvH9u31NCTgvzmOYrOoaW340XL/3VEUK5rpuNBEiABEiABEiABEiABEiABIxAgGLGCFmyMcad+0+gx5CZ6NiiNrq0fnvxYRuH5GMkQAIkQAIkQAIkQAIkQAIkQAIkQAKxSIBiJhbhxvXQltt6dq+ZhAzpUsX19JyPBEiABEiABEiABEiABEiABEiABEgghgQoZmIITK+PBwQEqqK3PkkTo1LZ9/UaJuMiARIgARIgARIgARIgARIgARIgARIIRYBihsuBBEiABEiABEiABEiABEiABEiABEiABJxEgGLGSeA5LQmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQzHANkAAJkAAJkAAJkAAJkAAJkAAJkAAJkICTCFDMOAk8pyUBEiABEiABEiABEiABEiABEiABEiABihmuARIgARIgARIgARIgARIgARIgARIgARJwEgGKGSeB57QkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQDHDNUACJEACJEACJEACJEACJEACJEACJEACTiJAMeMk8JyWBEiABEiABEiABEiABEiABEiABEiABChmuAZIgARIgARIgARIgARIgARIgARIgARIwEkEKGacBJ7TkgAJkAAJkAAJkAAJkAAJkAAJkAAJkADFDNcACZAACZAACZAACZAACZAACZAACZAACTiJAMWMk8BzWhIgARIgARIgARIgARIgARIgARIgARKgmOEaIAESIAESIAESIAESIAESIAESIAESIAEnEaCYcRJ4TksCJEACJEACJEACJEACJEACJEACJEACFDNcAyRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgJAIUM04Cz2lJgARIgARIgARIgARIgARIgARIgARIgGKGa4AESIAESIAESIAESIAESIAESIAESIAEnESAYsZJ4DktCZAACZAACZAACZAACZAACZAACZAACVDMcA2QAAmQAAmQAAmQAAmQAAmQAAmQAAmQgJMIUMw4CTynJQESIAESIAESIAESIAESIAESIAESIAGKGa4BEiABEiABEiABEiABEiABEiABEiABEnASAYoZJ4HntCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAMcM1QAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJOIkAx4yTwnJYESIAESIAESIAESIAESIAESIAESIAEKGa4BkiABEiABEiABEiABEiABEiABEiABEjASQQoZpwEntOSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAMUM1wAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJOIkAxYyTwHNaEiABEiABEiABEiABEiABEiABEiABEqCY4RogARIgARIgARIgARIgARIgARIgARIgAScRoJhxEnhOSwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIUM1wDJEACJEACJEACJEACJEACJEACJEACJOAkAhQzTgLPaUmABEiABEiABEiABEiABEiABEiABEiAYoZrgARIgARIgARIgARIgARIgARIgARIgAScRIBixkngOS0JkAAJkAAJkAAJkAAJkAAJkAAJkAAJUMxwDZAACZAACZAACZAACZAACZAACZAACZCAkwhQzDgJPKclARIgARIgARIgARIgARIgARIgARIgAYoZrgESIAESIAESIAESIAESIAESIAESIAEScBIBihkngee0JEACJEACJEACJEACJEACJEACJEACJEAxwzVAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAk4iQDHjJPCclgRIgARIgARIgARIgARIgARIgARIgAQoZrgGSIAESIAESIAESIAESIAESIAESIAESMBJBChmnASe05IACZAACZAACZAACZAACZAACZAACZAAxQzXAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAk4iQDFjJPAc1oSIAESIAESIAESIAESIAESIAESIAESoJjhGiABEiABEiABEiABEiABEiABEiABEiABJxGgmHESeE5LAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhQzdq6B2w/97BxBe3dPDzekSeaFwKAQ3H/6SvtA7Gk4AulSJFQ5DwkxGy52BqyNgJsJSJvCG/8+ct4/c7RFzl72EPDydENib088esZ/xtvD0Wh9k3p7ACYTfF8GGi10xmsHgZRJE+ClfxD8A0PsGIVdjUYgfUpv3HvsB6P9J13GVN5GQ814SUDXBChm7EyPM8WMh7sJaZMnRFCwGfee+Nv5JuxuJAIUM0bKlmNipZhxDEejjUIxY7SMOSZeihnHcDTaKBQzRsuYY+KlmHEMR45CAkYnQDFjZwYpZuwEyO6aCFDMaMJm6E4UM4ZOn+bgKWY0ozN0R4oZQ6dPc/AUM5rRGbojxYyh08fgScBhBChm7ERJMWMnQHbXRIBiRhM2Q3eimDF0+jQHTzGjGZ2hO1LMGDp9moOnmNGMztAdKWYMnT4GTwIOI0AxYydKihk7AbK7JgIUM5qwGboTxYyh06c5eIoZzegM3ZFixtDp0xw8xYxmdIbuSDFj6PQxeBJwGAGKGTtRUszYCZDdNRGgmNGEzdCdKGYMnT7NwVPMaEZn6I4UM4ZOn+bgKWY0ozN0R4oZQ6ePwZOAwwhQzNiJkmLGToDsrokAxYwmbIbuRDFj6PRpDp5iRjM6Q3ekmDF0+jQHTzGjGZ2hO1LMGDp9DJ4EHEaAYsZOlBQzdgJkd00EKGY0YTN0J4oZQ6dPc/AUM5rRGbojxYyh06c5eIoZzegM3ZFi5r/03XvwBMdO/om7Dx7DJ2liZEibEu8XzoNE3gmjzfGps5cwfvZqzBjZDalTJov2eT5AAnojQDFjZ0YoZuwEyO6aCFDMaMJm6E4UM4ZOn+bgKWY0ozN0R4oZQ6dPc/AUM5rRGbojxczr9G3bcwx9RsxRf505QxrcvHPfmtftK8YhS6Z0b83zwWN/oEO/ydi9drISOmwkYDQCFDN2Zoxixk6A7K6JAMWMJmyG7kQxY+j0aQ6eYsZ2dAGBwIP7QNKkr/9n5EYxY+TsaY+dYkY7OyP3pJgB7t5/jAoNeqBMiYIYM6A9UqXwQXBwCP76+x/MXLwRvTs0QvYsGShmjLzQGXu0BChmokX09gcoZuwEyO6aCFDMaMJm6E4UM4ZOn+bgKWZsQ3f0Vzfs3O2GoKDXz+fIbkbjhsFI6GVbf709RTGjt4zETTwUM3HDWW+zUMwAB4+dQYd+kzBlWBdUKVf8rSk6cuIcFqzYijMXriJNqmQo9X4BdGldF2cvXFU7Zkb2a4NNOw7h3MVr+KR0EbRsWA0F8mazjnn95l1MnLMaR0+eR0IvT5QtWRi9OzZGyuRJ4ecfgHa9J6BGxQ9x4vQFFZfsvunVoZE6HjVt4XqcOnsZpYq/izZNPsV77+ZU40pMk+athYz90s8feXJkxpeNq6NWlTJ6W26MR8cEKGbsTA7FjJ0A2V0TAYoZTdgM3YlixtDp0xw8xUz06J4/ByZN80BwcNhnq1YOQZlSIdEPoMMnKGZ0mJQ4CIliJg4g63AKihngpd8rlKj+FfLnzopeXzVEkYK54Z0wQYRs7T9yGp2+maLER+PaFeD7wg/fr/0ZM0d3xzPfF0rMSGvRoCreyZhWfZbcJwnWzBuifi41bD6p3x3FCuVBw8/K49FTXyxcsVWJm7njesH3+Ut8WLOTevazKqWVeNm88zD++POK+ln9muWQN2cWrNvyi9rRs/n70ernO/b9qkRPkQK5kNArAfYeOomtu45g2YyBKFYotw5XHUPSIwGKGTuzQjFjJ0B210SAYkYTNkN3opgxdPo0B08xEz26S5dNWLbSPcKDBQuY0fDzcLYm+uF08QTFjC7SEOdBUMzEOXJdTEgx8zoNm3cewoTZq/Hoia/6+5xZM6KzkUwbAAAgAElEQVTCR8XQqmE1JE+WRP2sVssBeBUQiB2rJlhzJztUzGbg5Jm/lJj5YeFw5MuVRX2+5+BJdBs0Hb+sn4q0qZOr8ddu2Yf9G6ZaCwqv3rQXI6YsxYGN05HA00OJmYFff4GmdSuqMU7/eQVNO43AhEEdUaNiSfUzSz2bPesmI32a/+rZmM1mPPN9iYdPnuGzFt+oI1iyc4aNBGwhQDFjC6W3PEMxYydAdtdEgGJGEzZDd6KYMXT6NAdPMRM9ujv/AnPme0R4sFgRM+rUopiJniCf0AsBihm9ZCJu46CY+Y+3/6sA7D/yO85fuoHfz13G8d8vKIHy07KxSOaTGMWqtEPLBlXRt3OTCEmKrPivHHdq3GEYVs8dgkL5sqNV97FqTNmZY2myS0YKDa+bP1TtshExE1rC/HP7Hqo17at21JQtWUh1+/Ova2jQfihWzR6Ewu/mxOOnvpg4Zw127j+hjjJZWucv66JTy9pxu6A4m2EJUMzYmTqKGTsBsrsmAhQzmrAZuhPFjKHTpzl4ipno0d27b8KM2W4wmUxhHi5SOAT16vAoU/QE+YReCFDM6CUTcRsHxUzUvC21Zwb1aIGalUqh5KcdVT2Zji0iyo7IxMz5S9dRv90Qq5hp9NUwuLm7RSpL3iuQC/JvkfBi5va/D1C5ce8wYubC5Rv4vO1gq5hp0mkEbt6+h/5dmykBlDplclRt0htN6laimInbXydDz0YxY2f6KGbsBMjumghQzGjCZuhOFDOGTp/m4Clmokd3/oIbVq5xg/ovagAmM2A2AfnzhqBpI4qZ6AnyCb0QoJjRSybiNg6KGeDS1ZtqZ0ym9KnDwL945R/UazMIvTo0ROvGNVC2TldkTJfaWjPG8nBIiBmHjksB4bDXZYcXMwPHLsSR387hp2XjwtSwkSNIIvctNWZC75iJTszkyJpRCaMe7RugbdNPrfFLrBQzcfu7ZPTZKGbszCDFjJ0A2V0TAYoZTdgM3YlixtDp0xw8xUz06B48NGH6rIg1ZsqWCUHlihQz0RPkE3ohQDGjl0zEbRwUM8DG7Qfx7bjvVNHeD4rmQ7rUKSC7UlZu3AORK9tXjEOWTOnw3aptmDxvLRrULI/Pa5bDq1cBqsBv22Y1rcV/d6+drG5SkhZezFj+/uMP30OHFrWQJLG3mmfx6u1YOLEP3N3dNO2YkV057m5u6vam4OBg/LDtALbvPQYeZYrb3yWjz0YxY2cGKWbsBMjumghQzGjCZuhOFDOGTp/m4ClmbEO35gd3nDv331Emb2+gY7tgJE9utm0AnT3F4r86S0gchUMxE0egdTYNxQxw5dotzFu2BT/tORomO1K/pX+XptZrqQODgjFv6WbMWbrJ+lzBvNkxZVhnXLl+W+2YCV2Q1yJi5FYmeU6aHHkaOXWZqitjaVI7ZsqwrkqqyO6X0Dtm7tx9iEqNemH+hN4oU6Kg6mLZybN6zmAUyp8Dh46fxfDJ31vHrFm5lLqVKapjVzpbggxHJwQoZuxMBMWMnQDZXRMBihlN2AzdiWLG0OnTHDzFjO3orl4z4fZtE3x8zMiVywzvhLb31duTFDN6y0jcxEMxEzec9TYLxcx/GZEjSY+ePMOLl/5ImzpFpFdmy9NyVfW9B4+ROLE3fJIk0pTSp74v8PyFH9KkTIYECTw1jRG6kxyHuvbPv0iZwgfJkia2ezwO4HoEKGbszDnFjJ0A2V0TAYoZTdgM3YlixtDp0xw8xYxmdIbuSDFj6PRpDp5iRjM6Q3ekmDF0+hg8CTiMAMWMnSgpZuwEyO6aCFDMaMJm6E4UM4ZOn+bgKWY0ozN0R4oZQ6dPc/AUM5rRGbojxYyh08fgScBhBChm7ERJMWMnQHbXRIBiRhM2Q3eimDF0+jQHTzGjGZ2hO1LMGDp9moOnmNGMztAdKWYMnT4GTwIOI0AxYydKihk7AbK7JgIUM5qwGboTxYyh06c5eIoZzegM3ZFixtDp0xw8xYxmdIbuSDFj6PQxeBJwGAGKGTtRUszYCZDdNRGgmNGEzdCdKGYMnT7NwVPMaEZn6I4UM4ZOn+bgKWY0ozN0R4oZQ6ePwZOAwwhQzNiJkmLGToDsrokAxYwmbIbuRDFj6PRpDp5iRjM6Q3ekmDF0+jQHTzGjGZ2hO1LMGDp9DJ4EHEaAYsZOlBQzdgJkd00EKGY0YTN0J4oZQ6dPc/AUM5rRGbojxYyh06c5eIoZzegM3ZFixtDpY/Ak4DACFDN2oqSYsRMgu2siQDGjCZuhO1HMGDp9moOnmNGMztAdKWYMnT7NwVPMaEZn6I4UM4ZOH4MnAYcRoJixEyXFjJ0A2V0TAYoZTdgM3YlixtDp0xw8xYxmdIbuSDFj6PRpDp5iRjM6Q3ekmDF0+nQZ/FPfFzh8/CyqffIBTCaT5hiDg0PwKiAQiby9NI9x9cYd3Hv4BCWL5g8zRkiIGXcfPEaypIntGl9zYDrsSDFjZ1IoZuwEyO6aCFDMaMJm6E4UM4ZOn+bg9SZmgoKBk6fccPUq4O5uQu7cIShc0Aw7/rtPM5v43JFiJj5nN+p3o5hxzbxTzOg37zfv3EfVJn0iBPjxh+9hztgebw1c+k6etxbjB3WAh7t7nL7kuYvX0PCroTi95zu75j5y4hza9p6AQ5tmInmyJJreYem6Hdh3+HcsmtJP9Q8MDMK8ZVswZ+km63iF382JEX1aI1f2TDbN0W/UPLRt+ilyZ89s0/NGeYhixs5MUczYCZDdNRGgmNGEzdCdKGYMnT7NwetNzGzZ6objJ93CvE+lCiH4+KMQze/IjhEJUMy45qqgmHHNvFPM2J/3gEDgzr9mJE9mQjIf+8ezjGARMwsn9kH6tCmtAyfyToh0aVK8daLzl66jfrsh+H3XQnh6ejguKBtGcpSYef7CD9dv3kXeXO9oFjzhxcykuWuxetNeTB7aCR8UzY9HT3wxYfYqHDx2BrvXTEIyn8TRvmGB8q2weEp/fFA0X7TPGukBihk7s0UxYydAdtdEgGJGEzZDd6KYMXT6NAevNzEzepwH/F+FfZ1Uqcz4unOw5ndkR4oZroHXBChmXHMlUMzYl/ddv4Tgh63BCAp6PU7+PCb06uwYEWIRMz+vHI93MqaNEOjYmSvh4eGOK9du48Tpi/ikdBF0bVNPPStSRuRM/txZ4e7mhgFfN0fBvNmxaPU2rPpxD3yf+6Fi2WL4pkszJSMuX72F/qPno0bFklj+wy61s6TnVw2RIIEn5i3djMdPffFF/Spo3/wzFYccM4pqrPBi5sr12xg1dRmOnTqPnFkzokvreqhSrrgaR44ULVm7HYtXb1eSpFTxAnj1KhDLZgyA9BswegFWzh4Ed3c3+PkHYPaSH7Fz/3G89PNHiSL58E3XZkreDJ/8Pe7ce6TGFA4Du3+hjimFFjMyftk6XTFmQDvUqlLGytP/VQAqN+qFJnUroVPL2hg6cQlKFsuP6hVKqmd+OXwKP//yK8YN/ErtQvpu1TZkzpAGyX2SoG6NsmhcuwJOnvkLU+avx4XLN5A5Q2rFql6Nj9U7RPXukj/JzZXrt5QYknfv37kpFqzcir3/O6XET7c2nyNvzndUHLf/fYAxM1bg6MnzeK9ATjSoWR5Vy5ewbwGH6k0xYydKihk7AbK7JgIUM5qwGboTxYyh06c5eD2JGV9fYMKUiP+x6+4GDPn2zX8Ra35TdgxNgDtmXHM9UMy4Zt4pZrTn/fFToM/gwAgDNKrrjsrlw+7u1DKLRcw0rVsRyZL+d5QnS+a0Six07D9FCZnu7T5HruyZMXnuWiUURKhs3H4Q3477DrLbRuRNnpzvKKExftZq9OnUGBnSpsS0hT8gY/pUmD6iG86c/xuNOw5H5Y+Lo8Fn5XH6zyuYtXijEjsiY4KCgtFnxBxsXToG2bNkwLqt+6IcK7SYEYFTvVlfFMiTDS0bVsOvp85j1pIfsX7BMDW2JU6JuXTxAti+95gSH+f2LUF4wTNo/CIcOn4GXVvXQ9bM6fDDTweUFDG5mXDp75tqPD//VxgyYTHKly6iOIQWMyJPvug6Goe3zFLSJnQbNvl7PHz8VLGQZ0TKCHdpEqOMs3HRSFy6ehN1vvwWfTs3wbu5s6qdTGazGdWb9VMipl6Nsrj2z7/4/dxlDOjW/K3vbslfz68aIPs7GTBk4mJIzts1q6kkjcyZNEkijB3QHoFBwajdagCKFMilpM/VG/+qfOxcPRGZ0qfWsrwi9KGYCYUkKDgYbiY3uMk3IBsbxYyNoPiYQwlQzDgUpyEGo5gxRJocHqSexIy83LBRHggOtzkmUSIz+vfmjhlHJp9ixpE0jTMWxYxxcuXISClmtNM89YcZs76L+AcDpT9wQ+tm9td1sYgZ2dmSNHEia6C5c2RGq4bVlJgpVii3+iIvTUTF8h92KoEQ2VGmJp1GIF+uLBjSs6V6fvfB3/D1oBk4vHkWbty6q8TM2V8Wq4K9akdK9Q5YO28oCuTNpp6v2/pbtGhQFXWrl8XbxpK4LTVmjp08j/Z9JmL32slKBkmr1XIAypYsrASRSJAsmdJiVP+26rNfT13Alz3GRhAzgYHBKF6tPUb2a6PmD9/uP3yCk2cu4d6Dx9i5/wR8kibCrNHdw4iZHft+Rc+hs9XY4dvMRRux78jvShi9TcxIv/BHmaTvms17cWDj9DDFjg8dP/vWdw+fv6kL1ivxI3FLk506g8cvwsEfZ+DoyT/Rpud4fD/tGyROlFB9Ljt7alf7yCqQtK/k1z0pZt4QlK1Zjb4aqoxkzcqlrFz3HDyJboOmR+B8cucCeCXwBMWMvUuQ/bUQoJjRQs3YfShmjJ0/rdHrScyE/H8ZmaGjPADzf28jfyn/rdq/N3fMaM1xZP0oZhxJ0zhjUcwYJ1eOjJRiRjvNi5fMmDAz4r9/qlV0Q/1ajhMzUR1lCv/FXsTD5HnrsGPVhEjFjBzjkV0kFrFx5+5DVGrUCxu+G4GAgMAwYkZ2uhSu2Bpr5g1RR6CkNe8yCjUqfqhEwNvGkt01FjGzecchTJm/TskFS5OdIb7PX2Ly0M5qnO7tGuDzTz9WH0clZv65dQ81W3xj3bETOmuyy6b38DkoVigP8ufOgr/+vomEXp6YO65XuB0zl/BF11FKRIWvJSOS49HTZ9HumJF5w4sZKQYsTY46hW4bth1467uHz9/85Vte71R6I2YsMkZEkowlO4aKFswdZo5PyhRFmyY1tC/iUD0pZgBMnLtGnauzJDS0mBGT+c3oBcrehW5iFsVmUsw4ZB1ykBgSoJiJIbB48DjFTDxIooZX0JOYkfClxoyfPyD7Ss3q/wCpU7PGjIbUvrULxYyjiRpjPIoZY+TJ0VFSzGgnKn9gMGRsIO7cDTvGgB4eyJHN9hMQUUUQXY2Zt4kZqXXyedvBsPxhvswhO17KfFAIvTs0UlNabj36Zf1U3L3/KIyYkdovhSp8GaWYedtYsnvFImYOHvsDXQZMCyNDRPCIQBn49RdKqGRImwq9OjRUMUUlZl689Efpzzpj2oiuqFT2/TDIZAdOtQolVX0YaVL7Ro5MhRczUifno9pdI+y6kQ0SVRr3QvPPq+CrLz5D6x7jIDdftWpUTY0X+iiT/L2Ime8m98WHxd5Vn8t3+QNHTmPz96PDxCU7Xt727uHzt2DFVnUEKjIxs//IacXqyNZZmgshR7fSKWYAPHn6HP4BAWjaaQR6tm8YZseMiJlhk5aEsYyhoVLMRLfE+HlsEKCYiQ2q+h6TYkbf+Ymt6PQmZngrU2xlOuy4FDNxw1lvs1DM6C0jcRMPxYx9nH2fA3sPBuP6P2akSGbChyXckDuH/VJGorKImfkTeiNjulTWQL29vZA+TcoIR5lC75gR2SBHf+Sa6ML5c6o6KItWbcOG7QcwdVgXpEuTEiOnLlUFc9fNH4qzF67GSMzI8Z2oxvrzr+tWMSM7Y6o07oMmdSqgbbOaOPH7BXT9djpmj+mBcqXew6YdhzBy6jJ0bFkLaVImx/frdqjdPpHVmBGhIxsTBn7dHNneSY+fdh9FkQI5MWTiEsjxrp7tGyhmsvslRfIkEcSMALTcyjRhUAdVx+XR42cYM3MFjpz4E7vXTlK1Z2Z/v0mJHZFAt+7cx5gZK/H8xUt1REyaiJsSRfOhbdOaePnSX8Xbptd4DO7RAp9VKYM79x7i8PGz6jv92949JmLmqe8LVGrYS+12kppC0o7/fhGBQUERRJXWFU0xE4qc3FMvxYzC75iRs3+1q5aBl1cCFH8vr6q+bLmP/v4Tf63s7e7n7mZCSh8vBAWb8dg33DUZdo/OAfRMQPL++HkAzCGhzhToOeD4Gptj/r1vEx0pYZfCJyEePnPeP3NsCpQPOZRAAg83JPTywLMXARHGlf/Ik/9AissWFAyc+M2EK3+b4OEB5MltRpHCEkdcRhH/50rk9brI8stXPCIW/7P93xv6JPKE/6tgBATbcP08//Ufb5ZGqmQJ8eiZP8wGy2ma5K/rbMTnZhEz4d9RdnPMGdtDiZn3C+dB26afqkd27Duubg2So0zSRJ7MWbpJ/bUUAZabfAaMWYhdB06on0kB3RkjuyFntkw4I2KmwzBrjZnIdsxI7RW5talJnYqqBk1UY/351zU0aD8Up/d8p76zWnZ7SB9pHVrUUt95pb0KCMT0hT+oeippU6dAnhzvqB0qx7fPRfhxbty6hwFjFuDU2Uuqr9yMtGBiH/xz+x76j5qnbnWSq8TlFiMpmiuMlq3fiV8OnVKCSprcNjVv2RYrF/mZHNWSGje5smdSz1y9cQc9h85SR6JkvPcL58aDR8+sJ1ik1MjQSYvVfB1b1EaX1nWxZO3PmDB7tTVVlnd827uHz1/4HTNyi5XsuBEW0uS9B45dqG6hkiaxSWFgqUHkiEYxE4piZGJGfknEfoq9u333IdZu/kWd65OtX9ICgmz4l6cjMhXJGPLfwZ4ebuq4f6AT44il1+OwbyHg6W5SQs5g/w6PfzmNywSYAE93N/6ux79V9NY3EuEhEl5+38O3oOAQeMiVSGzxjoBKq8mE4EjyHu9eli9kJeDhbkKI2Qw5nhFtowyNFpFRHpB/t8s/z+PyPykcwUb+4IAtegKycyYgMDDMLUSy+8LfPwDp0qSIfoBonrB1LKlZ8+/9R0iZ3AfeCRNYR5Wfy8U3lj/oETlx4Ogf6rrsqNrzF34ICAxCyuRJrY/IJTpSMyd92lTw9Ii+vo+Ip3/vPUQynyTWYrrh55N4U6dMFunRIYlbjkalSuFjjV1+9vDxMyT3SayuGbe0qN5dK3xhLoIp9Nxaxwrdj2ImFI3IxEx4yJbCPxYDyaNMjliGHCOmBHiUKabEjP88jzIZP4da3kBvR5m0vAP7xJwAjzLFnFl86MGjTPEhizF/Bx5lijkz9nAcAdkF0mvYbHWdtt+rAFX3Rnb3yDEjtrglQDETQzFz8NgZdOg3Cb/tmI+EXglY/Ddu1ytne0OAYsb1lgLFjOvlXN6YYsY1804x45p5p5hxzbxTzLhm3vXy1nK8Sa6Vvv/wKXySJELRQrmRKX1qvYTnUnFQzACQrVdSq0OuAJPzaDUrlYKn5+vz3Ss37lHn5N7Nkw1PfZ+jz/C5anuW5Zwcd8y41O+Lbl6WYkY3qYizQChm4gy1riaimNFVOuIsGIqZOEOtq4koZnSVjjgLhmImzlBzIhLQNQGKGQA9h85WdWRCt61LxyB7lgyqgNN3q7ZZPyr8bk5IFWkpdiSNYkbX6zveBkcxE29TG+WLUcy4Xs7ljSlmXDPvFDOumXeKGdfMO8WMa+adb00C4QlQzNiwJvxfBUDug0+aOBGSJ0sSpgfFjA0A+YjDCVDMOByp7gekmNF9imIlQIqZWMGq+0EpZnSfolgJkGImVrDqflCKGd2niAGSQJwQoJixEzPFjJ0A2V0TAYoZTdgM3YlixtDp0xw8xYxmdIbuSDFj6PRpDp5iRjM6Q3ekmDF0+hg8CTiMAMWMnSgpZuwEyO6aCFDMaMJm6E4UM4ZOn+bgKWY0ozN0R4oZQ6dPc/AUM5rRGbojxYyh08fgScBhBChm7ERJMWMnQHbXRIBiRhM2Q3eimDF0+jQHTzGjGZ2hO1LMGDp9moOnmNGMztAdKWYMnT4GTwIOI0AxYydKihk7AbK7JgIUM5qwGboTxYyh06c5eIoZzegM3ZFixtDp0xw8xYxmdIbuSDFjjPQFBgapmqNp06SAh7t7mKDlEpkPiuZHimRJjfEyAF76vUKCBB4R3sUwLxAPA6WYsTOpFDN2AmR3TQQoZjRhM3QnihlDp09z8BQztqO7es2E27dN8PExI1cuM7wT2t5Xb09SzOgtI3ETD8VM3HDW2ywUM3rLSNh4Hj5+hlHTlmHHvuPWD2pWLoUBXZsjmU9i9bMC5Vth+cyBKFowty5fRm4YzpwhNaqW/0DF5+cfgOLV2mPGqK9RoUxRXcbsikFRzNiZdYoZOwGyuyYCFDOasBm6E8WModOnOXiKGdvQrfnBHefOmawPe3sDHdsFI3lys20D6OwpihmdJSSOwqGYiSPQOpuGYsYBCQl4heCbV+GWMg1MyVM5YMDXQ4SEmNGk43AEh4RgVP+2yJE1Iy79/Q/6j5qPlCl8sGRqf0OImW6DpiNfrqzo1LK29b0uXL6OzBnTwidJIofx4kD2EaCYsY8fKGbsBMjumghQzGjCZuhOFDOGTp/m4Clmokf34KEJ02eF3VYuvcqWCUHliiHRD6DDJyhmdJiUOAiJYiYOIOtwCooZ+5Lyausa+K2aBwQGqIE8Cr6PJIOn2Tfom977j5xGp2+mYPuKcciSKZ11zItX/kG9NoOweEp/fFA0n9ox80X9Kjh28k/89fdNfFalNIb0bAXvhAnwz+17GDtzJX49dQEJvTxR6v0CGNmvDRIk8MSJ0xcxYfZq/H3jDip//D6a1K2EQvmyq3madBqB9s1r4uCxMzh/6TqKF84L3+cvMbR3K2sc85ZtwYuXfuj5VUP0GzUPh4+fxaMnvsiZNSM6f1kXVcuXgByz+nbcIjV3xnSpkTtHZjV/8y6jMPDr5sifOyue+r7A+FmrsHP/CSRN4o36NcurueXI1padh7H/6GkkS5oYm3ceRr5cWdCldV2ULJrfIYw5yH8EKGbsXA0UM3YCZHdNBChmNGEzdCeKGUOnT3PwFDPRozt/wQ2r1rpFeDBnDjNaNg+OfgAdPkExo8OkxEFIFDNxAFmHU1DMaE+K+dF9PO1QN8IA3i27wevThtoHftNz/vIt2L73GDYuGhlhrKpN+qBFg6poVq+SEjMF82ZH6yY18ODRU0xdsB6De7RQgqZ9n4lwd3dH93b18cz3Bdb/tB+De7SEHJGq3qwvenVoiLIlC2PHL8exYfsB7Fk7GSaTSY0prVm9ysiYPhXeyZQO3QZOw551k5E+TUq8CgjER7W7YsyAdqhU9n2s2LALubJnRqrkPth35HdMmb8OhzfPgv+rAPQaNhtZMqVF3eplkSSxt5IxMv7S6QPwfuE86DtiLi5cvqEEz6MnzzBmxkoVr7zbkjU/Y8Kc1fiycXV89EEhxePcxWtYv2CY3Xw5QFgCuhQzYu2uXLuNy1dvIjAoWFm/nNkyIk2q5LrLH8WM7lLiEgFRzLhEmsO8JMWM6+Vc3phiJvq8X7rshmUrI4qZzJnMaN+GYiZ6gnxCLwQoZvSSibiNg2JGO+/AXw/gxcQBEQZIUK46EnUeqH3gNz1HTFmKW//ex9xxvSKMJTtOihXKrWRG+Bozo6cvx4uX/ur4kzyXOmUyDOjWHGlT//dddvaSH7F19xFMGtJJjR0UFIzGHYfjh4XD1a4UGVPmLVuykHXuGs37oV6Nj9G26afYdeAEBoxZiMObZ8LT0wPBwSG4eOWGEiz3HjzBjEUbsGbeECWMwh9lkgEtYiZ/7iwoUb0DJgzqiBoVS6q5ZIeP7P4RISVi5n/Hz2DhxD7qs6s37qBmi2+U9LHU2LEbNAdQBHQlZqSo0uR5a3Hzzn0VXMrkSdVCu3v/sfr7RN4J0a1NPTSpW1E3FaQpZvib5AwCFDPOoO7cOSlmnMvfWbNTzERPXnbMrFzrhv8qzLzukzN7CFp+waNM0RPkE3ohQDGjl0zEbRwUM9p5B507iefDukUYwKt2M3g366h94Dc9F6zYim17jka6Y6ZCgx5o27QmmtatGEHMrN60F4tXb8eOVRPUEab+o+ep77OZM6RB22afokHN8ug/ej72HDyJvDnfCRNnx5a1UaZEwUgLCq/YsBtL1+3AzyvHo8vAaapvtzafKwnUod9kJWUqfFQUGdKmgsS+avYgFH4351vFjHzfFtGybfk4ZM38+rjW1l1HMGzy9zi+fW4EMSPS55P63a07d+yGzAGsBHQhZkTEjJq2HAeOnlYW8LPKpfFegZzwSuCpAg0KDsalv29i255jkIUuVaWH92mNQvlzOD2VFDNOT4FLBkAx43ppp5hxvZzLG+tNzDx5asKO3W64etUEdzcz8uQBKlcMRiJv5+XHWmPGDKhSv28MzcesMeO8pHBmTQQoZjRhM3wnihk7UhgSjGe9WyLk5rUwgyQdOQ/ueQrYMfDrrpYaM1uXjkH2LBms40nNl/rthliPAoXfMSNS4/LVW1g24/VuHtnNIjtNdh08gZmLNkLG27DtIK79c0fdjBRZi+ympydPn6NM7S5qd0ufEXOstW9E8MiumMNbZqlaMNKkfxgxkzMLOrWqY53KsmMmV7ZMKF2rM2aN7o7ypYuozyXGbXuPKlkTfscMxYzdyyrKAXQhZroOnKa2XMl2r1zZM731beU52R72x/kr2LtuSuyRsXFkihkbQfExhxKgmHEoTkMMRjFjiDQ5PEi9iZnlq9zx16Wwe1OKvx+CWp86d2cKb2Vy+NLjgE4gQDHjBOg6mJJixr4kmJ89wauff0Dw3xdhSpkGCT6uCo98he0b9E1vy61MAYGBGDOgPRg0aqUAACAASURBVHJmy6SOC0lNFqnzsmhKP6sEGTugPWpU/BC/njqPviPnol2zmqoGzaS5a1G/ZjlV40V2tIjQkfosfv6v8EXX0ZB+1SuWxNNnL9TxJCnyK9+Ho7qCW4r8yo6WUsULWI8XHf3tT7TpNR4bvhuh4vppz1F1xbdFzEitHCk0LBJIdtfILpnQNWbkuFWSxAlVweLHT33RY8gsVClXQtW/oZhxyFKyaRBdiJkffjqgFrJUrralyS/Jqh/3qIJEzm4UM87OgGvOTzHjenmnmHG9nMsb60nMhIQAo8d5ICAwbC6SJzOj59fOr+Vy9ZoJt2+b4ONjRq5cZngnNO6aYfFf4+bOnsgpZuyhZ9y+FDP6zp0U6RXJISU3LK1m5VKqZkzo3SlScuOln796RD4f0ae1unlJNiDsPXRK/TxdmhRoWreSqhEjbcO2A6rQrqWfHCWaO66nugEqKjEjR6O+7DEWk4d2QtXyH6hx5Ltxz6GzlNiRVqFMUTXn6jmD1QkT2a0jn8uNUUUL5sbymQPV+LKjp1ihPOrzrwfNwJXrt1V/2TkjwihpkkRYsvZnddvT/Am91Wf3Hz5B+c+7qw0S8j5sjiOgCzHjuNeJ+5EoZuKeOWcEKGZcbxVQzLhezuWN9SZmRo7xQFA4B5M4EdCvd5BrJiiW3ppiJpbA6nxYihmdJyiWwqOYiSWwDh42ICAQ9x4+QbrUKVQN1PDNbDbj7oPHSJggAZInSxLmY7kZ6ZnvyzDFfy0PSD+RPzKmRfRoDV1uhHJ3d0OKZEkjHULm8UmaGJ4e7pF+LidTvLw87Y5Da/yu3k93Yub0n1eU7Wvb5FO1qOU+9WXrd6qrvb7p2jTMHfJ6SB7FjB6y4HoxUMy4Xs4pZlwv53oTMxLPsFFy80PYXCRODPTrRTHjyBVKMeNImsYZi2LGOLlyRKSXLpuw76Ab7t41IZmPGe8XM6P0h849FhqT98qYyonFxWISKJ8lAYMQ0J2Y6T18jqpaLVurLFul8uTIDLlCW/5/ZNeVOZM1xYwz6bvu3BQzrpd7ihnXy7nexIzs0B49/vWfEkqVGbMZMJkArwTAwP4UM45coRQzjqRpnLEoZoyTK3sjffECmDQ14g7Els2DkTOHKmOu+0Yxo/sUMUCDEdCdmKnVcgA+r1kOLRtUxbqt+zB04hL8sn4qXrz0U1d5nfh5vs21aOIiFxQzcUGZc4QnQDHjemuCYsb1cq43MSPxjJ/sgefPw+YicyYz2rdxfo2Z+LRCKGbiUzZtfxeKGdtZGf3J8xfcsGqtW4TX+Kh0CKpUMsauGYoZo69Cxq83AroUM03qVkSTOhUxYMwCyHVkGxeNxEu/VyhR/SusnjsEhfJl1w1HihndpMKlAqGYcal0q5elmHG9nOtRzBw77oZtP7up3TJqXboBjRqEIH9eY3yRMMoqopgxSqYcGyfFjGN56nk0ihk9Z4exkYBzCOhOzHw77jucPPMXWjWqjmGTlqBDi1ro2roepPZM004jsGv1RGRMn9o5tCKZlWJGN6lwqUAoZlwq3RQzrpdu6xvrqfivJaj7D0z4+6oJ7m5m5MwBpEhhjG33RlpGFDNGypbjYqWYcRxLvY90/z4wY7bH63OhoVrliiEoW8YYops7ZvS+yhif0QjoTsz8c/seWn49RtWZkSu4ZLeMVKjuPngm/jh/BbvXTIab/NGxThrFjE4S4WJhUMy4WMK5Y8b1Ev7mjfUoZlw2GXH44hQzcQhbR1NRzOgoGbEcimXHjFVrq22IJiVleJQpluFzeBLQKQHdiRnhJNeR3bn3CO9kTGuVMH/8eQXJfJJA7nfXU6OY0VM2XCcWihnXybXlTXmUyfVyLm9MMeOaeaeYcc28U8y4Tt55lMl1cs03JQFbCehCzDx64ouUySO/bz2qF9HSx1YoMXmOYiYmtPisowhQzDiKpHHGoZgxTq4cGSnFjCNpGmcsihnj5MqRkVLMOJKmvsfirUz6zg+jIwFnENCFmOk5dBYqlS2OGhVL2sRA6s0MnbhYHXNydqOYcXYGXHN+ihnXyzvFjOvlXN6YYsY1804x45p5p5hxrbxfumzCvoNuuHvXhGQ+ZrxfzIzSHxqjvoxkijVmHLNenz57gRBzCJL7JIHJ5PhyHZeu3oTv85coVigPgoND8CogEIm8vSINPrrPHfPGHCUqAroQM4tWb8OkuWtRtXwJfN22fpTHlR48eopFq7bh+3U78FmV0hg7oL3TM0sx4/QUuGQAFDOul3aKGdfLOcWMa+Zc3ppixjVzTzHjmnlPn9Ib9x77IcRgddRdQczMX74F0xb+YF2YU4Z1Ro8hs6JcqOsXDEPnAVNVrdSFE/ugVPEC6tn9R05j2OQl2Ltuivp7ESBrt/yC2Ut+hJwCkZbIOyGa1KmAnl81dOgvwuzvN+HC5euYPqIbjpw4h7a9J+DQpplIniwJ+o2ah7ZNP0Xu7JnVnOE/d2ggHCxaAroQMxLluYvXMGTiYnU9duF3c6LU++8ifdpU8PRwx7/3H+GPP//GgaOnVUHgwT1aonzpItG+XFw8QDETF5Q5R3gCFDOutyYoZlwv5xQzrplzihnXzTvFjGvmnmLG/rz7hQThT//HyOSZGOk9E9k/4JsRRKBs23MUw6csxeHNMxEYFIy79x+pT6/euIOu307H8pkD1W4XaZnSp0a1Zn0RGBiEjOlSY/XcwWoXTHgxs2DFVsxfvhXDen+J8qXfg/+rQBz97U9MnLvaKm8c9RKhxczzF364fvMu8uZ6Bx7u7ihQvhUWT+mPD4rmU9OF/9xRMXAc2wjoRsxIuEHBwdj7v1P4869ryuyJrJGFWiBvNuTPnRV5cmRWu2rEKOqlUczoJROuFQfFjGvlW96WYsb1ck4x45o5p5hx3bxTzLhm7ilm7Mv7lLunMeDWMfibg9VAFZNmwu48tewbNFTv7XuPYfCExTi+fW6YMS9e+Qf12gzCwR9nhKmVWqFBD3RqWUdtOJgxshsqfFQsjJh56vsCpT/rjME9WqBR7QphxvR/FYCEXgnUjho5UbLqxz3wfe6HimWL4ZsuzZDMJzEuX72F/qPno2blUli1cY/q36ZJDTSs9Yn665d+/hg/azV+2nMUCb081fdmETGyY+bK9dsYMHoBVs4ehGkL1+O7VduQOUMaJZbq1iiLEkXyWT93d3eDxDp+1irs3H8CSZN4o37N8mjfvKaSOlt2Hsb+o6fV7cmbdx5GvlxZ0KV1XZQsmt9h7F1tIF2JGSPCp5gxYtaMHzPFjPFzGNM3oJiJKbH48TxrzMSPPMb0LXiUKabE4sfzFDPxI48xfQuKmZgS++/5W4EvkPmPpREGmPJOGXRPW1j7wHaKmSE9W+Hshb+xY99xVRP1f7+esR5lOnX2Epp3GYX9G6Yhdcpkkca4bus+JVf6dGqMDGlTquNUGdOnUnLlzPm/0bjjcFQoU1TJmH9u38eoactweMssJUmGTf4e+4/8js6t6iJX9kyYu3QzPD3dVV/Z9NDwq6E4vec7teOnzpffom/nJng3d1akT5sSz3xfWj8X+dJ3xFxcuHxDHa969OQZxsxYie7t6qNZvUpYsuZnTJizGl82ro6PPigEEVgyvhznYtNGgGJGGzdrL4oZOwGyuyYCFDOasBm6E8WModOnOXiKGc3oDN2RYsbQ6dMcPMWMZnSG7kgxoz19Pz65irpXfo4wQMtUebEkW9jdKFpn0bJjRsRMkYK5UKlhLwzt3QpJEnlbxcyOfb+i59DZOLN3MdzkP+4iaU06jVA7UIb0bKk+3X3wN3w9aAYOb56FG7fuKjFz9pfF1mLBZet0xfC+rfFRiUIoUrktRvRtjXo1PlZ9Qx9lCi1mIjvKFPrzgIBAlKjeARMGdbRe0DN25kocO/mnkk0iZv53/IyqpSNNRE/NFt+oGGVnD1vMCVDMxJxZmB4UM3YCZHdNBChmNGEzdCeKGUOnT3PwFDOa0Rm6I8WModOnOXiKGc3oDN2RYkZ7+vb53sYnf22KMEC/9EUxNtOH2gcO1VOrmClX6j0sXPkT1m3Zp3a+jJ6+XNWPseyY+WX9VKRNnTzSGEW0yC6VutXLqs/v3H2ISo16YcN3IyDCJLyYqdG8H7p8WQ+F8mdHtaZ9sWXpGOTIksEuMfPPrXtKtGxbPs56Mc/WXUfUjhw51hVezNx78ASf1O+OPesmI32alA5h72qDUMzYmXGKGTsBsrsmAhQzmrAZuhPFjKHTpzl4ihnb0F27bsLefW64fduEpD5mFClkRrmPjXPtbPi3pJixLe/x7SmKmfiWUdveh2LGNk6RPRUMMwqfW6MK/4ZuR/LVw4eJ02kf2EFiRuq9lKvXHUUL5sLla7eUmJHrsUvX6owB3ZqrI0Gh20u/V+oq67qtv0WZDwqhd4dG6mPLbUkic6T4cFRipnK54ihSqU2YG6Gi2zHz3eS++LDYu2qe0DtmXrzwV3HOGt3deunOzEUbsW3vUSVrKGYcsrzCDEIxYydTihk7AbK7JgIUM5qwGboTxYyh06c5eIqZ6NG9CgCmTPfAy5dhn21YLxgFCxrs/tk3r0AxE33e4+MTFDPxMavRvxPFTPSM3vbE/SA/zLp3Fr+9vK9uZWqeKg8+SvJ6t4i9LfytTJ6eHtYh31b8V44yyY4ZaSs37lE1YORmYct12bMWb1RHjEb2a4NKZd+HFP09/vtF661MIkA2bD+AqcO6IF2alBg5dSnu3HuEdfOH4uyFq1GKmRoVS6LboOmqeHC/zk2UBJIdLpb6NOGPMrXuMQ4liuZD26Y18fKlP27euR+mxozUwkmSOCHkfR4/9VVXhVcpVwK9OjSkmLF3cUXSn2LGTqgUM3YCZHdNBChmNGEzdCeKGUOnT3PwFDPRo7t6zYTFS90jPFjkPTPq1X59S4fRGsWM0TLmmHgpZhzD0WijUMzoN2Pzl29RhXct7dhPc5Aksbf6W1vFzKuAQFRq2BMidSxiRq7dXr5+p5IzsqtGmtye1KROBXWESX42YMxC7DpwQn2WNXM6dcNTzmyZcEbETIdhYWrMyFGmrq3roXqFkuqoVPs+k9QYMqYUAE6TKpkq/is3Hzdo/7r4r9SY2XPwJIZOWoxHT3zRsUVtVPioaJjPpW6M1LaR25yklS9dBGMHtEfSJImwZO3POHz8LOZP6K0+u//wCcp/3l29o0gotpgT0J2YOXjsDPLnzhJlleqYv2Ls9qCYiV2+HD1yAhQzrrcyKGZcL+fyxhQz0eedYiZ6RnzCGAQoZoyRJ0dHSTHjaKLGGu/h42dqh4vc0BS+GLBcV+3vHxBj0SHi596Dx6rWi1x7/bYmc8tumFQpfKzFhMM/L/VjvLw81a1PbLFHQHdipuvAadh76BTqVPsITepWRMG82WPv7R0wMsWMAyByiBgToJiJMTLDd6CYMXwKNb0AxUz02J49ByZO/m97uaVHqRIhqF7dmHVmuGMm+rzHxycoZuJjVqN/J4qZ6BnxCRJwBQK6EzNi7Db9fAhL1+/A3fuPUfjdnPji8yqo/PH7agtYbLag4GC4mdwivbrM9/lLyOcpkiUNEwLFTGxmhGNHRYBixvXWBsWM6+Vc3phiJvq8y46ZRd+/PsokF4+aTYDJDBQpwqNM0dPjE3oiQDGjp2zEXSwUM3HHmjORgJ4J6E7MWGCJBDn061ms+nE35HhTyuRJ0axeZXz+6cdIkyryq8XsAe3nH4BGXw1F++afoWblUtah5Hxev5Hz1C4eaSKK5IyfbDeTRjFjD3X21UqAYkYrOeP2o5gxbu7siZxiJnp6PMoUPSM+YQwCFDPGyJOjo6SYcTRRjkcCxiSgWzFjwSlFikZPX6EKGVnaZ1VKo2mdikqSOKJNnLsGi1dvV0ONG/hVGDFjuX9+2YyB8E6YAB37T0H2LBkwom9rihlHwOcYmghQzGjCZuhOFDOGTp/m4OO7mLl124Tr101IlMiMnDnMSBp2U6pN3Hgrk02Y4vyh/Qfc8PsZE3yfmZAxoxmflAtB9mzGvCUrruBRzMQVaX3NQzGjr3wwGhJwFgFdihm5MmzX/hNY/sMunL14VVWUbtGgCqp98gF+PXUe363apnhZKlvbC+/J0+fwDwhA004j0LN9wzBipn67IahavgTaNaupptmx71f0HDrbWgmbO2bspc/+WghQzGihZuw+FDPGzp/W6OOzmNmxyw2HjvxXlNDDE2jdMhiZM8b8y/u16ybs3eeG27dNSOpjRpFCZpT72Jj1ZWStGL3GzNlzJqz9IexNWV4JgN49gyD/ny1yAhQzrrkyKGZcM+98axIIT0B3Ymb1pr2YNHetuuJLdsQ0/7yyut/dK4GnNXY55nTi9EV8WOxdh2a0apM+6qqx0EeZSlTvoO6YFzkjzXLN2OEts1Rl6ruPX19x5ozm4W5CKh8vBAWb8fDZK2eEwDmdRCB1Mi888g1ASEjMv8A4KWROaycBETOpkiXE/SfO+2eOna/A7hoIJPB0QyIvDzx5HhChtxlmmFRVFeO1gABgxFh3hIRzJ4UKmtG4vnGFiqMykTihO2Ay4YVfkKOGjNNxNm1xw6+/RVybbVuGIHt2/nsrqmQkT+wJv4BgvArk70CcLlgnT5YmeUI8fOoPo/0nnfwhIRsJkIDjCOhOzMhulMSJEqJx7QookDeb497UhpHCixmz2YyCn3yJ2WN6oFyp99QIV67dQq1WA7F7zSRkSJcKQcHO/Zenx5sr0Jwdhw14+YgDCbi7mRBstH+DO/D9XXUodzc3BIf/JuuqMFzkveWrrcnNFKmEDQgKQQKPt1+D6WhMQcHAoaNmXLxkhocHUCC/CR8UM4lDiFG7ccuM0ZMi/vszc0YTvu0dt+8Uo8Dj6GG3N0BDzMaUGHMXheD3sxFj797BDfnyxHCxxBFzPUwjV+WaQ0S5srkSAaP+u93yHcSVcsV3JYHYJKA7MSM3MV24fENJGUuBXQEgBYBTp/RB/txZY41HVDtmRvVviyrliqt5w++Y4VGmWEsHB34LAR5lcr3lwaNMrpdzeWO9HWXastUNx0+GFSeVKoTg449i9ocUsmNm5NiINy1mzmxG+9bBrpnsUG9t9KNMy1e64a/LYdeJOKZWLYKRkztmolzfPMrkmr/6PMrkmnnnW5NAeAK6EzNyjOnHnw9i2/JxSJokkTXecbNWYeuuw/jlh6nwcA97btlRaY1MzEiNGalt07bpp2oa1phxFG2OYw8Bihl76BmzL8WMMfNmb9R6EzOjx3nAz/+/a6nlj/ZTpzbj684xkykyhowVeqeN7BLIljUEbVrGTPLYy1iP/Y0uZpaucMflyybr1eWWHSD1agejaBHuB4lqzVHM6PG3MfZjopiJfcacgQSMQEB3YqbRV8NQqngBdG9XPwy/qzfuoGaLb5SwyZo5nUPZSs0a2Toq43doUQs1K5WCp+frP8lbsGIr1m/dD7mVKZG3Fzr0m8xbmRxKn4NpIUAxo4WasftQzBg7f1qj15OY8fUFJkwJu8tFvmLL2hw2KGa1UP65acKCRe6QXRTqYIsJ6q+1SB6tbPXcz+hi5vBRN/y8M+yOGZFwfXoEIUkSPZN3bmwUM87l76zZKWacRZ7zkoC+COhOzNRqOUDtUOnUqk4YUn/fuIPPWnyDHxYOR75cWRxKUerayE6Y0G3r0jFKwLx46Y/ew+fgwNHT6uOCebNjxqivkTZ1cvX3PMrk0FRwMBsJUMzYCCoePUYxE4+SaeOrXPzLhAsX3RAQ4IYMGYJRoniI02+0GTQs7C4X5VRMZgwbFLMdM1KebfwkD/j5hYXxQYkQ1KzOHTNGFzNBQcDyVe74++rrejJSj6jSJyEoXYq5fduvP8WMjf9wjGePUczEs4TydUhAIwHdiZl+o+bh8PGz2LVmEhKGulNx7MyVWLZ+J37dNlcVB47r9tT3BQIDg8LUvaGYiesscD4LAYoZ11sLFDOulfMzZ01YtyHssd1cOc1o0SxmAsSR1F68BMZOiChmZI7hg2O2Y0b6yJXKm39yh/+bi8YyZjCjSaMQJPPhURejixnLupNdVvK/1GmAUJdrOnJZxquxKGbiVTptfhmKGZtR8UESiNcEdCdmLLceCfWq5T9AujQpsPd/J3Hzzn20blwDvTo01FVCuGNGV+lwmWAoZlwm1dYXpZhxrZyvXOOmdsuEb3IUJGlS57EYPDxiwV63//dHQwfGXMzIW8gtT/fvAd7eJiRPTiFjyWx8ETPOW6nGnJlixph5szdqihl7CbI/CcQPAroTM4L1/KXrmLZwPX774xJe+vkjZ9aMaFT7EzSqXSHWCv9qTSfFjFZy7GcPAYoZe+gZsy/FjDHzpjXqaTM98PBRxN5ftghG9mzOExhDR3og/I3t3t7AN320iRmtfCLrFxAIPLgPJa6cKa8c8U4UM46gaLwxKGaMlzNHREwx4wiKHIMEjE9Al2ImNNaQEDPc5BuJThvFjE4TE8/DopiJ5wmO5PUoZlwr5zNmu+P+g4j/7uvfKwiJEjuHhbpJabwH5CYmaVLMVQr2eicEBvRzrpjZ9rMbjv763w6jlCnM6NA+GAm9nMPK3lljW8xI/aJz593g52dG1izQRf0ie5nFh/4UM/EhizF/B4qZmDNjDxKIjwR0K2ZEyPj5v4rA3Bn1Zd6WeIqZ+Phrof93opjRf44cHSHFjKOJ6nu8OfPdceff/8SMciFmoH2bYLyT2Xk7ZsZP9sDz52HZZc5kVnE5qz16DEyZ4fH6dqdQrcC7ZjSq77y47OERm2JGj/WL7GEVn/pSzMSnbNr+LhQztrPikyQQnwnoTszce/AE85Ztxs79x/HoiW8E9oe3zEKypE7648JIVgLFTHz+9dDvu1HM6Dc3sRUZxUxskdXnuBs2ueP307Il5XV8ZhPg7gYM6BuEBAmcF/Ox426Q3SmyU0aamxvQqEEI8ud13m07e35xw74Dbm/u3QZM5te81E6evs7dyaM1U7EpZpaucMflKxF3Y33TN0gxY3MeAYoZ57F35swUM86kz7lJQD8EdCdmRk9fjhUbdqPzl3WRKX1qeHiEvZWiysfF4ekZsfigs5BSzDiLvGvPSzHjevmnmHGtnN/5F/huiQcCAv577zKlQlC1svMEiCUSOWIl1yC7u5mRMweQIoXzdvBITBs3u+HkKRNMcrYqVBNpNPRbipnwvzmTp7rjybOIYqZj+yBkSO9av2d6e1uKGb1lJG7ioZiJG86chQT0TkB3YqZsna5o8Fl5dGvzud7ZqfgoZgyRpngXJMVMvEtptC9EMRMtonj3gBwZunbNDUGBHkidNhByZIgtIoENm0z4/XTYP8SRp8TTDBtEMROe2LwF7rh1J6yYEVaDBwapXVlsziNAMeM89s6cmWLGmfQ5Nwnoh4DuxEyHfpPwTsa0GPj1F/qh9JZIKGYMkaZ4FyTFTLxLabQvRDETLaJ4+YCXpxsSe3vi0bOINdfi5QtreKkly93w99+RG4XhgylmwiOd/507bt4KW7/IZDajT89gw99mpWH56KoLxYyu0hFnwVDMxBlqTkQCuiagOzFz6PhZdB88E9tXjEPqlMl0DU+Co5jRfYriZYAUM/EyrW99KYoZ18u5vDHFTPR5/2mHCUePuUco/uvuDgwZSDETnuCi791x7XrY+kWiafr0CKKYiX65xeoTFDOxile3g1PM6DY1DIwE4pSA7sRM7+FzsH3vsSghsPjvf2g83E1ImzwhgoLNuPfEP04XDidzLgGKGefyd8bsFDPOoO78OSlmos/Bb6dM+HHL/1sY8+vjS5aWPLkZPbvxVqbwBKVQ8t59YXcYpUltRtdOxmQV/QoxzhMUM8bJlSMjpZhxJE2ORQLGJaA7MbPn4En8c/telESb1K0IrwSeuiHOHTO6SYVLBUIx41LpVi9LMeN6OZc3ppiJPu9Si2fiVA8Eh7y+mElujBJBI4WSpWCyEVts3soUGADs2eeGPy+Y4PfShKxZzahUIRjp0xmRVPyKmWImfuXT1rehmLGVFJ8jgfhNQHdixmi4KWaMlrH4ES/FTPzIY0zegmImJrTiz7MUM7bl8uivbti52w1Bb04u5chuRuOGwUjoZVt/vT0Vm2JGb+/KeP4jQDHjmquBYsY18863JoHwBHQpZo6dOo+N2w/i+s276PBFLZQr9R4mzl2DVMl98GXj6rrKIsWMrtLhMsG4opiRPw2/fNkNDx4CqVMBOXOGwCPiRSzxdg1QzMTb1L71xShmbM97QCDw4D5UnRT5n5EbxYyRs6c9dooZ7eyM3JNixsjZY+wk4DgCuhMz5y5eQ8OvhiJdmhTw/b/2zgO8qer949+bpLulLS1llQ0yREABFRRFUIYTByCIMlREpiAKPxAFGS4UAQeCoIKibEEUQZaAiqIIiiKyBcpsKXS3Se7/f24HTdOV5Ca5N/ne5/ERyD3nvOfz3jbNp+e8JzUDL458DPd0aovFqzZh6sxF+G39XAQHBapHwMWeKGZcBMjmThHwNzFjtQJz5plw5uwVXHFxwKAnzDCZnEKou0YUM7pLmSoBU8yoglF3nVDM6C5lqgRMMaMKRt11QjGju5QxYBJwCwHNiZkJry/ApZRUzHx5GJ56/k3cc0dbRcwc/e807n7sf1jz8VTUq13dLTCc6ZRixhlqbOMqAX8TM/sPGPD5EvvjcHs8YEHTprKrOHXRnmJGF2lSPUiKGdWR6qJDihldpEn1IClmVEeqiw4pZnSRJgZJAm4noDkx067bMIwc2B0P3HkLBj43vUDMJCWnQLy2fN4kNG5Qy+1gyjsAxUx5SfE+NQn4m5jZtsOAjZvtxczNba3odLs+i3s6+jxQzDhKzDfup5jxjTw6OguKGUeJ+cb9FDO+kUdHZ0Ex4ygx3k8CvklAc2LmidFvICa6Al4b/5SNmFn73U8YM/UD7Fz7HiLCQzWTDYoZzaTCrwLxNzGzc5cB36yzFzOdb7fgprZcMeNXc1rMRgAAIABJREFUD7+fTZZixs8Snjddihn/zDvFjH/mnWLGP/POWZNAUQKaEzPfbfsVz7z4Dnrf3xE/796P9m1boGJUBbzx/hfo1uVmTB37hKaySDGjqXT4TTAUM4DQMZ1vt0KsmvGHiytm/CHL9nOkmClf3o8dl7B5qwEJCRIiKshocY2MW2/R7/cGipny5d3X7qKY8bWMlm8+FDPl48S7SMDXCWhOzAjgS7/aijfe+wLpGZkF/O/qeCPGP/MoIiPCNJUTihlNpcNvgvE3MfPLbwZ89bUBkrAxEhQrI0tA105WtL1Rvx++HHlgKWYcoeU791LMlJ3LrGxgxiwT0tNt79VzDSqKmbLz7ot3UMz4YlbLnhPFTNmMeAcJ+AMBTYoZAT47Owcnz1xQ5Ex8lUqIigzXZD4oZjSZFp8Pyt/EzPkLEt553wi5yK6loYPMEKcz+cNFMeMPWbafI8VM2Xk/ekzCRwuNdje2aC7jgfssZXegwTsoZjSYFA+ERDHjAcgaHIJiRoNJYUgk4AUCmhMzE6d/jAZ1q+ORB+6wwXHg8Ak8PfYtrPjwZURHRngBVfFDUsxoJhV+FYi/iRmR3D/2SfjhJyMuJAKxMUCbGyxo0cw/6suI+VPM+NWXuDLZ1FTg2DEDzDkmxMblIL66/zzvjmS7JDHTpLGMh7tTzDjCkvd6lwDFjHf5e2t0ihlvkee4JKAtApoTM8PGz0SThrXx9GP32ZA6n5iM9g8+w1OZClExGSXERQXDbJFxLvnKti9tPWKMxh0E/FHMuIOjnvqkmNFTtlyP9fQZYP7HJmRnX+nrpjZWdL7DP7buOUIw4bSE9+caIYltjoWuRldZ0fthffLiihlHngDfuZdixndy6chMKGYcocV7ScB3CWhGzOw/eBw5OWa8/t4XqFOzKrrffWsBdbPFgnWbf8biVZvw67dzERIcqJmMcMWMZlLhV4FQzPhVurHrNwm7fjUiKQmIqySj3c0yGjfS5wdO/8qc87NdudqIPXttTYPBAIx73oxA7bwFOj9BFVvu/8eAxUtyT21TSlBJUOpRNWpkRe+e+vw6oZhR8QHRUVcUMzpKloqhUsyoCJNdkYCOCWhGzLTrNgxJySkloqwYFYHHe9+Ffj26aAo3xYym0uE3wVDM+E2qIU6bWfCJbf0MkxEYPtSCqEhubfHVJ+GdOUacO1dkCQiAJwdYUCOeeS+c9wuJEma9a19jpt1NVtzRkWLGV79GfHFeFDO+mNWy50QxUzYj3kEC/kBAM2Lm8LFTyDFbMHXmp6hfpzp63ntbAf+AABPq1KgKg1jLr7GLYkZjCfGTcChm/CTRADZsNGDHj7mrAQpfvXpYuWrGhx+DGbNNuHjRdoJCx4x51oxwbR1OqIksLFlhxF9/XfkZISQEePpJC6Ki9CmxuGJGE4+Vx4OgmPE4ck0MSDGjiTQwCBLwOgHNiJl8EukZWTAaDQgKDPA6nPIEQDFTHkq8R20CFDNqE9VufytXG7Bnr72YubOrFTe21udqAO3S1k5k4hSys+clZWtO4YsrZkrOkSgCnJAgoUIFGfXrywgJ1k4+HY2EYsZRYr5xP8WMb+TR0VlQzDhKjPeTgG8S0JyYEZgvJF3C/oP/KUdlF7063HwdAsQ6fo1cFDMaSYSfhUEx4z8JX7rCgH1/FREzMnDfPVa0vI5ixlefBFFj5vc9Um5B27xFHwYja8z4ar6Lzotixl8ybTtPihn/zDvFjH/mnbMmgaIENCdm/vj7MHoNnlxipn786l1ERmhnHTfFDL+ovEGAYsYb1Isf8/ARCX/+ZUBaqoz4eKB1KytCQ9SLb/P3Bmz53pC7cqLQrozuD1pwTVN9btNQj47v9sRTmXw3t+WZGcVMeSj53j0UM76X0/LMiGKmPJR4Dwn4PgHNiZnhE2Yh4UwiJox8DL0HT8aqBVNQuVI0Jrw+H7JVxuypIzSVFYoZTaXDb4KhmNFGqg8ekrBosRGy8CN5e05qVJcx8HGLagGK7RkLFhptxIw4nWfkCAsiK1DMqAZaYx3l5ADfbjDgr/0SsrMkVK0m4+6uFlStorFAGY5bCFDMuAWr5julmNF8itwSIMWMW7CyUxLQHQHNiZk7+4xBnwc7oce97dG84+NYPm8SGjeohd/3HUSfoVOxZfnbiIuN0gxoihnNpMKvAqGY0Ua6Fy8xYf+BAidTENTI4RZEq1R0tLhTmYSYeWZY6acyCVkkTqsRV2yMnLslhpduCIiCz6Lwc+ErpqKM4UMszKVusuh8oBQzzrPTc0uKGT1nz/nYKWacZ8eWJOBLBDQnZjr3eg59e3RB7/s7Qvx5cL9uuK/zTTh+8iyEtFk0exyuu+YqzeSAYkYzqfCrQChmtJHuV980IT3NPpaHHrCgmUrbjNZ/Z8APPzl2KtOJkxKWrTAg+VKujRHHavfsbkX1alxho40np+woFn5mxKHD9jZNTelXdhS8w1sEKGa8Rd6741LMeJe/t0anmPEWeY5LAtoioDkxM2Dka6hWJRZTxjyOSW99gh937cOYIb2wcftvWL3+B/z89fsID1OxgIOL+aCYcREgmztFgGLGKWyqN5ryqgnZ2fbd9u5pQaOG6kiQL5YZ8Pd+ezFz+20W3NKu+DE+/MiI/07YfqivXUvGgL7qbbFSHSY7tCEwb4ERQrAVvShm/ONBoZjxjzwXnSXFjH/mnWLGP/POWZNAUQKaEzPfbPoZx06cVlbKnLuQjAefmICk5BQl7tGDeqL/w101lUWKGU2lwyPBpKQAouBrerqEWrVkr6xCoJjxSKrLHOTlV0ww59jf9sD9FrS4xo1iRga6dLKgbRv7MaxWYNprJmQXiSs4CBg3xlzmnHiDNgi8P8+E06ftYxk/xoygIG3EyCjcR4Bixn1stdwzxYyWs+O+2Chm3MeWPZOAnghoTswUhWe2WPDv4ROoGFUBScmX0bBeTRiN9r899hZ0ihlvkffOuCcTJCz4xGjzYfyWdlbcfptnjy2mmPFO/ouOOmmaCWazfY2ZLp0taHuDOmKmpFOZHn3Eggb1ix9j8ismiOKxhS/xYV58qOelDwIfzDNCfL9Rqj7LUOrKiLpBorB0jXh1ni19kPDPKClm/DPvFDP+mXeKGf/MO2dNAkUJaF7M5Af88+/7IbY58bjsKyk0GSXERQXDbJFxLjmTT7cHCCxdacS+fbbbC4xG4IWxZoj/e+qimPEU6dLHee1NI9LSJJtTmcSH6AH9zKhTS50Yk5MlzHrXCHOhXUihoaL4rxliFUxxV3FiJjBQxgtjuZVJnay4v5eVq43Ys9f2e40o+jzueTMCA90/PkfwLgGKGe/y99boFDPeIu/dcSlmvMufo5OAVghQzJSRiU3bd0Mc4V302r1hHoICA8AVM1p5lD0Tx5szjbiUV1C18IjDBltQKdZzv8WmmPFMvssaZc48I04lSFdOyZGVxQ0Y/JRZ1WONz54Ddu82IDXViMgoC1q3kks89SkjE3hhVjZ+bfkLTlU7pUyhekJ13Ljnerz2LD/Rl5VTrbx++gww/2PbGkY3tbGi8x2eXZ2nFR7+FgfFjL9lPHe+FDP+mXeKGf/MO2dNAkUJUMyU8UyIosP/mzZPOba78FWzehwkSaKY8bOvqekzTbh8yXbS4oP4hLGe/S02xYw2Hry58404eUrsMckVMvnrG4YPtShHVKt5GSQgLjoEZ5Iyyuy288/bsK/yEZv7mp2rh3XXtyuzLW/QDoHUVODYMQPMOSbExuUgvrq6z5R2ZspIihKgmPHPZ4Jixj/zTjHjn3nnrEmAYsbBZ0CImUlvfoztX84utiVXzDgIVOe3T59phDUpCY2yfkWo9TKOBDbDicCGGM4VMzrPrHPhKytmTueKGWFlhJgR6xn69i65/otzIwGOiJmGxxYjFbbHRVVEMP6s/bCzw7OdlwgEBRgQFhKApMtZXoqAw3qDAMWMN6h7f0yKGe/nwBsRUMx4gzrHJAHtEdDEipns7BwkXrxcKp3d+w7i+clzPF5jRoiZERNm477ONyEoKBCtmjdE5/atYcorKFKe3167K+2ixkxsZG6NmQuXWGPGXZwL97tpwUHcsesZBMpXPvRujuiDG17t69EaM5WignHhchZkK3+D7om8lzTGosVGHDhof6TxuOfMEHVg1LyEmImNCsG5i2WvmKl1bBGyZdt6MqGSCYdr91EzJPblAQKBAQaEBgcgOaUYMVN4mZYHYuEQniMQHmxSKj6nZhRz7JvnwuBIHiYQFR6IjCwzsnK4ZdHD6L06nFgNez45I7denY4uIZR4kQAJqEdAE2Jm958H8eiwqeWalaeL//75z1Gs3/oLIiPCkHA2EUvXbEHv+zti/IhHlXgtXv5gbBSf1jQQR7mS5wM3XXjlJQTt3WwzE6vBhMiF3wEmk8dmKNIu3sC1/h6efAnYusOKEwkyYqMltLleQu2a9iLDY+BUHmjWXAv+2m+fhfGjjahZXf15GiQJ1nL85Ba2Zx6yioiZMIMJl5o/oTIBduduAuIpEicyFfdWk51jhRA3vHyPgMi5uMrx5e57k/fjGenlvd2PU+SWqYv3dlmWNf8zXdHJ538GcQsUdkoCfkhAE2ImKTkFO3/7u1z477ilJQICPPcBuGhQK7/ZhgmvL8DeTfOVVTPcylSutPnMTSHj+0BKOms3n8yX5sNapabH5unuGjPiCOhz54CwcAmRFZzTP6IPcZpQcqFiyeLDxpBBZsRV8hgqtw70zhwjzp2zFzBPPmFGjWrqDl3erUyXrFlocnzxlb1Vyqc7IFCScLR2X3WDYm9uJ8CtTG5HrMkBuJVJk2lxe1DcyuR2xJocgFuZNJkWBkUCHiegCTHj8Vm7MOD2n//EoDFv4rf1cxEcFEgx4wJLPTYNHtcbhovni4QuI33GWiA42GNTcqeY2b1HwjfrjMjOW0Ffs4aM3j0tDm/NOXpMwkcL7c8Qv7mtFZ1u941l2vnHZdskXgb6q3hcdn7f5RUz4v5up7/BrqxzNmG1Ca6C5VW6eOwZ5UDqEKCYUYej3nqhmNFbxtSJl2JGHY5664ViRm8ZY7wk4B4CFDNlcF28ahMa1quBJlfVxqWUVDz38hwEmIxYMGOM0pIrZtzzYGq11+Bxj8BwUayYKbxKQkbmSwt8YsVMdhbw+gzbI3pFLpyRKb/ulrBmrb2YqVPHiv6P+oaYeWW6EenptsV/xfqiB7pZcG0z51YalfTsOyJmfss6j8Hnt+KkOU3pLt4UhrlxHdA8MEarX1qMqwQCFDP++WhQzPhn3ilm/DPvFDP+mXfOmgSKEqCYKeOZeOuDpZj/+TcFdzVrUg9vTBiE+Kq5ezEoZvzriypw/lSYft0CyELM5FXeDDAhfcZXHq0x464VM6fPAO/Ptd8qWKumjMf72RaTLSvze/80YPnKK/Uv8onVryejbx/H+iprLG+9Pn2GCZdTiowuA08PtKBqVe+JGRGRFTKO5OQWVa8bUAEGG5noLWIc11ECFDOOEvON+ylmfCOPjs6CYsZRYr5xP8WMb+SRsyABVwlQzJSDYGZWNs4nJiMiLBRRkeE2LShmygFQ5VuSrVlYmHIAuzPPIdYUgvtC66BdiMoFPUqI2XDsAIJmjIKUfeVUppyuvZFzb3+VZ1l6d+4SMxeSJMx6x36VS9UqQjaYHZrjb79JWC1WzBRaXCQKWdapZcWAfr6xYub9uUYknCmyYkYGBj5uQY1474oZh5LFmzVLgGJGs6lxa2AUM27Fq9nOKWY0mxq3BkYx41a87JwEdEOAYsbFVFHMuAjQieb3nP4au7Ns67x8Wvl23BYS70RvjjeRLiXC+PdvQFoKrA2ugbXWVY53ktdCiIrEJAlWi4zYWMBQzgNW3CVmzl+QMPtdW5kiQo2PlzFwgGOrXPb+YcCKL+0nVK+u76yYWbnaiN/35Jqn/BVB4s+jRlgQHUUx4/QXBhsWEKCY8c+HgWLGP/NOMeOfeaeY8c+8c9YkUJQAxYyLzwTFjIsAHWx+KOcSbj21yq5V9/D6eDv2Zgd78+7tZ84CXyw3Iikx94N9RLiM7g9aUbtW2R/o3SlmxElKRUVD40ZW9O7p2CoXISxWrbFffVOvnhV9H3GsL+9mquTRDx6SsGix7Rzjq8vKihm1L0dqzKg9NvvzHgGKGe+x9+bIFDPepO+9sSlmvMfemyNTzHiTPscmAe0QoJhxMRcUMy4CdLD5t+n/4fFzm+1aNQ6Ixsbq9znYm3dvX/iZEYcO2x61XDku9zjpsq6iYsZsAXb/bsDRo4DRKKFBAyuaNZUhjqd25LJYgTffNiI1VVIq6OSX0enSyYqbbnRMpvzzr4TFX9iLmUaNZPTuob64cGSeat57+IiEP/8yIC1VRnw80LqVFaEhao6Q2xfFjPpM9dAjxYwesqR+jBQz6jPVQ48UM3rIkvoxUsyoz5Q9koAeCVDMuJg1ihkXATrY/NfMc7jvzJVizPnNrw6siA3V7nWwN+/e/vI0E8w5ue5D7IPJdygTXzCXuaWpqJj5aq0Bu3bbbhu6vYMVt9zsmEwRYuatt41ISbU1OkLMtHVQzPy5T8LSFcbceeV1J7ZuXd1IxsM9fUfMeOopopjxFGltjUMxo618eCoaihlPkdbWOBQz2sqHp6KhmPEUaY5DAtomQDHjYn4oZlwE6GDz3BUzm/Ja5X/aB1oHx+HLqnc62Jt3b39xsglCVNgcvC0Dk19ybMWM1QpMfc2EnBzb+cRVAoY+XXZfhVspNWbes1/lUreOjH6POiZT/tovYcky45WVN8LPSECdOjL6P2qBGOvIUQlGg4x6dYHo6LK3cHk3Y94dnWLGu/y9NTrFjLfIe3dcihnv8vfW6BQz3iLv3XEpZrzLn6OTgFYIUMy4mAmKGRcBOtg8yZKJlieXIlsuLAkkPB91LUZENXewN+/ePmGSyW6rkVAT4543IyS49NgKr5i5mCxhxix7mWI0Ai+Nd0zM/HdSwocL7PuKipIxarhjYub7bUZs3CrZHdIcEyPjxutlfPOtQRFT4hJFj3t2t6JxQ8dW+Hg3g54dnWLGs7y1MhrFjFYy4dk4KGY8y1sro1HMaCUTno2DYsazvDkaCWiVAMWMi5mhmHERoBPNP0s5gElJu5Am50qH1kFx+KRyR0QagkrtLSUFEP/FVgICA5wYWOUmL04y2S6XESVdZODZkWZEVSi/mMnOAqa8alIayHlHA4n/BQUD48c4JmaO/SdhwUf2pzJFRsp4doRjYuabdQb89IvhinySZciShPAwGVZZQnpa7hzFKhox7+pVZQwaWPIYf+yT8MNPRlxIBGJjgDY3WNCimf+ssqGYUfkLUCfdUczoJFEqh0kxozJQnXRHMaOTRKkcJsWMykDZHQnolADFjIuJo5hxEaCTzbNkC/7NvogYUwiqGcNK7SUzC5gz14iki1c2Dd14vRV3dvHu6oxixQyAyS+WLVMKr5gRW5lemmJSitXkF/sVuiIsVMbY0Y7JlPQM4NXpuX0VLv7b8jorut3tGK+Nmw3YtsP+uOzwcBmpKYWK6uRlT8Q+aULxcxfbnt5531iwwiY/4UMHmREX5+RDpLNmFDM6S5hK4VLMqARSZ91QzOgsYSqFSzGjEkiddUMxo7OEMVwScBMBihkXwVLMuAjQA81XrDJi759Sbj0XsTojb8yRw8yoGO2BAEoYQmxlKlz0V9wmW4FRz5gRHVV6XEWL/06cYoIQNIWvChEyRo90TMyI9l+vM+DnXVeESlAgMPAJCyrFOrY65btNuWKmaPFfwfzixSsFgfNjFr2XJKV++c2AtV/bSx5nihJ7L+OujUwx4xo/vbammNFr5lyLm2LGNX56bU0xo9fMuRY3xYxr/NiaBHyFAMWMi5mkmHERoAeav/qmqWDbjCI/hAGQgLs6W3HjDY6tAlEzXKXGTN6J1PmCpjQ5UXjswmJGbM96Y0buVqbCV3Bwbr0aZ64TJyScOCkhNEzGVfVlhIY63svRY8BHC012xX+bNJLx9z/Fn+P9cgmrhdZtMOCnnfZiptV1Vtzr4Eoex2eijRYUM9rIg6ejoJjxNHFtjEcxo408eDoKihlPE9fGeBQz2sgDoyABbxOgmHExAxQzLgL0QPPiVpMIASJqlNzZ2bFVIDnZwKatBkUsZKRLqFVLxu0dLKhS2fGJTHg5V6bYnMpkBcaNdaz4r+jjpbwTntQSM47PpvgWc+cbcfLUlRkGBQHDB5vx+lv2hY9L28q0YZMR23dIdsWSW7e04p67vCfXnOW0NzsRP2ecQbQxCLcGV0OcqWzzRTHjLG19t6OY0Xf+nI2eYsZZcvpuRzGj7/w5Gz3FjLPk2I4EfIsAxYyL+aSYcRGgB5oXJy3EsM2ulvHQg45t9dm6zYDNWw0F+6FEsd24WBnDBjvWjxj/k0+NOHTIttZK5cqAqJtS1lV0xczrYsVMkRoz4mQnZ1fMlDV+eV8Xq5PEkdhnzkqIrCCjQQMZAf/voyZOzY03/xJ/jAiT8fyzxXP8fY+EVWvyaswULDMC7rnbiutb6kvMvHZxN2Zd+qNg7sGSESuqdkWLwNhSsVLMlPep8637KGZ8K5/lnQ3FTHlJ+dZ9FDO+lc/yzoZiprykeB8J+DYBihkX80sx4yJADzSfPM2EnGJcxy3trLj9Nsc+1H8wz4hTp6+sAFF2RckynhtlQUSEY5M5dhz49HMjsrIlSDJgNAEP3m9F0yalxyRlZiAm/SwuBkXDEhapDDrtdRMyM2xPZapdW8aAvo4LI8dm4dzdixYb8e/B3KO080+Sat3KintLWP2Slga8PduErOwr44naN88MMyOs9NrPzgXoplbpVjOanFiMHFFMqNB1X1gdvFfpVooZN3HXc7cUM3rOnvOxU8w4z07PLSlm9Jw952OnmHGeHVuSgC8RoJhxMZsUMy4C9EDzme8YkZhkW9NElmU8dL+M5s0cEzNTXjEhO8c2aOWI62fMiMp1JOW+Pl9ixN8HcuWEuITkqREvY+CAkmVKwNeLELDuM8CSe4+lWRtkPfUS3n4vEImJV7b6iL4a1pfRp7c2xUzyJQnrNxpw9KgEo0HGVVcBd3S0IDSkZHyJFyT88ruEC/9/QlNsrIzrr5UR42BB4nInx003/pWdiE4JX9n1Hm8Kw8/x3UsdlStm3JQUjXdLMaPxBLkpPIoZN4HVeLcUMxpPkJvCo5hxE1h2SwI6I0Ax42LCfEXMHD0mISFBQoUKMurXlyG2wXj7EgLk0GEDkpKAuEoyGtSX7WqMlCdG5XSgHwzKqhRldUaeBRkx1ILYGMdqzJS0LWrg4xbEV3esr5en5q3kEbuZ8o6nFnVWJr5ghsG+zi2kcwkIeamv3ZTTe4/GS1vvUk50yl99IqYZEwuMGFL2tqjyMOQ96hA4bU5Dq5PL7DqLM4bg9xo9KWbUwexTvVDM+FQ6yz0Ziplyo/KpGylmfCqd5Z4MxUy5UfFGEvBpAhQzLqbXF8TMkhVG/PXXlRUlISHA009aEBXlmGhwEaVN88ws4P0PjLiYfCWu+HgZT/SzFCstShs7OVnCu6IvKR3pYemISo5C0/pG9O7p+GqSF/MK9hYd76knzahe1TECoq+8A6IKGorVNy+NN8Nkf8gSTDu/Q+Anr9sNYr6+I8aceMGmiLC4KSBQxoSxjs/RsVnwbkcI/JZ1HvcmrM09tz3/kmXEmYSYeZhixhGYfnIvxYyfJLrINClm/DPvFDP+mXeKGf/MO2dNAkUJUMy4+EzoXcxcSJQw612jHYV2N1lxR0fHtvm4iNKm+a7fDPjqa/tlI4/2tigrZxy5/jmRg0dPbkFC1QSlmdFsxG0HWuOjro0cljziJKUKlkQ0zPoVodbLOBLYDCcCGqJXTyuaNHKMl3JcdpFTo4WYmTSh+BUzAd98ioCvPrEXM/WaYWzaTNvjnf6/7kxgIPDCWK6YceRZcfe9ZtmKFieW4KI1K/fcdvEAyDL6VWiMqTE3Usy4OwE67J9iRodJUyFkihkVIOqwC4oZHSZNhZApZlSAyC5IwAcIUMy4mES9i5n9/xjw+VJ7AVKvroy+fRxfbSH6+367hLPnJcRE5x5J3fI6x0SKSMm69Qb89LN9XF06WdHk+gwsTDmA3ZnnEPv/Kw3uC62DdiHVSszkkJ/+wpdVd9m8brAasC6kO5pWLaWoSTE9zh1/CIMvjkCgfKUK7cawPogZ2A8Nr3Jsni9OMtnJFPFZfcxoM8KLKWhr2rAUgSvn2q62gAxLk1YYkzw993O+qFWT93m/WlUZg550PIcufkmweRkEvko7hjGJP+KSNfcZahYYg/mVO6CaseQqxhlWM77PSsAFUwaq5YShfWh1GOzWSBG9LxKgmPHFrJY9J4qZshn54h0UM76Y1bLnRDFTNiPeQQL+QIBixsUs613MHDxkwKLF9gJE1EsRdVMcucS2o7dnG2G12rqDJ/tbUKOGY9Lip50GrNuQG1d+SyEd+vSy4Nnwtdiddd4mtE8r347bQuKLDbf17nVIqHjW7rUXL3fCU81KFjrFdfbPM9NwXdYWm5fMMOHnx9fi2lb2K49K4ydW3xRZMKNM9uWXil/lotSYebEv0gKMOBAbiZqXUhGbno3svqOxKrErdu22zePtHay45WbHVvE4km/e6zyBbNmKf7MvIsoYhHhTeKkdpViz0SlhDf4zpxbc1zKoEtZUvcv5ANhSNwQoZnSTKlUDpZhRFaduOqOY0U2qVA2UYkZVnOyMBHRLgGLGxdTpXcyIFS5vbT2H3S1+Q2LMeYSmh6P+kXp4MLU5+j7q2If6jVskbNtuLycaN5LRq0fJkueMJR1b008hTTbjxuA4XB0Ygx0/GrDhO4OyBEQRM3nFcW/tnYR+ASvtsvZQeD3MjG1XbDav2bcSSeGX7V57PudmjGhQ36EnIGfIw4i0Jtq12dp1Pq6/t6ZDfU2cbIK1qK+SgXFjzQgOKr6rmb98ghmxFuTkVQe7NgT4AAAgAElEQVTucjYNc1s/BVk2Yffv4pQjwGiU0KCBFc2aOlcs2aFJ8Ga3E1iUcgBjE3+yG2d5lS5oE1zF7eNzAO8SoJjxLn9vjU4x4y3y3h2XYsa7/L01OsWMt8hzXBLQFgGKGRfzoXcxc/yCGbclLkNWUJYNiafPtscLN9R2iM7Hi4w4cqTQGpC8P0ZHyRg5vHgxsyPzNPqe3YhM+crrY6KvQ9Taa3Ho8JW+xPYccQXecQRzqm22i6uuqQK2xz9QbLwdft+EA9En7F6bF3An7qwe59AczYN7oIJ8sUgbGR9dvxI9+1dwqK+5Hxpx4lTuEdf584uKlvFsCayO5aTgplMr7MaYEXsTeoQ3cGhs3qwfAqMu7MCS1EN2Ab8S0waPRTTUz0QYqVMEKGacwqb7RhQzuk+hUxOgmHEKm+4bUczoPoWcAAmoQoBixkWMehczQoz0PLPejsItAfH4vPrtDtF57wMTzpyBXd0UcfT2/5434/QZ4NhxA4ICxZHcQIUIGX3OfoctGadsxgk1mDB8XV+cvmDByeoncTniMqIvRiP+dDwC25zAnPob7OK6OrAiNlS7t9h4x2w8hk/rb8ldepNXbTcoMwgbIrqjfvVijj8qZdaWp3siAmLFTOFNSDJW3jAXXfrVdYjX/gMGLFlmULZ+iUuEds+dFrRqWfy2r9WpRzH4wvd2Ywyo0BiTK97g0Ni8WT8Enj6/FWvSjtkFPDXmBvSLaKyfiTBSpwhQzDiFTfeNKGZ0n0KnJkAx4xQ23TeimNF9CjkBElCFAMWMixj1LmYWp/yL5xJ/tKPQICASm6rej717JRw6klu7pH5dK5o3l2G0L0mjvP7mTCMuXbKrmgKTScat7WRs2nKloSkA6PuIBT0MS3HSnGYvG7bdj2XXbkRKRErBa3Hn4vBYUhtMb/Rl3r/ljSUDXcNq4sO4DsVmc/Z7RmyougeH6x5GWmgqYhMr4bo9LTH4xkq4toVjtW/2jJqFthlrAFkps6sImjRDBay9awXucaLkx8WLEg4fASxWCXXryKgUW3I8X6QexLMXfrCbY+fQGlgQ19HFJ5nNtUpg1PntWJImVszYysBXYtpyxYxWk6ZiXBQzKsLUUVcUMzpKloqhUsyoCFNHXVHM6ChZDJUE3EiAYsZFuHoTM1JKMqSkc5Ar14AcHIIlKYcwKnG73TKXJoHReO7v+5VaL4Wvm9ta0el2KxIvAjt+MCA1VdQzkXF9SyumvW5CZqY9ULESxGQCcnJsX2vc0IrV7b/F9oyEfMeh3BAsGXHznhuwsbm9MOr7zx1Y22QbEq2FB5IwPaYtekVcVWw258wz4ZvY33Go7mGkh6YiJk/MPNexEq5q4JiYefPFJPRLnoAaOf8qY2VI4VgWOQoVu7ZDh1tcfJjKaL485TBGJG6zy9WD4XUxK9bNg7t3auy9FAILLu/HhMSdVypqKz5QVor/tgxybCseQeuPAMWM/nKmRsQUM2pQ1F8fFDP6y5kaEVPMqEGRfZCA/glQzLiYQ92IGasFQR9MgvGPvCKiRiNyuj6ChC4PoeWJpbAoqz9EhV1J+cX8hIqtcHleC6QWWcwSFSnjvntlfLLIVtjExgIpqUB2ugUNs35FFctRnDdVw/6gNrBKAcVSDguTsa3XauzJvmDzerBkwjXHrsKuWn/btet28gY8/c8n+N/VsfirUjQqZGejx76j+F+TByE1LX47z/+2HMfCOrYnKQVnBmNdeHdcFe/YSUovvmxS6sFUtJxBqDUFp021YZECMHSIBZVLWe3i4mOmNN+ScVLZ+nVl5UTuip1RUS3wbFQLNYZgHxokwFOZNJgUD4ZEMeNB2BoaimJGQ8nwYCgUMx6EraGhKGY0lAyGQgJeJEAx4yJ8vYgZ00/rEbhwut1sL49bgJ4/pWPXdb/AYsotwFvtdDVMyu6And8H290vVr/Exsg4f0FClPkcwqzJOGuqDbMhEBGhFvQ7Pgy1cvbnSh4JSDRWw8zYeUgzhNkdDR0aImNBz0+QZrU/Hrp9ckNsjTpgN/6Y81fjdMJqLGxer+C1yMxsfLcnFdUffrbYbPY5tA1bTEfsXlsZexduCK/k0BMwd35ewd68VrknRskYN8YCUUvHnVeWbMEtp1babP0yQsLG6vfhqoAodw7Nvr1MIMNqxvdZCbhgykC1nDC0D60Og/1h616OksO7gwDFjDuoar9Pihnt58gdEVLMuIOq9vukmNF+jhghCXiCAMWMi5T1ImYCP5+JnB+/wfp68TgRGYam55Jx6/HT2Hf98/jkv64wG824FJWMkNRQhGWF5tbIFacFFTkxW9SXCbSkYEDiONTJ2afQy5JCsCZiMC4ZY/FE0ti8BR259TBkyFgTPgTbwrvn193N+3cgIkzG7Afno7hDue8Nro01mUft62qkxOJ/EfkrbK7UmBnwz0lM7vpCsdm89dQqHMq5ZPfax5U74o6QGg49AX/uk7BspTHvDO/cBUYN6sl47JGSjwN3aIAybhZHi39y+R8cwiXEySHKaUzNA2PUHIJ9aZSAQQLiokNwJilDoxEyLHcQoJhxB1Xt90kxo/0cuSNCihl3UNV+nxQz2s8RIyQBTxCgmHGRsl7ETPb743DTzfFIiAgtmPFtx05j4KZG2GDqnvu7d7GLKW83k1UGxCafSjn/oX7OHqXNwcDrcMEUj04pC9ApbZENOQuMOGZsjHqWXFlT+LpoiMOsel/gcqowPbneRqw0EYV3Rzf/CFnFqJkhkU3xbvKfdnU1nsyuiHmBRY+rBuLTsvDz1U8Vm83mJ77ABUvR4jcyplZsg34VGjn8BBz4V8Jf+w3IyJBRqybQupUVQYEOd+NSg8rRwTh/KQtWkShefkGAYsYv0mw3SYoZ/8w7xYx/5p1ixj/zTjHjn3nnrEmgKAGKGRefCb2ImY/Xz8D4htF2s31heQQS0npAyjtGOv8GUUelZeYG9Ep+FZKiUQAhX76IHo/2lz9Ddcthu77S5AoIg/3KlGwE4a9R67BqjQHp6bnN4ioBjzxsQcvLCyG26OQdcFTQ5+LKt6P32Y02YwRJBjwr18Q05B8dnCclZCDYKuNwvQHFZrPJ8cW4JGfnjZFbl0Vco6NaYKROa7NQzLj4havD5hQzOkyaCiFTzKgAUYddUMzoMGkqhEwxowJEHXZBMaPDpDFkEnADAYoZF6HqRcz874/PsLCCOBZJbBzKL9wr4+4d9VD5iP0x00LMjDnfF3GW/2wIJQTUQ7AlDRWtZ+zIXZKjECmJ1SyFjvWVZWTJIbB88BUsVuD8eSAwUELF6FypUvvYQuQUs2Jme7X7sTPrLD5K+QdHzZfRyBSFoVHNsDP9FOal2teeMcgyTtTpX2w2bzm1CodV2srk4uOiWnOKGdVQ6qYjihndpErVQClmVMWpm84oZnSTKlUDpZhRFaduOqOY0U2qGCgJuJUAxYyLePUiZp468x3WZp4qMlsZHTfdgdqnattRCLSkY8rZu2GQrAX1VIRvyZRCkRBQH3Wz/7RtIwPnA2uhUs5xu77SDZHAu8uLJV2SmFldtStaBVW2azP0/DasSrMv5CtuPFW7X7FjDDn/Pb4UbZTFMvnSSBw3fDdaBjlW/NfFx0W15hQzqqHUTUcUM7pJlaqBUsyoilM3nVHM6CZVqgZKMaMqTt10RjGjm1QxUBJwKwGKGRfx6kXMNDvxBRLt6qwAdY/URfsdHezOdxEOY9rpOxEE20KjGYZwbIodiLvPvpkrOcTSmv/fFpRqiIIUGYGw5JN2RK2BYcic+WWxpO85/TV2Z523eU0cl324Vp9i7x+T+AM+TTlo95o4oeZE7b7FtlmTdhRPn/8+N9a8mGNMIdhZ/SGEGkwuPgHeaU4x4x3u3hyVYsab9L03NsWM99h7c2SKGW/S997YFDPeY+/NkSlmvEmfY5OAdghQzLiYC72ImRrHPoE1r1ZM4SmHZ4Six7LeuUV5C+1AEjVl3zzbAVKeeMlvI0sSVty9HlFbFqJFxmaEW5PxX2ATrAvvjyGGV2E6f8KOqBwciowZq4slfdycgodOr0OCJbf4jBAlM2Juxt1h9qt4xOvzLv2FiRd32fUVIplwqASZI26embwXK1KP4IwlDc2CYvFc1LW4Idh+RY6Lj4PHmlPMeAy1ZgaimNFMKjwaCMWMR3FrZjCKGc2kwqOBUMx4FLdmBqOY0UwqGAgJeJUAxYyL+HUjZo5/jOIO8KmYFYZuS3opFJTTkvIEjZA0rye0h1TMWpoTUzfhgw+NyCx00FHL62T0ODkBxj077I7LRrU6yJgwr1TSx3NSkCbn4KqAKJik/Bo49k3E6pp7Tq/Ne+HKcdmtgiphdbW7XMymfppTzOgnV2pFSjGjFkl99UMxo698qRUtxYxaJPXVD8WMvvKlVrQUM2qRZD8koG8CFDPlzF9KajrMFguiIyNsWuhFzDT+73NctmTZ1OUVE7nFWAP1P+pst2KmebUEPPrrI3b3y7KMjDkbkZ4B/HtQQnqahPh4GTVryDD+uRNB776Qr3gKzsXO6f40cjo+WE7SZd/W4dRqHMhJKnSjhE/iOuL20BplN/aROyhmfCSRDkyDYsYBWD50K8WMDyXTgalQzDgAy4dupZjxoWQ6MBWKGQdg8VYS8GECFDNlJDc9IxNjpnyAzT/8rtzZrEk9zJ4yHLEVI5W/60XMPHv+B3yRJmqzXDkuWvz5yypdcfir6ti3X1LOahIrZkJDgKcHmVF1/N2QzJk2xX8RHIr0GWuKp2a1IPj1ETAcE6cmiaU3MuTYasgcNwdySJhqX0bJ1iwsTDmA3ZnnEGsKwX2hddAupJpq/euhI4oZPWRJ3RgpZtTlqZfeKGb0kil146SYUZenXnqjmNFLptSNk2JGXZ7sjQT0SoBipozMfbj4ayz7aisWzR6PkOBAPD12BurUrIrJzw/QlZgRwXZMWI0D2RcVNSOK5T4QXgczY29R5pGWDhw6BMTFAVWr5EIxbV+HwM/fBmRxxLZYCGNA9mOjYb7xjpKpWSww7v8NhtPHYK1UDZamNwCmAL1+fWg2booZzabGbYFRzLgNraY7ppjRdHrcFhzFjNvQarpjihlNp8dtwVHMuA0tOyYBXRGgmCkjXQ89+RI6t2+NJx+5W7lz/dZfMGrie9i35SNIkqSbFTNOP5VmsyJaxGVp3BIw6fMUI6fnr9GGFDMaTYwbw6KYcSNcDXdNMaPh5LgxNIoZN8LVcNcUMxpOjhtDo5hxI1x2TQI6IkAxU0ayWncdhCljHlfkjLj+/vcYug+ciB+/eheREWFISc/xWroNBglhwSZYrTLSMs1ei4MDe55AWIgJ6ZkWiJo/vPyDgCjIHRYcgNQM733P8Q/S2pql0Sgh0GRERha/x2srM+6NJjBAbC6WkJ1jce9A7F1TBEKCjMgxW2G28L1dU4lxczDhIQFIy8xRygno6YoI5Yp4PeWLsWqfAMVMKTkSH3qb3tYf770yEre2aa7cefjYKdzbbzw2LnkTVSvHaD/DjJAESIAESIAESIAESIAESIAESIAESECzBChmykiNWDEzdewT6HRrK+VOrpjR7LPsV4FxxYxfpVuZLFfM+F/OxYy5YsY/884VM/6Zd66Y8c+8c8WMf+adsyaBogQoZsp4JkSNmS63XY8net+l3Ol3NWb4NaNJAqwxo8m0uDUo1phxK17Nds4aM5pNjVsDY40Zt+LVbOesMaPZ1Lg1MNaYcStedk4CuiFAMVNGquZ9thbL136vnMoUGhKEQWPe0u2pTLp5KhlomQQoZspE5HM3UMz4XErLNSGKmXJh8rmbKGZ8LqXlmhDFTLkw+dxNFDM+l1JOiAScIkAxUwa2tPRMjH75fWzbuVe5s2nDOpg9dQTiYqOUvyckZjgFXo1GJqOEuKhgpUjcueRMNbpkHzohQDGjk0SpGCbFjIowddQVxYyOkqViqBQzKsLUUVcUMzpKloqhUsyoCJNdkYCOCVDMlDN5l1LSkJNjRmzFSJsWFDPlBMjbVCVAMaMqTl10RjGjizSpHiTFjOpIddEhxYwu0qR6kBQzqiPVRYcUM7pIE4MkAbcToJhxETHFjIsA2dwpAhQzTmHTdSOKGV2nz+ngKWacRqfrhhQzuk6f08FTzDiNTtcNKWZ0nT4GTwKqEaCYcRGlN8VMgMmASpFByDFbcf5SloszYXM9EaCY0VO21ImVYkYdjnrrhWJGbxlTJ16KGXU46q0Xihm9ZUydeClm1OHIXkhA7wQoZvSeQcZPAiRAAiRAAiRAAiRAAiRAAiRAAiSgWwIUM7pNHQMnARIgARIgARIgARIgARIgARIgARLQOwGKGb1nkPGTAAmQAAmQAAmQAAmQAAmQAAmQAAnolgDFjG5Tlxv4haRLCAsNQUhwoM5nwvBLIpCRmY2LyZdRJS4GBlFopMiVnZ2Di5dSlSPcJcn+dZL1TQLMu2/mVczKapVxLvEiwkKCEREeajPRlNR0mC0WREdG+C4AP5yZyGli0mVUrhRd7Oz5Xu8bD4Usy7BYrTAZjQ7nmd/z9fsMlJZ3ceprVlaO8jNccRfzrt+8M3IScJQAxYyjxDRy/3+nzmLQmLdw/ORZJaIH7rwFL47qiwBT8W/2GgmbYThIYNj4mdj8w+9Kq4pREejWpR2eHdRD+bt4o39/4Rq8+9GqgtffmfYMmjep5+AovF2rBE6duYBu/V9Ar24dMOop5l2reVIrLiFdps76FF9t+FHpsnP71nhr4hDlz+kZmRgz5YOC7wfNmtTD7CnDEVsxUq3h2Y8XCAgh88qsz7Dh+13K6ELEDe3/AO7seIPyd77XeyEpbhxSfG3PmLcMm5fNsBmltDzzvd6NCfFQ18XlXcjWx4ZPK/g5vl6tanjykbtxT6e2/BnPQ3nhMCSgNQIUM1rLSDnjGfjcdISHhWDq2Cdx5lwiejw1CS+OfKzgG3o5u+FtGifwzoJV6NS+NWpWj8PO3/7GkHFv44v3X8Q1jevi930H0WfoVCyaPQ7XNKqLWfNX4utNP2HjkreKXVmj8akyvCIExIf0R4ZMweHjCXi8150FYoZ5981HRayS6fHURBgNBgzo1RXtbmiO1LSMgt+ifrj4ayz7aisWzR6vrJB8euwM1KlZFZOfH+CbQPxkVsvXfo/X3v0c6z9/Q5Hvq9Ztx7RZn+H7lW8jNCQYfK/3jQdBiJcnR0/HydPnlVVRRcVMaXnm93z9PgOl5f3chWR8+e123Nv5JmV15KLlG/DRkm+xbdUs5Xs8867fvDNyEnCWAMWMs+S82E4se2x7zxB8+s54XNu0gRLJ1JmLcOZcEmZPHeHFyDi0uwl06D4SD9/XAQP73IM35yzF/kPH8eH055RhxZv8bQ89g+XzJqFxg1ruDoX9u5GA+C360HFvo0qlGFxOTUd81dgCMcO8uxG8F7sWK+PECrlvPn0NteIr20Xy0JMvKStoxG9UxbV+6y8YNfE97NvyEbcwejFvrg793sdfYvX6H7Dmk2kICgxQVsh0fWQMNnyR+8sXvte7Slgb7cX3dLFCYvOO3/Hh4rU2Yqasn+n4PV8bOXQmitLyXrQ/Ie0693pO+WXbdddcxZ/xnAHONiSgcwIUMzpM4OFjp3Bvv/HYuuJtVIrJ3ZMqTLv44U58KOflmwTEtrU7+4zBe6+MxK1tmmP0y+8jOjIc40c8WjDhq9v3K3jdNyn4x6zEb8wPHT2JD15/FmOmzrURM8y7bz4DYtWEWD3R5bbrcejYKVSKicTjve4q2JrYuusgTBnzuCJnxPX3v8fQfeBE/PjVu4iMCPNNKH4wKyFixMo4sSVNCPd1W35WVsq8Om4g+F7vew/Aus0/4433v7ARM2Xlmd/z9f8cFJf3orMSq+VeeG0+tn85W1k9x7zrP++cAQk4SoBixlFiGrg/f3lj4R/Il361FXMWrrZbHquBcBmCCgTS0jPRZ+gUhIeF4uO3x8JoNChL3BvWq1lQc0YMIz68TRzdD3d1vFGFUdmFNwh8/uUmfLzkWyz9YCIiK4QpqyIKr5hh3r2RFfePOXzCLBw4dAL9enZB5dhofLvlF3y9aSfWLnwFtWtUQdPb+ttI1/wPcxuXvImqlWPcHyBHcAsBUdx9zNQ5SM/IwpHjCTh7/iJmTR6Oju2uK9jKwPd6t6D3SqfFfUAv62c6fs/3SqpUHbQsMXPw6En0HjwFfbt3xtAB9ytjM++qpoCdkYAuCFDM6CJNtkHm/0D+/cqZBYUfuWJGh4ksZ8jiB/cRE2YpW9UWzhqHqMhwpaX4bYr4rcq44X0KeuKKmXJC1fBtYimz2MpSv3Z1JcpNO3YrBUHzt7Ew7xpOnguhCTFTvUoljBnSS+nFYrGi/YMj8HTfbuh9f0dFuk4d+wQ63dpKeZ0rZlyAraGmM+Yuw96/D2PBW2OUgu4Ll63H9DlL8OVHU2CQJGV1LN/rNZQwF0MpbcVMSXnm93wXoWugeWliRhT5f3TYVLRu0QjTxj6p/OKNP+NpIGkMgQS8QIBixgvQXR2yuP3Ik2csxLkLF1ljxlW4Gmsv6osMf2EWMjKylG0t+VJGhCn2nR84/B/mvjFaiZo1ZjSWPCfDWbJ6M8TXeP715bc7UDGqAu65ow163teBeXeSq9abia/ng0dPYM5rzxaImRvvHowh/buhX48uEDVmxDanJ3rfpbzOGjNaz2j54uv51CRc1+yqAiEnikBf06G/Usy/S4cb7GrM8L2+fFy1eldxH9DL+pmO7/VazWb54ypJzBw6egr9R76KDjdfhwkjH7M5Rp15Lz9f3kkCvkKAYkanmXxi9BuoEB6m/AaVpzLpNIllhC2Wtj88aBJE8bgZk4YqhSDFZTAYUDWuYqGK/eOVU5pmfrgc32zayVOZfOxxKLqV6cpJDcy7L6VarJroPXiyIlqvb9EIX67fgYnTPy4o5j3vs7VKDRpxKlNoSBAGjXmLpzL5wAMw6a1PsHHbr/js3QmoUa0Svtv2G0a+9I5S/Ld6lVjwvd4Hkgwoq6HMZouyRVEcl71+8RuQDFLBB/HS8szv+fp9BkrL+4HDJ/DA4xOUrefDHn9A+dlOXOL7e3RkBH/G02/aGTkJOE2AYsZpdN5tePS/08oP5qKKu7i6dbkZE5/th4AAk3cD4+iqERC1BsQpTEUvsX1JFIcTb/jvfLQKcxauyXszD8bcN54tOKlLtUDYkVcJFBUzzLtX0+HWwT/6Yp2yjSX/EsV+7+/aTvmrqDMltjRs27lX+XvThnWUFZJxsbkF4Hnpk0DypVS8PW+5Uk9IXGIbo1ghdfcdbZS/871en3ktGrVYGXFf//E2/3xPp7ZKkeey8szv+fp9BkrLu1hFI76nF73ynwvmXb95Z+Qk4CwBihlnyWmknfjwLlZShIUGayQihuFpAplZ2Ui6eBlV4mJgMEieHp7jeYkA8+4l8G4eVuT1fGKy8vUcYDLajSa2PeTkmAvqi7k5HHbvIQL5x+pWqVSx2BH5Xu+hRHh5mNLyzO/5Xk6Ol4Zn3r0EnsOSgBcIUMx4ATqHJAESIAESIAESIAESIAESIAESIAESIAFBgGKGzwEJkAAJkAAJkAAJkAAJkAAJkAAJkAAJeIkAxYyXwHNYEiABEiABEiABEiABEiABEiABEiABEqCY4TNAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAl4iQDHjJfAclgRIgARIgARIgARIgARIgARIgARIgAQoZvgMkAAJkAAJkAAJkAAJkAAJkAAJkAAJkICXCFDMeAk8hyUBEiABEiABEiABEiABEiABEiABEiABihk+AyRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgJQIUM14Cz2FJgARIgARIgARIgARIgARIgARIgARIgGKGzwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJeIkAxYyXwHNYEiABEiABEiABEiABEiABEiABEiABEqCY4TNAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAl4iQDHjJfAclgRIgARIgARIgARIgARIgARIgARIgAQoZvgMkAAJkAAJkAAJkAAJkAAJkAAJkAAJkICXCFDMeAk8hyUBEiABEiABEiABEiABEiABEiABEiABihk+AyRAAiRAAiTgIoGU1HTs2vOP0kubVk0REhxY0OMffx9W/tysST0XRym5+dI1W7Bj15+YNXm428ZgxyRAAiRAAiRAAiRAAu4hQDHjHq7slQRIgARIwI8I7D94HA89+ZIy42cH9cCAh+8smP3wCbOUP7tTmsyavwJffrsDm5fN8CPqnCoJkAAJkAAJkAAJ+AYBihnfyCNnQQIkQAIk4EUC+WKmXq1qOH0uCRuXvonIiDAlIooZLyaGQ5MACZAACZAACZCADghQzOggSQyRBEiABEhA2wTyxczsqSMwbPxMPPXoPRj++IPlEjMTp38MySDhpVF9CyZptlgwdNzbaHdDMzzywB0YNfE9/HXgKE6ePo+KURG46fprMPLJ7qhcKVppU3TFzOiX30fLZlehV7eOBX1Om/UZoiLDMbjvfcq/WSxWfLryO6xY+z0OH0/AVXXjMeix+9C5fWvl9bPnL2Lmh8uxc/ffSEnNQMN6NdDz3ttwT6e22k4GoyMBEiABEiABEiABnRGgmNFZwhguCZAACZCA9gjki5nl8yZh3eafMf/zb7B1xduoFBNV5oqZxas2YerMRVj/+RuIr1pJmdwPu/Zh4HPTsfi9CWjepJ7SR4ur6yO+ahwuJl/GOx+tQsP6NfHh9OeKFTOdez2HTre2VrZV5V/9nnkVcTFReH3CIOWf3vpgKT7/cjN6deug1L/5dssvSuz5Y/YZOhUJZy9g2IAHEBQYiF17/8GZc0l4/9WR2ksAIyIBEiABEiABEiABHROgmNFx8hg6CZAACZCANggUFjNV42Jwx8Oj0a3LTRg/4tEyxcyly2loe+8QDOl/f8FqFrFC5uh/CVi1YIrNBLOyc3DxUospHegAAAiZSURBVAoWLduAj5d+iz82LYDRaLBbMVOWmEm8eBm33D8co57qgcd75dbDEat02tw9BA/edQuee/phNOs4AL3v76jMIf/KyMy2KWysDfqMggRIgARIgARIgAT0TYBiRt/5Y/QkQAIkQAIaIFBYzDRuUAvzPluLt+ctx7rPXsf0OV8oEZZW/Hf8qx9i28692LLibVxOSUe7bsMwcXQ/dL+7vdJ2/dZfMGfhGvx75KTNbPd89yECAkwOi5lf9x5A3xGvKCt0IsJDC/oU82jftgXenfaMsn1KjHtt0wa48bomuLVNc1zTuK4GaDMEEiABEiABEiABEvAtAhQzvpVPzoYESIAESMALBIqKmfSMTNz6wDPo2O46iD+XJWZ+33cQYuvQnNdG4b9TZyHqwfz89fsIDwsp2NbUrcvNSo2X+Gpx2LTjN4jaNKWJmdvbtcRzgx8uoFF4K9P2n//EoDFvYtzwPqhZPc6GWFRkBK5pVEdZQfPluh34/qc92Ll7vzKPJ3rfhZEDu3uBMIckARIgARIgARIgAd8lQDHju7nlzEiABEiABDxEoKiYEcN+sXozJs9YqBTrvfaaBmUel31v33GoW6sajhxPQKsWjfDiyMeU6MXKG7ECZ8/G+QgwGZV/W7VuO154bX6JYqbX4MmoW7Mqpo59ooDAo8OmoWpcRaXGzH+nzqHrI88rBYd73HubDSVZliFJklIcWGyTEldOjhkT3liArzb8WLB9ykNoOQwJkAAJkAAJkAAJ+DwBihmfTzEnSAIkQAIk4G4CxYmZ7OwcdHnkeeV0I7FyprStTIVFjvizKCIstkSJ6/uf9mLw/2YodV9atWiIvw8cw+wFK5GUnFKimBEiZ+6na/HGhEEIDg7EmvU/YPX6H3BXxxsLiv+KgsKbtu/GpNH9lROcRN0ZsZ3KYDCg/8Nd0evplzG0/wNo2qgO0tIzlBU6FqsVy+ZOVMQNLxIgARIgARIgARIgAXUIUMyow5G9kAAJkAAJ+DGBfDGz4sOX0ah+zQISa7/7CWOmflAuMXMpJQ1t7xmCpg3rYMkHLxX0IbYUjZs2D19v2qn8m1iBI05o2vzD7wViRogasYpm87IZyj0JZy5g4psfK9ugxCXE0KGjp5QaMa+Nf0r5NzGeWI2zdM2WgrFE32J7U/u212LYCzPx069/Fbwm+hjx+IOoV7u6H2eaUycBEiABEiABEiAB9QlQzKjPlD2SAAmQAAmQgOoExOlNl1JSUb1KpYItRmUNcu5CMoKCAhAZEVbirUL8nL+QrKysiY6MsLlPnAJ17sJFVI6NRmBgQFnD8XUSIAESIAESIAESIAEnCFDMOAGNTUiABEiABEiABEiABEiABEiABEiABEhADQIUM2pQZB8kQAIkQAIkQAIkQAIkQAIkQAIkQAIk4AQBihknoLEJCZAACZAACZAACZAACZAACZAACZAACahBgGJGDYrsgwRIgARIgARIgARIgARIgARIgARIgAScIEAx4wQ0NiEBEiABEiABEiABEiABEiABEiABEiABNQhQzKhBkX2QAAmQAAmQAAmQAAmQAAmQAAmQAAmQgBMEKGacgMYmJEACJEACJEACJEACJEACJEACJEACJKAGAYoZNSiyDxIgARIgARIgARIgARIgARIgARIgARJwggDFjBPQ2IQESIAESIAESIAESIAESIAESIAESIAE1CBAMaMGRfZBAiRAAiRAAiRAAiRAAiRAAiRAAiRAAk4QoJhxAhqbkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIAaBChm1KDIPkiABEiABEiABEiABEiABEiABEiABEjACQIUM05AYxMSIAESIAESIAESIAESIAESIAESIAESUIMAxYwaFNkHCZAACZAACZAACZAACZAACZAACZAACThBgGLGCWhsQgIkQAIkQAIkQAIkQAIkQAIkQAIkQAJqEKCYUYMi+yABEiABEiABEiABEiABEiABEiABEiABJwhQzDgBjU1IgARIgARIgARIgARIgARIgARIgARIQA0CFDNqUGQfJEACJEACJEACJEACJEACJEACJEACJOAEAYoZJ6CxCQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmoQYBiRg2K7IMESIAESIAESIAESIAESIAESIAESIAEnCBAMeMENDYhARIgARIgARIgARIgARIgARIgARIgATUIUMyoQZF9kAAJkAAJkAAJkAAJkAAJkAAJkAAJkIATBChmnIDGJiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSgBgGKGTUosg8SIAESIAESIAESIAESIAESIAESIAEScIIAxYwT0NiEBEiABEiABEiABEiABEiABEiABEiABNQgQDGjBkX2QQIkQAIkQAIkQAIkQAIkQAIkQAIkQAJOEKCYcQIam5AACZAACZAACZAACZAACZAACZAACZCAGgQoZtSgyD5IgARIgARIgARIgARIgARIgARIgARIwAkCFDNOQGMTEiABEiABEiABEiABEiABEiABEiABElCDAMWMGhTZBwmQAAmQAAmQAAmQAAmQAAmQAAmQAAk4QYBixglobEICJEACJEACJEACJEACJEACJEACJEACahCgmFGDIvsgARIgARIgARIgARIgARIgARIgARIgAScIUMw4AY1NSIAESIAESIAESIAESIAESIAESIAESEANAhQzalBkHyRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgBAGKGSegsQkJkAAJkAAJkAAJkAAJkAAJkAAJkAAJqEGAYkYNiuyDBEiABEiABEiABEiABEiABEiABEiABJwgQDHjBDQ2IQESIAESIAESIAESIAESIAESIAESIAE1CFDMqEGRfZAACZAACZAACZAACZAACZAACZAACZCAEwQoZpyAxiYkQAIkQAIkQAIkQAIkQAIkQAIkQAIkoAaB/wPBoDZ5E6UqKwAAAABJRU5ErkJggg==", + "text/html": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - [ - 0.6666666666666666, - "#ed7953" + "source": [ + "### comment out langfuse code \n", + "# px.scatter(\n", + "# results, \n", + "# y='latencies',\n", + "# x='N values',\n", + "# color='Schema',\n", + "# title='Latency v.s. number of values', \n", + "# # boxmode='overlay',\n", + "# width=700,\n", + "# ).update_layout(\n", + "# # xaxis_title='Schemas',\n", + "# yaxis_title='Latency (s)',\n", + "# # yaxis_dtick=0.1,\n", + "# # showlegend=False,\n", + "# )" + ] + }, + { + "cell_type": "markdown", + "id": "f23f3bb1-f77f-4aff-955c-6caf868d1290", + "metadata": {}, + "source": [ + "## Manual extraction v.s. corrected concensus review" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "df79f495-1bb9-44e5-8201-b29f1cd2147a", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/json": { + "ascii": false, + "bar_format": null, + "colour": null, + "elapsed": 0.0024170875549316406, + "initial": 0, + "n": 0, + "ncols": null, + "nrows": 56, + "postfix": null, + "prefix": "", + "rate": null, + "total": null, + "unit": "it", + "unit_divisor": 1000, + "unit_scale": false + }, + "application/vnd.jupyter.widget-view+json": { + "model_id": "e777ef84d7ee4da2a329e729284f48d5", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "0it [00:00, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "{'ngufor2016efficacy': {'Observation': (3, 3),\n", + " 'ITNCondition': (21, 6),\n", + " 'EntomologicalOutcome': (12, 7)},\n", + " 'okia2013bioefficacy': {'Observation': (4, 7),\n", + " 'ITNCondition': (5, 6),\n", + " 'EntomologicalOutcome': (18, 6),\n", + " 'ClinicalOutcome': (8, 3)},\n", + " 'mosha2008comparative': {'Observation': (1, 7),\n", + " 'ITNCondition': (2, 5),\n", + " 'EntomologicalOutcome': (3, 11),\n", + " 'ClinicalOutcome': (2, 15)},\n", + " 'quinones1997anopheles': {'Observation': (4, 7),\n", + " 'ITNCondition': (3, 3),\n", + " 'EntomologicalOutcome': (8, 3),\n", + " 'ClinicalOutcome': (1, 1)},\n", + " 'ahoua2012status': {'Observation': (2, 7),\n", + " 'ITNCondition': (2, 5),\n", + " 'EntomologicalOutcome': (6, 8),\n", + " 'ClinicalOutcome': (2, 9)},\n", + " 'sreehari2009wash': {'Observation': (1, 5),\n", + " 'ITNCondition': (4, 6),\n", + " 'EntomologicalOutcome': (8, 10),\n", + " 'ClinicalOutcome': (13, 5)},\n", + " 'abdulla2005spatial': {'Observation': (1, 7),\n", + " 'ITNCondition': (3, 1),\n", + " 'EntomologicalOutcome': (3, 1),\n", + " 'ClinicalOutcome': (2, 3)},\n", + " 'tan2016longitudinal': {'Observation': (1, 5),\n", + " 'ITNCondition': (2, 8),\n", + " 'EntomologicalOutcome': (2, 5),\n", + " 'ClinicalOutcome': (1, 3)},\n", + " 'wills2013physical': {'Observation': (19, 7),\n", + " 'ITNCondition': (7, 4),\n", + " 'EntomologicalOutcome': (2, 5),\n", + " 'ClinicalOutcome': (14, 4)},\n", + " 'marchant2002socially': {'Observation': (1, 7),\n", + " 'ITNCondition': (2, 5),\n", + " 'EntomologicalOutcome': (2, 5),\n", + " 'ClinicalOutcome': (30, 3)},\n", + " 'nevill1996insecticide': {'Observation': (2, 7),\n", + " 'ITNCondition': (1, 10),\n", + " 'EntomologicalOutcome': (1, 2),\n", + " 'ClinicalOutcome': (4, 7)},\n", + " 'msuya1991trial': {'Observation': (10, 7),\n", + " 'ITNCondition': (3, 3),\n", + " 'EntomologicalOutcome': (5, 4),\n", + " 'ClinicalOutcome': (1, 2)},\n", + " 'tungu2021efficacy': {'Observation': (1, 5),\n", + " 'ITNCondition': (3, 7),\n", + " 'EntomologicalOutcome': (12, 10),\n", + " 'ClinicalOutcome': (3, 4)}}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 0.7777777777777778, - "#fb9f3a" + "source": [ + "true_extractions = {}\n", + "for ref, paper in tqdm(papers.loc[references].iterrows()):\n", + " true_extractions[paper.name] = get_paper_extractions(\n", + " paper, extraction_dataset, schemas=ss, field='extraction', answer='extraction-correction')\n", + "{ref: {k: v.shape for k,v in ext.items() if v.size} for ref, ext in true_extractions.items()}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f8dcabcb-642b-4e73-a0d8-21bd066cf875", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/json": { + "ascii": false, + "bar_format": null, + "colour": null, + "elapsed": 0.003042936325073242, + "initial": 0, + "n": 0, + "ncols": null, + "nrows": 56, + "postfix": null, + "prefix": "", + "rate": null, + "total": null, + "unit": "it", + "unit_divisor": 1000, + "unit_scale": false + }, + "application/vnd.jupyter.widget-view+json": { + "model_id": "14190dd7b01443b79e2f2b9f9399c093", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "0it [00:00, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "{'ngufor2016efficacy': {},\n", + " 'okia2013bioefficacy': {},\n", + " 'mosha2008comparative': {},\n", + " 'quinones1997anopheles': {},\n", + " 'ahoua2012status': {},\n", + " 'sreehari2009wash': {},\n", + " 'abdulla2005spatial': {},\n", + " 'tan2016longitudinal': {},\n", + " 'wills2013physical': {},\n", + " 'marchant2002socially': {},\n", + " 'nevill1996insecticide': {},\n", + " 'msuya1991trial': {},\n", + " 'tungu2021efficacy': {}}" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 0.8888888888888888, - "#fdca26" + "source": [ + "pred_extractions = {}\n", + "for ref, paper in tqdm(papers.loc[references].iterrows()):\n", + " pred_extractions[paper.name] = get_paper_extractions(\n", + " paper, extraction_dataset, schemas=ss, field='extraction', \n", + " answer='extraction-correction', suggestion='extraction-correction', \n", + " user=username_to_user['jonnytr'])\n", + "{ref: {k: v.shape for k,v in ext.items() if v.size} for ref, ext in pred_extractions.items()}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9c5d61b8-aa13-4eae-b68c-0723ac5aa5e0", + "metadata": {}, + "outputs": [], + "source": [ + "pred_extractions = {ref: paper_extraction for ref, paper_extraction in pred_extractions.items() \\\n", + " if not all([df.empty for df in paper_extraction.extractions.values()])}\n", + "true_extractions = {ref: paper_extraction for ref, paper_extraction in true_extractions.items() \\\n", + " if ref in pred_extractions}" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4c4f48f5-c405-4a37-9aa1-202fcd20ac55", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 1, - "#f0f921" + "source": [ + "len(true_extractions)" ] - ], - "sequentialminus": [ - [ - 0, - "#0d0887" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "08d27b5e-c786-44fa-bd9c-5aa07547d8ac", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮\n",
+                            " in <module>:1                                                                                    \n",
+                            "                                                                                                  \n",
+                            " 1 suggestion_metrics = grits_from_batch(true_extractions, pred_extractions, exclude_column     \n",
+                            "   2                                                                                              \n",
+                            "   3 suggestion_metrics.style.background_gradient(axis=1, vmin=0, vmax=1, cmap='RdYlGn')          \n",
+                            "   4                                                                                              \n",
+                            "                                                                                                  \n",
+                            " /Users/jonnytr/Projects/extralit/src/extralit/metrics/extraction.py:51 in grits_from_batch       \n",
+                            "                                                                                                  \n",
+                            "    48 │   │   │   │   raise ValueError(f\"Invalid type for true_extractions: {type(true_extract   \n",
+                            "    49                                                                                        \n",
+                            "    50                                                                                        \n",
+                            "  51 metrics_df = pd.concat(metrics, axis=0)                                                \n",
+                            "    52 metrics_df.index.names = index_names[:metrics_df.index.nlevels]                        \n",
+                            "    53                                                                                        \n",
+                            "    54 if compute_mean:                                                                       \n",
+                            "                                                                                                  \n",
+                            " /Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/concat.py:382 in      \n",
+                            " concat                                                                                           \n",
+                            "                                                                                                  \n",
+                            "   379 elif copy and using_copy_on_write():                                                   \n",
+                            "   380 │   │   copy = False                                                                       \n",
+                            "   381                                                                                        \n",
+                            " 382 op = _Concatenator(                                                                    \n",
+                            "   383 │   │   objs,                                                                              \n",
+                            "   384 │   │   axis=axis,                                                                         \n",
+                            "   385 │   │   ignore_index=ignore_index,                                                         \n",
+                            "                                                                                                  \n",
+                            " /Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/concat.py:445 in      \n",
+                            " __init__                                                                                         \n",
+                            "                                                                                                  \n",
+                            "   442 │   │   self.verify_integrity = verify_integrity                                           \n",
+                            "   443 │   │   self.copy = copy                                                                   \n",
+                            "   444 │   │                                                                                      \n",
+                            " 445 │   │   objs, keys = self._clean_keys_and_objs(objs, keys)                                 \n",
+                            "   446 │   │                                                                                      \n",
+                            "   447 │   │   # figure out what our result ndim is going to be                                   \n",
+                            "   448 │   │   ndims = self._get_ndims(objs)                                                      \n",
+                            "                                                                                                  \n",
+                            " /Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/concat.py:507 in      \n",
+                            " _clean_keys_and_objs                                                                             \n",
+                            "                                                                                                  \n",
+                            "   504 │   │   │   objs_list = list(objs)                                                         \n",
+                            "   505 │   │                                                                                      \n",
+                            "   506 │   │   if len(objs_list) == 0:                                                            \n",
+                            " 507 │   │   │   raise ValueError(\"No objects to concatenate\")                                  \n",
+                            "   508 │   │                                                                                      \n",
+                            "   509 │   │   if keys is None:                                                                   \n",
+                            "   510 │   │   │   objs_list = list(com.not_none(*objs_list))                                     \n",
+                            "╰──────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
+                            "ValueError: No objects to concatenate\n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[31m╭─\u001b[0m\u001b[31m──────────────────────────────\u001b[0m\u001b[31m \u001b[0m\u001b[1;31mTraceback \u001b[0m\u001b[1;2;31m(most recent call last)\u001b[0m\u001b[31m \u001b[0m\u001b[31m───────────────────────────────\u001b[0m\u001b[31m─╮\u001b[0m\n", + "\u001b[31m│\u001b[0m in \u001b[92m\u001b[0m:\u001b[94m1\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m1 suggestion_metrics = grits_from_batch(true_extractions, pred_extractions, exclude_column \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m2 \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m3 \u001b[0msuggestion_metrics.style.background_gradient(axis=\u001b[94m1\u001b[0m, vmin=\u001b[94m0\u001b[0m, vmax=\u001b[94m1\u001b[0m, cmap=\u001b[33m'\u001b[0m\u001b[33mRdYlGn\u001b[0m\u001b[33m'\u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m4 \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/Projects/extralit/src/extralit/metrics/\u001b[0m\u001b[1;33mextraction.py\u001b[0m:\u001b[94m51\u001b[0m in \u001b[92mgrits_from_batch\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 48 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mraise\u001b[0m \u001b[96mValueError\u001b[0m(\u001b[33mf\u001b[0m\u001b[33m\"\u001b[0m\u001b[33mInvalid type for true_extractions: \u001b[0m\u001b[33m{\u001b[0m\u001b[96mtype\u001b[0m(true_extract \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 49 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 50 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 51 \u001b[2m│ \u001b[0mmetrics_df = pd.concat(metrics, axis=\u001b[94m0\u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 52 \u001b[0m\u001b[2m│ \u001b[0mmetrics_df.index.names = index_names[:metrics_df.index.nlevels] \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 53 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 54 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mif\u001b[0m compute_mean: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/\u001b[0m\u001b[1;33mconcat.py\u001b[0m:\u001b[94m382\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92mconcat\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m379 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94melif\u001b[0m copy \u001b[95mand\u001b[0m using_copy_on_write(): \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m380 \u001b[0m\u001b[2m│ │ \u001b[0mcopy = \u001b[94mFalse\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m381 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m382 \u001b[2m│ \u001b[0mop = _Concatenator( \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m383 \u001b[0m\u001b[2m│ │ \u001b[0mobjs, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m384 \u001b[0m\u001b[2m│ │ \u001b[0maxis=axis, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m385 \u001b[0m\u001b[2m│ │ \u001b[0mignore_index=ignore_index, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/\u001b[0m\u001b[1;33mconcat.py\u001b[0m:\u001b[94m445\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92m__init__\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m442 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[96mself\u001b[0m.verify_integrity = verify_integrity \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m443 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[96mself\u001b[0m.copy = copy \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m444 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m445 \u001b[2m│ │ \u001b[0mobjs, keys = \u001b[96mself\u001b[0m._clean_keys_and_objs(objs, keys) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m446 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m447 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[2m# figure out what our result ndim is going to be\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m448 \u001b[0m\u001b[2m│ │ \u001b[0mndims = \u001b[96mself\u001b[0m._get_ndims(objs) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/\u001b[0m\u001b[1;33mconcat.py\u001b[0m:\u001b[94m507\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92m_clean_keys_and_objs\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m504 \u001b[0m\u001b[2m│ │ │ \u001b[0mobjs_list = \u001b[96mlist\u001b[0m(objs) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m505 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m506 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m \u001b[96mlen\u001b[0m(objs_list) == \u001b[94m0\u001b[0m: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m507 \u001b[2m│ │ │ \u001b[0m\u001b[94mraise\u001b[0m \u001b[96mValueError\u001b[0m(\u001b[33m\"\u001b[0m\u001b[33mNo objects to concatenate\u001b[0m\u001b[33m\"\u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m508 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m509 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m keys \u001b[95mis\u001b[0m \u001b[94mNone\u001b[0m: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m510 \u001b[0m\u001b[2m│ │ │ \u001b[0mobjs_list = \u001b[96mlist\u001b[0m(com.not_none(*objs_list)) \u001b[31m│\u001b[0m\n", + "\u001b[31m╰──────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n", + "\u001b[1;91mValueError: \u001b[0mNo objects to concatenate\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - [ - 0.1111111111111111, - "#46039f" + "source": [ + "suggestion_metrics = grits_from_batch(true_extractions, pred_extractions, exclude_columns=['Site'])\n", + "\n", + "suggestion_metrics.style.background_gradient(axis=1, vmin=0, vmax=1, cmap='RdYlGn')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d0d7a119-fde2-47dd-be75-85b00b88779d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
 grits
 con
 f1precisionrecall
Schema   
Easy97.4%97.4%97.9%
Hard89.2%88.3%95.7%
\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 100, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 0.2222222222222222, - "#7201a8" + "source": [ + "df = suggestion_metrics.query(\"Schema != 'ClinicalOutcome'\").groupby('Schema').mean()\n", + "df.groupby({'Observation': 'Easy', 'ITNCondition': 'Easy', 'EntomologicalOutcome': 'Hard', 'ClinicalOutcome': 'Hard'})\\\n", + " .mean(0).map(lambda n: '{:.1%}'.format(n)).style.background_gradient(axis=1, vmin=0, vmax=1, cmap='RdYlGn')" + ] + }, + { + "cell_type": "markdown", + "id": "da89f632-e7d0-4b56-95ba-fce00365e23d", + "metadata": {}, + "source": [ + "# Push new extraction records" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3ba02a63-d4a0-4fff-bcf9-325d9cbf8302", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
[10/30/24 12:40:53] WARNING  WARNING:patch_pipeline_export_record:No             patch_pipeline_export_record.py:80\n",
+                            "                             ClinicalOutcome extraction for                                                        \n",
+                            "                             ibrahim2020exploring, generating an empty table.                                      \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m[10/30/24 12:40:53]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m WARNING:patch_pipeline_export_record:No \u001b]8;id=75945;file:///Users/bertozzivill/repos/ITN-recal-data-extraction/patch_pipeline_export_record.py\u001b\\\u001b[2mpatch_pipeline_export_record.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=349027;file:///Users/bertozzivill/repos/ITN-recal-data-extraction/patch_pipeline_export_record.py#80\u001b\\\u001b[2m80\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m ClinicalOutcome extraction for \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m ibrahim2020exploring, generating an empty table. \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                    WARNING  WARNING:patch_pipeline_export_record:No             patch_pipeline_export_record.py:80\n",
+                            "                             ClinicalOutcome extraction for                                                        \n",
+                            "                             meiwald2022association, generating an empty table.                                    \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m WARNING:patch_pipeline_export_record:No \u001b]8;id=862372;file:///Users/bertozzivill/repos/ITN-recal-data-extraction/patch_pipeline_export_record.py\u001b\\\u001b[2mpatch_pipeline_export_record.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=400002;file:///Users/bertozzivill/repos/ITN-recal-data-extraction/patch_pipeline_export_record.py#80\u001b\\\u001b[2m80\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m ClinicalOutcome extraction for \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m meiwald2022association, generating an empty table. \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "60" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 0.3333333333333333, - "#9c179e" + "source": [ + "records = create_extraction_records(pred_extractions, responses=responses, papers=papers, dataset=extraction_dataset)\n", + "len(records)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d682b346-0558-4dcd-907f-0a18e3a12ba1", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", + " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None)]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 0.4444444444444444, - "#bd3786" + "source": [ + "records" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3848fe73-6a8b-407a-853f-ef59ff375c49", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "5bed2c016bc34fc0aeb28917490a5c19", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+                        ],
+                        "text/plain": []
+                    },
+                    "metadata": {},
+                    "output_type": "display_data"
+                }
             ],
-            [
-             0.5555555555555556,
-             "#d8576b"
+            "source": [
+                "extraction_dataset.add_records(records)"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "1a820435-53f2-4c15-a88a-afc4854309bf",
+            "metadata": {},
+            "source": [
+                "## Update existing records"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": null,
+            "id": "c5857206-5713-416a-a24e-11b9470acc89",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "record_updates = []\n",
+                "\n",
+                "for record in tqdm(extraction_dataset.records):\n",
+                "    reference = record.metadata['reference']\n",
+                "    schema_name = record.metadata['type']\n",
+                "\n",
+                "    update_record = next((r for r in records if reference == r.metadata['reference'] and schema_name == r.metadata['type']), None)\n",
+                "    if update_record:\n",
+                "        record.fields = update_record.fields\n",
+                "        record_updates.append(record)\n",
+                "        \n",
+                "len(record_updates)"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "4879c50f-b033-424d-a131-caefd2ecc5d7",
+            "metadata": {
+                "scrolled": true
+            },
+            "source": [
+                "## Delete records"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": null,
+            "id": "ca9c0dec-66a0-4435-8a8e-c17a177c6d59",
+            "metadata": {},
+            "outputs": [
+                {
+                    "data": {
+                        "text/plain": [
+                            "120"
+                        ]
+                    },
+                    "execution_count": 33,
+                    "metadata": {},
+                    "output_type": "execute_result"
+                }
             ],
-            [
-             0.6666666666666666,
-             "#ed7953"
+            "source": [
+                "delete_records = [r for r in extraction_dataset.records if r.metadata['reference'] in references]\n",
+                "len(delete_records)"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": null,
+            "id": "6f4e31d4-aa51-48fe-9ec4-959b81cb0c67",
+            "metadata": {},
+            "outputs": [
+                {
+                    "data": {
+                        "text/plain": [
+                            "[RemoteFeedbackRecord(id=UUID('5a126d29-a23e-4d99-a397-1377a42f1fc3'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'pmid': '35987650', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'type': 'Observation'}, vectors={}, responses={'ameliabv': []}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886419), updated_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886419)),\n",
+                            " RemoteFeedbackRecord(id=UUID('3d52cd67-668a-4576-bbc5-ad4fd26d0687'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'pmid': '35987650', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886422), updated_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886422)),\n",
+                            " RemoteFeedbackRecord(id=UUID('bd1e7479-a11e-48f4-9716-8d2bfd3d578b'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'pmid': '35987650', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886426), updated_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886426)),\n",
+                            " RemoteFeedbackRecord(id=UUID('071dfaca-7719-43f6-a102-341f905626ab'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'pmid': '35987650', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886429), updated_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886429)),\n",
+                            " RemoteFeedbackRecord(id=UUID('1e89a75b-6181-4099-b776-199cbd5d2658'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323669), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323669)),\n",
+                            " RemoteFeedbackRecord(id=UUID('f6baf956-bf8d-4bde-9620-bbf4a13f1f9c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323672), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323672)),\n",
+                            " RemoteFeedbackRecord(id=UUID('73772b4f-fd49-4eb4-a7ec-941ed0f44ab4'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323676), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323676)),\n",
+                            " RemoteFeedbackRecord(id=UUID('f1150462-13d5-4156-8038-1e43268be3ed'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323679), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323679)),\n",
+                            " RemoteFeedbackRecord(id=UUID('22f6a703-064e-499b-8e6a-3e58dea2e3cb'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ITNCondition'}, vectors={}, responses={'ameliabv': []}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323697), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323697)),\n",
+                            " RemoteFeedbackRecord(id=UUID('1ee9ac1c-073d-4419-a3b2-61e45a4b4cd8'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323700), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323700)),\n",
+                            " RemoteFeedbackRecord(id=UUID('52fbcf88-2b38-45f7-8009-95840f3f7a7c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323703), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323703)),\n",
+                            " RemoteFeedbackRecord(id=UUID('11325543-96e0-4834-866c-5021f4d88997'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323707), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323707)),\n",
+                            " RemoteFeedbackRecord(id=UUID('fe766984-57eb-44e6-a129-321768753d8d'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ITNCondition'}, vectors={}, responses={'ameliabv': []}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323710), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323710)),\n",
+                            " RemoteFeedbackRecord(id=UUID('8dc5c719-b0ef-4f24-8b47-e7b24a070883'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323714), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323714)),\n",
+                            " RemoteFeedbackRecord(id=UUID('96e69e8d-0a60-4162-a14b-482529091255'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323717), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323717)),\n",
+                            " RemoteFeedbackRecord(id=UUID('29e87dfc-19b7-4539-9ed8-9c4fd2895f65'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323721), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323721)),\n",
+                            " RemoteFeedbackRecord(id=UUID('22d763c5-b616-486b-ac39-841da4fbad9f'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ITNCondition'}, vectors={}, responses={'ameliabv': []}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323724), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323724)),\n",
+                            " RemoteFeedbackRecord(id=UUID('4eb3a1b3-41cb-4fe2-909b-b348d18caffa'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323727), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323727)),\n",
+                            " RemoteFeedbackRecord(id=UUID('898f9522-3ae5-40c7-9b08-c9bc10ad318a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323731), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323731)),\n",
+                            " RemoteFeedbackRecord(id=UUID('78771d04-3ebc-44b8-a5c1-e86dcb264bca'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323734), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323734)),\n",
+                            " RemoteFeedbackRecord(id=UUID('cbc3d3d5-93fb-4f43-816d-6a3b6d4fb99c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323737), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323737)),\n",
+                            " RemoteFeedbackRecord(id=UUID('c5932a80-5e62-4676-bd2d-ee72b3c2986f'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323741), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323741)),\n",
+                            " RemoteFeedbackRecord(id=UUID('aa210166-345f-42a9-8b20-eeb111b95e41'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323744), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323744)),\n",
+                            " RemoteFeedbackRecord(id=UUID('44418262-04e4-49f9-b1a8-d39ab3ba0db9'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323747), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323747)),\n",
+                            " RemoteFeedbackRecord(id=UUID('f566c9a9-4f99-464f-b939-b82a0c77e35d'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852517), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852517)),\n",
+                            " RemoteFeedbackRecord(id=UUID('f6f42420-1cb5-4110-9722-5062077e7e41'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852528), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852528)),\n",
+                            " RemoteFeedbackRecord(id=UUID('f417165b-e9fb-44ad-a5a1-1ccd3f3e9a9b'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852531), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852531)),\n",
+                            " RemoteFeedbackRecord(id=UUID('76155a5f-9295-426d-87e4-25bba9eccd7e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852535), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852535)),\n",
+                            " RemoteFeedbackRecord(id=UUID('597ab1b7-637f-46cd-a3c9-adc1ff5636bf'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852539), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852539)),\n",
+                            " RemoteFeedbackRecord(id=UUID('8ffe47bc-f2f8-4b67-8176-602b1e6e9a67'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852543), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852543)),\n",
+                            " RemoteFeedbackRecord(id=UUID('647e504d-dd6f-42a8-a14b-40f1dda20f6a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852546), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852546)),\n",
+                            " RemoteFeedbackRecord(id=UUID('be3ab3df-313b-4429-9f7e-1d75995f12eb'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852550), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852550)),\n",
+                            " RemoteFeedbackRecord(id=UUID('aedb3853-a8fe-4a1b-8f17-6652365ebcf8'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '36726160', 'doi': '10.1111/mve.12316', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852553), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852553)),\n",
+                            " RemoteFeedbackRecord(id=UUID('03511a36-bc9e-47cd-8e88-d50fd9caec55'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '36726160', 'doi': '10.1111/mve.12316', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852556), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852556)),\n",
+                            " RemoteFeedbackRecord(id=UUID('2bf35187-765b-4fb6-8935-4d046584b76e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '36726160', 'doi': '10.1111/mve.12316', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852560), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852560)),\n",
+                            " RemoteFeedbackRecord(id=UUID('59cedb58-c565-4865-b41b-8f3364396d32'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '36726160', 'doi': '10.1111/mve.12316', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852563), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852563)),\n",
+                            " RemoteFeedbackRecord(id=UUID('0c8b02a4-a557-43fc-b1e1-b1d4da6b1f16'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852580), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852580)),\n",
+                            " RemoteFeedbackRecord(id=UUID('042e6118-77b6-442f-b4a8-d950bb6ce975'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852584), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852584)),\n",
+                            " RemoteFeedbackRecord(id=UUID('a0fc80f6-9539-4e45-a5e9-36566f9bfb65'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852587), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852587)),\n",
+                            " RemoteFeedbackRecord(id=UUID('39467d2b-3c6f-441a-95e0-e677ad6c9b25'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852591), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852591)),\n",
+                            " RemoteFeedbackRecord(id=UUID('7f243860-1f22-4ec8-8f5b-baaec90375be'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852595), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852595)),\n",
+                            " RemoteFeedbackRecord(id=UUID('7be3b6ef-0382-43bb-8dd3-206159fe6cb6'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852598), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852598)),\n",
+                            " RemoteFeedbackRecord(id=UUID('5e415fa8-70ca-4527-8072-427aa689d100'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852602), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852602)),\n",
+                            " RemoteFeedbackRecord(id=UUID('f27980e4-aed5-4b23-8714-ac8103dcdf45'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852605), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852605)),\n",
+                            " RemoteFeedbackRecord(id=UUID('365017c6-68b0-4ad3-b8cd-9d3dd270a08c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ITNCondition'}, vectors={}, responses={'ameliabv': []}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852608), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852608)),\n",
+                            " RemoteFeedbackRecord(id=UUID('eeb02640-b086-439b-8e93-85ae70ff147a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852629), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852629)),\n",
+                            " RemoteFeedbackRecord(id=UUID('48dbf463-8539-4edb-a21b-6e7ba62f47ac'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852632), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852632)),\n",
+                            " RemoteFeedbackRecord(id=UUID('b6eba409-42a7-4a5b-8e33-d6a451c50408'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852636), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852636)),\n",
+                            " RemoteFeedbackRecord(id=UUID('3b4ec76a-d392-45cf-9d2d-746bc676a5ee'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852639), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852639)),\n",
+                            " RemoteFeedbackRecord(id=UUID('085c5c49-2f38-4bb2-bfee-1213520d7920'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852643), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852643)),\n",
+                            " RemoteFeedbackRecord(id=UUID('90fcbcb8-5a61-4ab7-8736-a91a1ac316be'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852646), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852646)),\n",
+                            " RemoteFeedbackRecord(id=UUID('cbca3a2b-03dd-49e1-a93e-91b0f6128c6e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852649), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852649)),\n",
+                            " RemoteFeedbackRecord(id=UUID('5d687132-1687-4bf4-a068-075c0304f7bd'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342445), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342445)),\n",
+                            " RemoteFeedbackRecord(id=UUID('28a85c80-e8d5-4db0-afcf-9a5f7b0e27ac'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342449), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342449)),\n",
+                            " RemoteFeedbackRecord(id=UUID('7b1f689d-c4f0-4033-ad59-76c513708e0c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342453), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342453)),\n",
+                            " RemoteFeedbackRecord(id=UUID('addeba0c-2ad3-4f24-8147-bca72952bcfa'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342457), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342457)),\n",
+                            " RemoteFeedbackRecord(id=UUID('05492554-ba85-496e-89a5-295ac46ec347'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342461), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342461)),\n",
+                            " RemoteFeedbackRecord(id=UUID('59f59129-05b7-42e8-994b-1a0d8e82acba'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342465), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342465)),\n",
+                            " RemoteFeedbackRecord(id=UUID('c4f4731e-a606-4b11-b282-396ab1b8774c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342469), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342469)),\n",
+                            " RemoteFeedbackRecord(id=UUID('077f388e-52ff-4dea-9060-1e5e09667376'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342473), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342473)),\n",
+                            " RemoteFeedbackRecord(id=UUID('1b8d85b2-0bd8-4481-adc0-6cbe037990ee'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501715), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501715)),\n",
+                            " RemoteFeedbackRecord(id=UUID('9fd5cc7c-0e65-4dfe-b289-2c992b7eac41'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501727), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501727)),\n",
+                            " RemoteFeedbackRecord(id=UUID('6d3d3c20-b243-4421-ba13-a9b66a64caca'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501732), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501732)),\n",
+                            " RemoteFeedbackRecord(id=UUID('69e0d688-189c-4670-8153-88b68e93557a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501736), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501736)),\n",
+                            " RemoteFeedbackRecord(id=UUID('c0e71e9e-bf19-4579-9309-f4ee2ba23e55'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501740), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501740)),\n",
+                            " RemoteFeedbackRecord(id=UUID('418e9ec8-da8e-4429-ab38-04b490a7f5e1'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501743), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501743)),\n",
+                            " RemoteFeedbackRecord(id=UUID('fd82e8c8-c5c9-45d3-bc99-8fd6d8094838'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501747), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501747)),\n",
+                            " RemoteFeedbackRecord(id=UUID('18daebe4-cac7-4d7c-acc5-38c0be929d25'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501750), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501750)),\n",
+                            " RemoteFeedbackRecord(id=UUID('ff4279bc-6ad7-483c-b641-cbd4c5c3db83'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501754), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501754)),\n",
+                            " RemoteFeedbackRecord(id=UUID('12ee4fcb-873f-40b1-ba03-823cc182b779'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501758), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501758)),\n",
+                            " RemoteFeedbackRecord(id=UUID('736b4754-f8a0-4f4f-8708-efe10c6c66be'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501761), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501761)),\n",
+                            " RemoteFeedbackRecord(id=UUID('3f8b9c27-7dcc-4e54-8591-017bd3559a59'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501765), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501765)),\n",
+                            " RemoteFeedbackRecord(id=UUID('8a0a0d89-94a3-4747-a8ae-730c5d8e63bd'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501768), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501768)),\n",
+                            " RemoteFeedbackRecord(id=UUID('7b39984f-0014-4b59-bb1c-d9020d327112'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501772), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501772)),\n",
+                            " RemoteFeedbackRecord(id=UUID('a129a260-aa69-44c2-b451-565a35f8129a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501776), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501776)),\n",
+                            " RemoteFeedbackRecord(id=UUID('324f0810-c815-452c-8a38-266e9e1f0e61'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501779), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501779)),\n",
+                            " RemoteFeedbackRecord(id=UUID('ef08a6c4-c044-49fb-a48b-a6f41960f8c1'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501786), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501786)),\n",
+                            " RemoteFeedbackRecord(id=UUID('2704a3fd-af5d-4a7f-b060-c888dcbfb75b'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501790), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501790)),\n",
+                            " RemoteFeedbackRecord(id=UUID('a0b538af-387c-4677-8597-989370bb203f'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501793), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501793)),\n",
+                            " RemoteFeedbackRecord(id=UUID('91a3a881-7351-43b9-b85e-479b43a94ff2'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501797), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501797)),\n",
+                            " RemoteFeedbackRecord(id=UUID('a9dd46ba-c7e9-43f4-8083-1b75a968abc9'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501800), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501800)),\n",
+                            " RemoteFeedbackRecord(id=UUID('a0e2cc05-8355-4f1f-b496-bcfc379a0110'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501804), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501804)),\n",
+                            " RemoteFeedbackRecord(id=UUID('985e51fe-baf8-48e2-a121-1125ce697131'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501807), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501807)),\n",
+                            " RemoteFeedbackRecord(id=UUID('ee5808b3-afef-4177-a2fe-6e8f8a36c954'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501810), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501810)),\n",
+                            " RemoteFeedbackRecord(id=UUID('d3e4f4cc-89c7-49f9-908f-abe2b8d585e2'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501814), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501814)),\n",
+                            " RemoteFeedbackRecord(id=UUID('bdd777b5-5eaf-4171-9b2e-3f3e32a1f686'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501817), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501817)),\n",
+                            " RemoteFeedbackRecord(id=UUID('db871e36-a76a-4bc5-a7be-73c6901d33f0'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501821), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501821)),\n",
+                            " RemoteFeedbackRecord(id=UUID('e7446fd7-f255-4dc6-b5fa-5bddc4e9227e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501824), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501824)),\n",
+                            " RemoteFeedbackRecord(id=UUID('711830d8-8c0f-4ef5-be68-97586669f58d'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501828), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501828)),\n",
+                            " RemoteFeedbackRecord(id=UUID('4824d0a8-bfd3-41ab-9339-6db1755c2d9c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501831), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501831)),\n",
+                            " RemoteFeedbackRecord(id=UUID('0a16518f-ca1a-4842-bdca-e4ab0a5c5201'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501835), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501835)),\n",
+                            " RemoteFeedbackRecord(id=UUID('1c0835b1-ed4c-4fba-90c2-12403f7c788a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501838), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501838)),\n",
+                            " RemoteFeedbackRecord(id=UUID('986418bc-e5ed-47cd-b592-a11d5452038e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864066), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864066)),\n",
+                            " RemoteFeedbackRecord(id=UUID('cde8d347-7113-42cf-9e68-9013ee3c884a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864077), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864077)),\n",
+                            " RemoteFeedbackRecord(id=UUID('4c627a19-6c2c-42f1-84d0-da75cf31fda7'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864081), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864081)),\n",
+                            " RemoteFeedbackRecord(id=UUID('b2704587-c488-4c9b-910b-3f199ba03969'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864085), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864085)),\n",
+                            " RemoteFeedbackRecord(id=UUID('5d2063df-2b7e-4a35-bc77-0e8cf6ac152e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864089), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864089)),\n",
+                            " RemoteFeedbackRecord(id=UUID('086ce38e-0565-4a53-8667-1cb8cd937779'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864092), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864092)),\n",
+                            " RemoteFeedbackRecord(id=UUID('5b478043-e828-4f9d-9a7b-53352d491df5'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864096), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864096)),\n",
+                            " RemoteFeedbackRecord(id=UUID('c53276fc-b746-473e-9125-091c8cb38685'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864100), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864100)),\n",
+                            " RemoteFeedbackRecord(id=UUID('99870ad8-e779-46b0-b135-94014a14416f'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864103), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864103)),\n",
+                            " RemoteFeedbackRecord(id=UUID('56cc8d09-e590-4d19-a097-79324db974f6'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864107), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864107)),\n",
+                            " RemoteFeedbackRecord(id=UUID('b7cbea5b-551e-4192-9958-cbe614132ad3'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864110), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864110)),\n",
+                            " RemoteFeedbackRecord(id=UUID('239ce31e-8cdd-4535-9def-b8e5c0c57738'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864114), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864114)),\n",
+                            " RemoteFeedbackRecord(id=UUID('02cdef32-e8e7-4a11-97e6-5a108d5eda13'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864117), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864117)),\n",
+                            " RemoteFeedbackRecord(id=UUID('e6a7f887-ec67-487b-9f89-e64cedca12d4'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864121), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864121)),\n",
+                            " RemoteFeedbackRecord(id=UUID('5cf2e42e-5494-45db-a1e7-b0431e1b33c1'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864124), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864124)),\n",
+                            " RemoteFeedbackRecord(id=UUID('42e3d90e-cf19-4932-9393-f22753b7d7dc'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864128), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864128)),\n",
+                            " RemoteFeedbackRecord(id=UUID('e05cd5d7-d397-4b77-9f35-198bd56e54c7'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864131), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864131)),\n",
+                            " RemoteFeedbackRecord(id=UUID('d646bbd0-323e-4b20-a568-3be63217e946'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864135), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864135)),\n",
+                            " RemoteFeedbackRecord(id=UUID('0caf1b77-fdb2-48d6-b7dc-47c5a1204174'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864138), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864138)),\n",
+                            " RemoteFeedbackRecord(id=UUID('cc9d7253-6a35-47c0-b316-629149ba2fbc'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864142), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864142)),\n",
+                            " RemoteFeedbackRecord(id=UUID('2636f941-01cd-4909-8063-ac2e44408c59'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864145), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864145)),\n",
+                            " RemoteFeedbackRecord(id=UUID('13ec59d6-e6d2-4954-82b8-9270b694ab43'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864148), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864148)),\n",
+                            " RemoteFeedbackRecord(id=UUID('130d0928-c50e-4635-b8cc-b4f19e04fef4'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864152), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864152)),\n",
+                            " RemoteFeedbackRecord(id=UUID('83d29bb0-b450-4c8e-8779-4f74936c7151'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864156), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864156)),\n",
+                            " RemoteFeedbackRecord(id=UUID('0775684e-d548-4b7b-9217-1c4a19d33550'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864159), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864159)),\n",
+                            " RemoteFeedbackRecord(id=UUID('6ea06848-c457-4472-b22c-1bf0658c8838'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864163), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864163)),\n",
+                            " RemoteFeedbackRecord(id=UUID('8980230f-e210-452f-bf87-98439adb90ac'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864167), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864167)),\n",
+                            " RemoteFeedbackRecord(id=UUID('b705f5e5-8009-42f8-8e82-a98ce8405eff'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864170), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864170))]"
+                        ]
+                    },
+                    "execution_count": 34,
+                    "metadata": {},
+                    "output_type": "execute_result"
+                }
             ],
-            [
-             0.7777777777777778,
-             "#fb9f3a"
+            "source": [
+                "delete_records"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": null,
+            "id": "74d445d4-19e5-425d-90cb-a34f81483bfc",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "extraction_dataset.records.delete(delete_records)"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "66856b02-ff96-4596-8525-b12be976da2e",
+            "metadata": {},
+            "source": [
+                "# Updating existing records"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "3fbbf92a-2d4f-44b2-b007-e60695e73268",
+            "metadata": {},
+            "source": [
+                "### Delete records by reference"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": null,
+            "id": "0783d2e8-9c4d-4f2e-b4f4-94430234d204",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "# record_updates = []\n",
+                "# for record in preprocessing_dataset.filter_by(metadata_filters=ex.TermsMetadataFilter(name='reference', values=['whopes2008report'])).records:\n",
+                "#     record_updates.append(record)\n",
+                "# len(record_updates)"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": null,
+            "id": "adfe3ee6-7b95-4c98-8933-bb03293e43b8",
+            "metadata": {},
+            "outputs": [],
+            "source": [
+                "# preprocessing_dataset.records.delete(record_updates)"
+            ]
+        },
+        {
+            "cell_type": "markdown",
+            "id": "258bb5f0",
+            "metadata": {},
+            "source": [
+                "### Update record metadata for some references"
+            ]
+        },
+        {
+            "cell_type": "code",
+            "execution_count": null,
+            "id": "c2c048a3",
+            "metadata": {},
+            "outputs": [
+                {
+                    "data": {
+                        "text/html": [
+                            "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Mendeley Reference KeyMeasured_outcomeApprox_num_rowsTables_countNotes_on_approx_num_rowsCheck_out_byCheck_in_byNeeds_digitizationNotes_on_extractiontitle...issnpmiddoicollectionsfile_idmime_typefile_namesizefilehashfile_path
reference
terlouw2010impactTerlouw2010Incidence64Also a good calibration comparisonNoneNoneNoneNoneImpact of mass distribution of free long-lasti......14752875None10.1186/1475-2875-9-199[Human Health Outcomes]6fb4e3d6-9255-4851-569e-a1e5541788a8application/pdfterlouw2010impact.pdf86769287ee2c18418661d5fe7a1493ce25d9650d7fa45ddata/pdf/terlouw2010impact.pdf
tokponnon2014impactTokponnon2014Incidence and Prevalence46NoneNoneNoneNoneNoneImpact of long-lasting, insecticidal nets on a......14752875None10.1186/1475-2875-13-76[Entomological Outcomes, Human Health Outcomes]4f4bb455-b9b2-e3d3-43d2-127e3fd6edf8application/pdfTokponnon_et_al_2014_Mal_J.pdf109219158ee5a6fa350ff703f5cf58aeb4f4b5c2398cb85data/pdf/Tokponnon_et_al_2014_Mal_J.pdf
pinder2015efficacyPinder2015Incidence & Prevalence~102,4NoneNoneNoneNoneJosh: this study is comparing ITN to ITN+IRS. ...Efficacy of indoor residual spraying with dich......1474-547X (Electronic)2549884710.1016/S0140-6736(14)61007-2[Human Health Outcomes]75f3a17c-758e-e557-1418-91e3c2272c14application/pdfPinder_et_al_2015_Lancet.pdf5973946ef33d0382608d35470c5d4ac5e3ffc7e6e7f242data/pdf/Pinder_et_al_2015_Lancet.pdf
\n", + "

3 rows × 32 columns

\n", + "
" + ], + "text/plain": [ + " Mendeley Reference Key Measured_outcome \\\n", + "reference \n", + "terlouw2010impact Terlouw2010 Incidence \n", + "tokponnon2014impact Tokponnon2014 Incidence and Prevalence \n", + "pinder2015efficacy Pinder2015 Incidence & Prevalence \n", + "\n", + " Approx_num_rows Tables_count \\\n", + "reference \n", + "terlouw2010impact 6 4 \n", + "tokponnon2014impact 4 6 \n", + "pinder2015efficacy ~10 2,4 \n", + "\n", + " Notes_on_approx_num_rows Check_out_by \\\n", + "reference \n", + "terlouw2010impact Also a good calibration comparison None \n", + "tokponnon2014impact None None \n", + "pinder2015efficacy None None \n", + "\n", + " Check_in_by Needs_digitization \\\n", + "reference \n", + "terlouw2010impact None None \n", + "tokponnon2014impact None None \n", + "pinder2015efficacy None None \n", + "\n", + " Notes_on_extraction \\\n", + "reference \n", + "terlouw2010impact None \n", + "tokponnon2014impact None \n", + "pinder2015efficacy Josh: this study is comparing ITN to ITN+IRS. ... \n", + "\n", + " title ... \\\n", + "reference ... \n", + "terlouw2010impact Impact of mass distribution of free long-lasti... ... \n", + "tokponnon2014impact Impact of long-lasting, insecticidal nets on a... ... \n", + "pinder2015efficacy Efficacy of indoor residual spraying with dich... ... \n", + "\n", + " issn pmid \\\n", + "reference \n", + "terlouw2010impact 14752875 None \n", + "tokponnon2014impact 14752875 None \n", + "pinder2015efficacy 1474-547X (Electronic) 25498847 \n", + "\n", + " doi \\\n", + "reference \n", + "terlouw2010impact 10.1186/1475-2875-9-199 \n", + "tokponnon2014impact 10.1186/1475-2875-13-76 \n", + "pinder2015efficacy 10.1016/S0140-6736(14)61007-2 \n", + "\n", + " collections \\\n", + "reference \n", + "terlouw2010impact [Human Health Outcomes] \n", + "tokponnon2014impact [Entomological Outcomes, Human Health Outcomes] \n", + "pinder2015efficacy [Human Health Outcomes] \n", + "\n", + " file_id mime_type \\\n", + "reference \n", + "terlouw2010impact 6fb4e3d6-9255-4851-569e-a1e5541788a8 application/pdf \n", + "tokponnon2014impact 4f4bb455-b9b2-e3d3-43d2-127e3fd6edf8 application/pdf \n", + "pinder2015efficacy 75f3a17c-758e-e557-1418-91e3c2272c14 application/pdf \n", + "\n", + " file_name size \\\n", + "reference \n", + "terlouw2010impact terlouw2010impact.pdf 867692 \n", + "tokponnon2014impact Tokponnon_et_al_2014_Mal_J.pdf 1092191 \n", + "pinder2015efficacy Pinder_et_al_2015_Lancet.pdf 597394 \n", + "\n", + " filehash \\\n", + "reference \n", + "terlouw2010impact 87ee2c18418661d5fe7a1493ce25d9650d7fa45d \n", + "tokponnon2014impact 58ee5a6fa350ff703f5cf58aeb4f4b5c2398cb85 \n", + "pinder2015efficacy 6ef33d0382608d35470c5d4ac5e3ffc7e6e7f242 \n", + "\n", + " file_path \n", + "reference \n", + "terlouw2010impact data/pdf/terlouw2010impact.pdf \n", + "tokponnon2014impact data/pdf/Tokponnon_et_al_2014_Mal_J.pdf \n", + "pinder2015efficacy data/pdf/Pinder_et_al_2015_Lancet.pdf \n", + "\n", + "[3 rows x 32 columns]" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } ], - [ - 0.8888888888888888, - "#fdca26" + "source": [ + "papers.loc[references]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5c2f9768", + "metadata": {}, + "outputs": [], + "source": [ + "references = ['terlouw2010impact', 'tokponnon2014impact', 'pinder2015efficacy']\n", + "\n", + "record_updates = []\n", + "for record in tqdm(extraction_dataset.filter_by(\n", + " metadata_filters=ex.TermsMetadataFilter(name='reference', values=references)).records):\n", + " reference = record.metadata['reference']\n", + " schema_name = record.metadata['type']\n", + "\n", + " if record.metadata['pmid'] != papers.loc[reference].get('pmid'):\n", + " record.metadata['pmid'] = papers.loc[reference].get('pmid')\n", + " print(\"Check it's correct: \", record.metadata)\n", + " record_updates.append(record)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "447421bf", + "metadata": {}, + "outputs": [], + "source": [ + "extraction_dataset.records.update(record_updates)" + ] + }, + { + "cell_type": "markdown", + "id": "370e79a8-9ed3-498e-96a0-d40ef64c3149", + "metadata": {}, + "source": [ + "### Update Document pmid, doi, and doc_id references" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "797f547a-9615-4949-a3e7-f5f026dc8108", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "record_updates = []\n", + "for record in papers_dataset.records:\n", + " if len(record_updates) == 1: \n", + " print(record.metadata)\n", + " reference = record.metadata['reference']\n", + "\n", + " doc_id = papers.loc[reference, 'id']\n", + " if 'doc_id' not in record.metadata or record.metadata['doc_id'] != doc_id:\n", + " record.metadata['doc_id'] = doc_id\n", + " \n", + " record_updates.append(record)\n", + "len(record_updates)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bac96980-eea4-4f28-a87a-f0450b6bb4c7", + "metadata": {}, + "outputs": [], + "source": [ + "papers_dataset.records.update(record_updates)" + ] + }, + { + "cell_type": "markdown", + "id": "eadd7331-49b2-401c-8a11-1f8484ceb6cc", + "metadata": { + "scrolled": true + }, + "source": [ + "# Create the `2-Data-Extractions` dataset, if it isn't already created" + ] + }, + { + "cell_type": "markdown", + "id": "c4a8f662-9adc-4286-8ba9-6197d0dc1e83", + "metadata": {}, + "source": [ + "### Extraction dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "45caae42-8efa-4ef3-a9f5-5600a470667b", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
[06/20/24 16:29:19] INFO     INFO:argilla.client.feedback.dataset.local.mixins:✓ Dataset succesfully  mixins.py:306\n",
+                            "                             pushed to Argilla                                                                     \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m[06/20/24 16:29:19]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m INFO:argilla.client.feedback.dataset.local.mixins:✓ Dataset succesfully \u001b]8;id=762461;file:///Users/jonnytr/Projects/argilla-data-extraction/argilla/src/argilla/client/feedback/dataset/local/mixins.py\u001b\\\u001b[2mmixins.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=533519;file:///Users/jonnytr/Projects/argilla-data-extraction/argilla/src/argilla/client/feedback/dataset/local/mixins.py#306\u001b\\\u001b[2m306\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m pushed to Argilla \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
                    INFO     INFO:argilla.client.feedback.dataset.local.mixins:RemoteFeedbackDataset( mixins.py:307\n",
+                            "                                id=8c51f5e3-25bb-4141-b716-04ce92b208e2                                            \n",
+                            "                                name=2-Data-Extractions                                                            \n",
+                            "                                workspace=Workspace(id=45eab76f-4d5a-4fb9-a9d2-6e7323bdf08a,                       \n",
+                            "                             name=itn-recalibration-scratch, inserted_at=2024-06-20 23:21:44.734369,               \n",
+                            "                             updated_at=2024-06-20 23:21:44.734369)                                                \n",
+                            "                                url=http://10.24.49.60/dataset/8c51f5e3-25bb-4141-b716-04ce92b208e2/a              \n",
+                            "                             nnotation-mode                                                                        \n",
+                            "                                fields=[RemoteTextField(id=UUID('7e322bdd-4a02-476d-994b-f9e22b879e8f              \n",
+                            "                             '), client=None, name='metadata', title='Extraction steps:',                          \n",
+                            "                             required=False, type='text', use_markdown=True, use_table=False),                     \n",
+                            "                             RemoteTextField(id=UUID('62cc925a-c5c6-4446-8dd8-8c75dcfb4256'),                      \n",
+                            "                             client=None, name='extraction', title='Extracted data:', required=True,               \n",
+                            "                             type='text', use_markdown=False, use_table=True),                                     \n",
+                            "                             RemoteTextField(id=UUID('3ac56bd6-a5b3-4b53-9882-92db06c58faa'),                      \n",
+                            "                             client=None, name='context', title='Relevant attributions (predicted by               \n",
+                            "                             RAG):', required=False, type='text', use_markdown=True,                               \n",
+                            "                             use_table=False)]                                                                     \n",
+                            "                                questions=[RemoteMultiLabelQuestion(id=UUID('ca859c1e-113f-4afc-a116-              \n",
+                            "                             ebb867138f39'), client=None, name='context-relevant', title='Which of                 \n",
+                            "                             the document section(s) attributed to this data extraction table?',                   \n",
+                            "                             description='Please identify which section in the source PDF the data                 \n",
+                            "                             extract came from, and select the matching section header(s) in this                  \n",
+                            "                             multi-selection list.', required=True, type='multi_label_selection',                  \n",
+                            "                             labels=['Not listed'], visible_labels=None,                                           \n",
+                            "                             labels_order=<LabelsOrder.natural: 'natural'>),                                       \n",
+                            "                             RemoteMultiLabelQuestion(id=UUID('c709ffd5-bcba-4366-a46d-40bf31c81da1')              \n",
+                            "                             , client=None, name='extraction-source', title='Where did the extracted               \n",
+                            "                             data primarily came from?', description=None, required=True,                          \n",
+                            "                             type='multi_label_selection', labels=['Text', 'Table', 'Figure'],                     \n",
+                            "                             visible_labels=None, labels_order=<LabelsOrder.natural: 'natural'>),                  \n",
+                            "                             RemoteTextQuestion(id=UUID('3e53c996-6d44-4e7c-ae6e-4cb96c029ad2'),                   \n",
+                            "                             client=None, name='extraction-correction', title='Provide a correction                \n",
+                            "                             to the extracted data:', description=None, required=False, type='text',               \n",
+                            "                             use_markdown=False, use_table=True),                                                  \n",
+                            "                             RemoteTextQuestion(id=UUID('b1f3e200-a437-42b5-9db1-45857dac1473'),                   \n",
+                            "                             client=None, name='notes', title='Mention any notes here to record any                \n",
+                            "                             special case or to justify decisions made in the extraction.',                        \n",
+                            "                             description=None, required=False, type='text', use_markdown=True,                     \n",
+                            "                             use_table=False)]                                                                     \n",
+                            "                                documents=None                                                                     \n",
+                            "                                guidelines=None                                                                    \n",
+                            "                                metadata_properties=[RemoteTermsMetadataProperty(id=UUID('b442012c-57              \n",
+                            "                             63-4615-b759-094487f245e3'), client=<httpx.Client object at                           \n",
+                            "                             0x31d2272b0>, name='reference', title='Reference',                                    \n",
+                            "                             visible_for_annotators=True, type='terms', values=None),                              \n",
+                            "                             RemoteTermsMetadataProperty(id=UUID('ddcf9932-2602-46cf-bc59-0d9924d7adf              \n",
+                            "                             0'), client=<httpx.Client object at 0x31d2272b0>, name='type',                        \n",
+                            "                             title='Question Type', visible_for_annotators=True, type='terms',                     \n",
+                            "                             values=None),                                                                         \n",
+                            "                             RemoteTermsMetadataProperty(id=UUID('46931ecd-1853-44a0-8b34-a15f332531c              \n",
+                            "                             3'), client=<httpx.Client object at 0x31d2272b0>, name='pmid',                        \n",
+                            "                             title='Document Pubmed ID', visible_for_annotators=True, type='terms',                \n",
+                            "                             values=None),                                                                         \n",
+                            "                             RemoteTermsMetadataProperty(id=UUID('a2e6215a-ea19-42bc-a0f4-60ec86b4a88              \n",
+                            "                             b'), client=<httpx.Client object at 0x31d2272b0>, name='doc_id',                      \n",
+                            "                             title='Document ID', visible_for_annotators=False, type='terms',                      \n",
+                            "                             values=None),                                                                         \n",
+                            "                             RemoteTermsMetadataProperty(id=UUID('5499c947-0e23-4c70-8884-9ae73e8811e              \n",
+                            "                             8'), client=<httpx.Client object at 0x31d2272b0>, name='annotators',                  \n",
+                            "                             title='Annotators', visible_for_annotators=True, type='terms',                        \n",
+                            "                             values=None)]                                                                         \n",
+                            "                                vectors_settings=[]                                                                \n",
+                            "                             )                                                                                     \n",
+                            "
\n" + ], + "text/plain": [ + "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m INFO:argilla.client.feedback.dataset.local.mixins:\u001b[1;35mRemoteFeedbackDataset\u001b[0m\u001b[1m(\u001b[0m \u001b]8;id=698971;file:///Users/jonnytr/Projects/argilla-data-extraction/argilla/src/argilla/client/feedback/dataset/local/mixins.py\u001b\\\u001b[2mmixins.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=347992;file:///Users/jonnytr/Projects/argilla-data-extraction/argilla/src/argilla/client/feedback/dataset/local/mixins.py#307\u001b\\\u001b[2m307\u001b[0m\u001b]8;;\u001b\\\n", + "\u001b[2;36m \u001b[0m \u001b[33mid\u001b[0m=\u001b[93m8c51f5e3\u001b[0m\u001b[93m-25bb-4141-b716-04ce92b208e2\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mname\u001b[0m=\u001b[1;36m2\u001b[0m-Data-Extractions \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mworkspace\u001b[0m=\u001b[1;35mWorkspace\u001b[0m\u001b[1m(\u001b[0m\u001b[33mid\u001b[0m=\u001b[93m45eab76f\u001b[0m\u001b[93m-4d5a-4fb9-a9d2-6e7323bdf08a\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mname\u001b[0m=\u001b[35mitn\u001b[0m-recalibration-scratch, \u001b[33minserted_at\u001b[0m=\u001b[1;36m2024\u001b[0m-\u001b[1;36m06\u001b[0m-\u001b[1;36m20\u001b[0m \u001b[1;92m23:21:44\u001b[0m.\u001b[1;36m734369\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mupdated_at\u001b[0m=\u001b[1;36m2024\u001b[0m-\u001b[1;36m06\u001b[0m-\u001b[1;36m20\u001b[0m \u001b[1;92m23:21:44\u001b[0m.\u001b[1;36m734369\u001b[0m\u001b[1m)\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33murl\u001b[0m=\u001b[4;94mhttp\u001b[0m\u001b[4;94m://10.24.49.60/dataset/8c51f5e3-25bb-4141-b716-04ce92b208e2/a\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[4;94mnnotation-mode\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mfields\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;35mRemoteTextField\u001b[0m\u001b[1m(\u001b[0m\u001b[33mid\u001b[0m=\u001b[1;35mUUID\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'7e322bdd-4a02-476d-994b-f9e22b879e8f\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32m'\u001b[0m\u001b[1m)\u001b[0m, \u001b[33mclient\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mname\u001b[0m=\u001b[32m'metadata'\u001b[0m, \u001b[33mtitle\u001b[0m=\u001b[32m'Extraction steps:'\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mrequired\u001b[0m=\u001b[3;91mFalse\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'text'\u001b[0m, \u001b[33muse_markdown\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[33muse_table\u001b[0m=\u001b[3;91mFalse\u001b[0m\u001b[1m)\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTextField\u001b[0m\u001b[1m(\u001b[0m\u001b[33mid\u001b[0m=\u001b[1;35mUUID\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'62cc925a-c5c6-4446-8dd8-8c75dcfb4256'\u001b[0m\u001b[1m)\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mclient\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mname\u001b[0m=\u001b[32m'extraction'\u001b[0m, \u001b[33mtitle\u001b[0m=\u001b[32m'Extracted data:'\u001b[0m, \u001b[33mrequired\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'text'\u001b[0m, \u001b[33muse_markdown\u001b[0m=\u001b[3;91mFalse\u001b[0m, \u001b[33muse_table\u001b[0m=\u001b[3;92mTrue\u001b[0m\u001b[1m)\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTextField\u001b[0m\u001b[1m(\u001b[0m\u001b[33mid\u001b[0m=\u001b[1;35mUUID\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'3ac56bd6-a5b3-4b53-9882-92db06c58faa'\u001b[0m\u001b[1m)\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mclient\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mname\u001b[0m=\u001b[32m'context'\u001b[0m, \u001b[33mtitle\u001b[0m=\u001b[32m'Relevant attributions \u001b[0m\u001b[32m(\u001b[0m\u001b[32mpredicted by \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32mRAG\u001b[0m\u001b[32m)\u001b[0m\u001b[32m:'\u001b[0m, \u001b[33mrequired\u001b[0m=\u001b[3;91mFalse\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'text'\u001b[0m, \u001b[33muse_markdown\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33muse_table\u001b[0m=\u001b[3;91mFalse\u001b[0m\u001b[1m)\u001b[0m\u001b[1m]\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mquestions\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;35mRemoteMultiLabelQuestion\u001b[0m\u001b[1m(\u001b[0m\u001b[33mid\u001b[0m=\u001b[1;35mUUID\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'ca859c1e-113f-4afc-a116-\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32mebb867138f39'\u001b[0m\u001b[1m)\u001b[0m, \u001b[33mclient\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mname\u001b[0m=\u001b[32m'context-relevant'\u001b[0m, \u001b[33mtitle\u001b[0m=\u001b[32m'Which of \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32mthe document section\u001b[0m\u001b[32m(\u001b[0m\u001b[32ms\u001b[0m\u001b[32m)\u001b[0m\u001b[32m attributed to this data extraction table?'\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mdescription\u001b[0m=\u001b[32m'Please identify which section in the source PDF the data \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32mextract came from, and select the matching section header\u001b[0m\u001b[32m(\u001b[0m\u001b[32ms\u001b[0m\u001b[32m)\u001b[0m\u001b[32m in this \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32mmulti-selection list.'\u001b[0m, \u001b[33mrequired\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'multi_label_selection'\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mlabels\u001b[0m=\u001b[1m[\u001b[0m\u001b[32m'Not listed'\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mvisible_labels\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mlabels_order\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mLabelsOrder.natural:\u001b[0m\u001b[39m \u001b[0m\u001b[32m'natural'\u001b[0m\u001b[39m>\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteMultiLabelQuestion\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'c709ffd5-bcba-4366-a46d-40bf31c81da1'\u001b[0m\u001b[1;39m)\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'extraction-source'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Where did the extracted \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32mdata primarily came from?'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mdescription\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mrequired\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'multi_label_selection'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mlabels\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[32m'Text'\u001b[0m\u001b[39m, \u001b[0m\u001b[32m'Table'\u001b[0m\u001b[39m, \u001b[0m\u001b[32m'Figure'\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mvisible_labels\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mlabels_order\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTextQuestion\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'3e53c996-6d44-4e7c-ae6e-4cb96c029ad2'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mclient\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'extraction-correction'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Provide a correction \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32mto the extracted data:'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mdescription\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mrequired\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'text'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33muse_markdown\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m, \u001b[0m\u001b[33muse_table\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTextQuestion\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'b1f3e200-a437-42b5-9db1-45857dac1473'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mclient\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'notes'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Mention any notes here to record any \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32mspecial case or to justify decisions made in the extraction.'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mdescription\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mrequired\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'text'\u001b[0m\u001b[39m, \u001b[0m\u001b[33muse_markdown\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33muse_table\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m]\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[39m \u001b[0m\u001b[33mdocuments\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[39m \u001b[0m\u001b[33mguidelines\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[39m \u001b[0m\u001b[33mmetadata_properties\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;35mRemoteTermsMetadataProperty\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'b442012c-57\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32m63-4615-b759-094487f245e3'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'reference'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Reference'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mvisible_for_annotators\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'terms'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mvalues\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTermsMetadataProperty\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'ddcf9932-2602-46cf-bc59-0d9924d7adf\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32m0'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'type'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Question Type'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mvisible_for_annotators\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'terms'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mvalues\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTermsMetadataProperty\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'46931ecd-1853-44a0-8b34-a15f332531c\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32m3'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'pmid'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Document Pubmed ID'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mvisible_for_annotators\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'terms'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mvalues\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTermsMetadataProperty\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'a2e6215a-ea19-42bc-a0f4-60ec86b4a88\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32mb'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'doc_id'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Document ID'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mvisible_for_annotators\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'terms'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mvalues\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTermsMetadataProperty\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'5499c947-0e23-4c70-8884-9ae73e8811e\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[32m8'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=\u001b[0m, \u001b[33mname\u001b[0m=\u001b[32m'annotators'\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mtitle\u001b[0m=\u001b[32m'Annotators'\u001b[0m, \u001b[33mvisible_for_annotators\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'terms'\u001b[0m, \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mvalues\u001b[0m=\u001b[3;35mNone\u001b[0m\u001b[1m)\u001b[0m\u001b[1m]\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[33mvectors_settings\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[2m \u001b[0m\n", + "\u001b[2;36m \u001b[0m \u001b[1m)\u001b[0m \u001b[2m \u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } ], - [ - 1, - "#f0f921" + "source": [ + "# ex.Workspace.create('llm_extraction')\n", + "\n", + "llm_extraction_dataset = ex.FeedbackDataset(\n", + " fields=[\n", + " ex.TextField(name=\"metadata\", title=\"Extraction steps:\", required=False, use_markdown=True),\n", + " ex.TextField(name=\"extraction\", title=\"Extracted data:\", required=True, use_table=True),\n", + " ex.TextField(name=\"context\", title=\"Relevant attributions (predicted by RAG):\", required=False, use_markdown=True),\n", + " ],\n", + " questions =[\n", + " ex.MultiLabelQuestion(\n", + " name=\"context-relevant\",\n", + " title=\"Which of the document section(s) attributed to this data extraction table?\",\n", + " description=\"Please identify which section in the source PDF the data extract came from, and select the matching section header(s) in this multi-selection list.\",\n", + " type=\"dynamic_multi_label_selection\",\n", + " labels=['Not listed'],\n", + " required=True,\n", + " ),\n", + " ex.MultiLabelQuestion(\n", + " name=\"extraction-source\",\n", + " title=\"Where did the extracted data primarily came from?\",\n", + " labels=[\"Text\", \"Table\", \"Figure\"],\n", + " required=True,\n", + " ),\n", + " ex.TextQuestion(\n", + " name=\"extraction-correction\",\n", + " title=\"Provide a correction to the extracted data:\",\n", + " required=False,\n", + " use_table=True,\n", + " ),\n", + " ex.TextQuestion(\n", + " name=\"notes\",\n", + " title=\"Mention any notes here to record any special case or to justify decisions made in the extraction.\",\n", + " required=False,\n", + " use_markdown=True,\n", + " ),\n", + " ],\n", + " metadata_properties=[\n", + " ex.TermsMetadataProperty(\n", + " name=\"reference\",\n", + " title=\"Reference\",\n", + " visible_for_annotators=True),\n", + " ex.TermsMetadataProperty(\n", + " name=\"type\",\n", + " title=\"Question Type\",\n", + " visible_for_annotators=True),\n", + " ex.TermsMetadataProperty(\n", + " name=\"pmid\",\n", + " title=\"Document Pubmed ID\",\n", + " visible_for_annotators=True),\n", + " ex.TermsMetadataProperty(\n", + " name=\"doc_id\",\n", + " title=\"Document ID\",\n", + " visible_for_annotators=False),\n", + " ex.TermsMetadataProperty(\n", + " name=\"annotators\",\n", + " title=\"Annotators\",\n", + " visible_for_annotators=True),\n", + " ],\n", + ")\n", + "\n", + "llm_extraction_dataset = llm_extraction_dataset.push_to_argilla(\n", + " name=\"2-Data-Extractions\", \n", + " workspace=\"itn-recalibration-scratch\")" + ] + }, + { + "cell_type": "markdown", + "id": "041844f4-8e44-4319-8f34-5aad09437bb2", + "metadata": {}, + "source": [ + "### Review dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5cccb19c-3af5-401f-852a-0e25b8d33514", + "metadata": {}, + "outputs": [], + "source": [ + "review_dataset = ex.FeedbackDataset(\n", + " fields=[\n", + " ex.TextField(name=\"metadata\", title=\"Metadata:\", required=False, use_markdown=True),\n", + " ex.TextField(name=\"extractions\", title=\"Extractions:\", required=True, use_markdown=True),\n", + " ex.TextField(name=\"metrics\", title=\"Evaluation metrics:\", required=False, use_markdown=True),\n", + " ex.TextField(name=\"alignment\", title=\"GriTS table alignment between gold-standard and LLM+Manual extractions, showing the longest common sequence (LCS) between matched data cells that were used to calculate the Precision and Recall\", \n", + " required=False, use_markdown=True),\n", + " ],\n", + " questions =[\n", + " ex.LabelQuestion(\n", + " name=\"context-relevant\",\n", + " title=\"Did the evaluation metrics correspond qualitatively with the concordance between the gold-standard and putative extractions?\",\n", + " labels=['Yes', 'No'],\n", + " required=True,\n", + " ),\n", + " ex.TextQuestion(\n", + " name=\"notes\",\n", + " title=\"Mention any notes:\",\n", + " required=False,\n", + " use_markdown=True,\n", + " ),\n", + " ],\n", + " metadata_properties=[\n", + " ex.TermsMetadataProperty(\n", + " name=\"reference\",\n", + " title=\"Reference\",\n", + " visible_for_annotators=True),\n", + " ex.TermsMetadataProperty(\n", + " name=\"type\",\n", + " title=\"Question Type\",\n", + " visible_for_annotators=True),\n", + " ex.TermsMetadataProperty(\n", + " name=\"pmid\",\n", + " title=\"Document Pubmed ID\",\n", + " visible_for_annotators=True),\n", + " ex.TermsMetadataProperty(\n", + " name=\"doc_id\",\n", + " title=\"Document ID\",\n", + " visible_for_annotators=False),\n", + " ex.TermsMetadataProperty(\n", + " name=\"annotators\",\n", + " title=\"Annotators\",\n", + " visible_for_annotators=True),\n", + " ],\n", + ")\n", + "\n", + "review_dataset = review_dataset.push_to_argilla(\n", + " name=\"Review-Evaluations\", \n", + " workspace=\"auto-extraction\")" ] - ] - }, - "colorway": [ - "#636efa", - "#EF553B", - "#00cc96", - "#ab63fa", - "#FFA15A", - "#19d3f3", - "#FF6692", - "#B6E880", - "#FF97FF", - "#FECB52" - ], - "font": { - "color": "#2a3f5f" - }, - "geo": { - "bgcolor": "white", - "lakecolor": "white", - "landcolor": "#E5ECF6", - "showlakes": true, - "showland": true, - "subunitcolor": "white" - }, - "hoverlabel": { - "align": "left" - }, - "hovermode": "closest", - "mapbox": { - "style": "light" - }, - "paper_bgcolor": "white", - "plot_bgcolor": "#E5ECF6", - "polar": { - "angularaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "radialaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "scene": { - "xaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "yaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - }, - "zaxis": { - "backgroundcolor": "#E5ECF6", - "gridcolor": "white", - "gridwidth": 2, - "linecolor": "white", - "showbackground": true, - "ticks": "", - "zerolinecolor": "white" - } - }, - "shapedefaults": { - "line": { - "color": "#2a3f5f" - } - }, - "ternary": { - "aaxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "baxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - }, - "bgcolor": "#E5ECF6", - "caxis": { - "gridcolor": "white", - "linecolor": "white", - "ticks": "" - } - }, - "title": { - "x": 0.05 - }, - "xaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - }, - "yaxis": { - "automargin": true, - "gridcolor": "white", - "linecolor": "white", - "ticks": "", - "title": { - "standoff": 15 - }, - "zerolinecolor": "white", - "zerolinewidth": 2 - } - } }, - "title": { - "text": "Latency v.s. number of values" + { + "cell_type": "code", + "execution_count": null, + "id": "f4b95e87-74c2-493c-8fb7-59b86e334571", + "metadata": {}, + "outputs": [], + "source": [ + "test_dataset = ex.FeedbackDataset(\n", + " fields=[\n", + " ex.TextField(name=\"alignment\",\n", + " required=True, use_markdown=True),\n", + " ],\n", + " questions =[\n", + " ex.LabelQuestion(\n", + " name=\"context-relevant\",\n", + " title=\"Did the evaluation metrics correspond qualitatively with the concordance between the gold-standard and putative extractions?\",\n", + " labels=['Yes', 'No'],\n", + " type='dynamic_label_selection', visible_labels=3,\n", + " required=True,\n", + " ),\n", + " ex.MultiLabelQuestion(\n", + " name=\"segment\",\n", + " title=\"Test\",\n", + " type='dynamic_multi_label_selection', visible_labels=3,\n", + " labels=[],\n", + " required=True,\n", + " ),\n", + " ex.TextQuestion(\n", + " name=\"notes\",\n", + " title=\"Mention any notes:\",\n", + " required=False,\n", + " use_markdown=True,\n", + " ),\n", + " ],\n", + ")\n", + "\n", + "test_dataset = test_dataset.push_to_argilla(\n", + " name=\"Test\", \n", + " workspace=\"auto-extraction\")" + ] }, - "width": 700, - "xaxis": { - "anchor": "y", - "autorange": true, - "domain": [ - 0, - 1 - ], - "range": [ - -5.8956118833469615, - 127.89561188334696 - ], - "title": { - "text": "N values" - }, - "type": "linear" + { + "cell_type": "code", + "execution_count": null, + "id": "86da8a0d-b2b6-4355-b8cd-dac7f33a79db", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" }, - "yaxis": { - "anchor": "x", - "autorange": true, - "domain": [ - 0, - 1 - ], - "range": [ - -0.8326310679611651, - 19.138631067961164 - ], - "title": { - "text": "Latency (s)" - }, - "type": "linear" + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.19" } - } - }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAABGYAAAFoCAYAAAAVe/0kAAAAAXNSR0IArs4c6QAAIABJREFUeF7snQecTNfbx3+zxVpl9S56jRKECCJEJ6JFJ4gWPToheu+9C6K3ECVEjfLXQoggCKJEiV4Wu7bN+z6HmWy1s3dmd+7d+Z3P5/++yc495zz3+5xNMl/nPMdkNpvNYCMBEiABEiABEiABEiABEiABEiABEiABEohzAiaKmThnzglJgARIgARIgARIgARIgARIgARIgARIQBGgmOFCIAESIAESIAESIAESIAESIAESIAESIAEnEaCYcRJ4TksCJEACJEACJEACJEACJEACJEACJEACFDNcAyRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgJAIUM04Cz2lJgARIgARIgARIgARIgARIgARIgARIgGKGa4AESIAESIAESIAESIAESIAESIAESIAEnESAYsZJ4DktCZAACZAACZAACZAACZAACZAACZAACVDMcA2QAAmQAAmQAAmQAAmQAAmQAAmQAAmQgJMIUMw4CTynJQESIAESIAESIAESIAESIAESIAESIAGKGa4BEiABEiABEiABEiABEiABEiABEiABEnASAYoZJ4HntCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAMcM1QAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJOIkAx4yTwnJYESIAESIAESIAESIAESIAESIAESIAEKGa4BkiABEiABEiABEiABEiABEiABEiABEjASQQoZpwEntOSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAMUM1wAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJOIkAxYyTwHNaEiABEiABEiABEiABEiABEiABEiABEqCY4RogARIgARIgARIgARIgARIgARIgARIgAScRoJhxEnhOSwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIUM1wDJEACJEACJEACJEACJEACJEACJEACJOAkAhQzTgLPaUmABEiABEiABEiABEiABEiABEiABEiAYoZrgARIgARIgARIgARIgARIgARIgARIgAScRIBixkngOS0JkAAJkAAJkAAJkAAJkAAJkAAJkAAJUMxwDZAACZAACZAACZAACZAACZAACZAACZCAkwhQzDgJPKclARIgARIgARIgARIgARIgARIgARIgAYoZrgESIAESIAESIAESIAESIAESIAESIAEScBIBihkngee0JEACJEACJEACJEACJEACJEACJEACJEAxwzVAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAk4iQDHjJPCclgRIgARIgARIgARIgARIgARIgARIgAQoZrgGSIAESIAESIAESIAESIAESIAESIAESMBJBChmnASe05IACZAACZAACZAACZAACZAACZAACZAAxQzXAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAk4iQDFjJPAc1oSIAESIAESIAESIAESIAESIAESIAESoJjhGiABEiABEiABEiABEiABEiABEiABEiABJxGgmHESeE5LAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhQzXAMkYCOBf27fw64DJ1Dq/QLInzurjb2c/9jVG3dw+MQ53H/4BEkSe6Np3UpI5O0V64EFBQdj6bodyJopPSqWLRbr83ECEiABEiABEiABEiABEiABEjAiAZcQM1eu30atlgNQr8bHGNG3td15OnT8LI7+9ieafV4J6dOktHs8DmAMAgeP/YEO/SZjcI8WaFS7giGCPnryT7TpOT5MrHvXTUG6NCliPX4//wAUr9ZeSZnpI7rF+nycgARIgARIgARIgARIgARIgASMSMAlxMzlq7dQ+8uBqFPtI4zq39buPM3+fhNmLd6INfOGoGDe7HaPxwGMQcCIYqZV97E4/vsFLJzYByWK5sOLl/5Iksgb7u5usQ6dYibWEXMCEiABEiABEiABEiABEiCBeECAYkZDEilmNECzs4vZbIbJZLJzFNu6RzWXXsXM29iUqN4BeXO+g+UzB9r28g58imLGgTA5FAmQAAmQAAmQAAmQAAmQQLwlQDETKrWbdhzC+q37cevf+7h7/zEyZ0iD997NiTZNP1VfbqXJ5wtWbMXNO/dR+N2cSO6TRP28ce0KKFfqPfXXcnRq2sL1OHXmEh498UXRgrnRsWVtlClR0DrbuFmr1Bydv6yDWYt/hHzpl1btkw/Qt1NjJE2SKMyik+NTKzfuxh9/XoGnpwcK5MmGz6qUQYWPiqLH4Jnw8kqA8d92gJtbWHkxatoy3LzzAJOHdoZ3wgQRFrLUAZH+3gm9MO7bryLIj9HTV0Bqq0wa0inKuiR7Dp7Eqk17cPHyDTV+tncyqOMrwiShV8Q5o/ttOnfxGmYu3ogGNcvh1r8PIHk5f+k6cmbNiF4dGlk5yzgrN+5R7EZ/0xYpkiW1Di0/k886taqDQvle72qyMO/QohZmLt6AIyf+RMrkSdURt6+++Aynzl7C/OVbceL0RST08lQ/79qmHjzc3VV/i5jp06kx/PxfYee+4/jr75sqv/IzWSuhmy3rYOP2g9i5/wQGdf8C12/exS+HT6l3btmgGj4omi9KVCI9Zi/5EXv+95vqJzVvalctg2b1Kqs1IHntOnA6Dhw9jUTeCVH8vbxqrBoVSuKzKqXtWgevAgIwZvoKXLh8A3fuPcJLP3/kyZEZ9WuWQ8NaFeDp8ZpXZGImJvmy9XcpICAQqzbtxbbdR/H3jTtImsRb8ahVpTSqlv8guuXGz0mABEiABEiABEiABEiABEjAqQQoZkLhHzBmgZIA8kU7beoUuHPvoRIh8sV285JRyJAulSpmKmJGhIuIG4tAadfsU/UlUL7Ut/x6jBq1WKE8SJzICwePnVF/P2t0d5QvXUT9daOvhuHsxavW2eVIlHyplC+54WvhLF69HRPnrlHPfvzhe3jy7LmKS9q5fUvQb9Q8bN11RB1XKVW8gHVMS22dCmWKYsaor6NcaD2HzsaOfb9i2YwBKmZLE/lUtUkfJZTmT+gdaX+ZV+YXRqWKvwv5kvzbH5fUe+xcPRGZ0qeO8QK3CBBLR6mHIsdv5H2kbV8xHlkypVV/PWzy91i7+RfsWTc5TL2ftVv2YdikJZg9podV5ETG3JKDkkXz49ip82pMyYXl58JN+EkLH5fkX44EiRiRtvn70UoeSbN1HUyZvw4LV/6kJJ8lp9JfaiHJOoisBQYFo3nnkSpGESJ5c2VRElDyZTmuJ8806ThcCS1plmLFDT8rj4a1Pol0XFvXwY1bd1G9WT9Vp0bGFQYiuSTnrRvXQK8ODdX4kYmZmOTLVoZDJi5WwlTiKV44L27ffagkm/y91NNhIwESIAESIAESIAESIAESIAE9E6CYCZUdESPpUqdA4kQJrT8VESM7LYb0bGn9QhvVUSbZpVCv9SAlEETk5MyWSY0jt+LUbPGN+hK9cdFI9TOLJJDdG22b1lS7WR4+foZqTfuqL7h/7FmkvvBavgSLBFgytb+SQ9Ju//sA0xdtwNgB7XHyzF/4outoJYYmD+1kjX3C7NVYsvZnJVVC79YJvyCPnDiHtr0nRBBC85dvwbSFP2Dq8C6o/HHxSNdxk04jlFDYunQMsmfJYP1CvmbzXrWDI/QuFlt/ESwCRCTHiH5trDtRZIfIrCU/qi/+IgCkxeSLvoV55y/rok2TGvBK4AlL/SEZq0vrumpc+fnFK/+gXptBaFavEgZ0a67mssQl4mZ439bWXVSLVm/DpLlr0aBmeQzt3UrtVrF1HVjEjIitPh0b4cP334VXggQqhuTJXu/GCt9EQoiMEMEyqHsLtUNGJEjH/pNVPZmVswdZmRUo30rJNpFu0TVb14HMdevOfeTK/np9S3vq+wI1v+gP/1eBOL59rnUdhC/+a2u+bGUovytyXEskzM8rxiNBAk81970HT7B55yG0bfppdK/Nz0mABEiABEiABEiABEiABEjAqQQoZiLBf+fuQ1z75188ePQUl67exHertuHLxtXRu0Mj9XRUYubMhato3GGY+sL87ddfhBlZdtHIn+Kf2rlAfXkUSSAiyPIl1vJwz6GzsGPfcez7YSrSpEoOy5f+MQPaoVaVMpEuFqkx8ukX/dXOjf0bpiF1ymTqi/rHdbupozqywyT8EafQAwUHh6By417qaJXEI5IgJMSM6s36qp1BhzfPVMenImsihEQMhd6ZYu+KjqqWi0WWNK1bEQPf8LX1i77EFBXzCg16IDAwCAd/nBEm9LJ1uqodUduWj1M/jyou/1cBeL9qe7WDaseqCYjJOrCImVWzB6ldM7a09n0mQo62WXJt6WO5gUmkU8+vXu9aiYmYiek6kPe+fO0W7t57jEdPn2HZup1KSh7eMgvJkia2a8eMrQxF4IiYkXW+YtYg604qWzjyGRIgARIgARIgARIgARIgARLQAwGKmVBZuHLtFvqNmm89/hE6QS0bVEXfzk3Uj6ISM9v2HEOfEXPemtddqyciY/rUUUoCi2iwPDdo/CJs2HYgzDGZyCZY9eMejJy6TH0hly/mW3YeRv/R8zGgWzNVdyS6ZtkdIztwpAbJyTOX8EXXUWrHQY/2DaLs/sNPBzB4wiL1edbM6fB+4bz4pExRfFK6iOZivVEJEKlnUqlhT1XLZFjvL9WcjhAzdVt/q+rwhJdkNZr3g+/zl1Zh87bivzKG1Js5s3cxfv7lV5vXgUXM/Lh4JHJnzxxdmtTnUYkkEYnl6n0d5nrqmIgZGduWdSACZ97yLepmssjaoU0z1W4fe44yxeR3yXKUT2IRuVW0QC61hi3Ht2yCyodIgARIgARIgARIgARIgARIwEkEKGbegH/y9DnK1O6i/k4kjNRyyZwxDZ75vkCD9kPVz6ITM+u27sPQiUvUl0KpdRFZq1GxpNqREtXujRFTlmL1pr2wiJnew+dg+95jaieG7MiIqslRktKfdVZHOnatnqTq3MgOHcvuhejWl0V6lCiSTx2ZkveQ9wl9RCmqMeQIjNTdsdRokefkuM/yWd9aC8FGN3/oz6MSIHI85ZP63SMVM7vXTkaGtCmtw0RVYyayXUpRiZlaLQfg8VPfGImZs78sxvqf9tu8DrSIGdkhIgVuw9dPsayBsiULYe64XopFTMWMLetg5qKNmLN0k6qn065ZTeTOkVnt0ho/axV+2nMUtoiZ6PIVk98l2TUjx7vkf5aaOvLuoXe5xWT98VkSIAESIAESIAESIAESIAESiEsCFDNvaO/930l0/Xa6+qLZvV19aw4sNV4iEzOha3lIB8tRkk4ta0PqmLyt2SpmZFeC7NAJX9g3srEtRVBl18zkeWvVkSqpjWNr69h/irrFZ8N3I1R9FVtrk1jGl4KzUm9GZIO64Sia2jZRxRUTMTN8ylKs2bQ3gkCKSzEjO0g+rNlJiSEpAByTdaBFzFjq+pzcuUDVorG0yI56xVTMyFjRrQMRVqGPLFnmtxTPfpuYsTVfMWEYeh1JzRlZP7J7TB3De3OsytbfAT5HAiRAAiRAAiRAAiRAAiRAAnFNgGLmDXHLF/nOreqoK5YtTXaryK6V0GJGrvyVa6il0G7o63hld8VHtbuqHTGy00R2r1ia1GzZd/gUKnxUTP3IVjGz7/Dv6DxgKmQXxKzRPVRBYEvbe+iU9cYg+ZmlLofl8/ULhsXoOIdFTsnOHLnhZ/ygDvi04ofW+aQIstSzkeNNskNCmhw5qVyueJidMSs27Mbo6cvDHKOKrG9Uiz0mYkZ2bsgOjomDO6J6hZJqSDlCM2zyEnWcK/ytTLGxY8Zy7MZSKDgm60CLmJFCw1J7SI5zybEuSxPmwt5yHE1+rkXMRLcOZMeOCJCjW2dbbyV79vwlvuo7SYm5t4kZW/NlK0ORL3K9uvx+hG7dBk2HXOMe09+BuP4HMOcjARIgARIgARIgARIgARIgAZcSMyJKPiz2boSsZ0yXWskF2SUiUqVOtTJInzYVjv9+3nrVdWgxY6m/IuN92ag6XgUEokCebOqq6hUbdmH09BVqHDlKIddFy61M+4/8rmqQyPXWMREzIkLa9ByvjgnJlc7VK5aE7ND4afdRVXTXMp7lpeq3G6KOc8iV38tnDozRCpcCuKVrdVFfuiX+Axunq9uiLE2+5EsLfS20pfBqneofIUeWDLj17wPI9d5yO8/2FeOsAieyvo4QM3ILUavuY1W8rZtUh5/fK2zdfUQVMpYWG2JGxJUIkfRpUqqciiSR9sv6qUibOrn6a1vXgRYxI7d3SWFnaSISc2bLiKMnz6trw+V40YZFI+Dh7q4+1yJmolsHlmu1ZY1JPSGpbbN112G1Q0Xa28RMTPJlC0OpC1Wr1UD1u1GudBGkT5MC5y/dUEfrZMfX99O+eWvh6xj9gvBhEiABEiABEiABEiABEiABEogFAi4hZixf3qLiJ0VC5U/WpbaL1HixNBEv9WuWV0VOWzWshj6dGls/E/kgz8vOEmlyTbJclywiRYq/Tpiz2ioH5HNVV6b2J9abnaLaMSM7cWRHTugaHFI7ZOaiDernlibj1a3+kfUqZ8vPp3/3A+Yt24IJgzpC6tnEtE1dsF59qf2ifhX079I0THeLXNmydIySMNJk94ZwEJljaVIEWK5xFlFlaZH1jSo2uXFIbh4KfUW5PGupMRP+iJZFbljGk3mlkK5cdT53XE+ULVlYfRQVc5FZcqNV+OK/UntGpIPltiZLXPJ+8ryliaiZMqwz3s2TzfozW9eBhfemxaPCXD8dXd5ECPUbOVeJIUuTXSMj+7W1yjD5uXC31A2KbszQn79tHUgeug6chrMXr1q7yM4qYSUC8fDmWUjm89+tTHLVuly5bmm25ssWhlIbaviU79VNZqGbrAFZP+9kTBuT1+azJEACJEACJEACJEACJEACJBDnBFxCzMSEqhzJuHn7HrwTeiFr5vRv/dN2+eIoYiZJYm+kSJY0wjQiVO49eKw+S5XCR/MtRZaBpcip7AQx/f9OkLRpUlh3RYT+vErj3vB97odDm2aoa7njogkH2cUh/5Nri1OlSBbnuxTk6Mu/9x5Bdj+JFIjtJuvk1pvci5gxmSQrkTdHr4PQs4gMuf/wCTJlSAOfJIli+7Wt48vRvH9u31NCTgvzmOYrOoaW340XL/3VEUK5rpuNBEiABEiABEiABEiABEiABIxAgGLGCFmyMcad+0+gx5CZ6NiiNrq0fnvxYRuH5GMkQAIkQAIkQAIkQAIkQAIkQAIkQAKxSIBiJhbhxvXQltt6dq+ZhAzpUsX19JyPBEiABEiABEiABEiABEiABEiABEgghgQoZmIITK+PBwQEqqK3PkkTo1LZ9/UaJuMiARIgARIgARIgARIgARIgARIgARIIRYBihsuBBEiABEiABEiABEiABEiABEiABEiABJxEgGLGSeA5LQmQAAmQAAmQAAmQAAmQAAmQAAmQAAlQzHANkAAJkAAJkAAJkAAJkAAJkAAJkAAJkICTCFDMOAk8pyUBEiABEiABEiABEiABEiABEiABEiABihmuARIgARIgARIgARIgARIgARIgARIgARJwEgGKGSeB57QkQAIkQAIkQAIkQAIkQAIkQAIkQAIkQDHDNUACJEACJEACJEACJEACJEACJEACJEACTiJAMeMk8JyWBEiABEiABEiABEiABEiABEiABEiABChmuAZIgARIgARIgARIgARIgARIgARIgARIwEkEKGacBJ7TkgAJkAAJkAAJkAAJkAAJkAAJkAAJkADFDNcACZAACZAACZAACZAACZAACZAACZAACTiJAMWMk8BzWhIgARIgARIgARIgARIgARIgARIgARKgmOEaIAESIAESIAESIAESIAESIAESIAESIAEnEaCYcRJ4TksCJEACJEACJEACJEACJEACJEACJEACFDNcAyRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgJAIUM04Cz2lJgARIgARIgARIgARIgARIgARIgARIgGKGa4AESIAESIAESIAESIAESIAESIAESIAEnESAYsZJ4DktCZAACZAACZAACZAACZAACZAACZAACVDMcA2QAAmQAAmQAAmQAAmQAAmQAAmQAAmQgJMIUMw4CTynJQESIAESIAESIAESIAESIAESIAESIAGKGa4BEiABEiABEiABEiABEiABEiABEiABEnASAYoZJ4HntCRAAiRAAiRAAiRAAiRAAiRAAiRAAiRAMcM1QAIkQAIkQAIkQAIkQAIkQAIkQAIkQAJOIkAx4yTwnJYESIAESIAESIAESIAESIAESIAESIAEKGa4BkiABEiABEiABEiABEiABEiABEiABEjASQQoZpwEntOSAAmQAAmQAAmQAAmQAAmQAAmQAAmQAMUM1wAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJOIkAxYyTwHNaEiABEiABEiABEiABEiABEiABEiABEqCY4RogARIgARIgARIgARIgARIgARIgARIgAScRoJhxEnhOSwIkQAIkQAIkQAIkQAIkQAIkQAIkQAIUM1wDJEACJEACJEACJEACJEACJEACJEACJOAkAhQzTgLPaUmABEiABEiABEiABEiABEiABEiABEiAYoZrgARIgARIgARIgARIgARIgARIgARIgAScRIBixkngOS0JkAAJkAAJkAAJkAAJkAAJkAAJkAAJUMxwDZAACZAACZAACZAACZAACZAACZAACZCAkwhQzDgJPKclARIgARIgARIgARIgARIgARIgARIgAYoZrgESIAESIAESIAESIAESIAESIAESIAEScBIBihkngee0JEACJEACJEACJEACJEACJEACJEACJEAxwzVAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAk4iQDHjJPCclgRIgARIgARIgARIgARIgARIgARIgAQoZrgGSIAESIAESIAESIAESIAESIAESIAESMBJBChmnASe05IACZAACZAACZAACZAACZAACZAACZAAxQzXAAmQAAmQAAmQAAmQAAmQAAmQAAmQAAk4iQDFjJPAc1oSIAESIAESIAESIAESIAESIAESIAESoJjhGiABEiABEiABEiABEiABEiABEiABEiABJxGgmHESeE5LAiRAAiRAAiRAAiRAAiRAAiRAAiRAAhQzdq6B2w/97BxBe3dPDzekSeaFwKAQ3H/6SvtA7Gk4AulSJFQ5DwkxGy52BqyNgJsJSJvCG/8+ct4/c7RFzl72EPDydENib088esZ/xtvD0Wh9k3p7ACYTfF8GGi10xmsHgZRJE+ClfxD8A0PsGIVdjUYgfUpv3HvsB6P9J13GVN5GQ814SUDXBChm7EyPM8WMh7sJaZMnRFCwGfee+Nv5JuxuJAIUM0bKlmNipZhxDEejjUIxY7SMOSZeihnHcDTaKBQzRsuYY+KlmHEMR45CAkYnQDFjZwYpZuwEyO6aCFDMaMJm6E4UM4ZOn+bgKWY0ozN0R4oZQ6dPc/AUM5rRGbojxYyh08fgScBhBChm7ERJMWMnQHbXRIBiRhM2Q3eimDF0+jQHTzGjGZ2hO1LMGDp9moOnmNGMztAdKWYMnT4GTwIOI0AxYydKihk7AbK7JgIUM5qwGboTxYyh06c5eIoZzegM3ZFixtDp0xw8xYxmdIbuSDFj6PQxeBJwGAGKGTtRUszYCZDdNRGgmNGEzdCdKGYMnT7NwVPMaEZn6I4UM4ZOn+bgKWY0ozN0R4oZQ6ePwZOAwwhQzNiJkmLGToDsrokAxYwmbIbuRDFj6PRpDp5iRjM6Q3ekmDF0+jQHTzGjGZ2hO1LMGDp9DJ4EHEaAYsZOlBQzdgJkd00EKGY0YTN0J4oZQ6dPc/AUM5rRGbojxYyh06c5eIoZzegM3ZFi5r/03XvwBMdO/om7Dx7DJ2liZEibEu8XzoNE3gmjzfGps5cwfvZqzBjZDalTJov2eT5AAnojQDFjZ0YoZuwEyO6aCFDMaMJm6E4UM4ZOn+bgKWY0ozN0R4oZQ6dPc/AUM5rRGbojxczr9G3bcwx9RsxRf505QxrcvHPfmtftK8YhS6Z0b83zwWN/oEO/ydi9drISOmwkYDQCFDN2Zoxixk6A7K6JAMWMJmyG7kQxY+j0aQ6eYsZ2dAGBwIP7QNKkr/9n5EYxY+TsaY+dYkY7OyP3pJgB7t5/jAoNeqBMiYIYM6A9UqXwQXBwCP76+x/MXLwRvTs0QvYsGShmjLzQGXu0BChmokX09gcoZuwEyO6aCFDMaMJm6E4UM4ZOn+bgKWZsQ3f0Vzfs3O2GoKDXz+fIbkbjhsFI6GVbf709RTGjt4zETTwUM3HDWW+zUMwAB4+dQYd+kzBlWBdUKVf8rSk6cuIcFqzYijMXriJNqmQo9X4BdGldF2cvXFU7Zkb2a4NNOw7h3MVr+KR0EbRsWA0F8mazjnn95l1MnLMaR0+eR0IvT5QtWRi9OzZGyuRJ4ecfgHa9J6BGxQ9x4vQFFZfsvunVoZE6HjVt4XqcOnsZpYq/izZNPsV77+ZU40pMk+athYz90s8feXJkxpeNq6NWlTJ6W26MR8cEKGbsTA7FjJ0A2V0TAYoZTdgM3YlixtDp0xw8xUz06J4/ByZN80BwcNhnq1YOQZlSIdEPoMMnKGZ0mJQ4CIliJg4g63AKihngpd8rlKj+FfLnzopeXzVEkYK54Z0wQYRs7T9yGp2+maLER+PaFeD7wg/fr/0ZM0d3xzPfF0rMSGvRoCreyZhWfZbcJwnWzBuifi41bD6p3x3FCuVBw8/K49FTXyxcsVWJm7njesH3+Ut8WLOTevazKqWVeNm88zD++POK+ln9muWQN2cWrNvyi9rRs/n70ernO/b9qkRPkQK5kNArAfYeOomtu45g2YyBKFYotw5XHUPSIwGKGTuzQjFjJ0B210SAYkYTNkN3opgxdPo0B08xEz26S5dNWLbSPcKDBQuY0fDzcLYm+uF08QTFjC7SEOdBUMzEOXJdTEgx8zoNm3cewoTZq/Hoia/6+5xZM6KzkUwbAAAgAElEQVTCR8XQqmE1JE+WRP2sVssBeBUQiB2rJlhzJztUzGbg5Jm/lJj5YeFw5MuVRX2+5+BJdBs0Hb+sn4q0qZOr8ddu2Yf9G6ZaCwqv3rQXI6YsxYGN05HA00OJmYFff4GmdSuqMU7/eQVNO43AhEEdUaNiSfUzSz2bPesmI32a/+rZmM1mPPN9iYdPnuGzFt+oI1iyc4aNBGwhQDFjC6W3PEMxYydAdtdEgGJGEzZDd6KYMXT6NAdPMRM9ujv/AnPme0R4sFgRM+rUopiJniCf0AsBihm9ZCJu46CY+Y+3/6sA7D/yO85fuoHfz13G8d8vKIHy07KxSOaTGMWqtEPLBlXRt3OTCEmKrPivHHdq3GEYVs8dgkL5sqNV97FqTNmZY2myS0YKDa+bP1TtshExE1rC/HP7Hqo17at21JQtWUh1+/Ova2jQfihWzR6Ewu/mxOOnvpg4Zw127j+hjjJZWucv66JTy9pxu6A4m2EJUMzYmTqKGTsBsrsmAhQzmrAZuhPFjKHTpzl4ipno0d27b8KM2W4wmUxhHi5SOAT16vAoU/QE+YReCFDM6CUTcRsHxUzUvC21Zwb1aIGalUqh5KcdVT2Zji0iyo7IxMz5S9dRv90Qq5hp9NUwuLm7RSpL3iuQC/JvkfBi5va/D1C5ce8wYubC5Rv4vO1gq5hp0mkEbt6+h/5dmykBlDplclRt0htN6laimInbXydDz0YxY2f6KGbsBMjumghQzGjCZuhOFDOGTp/m4Clmokd3/oIbVq5xg/ovagAmM2A2AfnzhqBpI4qZ6AnyCb0QoJjRSybiNg6KGeDS1ZtqZ0ym9KnDwL945R/UazMIvTo0ROvGNVC2TldkTJfaWjPG8nBIiBmHjksB4bDXZYcXMwPHLsSR387hp2XjwtSwkSNIIvctNWZC75iJTszkyJpRCaMe7RugbdNPrfFLrBQzcfu7ZPTZKGbszCDFjJ0A2V0TAYoZTdgM3YlixtDp0xw8xUz06B48NGH6rIg1ZsqWCUHlihQz0RPkE3ohQDGjl0zEbRwUM8DG7Qfx7bjvVNHeD4rmQ7rUKSC7UlZu3AORK9tXjEOWTOnw3aptmDxvLRrULI/Pa5bDq1cBqsBv22Y1rcV/d6+drG5SkhZezFj+/uMP30OHFrWQJLG3mmfx6u1YOLEP3N3dNO2YkV057m5u6vam4OBg/LDtALbvPQYeZYrb3yWjz0YxY2cGKWbsBMjumghQzGjCZuhOFDOGTp/m4ClmbEO35gd3nDv331Emb2+gY7tgJE9utm0AnT3F4r86S0gchUMxE0egdTYNxQxw5dotzFu2BT/tORomO1K/pX+XptZrqQODgjFv6WbMWbrJ+lzBvNkxZVhnXLl+W+2YCV2Q1yJi5FYmeU6aHHkaOXWZqitjaVI7ZsqwrkqqyO6X0Dtm7tx9iEqNemH+hN4oU6Kg6mLZybN6zmAUyp8Dh46fxfDJ31vHrFm5lLqVKapjVzpbggxHJwQoZuxMBMWMnQDZXRMBihlN2AzdiWLG0OnTHDzFjO3orl4z4fZtE3x8zMiVywzvhLb31duTFDN6y0jcxEMxEzec9TYLxcx/GZEjSY+ePMOLl/5ImzpFpFdmy9NyVfW9B4+ROLE3fJIk0pTSp74v8PyFH9KkTIYECTw1jRG6kxyHuvbPv0iZwgfJkia2ezwO4HoEKGbszDnFjJ0A2V0TAYoZTdgM3YlixtDp0xw8xYxmdIbuSDFj6PRpDp5iRjM6Q3ekmDF0+hg8CTiMAMWMnSgpZuwEyO6aCFDMaMJm6E4UM4ZOn+bgKWY0ozN0R4oZQ6dPc/AUM5rRGbojxYyh08fgScBhBChm7ERJMWMnQHbXRIBiRhM2Q3eimDF0+jQHTzGjGZ2hO1LMGDp9moOnmNGMztAdKWYMnT4GTwIOI0AxYydKihk7AbK7JgIUM5qwGboTxYyh06c5eIoZzegM3ZFixtDp0xw8xYxmdIbuSDFj6PQxeBJwGAGKGTtRUszYCZDdNRGgmNGEzdCdKGYMnT7NwVPMaEZn6I4UM4ZOn+bgKWY0ozN0R4oZQ6ePwZOAwwhQzNiJkmLGToDsrokAxYwmbIbuRDFj6PRpDp5iRjM6Q3ekmDF0+jQHTzGjGZ2hO1LMGDp9DJ4EHEaAYsZOlBQzdgJkd00EKGY0YTN0J4oZQ6dPc/AUM5rRGbojxYyh06c5eIoZzegM3ZFixtDpY/Ak4DACFDN2oqSYsRMgu2siQDGjCZuhO1HMGDp9moOnmNGMztAdKWYMnT7NwVPMaEZn6I4UM4ZOH4MnAYcRoJixEyXFjJ0A2V0TAYoZTdgM3YlixtDp0xw8xYxmdIbuSDFj6PRpDp5iRjM6Q3ekmDF0+nQZ/FPfFzh8/CyqffIBTCaT5hiDg0PwKiAQiby9NI9x9cYd3Hv4BCWL5g8zRkiIGXcfPEaypIntGl9zYDrsSDFjZ1IoZuwEyO6aCFDMaMJm6E4UM4ZOn+bg9SZmgoKBk6fccPUq4O5uQu7cIShc0Aw7/rtPM5v43JFiJj5nN+p3o5hxzbxTzOg37zfv3EfVJn0iBPjxh+9hztgebw1c+k6etxbjB3WAh7t7nL7kuYvX0PCroTi95zu75j5y4hza9p6AQ5tmInmyJJreYem6Hdh3+HcsmtJP9Q8MDMK8ZVswZ+km63iF382JEX1aI1f2TDbN0W/UPLRt+ilyZ89s0/NGeYhixs5MUczYCZDdNRGgmNGEzdCdKGYMnT7NwetNzGzZ6objJ93CvE+lCiH4+KMQze/IjhEJUMy45qqgmHHNvFPM2J/3gEDgzr9mJE9mQjIf+8ezjGARMwsn9kH6tCmtAyfyToh0aVK8daLzl66jfrsh+H3XQnh6ejguKBtGcpSYef7CD9dv3kXeXO9oFjzhxcykuWuxetNeTB7aCR8UzY9HT3wxYfYqHDx2BrvXTEIyn8TRvmGB8q2weEp/fFA0X7TPGukBihk7s0UxYydAdtdEgGJGEzZDd6KYMXT6NAevNzEzepwH/F+FfZ1Uqcz4unOw5ndkR4oZroHXBChmXHMlUMzYl/ddv4Tgh63BCAp6PU7+PCb06uwYEWIRMz+vHI93MqaNEOjYmSvh4eGOK9du48Tpi/ikdBF0bVNPPStSRuRM/txZ4e7mhgFfN0fBvNmxaPU2rPpxD3yf+6Fi2WL4pkszJSMuX72F/qPno0bFklj+wy61s6TnVw2RIIEn5i3djMdPffFF/Spo3/wzFYccM4pqrPBi5sr12xg1dRmOnTqPnFkzokvreqhSrrgaR44ULVm7HYtXb1eSpFTxAnj1KhDLZgyA9BswegFWzh4Ed3c3+PkHYPaSH7Fz/3G89PNHiSL58E3XZkreDJ/8Pe7ce6TGFA4Du3+hjimFFjMyftk6XTFmQDvUqlLGytP/VQAqN+qFJnUroVPL2hg6cQlKFsuP6hVKqmd+OXwKP//yK8YN/ErtQvpu1TZkzpAGyX2SoG6NsmhcuwJOnvkLU+avx4XLN5A5Q2rFql6Nj9U7RPXukj/JzZXrt5QYknfv37kpFqzcir3/O6XET7c2nyNvzndUHLf/fYAxM1bg6MnzeK9ATjSoWR5Vy5ewbwGH6k0xYydKihk7AbK7JgIUM5qwGboTxYyh06c5eD2JGV9fYMKUiP+x6+4GDPn2zX8Ra35TdgxNgDtmXHM9UMy4Zt4pZrTn/fFToM/gwAgDNKrrjsrlw+7u1DKLRcw0rVsRyZL+d5QnS+a0Six07D9FCZnu7T5HruyZMXnuWiUURKhs3H4Q3477DrLbRuRNnpzvKKExftZq9OnUGBnSpsS0hT8gY/pUmD6iG86c/xuNOw5H5Y+Lo8Fn5XH6zyuYtXijEjsiY4KCgtFnxBxsXToG2bNkwLqt+6IcK7SYEYFTvVlfFMiTDS0bVsOvp85j1pIfsX7BMDW2JU6JuXTxAti+95gSH+f2LUF4wTNo/CIcOn4GXVvXQ9bM6fDDTweUFDG5mXDp75tqPD//VxgyYTHKly6iOIQWMyJPvug6Goe3zFLSJnQbNvl7PHz8VLGQZ0TKCHdpEqOMs3HRSFy6ehN1vvwWfTs3wbu5s6qdTGazGdWb9VMipl6Nsrj2z7/4/dxlDOjW/K3vbslfz68aIPs7GTBk4mJIzts1q6kkjcyZNEkijB3QHoFBwajdagCKFMilpM/VG/+qfOxcPRGZ0qfWsrwi9KGYCYUkKDgYbiY3uMk3IBsbxYyNoPiYQwlQzDgUpyEGo5gxRJocHqSexIy83LBRHggOtzkmUSIz+vfmjhlHJp9ixpE0jTMWxYxxcuXISClmtNM89YcZs76L+AcDpT9wQ+tm9td1sYgZ2dmSNHEia6C5c2RGq4bVlJgpVii3+iIvTUTF8h92KoEQ2VGmJp1GIF+uLBjSs6V6fvfB3/D1oBk4vHkWbty6q8TM2V8Wq4K9akdK9Q5YO28oCuTNpp6v2/pbtGhQFXWrl8XbxpK4LTVmjp08j/Z9JmL32slKBkmr1XIAypYsrASRSJAsmdJiVP+26rNfT13Alz3GRhAzgYHBKF6tPUb2a6PmD9/uP3yCk2cu4d6Dx9i5/wR8kibCrNHdw4iZHft+Rc+hs9XY4dvMRRux78jvShi9TcxIv/BHmaTvms17cWDj9DDFjg8dP/vWdw+fv6kL1ivxI3FLk506g8cvwsEfZ+DoyT/Rpud4fD/tGyROlFB9Ljt7alf7yCqQtK/k1z0pZt4QlK1Zjb4aqoxkzcqlrFz3HDyJboOmR+B8cucCeCXwBMWMvUuQ/bUQoJjRQs3YfShmjJ0/rdHrScyE/H8ZmaGjPADzf28jfyn/rdq/N3fMaM1xZP0oZhxJ0zhjUcwYJ1eOjJRiRjvNi5fMmDAz4r9/qlV0Q/1ajhMzUR1lCv/FXsTD5HnrsGPVhEjFjBzjkV0kFrFx5+5DVGrUCxu+G4GAgMAwYkZ2uhSu2Bpr5g1RR6CkNe8yCjUqfqhEwNvGkt01FjGzecchTJm/TskFS5OdIb7PX2Ly0M5qnO7tGuDzTz9WH0clZv65dQ81W3xj3bETOmuyy6b38DkoVigP8ufOgr/+vomEXp6YO65XuB0zl/BF11FKRIWvJSOS49HTZ9HumJF5w4sZKQYsTY46hW4bth1467uHz9/85Vte71R6I2YsMkZEkowlO4aKFswdZo5PyhRFmyY1tC/iUD0pZgBMnLtGnauzJDS0mBGT+c3oBcrehW5iFsVmUsw4ZB1ykBgSoJiJIbB48DjFTDxIooZX0JOYkfClxoyfPyD7Ss3q/wCpU7PGjIbUvrULxYyjiRpjPIoZY+TJ0VFSzGgnKn9gMGRsIO7cDTvGgB4eyJHN9hMQUUUQXY2Zt4kZqXXyedvBsPxhvswhO17KfFAIvTs0UlNabj36Zf1U3L3/KIyYkdovhSp8GaWYedtYsnvFImYOHvsDXQZMCyNDRPCIQBn49RdKqGRImwq9OjRUMUUlZl689Efpzzpj2oiuqFT2/TDIZAdOtQolVX0YaVL7Ro5MhRczUifno9pdI+y6kQ0SVRr3QvPPq+CrLz5D6x7jIDdftWpUTY0X+iiT/L2Ime8m98WHxd5Vn8t3+QNHTmPz96PDxCU7Xt727uHzt2DFVnUEKjIxs//IacXqyNZZmgshR7fSKWYAPHn6HP4BAWjaaQR6tm8YZseMiJlhk5aEsYyhoVLMRLfE+HlsEKCYiQ2q+h6TYkbf+Ymt6PQmZngrU2xlOuy4FDNxw1lvs1DM6C0jcRMPxYx9nH2fA3sPBuP6P2akSGbChyXckDuH/VJGorKImfkTeiNjulTWQL29vZA+TcoIR5lC75gR2SBHf+Sa6ML5c6o6KItWbcOG7QcwdVgXpEuTEiOnLlUFc9fNH4qzF67GSMzI8Z2oxvrzr+tWMSM7Y6o07oMmdSqgbbOaOPH7BXT9djpmj+mBcqXew6YdhzBy6jJ0bFkLaVImx/frdqjdPpHVmBGhIxsTBn7dHNneSY+fdh9FkQI5MWTiEsjxrp7tGyhmsvslRfIkEcSMALTcyjRhUAdVx+XR42cYM3MFjpz4E7vXTlK1Z2Z/v0mJHZFAt+7cx5gZK/H8xUt1REyaiJsSRfOhbdOaePnSX8Xbptd4DO7RAp9VKYM79x7i8PGz6jv92949JmLmqe8LVGrYS+12kppC0o7/fhGBQUERRJXWFU0xE4qc3FMvxYzC75iRs3+1q5aBl1cCFH8vr6q+bLmP/v4Tf63s7e7n7mZCSh8vBAWb8dg33DUZdo/OAfRMQPL++HkAzCGhzhToOeD4Gptj/r1vEx0pYZfCJyEePnPeP3NsCpQPOZRAAg83JPTywLMXARHGlf/Ik/9AissWFAyc+M2EK3+b4OEB5MltRpHCEkdcRhH/50rk9brI8stXPCIW/7P93xv6JPKE/6tgBATbcP08//Ufb5ZGqmQJ8eiZP8wGy2ma5K/rbMTnZhEz4d9RdnPMGdtDiZn3C+dB26afqkd27Duubg2So0zSRJ7MWbpJ/bUUAZabfAaMWYhdB06on0kB3RkjuyFntkw4I2KmwzBrjZnIdsxI7RW5talJnYqqBk1UY/351zU0aD8Up/d8p76zWnZ7SB9pHVrUUt95pb0KCMT0hT+oeippU6dAnhzvqB0qx7fPRfhxbty6hwFjFuDU2Uuqr9yMtGBiH/xz+x76j5qnbnWSq8TlFiMpmiuMlq3fiV8OnVKCSprcNjVv2RYrF/mZHNWSGje5smdSz1y9cQc9h85SR6JkvPcL58aDR8+sJ1ik1MjQSYvVfB1b1EaX1nWxZO3PmDB7tTVVlnd827uHz1/4HTNyi5XsuBEW0uS9B45dqG6hkiaxSWFgqUHkiEYxE4piZGJGfknEfoq9u333IdZu/kWd65OtX9ICgmz4l6cjMhXJGPLfwZ4ebuq4f6AT44il1+OwbyHg6W5SQs5g/w6PfzmNywSYAE93N/6ux79V9NY3EuEhEl5+38O3oOAQeMiVSGzxjoBKq8mE4EjyHu9eli9kJeDhbkKI2Qw5nhFtowyNFpFRHpB/t8s/z+PyPykcwUb+4IAtegKycyYgMDDMLUSy+8LfPwDp0qSIfoBonrB1LKlZ8+/9R0iZ3AfeCRNYR5Wfy8U3lj/oETlx4Ogf6rrsqNrzF34ICAxCyuRJrY/IJTpSMyd92lTw9Ii+vo+Ip3/vPUQynyTWYrrh55N4U6dMFunRIYlbjkalSuFjjV1+9vDxMyT3SayuGbe0qN5dK3xhLoIp9Nxaxwrdj2ImFI3IxEx4yJbCPxYDyaNMjliGHCOmBHiUKabEjP88jzIZP4da3kBvR5m0vAP7xJwAjzLFnFl86MGjTPEhizF/Bx5lijkz9nAcAdkF0mvYbHWdtt+rAFX3Rnb3yDEjtrglQDETQzFz8NgZdOg3Cb/tmI+EXglY/Ddu1ytne0OAYsb1lgLFjOvlXN6YYsY1804x45p5p5hxzbxTzLhm3vXy1nK8Sa6Vvv/wKXySJELRQrmRKX1qvYTnUnFQzACQrVdSq0OuAJPzaDUrlYKn5+vz3Ss37lHn5N7Nkw1PfZ+jz/C5anuW5Zwcd8y41O+Lbl6WYkY3qYizQChm4gy1riaimNFVOuIsGIqZOEOtq4koZnSVjjgLhmImzlBzIhLQNQGKGQA9h85WdWRCt61LxyB7lgyqgNN3q7ZZPyr8bk5IFWkpdiSNYkbX6zveBkcxE29TG+WLUcy4Xs7ljSlmXDPvFDOumXeKGdfMO8WMa+adb00C4QlQzNiwJvxfBUDug0+aOBGSJ0sSpgfFjA0A+YjDCVDMOByp7gekmNF9imIlQIqZWMGq+0EpZnSfolgJkGImVrDqflCKGd2niAGSQJwQoJixEzPFjJ0A2V0TAYoZTdgM3YlixtDp0xw8xYxmdIbuSDFj6PRpDp5iRjM6Q3ekmDF0+hg8CTiMAMWMnSgpZuwEyO6aCFDMaMJm6E4UM4ZOn+bgKWY0ozN0R4oZQ6dPc/AUM5rRGbojxYyh08fgScBhBChm7ERJMWMnQHbXRIBiRhM2Q3eimDF0+jQHTzGjGZ2hO1LMGDp9moOnmNGMztAdKWYMnT4GTwIOI0AxYydKihk7AbK7JgIUM5qwGboTxYyh06c5eIoZzegM3ZFixtDp0xw8xYxmdIbuSDFjjPQFBgapmqNp06SAh7t7mKDlEpkPiuZHimRJjfEyAF76vUKCBB4R3sUwLxAPA6WYsTOpFDN2AmR3TQQoZjRhM3QnihlDp09z8BQztqO7es2E27dN8PExI1cuM7wT2t5Xb09SzOgtI3ETD8VM3HDW2ywUM3rLSNh4Hj5+hlHTlmHHvuPWD2pWLoUBXZsjmU9i9bMC5Vth+cyBKFowty5fRm4YzpwhNaqW/0DF5+cfgOLV2mPGqK9RoUxRXcbsikFRzNiZdYoZOwGyuyYCFDOasBm6E8WModOnOXiKGdvQrfnBHefOmawPe3sDHdsFI3lys20D6OwpihmdJSSOwqGYiSPQOpuGYsYBCQl4heCbV+GWMg1MyVM5YMDXQ4SEmNGk43AEh4RgVP+2yJE1Iy79/Q/6j5qPlCl8sGRqf0OImW6DpiNfrqzo1LK29b0uXL6OzBnTwidJIofx4kD2EaCYsY8fKGbsBMjumghQzGjCZuhOFDOGTp/m4Clmokf34KEJ02eF3VYuvcqWCUHliiHRD6DDJyhmdJiUOAiJYiYOIOtwCooZ+5Lyausa+K2aBwQGqIE8Cr6PJIOn2Tfom977j5xGp2+mYPuKcciSKZ11zItX/kG9NoOweEp/fFA0n9ox80X9Kjh28k/89fdNfFalNIb0bAXvhAnwz+17GDtzJX49dQEJvTxR6v0CGNmvDRIk8MSJ0xcxYfZq/H3jDip//D6a1K2EQvmyq3madBqB9s1r4uCxMzh/6TqKF84L3+cvMbR3K2sc85ZtwYuXfuj5VUP0GzUPh4+fxaMnvsiZNSM6f1kXVcuXgByz+nbcIjV3xnSpkTtHZjV/8y6jMPDr5sifOyue+r7A+FmrsHP/CSRN4o36NcurueXI1padh7H/6GkkS5oYm3ceRr5cWdCldV2ULJrfIYw5yH8EKGbsXA0UM3YCZHdNBChmNGEzdCeKGUOnT3PwFDPRozt/wQ2r1rpFeDBnDjNaNg+OfgAdPkExo8OkxEFIFDNxAFmHU1DMaE+K+dF9PO1QN8IA3i27wevThtoHftNz/vIt2L73GDYuGhlhrKpN+qBFg6poVq+SEjMF82ZH6yY18ODRU0xdsB6De7RQgqZ9n4lwd3dH93b18cz3Bdb/tB+De7SEHJGq3qwvenVoiLIlC2PHL8exYfsB7Fk7GSaTSY0prVm9ysiYPhXeyZQO3QZOw551k5E+TUq8CgjER7W7YsyAdqhU9n2s2LALubJnRqrkPth35HdMmb8OhzfPgv+rAPQaNhtZMqVF3eplkSSxt5IxMv7S6QPwfuE86DtiLi5cvqEEz6MnzzBmxkoVr7zbkjU/Y8Kc1fiycXV89EEhxePcxWtYv2CY3Xw5QFgCuhQzYu2uXLuNy1dvIjAoWFm/nNkyIk2q5LrLH8WM7lLiEgFRzLhEmsO8JMWM6+Vc3phiJvq8X7rshmUrI4qZzJnMaN+GYiZ6gnxCLwQoZvSSibiNg2JGO+/AXw/gxcQBEQZIUK46EnUeqH3gNz1HTFmKW//ex9xxvSKMJTtOihXKrWRG+Bozo6cvx4uX/ur4kzyXOmUyDOjWHGlT//dddvaSH7F19xFMGtJJjR0UFIzGHYfjh4XD1a4UGVPmLVuykHXuGs37oV6Nj9G26afYdeAEBoxZiMObZ8LT0wPBwSG4eOWGEiz3HjzBjEUbsGbeECWMwh9lkgEtYiZ/7iwoUb0DJgzqiBoVS6q5ZIeP7P4RISVi5n/Hz2DhxD7qs6s37qBmi2+U9LHU2LEbNAdQBHQlZqSo0uR5a3Hzzn0VXMrkSdVCu3v/sfr7RN4J0a1NPTSpW1E3FaQpZvib5AwCFDPOoO7cOSlmnMvfWbNTzERPXnbMrFzrhv8qzLzukzN7CFp+waNM0RPkE3ohQDGjl0zEbRwUM9p5B507iefDukUYwKt2M3g366h94Dc9F6zYim17jka6Y6ZCgx5o27QmmtatGEHMrN60F4tXb8eOVRPUEab+o+ep77OZM6RB22afokHN8ug/ej72HDyJvDnfCRNnx5a1UaZEwUgLCq/YsBtL1+3AzyvHo8vAaapvtzafKwnUod9kJWUqfFQUGdKmgsS+avYgFH4351vFjHzfFtGybfk4ZM38+rjW1l1HMGzy9zi+fW4EMSPS55P63a07d+yGzAGsBHQhZkTEjJq2HAeOnlYW8LPKpfFegZzwSuCpAg0KDsalv29i255jkIUuVaWH92mNQvlzOD2VFDNOT4FLBkAx43ppp5hxvZzLG+tNzDx5asKO3W64etUEdzcz8uQBKlcMRiJv5+XHWmPGDKhSv28MzcesMeO8pHBmTQQoZjRhM3wnihk7UhgSjGe9WyLk5rUwgyQdOQ/ueQrYMfDrrpYaM1uXjkH2LBms40nNl/rthliPAoXfMSNS4/LVW1g24/VuHtnNIjtNdh08gZmLNkLG27DtIK79c0fdjBRZi+ympydPn6NM7S5qd0ufEXOstW9E8MiumMNbZqlaMNKkfxgxkzMLOrWqY53KsmMmV7ZMKF2rM2aN7o7ypYuozyXGbXuPKlkTfscMxYzdyyrKAXQhZroOnKa2XMl2r1zZM731beU52R72x/kr2LtuSuyRsXFkihkbQfExhxKgmHEoTkMMRjFjiDQ5PEi9iZnlq9zx16Wwe1OKvx+CWp86d2cKb2Vy+NLjgE4gQDHjBOg6mJJixr4kmJ89wauff0Dw3xdhSpkGCT6uCo98he0b9E1vy61MAYGBGDOgPRg0aqUAACAASURBVHJmy6SOC0lNFqnzsmhKP6sEGTugPWpU/BC/njqPviPnol2zmqoGzaS5a1G/ZjlV40V2tIjQkfosfv6v8EXX0ZB+1SuWxNNnL9TxJCnyK9+Ho7qCW4r8yo6WUsULWI8XHf3tT7TpNR4bvhuh4vppz1F1xbdFzEitHCk0LBJIdtfILpnQNWbkuFWSxAlVweLHT33RY8gsVClXQtW/oZhxyFKyaRBdiJkffjqgFrJUrralyS/Jqh/3qIJEzm4UM87OgGvOTzHjenmnmHG9nMsb60nMhIQAo8d5ICAwbC6SJzOj59fOr+Vy9ZoJt2+b4ONjRq5cZngnNO6aYfFf4+bOnsgpZuyhZ9y+FDP6zp0U6RXJISU3LK1m5VKqZkzo3SlScuOln796RD4f0ae1unlJNiDsPXRK/TxdmhRoWreSqhEjbcO2A6rQrqWfHCWaO66nugEqKjEjR6O+7DEWk4d2QtXyH6hx5Ltxz6GzlNiRVqFMUTXn6jmD1QkT2a0jn8uNUUUL5sbymQPV+LKjp1ihPOrzrwfNwJXrt1V/2TkjwihpkkRYsvZnddvT/Am91Wf3Hz5B+c+7qw0S8j5sjiOgCzHjuNeJ+5EoZuKeOWcEKGZcbxVQzLhezuWN9SZmRo7xQFA4B5M4EdCvd5BrJiiW3ppiJpbA6nxYihmdJyiWwqOYiSWwDh42ICAQ9x4+QbrUKVQN1PDNbDbj7oPHSJggAZInSxLmY7kZ6ZnvyzDFfy0PSD+RPzKmRfRoDV1uhHJ3d0OKZEkjHULm8UmaGJ4e7pF+LidTvLw87Y5Da/yu3k93Yub0n1eU7Wvb5FO1qOU+9WXrd6qrvb7p2jTMHfJ6SB7FjB6y4HoxUMy4Xs4pZlwv53oTMxLPsFFy80PYXCRODPTrRTHjyBVKMeNImsYZi2LGOLlyRKSXLpuw76Ab7t41IZmPGe8XM6P0h849FhqT98qYyonFxWISKJ8lAYMQ0J2Y6T18jqpaLVurLFul8uTIDLlCW/5/ZNeVOZM1xYwz6bvu3BQzrpd7ihnXy7nexIzs0B49/vWfEkqVGbMZMJkArwTAwP4UM45coRQzjqRpnLEoZoyTK3sjffECmDQ14g7Els2DkTOHKmOu+0Yxo/sUMUCDEdCdmKnVcgA+r1kOLRtUxbqt+zB04hL8sn4qXrz0U1d5nfh5vs21aOIiFxQzcUGZc4QnQDHjemuCYsb1cq43MSPxjJ/sgefPw+YicyYz2rdxfo2Z+LRCKGbiUzZtfxeKGdtZGf3J8xfcsGqtW4TX+Kh0CKpUMsauGYoZo69Cxq83AroUM03qVkSTOhUxYMwCyHVkGxeNxEu/VyhR/SusnjsEhfJl1w1HihndpMKlAqGYcal0q5elmHG9nOtRzBw77oZtP7up3TJqXboBjRqEIH9eY3yRMMoqopgxSqYcGyfFjGN56nk0ihk9Z4exkYBzCOhOzHw77jucPPMXWjWqjmGTlqBDi1ro2roepPZM004jsGv1RGRMn9o5tCKZlWJGN6lwqUAoZlwq3RQzrpdu6xvrqfivJaj7D0z4+6oJ7m5m5MwBpEhhjG33RlpGFDNGypbjYqWYcRxLvY90/z4wY7bH63OhoVrliiEoW8YYops7ZvS+yhif0QjoTsz8c/seWn49RtWZkSu4ZLeMVKjuPngm/jh/BbvXTIab/NGxThrFjE4S4WJhUMy4WMK5Y8b1Ev7mjfUoZlw2GXH44hQzcQhbR1NRzOgoGbEcimXHjFVrq22IJiVleJQpluFzeBLQKQHdiRnhJNeR3bn3CO9kTGuVMH/8eQXJfJJA7nfXU6OY0VM2XCcWihnXybXlTXmUyfVyLm9MMeOaeaeYcc28U8y4Tt55lMl1cs03JQFbCehCzDx64ouUySO/bz2qF9HSx1YoMXmOYiYmtPisowhQzDiKpHHGoZgxTq4cGSnFjCNpGmcsihnj5MqRkVLMOJKmvsfirUz6zg+jIwFnENCFmOk5dBYqlS2OGhVL2sRA6s0MnbhYHXNydqOYcXYGXHN+ihnXyzvFjOvlXN6YYsY1804x45p5p5hxrbxfumzCvoNuuHvXhGQ+ZrxfzIzSHxqjvoxkijVmHLNenz57gRBzCJL7JIHJ5PhyHZeu3oTv85coVigPgoND8CogEIm8vSINPrrPHfPGHCUqAroQM4tWb8OkuWtRtXwJfN22fpTHlR48eopFq7bh+3U78FmV0hg7oL3TM0sx4/QUuGQAFDOul3aKGdfLOcWMa+Zc3ppixjVzTzHjmnlPn9Ib9x77IcRgddRdQczMX74F0xb+YF2YU4Z1Ro8hs6JcqOsXDEPnAVNVrdSFE/ugVPEC6tn9R05j2OQl2Ltuivp7ESBrt/yC2Ut+hJwCkZbIOyGa1KmAnl81dOgvwuzvN+HC5euYPqIbjpw4h7a9J+DQpplIniwJ+o2ah7ZNP0Xu7JnVnOE/d2ggHCxaAroQMxLluYvXMGTiYnU9duF3c6LU++8ifdpU8PRwx7/3H+GPP//GgaOnVUHgwT1aonzpItG+XFw8QDETF5Q5R3gCFDOutyYoZlwv5xQzrplzihnXzTvFjGvmnmLG/rz7hQThT//HyOSZGOk9E9k/4JsRRKBs23MUw6csxeHNMxEYFIy79x+pT6/euIOu307H8pkD1W4XaZnSp0a1Zn0RGBiEjOlSY/XcwWoXTHgxs2DFVsxfvhXDen+J8qXfg/+rQBz97U9MnLvaKm8c9RKhxczzF364fvMu8uZ6Bx7u7ihQvhUWT+mPD4rmU9OF/9xRMXAc2wjoRsxIuEHBwdj7v1P4869ryuyJrJGFWiBvNuTPnRV5cmRWu2rEKOqlUczoJROuFQfFjGvlW96WYsb1ck4x45o5p5hx3bxTzLhm7ilm7Mv7lLunMeDWMfibg9VAFZNmwu48tewbNFTv7XuPYfCExTi+fW6YMS9e+Qf12gzCwR9nhKmVWqFBD3RqWUdtOJgxshsqfFQsjJh56vsCpT/rjME9WqBR7QphxvR/FYCEXgnUjho5UbLqxz3wfe6HimWL4ZsuzZDMJzEuX72F/qPno2blUli1cY/q36ZJDTSs9Yn665d+/hg/azV+2nMUCb081fdmETGyY+bK9dsYMHoBVs4ehGkL1+O7VduQOUMaJZbq1iiLEkXyWT93d3eDxDp+1irs3H8CSZN4o37N8mjfvKaSOlt2Hsb+o6fV7cmbdx5GvlxZ0KV1XZQsmt9h7F1tIF2JGSPCp5gxYtaMHzPFjPFzGNM3oJiJKbH48TxrzMSPPMb0LXiUKabE4sfzFDPxI48xfQuKmZgS++/5W4EvkPmPpREGmPJOGXRPW1j7wHaKmSE9W+Hshb+xY99xVRP1f7+esR5lOnX2Epp3GYX9G6Yhdcpkkca4bus+JVf6dGqMDGlTquNUGdOnUnLlzPm/0bjjcFQoU1TJmH9u38eoactweMssJUmGTf4e+4/8js6t6iJX9kyYu3QzPD3dVV/Z9NDwq6E4vec7teOnzpffom/nJng3d1akT5sSz3xfWj8X+dJ3xFxcuHxDHa969OQZxsxYie7t6qNZvUpYsuZnTJizGl82ro6PPigEEVgyvhznYtNGgGJGGzdrL4oZOwGyuyYCFDOasBm6E8WModOnOXiKGc3oDN2RYsbQ6dMcPMWMZnSG7kgxoz19Pz65irpXfo4wQMtUebEkW9jdKFpn0bJjRsRMkYK5UKlhLwzt3QpJEnlbxcyOfb+i59DZOLN3MdzkP+4iaU06jVA7UIb0bKk+3X3wN3w9aAYOb56FG7fuKjFz9pfF1mLBZet0xfC+rfFRiUIoUrktRvRtjXo1PlZ9Qx9lCi1mIjvKFPrzgIBAlKjeARMGdbRe0DN25kocO/mnkk0iZv53/IyqpSNNRE/NFt+oGGVnD1vMCVDMxJxZmB4UM3YCZHdNBChmNGEzdCeKGUOnT3PwFDOa0Rm6I8WModOnOXiKGc3oDN2RYkZ7+vb53sYnf22KMEC/9EUxNtOH2gcO1VOrmClX6j0sXPkT1m3Zp3a+jJ6+XNWPseyY+WX9VKRNnTzSGEW0yC6VutXLqs/v3H2ISo16YcN3IyDCJLyYqdG8H7p8WQ+F8mdHtaZ9sWXpGOTIksEuMfPPrXtKtGxbPs56Mc/WXUfUjhw51hVezNx78ASf1O+OPesmI32alA5h72qDUMzYmXGKGTsBsrsmAhQzmrAZuhPFjKHTpzl4ihnb0F27bsLefW64fduEpD5mFClkRrmPjXPtbPi3pJixLe/x7SmKmfiWUdveh2LGNk6RPRUMMwqfW6MK/4ZuR/LVw4eJ02kf2EFiRuq9lKvXHUUL5sLla7eUmJHrsUvX6owB3ZqrI0Gh20u/V+oq67qtv0WZDwqhd4dG6mPLbUkic6T4cFRipnK54ihSqU2YG6Gi2zHz3eS++LDYu2qe0DtmXrzwV3HOGt3deunOzEUbsW3vUSVrKGYcsrzCDEIxYydTihk7AbK7JgIUM5qwGboTxYyh06c5eIqZ6NG9CgCmTPfAy5dhn21YLxgFCxrs/tk3r0AxE33e4+MTFDPxMavRvxPFTPSM3vbE/SA/zLp3Fr+9vK9uZWqeKg8+SvJ6t4i9LfytTJ6eHtYh31b8V44yyY4ZaSs37lE1YORmYct12bMWb1RHjEb2a4NKZd+HFP09/vtF661MIkA2bD+AqcO6IF2alBg5dSnu3HuEdfOH4uyFq1GKmRoVS6LboOmqeHC/zk2UBJIdLpb6NOGPMrXuMQ4liuZD26Y18fKlP27euR+mxozUwkmSOCHkfR4/9VVXhVcpVwK9OjSkmLF3cUXSn2LGTqgUM3YCZHdNBChmNGEzdCeKGUOnT3PwFDPRo7t6zYTFS90jPFjkPTPq1X59S4fRGsWM0TLmmHgpZhzD0WijUMzoN2Pzl29RhXct7dhPc5Aksbf6W1vFzKuAQFRq2BMidSxiRq7dXr5+p5IzsqtGmtye1KROBXWESX42YMxC7DpwQn2WNXM6dcNTzmyZcEbETIdhYWrMyFGmrq3roXqFkuqoVPs+k9QYMqYUAE6TKpkq/is3Hzdo/7r4r9SY2XPwJIZOWoxHT3zRsUVtVPioaJjPpW6M1LaR25yklS9dBGMHtEfSJImwZO3POHz8LOZP6K0+u//wCcp/3l29o0gotpgT0J2YOXjsDPLnzhJlleqYv2Ls9qCYiV2+HD1yAhQzrrcyKGZcL+fyxhQz0eedYiZ6RnzCGAQoZoyRJ0dHSTHjaKLGGu/h42dqh4vc0BS+GLBcV+3vHxBj0SHi596Dx6rWi1x7/bYmc8tumFQpfKzFhMM/L/VjvLw81a1PbLFHQHdipuvAadh76BTqVPsITepWRMG82WPv7R0wMsWMAyByiBgToJiJMTLDd6CYMXwKNb0AxUz02J49ByZO/m97uaVHqRIhqF7dmHVmuGMm+rzHxycoZuJjVqN/J4qZ6BnxCRJwBQK6EzNi7Db9fAhL1+/A3fuPUfjdnPji8yqo/PH7agtYbLag4GC4mdwivbrM9/lLyOcpkiUNEwLFTGxmhGNHRYBixvXWBsWM6+Vc3phiJvq8y46ZRd+/PsokF4+aTYDJDBQpwqNM0dPjE3oiQDGjp2zEXSwUM3HHmjORgJ4J6E7MWGCJBDn061ms+nE35HhTyuRJ0axeZXz+6cdIkyryq8XsAe3nH4BGXw1F++afoWblUtah5Hxev5Hz1C4eaSKK5IyfbDeTRjFjD3X21UqAYkYrOeP2o5gxbu7siZxiJnp6PMoUPSM+YQwCFDPGyJOjo6SYcTRRjkcCxiSgWzFjwSlFikZPX6EKGVnaZ1VKo2mdikqSOKJNnLsGi1dvV0ONG/hVGDFjuX9+2YyB8E6YAB37T0H2LBkwom9rihlHwOcYmghQzGjCZuhOFDOGTp/m4OO7mLl124Tr101IlMiMnDnMSBp2U6pN3Hgrk02Y4vyh/Qfc8PsZE3yfmZAxoxmflAtB9mzGvCUrruBRzMQVaX3NQzGjr3wwGhJwFgFdihm5MmzX/hNY/sMunL14VVWUbtGgCqp98gF+PXUe363apnhZKlvbC+/J0+fwDwhA004j0LN9wzBipn67IahavgTaNaupptmx71f0HDrbWgmbO2bspc/+WghQzGihZuw+FDPGzp/W6OOzmNmxyw2HjvxXlNDDE2jdMhiZM8b8y/u16ybs3eeG27dNSOpjRpFCZpT72Jj1ZWStGL3GzNlzJqz9IexNWV4JgN49gyD/ny1yAhQzrrkyKGZcM+98axIIT0B3Ymb1pr2YNHetuuJLdsQ0/7yyut/dK4GnNXY55nTi9EV8WOxdh2a0apM+6qqx0EeZSlTvoO6YFzkjzXLN2OEts1Rl6ruPX19x5ozm4W5CKh8vBAWb8fDZK2eEwDmdRCB1Mi888g1ASEjMv8A4KWROaycBETOpkiXE/SfO+2eOna/A7hoIJPB0QyIvDzx5HhChtxlmmFRVFeO1gABgxFh3hIRzJ4UKmtG4vnGFiqMykTihO2Ay4YVfkKOGjNNxNm1xw6+/RVybbVuGIHt2/nsrqmQkT+wJv4BgvArk70CcLlgnT5YmeUI8fOoPo/0nnfwhIRsJkIDjCOhOzMhulMSJEqJx7QookDeb497UhpHCixmz2YyCn3yJ2WN6oFyp99QIV67dQq1WA7F7zSRkSJcKQcHO/Zenx5sr0Jwdhw14+YgDCbi7mRBstH+DO/D9XXUodzc3BIf/JuuqMFzkveWrrcnNFKmEDQgKQQKPt1+D6WhMQcHAoaNmXLxkhocHUCC/CR8UM4lDiFG7ccuM0ZMi/vszc0YTvu0dt+8Uo8Dj6GG3N0BDzMaUGHMXheD3sxFj797BDfnyxHCxxBFzPUwjV+WaQ0S5srkSAaP+u93yHcSVcsV3JYHYJKA7MSM3MV24fENJGUuBXQEgBYBTp/RB/txZY41HVDtmRvVviyrliqt5w++Y4VGmWEsHB34LAR5lcr3lwaNMrpdzeWO9HWXastUNx0+GFSeVKoTg449i9ocUsmNm5NiINy1mzmxG+9bBrpnsUG9t9KNMy1e64a/LYdeJOKZWLYKRkztmolzfPMrkmr/6PMrkmnnnW5NAeAK6EzNyjOnHnw9i2/JxSJokkTXecbNWYeuuw/jlh6nwcA97btlRaY1MzEiNGalt07bpp2oa1phxFG2OYw8Bihl76BmzL8WMMfNmb9R6EzOjx3nAz/+/a6nlj/ZTpzbj684xkykyhowVeqeN7BLIljUEbVrGTPLYy1iP/Y0uZpaucMflyybr1eWWHSD1agejaBHuB4lqzVHM6PG3MfZjopiJfcacgQSMQEB3YqbRV8NQqngBdG9XPwy/qzfuoGaLb5SwyZo5nUPZSs0a2Toq43doUQs1K5WCp+frP8lbsGIr1m/dD7mVKZG3Fzr0m8xbmRxKn4NpIUAxo4WasftQzBg7f1qj15OY8fUFJkwJu8tFvmLL2hw2KGa1UP65acKCRe6QXRTqYIsJ6q+1SB6tbPXcz+hi5vBRN/y8M+yOGZFwfXoEIUkSPZN3bmwUM87l76zZKWacRZ7zkoC+COhOzNRqOUDtUOnUqk4YUn/fuIPPWnyDHxYOR75cWRxKUerayE6Y0G3r0jFKwLx46Y/ew+fgwNHT6uOCebNjxqivkTZ1cvX3PMrk0FRwMBsJUMzYCCoePUYxE4+SaeOrXPzLhAsX3RAQ4IYMGYJRoniI02+0GTQs7C4X5VRMZgwbFLMdM1KebfwkD/j5hYXxQYkQ1KzOHTNGFzNBQcDyVe74++rrejJSj6jSJyEoXYq5fduvP8WMjf9wjGePUczEs4TydUhAIwHdiZl+o+bh8PGz2LVmEhKGulNx7MyVWLZ+J37dNlcVB47r9tT3BQIDg8LUvaGYiesscD4LAYoZ11sLFDOulfMzZ01YtyHssd1cOc1o0SxmAsSR1F68BMZOiChmZI7hg2O2Y0b6yJXKm39yh/+bi8YyZjCjSaMQJPPhURejixnLupNdVvK/1GmAUJdrOnJZxquxKGbiVTptfhmKGZtR8UESiNcEdCdmLLceCfWq5T9AujQpsPd/J3Hzzn20blwDvTo01FVCuGNGV+lwmWAoZlwm1dYXpZhxrZyvXOOmdsuEb3IUJGlS57EYPDxiwV63//dHQwfGXMzIW8gtT/fvAd7eJiRPTiFjyWx8ETPOW6nGnJlixph5szdqihl7CbI/CcQPAroTM4L1/KXrmLZwPX774xJe+vkjZ9aMaFT7EzSqXSHWCv9qTSfFjFZy7GcPAYoZe+gZsy/FjDHzpjXqaTM98PBRxN5ftghG9mzOExhDR3og/I3t3t7AN320iRmtfCLrFxAIPLgPJa6cKa8c8U4UM46gaLwxKGaMlzNHREwx4wiKHIMEjE9Al2ImNNaQEDPc5BuJThvFjE4TE8/DopiJ5wmO5PUoZlwr5zNmu+P+g4j/7uvfKwiJEjuHhbpJabwH5CYmaVLMVQr2eicEBvRzrpjZ9rMbjv763w6jlCnM6NA+GAm9nMPK3lljW8xI/aJz593g52dG1izQRf0ie5nFh/4UM/EhizF/B4qZmDNjDxKIjwR0K2ZEyPj5v4rA3Bn1Zd6WeIqZ+Phrof93opjRf44cHSHFjKOJ6nu8OfPdceff/8SMciFmoH2bYLyT2Xk7ZsZP9sDz52HZZc5kVnE5qz16DEyZ4fH6dqdQrcC7ZjSq77y47OERm2JGj/WL7GEVn/pSzMSnbNr+LhQztrPikyQQnwnoTszce/AE85Ztxs79x/HoiW8E9oe3zEKypE7648JIVgLFTHz+9dDvu1HM6Dc3sRUZxUxskdXnuBs2ueP307Il5XV8ZhPg7gYM6BuEBAmcF/Ox426Q3SmyU0aamxvQqEEI8ud13m07e35xw74Dbm/u3QZM5te81E6evs7dyaM1U7EpZpaucMflKxF3Y33TN0gxY3MeAYoZ57F35swUM86kz7lJQD8EdCdmRk9fjhUbdqPzl3WRKX1qeHiEvZWiysfF4ekZsfigs5BSzDiLvGvPSzHjevmnmHGtnN/5F/huiQcCAv577zKlQlC1svMEiCUSOWIl1yC7u5mRMweQIoXzdvBITBs3u+HkKRNMcrYqVBNpNPRbipnwvzmTp7rjybOIYqZj+yBkSO9av2d6e1uKGb1lJG7ioZiJG86chQT0TkB3YqZsna5o8Fl5dGvzud7ZqfgoZgyRpngXJMVMvEtptC9EMRMtonj3gBwZunbNDUGBHkidNhByZIgtIoENm0z4/XTYP8SRp8TTDBtEMROe2LwF7rh1J6yYEVaDBwapXVlsziNAMeM89s6cmWLGmfQ5Nwnoh4DuxEyHfpPwTsa0GPj1F/qh9JZIKGYMkaZ4FyTFTLxLabQvRDETLaJ4+YCXpxsSe3vi0bOINdfi5QtreKkly93w99+RG4XhgylmwiOd/507bt4KW7/IZDajT89gw99mpWH56KoLxYyu0hFnwVDMxBlqTkQCuiagOzFz6PhZdB88E9tXjEPqlMl0DU+Co5jRfYriZYAUM/EyrW99KYoZ18u5vDHFTPR5/2mHCUePuUco/uvuDgwZSDETnuCi791x7XrY+kWiafr0CKKYiX65xeoTFDOxile3g1PM6DY1DIwE4pSA7sRM7+FzsH3vsSghsPjvf2g83E1ImzwhgoLNuPfEP04XDidzLgGKGefyd8bsFDPOoO78OSlmos/Bb6dM+HHL/1sY8+vjS5aWPLkZPbvxVqbwBKVQ8t59YXcYpUltRtdOxmQV/QoxzhMUM8bJlSMjpZhxJE2ORQLGJaA7MbPn4En8c/telESb1K0IrwSeuiHOHTO6SYVLBUIx41LpVi9LMeN6OZc3ppiJPu9Si2fiVA8Eh7y+mElujBJBI4WSpWCyEVts3soUGADs2eeGPy+Y4PfShKxZzahUIRjp0xmRVPyKmWImfuXT1rehmLGVFJ8jgfhNQHdixmi4KWaMlrH4ES/FTPzIY0zegmImJrTiz7MUM7bl8uivbti52w1Bb04u5chuRuOGwUjoZVt/vT0Vm2JGb+/KeP4jQDHjmquBYsY18863JoHwBHQpZo6dOo+N2w/i+s276PBFLZQr9R4mzl2DVMl98GXj6rrKIsWMrtLhMsG4opiRPw2/fNkNDx4CqVMBOXOGwCPiRSzxdg1QzMTb1L71xShmbM97QCDw4D5UnRT5n5EbxYyRs6c9dooZ7eyM3JNixsjZY+wk4DgCuhMz5y5eQ8OvhiJdmhTw/b/2zgO8qer949+bpLulLS1llQ0yREABFRRFUIYTByCIMlREpiAKPxAFGS4UAQeCoIKibEEUQZaAiqIIiiKyBcpsKXS3Se7/f24HTdOV5Ca5N/ne5/ERyD3nvOfz3jbNp+e8JzUDL458DPd0aovFqzZh6sxF+G39XAQHBapHwMWeKGZcBMjmThHwNzFjtQJz5plw5uwVXHFxwKAnzDCZnEKou0YUM7pLmSoBU8yoglF3nVDM6C5lqgRMMaMKRt11QjGju5QxYBJwCwHNiZkJry/ApZRUzHx5GJ56/k3cc0dbRcwc/e807n7sf1jz8VTUq13dLTCc6ZRixhlqbOMqAX8TM/sPGPD5EvvjcHs8YEHTprKrOHXRnmJGF2lSPUiKGdWR6qJDihldpEn1IClmVEeqiw4pZnSRJgZJAm4noDkx067bMIwc2B0P3HkLBj43vUDMJCWnQLy2fN4kNG5Qy+1gyjsAxUx5SfE+NQn4m5jZtsOAjZvtxczNba3odLs+i3s6+jxQzDhKzDfup5jxjTw6OguKGUeJ+cb9FDO+kUdHZ0Ex4ygx3k8CvklAc2LmidFvICa6Al4b/5SNmFn73U8YM/UD7Fz7HiLCQzWTDYoZzaTCrwLxNzGzc5cB36yzFzOdb7fgprZcMeNXc1rMRgAAIABJREFUD7+fTZZixs8Snjddihn/zDvFjH/mnWLGP/POWZNAUQKaEzPfbfsVz7z4Dnrf3xE/796P9m1boGJUBbzx/hfo1uVmTB37hKaySDGjqXT4TTAUM4DQMZ1vt0KsmvGHiytm/CHL9nOkmClf3o8dl7B5qwEJCRIiKshocY2MW2/R7/cGipny5d3X7qKY8bWMlm8+FDPl48S7SMDXCWhOzAjgS7/aijfe+wLpGZkF/O/qeCPGP/MoIiPCNJUTihlNpcNvgvE3MfPLbwZ89bUBkrAxEhQrI0tA105WtL1Rvx++HHlgKWYcoeU791LMlJ3LrGxgxiwT0tNt79VzDSqKmbLz7ot3UMz4YlbLnhPFTNmMeAcJ+AMBTYoZAT47Owcnz1xQ5Ex8lUqIigzXZD4oZjSZFp8Pyt/EzPkLEt553wi5yK6loYPMEKcz+cNFMeMPWbafI8VM2Xk/ekzCRwuNdje2aC7jgfssZXegwTsoZjSYFA+ERDHjAcgaHIJiRoNJYUgk4AUCmhMzE6d/jAZ1q+ORB+6wwXHg8Ak8PfYtrPjwZURHRngBVfFDUsxoJhV+FYi/iRmR3D/2SfjhJyMuJAKxMUCbGyxo0cw/6suI+VPM+NWXuDLZ1FTg2DEDzDkmxMblIL66/zzvjmS7JDHTpLGMh7tTzDjCkvd6lwDFjHf5e2t0ihlvkee4JKAtApoTM8PGz0SThrXx9GP32ZA6n5iM9g8+w1OZClExGSXERQXDbJFxLvnKti9tPWKMxh0E/FHMuIOjnvqkmNFTtlyP9fQZYP7HJmRnX+nrpjZWdL7DP7buOUIw4bSE9+caIYltjoWuRldZ0fthffLiihlHngDfuZdixndy6chMKGYcocV7ScB3CWhGzOw/eBw5OWa8/t4XqFOzKrrffWsBdbPFgnWbf8biVZvw67dzERIcqJmMcMWMZlLhV4FQzPhVurHrNwm7fjUiKQmIqySj3c0yGjfS5wdO/8qc87NdudqIPXttTYPBAIx73oxA7bwFOj9BFVvu/8eAxUtyT21TSlBJUOpRNWpkRe+e+vw6oZhR8QHRUVcUMzpKloqhUsyoCJNdkYCOCWhGzLTrNgxJySkloqwYFYHHe9+Ffj26aAo3xYym0uE3wVDM+E2qIU6bWfCJbf0MkxEYPtSCqEhubfHVJ+GdOUacO1dkCQiAJwdYUCOeeS+c9wuJEma9a19jpt1NVtzRkWLGV79GfHFeFDO+mNWy50QxUzYj3kEC/kBAM2Lm8LFTyDFbMHXmp6hfpzp63ntbAf+AABPq1KgKg1jLr7GLYkZjCfGTcChm/CTRADZsNGDHj7mrAQpfvXpYuWrGhx+DGbNNuHjRdoJCx4x51oxwbR1OqIksLFlhxF9/XfkZISQEePpJC6Ki9CmxuGJGE4+Vx4OgmPE4ck0MSDGjiTQwCBLwOgHNiJl8EukZWTAaDQgKDPA6nPIEQDFTHkq8R20CFDNqE9VufytXG7Bnr72YubOrFTe21udqAO3S1k5k4hSys+clZWtO4YsrZkrOkSgCnJAgoUIFGfXrywgJ1k4+HY2EYsZRYr5xP8WMb+TR0VlQzDhKjPeTgG8S0JyYEZgvJF3C/oP/KUdlF7063HwdAsQ6fo1cFDMaSYSfhUEx4z8JX7rCgH1/FREzMnDfPVa0vI5ixlefBFFj5vc9Um5B27xFHwYja8z4ar6Lzotixl8ybTtPihn/zDvFjH/mnbMmgaIENCdm/vj7MHoNnlxipn786l1ERmhnHTfFDL+ovEGAYsYb1Isf8/ARCX/+ZUBaqoz4eKB1KytCQ9SLb/P3Bmz53pC7cqLQrozuD1pwTVN9btNQj47v9sRTmXw3t+WZGcVMeSj53j0UM76X0/LMiGKmPJR4Dwn4PgHNiZnhE2Yh4UwiJox8DL0HT8aqBVNQuVI0Jrw+H7JVxuypIzSVFYoZTaXDb4KhmNFGqg8ekrBosRGy8CN5e05qVJcx8HGLagGK7RkLFhptxIw4nWfkCAsiK1DMqAZaYx3l5ADfbjDgr/0SsrMkVK0m4+6uFlStorFAGY5bCFDMuAWr5julmNF8itwSIMWMW7CyUxLQHQHNiZk7+4xBnwc7oce97dG84+NYPm8SGjeohd/3HUSfoVOxZfnbiIuN0gxoihnNpMKvAqGY0Ua6Fy8xYf+BAidTENTI4RZEq1R0tLhTmYSYeWZY6acyCVkkTqsRV2yMnLslhpduCIiCz6Lwc+ErpqKM4UMszKVusuh8oBQzzrPTc0uKGT1nz/nYKWacZ8eWJOBLBDQnZjr3eg59e3RB7/s7Qvx5cL9uuK/zTTh+8iyEtFk0exyuu+YqzeSAYkYzqfCrQChmtJHuV980IT3NPpaHHrCgmUrbjNZ/Z8APPzl2KtOJkxKWrTAg+VKujRHHavfsbkX1alxho40np+woFn5mxKHD9jZNTelXdhS8w1sEKGa8Rd6741LMeJe/t0anmPEWeY5LAtoioDkxM2Dka6hWJRZTxjyOSW99gh937cOYIb2wcftvWL3+B/z89fsID1OxgIOL+aCYcREgmztFgGLGKWyqN5ryqgnZ2fbd9u5pQaOG6kiQL5YZ8Pd+ezFz+20W3NKu+DE+/MiI/07YfqivXUvGgL7qbbFSHSY7tCEwb4ERQrAVvShm/ONBoZjxjzwXnSXFjH/mnWLGP/POWZNAUQKaEzPfbPoZx06cVlbKnLuQjAefmICk5BQl7tGDeqL/w101lUWKGU2lwyPBpKQAouBrerqEWrVkr6xCoJjxSKrLHOTlV0ww59jf9sD9FrS4xo1iRga6dLKgbRv7MaxWYNprJmQXiSs4CBg3xlzmnHiDNgi8P8+E06ftYxk/xoygIG3EyCjcR4Bixn1stdwzxYyWs+O+2Chm3MeWPZOAnghoTswUhWe2WPDv4ROoGFUBScmX0bBeTRiN9r899hZ0ihlvkffOuCcTJCz4xGjzYfyWdlbcfptnjy2mmPFO/ouOOmmaCWazfY2ZLp0taHuDOmKmpFOZHn3Eggb1ix9j8ismiOKxhS/xYV58qOelDwIfzDNCfL9Rqj7LUOrKiLpBorB0jXh1ni19kPDPKClm/DPvFDP+mXeKGf/MO2dNAkUJaF7M5Af88+/7IbY58bjsKyk0GSXERQXDbJFxLjmTT7cHCCxdacS+fbbbC4xG4IWxZoj/e+qimPEU6dLHee1NI9LSJJtTmcSH6AH9zKhTS50Yk5MlzHrXCHOhXUihoaL4rxliFUxxV3FiJjBQxgtjuZVJnay4v5eVq43Ys9f2e40o+jzueTMCA90/PkfwLgGKGe/y99boFDPeIu/dcSlmvMufo5OAVghQzJSRiU3bd0Mc4V302r1hHoICA8AVM1p5lD0Tx5szjbiUV1C18IjDBltQKdZzv8WmmPFMvssaZc48I04lSFdOyZGVxQ0Y/JRZ1WONz54Ddu82IDXViMgoC1q3kks89SkjE3hhVjZ+bfkLTlU7pUyhekJ13Ljnerz2LD/Rl5VTrbx++gww/2PbGkY3tbGi8x2eXZ2nFR7+FgfFjL9lPHe+FDP+mXeKGf/MO2dNAkUJUMyU8UyIosP/mzZPOba78FWzehwkSaKY8bOvqekzTbh8yXbS4oP4hLGe/S02xYw2Hry58404eUrsMckVMvnrG4YPtShHVKt5GSQgLjoEZ5Iyyuy288/bsK/yEZv7mp2rh3XXtyuzLW/QDoHUVODYMQPMOSbExuUgvrq6z5R2ZspIihKgmPHPZ4Jixj/zTjHjn3nnrEmAYsbBZ0CImUlvfoztX84utiVXzDgIVOe3T59phDUpCY2yfkWo9TKOBDbDicCGGM4VMzrPrHPhKytmTueKGWFlhJgR6xn69i65/otzIwGOiJmGxxYjFbbHRVVEMP6s/bCzw7OdlwgEBRgQFhKApMtZXoqAw3qDAMWMN6h7f0yKGe/nwBsRUMx4gzrHJAHtEdDEipns7BwkXrxcKp3d+w7i+clzPF5jRoiZERNm477ONyEoKBCtmjdE5/atYcorKFKe3167K+2ixkxsZG6NmQuXWGPGXZwL97tpwUHcsesZBMpXPvRujuiDG17t69EaM5WignHhchZkK3+D7om8lzTGosVGHDhof6TxuOfMEHVg1LyEmImNCsG5i2WvmKl1bBGyZdt6MqGSCYdr91EzJPblAQKBAQaEBgcgOaUYMVN4mZYHYuEQniMQHmxSKj6nZhRz7JvnwuBIHiYQFR6IjCwzsnK4ZdHD6L06nFgNez45I7denY4uIZR4kQAJqEdAE2Jm958H8eiwqeWalaeL//75z1Gs3/oLIiPCkHA2EUvXbEHv+zti/IhHlXgtXv5gbBSf1jQQR7mS5wM3XXjlJQTt3WwzE6vBhMiF3wEmk8dmKNIu3sC1/h6efAnYusOKEwkyYqMltLleQu2a9iLDY+BUHmjWXAv+2m+fhfGjjahZXf15GiQJ1nL85Ba2Zx6yioiZMIMJl5o/oTIBduduAuIpEicyFfdWk51jhRA3vHyPgMi5uMrx5e57k/fjGenlvd2PU+SWqYv3dlmWNf8zXdHJ538GcQsUdkoCfkhAE2ImKTkFO3/7u1z477ilJQICPPcBuGhQK7/ZhgmvL8DeTfOVVTPcylSutPnMTSHj+0BKOms3n8yX5sNapabH5unuGjPiCOhz54CwcAmRFZzTP6IPcZpQcqFiyeLDxpBBZsRV8hgqtw70zhwjzp2zFzBPPmFGjWrqDl3erUyXrFlocnzxlb1Vyqc7IFCScLR2X3WDYm9uJ8CtTG5HrMkBuJVJk2lxe1DcyuR2xJocgFuZNJkWBkUCHiegCTHj8Vm7MOD2n//EoDFv4rf1cxEcFEgx4wJLPTYNHtcbhovni4QuI33GWiA42GNTcqeY2b1HwjfrjMjOW0Ffs4aM3j0tDm/NOXpMwkcL7c8Qv7mtFZ1u941l2vnHZdskXgb6q3hcdn7f5RUz4v5up7/BrqxzNmG1Ca6C5VW6eOwZ5UDqEKCYUYej3nqhmNFbxtSJl2JGHY5664ViRm8ZY7wk4B4CFDNlcF28ahMa1quBJlfVxqWUVDz38hwEmIxYMGOM0pIrZtzzYGq11+Bxj8BwUayYKbxKQkbmSwt8YsVMdhbw+gzbI3pFLpyRKb/ulrBmrb2YqVPHiv6P+oaYeWW6EenptsV/xfqiB7pZcG0z51YalfTsOyJmfss6j8Hnt+KkOU3pLt4UhrlxHdA8MEarX1qMqwQCFDP++WhQzPhn3ilm/DPvFDP+mXfOmgSKEqCYKeOZeOuDpZj/+TcFdzVrUg9vTBiE+Kq5ezEoZvzriypw/lSYft0CyELM5FXeDDAhfcZXHq0x464VM6fPAO/Ptd8qWKumjMf72RaTLSvze/80YPnKK/Uv8onVryejbx/H+iprLG+9Pn2GCZdTiowuA08PtKBqVe+JGRGRFTKO5OQWVa8bUAEGG5noLWIc11ECFDOOEvON+ylmfCOPjs6CYsZRYr5xP8WMb+SRsyABVwlQzJSDYGZWNs4nJiMiLBRRkeE2LShmygFQ5VuSrVlYmHIAuzPPIdYUgvtC66BdiMoFPUqI2XDsAIJmjIKUfeVUppyuvZFzb3+VZ1l6d+4SMxeSJMx6x36VS9UqQjaYHZrjb79JWC1WzBRaXCQKWdapZcWAfr6xYub9uUYknCmyYkYGBj5uQY1474oZh5LFmzVLgGJGs6lxa2AUM27Fq9nOKWY0mxq3BkYx41a87JwEdEOAYsbFVFHMuAjQieb3nP4au7Ns67x8Wvl23BYS70RvjjeRLiXC+PdvQFoKrA2ugbXWVY53ktdCiIrEJAlWi4zYWMBQzgNW3CVmzl+QMPtdW5kiQo2PlzFwgGOrXPb+YcCKL+0nVK+u76yYWbnaiN/35Jqn/BVB4s+jRlgQHUUx4/QXBhsWEKCY8c+HgWLGP/NOMeOfeaeY8c+8c9YkUJQAxYyLzwTFjIsAHWx+KOcSbj21yq5V9/D6eDv2Zgd78+7tZ84CXyw3Iikx94N9RLiM7g9aUbtW2R/o3SlmxElKRUVD40ZW9O7p2CoXISxWrbFffVOvnhV9H3GsL+9mquTRDx6SsGix7Rzjq8vKihm1L0dqzKg9NvvzHgGKGe+x9+bIFDPepO+9sSlmvMfemyNTzHiTPscmAe0QoJhxMRcUMy4CdLD5t+n/4fFzm+1aNQ6Ixsbq9znYm3dvX/iZEYcO2x61XDku9zjpsq6iYsZsAXb/bsDRo4DRKKFBAyuaNZUhjqd25LJYgTffNiI1VVIq6OSX0enSyYqbbnRMpvzzr4TFX9iLmUaNZPTuob64cGSeat57+IiEP/8yIC1VRnw80LqVFaEhao6Q2xfFjPpM9dAjxYwesqR+jBQz6jPVQ48UM3rIkvoxUsyoz5Q9koAeCVDMuJg1ihkXATrY/NfMc7jvzJVizPnNrw6siA3V7nWwN+/e/vI0E8w5ue5D7IPJdygTXzCXuaWpqJj5aq0Bu3bbbhu6vYMVt9zsmEwRYuatt41ISbU1OkLMtHVQzPy5T8LSFcbceeV1J7ZuXd1IxsM9fUfMeOopopjxFGltjUMxo618eCoaihlPkdbWOBQz2sqHp6KhmPEUaY5DAtomQDHjYn4oZlwE6GDz3BUzm/Ja5X/aB1oHx+HLqnc62Jt3b39xsglCVNgcvC0Dk19ybMWM1QpMfc2EnBzb+cRVAoY+XXZfhVspNWbes1/lUreOjH6POiZT/tovYcky45WVN8LPSECdOjL6P2qBGOvIUQlGg4x6dYHo6LK3cHk3Y94dnWLGu/y9NTrFjLfIe3dcihnv8vfW6BQz3iLv3XEpZrzLn6OTgFYIUMy4mAmKGRcBOtg8yZKJlieXIlsuLAkkPB91LUZENXewN+/ePmGSyW6rkVAT4543IyS49NgKr5i5mCxhxix7mWI0Ai+Nd0zM/HdSwocL7PuKipIxarhjYub7bUZs3CrZHdIcEyPjxutlfPOtQRFT4hJFj3t2t6JxQ8dW+Hg3g54dnWLGs7y1MhrFjFYy4dk4KGY8y1sro1HMaCUTno2DYsazvDkaCWiVAMWMi5mhmHERoBPNP0s5gElJu5Am50qH1kFx+KRyR0QagkrtLSUFEP/FVgICA5wYWOUmL04y2S6XESVdZODZkWZEVSi/mMnOAqa8alIayHlHA4n/BQUD48c4JmaO/SdhwUf2pzJFRsp4doRjYuabdQb89IvhinySZciShPAwGVZZQnpa7hzFKhox7+pVZQwaWPIYf+yT8MNPRlxIBGJjgDY3WNCimf+ssqGYUfkLUCfdUczoJFEqh0kxozJQnXRHMaOTRKkcJsWMykDZHQnolADFjIuJo5hxEaCTzbNkC/7NvogYUwiqGcNK7SUzC5gz14iki1c2Dd14vRV3dvHu6oxixQyAyS+WLVMKr5gRW5lemmJSitXkF/sVuiIsVMbY0Y7JlPQM4NXpuX0VLv7b8jorut3tGK+Nmw3YtsP+uOzwcBmpKYWK6uRlT8Q+aULxcxfbnt5531iwwiY/4UMHmREX5+RDpLNmFDM6S5hK4VLMqARSZ91QzOgsYSqFSzGjEkiddUMxo7OEMVwScBMBihkXwVLMuAjQA81XrDJi759Sbj0XsTojb8yRw8yoGO2BAEoYQmxlKlz0V9wmW4FRz5gRHVV6XEWL/06cYoIQNIWvChEyRo90TMyI9l+vM+DnXVeESlAgMPAJCyrFOrY65btNuWKmaPFfwfzixSsFgfNjFr2XJKV++c2AtV/bSx5nihJ7L+OujUwx4xo/vbammNFr5lyLm2LGNX56bU0xo9fMuRY3xYxr/NiaBHyFAMWMi5mkmHERoAeav/qmqWDbjCI/hAGQgLs6W3HjDY6tAlEzXKXGTN6J1PmCpjQ5UXjswmJGbM96Y0buVqbCV3Bwbr0aZ64TJyScOCkhNEzGVfVlhIY63svRY8BHC012xX+bNJLx9z/Fn+P9cgmrhdZtMOCnnfZiptV1Vtzr4Eoex2eijRYUM9rIg6ejoJjxNHFtjEcxo408eDoKihlPE9fGeBQz2sgDoyABbxOgmHExAxQzLgL0QPPiVpMIASJqlNzZ2bFVIDnZwKatBkUsZKRLqFVLxu0dLKhS2fGJTHg5V6bYnMpkBcaNdaz4r+jjpbwTntQSM47PpvgWc+cbcfLUlRkGBQHDB5vx+lv2hY9L28q0YZMR23dIdsWSW7e04p67vCfXnOW0NzsRP2ecQbQxCLcGV0OcqWzzRTHjLG19t6OY0Xf+nI2eYsZZcvpuRzGj7/w5Gz3FjLPk2I4EfIsAxYyL+aSYcRGgB5oXJy3EsM2ulvHQg45t9dm6zYDNWw0F+6FEsd24WBnDBjvWjxj/k0+NOHTIttZK5cqAqJtS1lV0xczrYsVMkRoz4mQnZ1fMlDV+eV8Xq5PEkdhnzkqIrCCjQQMZAf/voyZOzY03/xJ/jAiT8fyzxXP8fY+EVWvyaswULDMC7rnbiutb6kvMvHZxN2Zd+qNg7sGSESuqdkWLwNhSsVLMlPep8637KGZ8K5/lnQ3FTHlJ+dZ9FDO+lc/yzoZiprykeB8J+DYBihkX80sx4yJADzSfPM2EnGJcxy3trLj9Nsc+1H8wz4hTp6+sAFF2RckynhtlQUSEY5M5dhz49HMjsrIlSDJgNAEP3m9F0yalxyRlZiAm/SwuBkXDEhapDDrtdRMyM2xPZapdW8aAvo4LI8dm4dzdixYb8e/B3KO080+Sat3KintLWP2Slga8PduErOwr44naN88MMyOs9NrPzgXoplbpVjOanFiMHFFMqNB1X1gdvFfpVooZN3HXc7cUM3rOnvOxU8w4z07PLSlm9Jw952OnmHGeHVuSgC8RoJhxMZsUMy4C9EDzme8YkZhkW9NElmU8dL+M5s0cEzNTXjEhO8c2aOWI62fMiMp1JOW+Pl9ixN8HcuWEuITkqREvY+CAkmVKwNeLELDuM8CSe4+lWRtkPfUS3n4vEImJV7b6iL4a1pfRp7c2xUzyJQnrNxpw9KgEo0HGVVcBd3S0IDSkZHyJFyT88ruEC/9/QlNsrIzrr5UR42BB4nInx003/pWdiE4JX9n1Hm8Kw8/x3UsdlStm3JQUjXdLMaPxBLkpPIoZN4HVeLcUMxpPkJvCo5hxE1h2SwI6I0Ax42LCfEXMHD0mISFBQoUKMurXlyG2wXj7EgLk0GEDkpKAuEoyGtSX7WqMlCdG5XSgHwzKqhRldUaeBRkx1ILYGMdqzJS0LWrg4xbEV3esr5en5q3kEbuZ8o6nFnVWJr5ghsG+zi2kcwkIeamv3ZTTe4/GS1vvUk50yl99IqYZEwuMGFL2tqjyMOQ96hA4bU5Dq5PL7DqLM4bg9xo9KWbUwexTvVDM+FQ6yz0Ziplyo/KpGylmfCqd5Z4MxUy5UfFGEvBpAhQzLqbXF8TMkhVG/PXXlRUlISHA009aEBXlmGhwEaVN88ws4P0PjLiYfCWu+HgZT/SzFCstShs7OVnCu6IvKR3pYemISo5C0/pG9O7p+GqSF/MK9hYd76knzahe1TECoq+8A6IKGorVNy+NN8Nkf8gSTDu/Q+Anr9sNYr6+I8aceMGmiLC4KSBQxoSxjs/RsVnwbkcI/JZ1HvcmrM09tz3/kmXEmYSYeZhixhGYfnIvxYyfJLrINClm/DPvFDP+mXeKGf/MO2dNAkUJUMy4+EzoXcxcSJQw612jHYV2N1lxR0fHtvm4iNKm+a7fDPjqa/tlI4/2tigrZxy5/jmRg0dPbkFC1QSlmdFsxG0HWuOjro0cljziJKUKlkQ0zPoVodbLOBLYDCcCGqJXTyuaNHKMl3JcdpFTo4WYmTSh+BUzAd98ioCvPrEXM/WaYWzaTNvjnf6/7kxgIPDCWK6YceRZcfe9ZtmKFieW4KI1K/fcdvEAyDL6VWiMqTE3Usy4OwE67J9iRodJUyFkihkVIOqwC4oZHSZNhZApZlSAyC5IwAcIUMy4mES9i5n9/xjw+VJ7AVKvroy+fRxfbSH6+367hLPnJcRE5x5J3fI6x0SKSMm69Qb89LN9XF06WdHk+gwsTDmA3ZnnEPv/Kw3uC62DdiHVSszkkJ/+wpdVd9m8brAasC6kO5pWLaWoSTE9zh1/CIMvjkCgfKUK7cawPogZ2A8Nr3Jsni9OMtnJFPFZfcxoM8KLKWhr2rAUgSvn2q62gAxLk1YYkzw993O+qFWT93m/WlUZg550PIcufkmweRkEvko7hjGJP+KSNfcZahYYg/mVO6CaseQqxhlWM77PSsAFUwaq5YShfWh1GOzWSBG9LxKgmPHFrJY9J4qZshn54h0UM76Y1bLnRDFTNiPeQQL+QIBixsUs613MHDxkwKLF9gJE1EsRdVMcucS2o7dnG2G12rqDJ/tbUKOGY9Lip50GrNuQG1d+SyEd+vSy4Nnwtdiddd4mtE8r347bQuKLDbf17nVIqHjW7rUXL3fCU81KFjrFdfbPM9NwXdYWm5fMMOHnx9fi2lb2K49K4ydW3xRZMKNM9uWXil/lotSYebEv0gKMOBAbiZqXUhGbno3svqOxKrErdu22zePtHay45WbHVvE4km/e6zyBbNmKf7MvIsoYhHhTeKkdpViz0SlhDf4zpxbc1zKoEtZUvcv5ANhSNwQoZnSTKlUDpZhRFaduOqOY0U2qVA2UYkZVnOyMBHRLgGLGxdTpXcyIFS5vbT2H3S1+Q2LMeYSmh6P+kXp4MLU5+j7q2If6jVskbNtuLycaN5LRq0fJkueMJR1b008hTTbjxuA4XB0Ygx0/GrDhO4OyBEQRM3nFcW/tnYR+ASvtsvZQeD3MjG1XbDav2bcSSeGX7V57PudmjGhQ36EnIGfIw4i0Jtq12dp1Pq6/t6ZDfU2cbIK1qK+SgXFjzQgOKr6rmb98ghmxFuTkVQe7NgT4AAAgAElEQVTucjYNc1s/BVk2Yffv4pQjwGiU0KCBFc2aOlcs2aFJ8Ga3E1iUcgBjE3+yG2d5lS5oE1zF7eNzAO8SoJjxLn9vjU4x4y3y3h2XYsa7/L01OsWMt8hzXBLQFgGKGRfzoXcxc/yCGbclLkNWUJYNiafPtscLN9R2iM7Hi4w4cqTQGpC8P0ZHyRg5vHgxsyPzNPqe3YhM+crrY6KvQ9Taa3Ho8JW+xPYccQXecQRzqm22i6uuqQK2xz9QbLwdft+EA9En7F6bF3An7qwe59AczYN7oIJ8sUgbGR9dvxI9+1dwqK+5Hxpx4lTuEdf584uKlvFsCayO5aTgplMr7MaYEXsTeoQ3cGhs3qwfAqMu7MCS1EN2Ab8S0waPRTTUz0QYqVMEKGacwqb7RhQzuk+hUxOgmHEKm+4bUczoPoWcAAmoQoBixkWMehczQoz0PLPejsItAfH4vPrtDtF57wMTzpyBXd0UcfT2/5434/QZ4NhxA4ICxZHcQIUIGX3OfoctGadsxgk1mDB8XV+cvmDByeoncTniMqIvRiP+dDwC25zAnPob7OK6OrAiNlS7t9h4x2w8hk/rb8ldepNXbTcoMwgbIrqjfvVijj8qZdaWp3siAmLFTOFNSDJW3jAXXfrVdYjX/gMGLFlmULZ+iUuEds+dFrRqWfy2r9WpRzH4wvd2Ywyo0BiTK97g0Ni8WT8Enj6/FWvSjtkFPDXmBvSLaKyfiTBSpwhQzDiFTfeNKGZ0n0KnJkAx4xQ23TeimNF9CjkBElCFAMWMixj1LmYWp/yL5xJ/tKPQICASm6rej717JRw6klu7pH5dK5o3l2G0L0mjvP7mTCMuXbKrmgKTScat7WRs2nKloSkA6PuIBT0MS3HSnGYvG7bdj2XXbkRKRErBa3Hn4vBYUhtMb/Rl3r/ljSUDXcNq4sO4DsVmc/Z7RmyougeH6x5GWmgqYhMr4bo9LTH4xkq4toVjtW/2jJqFthlrAFkps6sImjRDBay9awXucaLkx8WLEg4fASxWCXXryKgUW3I8X6QexLMXfrCbY+fQGlgQ19HFJ5nNtUpg1PntWJImVszYysBXYtpyxYxWk6ZiXBQzKsLUUVcUMzpKloqhUsyoCFNHXVHM6ChZDJUE3EiAYsZFuHoTM1JKMqSkc5Ar14AcHIIlKYcwKnG73TKXJoHReO7v+5VaL4Wvm9ta0el2KxIvAjt+MCA1VdQzkXF9SyumvW5CZqY9ULESxGQCcnJsX2vc0IrV7b/F9oyEfMeh3BAsGXHznhuwsbm9MOr7zx1Y22QbEq2FB5IwPaYtekVcVWw258wz4ZvY33Go7mGkh6YiJk/MPNexEq5q4JiYefPFJPRLnoAaOf8qY2VI4VgWOQoVu7ZDh1tcfJjKaL485TBGJG6zy9WD4XUxK9bNg7t3auy9FAILLu/HhMSdVypqKz5QVor/tgxybCseQeuPAMWM/nKmRsQUM2pQ1F8fFDP6y5kaEVPMqEGRfZCA/glQzLiYQ92IGasFQR9MgvGPvCKiRiNyuj6ChC4PoeWJpbAoqz9EhV1J+cX8hIqtcHleC6QWWcwSFSnjvntlfLLIVtjExgIpqUB2ugUNs35FFctRnDdVw/6gNrBKAcVSDguTsa3XauzJvmDzerBkwjXHrsKuWn/btet28gY8/c8n+N/VsfirUjQqZGejx76j+F+TByE1LX47z/+2HMfCOrYnKQVnBmNdeHdcFe/YSUovvmxS6sFUtJxBqDUFp021YZECMHSIBZVLWe3i4mOmNN+ScVLZ+nVl5UTuip1RUS3wbFQLNYZgHxokwFOZNJgUD4ZEMeNB2BoaimJGQ8nwYCgUMx6EraGhKGY0lAyGQgJeJEAx4yJ8vYgZ00/rEbhwut1sL49bgJ4/pWPXdb/AYsotwFvtdDVMyu6And8H290vVr/Exsg4f0FClPkcwqzJOGuqDbMhEBGhFvQ7Pgy1cvbnSh4JSDRWw8zYeUgzhNkdDR0aImNBz0+QZrU/Hrp9ckNsjTpgN/6Y81fjdMJqLGxer+C1yMxsfLcnFdUffrbYbPY5tA1bTEfsXlsZexduCK/k0BMwd35ewd68VrknRskYN8YCUUvHnVeWbMEtp1babP0yQsLG6vfhqoAodw7Nvr1MIMNqxvdZCbhgykC1nDC0D60Og/1h616OksO7gwDFjDuoar9Pihnt58gdEVLMuIOq9vukmNF+jhghCXiCAMWMi5T1ImYCP5+JnB+/wfp68TgRGYam55Jx6/HT2Hf98/jkv64wG824FJWMkNRQhGWF5tbIFacFFTkxW9SXCbSkYEDiONTJ2afQy5JCsCZiMC4ZY/FE0ti8BR259TBkyFgTPgTbwrvn193N+3cgIkzG7Afno7hDue8Nro01mUft62qkxOJ/EfkrbK7UmBnwz0lM7vpCsdm89dQqHMq5ZPfax5U74o6QGg49AX/uk7BspTHvDO/cBUYN6sl47JGSjwN3aIAybhZHi39y+R8cwiXEySHKaUzNA2PUHIJ9aZSAQQLiokNwJilDoxEyLHcQoJhxB1Xt90kxo/0cuSNCihl3UNV+nxQz2s8RIyQBTxCgmHGRsl7ETPb743DTzfFIiAgtmPFtx05j4KZG2GDqnvu7d7GLKW83k1UGxCafSjn/oX7OHqXNwcDrcMEUj04pC9ApbZENOQuMOGZsjHqWXFlT+LpoiMOsel/gcqowPbneRqw0EYV3Rzf/CFnFqJkhkU3xbvKfdnU1nsyuiHmBRY+rBuLTsvDz1U8Vm83mJ77ABUvR4jcyplZsg34VGjn8BBz4V8Jf+w3IyJBRqybQupUVQYEOd+NSg8rRwTh/KQtWkShefkGAYsYv0mw3SYoZ/8w7xYx/5p1ixj/zTjHjn3nnrEmgKAGKGRefCb2ImY/Xz8D4htF2s31heQQS0npAyjtGOv8GUUelZeYG9Ep+FZKiUQAhX76IHo/2lz9Ddcthu77S5AoIg/3KlGwE4a9R67BqjQHp6bnN4ioBjzxsQcvLCyG26OQdcFTQ5+LKt6P32Y02YwRJBjwr18Q05B8dnCclZCDYKuNwvQHFZrPJ8cW4JGfnjZFbl0Vco6NaYKROa7NQzLj4havD5hQzOkyaCiFTzKgAUYddUMzoMGkqhEwxowJEHXZBMaPDpDFkEnADAYoZF6HqRcz874/PsLCCOBZJbBzKL9wr4+4d9VD5iP0x00LMjDnfF3GW/2wIJQTUQ7AlDRWtZ+zIXZKjECmJ1SyFjvWVZWTJIbB88BUsVuD8eSAwUELF6FypUvvYQuQUs2Jme7X7sTPrLD5K+QdHzZfRyBSFoVHNsDP9FOal2teeMcgyTtTpX2w2bzm1CodV2srk4uOiWnOKGdVQ6qYjihndpErVQClmVMWpm84oZnSTKlUDpZhRFaduOqOY0U2qGCgJuJUAxYyLePUiZp468x3WZp4qMlsZHTfdgdqnattRCLSkY8rZu2GQrAX1VIRvyZRCkRBQH3Wz/7RtIwPnA2uhUs5xu77SDZHAu8uLJV2SmFldtStaBVW2azP0/DasSrMv5CtuPFW7X7FjDDn/Pb4UbZTFMvnSSBw3fDdaBjlW/NfFx0W15hQzqqHUTUcUM7pJlaqBUsyoilM3nVHM6CZVqgZKMaMqTt10RjGjm1QxUBJwKwGKGRfx6kXMNDvxBRLt6qwAdY/URfsdHezOdxEOY9rpOxEE20KjGYZwbIodiLvPvpkrOcTSmv/fFpRqiIIUGYGw5JN2RK2BYcic+WWxpO85/TV2Z523eU0cl324Vp9i7x+T+AM+TTlo95o4oeZE7b7FtlmTdhRPn/8+N9a8mGNMIdhZ/SGEGkwuPgHeaU4x4x3u3hyVYsab9L03NsWM99h7c2SKGW/S997YFDPeY+/NkSlmvEmfY5OAdghQzLiYC72ImRrHPoE1r1ZM4SmHZ4Six7LeuUV5C+1AEjVl3zzbAVKeeMlvI0sSVty9HlFbFqJFxmaEW5PxX2ATrAvvjyGGV2E6f8KOqBwciowZq4slfdycgodOr0OCJbf4jBAlM2Juxt1h9qt4xOvzLv2FiRd32fUVIplwqASZI26embwXK1KP4IwlDc2CYvFc1LW4Idh+RY6Lj4PHmlPMeAy1ZgaimNFMKjwaCMWMR3FrZjCKGc2kwqOBUMx4FLdmBqOY0UwqGAgJeJUAxYyL+HUjZo5/jOIO8KmYFYZuS3opFJTTkvIEjZA0rye0h1TMWpoTUzfhgw+NyCx00FHL62T0ODkBxj077I7LRrU6yJgwr1TSx3NSkCbn4KqAKJik/Bo49k3E6pp7Tq/Ne+HKcdmtgiphdbW7XMymfppTzOgnV2pFSjGjFkl99UMxo698qRUtxYxaJPXVD8WMvvKlVrQUM2qRZD8koG8CFDPlzF9KajrMFguiIyNsWuhFzDT+73NctmTZ1OUVE7nFWAP1P+pst2KmebUEPPrrI3b3y7KMjDkbkZ4B/HtQQnqahPh4GTVryDD+uRNB776Qr3gKzsXO6f40cjo+WE7SZd/W4dRqHMhJKnSjhE/iOuL20BplN/aROyhmfCSRDkyDYsYBWD50K8WMDyXTgalQzDgAy4dupZjxoWQ6MBWKGQdg8VYS8GECFDNlJDc9IxNjpnyAzT/8rtzZrEk9zJ4yHLEVI5W/60XMPHv+B3yRJmqzXDkuWvz5yypdcfir6ti3X1LOahIrZkJDgKcHmVF1/N2QzJk2xX8RHIr0GWuKp2a1IPj1ETAcE6cmiaU3MuTYasgcNwdySJhqX0bJ1iwsTDmA3ZnnEGsKwX2hddAupJpq/euhI4oZPWRJ3RgpZtTlqZfeKGb0kil146SYUZenXnqjmNFLptSNk2JGXZ7sjQT0SoBipozMfbj4ayz7aisWzR6PkOBAPD12BurUrIrJzw/QlZgRwXZMWI0D2RcVNSOK5T4QXgczY29R5pGWDhw6BMTFAVWr5EIxbV+HwM/fBmRxxLZYCGNA9mOjYb7xjpKpWSww7v8NhtPHYK1UDZamNwCmAL1+fWg2booZzabGbYFRzLgNraY7ppjRdHrcFhzFjNvQarpjihlNp8dtwVHMuA0tOyYBXRGgmCkjXQ89+RI6t2+NJx+5W7lz/dZfMGrie9i35SNIkqSbFTNOP5VmsyJaxGVp3BIw6fMUI6fnr9GGFDMaTYwbw6KYcSNcDXdNMaPh5LgxNIoZN8LVcNcUMxpOjhtDo5hxI1x2TQI6IkAxU0ayWncdhCljHlfkjLj+/vcYug+ciB+/eheREWFISc/xWroNBglhwSZYrTLSMs1ei4MDe55AWIgJ6ZkWiJo/vPyDgCjIHRYcgNQM733P8Q/S2pql0Sgh0GRERha/x2srM+6NJjBAbC6WkJ1jce9A7F1TBEKCjMgxW2G28L1dU4lxczDhIQFIy8xRygno6YoI5Yp4PeWLsWqfAMVMKTkSH3qb3tYf770yEre2aa7cefjYKdzbbzw2LnkTVSvHaD/DjJAESIAESIAESIAESIAESIAESIAESECzBChmykiNWDEzdewT6HRrK+VOrpjR7LPsV4FxxYxfpVuZLFfM+F/OxYy5YsY/884VM/6Zd66Y8c+8c8WMf+adsyaBogQoZsp4JkSNmS63XY8net+l3Ol3NWb4NaNJAqwxo8m0uDUo1phxK17Nds4aM5pNjVsDY40Zt+LVbOesMaPZ1Lg1MNaYcStedk4CuiFAMVNGquZ9thbL136vnMoUGhKEQWPe0u2pTLp5KhlomQQoZspE5HM3UMz4XErLNSGKmXJh8rmbKGZ8LqXlmhDFTLkw+dxNFDM+l1JOiAScIkAxUwa2tPRMjH75fWzbuVe5s2nDOpg9dQTiYqOUvyckZjgFXo1GJqOEuKhgpUjcueRMNbpkHzohQDGjk0SpGCbFjIowddQVxYyOkqViqBQzKsLUUVcUMzpKloqhUsyoCJNdkYCOCVDMlDN5l1LSkJNjRmzFSJsWFDPlBMjbVCVAMaMqTl10RjGjizSpHiTFjOpIddEhxYwu0qR6kBQzqiPVRYcUM7pIE4MkAbcToJhxETHFjIsA2dwpAhQzTmHTdSOKGV2nz+ngKWacRqfrhhQzuk6f08FTzDiNTtcNKWZ0nT4GTwKqEaCYcRGlN8VMgMmASpFByDFbcf5SloszYXM9EaCY0VO21ImVYkYdjnrrhWJGbxlTJ16KGXU46q0Xihm9ZUydeClm1OHIXkhA7wQoZvSeQcZPAiRAAiRAAiRAAiRAAiRAAiRAAiSgWwIUM7pNHQMnARIgARIgARIgARIgARIgARIgARLQOwGKGb1nkPGTAAmQAAmQAAmQAAmQAAmQAAmQAAnolgDFjG5Tlxv4haRLCAsNQUhwoM5nwvBLIpCRmY2LyZdRJS4GBlFopMiVnZ2Di5dSlSPcJcn+dZL1TQLMu2/mVczKapVxLvEiwkKCEREeajPRlNR0mC0WREdG+C4AP5yZyGli0mVUrhRd7Oz5Xu8bD4Usy7BYrTAZjQ7nmd/z9fsMlJZ3ceprVlaO8jNccRfzrt+8M3IScJQAxYyjxDRy/3+nzmLQmLdw/ORZJaIH7rwFL47qiwBT8W/2GgmbYThIYNj4mdj8w+9Kq4pREejWpR2eHdRD+bt4o39/4Rq8+9GqgtffmfYMmjep5+AovF2rBE6duYBu/V9Ar24dMOop5l2reVIrLiFdps76FF9t+FHpsnP71nhr4hDlz+kZmRgz5YOC7wfNmtTD7CnDEVsxUq3h2Y8XCAgh88qsz7Dh+13K6ELEDe3/AO7seIPyd77XeyEpbhxSfG3PmLcMm5fNsBmltDzzvd6NCfFQ18XlXcjWx4ZPK/g5vl6tanjykbtxT6e2/BnPQ3nhMCSgNQIUM1rLSDnjGfjcdISHhWDq2Cdx5lwiejw1CS+OfKzgG3o5u+FtGifwzoJV6NS+NWpWj8PO3/7GkHFv44v3X8Q1jevi930H0WfoVCyaPQ7XNKqLWfNX4utNP2HjkreKXVmj8akyvCIExIf0R4ZMweHjCXi8150FYoZ5981HRayS6fHURBgNBgzo1RXtbmiO1LSMgt+ifrj4ayz7aisWzR6vrJB8euwM1KlZFZOfH+CbQPxkVsvXfo/X3v0c6z9/Q5Hvq9Ztx7RZn+H7lW8jNCQYfK/3jQdBiJcnR0/HydPnlVVRRcVMaXnm93z9PgOl5f3chWR8+e123Nv5JmV15KLlG/DRkm+xbdUs5Xs8867fvDNyEnCWAMWMs+S82E4se2x7zxB8+s54XNu0gRLJ1JmLcOZcEmZPHeHFyDi0uwl06D4SD9/XAQP73IM35yzF/kPH8eH055RhxZv8bQ89g+XzJqFxg1ruDoX9u5GA+C360HFvo0qlGFxOTUd81dgCMcO8uxG8F7sWK+PECrlvPn0NteIr20Xy0JMvKStoxG9UxbV+6y8YNfE97NvyEbcwejFvrg793sdfYvX6H7Dmk2kICgxQVsh0fWQMNnyR+8sXvte7Slgb7cX3dLFCYvOO3/Hh4rU2Yqasn+n4PV8bOXQmitLyXrQ/Ie0693pO+WXbdddcxZ/xnAHONiSgcwIUMzpM4OFjp3Bvv/HYuuJtVIrJ3ZMqTLv44U58KOflmwTEtrU7+4zBe6+MxK1tmmP0y+8jOjIc40c8WjDhq9v3K3jdNyn4x6zEb8wPHT2JD15/FmOmzrURM8y7bz4DYtWEWD3R5bbrcejYKVSKicTjve4q2JrYuusgTBnzuCJnxPX3v8fQfeBE/PjVu4iMCPNNKH4wKyFixMo4sSVNCPd1W35WVsq8Om4g+F7vew/Aus0/4433v7ARM2Xlmd/z9f8cFJf3orMSq+VeeG0+tn85W1k9x7zrP++cAQk4SoBixlFiGrg/f3lj4R/Il361FXMWrrZbHquBcBmCCgTS0jPRZ+gUhIeF4uO3x8JoNChL3BvWq1lQc0YMIz68TRzdD3d1vFGFUdmFNwh8/uUmfLzkWyz9YCIiK4QpqyIKr5hh3r2RFfePOXzCLBw4dAL9enZB5dhofLvlF3y9aSfWLnwFtWtUQdPb+ttI1/wPcxuXvImqlWPcHyBHcAsBUdx9zNQ5SM/IwpHjCTh7/iJmTR6Oju2uK9jKwPd6t6D3SqfFfUAv62c6fs/3SqpUHbQsMXPw6En0HjwFfbt3xtAB9ytjM++qpoCdkYAuCFDM6CJNtkHm/0D+/cqZBYUfuWJGh4ksZ8jiB/cRE2YpW9UWzhqHqMhwpaX4bYr4rcq44X0KeuKKmXJC1fBtYimz2MpSv3Z1JcpNO3YrBUHzt7Ew7xpOnguhCTFTvUoljBnSS+nFYrGi/YMj8HTfbuh9f0dFuk4d+wQ63dpKeZ0rZlyAraGmM+Yuw96/D2PBW2OUgu4Ll63H9DlL8OVHU2CQJGV1LN/rNZQwF0MpbcVMSXnm93wXoWugeWliRhT5f3TYVLRu0QjTxj6p/OKNP+NpIGkMgQS8QIBixgvQXR2yuP3Ik2csxLkLF1ljxlW4Gmsv6osMf2EWMjKylG0t+VJGhCn2nR84/B/mvjFaiZo1ZjSWPCfDWbJ6M8TXeP715bc7UDGqAu65ow163teBeXeSq9abia/ng0dPYM5rzxaImRvvHowh/buhX48uEDVmxDanJ3rfpbzOGjNaz2j54uv51CRc1+yqAiEnikBf06G/Usy/S4cb7GrM8L2+fFy1eldxH9DL+pmO7/VazWb54ypJzBw6egr9R76KDjdfhwkjH7M5Rp15Lz9f3kkCvkKAYkanmXxi9BuoEB6m/AaVpzLpNIllhC2Wtj88aBJE8bgZk4YqhSDFZTAYUDWuYqGK/eOVU5pmfrgc32zayVOZfOxxKLqV6cpJDcy7L6VarJroPXiyIlqvb9EIX67fgYnTPy4o5j3vs7VKDRpxKlNoSBAGjXmLpzL5wAMw6a1PsHHbr/js3QmoUa0Svtv2G0a+9I5S/Ld6lVjwvd4Hkgwoq6HMZouyRVEcl71+8RuQDFLBB/HS8szv+fp9BkrL+4HDJ/DA4xOUrefDHn9A+dlOXOL7e3RkBH/G02/aGTkJOE2AYsZpdN5tePS/08oP5qKKu7i6dbkZE5/th4AAk3cD4+iqERC1BsQpTEUvsX1JFIcTb/jvfLQKcxauyXszD8bcN54tOKlLtUDYkVcJFBUzzLtX0+HWwT/6Yp2yjSX/EsV+7+/aTvmrqDMltjRs27lX+XvThnWUFZJxsbkF4Hnpk0DypVS8PW+5Uk9IXGIbo1ghdfcdbZS/871en3ktGrVYGXFf//E2/3xPp7ZKkeey8szv+fp9BkrLu1hFI76nF73ynwvmXb95Z+Qk4CwBihlnyWmknfjwLlZShIUGayQihuFpAplZ2Ui6eBlV4mJgMEieHp7jeYkA8+4l8G4eVuT1fGKy8vUcYDLajSa2PeTkmAvqi7k5HHbvIQL5x+pWqVSx2BH5Xu+hRHh5mNLyzO/5Xk6Ol4Zn3r0EnsOSgBcIUMx4ATqHJAESIAESIAESIAESIAESIAESIAESIAFBgGKGzwEJkAAJkAAJkAAJkAAJkAAJkAAJkAAJeIkAxYyXwHNYEiABEiABEiABEiABEiABEiABEiABEqCY4TNAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAl4iQDHjJfAclgRIgARIgARIgARIgARIgARIgARIgAQoZvgMkAAJkAAJkAAJkAAJkAAJkAAJkAAJkICXCFDMeAk8hyUBEiABEiABEiABEiABEiABEiABEiABihk+AyRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgJQIUM14Cz2FJgARIgARIgARIgARIgARIgARIgARIgGKGzwAJkAAJkAAJkAAJkAAJkAAJkAAJkAAJeIkAxYyXwHNYEiABEiABEiABEiABEiABEiABEiABEqCY4TNAAiRAAiRAAiRAAiRAAiRAAiRAAiRAAl4iQDHjJfAclgRIgARIgARIgARIgARIgARIgARIgAQoZvgMkAAJkAAJkAAJkAAJkAAJkAAJkAAJkICXCFDMeAk8hyUBEiABEiABEiABEiABEiABEiABEiABihk+AyRAAiRAAiTgIoGU1HTs2vOP0kubVk0REhxY0OMffx9W/tysST0XRym5+dI1W7Bj15+YNXm428ZgxyRAAiRAAiRAAiRAAu4hQDHjHq7slQRIgARIwI8I7D94HA89+ZIy42cH9cCAh+8smP3wCbOUP7tTmsyavwJffrsDm5fN8CPqnCoJkAAJkAAJkAAJ+AYBihnfyCNnQQIkQAIk4EUC+WKmXq1qOH0uCRuXvonIiDAlIooZLyaGQ5MACZAACZAACZCADghQzOggSQyRBEiABEhA2wTyxczsqSMwbPxMPPXoPRj++IPlEjMTp38MySDhpVF9CyZptlgwdNzbaHdDMzzywB0YNfE9/HXgKE6ePo+KURG46fprMPLJ7qhcKVppU3TFzOiX30fLZlehV7eOBX1Om/UZoiLDMbjvfcq/WSxWfLryO6xY+z0OH0/AVXXjMeix+9C5fWvl9bPnL2Lmh8uxc/ffSEnNQMN6NdDz3ttwT6e22k4GoyMBEiABEiABEiABnRGgmNFZwhguCZAACZCA9gjki5nl8yZh3eafMf/zb7B1xduoFBNV5oqZxas2YerMRVj/+RuIr1pJmdwPu/Zh4HPTsfi9CWjepJ7SR4ur6yO+ahwuJl/GOx+tQsP6NfHh9OeKFTOdez2HTre2VrZV5V/9nnkVcTFReH3CIOWf3vpgKT7/cjN6deug1L/5dssvSuz5Y/YZOhUJZy9g2IAHEBQYiF17/8GZc0l4/9WR2ksAIyIBEiABEiABEiABHROgmNFx8hg6CZAACZCANggUFjNV42Jwx8Oj0a3LTRg/4tEyxcyly2loe+8QDOl/f8FqFrFC5uh/CVi1YIrNBLOyc3DxUospHegAAAiZSURBVAoWLduAj5d+iz82LYDRaLBbMVOWmEm8eBm33D8co57qgcd75dbDEat02tw9BA/edQuee/phNOs4AL3v76jMIf/KyMy2KWysDfqMggRIgARIgARIgAT0TYBiRt/5Y/QkQAIkQAIaIFBYzDRuUAvzPluLt+ctx7rPXsf0OV8oEZZW/Hf8qx9i28692LLibVxOSUe7bsMwcXQ/dL+7vdJ2/dZfMGfhGvx75KTNbPd89yECAkwOi5lf9x5A3xGvKCt0IsJDC/oU82jftgXenfaMsn1KjHtt0wa48bomuLVNc1zTuK4GaDMEEiABEiABEiABEvAtAhQzvpVPzoYESIAESMALBIqKmfSMTNz6wDPo2O46iD+XJWZ+33cQYuvQnNdG4b9TZyHqwfz89fsIDwsp2NbUrcvNSo2X+Gpx2LTjN4jaNKWJmdvbtcRzgx8uoFF4K9P2n//EoDFvYtzwPqhZPc6GWFRkBK5pVEdZQfPluh34/qc92Ll7vzKPJ3rfhZEDu3uBMIckARIgARIgARIgAd8lQDHju7nlzEiABEiABDxEoKiYEcN+sXozJs9YqBTrvfaaBmUel31v33GoW6sajhxPQKsWjfDiyMeU6MXKG7ECZ8/G+QgwGZV/W7VuO154bX6JYqbX4MmoW7Mqpo59ooDAo8OmoWpcRaXGzH+nzqHrI88rBYd73HubDSVZliFJklIcWGyTEldOjhkT3liArzb8WLB9ykNoOQwJkAAJkAAJkAAJ+DwBihmfTzEnSAIkQAIk4G4CxYmZ7OwcdHnkeeV0I7FyprStTIVFjvizKCIstkSJ6/uf9mLw/2YodV9atWiIvw8cw+wFK5GUnFKimBEiZ+6na/HGhEEIDg7EmvU/YPX6H3BXxxsLiv+KgsKbtu/GpNH9lROcRN0ZsZ3KYDCg/8Nd0evplzG0/wNo2qgO0tIzlBU6FqsVy+ZOVMQNLxIgARIgARIgARIgAXUIUMyow5G9kAAJkAAJ+DGBfDGz4sOX0ah+zQISa7/7CWOmflAuMXMpJQ1t7xmCpg3rYMkHLxX0IbYUjZs2D19v2qn8m1iBI05o2vzD7wViRogasYpm87IZyj0JZy5g4psfK9ugxCXE0KGjp5QaMa+Nf0r5NzGeWI2zdM2WgrFE32J7U/u212LYCzPx069/Fbwm+hjx+IOoV7u6H2eaUycBEiABEiABEiAB9QlQzKjPlD2SAAmQAAmQgOoExOlNl1JSUb1KpYItRmUNcu5CMoKCAhAZEVbirUL8nL+QrKysiY6MsLlPnAJ17sJFVI6NRmBgQFnD8XUSIAESIAESIAESIAEnCFDMOAGNTUiABEiABEiABEiABEiABEiABEiABEhADQIUM2pQZB8kQAIkQAIkQAIkQAIkQAIkQAIkQAIk4AQBihknoLEJCZAACZAACZAACZAACZAACZAACZAACahBgGJGDYrsgwRIgARIgARIgARIgARIgARIgARIgAScIEAx4wQ0NiEBEiABEiABEiABEiABEiABEiABEiABNQhQzKhBkX2QAAmQAAmQAAmQAAmQAAmQAAmQAAmQgBMEKGacgMYmJEACJEACJEACJEACJEACJEACJEACJKAGAYoZNSiyDxIgARIgARIgARIgARIgARIgARIgARJwggDFjBPQ2IQESIAESIAESIAESIAESIAESIAESIAE1CBAMaMGRfZBAiRAAiRAAiRAAiRAAiRAAiRAAiRAAk4QoJhxAhqbkAAJkAAJkAAJkAAJkAAJkAAJkAAJkIAaBChm1KDIPkiABEiABEiABEiABEiABEiABEiABEjACQIUM05AYxMSIAESIAESIAESIAESIAESIAESIAESUIMAxYwaFNkHCZAACZAACZAACZAACZAACZAACZAACThBgGLGCWhsQgIkQAIkQAIkQAIkQAIkQAIkQAIkQAJqEKCYUYMi+yABEiABEiABEiABEiABEiABEiABEiABJwhQzDgBjU1IgARIgARIgARIgARIgARIgARIgARIQA0CFDNqUGQfJEACJEACJEACJEACJEACJEACJEACJOAEAYoZJ6CxCQmQAAmQAAmQAAmQAAmQAAmQAAmQAAmoQYBiRg2K7IMESIAESIAESIAESIAESIAESIAESIAEnCBAMeMENDYhARIgARIgARIgARIgARIgARIgARIgATUIUMyoQZF9kAAJkAAJkAAJkAAJkAAJkAAJkAAJkIATBChmnIDGJiRAAiRAAiRAAiRAAiRAAiRAAiRAAiSgBgGKGTUosg8SIAESIAESIAESIAESIAESIAESIAEScIIAxYwT0NiEBEiABEiABEiABEiABEiABEiABEiABNQgQDGjBkX2QQIkQAIkQAIkQAIkQAIkQAIkQAIkQAJOEKCYcQIam5AACZAACZAACZAACZAACZAACZAACZCAGgQoZtSgyD5IgARIgARIgARIgARIgARIgARIgARIwAkCFDNOQGMTEiABEiABEiABEiABEiABEiABEiABElCDAMWMGhTZBwmQAAmQAAmQAAmQAAmQAAmQAAmQAAk4QYBixglobEICJEACJEACJEACJEACJEACJEACJEACahCgmFGDIvsgARIgARIgARIgARIgARIgARIgARIgAScIUMw4AY1NSIAESIAESIAESIAESIAESIAESIAESEANAhQzalBkHyRAAiRAAiRAAiRAAiRAAiRAAiRAAiTgBAGKGSegsQkJkAAJkAAJkAAJkAAJkAAJkAAJkAAJqEGAYkYNiuyDBEiABEiABEiABEiABEiABEiABEiABJwgQDHjBDQ2IQESIAESIAESIAESIAESIAESIAESIAE1CFDMqEGRfZAACZAACZAACZAACZAACZAACZAACZCAEwQoZpyAxiYkQAIkQAIkQAIkQAIkQAIkQAIkQAIkoAaB/wPBoDZ5E6UqKwAAAABJRU5ErkJggg==", - "text/html": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "### comment out langfuse code \n", - "# px.scatter(\n", - "# results, \n", - "# y='latencies',\n", - "# x='N values',\n", - "# color='Schema',\n", - "# title='Latency v.s. number of values', \n", - "# # boxmode='overlay',\n", - "# width=700,\n", - "# ).update_layout(\n", - "# # xaxis_title='Schemas',\n", - "# yaxis_title='Latency (s)',\n", - "# # yaxis_dtick=0.1,\n", - "# # showlegend=False,\n", - "# )" - ] - }, - { - "cell_type": "markdown", - "id": "f23f3bb1-f77f-4aff-955c-6caf868d1290", - "metadata": {}, - "source": [ - "## Manual extraction v.s. corrected concensus review" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "df79f495-1bb9-44e5-8201-b29f1cd2147a", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/json": { - "ascii": false, - "bar_format": null, - "colour": null, - "elapsed": 0.0024170875549316406, - "initial": 0, - "n": 0, - "ncols": null, - "nrows": 56, - "postfix": null, - "prefix": "", - "rate": null, - "total": null, - "unit": "it", - "unit_divisor": 1000, - "unit_scale": false - }, - "application/vnd.jupyter.widget-view+json": { - "model_id": "e777ef84d7ee4da2a329e729284f48d5", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "0it [00:00, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "{'ngufor2016efficacy': {'Observation': (3, 3),\n", - " 'ITNCondition': (21, 6),\n", - " 'EntomologicalOutcome': (12, 7)},\n", - " 'okia2013bioefficacy': {'Observation': (4, 7),\n", - " 'ITNCondition': (5, 6),\n", - " 'EntomologicalOutcome': (18, 6),\n", - " 'ClinicalOutcome': (8, 3)},\n", - " 'mosha2008comparative': {'Observation': (1, 7),\n", - " 'ITNCondition': (2, 5),\n", - " 'EntomologicalOutcome': (3, 11),\n", - " 'ClinicalOutcome': (2, 15)},\n", - " 'quinones1997anopheles': {'Observation': (4, 7),\n", - " 'ITNCondition': (3, 3),\n", - " 'EntomologicalOutcome': (8, 3),\n", - " 'ClinicalOutcome': (1, 1)},\n", - " 'ahoua2012status': {'Observation': (2, 7),\n", - " 'ITNCondition': (2, 5),\n", - " 'EntomologicalOutcome': (6, 8),\n", - " 'ClinicalOutcome': (2, 9)},\n", - " 'sreehari2009wash': {'Observation': (1, 5),\n", - " 'ITNCondition': (4, 6),\n", - " 'EntomologicalOutcome': (8, 10),\n", - " 'ClinicalOutcome': (13, 5)},\n", - " 'abdulla2005spatial': {'Observation': (1, 7),\n", - " 'ITNCondition': (3, 1),\n", - " 'EntomologicalOutcome': (3, 1),\n", - " 'ClinicalOutcome': (2, 3)},\n", - " 'tan2016longitudinal': {'Observation': (1, 5),\n", - " 'ITNCondition': (2, 8),\n", - " 'EntomologicalOutcome': (2, 5),\n", - " 'ClinicalOutcome': (1, 3)},\n", - " 'wills2013physical': {'Observation': (19, 7),\n", - " 'ITNCondition': (7, 4),\n", - " 'EntomologicalOutcome': (2, 5),\n", - " 'ClinicalOutcome': (14, 4)},\n", - " 'marchant2002socially': {'Observation': (1, 7),\n", - " 'ITNCondition': (2, 5),\n", - " 'EntomologicalOutcome': (2, 5),\n", - " 'ClinicalOutcome': (30, 3)},\n", - " 'nevill1996insecticide': {'Observation': (2, 7),\n", - " 'ITNCondition': (1, 10),\n", - " 'EntomologicalOutcome': (1, 2),\n", - " 'ClinicalOutcome': (4, 7)},\n", - " 'msuya1991trial': {'Observation': (10, 7),\n", - " 'ITNCondition': (3, 3),\n", - " 'EntomologicalOutcome': (5, 4),\n", - " 'ClinicalOutcome': (1, 2)},\n", - " 'tungu2021efficacy': {'Observation': (1, 5),\n", - " 'ITNCondition': (3, 7),\n", - " 'EntomologicalOutcome': (12, 10),\n", - " 'ClinicalOutcome': (3, 4)}}" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "true_extractions = {}\n", - "for ref, paper in tqdm(papers.loc[references].iterrows()):\n", - " true_extractions[paper.name] = get_paper_extractions(\n", - " paper, extraction_dataset, schemas=ss, field='extraction', answer='extraction-correction')\n", - "{ref: {k: v.shape for k,v in ext.items() if v.size} for ref, ext in true_extractions.items()}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f8dcabcb-642b-4e73-a0d8-21bd066cf875", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/json": { - "ascii": false, - "bar_format": null, - "colour": null, - "elapsed": 0.003042936325073242, - "initial": 0, - "n": 0, - "ncols": null, - "nrows": 56, - "postfix": null, - "prefix": "", - "rate": null, - "total": null, - "unit": "it", - "unit_divisor": 1000, - "unit_scale": false - }, - "application/vnd.jupyter.widget-view+json": { - "model_id": "14190dd7b01443b79e2f2b9f9399c093", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "0it [00:00, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "{'ngufor2016efficacy': {},\n", - " 'okia2013bioefficacy': {},\n", - " 'mosha2008comparative': {},\n", - " 'quinones1997anopheles': {},\n", - " 'ahoua2012status': {},\n", - " 'sreehari2009wash': {},\n", - " 'abdulla2005spatial': {},\n", - " 'tan2016longitudinal': {},\n", - " 'wills2013physical': {},\n", - " 'marchant2002socially': {},\n", - " 'nevill1996insecticide': {},\n", - " 'msuya1991trial': {},\n", - " 'tungu2021efficacy': {}}" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "pred_extractions = {}\n", - "for ref, paper in tqdm(papers.loc[references].iterrows()):\n", - " pred_extractions[paper.name] = get_paper_extractions(\n", - " paper, extraction_dataset, schemas=ss, field='extraction', \n", - " answer='extraction-correction', suggestion='extraction-correction', \n", - " user=username_to_user['jonnytr'])\n", - "{ref: {k: v.shape for k,v in ext.items() if v.size} for ref, ext in pred_extractions.items()}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9c5d61b8-aa13-4eae-b68c-0723ac5aa5e0", - "metadata": {}, - "outputs": [], - "source": [ - "pred_extractions = {ref: paper_extraction for ref, paper_extraction in pred_extractions.items() \\\n", - " if not all([df.empty for df in paper_extraction.extractions.values()])}\n", - "true_extractions = {ref: paper_extraction for ref, paper_extraction in true_extractions.items() \\\n", - " if ref in pred_extractions}" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4c4f48f5-c405-4a37-9aa1-202fcd20ac55", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "0" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(true_extractions)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "08d27b5e-c786-44fa-bd9c-5aa07547d8ac", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/html": [ - "
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮\n",
-       " in <module>:1                                                                                    \n",
-       "                                                                                                  \n",
-       " 1 suggestion_metrics = grits_from_batch(true_extractions, pred_extractions, exclude_column     \n",
-       "   2                                                                                              \n",
-       "   3 suggestion_metrics.style.background_gradient(axis=1, vmin=0, vmax=1, cmap='RdYlGn')          \n",
-       "   4                                                                                              \n",
-       "                                                                                                  \n",
-       " /Users/jonnytr/Projects/extralit/src/extralit/metrics/extraction.py:51 in grits_from_batch       \n",
-       "                                                                                                  \n",
-       "    48 │   │   │   │   raise ValueError(f\"Invalid type for true_extractions: {type(true_extract   \n",
-       "    49                                                                                        \n",
-       "    50                                                                                        \n",
-       "  51 metrics_df = pd.concat(metrics, axis=0)                                                \n",
-       "    52 metrics_df.index.names = index_names[:metrics_df.index.nlevels]                        \n",
-       "    53                                                                                        \n",
-       "    54 if compute_mean:                                                                       \n",
-       "                                                                                                  \n",
-       " /Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/concat.py:382 in      \n",
-       " concat                                                                                           \n",
-       "                                                                                                  \n",
-       "   379 elif copy and using_copy_on_write():                                                   \n",
-       "   380 │   │   copy = False                                                                       \n",
-       "   381                                                                                        \n",
-       " 382 op = _Concatenator(                                                                    \n",
-       "   383 │   │   objs,                                                                              \n",
-       "   384 │   │   axis=axis,                                                                         \n",
-       "   385 │   │   ignore_index=ignore_index,                                                         \n",
-       "                                                                                                  \n",
-       " /Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/concat.py:445 in      \n",
-       " __init__                                                                                         \n",
-       "                                                                                                  \n",
-       "   442 │   │   self.verify_integrity = verify_integrity                                           \n",
-       "   443 │   │   self.copy = copy                                                                   \n",
-       "   444 │   │                                                                                      \n",
-       " 445 │   │   objs, keys = self._clean_keys_and_objs(objs, keys)                                 \n",
-       "   446 │   │                                                                                      \n",
-       "   447 │   │   # figure out what our result ndim is going to be                                   \n",
-       "   448 │   │   ndims = self._get_ndims(objs)                                                      \n",
-       "                                                                                                  \n",
-       " /Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/concat.py:507 in      \n",
-       " _clean_keys_and_objs                                                                             \n",
-       "                                                                                                  \n",
-       "   504 │   │   │   objs_list = list(objs)                                                         \n",
-       "   505 │   │                                                                                      \n",
-       "   506 │   │   if len(objs_list) == 0:                                                            \n",
-       " 507 │   │   │   raise ValueError(\"No objects to concatenate\")                                  \n",
-       "   508 │   │                                                                                      \n",
-       "   509 │   │   if keys is None:                                                                   \n",
-       "   510 │   │   │   objs_list = list(com.not_none(*objs_list))                                     \n",
-       "╰──────────────────────────────────────────────────────────────────────────────────────────────────╯\n",
-       "ValueError: No objects to concatenate\n",
-       "
\n" - ], - "text/plain": [ - "\u001b[31m╭─\u001b[0m\u001b[31m──────────────────────────────\u001b[0m\u001b[31m \u001b[0m\u001b[1;31mTraceback \u001b[0m\u001b[1;2;31m(most recent call last)\u001b[0m\u001b[31m \u001b[0m\u001b[31m───────────────────────────────\u001b[0m\u001b[31m─╮\u001b[0m\n", - "\u001b[31m│\u001b[0m in \u001b[92m\u001b[0m:\u001b[94m1\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m1 suggestion_metrics = grits_from_batch(true_extractions, pred_extractions, exclude_column \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m2 \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m3 \u001b[0msuggestion_metrics.style.background_gradient(axis=\u001b[94m1\u001b[0m, vmin=\u001b[94m0\u001b[0m, vmax=\u001b[94m1\u001b[0m, cmap=\u001b[33m'\u001b[0m\u001b[33mRdYlGn\u001b[0m\u001b[33m'\u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m4 \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/Projects/extralit/src/extralit/metrics/\u001b[0m\u001b[1;33mextraction.py\u001b[0m:\u001b[94m51\u001b[0m in \u001b[92mgrits_from_batch\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 48 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mraise\u001b[0m \u001b[96mValueError\u001b[0m(\u001b[33mf\u001b[0m\u001b[33m\"\u001b[0m\u001b[33mInvalid type for true_extractions: \u001b[0m\u001b[33m{\u001b[0m\u001b[96mtype\u001b[0m(true_extract \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 49 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 50 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 51 \u001b[2m│ \u001b[0mmetrics_df = pd.concat(metrics, axis=\u001b[94m0\u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 52 \u001b[0m\u001b[2m│ \u001b[0mmetrics_df.index.names = index_names[:metrics_df.index.nlevels] \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 53 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 54 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mif\u001b[0m compute_mean: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/\u001b[0m\u001b[1;33mconcat.py\u001b[0m:\u001b[94m382\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92mconcat\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m379 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94melif\u001b[0m copy \u001b[95mand\u001b[0m using_copy_on_write(): \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m380 \u001b[0m\u001b[2m│ │ \u001b[0mcopy = \u001b[94mFalse\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m381 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m382 \u001b[2m│ \u001b[0mop = _Concatenator( \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m383 \u001b[0m\u001b[2m│ │ \u001b[0mobjs, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m384 \u001b[0m\u001b[2m│ │ \u001b[0maxis=axis, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m385 \u001b[0m\u001b[2m│ │ \u001b[0mignore_index=ignore_index, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/\u001b[0m\u001b[1;33mconcat.py\u001b[0m:\u001b[94m445\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92m__init__\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m442 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[96mself\u001b[0m.verify_integrity = verify_integrity \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m443 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[96mself\u001b[0m.copy = copy \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m444 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m445 \u001b[2m│ │ \u001b[0mobjs, keys = \u001b[96mself\u001b[0m._clean_keys_and_objs(objs, keys) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m446 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m447 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[2m# figure out what our result ndim is going to be\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m448 \u001b[0m\u001b[2m│ │ \u001b[0mndims = \u001b[96mself\u001b[0m._get_ndims(objs) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/pandas/core/reshape/\u001b[0m\u001b[1;33mconcat.py\u001b[0m:\u001b[94m507\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92m_clean_keys_and_objs\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m504 \u001b[0m\u001b[2m│ │ │ \u001b[0mobjs_list = \u001b[96mlist\u001b[0m(objs) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m505 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m506 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m \u001b[96mlen\u001b[0m(objs_list) == \u001b[94m0\u001b[0m: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m507 \u001b[2m│ │ │ \u001b[0m\u001b[94mraise\u001b[0m \u001b[96mValueError\u001b[0m(\u001b[33m\"\u001b[0m\u001b[33mNo objects to concatenate\u001b[0m\u001b[33m\"\u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m508 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m509 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m keys \u001b[95mis\u001b[0m \u001b[94mNone\u001b[0m: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m510 \u001b[0m\u001b[2m│ │ │ \u001b[0mobjs_list = \u001b[96mlist\u001b[0m(com.not_none(*objs_list)) \u001b[31m│\u001b[0m\n", - "\u001b[31m╰──────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n", - "\u001b[1;91mValueError: \u001b[0mNo objects to concatenate\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "suggestion_metrics = grits_from_batch(true_extractions, pred_extractions, exclude_columns=['Site'])\n", - "\n", - "suggestion_metrics.style.background_gradient(axis=1, vmin=0, vmax=1, cmap='RdYlGn')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d0d7a119-fde2-47dd-be75-85b00b88779d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
 grits
 con
 f1precisionrecall
Schema   
Easy97.4%97.4%97.9%
Hard89.2%88.3%95.7%
\n" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 100, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "df = suggestion_metrics.query(\"Schema != 'ClinicalOutcome'\").groupby('Schema').mean()\n", - "df.groupby({'Observation': 'Easy', 'ITNCondition': 'Easy', 'EntomologicalOutcome': 'Hard', 'ClinicalOutcome': 'Hard'})\\\n", - " .mean(0).map(lambda n: '{:.1%}'.format(n)).style.background_gradient(axis=1, vmin=0, vmax=1, cmap='RdYlGn')" - ] - }, - { - "cell_type": "markdown", - "id": "da89f632-e7d0-4b56-95ba-fce00365e23d", - "metadata": {}, - "source": [ - "# Push new extraction records" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3ba02a63-d4a0-4fff-bcf9-325d9cbf8302", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/html": [ - "
[10/30/24 12:40:53] WARNING  WARNING:patch_pipeline_export_record:No             patch_pipeline_export_record.py:80\n",
-       "                             ClinicalOutcome extraction for                                                        \n",
-       "                             ibrahim2020exploring, generating an empty table.                                      \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m[10/30/24 12:40:53]\u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m WARNING:patch_pipeline_export_record:No \u001b]8;id=75945;file:///Users/bertozzivill/repos/ITN-recal-data-extraction/patch_pipeline_export_record.py\u001b\\\u001b[2mpatch_pipeline_export_record.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=349027;file:///Users/bertozzivill/repos/ITN-recal-data-extraction/patch_pipeline_export_record.py#80\u001b\\\u001b[2m80\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m ClinicalOutcome extraction for \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m ibrahim2020exploring, generating an empty table. \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
                    WARNING  WARNING:patch_pipeline_export_record:No             patch_pipeline_export_record.py:80\n",
-       "                             ClinicalOutcome extraction for                                                        \n",
-       "                             meiwald2022association, generating an empty table.                                    \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[33mWARNING \u001b[0m WARNING:patch_pipeline_export_record:No \u001b]8;id=862372;file:///Users/bertozzivill/repos/ITN-recal-data-extraction/patch_pipeline_export_record.py\u001b\\\u001b[2mpatch_pipeline_export_record.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=400002;file:///Users/bertozzivill/repos/ITN-recal-data-extraction/patch_pipeline_export_record.py#80\u001b\\\u001b[2m80\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m ClinicalOutcome extraction for \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m meiwald2022association, generating an empty table. \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "60" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "records = create_extraction_records(pred_extractions, responses=responses, papers=papers, dataset=extraction_dataset)\n", - "len(records)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d682b346-0558-4dcd-907f-0a18e3a12ba1", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None),\n", - " FeedbackRecord(fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None)]" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "records" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3848fe73-6a8b-407a-853f-ef59ff375c49", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "5bed2c016bc34fc0aeb28917490a5c19", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Output()" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n"
-      ],
-      "text/plain": []
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    }
-   ],
-   "source": [
-    "extraction_dataset.add_records(records)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "1a820435-53f2-4c15-a88a-afc4854309bf",
-   "metadata": {},
-   "source": [
-    "## Update existing records"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "c5857206-5713-416a-a24e-11b9470acc89",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "record_updates = []\n",
-    "\n",
-    "for record in tqdm(extraction_dataset.records):\n",
-    "    reference = record.metadata['reference']\n",
-    "    schema_name = record.metadata['type']\n",
-    "\n",
-    "    update_record = next((r for r in records if reference == r.metadata['reference'] and schema_name == r.metadata['type']), None)\n",
-    "    if update_record:\n",
-    "        record.fields = update_record.fields\n",
-    "        record_updates.append(record)\n",
-    "        \n",
-    "len(record_updates)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "4879c50f-b033-424d-a131-caefd2ecc5d7",
-   "metadata": {
-    "scrolled": true
-   },
-   "source": [
-    "## Delete records"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "ca9c0dec-66a0-4435-8a8e-c17a177c6d59",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "120"
-      ]
-     },
-     "execution_count": 33,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "delete_records = [r for r in extraction_dataset.records if r.metadata['reference'] in references]\n",
-    "len(delete_records)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "6f4e31d4-aa51-48fe-9ec4-959b81cb0c67",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/plain": [
-       "[RemoteFeedbackRecord(id=UUID('5a126d29-a23e-4d99-a397-1377a42f1fc3'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'pmid': '35987650', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'type': 'Observation'}, vectors={}, responses={'ameliabv': []}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886419), updated_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886419)),\n",
-       " RemoteFeedbackRecord(id=UUID('3d52cd67-668a-4576-bbc5-ad4fd26d0687'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'pmid': '35987650', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886422), updated_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886422)),\n",
-       " RemoteFeedbackRecord(id=UUID('bd1e7479-a11e-48f4-9716-8d2bfd3d578b'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'pmid': '35987650', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886426), updated_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886426)),\n",
-       " RemoteFeedbackRecord(id=UUID('071dfaca-7719-43f6-a102-341f905626ab'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'pmid': '35987650', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886429), updated_at=datetime.datetime(2024, 6, 9, 20, 40, 0, 886429)),\n",
-       " RemoteFeedbackRecord(id=UUID('1e89a75b-6181-4099-b776-199cbd5d2658'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323669), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323669)),\n",
-       " RemoteFeedbackRecord(id=UUID('f6baf956-bf8d-4bde-9620-bbf4a13f1f9c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323672), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323672)),\n",
-       " RemoteFeedbackRecord(id=UUID('73772b4f-fd49-4eb4-a7ec-941ed0f44ab4'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323676), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323676)),\n",
-       " RemoteFeedbackRecord(id=UUID('f1150462-13d5-4156-8038-1e43268be3ed'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323679), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323679)),\n",
-       " RemoteFeedbackRecord(id=UUID('22f6a703-064e-499b-8e6a-3e58dea2e3cb'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ITNCondition'}, vectors={}, responses={'ameliabv': []}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323697), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323697)),\n",
-       " RemoteFeedbackRecord(id=UUID('1ee9ac1c-073d-4419-a3b2-61e45a4b4cd8'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323700), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323700)),\n",
-       " RemoteFeedbackRecord(id=UUID('52fbcf88-2b38-45f7-8009-95840f3f7a7c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323703), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323703)),\n",
-       " RemoteFeedbackRecord(id=UUID('11325543-96e0-4834-866c-5021f4d88997'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323707), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323707)),\n",
-       " RemoteFeedbackRecord(id=UUID('fe766984-57eb-44e6-a129-321768753d8d'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ITNCondition'}, vectors={}, responses={'ameliabv': []}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323710), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323710)),\n",
-       " RemoteFeedbackRecord(id=UUID('8dc5c719-b0ef-4f24-8b47-e7b24a070883'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323714), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323714)),\n",
-       " RemoteFeedbackRecord(id=UUID('96e69e8d-0a60-4162-a14b-482529091255'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323717), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323717)),\n",
-       " RemoteFeedbackRecord(id=UUID('29e87dfc-19b7-4539-9ed8-9c4fd2895f65'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323721), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323721)),\n",
-       " RemoteFeedbackRecord(id=UUID('22d763c5-b616-486b-ac39-841da4fbad9f'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ITNCondition'}, vectors={}, responses={'ameliabv': []}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323724), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323724)),\n",
-       " RemoteFeedbackRecord(id=UUID('4eb3a1b3-41cb-4fe2-909b-b348d18caffa'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323727), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323727)),\n",
-       " RemoteFeedbackRecord(id=UUID('898f9522-3ae5-40c7-9b08-c9bc10ad318a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323731), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323731)),\n",
-       " RemoteFeedbackRecord(id=UUID('78771d04-3ebc-44b8-a5c1-e86dcb264bca'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323734), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323734)),\n",
-       " RemoteFeedbackRecord(id=UUID('cbc3d3d5-93fb-4f43-816d-6a3b6d4fb99c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323737), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323737)),\n",
-       " RemoteFeedbackRecord(id=UUID('c5932a80-5e62-4676-bd2d-ee72b3c2986f'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323741), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323741)),\n",
-       " RemoteFeedbackRecord(id=UUID('aa210166-345f-42a9-8b20-eeb111b95e41'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323744), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323744)),\n",
-       " RemoteFeedbackRecord(id=UUID('44418262-04e4-49f9-b1a8-d39ab3ba0db9'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323747), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 323747)),\n",
-       " RemoteFeedbackRecord(id=UUID('f566c9a9-4f99-464f-b939-b82a0c77e35d'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852517), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852517)),\n",
-       " RemoteFeedbackRecord(id=UUID('f6f42420-1cb5-4110-9722-5062077e7e41'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852528), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852528)),\n",
-       " RemoteFeedbackRecord(id=UUID('f417165b-e9fb-44ad-a5a1-1ccd3f3e9a9b'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852531), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852531)),\n",
-       " RemoteFeedbackRecord(id=UUID('76155a5f-9295-426d-87e4-25bba9eccd7e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852535), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852535)),\n",
-       " RemoteFeedbackRecord(id=UUID('597ab1b7-637f-46cd-a3c9-adc1ff5636bf'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852539), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852539)),\n",
-       " RemoteFeedbackRecord(id=UUID('8ffe47bc-f2f8-4b67-8176-602b1e6e9a67'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852543), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852543)),\n",
-       " RemoteFeedbackRecord(id=UUID('647e504d-dd6f-42a8-a14b-40f1dda20f6a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852546), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852546)),\n",
-       " RemoteFeedbackRecord(id=UUID('be3ab3df-313b-4429-9f7e-1d75995f12eb'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852550), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852550)),\n",
-       " RemoteFeedbackRecord(id=UUID('aedb3853-a8fe-4a1b-8f17-6652365ebcf8'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '36726160', 'doi': '10.1111/mve.12316', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852553), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852553)),\n",
-       " RemoteFeedbackRecord(id=UUID('03511a36-bc9e-47cd-8e88-d50fd9caec55'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '36726160', 'doi': '10.1111/mve.12316', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852556), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852556)),\n",
-       " RemoteFeedbackRecord(id=UUID('2bf35187-765b-4fb6-8935-4d046584b76e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '36726160', 'doi': '10.1111/mve.12316', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852560), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852560)),\n",
-       " RemoteFeedbackRecord(id=UUID('59cedb58-c565-4865-b41b-8f3364396d32'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '36726160', 'doi': '10.1111/mve.12316', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852563), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852563)),\n",
-       " RemoteFeedbackRecord(id=UUID('0c8b02a4-a557-43fc-b1e1-b1d4da6b1f16'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852580), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852580)),\n",
-       " RemoteFeedbackRecord(id=UUID('042e6118-77b6-442f-b4a8-d950bb6ce975'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852584), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852584)),\n",
-       " RemoteFeedbackRecord(id=UUID('a0fc80f6-9539-4e45-a5e9-36566f9bfb65'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852587), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852587)),\n",
-       " RemoteFeedbackRecord(id=UUID('39467d2b-3c6f-441a-95e0-e677ad6c9b25'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852591), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852591)),\n",
-       " RemoteFeedbackRecord(id=UUID('7f243860-1f22-4ec8-8f5b-baaec90375be'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852595), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852595)),\n",
-       " RemoteFeedbackRecord(id=UUID('7be3b6ef-0382-43bb-8dd3-206159fe6cb6'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852598), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852598)),\n",
-       " RemoteFeedbackRecord(id=UUID('5e415fa8-70ca-4527-8072-427aa689d100'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852602), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852602)),\n",
-       " RemoteFeedbackRecord(id=UUID('f27980e4-aed5-4b23-8714-ac8103dcdf45'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852605), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852605)),\n",
-       " RemoteFeedbackRecord(id=UUID('365017c6-68b0-4ad3-b8cd-9d3dd270a08c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ITNCondition'}, vectors={}, responses={'ameliabv': []}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852608), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852608)),\n",
-       " RemoteFeedbackRecord(id=UUID('eeb02640-b086-439b-8e93-85ae70ff147a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852629), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852629)),\n",
-       " RemoteFeedbackRecord(id=UUID('48dbf463-8539-4edb-a21b-6e7ba62f47ac'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852632), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852632)),\n",
-       " RemoteFeedbackRecord(id=UUID('b6eba409-42a7-4a5b-8e33-d6a451c50408'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852636), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852636)),\n",
-       " RemoteFeedbackRecord(id=UUID('3b4ec76a-d392-45cf-9d2d-746bc676a5ee'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852639), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852639)),\n",
-       " RemoteFeedbackRecord(id=UUID('085c5c49-2f38-4bb2-bfee-1213520d7920'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852643), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852643)),\n",
-       " RemoteFeedbackRecord(id=UUID('90fcbcb8-5a61-4ab7-8736-a91a1ac316be'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852646), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852646)),\n",
-       " RemoteFeedbackRecord(id=UUID('cbca3a2b-03dd-49e1-a93e-91b0f6128c6e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852649), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 7, 852649)),\n",
-       " RemoteFeedbackRecord(id=UUID('5d687132-1687-4bf4-a068-075c0304f7bd'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342445), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342445)),\n",
-       " RemoteFeedbackRecord(id=UUID('28a85c80-e8d5-4db0-afcf-9a5f7b0e27ac'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342449), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342449)),\n",
-       " RemoteFeedbackRecord(id=UUID('7b1f689d-c4f0-4033-ad59-76c513708e0c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342453), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342453)),\n",
-       " RemoteFeedbackRecord(id=UUID('addeba0c-2ad3-4f24-8147-bca72952bcfa'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342457), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342457)),\n",
-       " RemoteFeedbackRecord(id=UUID('05492554-ba85-496e-89a5-295ac46ec347'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342461), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342461)),\n",
-       " RemoteFeedbackRecord(id=UUID('59f59129-05b7-42e8-994b-1a0d8e82acba'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342465), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342465)),\n",
-       " RemoteFeedbackRecord(id=UUID('c4f4731e-a606-4b11-b282-396ab1b8774c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342469), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342469)),\n",
-       " RemoteFeedbackRecord(id=UUID('077f388e-52ff-4dea-9060-1e5e09667376'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342473), updated_at=datetime.datetime(2024, 6, 21, 7, 25, 8, 342473)),\n",
-       " RemoteFeedbackRecord(id=UUID('1b8d85b2-0bd8-4481-adc0-6cbe037990ee'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501715), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501715)),\n",
-       " RemoteFeedbackRecord(id=UUID('9fd5cc7c-0e65-4dfe-b289-2c992b7eac41'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501727), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501727)),\n",
-       " RemoteFeedbackRecord(id=UUID('6d3d3c20-b243-4421-ba13-a9b66a64caca'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501732), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501732)),\n",
-       " RemoteFeedbackRecord(id=UUID('69e0d688-189c-4670-8153-88b68e93557a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'accrombessi2023efficacy', 'doc_id': 'e5386539-bd6f-3c8b-ae43-13bceeba7522', 'pmid': '36706778', 'doi': '10.1016/S0140-6736(22)02319-4', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501736), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501736)),\n",
-       " RemoteFeedbackRecord(id=UUID('c0e71e9e-bf19-4579-9309-f4ee2ba23e55'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501740), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501740)),\n",
-       " RemoteFeedbackRecord(id=UUID('418e9ec8-da8e-4429-ab38-04b490a7f5e1'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501743), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501743)),\n",
-       " RemoteFeedbackRecord(id=UUID('fd82e8c8-c5c9-45d3-bc99-8fd6d8094838'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501747), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501747)),\n",
-       " RemoteFeedbackRecord(id=UUID('18daebe4-cac7-4d7c-acc5-38c0be929d25'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'mieguim2021insights', 'doc_id': '1713f6db-c0fc-31cf-8b0b-7f2484f81187', 'pmid': '33388082', 'doi': '10.1186/s13071-020-04525-0', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501750), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501750)),\n",
-       " RemoteFeedbackRecord(id=UUID('ff4279bc-6ad7-483c-b641-cbd4c5c3db83'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501754), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501754)),\n",
-       " RemoteFeedbackRecord(id=UUID('12ee4fcb-873f-40b1-ba03-823cc182b779'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501758), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501758)),\n",
-       " RemoteFeedbackRecord(id=UUID('736b4754-f8a0-4f4f-8708-efe10c6c66be'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501761), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501761)),\n",
-       " RemoteFeedbackRecord(id=UUID('3f8b9c27-7dcc-4e54-8591-017bd3559a59'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gebremariam2021evaluation', 'doc_id': 'fdda2d65-54ee-3345-8502-941bccb1dba7', 'pmid': '33488090', 'doi': '10.1177/1178630220974730', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501765), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501765)),\n",
-       " RemoteFeedbackRecord(id=UUID('8a0a0d89-94a3-4747-a8ae-730c5d8e63bd'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501768), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501768)),\n",
-       " RemoteFeedbackRecord(id=UUID('7b39984f-0014-4b59-bb1c-d9020d327112'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501772), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501772)),\n",
-       " RemoteFeedbackRecord(id=UUID('a129a260-aa69-44c2-b451-565a35f8129a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501776), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501776)),\n",
-       " RemoteFeedbackRecord(id=UUID('324f0810-c815-452c-8a38-266e9e1f0e61'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'gichuki2021bioefficacy', 'doc_id': '4aad902e-7bc0-3d0d-b8d8-622a46a98a20', 'pmid': '34930459', 'doi': '10.1186/s40249-021-00916-2', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501779), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501779)),\n",
-       " RemoteFeedbackRecord(id=UUID('ef08a6c4-c044-49fb-a48b-a6f41960f8c1'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501786), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501786)),\n",
-       " RemoteFeedbackRecord(id=UUID('2704a3fd-af5d-4a7f-b060-c888dcbfb75b'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501790), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501790)),\n",
-       " RemoteFeedbackRecord(id=UUID('a0b538af-387c-4677-8597-989370bb203f'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501793), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501793)),\n",
-       " RemoteFeedbackRecord(id=UUID('91a3a881-7351-43b9-b85e-479b43a94ff2'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2021which', 'doc_id': '5f74e356-d54f-343e-a1b7-2cf0c3b0be7c', 'pmid': '33507978', 'doi': '10.1371/journal.pone.0245804', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501797), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501797)),\n",
-       " RemoteFeedbackRecord(id=UUID('a9dd46ba-c7e9-43f4-8083-1b75a968abc9'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501800), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501800)),\n",
-       " RemoteFeedbackRecord(id=UUID('a0e2cc05-8355-4f1f-b496-bcfc379a0110'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501804), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501804)),\n",
-       " RemoteFeedbackRecord(id=UUID('985e51fe-baf8-48e2-a121-1125ce697131'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501807), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501807)),\n",
-       " RemoteFeedbackRecord(id=UUID('ee5808b3-afef-4177-a2fe-6e8f8a36c954'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'zahouli2023small', 'doc_id': '5210dc37-a785-375a-b6bb-47b45bc0b993', 'pmid': '36726160', 'doi': '10.1186/s12936-023-04455-z', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501810), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501810)),\n",
-       " RemoteFeedbackRecord(id=UUID('d3e4f4cc-89c7-49f9-908f-abe2b8d585e2'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501814), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501814)),\n",
-       " RemoteFeedbackRecord(id=UUID('bdd777b5-5eaf-4171-9b2e-3f3e32a1f686'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501817), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501817)),\n",
-       " RemoteFeedbackRecord(id=UUID('db871e36-a76a-4bc5-a7be-73c6901d33f0'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501821), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501821)),\n",
-       " RemoteFeedbackRecord(id=UUID('e7446fd7-f255-4dc6-b5fa-5bddc4e9227e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'diouf2022evaluation', 'doc_id': 'eeb51aa0-4e1a-3f3b-9ffa-acdb2f073b7d', 'pmid': '35780153', 'doi': '10.1186/s12936-022-04230-6', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501824), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501824)),\n",
-       " RemoteFeedbackRecord(id=UUID('711830d8-8c0f-4ef5-be68-97586669f58d'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501828), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501828)),\n",
-       " RemoteFeedbackRecord(id=UUID('4824d0a8-bfd3-41ab-9339-6db1755c2d9c'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501831), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501831)),\n",
-       " RemoteFeedbackRecord(id=UUID('0a16518f-ca1a-4842-bdca-e4ab0a5c5201'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501835), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501835)),\n",
-       " RemoteFeedbackRecord(id=UUID('1c0835b1-ed4c-4fba-90c2-12403f7c788a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ibrahim2020exploring', 'doc_id': '986c31ab-a1d8-3384-8982-6d711a821b29', 'pmid': '32331386', 'doi': '10.3390/genes11040454', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501838), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 501838)),\n",
-       " RemoteFeedbackRecord(id=UUID('986418bc-e5ed-47cd-b592-a11d5452038e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864066), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864066)),\n",
-       " RemoteFeedbackRecord(id=UUID('cde8d347-7113-42cf-9e68-9013ee3c884a'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864077), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864077)),\n",
-       " RemoteFeedbackRecord(id=UUID('4c627a19-6c2c-42f1-84d0-da75cf31fda7'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864081), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864081)),\n",
-       " RemoteFeedbackRecord(id=UUID('b2704587-c488-4c9b-910b-3f199ba03969'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'kibondo2022influence', 'doc_id': '420b8983-dd49-3fa8-b774-e19e6b68671a', 'pmid': '35410250', 'doi': '10.1186/s13071-022-05207-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864085), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864085)),\n",
-       " RemoteFeedbackRecord(id=UUID('5d2063df-2b7e-4a35-bc77-0e8cf6ac152e'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864089), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864089)),\n",
-       " RemoteFeedbackRecord(id=UUID('086ce38e-0565-4a53-8667-1cb8cd937779'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864092), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864092)),\n",
-       " RemoteFeedbackRecord(id=UUID('5b478043-e828-4f9d-9a7b-53352d491df5'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864096), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864096)),\n",
-       " RemoteFeedbackRecord(id=UUID('c53276fc-b746-473e-9125-091c8cb38685'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'meiwald2022association', 'doc_id': 'bfb47409-3c77-3c03-b9ec-1e89186f3484', 'pmid': '33175129', 'doi': '10.1093/infdis/jiaa699', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864100), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864100)),\n",
-       " RemoteFeedbackRecord(id=UUID('99870ad8-e779-46b0-b135-94014a14416f'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864103), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864103)),\n",
-       " RemoteFeedbackRecord(id=UUID('56cc8d09-e590-4d19-a097-79324db974f6'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864107), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864107)),\n",
-       " RemoteFeedbackRecord(id=UUID('b7cbea5b-551e-4192-9958-cbe614132ad3'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864110), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864110)),\n",
-       " RemoteFeedbackRecord(id=UUID('239ce31e-8cdd-4535-9def-b8e5c0c57738'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'menze2022experimental', 'doc_id': 'ce46d818-978e-3f40-bc7f-b71a4355c2e7', 'pmid': '35745492', 'doi': '10.3390/pathogens11060638', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864114), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864114)),\n",
-       " RemoteFeedbackRecord(id=UUID('02cdef32-e8e7-4a11-97e6-5a108d5eda13'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864117), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864117)),\n",
-       " RemoteFeedbackRecord(id=UUID('e6a7f887-ec67-487b-9f89-e64cedca12d4'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864121), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864121)),\n",
-       " RemoteFeedbackRecord(id=UUID('5cf2e42e-5494-45db-a1e7-b0431e1b33c1'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864124), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864124)),\n",
-       " RemoteFeedbackRecord(id=UUID('42e3d90e-cf19-4932-9393-f22753b7d7dc'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'syme2022pyrethroid', 'doc_id': '075adb8e-9994-3cee-af44-523e580e2cea', 'pmid': '35478216', 'doi': '10.1038/s41598-022-10953-y', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864128), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864128)),\n",
-       " RemoteFeedbackRecord(id=UUID('e05cd5d7-d397-4b77-9f35-198bd56e54c7'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864131), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864131)),\n",
-       " RemoteFeedbackRecord(id=UUID('d646bbd0-323e-4b20-a568-3be63217e946'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864135), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864135)),\n",
-       " RemoteFeedbackRecord(id=UUID('0caf1b77-fdb2-48d6-b7dc-47c5a1204174'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864138), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864138)),\n",
-       " RemoteFeedbackRecord(id=UUID('cc9d7253-6a35-47c0-b316-629149ba2fbc'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'toe2018do', 'doc_id': 'b3de4026-d18f-362f-875c-1c7a1fb6d3b4', 'pmid': '35478216', 'doi': '10.1111/mve.12316', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864142), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864142)),\n",
-       " RemoteFeedbackRecord(id=UUID('2636f941-01cd-4909-8063-ac2e44408c59'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864145), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864145)),\n",
-       " RemoteFeedbackRecord(id=UUID('13ec59d6-e6d2-4954-82b8-9270b694ab43'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864148), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864148)),\n",
-       " RemoteFeedbackRecord(id=UUID('130d0928-c50e-4635-b8cc-b4f19e04fef4'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864152), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864152)),\n",
-       " RemoteFeedbackRecord(id=UUID('83d29bb0-b450-4c8e-8779-4f74936c7151'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'yewhalaw2022experimental', 'doc_id': 'fbbd582e-2e1e-33d1-bee7-c21641f2027f', 'pmid': '35987650', 'doi': '10.1186/s12936-022-04263-x', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864156), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864156)),\n",
-       " RemoteFeedbackRecord(id=UUID('0775684e-d548-4b7b-9217-1c4a19d33550'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ITNCondition'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864159), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864159)),\n",
-       " RemoteFeedbackRecord(id=UUID('6ea06848-c457-4472-b22c-1bf0658c8838'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'Observation'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864163), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864163)),\n",
-       " RemoteFeedbackRecord(id=UUID('8980230f-e210-452f-bf87-98439adb90ac'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'ClinicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864167), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864167)),\n",
-       " RemoteFeedbackRecord(id=UUID('b705f5e5-8009-42f8-8e82-a98ce8405eff'), client=, fields=['extraction', 'metadata', 'context'], metadata={'reference': 'ngufor2022comparative', 'doc_id': '5f8d4493-ba86-3757-9bce-0ae59d1831f4', 'pmid': '35016676', 'doi': '10.1186/s12936-022-04041-9', 'type': 'EntomologicalOutcome'}, vectors={}, responses={}, suggestions=[], external_id=None, inserted_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864170), updated_at=datetime.datetime(2024, 10, 30, 19, 41, 58, 864170))]"
-      ]
-     },
-     "execution_count": 34,
-     "metadata": {},
-     "output_type": "execute_result"
-    }
-   ],
-   "source": [
-    "delete_records"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "74d445d4-19e5-425d-90cb-a34f81483bfc",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "extraction_dataset.records.delete(delete_records)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "66856b02-ff96-4596-8525-b12be976da2e",
-   "metadata": {},
-   "source": [
-    "# Updating existing records"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "3fbbf92a-2d4f-44b2-b007-e60695e73268",
-   "metadata": {},
-   "source": [
-    "### Delete records by reference"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "0783d2e8-9c4d-4f2e-b4f4-94430234d204",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# record_updates = []\n",
-    "# for record in preprocessing_dataset.filter_by(metadata_filters=rg.TermsMetadataFilter(name='reference', values=['whopes2008report'])).records:\n",
-    "#     record_updates.append(record)\n",
-    "# len(record_updates)"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "adfe3ee6-7b95-4c98-8933-bb03293e43b8",
-   "metadata": {},
-   "outputs": [],
-   "source": [
-    "# preprocessing_dataset.records.delete(record_updates)"
-   ]
-  },
-  {
-   "cell_type": "markdown",
-   "id": "258bb5f0",
-   "metadata": {},
-   "source": [
-    "### Update record metadata for some references"
-   ]
-  },
-  {
-   "cell_type": "code",
-   "execution_count": null,
-   "id": "c2c048a3",
-   "metadata": {},
-   "outputs": [
-    {
-     "data": {
-      "text/html": [
-       "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Mendeley Reference KeyMeasured_outcomeApprox_num_rowsTables_countNotes_on_approx_num_rowsCheck_out_byCheck_in_byNeeds_digitizationNotes_on_extractiontitle...issnpmiddoicollectionsfile_idmime_typefile_namesizefilehashfile_path
reference
terlouw2010impactTerlouw2010Incidence64Also a good calibration comparisonNoneNoneNoneNoneImpact of mass distribution of free long-lasti......14752875None10.1186/1475-2875-9-199[Human Health Outcomes]6fb4e3d6-9255-4851-569e-a1e5541788a8application/pdfterlouw2010impact.pdf86769287ee2c18418661d5fe7a1493ce25d9650d7fa45ddata/pdf/terlouw2010impact.pdf
tokponnon2014impactTokponnon2014Incidence and Prevalence46NoneNoneNoneNoneNoneImpact of long-lasting, insecticidal nets on a......14752875None10.1186/1475-2875-13-76[Entomological Outcomes, Human Health Outcomes]4f4bb455-b9b2-e3d3-43d2-127e3fd6edf8application/pdfTokponnon_et_al_2014_Mal_J.pdf109219158ee5a6fa350ff703f5cf58aeb4f4b5c2398cb85data/pdf/Tokponnon_et_al_2014_Mal_J.pdf
pinder2015efficacyPinder2015Incidence & Prevalence~102,4NoneNoneNoneNoneJosh: this study is comparing ITN to ITN+IRS. ...Efficacy of indoor residual spraying with dich......1474-547X (Electronic)2549884710.1016/S0140-6736(14)61007-2[Human Health Outcomes]75f3a17c-758e-e557-1418-91e3c2272c14application/pdfPinder_et_al_2015_Lancet.pdf5973946ef33d0382608d35470c5d4ac5e3ffc7e6e7f242data/pdf/Pinder_et_al_2015_Lancet.pdf
\n", - "

3 rows × 32 columns

\n", - "
" - ], - "text/plain": [ - " Mendeley Reference Key Measured_outcome \\\n", - "reference \n", - "terlouw2010impact Terlouw2010 Incidence \n", - "tokponnon2014impact Tokponnon2014 Incidence and Prevalence \n", - "pinder2015efficacy Pinder2015 Incidence & Prevalence \n", - "\n", - " Approx_num_rows Tables_count \\\n", - "reference \n", - "terlouw2010impact 6 4 \n", - "tokponnon2014impact 4 6 \n", - "pinder2015efficacy ~10 2,4 \n", - "\n", - " Notes_on_approx_num_rows Check_out_by \\\n", - "reference \n", - "terlouw2010impact Also a good calibration comparison None \n", - "tokponnon2014impact None None \n", - "pinder2015efficacy None None \n", - "\n", - " Check_in_by Needs_digitization \\\n", - "reference \n", - "terlouw2010impact None None \n", - "tokponnon2014impact None None \n", - "pinder2015efficacy None None \n", - "\n", - " Notes_on_extraction \\\n", - "reference \n", - "terlouw2010impact None \n", - "tokponnon2014impact None \n", - "pinder2015efficacy Josh: this study is comparing ITN to ITN+IRS. ... \n", - "\n", - " title ... \\\n", - "reference ... \n", - "terlouw2010impact Impact of mass distribution of free long-lasti... ... \n", - "tokponnon2014impact Impact of long-lasting, insecticidal nets on a... ... \n", - "pinder2015efficacy Efficacy of indoor residual spraying with dich... ... \n", - "\n", - " issn pmid \\\n", - "reference \n", - "terlouw2010impact 14752875 None \n", - "tokponnon2014impact 14752875 None \n", - "pinder2015efficacy 1474-547X (Electronic) 25498847 \n", - "\n", - " doi \\\n", - "reference \n", - "terlouw2010impact 10.1186/1475-2875-9-199 \n", - "tokponnon2014impact 10.1186/1475-2875-13-76 \n", - "pinder2015efficacy 10.1016/S0140-6736(14)61007-2 \n", - "\n", - " collections \\\n", - "reference \n", - "terlouw2010impact [Human Health Outcomes] \n", - "tokponnon2014impact [Entomological Outcomes, Human Health Outcomes] \n", - "pinder2015efficacy [Human Health Outcomes] \n", - "\n", - " file_id mime_type \\\n", - "reference \n", - "terlouw2010impact 6fb4e3d6-9255-4851-569e-a1e5541788a8 application/pdf \n", - "tokponnon2014impact 4f4bb455-b9b2-e3d3-43d2-127e3fd6edf8 application/pdf \n", - "pinder2015efficacy 75f3a17c-758e-e557-1418-91e3c2272c14 application/pdf \n", - "\n", - " file_name size \\\n", - "reference \n", - "terlouw2010impact terlouw2010impact.pdf 867692 \n", - "tokponnon2014impact Tokponnon_et_al_2014_Mal_J.pdf 1092191 \n", - "pinder2015efficacy Pinder_et_al_2015_Lancet.pdf 597394 \n", - "\n", - " filehash \\\n", - "reference \n", - "terlouw2010impact 87ee2c18418661d5fe7a1493ce25d9650d7fa45d \n", - "tokponnon2014impact 58ee5a6fa350ff703f5cf58aeb4f4b5c2398cb85 \n", - "pinder2015efficacy 6ef33d0382608d35470c5d4ac5e3ffc7e6e7f242 \n", - "\n", - " file_path \n", - "reference \n", - "terlouw2010impact data/pdf/terlouw2010impact.pdf \n", - "tokponnon2014impact data/pdf/Tokponnon_et_al_2014_Mal_J.pdf \n", - "pinder2015efficacy data/pdf/Pinder_et_al_2015_Lancet.pdf \n", - "\n", - "[3 rows x 32 columns]" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "papers.loc[references]" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5c2f9768", - "metadata": {}, - "outputs": [], - "source": [ - "references = ['terlouw2010impact', 'tokponnon2014impact', 'pinder2015efficacy']\n", - "\n", - "record_updates = []\n", - "for record in tqdm(extraction_dataset.filter_by(\n", - " metadata_filters=rg.TermsMetadataFilter(name='reference', values=references)).records):\n", - " reference = record.metadata['reference']\n", - " schema_name = record.metadata['type']\n", - "\n", - " if record.metadata['pmid'] != papers.loc[reference].get('pmid'):\n", - " record.metadata['pmid'] = papers.loc[reference].get('pmid')\n", - " print(\"Check it's correct: \", record.metadata)\n", - " record_updates.append(record)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "447421bf", - "metadata": {}, - "outputs": [], - "source": [ - "extraction_dataset.records.update(record_updates)" - ] - }, - { - "cell_type": "markdown", - "id": "370e79a8-9ed3-498e-96a0-d40ef64c3149", - "metadata": {}, - "source": [ - "### Update Document pmid, doi, and doc_id references" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "797f547a-9615-4949-a3e7-f5f026dc8108", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "record_updates = []\n", - "for record in papers_dataset.records:\n", - " if len(record_updates) == 1: \n", - " print(record.metadata)\n", - " reference = record.metadata['reference']\n", - "\n", - " doc_id = papers.loc[reference, 'id']\n", - " if 'doc_id' not in record.metadata or record.metadata['doc_id'] != doc_id:\n", - " record.metadata['doc_id'] = doc_id\n", - " \n", - " record_updates.append(record)\n", - "len(record_updates)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "bac96980-eea4-4f28-a87a-f0450b6bb4c7", - "metadata": {}, - "outputs": [], - "source": [ - "papers_dataset.records.update(record_updates)" - ] - }, - { - "cell_type": "markdown", - "id": "eadd7331-49b2-401c-8a11-1f8484ceb6cc", - "metadata": { - "scrolled": true - }, - "source": [ - "# Create the `2-Data-Extractions` dataset, if it isn't already created" - ] - }, - { - "cell_type": "markdown", - "id": "c4a8f662-9adc-4286-8ba9-6197d0dc1e83", - "metadata": {}, - "source": [ - "### Extraction dataset" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "45caae42-8efa-4ef3-a9f5-5600a470667b", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/html": [ - "
[06/20/24 16:29:19] INFO     INFO:argilla.client.feedback.dataset.local.mixins:✓ Dataset succesfully  mixins.py:306\n",
-       "                             pushed to Argilla                                                                     \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m[06/20/24 16:29:19]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m INFO:argilla.client.feedback.dataset.local.mixins:✓ Dataset succesfully \u001b]8;id=762461;file:///Users/jonnytr/Projects/argilla-data-extraction/argilla/src/argilla/client/feedback/dataset/local/mixins.py\u001b\\\u001b[2mmixins.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=533519;file:///Users/jonnytr/Projects/argilla-data-extraction/argilla/src/argilla/client/feedback/dataset/local/mixins.py#306\u001b\\\u001b[2m306\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m pushed to Argilla \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" }, - { - "data": { - "text/html": [ - "
                    INFO     INFO:argilla.client.feedback.dataset.local.mixins:RemoteFeedbackDataset( mixins.py:307\n",
-       "                                id=8c51f5e3-25bb-4141-b716-04ce92b208e2                                            \n",
-       "                                name=2-Data-Extractions                                                            \n",
-       "                                workspace=Workspace(id=45eab76f-4d5a-4fb9-a9d2-6e7323bdf08a,                       \n",
-       "                             name=itn-recalibration-scratch, inserted_at=2024-06-20 23:21:44.734369,               \n",
-       "                             updated_at=2024-06-20 23:21:44.734369)                                                \n",
-       "                                url=http://10.24.49.60/dataset/8c51f5e3-25bb-4141-b716-04ce92b208e2/a              \n",
-       "                             nnotation-mode                                                                        \n",
-       "                                fields=[RemoteTextField(id=UUID('7e322bdd-4a02-476d-994b-f9e22b879e8f              \n",
-       "                             '), client=None, name='metadata', title='Extraction steps:',                          \n",
-       "                             required=False, type='text', use_markdown=True, use_table=False),                     \n",
-       "                             RemoteTextField(id=UUID('62cc925a-c5c6-4446-8dd8-8c75dcfb4256'),                      \n",
-       "                             client=None, name='extraction', title='Extracted data:', required=True,               \n",
-       "                             type='text', use_markdown=False, use_table=True),                                     \n",
-       "                             RemoteTextField(id=UUID('3ac56bd6-a5b3-4b53-9882-92db06c58faa'),                      \n",
-       "                             client=None, name='context', title='Relevant attributions (predicted by               \n",
-       "                             RAG):', required=False, type='text', use_markdown=True,                               \n",
-       "                             use_table=False)]                                                                     \n",
-       "                                questions=[RemoteMultiLabelQuestion(id=UUID('ca859c1e-113f-4afc-a116-              \n",
-       "                             ebb867138f39'), client=None, name='context-relevant', title='Which of                 \n",
-       "                             the document section(s) attributed to this data extraction table?',                   \n",
-       "                             description='Please identify which section in the source PDF the data                 \n",
-       "                             extract came from, and select the matching section header(s) in this                  \n",
-       "                             multi-selection list.', required=True, type='multi_label_selection',                  \n",
-       "                             labels=['Not listed'], visible_labels=None,                                           \n",
-       "                             labels_order=<LabelsOrder.natural: 'natural'>),                                       \n",
-       "                             RemoteMultiLabelQuestion(id=UUID('c709ffd5-bcba-4366-a46d-40bf31c81da1')              \n",
-       "                             , client=None, name='extraction-source', title='Where did the extracted               \n",
-       "                             data primarily came from?', description=None, required=True,                          \n",
-       "                             type='multi_label_selection', labels=['Text', 'Table', 'Figure'],                     \n",
-       "                             visible_labels=None, labels_order=<LabelsOrder.natural: 'natural'>),                  \n",
-       "                             RemoteTextQuestion(id=UUID('3e53c996-6d44-4e7c-ae6e-4cb96c029ad2'),                   \n",
-       "                             client=None, name='extraction-correction', title='Provide a correction                \n",
-       "                             to the extracted data:', description=None, required=False, type='text',               \n",
-       "                             use_markdown=False, use_table=True),                                                  \n",
-       "                             RemoteTextQuestion(id=UUID('b1f3e200-a437-42b5-9db1-45857dac1473'),                   \n",
-       "                             client=None, name='notes', title='Mention any notes here to record any                \n",
-       "                             special case or to justify decisions made in the extraction.',                        \n",
-       "                             description=None, required=False, type='text', use_markdown=True,                     \n",
-       "                             use_table=False)]                                                                     \n",
-       "                                documents=None                                                                     \n",
-       "                                guidelines=None                                                                    \n",
-       "                                metadata_properties=[RemoteTermsMetadataProperty(id=UUID('b442012c-57              \n",
-       "                             63-4615-b759-094487f245e3'), client=<httpx.Client object at                           \n",
-       "                             0x31d2272b0>, name='reference', title='Reference',                                    \n",
-       "                             visible_for_annotators=True, type='terms', values=None),                              \n",
-       "                             RemoteTermsMetadataProperty(id=UUID('ddcf9932-2602-46cf-bc59-0d9924d7adf              \n",
-       "                             0'), client=<httpx.Client object at 0x31d2272b0>, name='type',                        \n",
-       "                             title='Question Type', visible_for_annotators=True, type='terms',                     \n",
-       "                             values=None),                                                                         \n",
-       "                             RemoteTermsMetadataProperty(id=UUID('46931ecd-1853-44a0-8b34-a15f332531c              \n",
-       "                             3'), client=<httpx.Client object at 0x31d2272b0>, name='pmid',                        \n",
-       "                             title='Document Pubmed ID', visible_for_annotators=True, type='terms',                \n",
-       "                             values=None),                                                                         \n",
-       "                             RemoteTermsMetadataProperty(id=UUID('a2e6215a-ea19-42bc-a0f4-60ec86b4a88              \n",
-       "                             b'), client=<httpx.Client object at 0x31d2272b0>, name='doc_id',                      \n",
-       "                             title='Document ID', visible_for_annotators=False, type='terms',                      \n",
-       "                             values=None),                                                                         \n",
-       "                             RemoteTermsMetadataProperty(id=UUID('5499c947-0e23-4c70-8884-9ae73e8811e              \n",
-       "                             8'), client=<httpx.Client object at 0x31d2272b0>, name='annotators',                  \n",
-       "                             title='Annotators', visible_for_annotators=True, type='terms',                        \n",
-       "                             values=None)]                                                                         \n",
-       "                                vectors_settings=[]                                                                \n",
-       "                             )                                                                                     \n",
-       "
\n" - ], - "text/plain": [ - "\u001b[2;36m \u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m INFO:argilla.client.feedback.dataset.local.mixins:\u001b[1;35mRemoteFeedbackDataset\u001b[0m\u001b[1m(\u001b[0m \u001b]8;id=698971;file:///Users/jonnytr/Projects/argilla-data-extraction/argilla/src/argilla/client/feedback/dataset/local/mixins.py\u001b\\\u001b[2mmixins.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=347992;file:///Users/jonnytr/Projects/argilla-data-extraction/argilla/src/argilla/client/feedback/dataset/local/mixins.py#307\u001b\\\u001b[2m307\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m \u001b[33mid\u001b[0m=\u001b[93m8c51f5e3\u001b[0m\u001b[93m-25bb-4141-b716-04ce92b208e2\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mname\u001b[0m=\u001b[1;36m2\u001b[0m-Data-Extractions \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mworkspace\u001b[0m=\u001b[1;35mWorkspace\u001b[0m\u001b[1m(\u001b[0m\u001b[33mid\u001b[0m=\u001b[93m45eab76f\u001b[0m\u001b[93m-4d5a-4fb9-a9d2-6e7323bdf08a\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mname\u001b[0m=\u001b[35mitn\u001b[0m-recalibration-scratch, \u001b[33minserted_at\u001b[0m=\u001b[1;36m2024\u001b[0m-\u001b[1;36m06\u001b[0m-\u001b[1;36m20\u001b[0m \u001b[1;92m23:21:44\u001b[0m.\u001b[1;36m734369\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mupdated_at\u001b[0m=\u001b[1;36m2024\u001b[0m-\u001b[1;36m06\u001b[0m-\u001b[1;36m20\u001b[0m \u001b[1;92m23:21:44\u001b[0m.\u001b[1;36m734369\u001b[0m\u001b[1m)\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33murl\u001b[0m=\u001b[4;94mhttp\u001b[0m\u001b[4;94m://10.24.49.60/dataset/8c51f5e3-25bb-4141-b716-04ce92b208e2/a\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[4;94mnnotation-mode\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mfields\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;35mRemoteTextField\u001b[0m\u001b[1m(\u001b[0m\u001b[33mid\u001b[0m=\u001b[1;35mUUID\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'7e322bdd-4a02-476d-994b-f9e22b879e8f\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32m'\u001b[0m\u001b[1m)\u001b[0m, \u001b[33mclient\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mname\u001b[0m=\u001b[32m'metadata'\u001b[0m, \u001b[33mtitle\u001b[0m=\u001b[32m'Extraction steps:'\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mrequired\u001b[0m=\u001b[3;91mFalse\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'text'\u001b[0m, \u001b[33muse_markdown\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[33muse_table\u001b[0m=\u001b[3;91mFalse\u001b[0m\u001b[1m)\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTextField\u001b[0m\u001b[1m(\u001b[0m\u001b[33mid\u001b[0m=\u001b[1;35mUUID\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'62cc925a-c5c6-4446-8dd8-8c75dcfb4256'\u001b[0m\u001b[1m)\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mclient\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mname\u001b[0m=\u001b[32m'extraction'\u001b[0m, \u001b[33mtitle\u001b[0m=\u001b[32m'Extracted data:'\u001b[0m, \u001b[33mrequired\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mtype\u001b[0m=\u001b[32m'text'\u001b[0m, \u001b[33muse_markdown\u001b[0m=\u001b[3;91mFalse\u001b[0m, \u001b[33muse_table\u001b[0m=\u001b[3;92mTrue\u001b[0m\u001b[1m)\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTextField\u001b[0m\u001b[1m(\u001b[0m\u001b[33mid\u001b[0m=\u001b[1;35mUUID\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'3ac56bd6-a5b3-4b53-9882-92db06c58faa'\u001b[0m\u001b[1m)\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mclient\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mname\u001b[0m=\u001b[32m'context'\u001b[0m, \u001b[33mtitle\u001b[0m=\u001b[32m'Relevant attributions \u001b[0m\u001b[32m(\u001b[0m\u001b[32mpredicted by \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32mRAG\u001b[0m\u001b[32m)\u001b[0m\u001b[32m:'\u001b[0m, \u001b[33mrequired\u001b[0m=\u001b[3;91mFalse\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'text'\u001b[0m, \u001b[33muse_markdown\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33muse_table\u001b[0m=\u001b[3;91mFalse\u001b[0m\u001b[1m)\u001b[0m\u001b[1m]\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mquestions\u001b[0m=\u001b[1m[\u001b[0m\u001b[1;35mRemoteMultiLabelQuestion\u001b[0m\u001b[1m(\u001b[0m\u001b[33mid\u001b[0m=\u001b[1;35mUUID\u001b[0m\u001b[1m(\u001b[0m\u001b[32m'ca859c1e-113f-4afc-a116-\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32mebb867138f39'\u001b[0m\u001b[1m)\u001b[0m, \u001b[33mclient\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[33mname\u001b[0m=\u001b[32m'context-relevant'\u001b[0m, \u001b[33mtitle\u001b[0m=\u001b[32m'Which of \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32mthe document section\u001b[0m\u001b[32m(\u001b[0m\u001b[32ms\u001b[0m\u001b[32m)\u001b[0m\u001b[32m attributed to this data extraction table?'\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mdescription\u001b[0m=\u001b[32m'Please identify which section in the source PDF the data \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32mextract came from, and select the matching section header\u001b[0m\u001b[32m(\u001b[0m\u001b[32ms\u001b[0m\u001b[32m)\u001b[0m\u001b[32m in this \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32mmulti-selection list.'\u001b[0m, \u001b[33mrequired\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'multi_label_selection'\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mlabels\u001b[0m=\u001b[1m[\u001b[0m\u001b[32m'Not listed'\u001b[0m\u001b[1m]\u001b[0m, \u001b[33mvisible_labels\u001b[0m=\u001b[3;35mNone\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mlabels_order\u001b[0m=\u001b[1m<\u001b[0m\u001b[1;95mLabelsOrder.natural:\u001b[0m\u001b[39m \u001b[0m\u001b[32m'natural'\u001b[0m\u001b[39m>\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteMultiLabelQuestion\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'c709ffd5-bcba-4366-a46d-40bf31c81da1'\u001b[0m\u001b[1;39m)\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'extraction-source'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Where did the extracted \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32mdata primarily came from?'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mdescription\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mrequired\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'multi_label_selection'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mlabels\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[32m'Text'\u001b[0m\u001b[39m, \u001b[0m\u001b[32m'Table'\u001b[0m\u001b[39m, \u001b[0m\u001b[32m'Figure'\u001b[0m\u001b[1;39m]\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mvisible_labels\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mlabels_order\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTextQuestion\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'3e53c996-6d44-4e7c-ae6e-4cb96c029ad2'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mclient\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'extraction-correction'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Provide a correction \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32mto the extracted data:'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mdescription\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mrequired\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'text'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33muse_markdown\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m, \u001b[0m\u001b[33muse_table\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTextQuestion\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'b1f3e200-a437-42b5-9db1-45857dac1473'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mclient\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'notes'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Mention any notes here to record any \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32mspecial case or to justify decisions made in the extraction.'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mdescription\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[39m, \u001b[0m\u001b[33mrequired\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'text'\u001b[0m\u001b[39m, \u001b[0m\u001b[33muse_markdown\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33muse_table\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[1;39m)\u001b[0m\u001b[1;39m]\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[39m \u001b[0m\u001b[33mdocuments\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[39m \u001b[0m\u001b[33mguidelines\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[39m \u001b[0m\u001b[33mmetadata_properties\u001b[0m\u001b[39m=\u001b[0m\u001b[1;39m[\u001b[0m\u001b[1;35mRemoteTermsMetadataProperty\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'b442012c-57\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32m63-4615-b759-094487f245e3'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'reference'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Reference'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mvisible_for_annotators\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'terms'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mvalues\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTermsMetadataProperty\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'ddcf9932-2602-46cf-bc59-0d9924d7adf\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32m0'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'type'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Question Type'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mvisible_for_annotators\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'terms'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mvalues\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTermsMetadataProperty\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'46931ecd-1853-44a0-8b34-a15f332531c\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32m3'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'pmid'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Document Pubmed ID'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mvisible_for_annotators\u001b[0m\u001b[39m=\u001b[0m\u001b[3;92mTrue\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'terms'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mvalues\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTermsMetadataProperty\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'a2e6215a-ea19-42bc-a0f4-60ec86b4a88\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32mb'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=, \u001b[0m\u001b[33mname\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'doc_id'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mtitle\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'Document ID'\u001b[0m\u001b[39m, \u001b[0m\u001b[33mvisible_for_annotators\u001b[0m\u001b[39m=\u001b[0m\u001b[3;91mFalse\u001b[0m\u001b[39m, \u001b[0m\u001b[33mtype\u001b[0m\u001b[39m=\u001b[0m\u001b[32m'terms'\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mvalues\u001b[0m\u001b[39m=\u001b[0m\u001b[3;35mNone\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1;35mRemoteTermsMetadataProperty\u001b[0m\u001b[1;39m(\u001b[0m\u001b[33mid\u001b[0m\u001b[39m=\u001b[0m\u001b[1;35mUUID\u001b[0m\u001b[1;39m(\u001b[0m\u001b[32m'5499c947-0e23-4c70-8884-9ae73e8811e\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[32m8'\u001b[0m\u001b[1;39m)\u001b[0m\u001b[39m, \u001b[0m\u001b[33mclient\u001b[0m\u001b[39m=\u001b[0m, \u001b[33mname\u001b[0m=\u001b[32m'annotators'\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mtitle\u001b[0m=\u001b[32m'Annotators'\u001b[0m, \u001b[33mvisible_for_annotators\u001b[0m=\u001b[3;92mTrue\u001b[0m, \u001b[33mtype\u001b[0m=\u001b[32m'terms'\u001b[0m, \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mvalues\u001b[0m=\u001b[3;35mNone\u001b[0m\u001b[1m)\u001b[0m\u001b[1m]\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[33mvectors_settings\u001b[0m=\u001b[1m[\u001b[0m\u001b[1m]\u001b[0m \u001b[2m \u001b[0m\n", - "\u001b[2;36m \u001b[0m \u001b[1m)\u001b[0m \u001b[2m \u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "# rg.Workspace.create('llm_extraction')\n", - "\n", - "llm_extraction_dataset = rg.FeedbackDataset(\n", - " fields=[\n", - " rg.TextField(name=\"metadata\", title=\"Extraction steps:\", required=False, use_markdown=True),\n", - " rg.TextField(name=\"extraction\", title=\"Extracted data:\", required=True, use_table=True),\n", - " rg.TextField(name=\"context\", title=\"Relevant attributions (predicted by RAG):\", required=False, use_markdown=True),\n", - " ],\n", - " questions =[\n", - " rg.MultiLabelQuestion(\n", - " name=\"context-relevant\",\n", - " title=\"Which of the document section(s) attributed to this data extraction table?\",\n", - " description=\"Please identify which section in the source PDF the data extract came from, and select the matching section header(s) in this multi-selection list.\",\n", - " type=\"dynamic_multi_label_selection\",\n", - " labels=['Not listed'],\n", - " required=True,\n", - " ),\n", - " rg.MultiLabelQuestion(\n", - " name=\"extraction-source\",\n", - " title=\"Where did the extracted data primarily came from?\",\n", - " labels=[\"Text\", \"Table\", \"Figure\"],\n", - " required=True,\n", - " ),\n", - " rg.TextQuestion(\n", - " name=\"extraction-correction\",\n", - " title=\"Provide a correction to the extracted data:\",\n", - " required=False,\n", - " use_table=True,\n", - " ),\n", - " rg.TextQuestion(\n", - " name=\"notes\",\n", - " title=\"Mention any notes here to record any special case or to justify decisions made in the extraction.\",\n", - " required=False,\n", - " use_markdown=True,\n", - " ),\n", - " ],\n", - " metadata_properties=[\n", - " rg.TermsMetadataProperty(\n", - " name=\"reference\",\n", - " title=\"Reference\",\n", - " visible_for_annotators=True),\n", - " rg.TermsMetadataProperty(\n", - " name=\"type\",\n", - " title=\"Question Type\",\n", - " visible_for_annotators=True),\n", - " rg.TermsMetadataProperty(\n", - " name=\"pmid\",\n", - " title=\"Document Pubmed ID\",\n", - " visible_for_annotators=True),\n", - " rg.TermsMetadataProperty(\n", - " name=\"doc_id\",\n", - " title=\"Document ID\",\n", - " visible_for_annotators=False),\n", - " rg.TermsMetadataProperty(\n", - " name=\"annotators\",\n", - " title=\"Annotators\",\n", - " visible_for_annotators=True),\n", - " ],\n", - ")\n", - "\n", - "llm_extraction_dataset = llm_extraction_dataset.push_to_argilla(\n", - " name=\"2-Data-Extractions\", \n", - " workspace=\"itn-recalibration-scratch\")" - ] - }, - { - "cell_type": "markdown", - "id": "041844f4-8e44-4319-8f34-5aad09437bb2", - "metadata": {}, - "source": [ - "### Review dataset" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5cccb19c-3af5-401f-852a-0e25b8d33514", - "metadata": {}, - "outputs": [], - "source": [ - "review_dataset = rg.FeedbackDataset(\n", - " fields=[\n", - " rg.TextField(name=\"metadata\", title=\"Metadata:\", required=False, use_markdown=True),\n", - " rg.TextField(name=\"extractions\", title=\"Extractions:\", required=True, use_markdown=True),\n", - " rg.TextField(name=\"metrics\", title=\"Evaluation metrics:\", required=False, use_markdown=True),\n", - " rg.TextField(name=\"alignment\", title=\"GriTS table alignment between gold-standard and LLM+Manual extractions, showing the longest common sequence (LCS) between matched data cells that were used to calculate the Precision and Recall\", \n", - " required=False, use_markdown=True),\n", - " ],\n", - " questions =[\n", - " rg.LabelQuestion(\n", - " name=\"context-relevant\",\n", - " title=\"Did the evaluation metrics correspond qualitatively with the concordance between the gold-standard and putative extractions?\",\n", - " labels=['Yes', 'No'],\n", - " required=True,\n", - " ),\n", - " rg.TextQuestion(\n", - " name=\"notes\",\n", - " title=\"Mention any notes:\",\n", - " required=False,\n", - " use_markdown=True,\n", - " ),\n", - " ],\n", - " metadata_properties=[\n", - " rg.TermsMetadataProperty(\n", - " name=\"reference\",\n", - " title=\"Reference\",\n", - " visible_for_annotators=True),\n", - " rg.TermsMetadataProperty(\n", - " name=\"type\",\n", - " title=\"Question Type\",\n", - " visible_for_annotators=True),\n", - " rg.TermsMetadataProperty(\n", - " name=\"pmid\",\n", - " title=\"Document Pubmed ID\",\n", - " visible_for_annotators=True),\n", - " rg.TermsMetadataProperty(\n", - " name=\"doc_id\",\n", - " title=\"Document ID\",\n", - " visible_for_annotators=False),\n", - " rg.TermsMetadataProperty(\n", - " name=\"annotators\",\n", - " title=\"Annotators\",\n", - " visible_for_annotators=True),\n", - " ],\n", - ")\n", - "\n", - "review_dataset = review_dataset.push_to_argilla(\n", - " name=\"Review-Evaluations\", \n", - " workspace=\"auto-extraction\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f4b95e87-74c2-493c-8fb7-59b86e334571", - "metadata": {}, - "outputs": [], - "source": [ - "test_dataset = rg.FeedbackDataset(\n", - " fields=[\n", - " rg.TextField(name=\"alignment\",\n", - " required=True, use_markdown=True),\n", - " ],\n", - " questions =[\n", - " rg.LabelQuestion(\n", - " name=\"context-relevant\",\n", - " title=\"Did the evaluation metrics correspond qualitatively with the concordance between the gold-standard and putative extractions?\",\n", - " labels=['Yes', 'No'],\n", - " type='dynamic_label_selection', visible_labels=3,\n", - " required=True,\n", - " ),\n", - " rg.MultiLabelQuestion(\n", - " name=\"segment\",\n", - " title=\"Test\",\n", - " type='dynamic_multi_label_selection', visible_labels=3,\n", - " labels=[],\n", - " required=True,\n", - " ),\n", - " rg.TextQuestion(\n", - " name=\"notes\",\n", - " title=\"Mention any notes:\",\n", - " required=False,\n", - " use_markdown=True,\n", - " ),\n", - " ],\n", - ")\n", - "\n", - "test_dataset = test_dataset.push_to_argilla(\n", - " name=\"Test\", \n", - " workspace=\"auto-extraction\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "86da8a0d-b2b6-4355-b8cd-dac7f33a79db", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.19" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/examples/document_extraction/PDF_preprocessing.ipynb b/examples/document_extraction/PDF_preprocessing.ipynb index 34703b5aa..25b85618e 100644 --- a/examples/document_extraction/PDF_preprocessing.ipynb +++ b/examples/document_extraction/PDF_preprocessing.ipynb @@ -1,2908 +1,2908 @@ { - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "id": "f089250a-b770-4cd2-a7ac-9dcc4a42775b", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f089250a-b770-4cd2-a7ac-9dcc4a42775b", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "%load_ext autoreload\n", + "%autoreload 2\n", + "# %load_ext heat" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "e21edbd0-c479-48db-b53d-becdf0cd060b", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# %%heat\n", + "from collections import defaultdict, Counter\n", + "import requests, json, rich, re, os, sys, unicodedata, io, hashlib, glob, collections\n", + "from IPython.display import IFrame, HTML, Image, JSON\n", + "from functools import partial\n", + "from tqdm.auto import tqdm\n", + "from pathlib import Path\n", + "from dotenv import load_dotenv\n", + "load_dotenv()\n", + "# sys.path.insert(0, 'src')\n", + "\n", + "import plotly.express as px\n", + "import pandas as pd\n", + "import numpy as np\n", + "\n", + "import argilla as rg\n", + "from argilla.client.feedback.schemas.enums import ResponseStatusFilter\n", + "from argilla.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor\n", + "from argilla.client.feedback.utils import create_token_highlights, audio_to_html, image_to_html, video_to_html\n", + "from argilla.client.feedback.utils import assign_records, assign_workspaces\n", + "\n", + "from pdf2image import convert_from_path\n", + "\n", + "import deepdoctection as dd\n", + "from unstructured.staging.argilla import stage_for_argilla\n", + "from llmsherpa.readers import LayoutPDFReader\n", + "\n", + "from extralit.extraction.models.paper import PaperExtraction, SchemaStructure\n", + "from extralit.preprocessing.methods import unstructured as unstructured \n", + "from extralit.preprocessing.methods import llmsherpa as llmsherpa\n", + "from extralit.preprocessing.methods import nougat as nougat\n", + "from extralit.preprocessing.segment import Segments, FigureSegment\n", + "from extralit.preprocessing.merge_segments import merge_extractions\n", + "from extralit.preprocessing.document import *\n", + "from extralit.convert.json_table import json_to_df, df_to_json\n", + "from extralit.convert.html_table import html_table_to_json\n", + "from extralit.convert.text import remove_markdown_from_string\n", + "from extralit.pipeline.ingest.record import get_record_data\n", + "from extralit.metrics.extraction import grits_from_pandas, grits_multi_tables\n", + "\n", + "from extralit.server.context.vectordb import get_weaviate_client\n", + "\n", + "os.environ[\"PYTORCH_MPS_HIGH_WATERMARK_RATIO\"] = \"0.0\"\n", + "pd.set_option('display.max_rows', 100)\n", + "pd.set_option('display.width', 1500)\n", + "pd.set_option('max_colwidth', 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "cb9cbd73-436b-4a54-8d20-4fa8bc6abc22", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/yg/6jm_z4c91d30k5l7hm3s7h580000gp/T/ipykernel_75182/2468869230.py:9: ResourceWarning: unclosed \n", + " weaviate_client = get_weaviate_client()\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n" + ] + } + ], + "source": [ + "import weaviate\n", + "from extralit.extraction.vector_store import WeaviateVectorStore\n", + "from llama_index.core.vector_stores import (\n", + " MetadataFilter,\n", + " MetadataFilters,\n", + " FilterOperator, ExactMatchFilter,\n", + ")\n", + "\n", + "weaviate_client = get_weaviate_client()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "9797f734-e7cc-4dd7-87ef-7c66172d31e9", + "metadata": {}, + "outputs": [], + "source": [ + "from llama_index.core import set_global_handler, Settings, callbacks, PromptTemplate\n", + "### comment out langfuse code \n", + "# import langfuse\n", + "# from langfuse.llama_index import LlamaIndexCallbackHandler\n", + "\n", + "# langfuse_callback_handler = LlamaIndexCallbackHandler(\n", + "# public_key=os.environ['LANGFUSE_PUBLIC_KEY'],\n", + "# secret_key=os.environ['LANGFUSE_SECRET_KEY'],\n", + "# host=os.environ['LANGFUSE_HOST'],\n", + "# )\n", + "# if not Settings.callback_manager.handlers:\n", + "# Settings.callback_manager.add_handler(langfuse_callback_handler)\n", + "# set_global_handler(\"langfuse\")\n", + "\n", + "# Ensure the global handler is NOT set to langfuse\n", + "set_global_handler(\"simple\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7a4383b3-540a-4080-88ba-216cbccd9282", + "metadata": {}, + "outputs": [], + "source": [ + "client = ex.init(\n", + " api_url='http://10.24.49.60/',\n", + " api_key=\"386a5806-0182-41f6-8076-f4b557818f0b\",\n", + " workspace='preprocessing',\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "bcd39e63-cf3d-400a-a450-2701c4e15832", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "[UserModel(id=6d8ee721-49b7-4d1f-bf4c-d6b0eb187c62, first_name=Jonny, last_name=Tran, full_name=Jonny Tran, username=jonnytr, role=admin, workspaces=['jonnytr', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing', 'itn-recalibration-scratch'], inserted_at=2024-01-11 01:48:44.477722, updated_at=2024-03-22 06:56:39.809768),\n", + " UserModel(id=e96c9d89-36f4-4240-a592-9734087371d3, first_name=Amelia, last_name=Bertozzi-Villa, full_name=Amelia Bertozzi-Villa, username=ameliabv, role=admin, workspaces=['ameliabv', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing', 'itn-recalibration-scratch'], inserted_at=2024-01-11 01:48:44.549157, updated_at=2024-03-22 06:56:39.815293),\n", + " UserModel(id=91b12ed4-2aff-46d6-9eb3-c15d44e00e2a, first_name=Kate, last_name=Battle, full_name=Kate Battle, username=kateb, role=admin, workspaces=['kateb', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing', 'itn-recalibration-scratch'], inserted_at=2024-01-11 01:48:44.553978, updated_at=2024-03-22 06:56:39.820769)]" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "remote_dataset = ex.FeedbackDataset.from_argilla(name=\"Table-Preprocessing\", workspace=\"itn-recalibration\")\n", + "\n", + "users = ex.Workspace.from_name('itn-recalibration').users\n", + "users_id_to_username = {u.id: u.username for u in users}\n", + "users" + ] + }, + { + "cell_type": "markdown", + "id": "17374647-df33-4aab-9827-0162e5b522ae", + "metadata": {}, + "source": [ + "# Load papers" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "219e6dd1-cae3-461c-bdad-78a50ca38cac", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "(197, 32)" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "papers = pd.read_parquet('config/extraction_queue_197papers_2024-04-03.parquet')\n", + "extractions = pd.read_csv('data/processed/extractions_preJonny_cleaned.csv', index_col='reference')\n", + "\n", + "papers = papers.assign(collections=papers['collections'].map(', '.join))\n", + "\n", + "papers.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "3155d4ed-b741-4c93-9c35-eeb428f189b3", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# Upload PDFs if not already exist in the Argilla database\n", + "# for ref, paper in tqdm(papers.iterrows()):\n", + "# doc = remote_dataset.add_document(ex.Document.from_file(\n", + "# paper.file_path, reference=ref, pmid=paper.pmid, doi=paper.doi, id=paper.get('id')))" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "bda4d8fc-8814-4ae0-9145-7dc490ffe11c", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "bc52eb13e2f54ec1978013affd468883", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/670 [00:00, labels={'text-1': 'Method 1', 'text-2': 'Method 2', 'text-3': 'Method 3', 'text-4': 'Method 4', 'text-5': 'Method 5', 'none': 'None'}, visible_labels=None), MultiLabelQuestion(name='mismatched', title='Which of the method(s) extracted the wrong table/figure? (if any)', description='This indication helps in evaluating these models accuracy', required=False, type=, labels={'text-1': 'Method 1', 'text-2': 'Method 2', 'text-3': 'Method 3', 'text-4': 'Method 4', 'text-5': 'Method 5'}, visible_labels=None, labels_order=), TextQuestion(name='header-correction', title='Correct the table or figure title:', description=None, required=False, type='text', use_markdown=False, use_table=False), TextQuestion(name='text-correction', title='Correct the extracted data:', description=None, required=False, type='text', use_markdown=True, use_table=True), TextQuestion(name='notes', title='Mention any notes here', description=None, required=False, type='text', use_markdown=False, use_table=False)]\n", + " guidelines=None)\n", + " metadata_properties=[TermsMetadataProperty(name='reference', title='Reference', visible_for_annotators=True, type='terms', values=None), TermsMetadataProperty(name='page_number', title='Page Number', visible_for_annotators=True, type='terms', values=None), TermsMetadataProperty(name='number', title='Table/Figure Number', visible_for_annotators=True, type='terms', values=None), TermsMetadataProperty(name='type', title='Element type', visible_for_annotators=True, type='terms', values=None), TermsMetadataProperty(name='pmid', title='Document Pubmed ID', visible_for_annotators=True, type='terms', values=None), TermsMetadataProperty(name='doc_id', title='Document ID', visible_for_annotators=False, type='terms', values=None), FloatMetadataProperty(name='probability', title='Detection probability', visible_for_annotators=True, type='float', min=None, max=None), TermsMetadataProperty(name='annotators', title='annotators', visible_for_annotators=True, type='terms', values=None)])\n", + " vectors_settings=[])\n", + ")" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from extralit.pipeline.export.dataset import create_preprocessing_dataset\n", + "\n", + "dataset = create_preprocessing_dataset()\n", + "\n", + "remote_dataset = dataset.push_to_argilla(name=\"Table-Preprocessing\", workspace=\"itn-recalibration-scratch\")\n", + "\n", + "# Initialize the TextDescriptivesExtractor\n", + "# tde = TextDescriptivesExtractor(\n", + "# model=\"en\",\n", + "# metrics=['descriptive_stats'],\n", + "# fields=[\"text-1\"],\n", + "# visible_for_annotators=True,\n", + "# show_progress=True,\n", + "# )\n", + "\n", + "# pdf_reader = LayoutPDFReader(\"https://readers.llmsherpa.com/api/document/developer/parseDocument?renderFormat=all\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "049797df-0875-4c79-9cf3-71ceaa05a2ba", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "ac0ecee1-12ed-4e00-8f6f-b08e4716ccc5", + "metadata": {}, + "source": [ + "# Update dataset" + ] + }, + { + "cell_type": "markdown", + "id": "7fa5953a-be37-44b5-bcb4-3050c93c0f3f", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "## Choose papers queue" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "79eb1486-bc8a-4de8-82c0-ff72bfa155e1", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "text/plain": [ + "'verma2022laboratory.accrombessi2021assessing.ngufor2022comparative.gleave2021piperonyl.diouf2022evaluation.syme2021which.meiwald2022association.gichuki2021bioefficacy.kibondo2022influence.zahouli2023small.toe2018do.nash2021systematic.accrombessi2023efficacy.syme2022pyrethroid.menze2022experimental.gebremariam2021evaluation.briet2020physical.ibrahim2020exploring.mieguim2021insights'" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# papers_subset = ['Atieli2010effectgambiaeMalaria', Dabire2006personalpyrethroidsMalaria', 'Ochomo2017insecticidekenyaEmerging', 'Vatandoost2013washtestArthropod']\n", + "# papers_subset = ['Canning2023unwantedcountriesStudies', 'Tiruneh2020prevalencemetaanalysisPlos', 'Daley2018addressingintervention', 'Goodson2011changingafricaInfectious']\n", + "# papers_subset = ['ketoh2018efficacy', 'darriet2005pyrethoid', 'magesa1991trial', 'whopes2008report', 'quinones1998permethrin', 'kawada2014small', 'kawada2014preventive', 'randriamaherijaona2015do', 'kilian2011evidence',]\n", + "# papers_subset = ['mbogo1996impact', 'menze2020experimental', 'kitau2012species', 'kilian2008long', 'mnzava2001malaria', 'pmi2018senegal', 'hougard2003efficacy', 'pennetier2013efficacy',]\n", + "# papers_subset = ['whopes2007report', 'ngufor2016efficacy', 'okia2013bioefficacy', 'mosha2008comparative', 'quinones1997anopheles', 'ahoua2012status', 'sreehari2009wash', 'abdulla2005spatial', 'pmi2019nigeria', 'tan2016longitudinal',]\n", + "# papers_subset = ['pmi2019myanmar', 'wills2013physical', 'tokponnon2014impact', 'marchant2002socially', 'pinder2015efficacy', 'nevill1996insecticide', 'muller2006effects', 'terlouw2010impact', 'msuya1991trial', 'tungu2021efficacy',]\n", + "papers_subset = ['hamel2011combination', 'ter2003impact', 'moiroux2014human', 'schellenberg2001effect', 'tamari2020protective', 'yewhalaw2022experimental', 'tungu2021field', 'sanou2021insecticide', 'kouassi2020susceptibility', 'mulatier2019prior', \n", + " 'ngongang2022reduced', 'lorenz2020comparative', 'hien2021evidence', 'ngufor2020efficacy', 'sovi2022physical', 'adageba2022bio', 'githinji2020impact', 'grisales2021pyriproxyfen', 'tungu2021bio', 'tungu2021effectiveness',]\n", + "papers_subset = ['verma2022laboratory', 'accrombessi2021assessing', 'ngufor2022comparative', 'gleave2021piperonyl', 'diouf2022evaluation', 'syme2021which', 'meiwald2022association', 'gichuki2021bioefficacy', 'kibondo2022influence', 'zahouli2023small', 'toe2018do', 'nash2021systematic', 'accrombessi2023efficacy', 'syme2022pyrethroid', 'menze2022experimental', 'gebremariam2021evaluation', 'briet2020physical', 'ibrahim2020exploring', 'mieguim2021insights',]\n", + "'.'.join(papers_subset)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "decef88a-4506-4d65-8629-c5fc6e1921e2", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "Index(['verma2022laboratory', 'accrombessi2021assessing', 'ngufor2022comparative', 'gleave2021piperonyl', 'diouf2022evaluation', 'syme2021which', 'meiwald2022association', 'gichuki2021bioefficacy', 'kibondo2022influence', 'zahouli2023small', 'toe2018do', 'nash2021systematic', 'accrombessi2023efficacy', 'syme2022pyrethroid', 'menze2022experimental', 'gebremariam2021evaluation', 'briet2020physical', 'ibrahim2020exploring', 'mieguim2021insights'], dtype='object', name='reference')" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "papers_subset = papers.loc[papers_subset]\n", + "papers_subset.index" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "443939fc-8d9c-4c67-9ce2-79246b467b44", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(120, 32)" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "papers_subset = papers.loc[papers.index.difference(papers_uploaded)]\n", + "papers_subset.shape" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "85aee0d5-70a3-4892-9947-3655a49506d6", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "['abdella2009does',\n", + " 'abdulla2001impact',\n", + " 'abilio2015bio',\n", + " 'accrombessi2021assessing',\n", + " 'accrombessi2023efficacy',\n", + " 'agossa2014laboratory',\n", + " 'agossa2015impact',\n", + " 'akoton2018experimental',\n", + " 'allossogbe2017who',\n", + " 'alonso1993malaria',\n", + " 'anshebo2014estimation',\n", + " 'asidi2004experimental',\n", + " 'asidi2005experimental',\n", + " 'asidi2012loss',\n", + " 'awolola2014impact',\n", + " 'badolo2012experimental',\n", + " 'bayili2017evaluation',\n", + " 'bayili2019experimental',\n", + " 'birhanu2019bio',\n", + " 'bobanga2013field',\n", + " 'bogh1998permethrin',\n", + " 'boussougou2017physical',\n", + " 'briet2020physical',\n", + " 'camara2018efficacy',\n", + " 'chandre2010field',\n", + " 'chouaibou2006efficacy',\n", + " 'corbel2010field',\n", + " 'curtis2003insecticide',\n", + " 'dalessandro1995mortality',\n", + " 'darriet2011combining',\n", + " 'diouf2022evaluation',\n", + " 'djenontin2009managing',\n", + " 'djenontin2010indoor',\n", + " 'etang2004reduced',\n", + " 'etang2007preliminary',\n", + " 'etang2013evaluation',\n", + " 'etang2016when',\n", + " 'fadel2019combination',\n", + " 'fane2012anopheles',\n", + " 'gebremariam2021evaluation',\n", + " 'gichuki2021bioefficacy',\n", + " 'gleave2021piperonyl',\n", + " 'guillet2001combined',\n", + " 'hassan2008retention',\n", + " 'hauser2019ability',\n", + " 'hawley2003community',\n", + " 'henry2005protective',\n", + " 'hougard2002useful',\n", + " 'howard2000evidence',\n", + " 'hughes2020anopheles',\n", + " 'ibrahim2019high',\n", + " 'ibrahim2020exploring',\n", + " 'jones2012aging',\n", + " 'kawada2014small',\n", + " 'kibondo2022influence',\n", + " 'kilian2015field',\n", + " 'kolaczinski2000comparison',\n", + " 'kouassi2020susceptibility',\n", + " 'koudou2011efficacy',\n", + " 'kulkarni2007efficacy',\n", + " 'kweka2011durability',\n", + " 'kweka2017efficacy',\n", + " 'kweka2019bio',\n", + " 'lindblade2005evaluation',\n", + " 'lines1987experimental',\n", + " 'magbity1997effects',\n", + " 'mahande2018bio',\n", + " 'malima2009behavioural',\n", + " 'malima2013evaluation',\n", + " 'masalu2018potential',\n", + " 'massue2016durability',\n", + " 'maxwell2002effect',\n", + " 'maxwell2006tests',\n", + " 'meiwald2022association',\n", + " 'menze2022experimental',\n", + " 'mieguim2021insights',\n", + " 'mosha2008experimental',\n", + " 'msangi2008effects',\n", + " 'msuya1991trial',\n", + " 'mulatier2019prior',\n", + " 'murray2020barrier',\n", + " 'musa2020long',\n", + " 'nash2021systematic',\n", + " 'nguessan2016chlorfenapyr',\n", + " 'ngufor2014combining',\n", + " 'ngufor2014olyset',\n", + " 'ngufor2017which',\n", + " 'ngufor2022comparative',\n", + " 'obi2020monitoring',\n", + " 'ohashi2012efficacy',\n", + " 'okoyo2015comparing',\n", + " 'okumu2012implications',\n", + " 'omondi2017quantifying',\n", + " 'oumbouke2019evaluation',\n", + " 'oxborough2013itn',\n", + " 'oxborough2015new',\n", + " 'pmi2017madagascar',\n", + " 'pmi2018mozambique',\n", + " 'pmi2018senegal',\n", + " 'pmi2019myanmar',\n", + " 'pmi2019nigeria',\n", + " 'pmi2019tanzania',\n", + " 'randriamaherijaona2017durability',\n", + " 'riveron2018high',\n", + " 'solomon2018bed',\n", + " 'spitzen2017effect',\n", + " 'syme2021which',\n", + " 'syme2022pyrethroid',\n", + " 'tami2004evaluation',\n", + " 'tiono2018efficacy',\n", + " 'toe2018do',\n", + " 'tungu2015evaluation',\n", + " 'vatandoost2006comparative',\n", + " 'verma2022laboratory',\n", + " 'whopes2007report',\n", + " 'whopes2008report',\n", + " 'winkler2012efficacy',\n", + " 'yewhalaw2022experimental',\n", + " 'zahouli2023small',\n", + " 'zhou2016insecticide']" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "papers_subset.index.tolist()" + ] + }, + { + "cell_type": "markdown", + "id": "075b961c-2d35-4317-b48a-f5afb638c236", + "metadata": { + "scrolled": true + }, + "source": [ + "## Extract segments" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "8389d02d-7321-4308-be10-ea17d91b37b1", + "metadata": {}, + "outputs": [], + "source": [ + "# nougat_model = nougat.NougatOCR()\n", + "# nougat_model.batch_size = 1\n", + "nougat_model = None" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "57cd8e2e-4e76-4581-a813-33e83057fe72", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "b708665ba6fc4a37814360a3aac592ab", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/19 [00:00PermaNet® (n) %, 95 % CIOlyset® (n) %, 95 % CIAll nets (n) %, 95 % CILLIN age 12 months(14) 77.8, 58.6–96.7†(6) 33.3, 11.6–55.1(20) 55.6, 39.3–71.824 months(7) 38.9, 16.4–61.4(6) 30.0, 9.9–50.1(13) 34.2, 19.1–51.4Minimal effectiveness 12 months(18) 100.0, 100.0–100.0†(14) 77.8, 58.6–97.0(32) 88.9, 78.6–96.924 months(11) 61.1, 38.6–83.6(14) 70.0, 49.9–88.1(25) 65.8, 50.7–80.9*" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "id = 'tan2016longitudinal'\n", + "i = -1\n", + "table = tables[id]['llmsherpa'].items[i]\n", + "\n", + "print(papers.loc[id, 'file_path'])\n", + "print(table.header, table.number)\n", + "HTML(table.html)" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "d422ee41-a29e-436c-bf51-cb664f2ceaf3", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "FigureSegment(header='Fig. 2 Correlation of chemical and bioassay results (95 % confidence intervals shown in shaded area)', page_number=10, number=2)" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "fig = figures['tan2016longitudinal']['pdffigures2'][0]\n", + "fig" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "e6e8c343-39c6-4c77-bd14-111a8a2084c8", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "HTML(image_to_html(fig.image))" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "fc490766-1f29-4591-be82-1180f2521de5", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:416: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/tan2016longitudinal/tan2016longitudinal-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0520 13:54.02 @segment.py:246]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Correlation of chemical and bioassay results (95 % confidence intervals shown in shaded area)\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/plain": [ + "FigureExtractionResponse(summary='The figure shows the correlation between chemical concentrations (Deltamethrin and Permethrin) and bioassay results (Knock down and Mortality) in mosquitoes. The shaded areas represent 95% confidence intervals.', html='\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
DeltamethrinPermethrin
Knock down (% mosquitoes)
Mortality (% mosquitoes)
Mean insecticide concentration in mg/m²
')" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "_figure_extraction_response = fig.extract_html_table()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "6b5c2d46-8a0d-473d-b605-dc2bbac57f6b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
DeltamethrinPermethrin
Knock down (% mosquitoes)
Mortality (% mosquitoes)
Mean insecticide concentration in mg/m²
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "HTML(fig.html)" + ] + }, + { + "cell_type": "markdown", + "id": "97efd4ef-c6d3-4cd5-a9dd-044c6ee08339", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "source": [ + "### deepdoctection (experiments)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e92c5fe3-486e-4296-b636-c144879b1ebf", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "analyzer =dd.get_dd_analyzer(config_overwrite=[\n", + " \"PT.LAYOUT.WEIGHTS=microsoft/table-transformer-detection/pytorch_model.bin\", # TATR table detection model\n", + " \"PT.ITEM.WEIGHTS=microsoft/table-transformer-structure-recognition/pytorch_model.bin\", # TATR table segmentation model\n", + " \"PT.ITEM.FILTER=['table']\",\n", + " \"OCR.USE_DOCTR=True\", # we disable Tesseract and use DocTr as OCR engine\n", + " \"OCR.USE_TESSERACT=False\",\n", + "])\n", + "\n", + "df = analyzer.analyze(path='data/pdf/Etang_et_al_2007_Trans_RSTMH.pdf')\n", + "df.reset_state()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9577cb2e-d4cb-4d01-903d-526dc3d4f8b1", + "metadata": {}, + "outputs": [], + "source": [ + "# doc = iter(df)\n", + "page = next(doc)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f3f98599-3c68-4087-bef5-220bc5cc5ae7", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "page.annotations[1]._category_name" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "74b33bd9-ae32-411e-b51c-2c25ac792be6", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "page.annotations[0]._annotation_id" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ae277688-0848-4c83-9b59-aa7e7605022f", + "metadata": {}, + "outputs": [], + "source": [ + "table.annotation_id" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f898123d-ea83-4ed4-b065-8e5228ee67cc", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "table = page.tables[0]\n", + "print(table.html)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9fe8d5d9-ebd8-4b55-bf98-4a8b6f431270", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "table.cells" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f9181c56-6802-40bd-9cdd-bac79bbde616", + "metadata": {}, + "outputs": [], + "source": [ + "page.viz(ignore_default_token_class=True, interactive=True)" + ] + }, + { + "cell_type": "markdown", + "id": "d7235e69-eddd-45f9-bdd8-ec34cbaf479a", + "metadata": { + "editable": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "source": [ + "#### Evaluate tables extracted" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e940570-fac7-4f80-a329-da823d51e778", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "df = tables['Etang2007']['unstructured'][0].to_df()\n", + "df = df.dropna(axis=0, how='all').dropna(axis=1, how='all')\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fa7e5bea-93dd-4ac6-bb93-a892ebc9d538", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "# for id, paper in tqdm(papers_subset.iterrows(), total=len(papers_subset)):\n", + "# text_segs, table_segs, _ = create_or_load_nougat_segments(paper, nougat_model=nougat_model, load_only=False, save=True)" + ] + }, + { + "cell_type": "markdown", + "id": "203095af-75db-4d00-ab94-3df87c157fb0", + "metadata": {}, + "source": [ + "## Create records" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "1817cbdf-b1cb-4be7-ae95-9b5ede7bcf78", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "95396ae97c1841ce9e59eea7e67699ba", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "0it [00:00, ?it/s]" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/verma2022laboratory/LLINPhaseIVV2022-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:04.51 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Schematic flow of work plan\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/verma2022laboratory/LLINPhaseIVV2022-Figure3-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:04.58 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Graph showing % KnockDown (%KD) and % Mortality in cone bioassays to determine the regeneration time of HILNet\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/verma2022laboratory/LLINPhaseIVV2022-Figure4-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:05.02 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Graph showing % KnockDown and % Mortality in wash resistance studies\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/accrombessi2021assessing/figures/figure-4-4.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:05.07 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Study area. Map showing Cove, Zagnanado and Ouinhi Districts, located in Zou department, central Benin, West Africa (Panel a); the 60 study clusters identified with core and buffer area and intervention allocation (Panel b); a minimum of 1000 m area was created between households in adjacent clusters (Panel c). Source of map: Own from the study investigators (CT, JC, MA, ED).\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "verma2022laboratory 3 tables 3 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/accrombessi2021assessing/Assessing_the_efficacy_of_two_dual_active_ingredients_long_lasting_insecticidal_-Figure1-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:05.14 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Study area. Map showing Cove, Zagnanado and Ouinhi Districts, located in Zou department, central Benin, West Africa (Panel a); the 60 study clusters identified with core and buffer area and intervention allocation (Panel b); a minimum of 1000m area was created between households in adjacent clusters (Panel c). Source of map: Own from the study investigators (CT, JC, MA, ED).\u001b[0m\n", + "\u001b[32m[0621 00:05.22 @staging.py:69]\u001b[0m \u001b[5m\u001b[35mWRN\u001b[0m \u001b[97mAttempting to fix broken JSON: ... 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60\\n \\n \\n\"}\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accrombessi2021assessing 2 tables 1 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ngufor2022comparative/figures/figure-6-7.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:05.23 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ngufor2022comparative/Comparative_efficacy_of_two_pyrethroid_piperonyl_butoxide_nets_Olyset_Plus_and_-Figure1-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:05.28 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ngufor2022comparative/figures/figure-7-8.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:05.33 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Blood-feeding rates of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ngufor2022comparative/Comparative_efficacy_of_two_pyrethroid_piperonyl_butoxide_nets_Olyset_Plus_and_-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:05.39 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Blood-feeding rates of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ngufor2022comparative/figures/figure-9-9.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:05.44 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mortality (%) of susceptible and resistant strains of An. gambiae s.l. in cone bioassays with Olyset Plus and Olyset Net. S R\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ngufor2022comparative/Comparative_efficacy_of_two_pyrethroid_piperonyl_butoxide_nets_Olyset_Plus_and_-Figure3-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:05.49 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mortality (%) of susceptible and resistant strains of An. gambiae s.l. in cone bioassays with Olyset Plus and Olyset Net. S = susceptible, R = resistant\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ngufor2022comparative/figures/figure-9-10.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:05.57 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Tunnel test mortality (%) of susceptible and resistant strains of Anopheles gambiae s.l. exposed to Olyset Plus vs. Olyset Net\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ngufor2022comparative/Comparative_efficacy_of_two_pyrethroid_piperonyl_butoxide_nets_Olyset_Plus_and_-Figure4-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:06.01 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Tunnel test mortality (%) of susceptible and resistant strains of Anopheles gambiae s.l. exposed to Olyset Plus vs. Olyset Net\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ngufor2022comparative/figures/figure-10-11.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:06.08 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Blood-feeding inhibition (%) of susceptible and resistant strains of An. gambiae s.l. in tunnel tests with Olyset Plus and Olyset Net. Blood-feeding inhibition was calculated relative to the control tunnel. S\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ngufor2022comparative/Comparative_efficacy_of_two_pyrethroid_piperonyl_butoxide_nets_Olyset_Plus_and_-Figure5-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:06.16 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Blood-feeding inhibition (%) of susceptible and resistant strains of An. gambiae s.l. in tunnel tests with Olyset Plus and Olyset Net. Blood-feeding inhibition was calculated relative to the control tunnel. S = susceptible, R = Resistant\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ngufor2022comparative 9 tables 5 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/gleave2021piperonyl/CD012776-Figure1-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:06.27 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1.   Study flow diagram.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/gleave2021piperonyl/CD012776-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:06.34 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2.   ‘Risk of bias' summary: review authors' judgements about each risk of bias item for each included study.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gleave2021piperonyl 133 tables 2 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/diouf2022evaluation/figures/figure-4-7.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:06.44 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Localities where LLINs were distributed and durability monitored\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/diouf2022evaluation/figures/figure-8-8.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:06.47 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/diouf2022evaluation/Evaluation_of_the_residual_efficacy_and_physical_durability_of_five_long_lasting-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:07.06 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/diouf2022evaluation/figures/figure-10-9.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:07.11 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Categories of holes by type and semester after 3 years. Size 1, size 2, size 3\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/diouf2022evaluation/Evaluation_of_the_residual_efficacy_and_physical_durability_of_five_long_lasting-Figure3-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:07.17 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Categories of holes by type and semester after 3 years. Size 1, size 2, size 3\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/diouf2022evaluation/Evaluation_of_the_residual_efficacy_and_physical_durability_of_five_long_lasting-Figure4-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:07.25 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Insecticide concentration in mg/m2 according to the type LLINs and semester\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/diouf2022evaluation/Evaluation_of_the_residual_efficacy_and_physical_durability_of_five_long_lasting-Figure5-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:07.32 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Correlation of chemical and bioassay results by type of LLIN and semester\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "diouf2022evaluation 8 tables 5 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/syme2021which/figures/figure-9-2.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:07.41 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 1. Monthly mortality rates of wild, free-flying pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts with pirimiphos-methyl CS IRS applied alone and in combination with DuraNet1 in Covè, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/syme2021which/pone_0245804_pdf-Figure1-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:07.47 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 1. Monthly mortality rates of wild, free-flying pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts with pirimiphos-methyl CS IRS applied alone and in combination with DuraNet1 in Covè, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/syme2021which/pone_0245804_pdf-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:07.58 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 2. Monthly mortality rates of wild, free-flying pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts with chlorfenapyr IRS applied alone and in combination with DuraNet1 in Covè, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/syme2021which/figures/figure-10-4.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:08.03 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 3. Monthly mortality rates of wild, free-flying pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts with bendiocarb IRS applied alone and in combination with DuraNet1 in Covè, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/syme2021which/pone_0245804_pdf-Figure3-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:08.09 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 3. Monthly mortality rates of wild, free-flying pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts with bendiocarb IRS applied alone and in combination with DuraNet1 in Covè, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/syme2021which/pone_0245804_pdf-Figure4-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:08.14 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 4. Mortality (72 h) of laboratory maintained, insecticide-susceptible Anopheles gambiae sensu stricto Kisumu colony exposed to IRS-treated hut walls in monthly, 30 mins wall cone bioassays in experimental huts in Covè, southern Benin. Error bars represent 95% CI. Approximately fifty (50) 2–3 days old mosquitoes were exposed for 30 mins to each IRS treated hut in batches of 10 per cone and mortality recorded after 72 h.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "syme2021which 5 tables 4 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/meiwald2022association/figures/figure-4-3.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:08.19 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. A, Resistance intensity of field-caught Anopheles gambiae sensu lato (s.l.) after exposure to 1, 2, 5, or 10 times the diagnostic dose of pyrethroid insecticides. Mean knockdown/acute toxicity rates after 30-minute exposure are shown with 95% confidence intervals (CIs). Knockdown or mortality rates at the same dose per insecticide sharing a letter do not differ significantly (P > .05). Mortality rates <90% (lower red line) represent confirmed resistance at the diagnostic dose (1×), and rates <98% (upper red line) indicate moderate to high-intensity resistance or high-intensity resistance at 5× and 10×, respectively, as defined by the World Health Organization [24]. B, Restoration of deltamethrin susceptibility of field-caught A. gambiae s.l. after preexposure to piperonyl butoxide (PBO). Mean knockdown/acute toxicity after 30-minute exposure to 1 or 2 times the diagnostic dose of deltamethrin with 95% CIs. Knockdown/mortality rates do not differ significantly between pyrethroid only and synergist plus pyrethroid sharing a letter (P > .05). Red line at 98% mortality rate represents metabolic resistance mechanisms partially involved [24].\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/meiwald2022association/figures/figure-6-20.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:08.25 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. The longevity of field-caught Anopheles gambiae sensu lato after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (A) and 1× (B), 5× (C), and 10× (D) the diagnostic dose of pyrethroid insecticides in Centers for Disease Control and Prevention resistance intensity assays. Kaplan-Meier sur- vival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/meiwald2022association/jiaa699-Figure3-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:08.32 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. The longevity of field-caught Anopheles gambiae sensu lato after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (A) and 1× (B), 5× (C), and 10× (D) the diagnostic dose of pyrethroid insecticides in Centers for Disease Control and Prevention resistance intensity assays. Kaplan-Meier survival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/gichuki2021bioefficacy/figures/figure-4-9.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:08.46 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 A rectangular net and its individual panels showing positions for cutting netting pieces (positions 1–9 for bioassays; HP1–HP5 for chemical assays)\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "meiwald2022association 3 tables 2 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gichuki2021bioefficacy 7 tables 1 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/kibondo2022influence/figures/figure-7-6.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:09.00 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Mosquito mortality after exposure to Interceptor® and Interceptor® G2 ITNs in Ifakara ambient chamber test (IACT), WHO tunnel test, cone and experimental hut. a An. arabiensis, b Cx. quinquefasciatus, c An. gambiae s.s., d Ae. aegypti\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/kibondo2022influence/Influence_of_testing_modality_on_bioefficacy_for_the_evaluation_of_Interceptor-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:09.09 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Mosquito mortality after exposure to Interceptor® and Interceptor® G2 ITNs in Ifakara ambient chamber test (IACT), WHO tunnel test, cone and experimental hut. a An. arabiensis, b Cx. quinquefasciatus, c An. gambiae s.s., d Ae. aegypti\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/kibondo2022influence/figures/figure-10-7.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:09.16 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mosquito blood-feeding inhibition after exposure to Interceptor and Interceptor® G2 ITNs in Ifakara ambient chamber test (IACT), WHO tunnel test and experimental hut. a An. arabiensis, b Cx. quinquefasciatus, c An. gambiae s.s., d Ae. aegypti\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/kibondo2022influence/Influence_of_testing_modality_on_bioefficacy_for_the_evaluation_of_Interceptor-Figure3-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:09.21 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mosquito blood-feeding inhibition after exposure to Interceptor and Interceptor® G2 ITNs in Ifakara ambient chamber test (IACT), WHO tunnel test and experimental hut. a An. arabiensis, b Cx. quinquefasciatus, c An. gambiae s.s., d Ae. aegypti\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/kibondo2022influence/figures/figure-12-8.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:09.26 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Comparison of mosquito mortality and blood-feeding inhibition of An. arabiensis in four different experimental hut designs in Ifakara, Tanzania\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/kibondo2022influence/Influence_of_testing_modality_on_bioefficacy_for_the_evaluation_of_Interceptor-Figure4-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:09.32 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Comparison of mosquito mortality and blood-feeding inhibition of An. arabiensis in four different experimental hut designs in Ifakara, Tanzania\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/kibondo2022influence/Influence_of_testing_modality_on_bioefficacy_for_the_evaluation_of_Interceptor-Figure5-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:09.39 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Factors determining bioassay results beyond product characteristics\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/zahouli2023small/Small_scale_field_evaluation_of_PermaNet_Dual_a_long_lasting_net_coated_with-Figure1-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:09.50 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Effects of treatments on blood-feeding (A) and immediate and extended mortality (B) rates in multiple insecticide-resistant Anopheles gambiae from experimental huts in Tiassalé, Côte d’Ivoire. Error bars show the standard error of the mean. Letters indicate the results of the\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "kibondo2022influence 5 tables 4 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/zahouli2023small/Small_scale_field_evaluation_of_PermaNet_Dual_a_long_lasting_net_coated_with-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:09.58 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Mean knock-down (A) and corrected mortality (B) rates in the susceptible Anopheles gambiae s.s. Kisumu strain exposed to net samples using cone bioassays before and after the experimental hut trial in Tiassalé, Côte d’Ivoire. KD60: Knock-down at 60 min. Error bars show the standard error of the mean\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/zahouli2023small/figures/figure-11-9.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:10.04 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mean knock-down (A) and corrected mortality (B) rates in the pyrethroid-resistant Anopheles gambiae s.l. Tiassalé strain exposed to net samples using cone bioassays before and after the experimental hut trial in Tiassalé, Côte d’Ivoire. KD60: Knock-down at 60 min. Error bars show the standard error of the mean\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/zahouli2023small/Small_scale_field_evaluation_of_PermaNet_Dual_a_long_lasting_net_coated_with-Figure3-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:10.14 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mean knock-down (A) and corrected mortality (B) rates in the pyrethroid-resistant Anopheles gambiae s.l. Tiassalé strain exposed to net samples using cone bioassays before and after the experimental hut trial in Tiassalé, Côte d’Ivoire. KD60: Knock-down at 60 min. Error bars show the standard error of the mean\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/zahouli2023small/figures/figure-13-10.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:10.27 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Mean blood-feeding inhibition (A) and corrected mortality (B) rates in the susceptible Anopheles gambiae s.s. Kisumu strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassalé, Côte d’Ivoire. Error bars show the standard error of the mean\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/zahouli2023small/Small_scale_field_evaluation_of_PermaNet_Dual_a_long_lasting_net_coated_with-Figure4-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:10.33 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Mean blood-feeding inhibition (A) and corrected mortality (B) rates in the susceptible Anopheles gambiae s.s. Kisumu strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassalé, Côte d’Ivoire. Error bars show the standard error of the mean\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/zahouli2023small/figures/figure-14-11.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:10.42 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Mean of blood-feeding inhibition (A) and corrected mortality (B) rates in the pyrethroid-resistant Anopheles gambiae s.l. Tiassalé strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassalé, Côte d’Ivoire. Error bars show the standard error of the mean\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/zahouli2023small/Small_scale_field_evaluation_of_PermaNet_Dual_a_long_lasting_net_coated_with-Figure5-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:10.49 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Mean of blood-feeding inhibition (A) and corrected mortality (B) rates in the pyrethroid-resistant Anopheles gambiae s.l. Tiassalé strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassalé, Côte d’Ivoire. Error bars show the standard error of the mean\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/toe2018do/figures/figure-4-2.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:10.58 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1. Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: P < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "zahouli2023small 4 tables 5 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/toe2018do/Toe_et_al_2018_Medical_and_Veterinary_Entomology-Figure1-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:11.02 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1. Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: P < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/toe2018do/Toe_et_al_2018_Medical_and_Veterinary_Entomology-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:11.07 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2. Expression levels of candidate genes previously associated with pyrethroid resistance in Tengrela and Vallée du Kou 5. The analysis was performed using the 2-ΔΔCt method with data normalized against three control genes and presented as a ratio of expression levels in the Ngousso susceptible laboratory strain. Relative gene expressions were transformed to log scale before plotting to minimize large differences in gene expression. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/toe2018do/figures/figure-6-6.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:11.13 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3. Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (P < 0.001), † (P < 0.0001), n.s. (non-significant), ‡ (P < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/toe2018do/Toe_et_al_2018_Medical_and_Veterinary_Entomology-Figure3-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:11.19 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3. Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (P < 0.001), † (P < 0.0001), n.s. (non-significant), ‡ (P < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/toe2018do/figures/figure-7-9.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:11.23 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4. Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the P-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/toe2018do/Toe_et_al_2018_Medical_and_Veterinary_Entomology-Figure4-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:11.30 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4. Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the P-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/toe2018do/figures/figure-8-10.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:11.36 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5. Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/toe2018do/Toe_et_al_2018_Medical_and_Veterinary_Entomology-Figure5-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:11.41 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5. Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/nash2021systematic/figures/figure-4-4.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:11.47 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1. Maps of EHT sites where ITNs and/or IRS have been investigated. Panels show sites across sub-Saharan Africa (A); Eastern Africa (54 trials), including Ethiopia, Tanzania and Madagascar (B); West (80 trials) and Central Africa (1 trial), including The Gambia, Mali, Ivory Coast, Burkina Faso, Togo, Benin, Nigeria and Cameroon (C). Point size indicates the number of studies at each site, whilst point colour denotes the design of hut used, be it East African (red), Ifakara (green) or West African (blue).\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "toe2018do 4 tables 5 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/nash2021systematic/figures/figure-6-5.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:11.52 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2. Characteristics of EHT data. A The number of EHTs investigating IRS or ITNs that collected data on each hut design and mosquito species (as reported in the study). Bar colours indicate the design of the hut used in the trial as shown in the legend, be it East African (red), West African (blue) or Ifakara (green). B Summary of the reported mortality observed in hut trials evaluating unwashed pyrethroid-only ITNs and how these change over time. Points are coloured according to the hut design (see A). C Histograms showing the average number of mosquitoes collected per night in the control huts of EHTs. The dotted line represents the mean number collected in trials of each hut design. Note: Some trials collected multiple mosquito species, therefore single trials may be counted more than once in this figure.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/nash2021systematic/1_s20_S2667114X21000418_main-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:12.01 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2. Characteristics of EHT data. A The number of EHTs investigating IRS or ITNs that collected data on each hut design and mosquito species (as reported in the study). Bar colours indicate the design of the hut used in the trial as shown in the legend, be it East African (red), West African (blue) or Ifakara (green). B Summary of the reported mortality observed in hut trials evaluating unwashed pyrethroid-only ITNs and how these change over time. Points are coloured according to the hut design (see A). C Histograms showing the average number of mosquitoes collected per night in the control huts of EHTs. The dotted line represents the mean number collected in trials of each hut design. Note: Some trials collected multiple mosquito species, therefore single trials may be counted more than once in this figure.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/nash2021systematic/figures/figure-7-6.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:12.07 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3. Entomological outcomes as predicted by bioassay survival. A Comparison of the level of pyrethroid resistance as measured using a discriminating dose bioassay and the percentage of mosquitoes which enter a hut with a pyrethroid-only ITN and survive 24 h after being collected. Solid lines show the fitted relationship using either the logistic (green) or log-logistic (yellow) models. Vertical and horizontal lines show 95% confidence interval estimates for each data point. B-C The rela- tionship between EHT survival (24 h post-collection, unless the ITN incorporated the insecticide chlorfenapyr, in which case 72-h survival was used) and the probability of being caught inside a control hut relative to a hut with any type of ITN (where anywhere above the grey dashed-line indicates more mosquitoes were caught in the control hut) (B), mosquitoes successfully feeding and surviving (C), or exiting the hut without feeding (D). The point size in B-D is proportional to the total number of mosquitoes collected in the trial and coloured according to hut design: East (red) or West (blue). Solid lines in A-D show the best-fit relationship whilst the lighter shaded area indicates 95% credible intervals for the best-fit curves. E-F The models from A-D were combined to summarise how the average probability that blood-feeding mosquitoes will be killed, exit without feeding, deterred from entering or successfully blood-feed, varies with bioassay survival. The relationship be- tween bioassay and EHT survival is highly uncertain, so both the logistic model (E) and the log-logistic model (F) are presented.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/nash2021systematic/1_s20_S2667114X21000418_main-Figure3-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:12.17 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3. Entomological outcomes as predicted by bioassay survival. A Comparison of the level of pyrethroid resistance as measured using a discriminating dose bioassay and the percentage of mosquitoes which enter a hut with a pyrethroid-only ITN and survive 24 h after being collected. Solid lines show the fitted relationship using either the logistic (green) or log-logistic (yellow) models. Vertical and horizontal lines show 95% confidence interval estimates for each data point. B-C The relationship between EHT survival (24 h post-collection, unless the ITN incorporated the insecticide chlorfenapyr, in which case 72-h survival was used) and the probability of being caught inside a control hut relative to a hut with any type of ITN (where anywhere above the grey dashed-line indicates more mosquitoes were caught in the control hut) (B), mosquitoes successfully feeding and surviving (C), or exiting the hut without feeding (D). The point size in B-D is proportional to the total number of mosquitoes collected in the trial and coloured according to hut design: East (red) or West (blue). Solid lines in A-D show the best-fit relationship whilst the lighter shaded area indicates 95% credible intervals for the best-fit curves. E-F The models from A-D were combined to summarise how the average probability that blood-feeding mosquitoes will be killed, exit without feeding, deterred from entering or successfully blood-feed, varies with bioassay survival. The relationship between bioassay and EHT survival is highly uncertain, so both the logistic model (E) and the log-logistic model (F) are presented.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/nash2021systematic/figures/figure-8-7.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:12.31 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4. Entomological outcomes as predicted by bioassay survival according to East and West African hut designs. A Comparison of the level of pyrethroid resistance as measured using a discriminating dose bioassay and the percentage of mosquitoes which enter a hut and survive 24 h. Solid lines show the fitted relationship for the East (red) and West (blue) African hut design assuming the log-logistic function. Comparable plots showing the logistic function are provided in Supplementary file 1: Fig. S7A. B-C The relationship between EHT survival (24 h post-collection, unless the ITN incorporated the insecticide chlorfenapyr, in which case 72-h survival was used) and the probability of being caught inside a control hut relative to a hut with any type of ITN (where anywhere above the grey dashed-line indicates more mosquitoes were caught in the control hut) (B), mosquitoes successfully feeding and surviving (C), or exiting the hut without feeding (D). The point size in B-D is proportional to the total number of mosquitoes collected in the trial and coloured according to hut design. Solid lines in A-D show the best-fit relationship whilst the lighter shaded area indicates 95% credible intervals for the best-fit curves. E-F The models from A-D were combined to summarise how the average probability that blood-feeding mosquitoes will be killed, exit without feeding, deterred from entering or successfully blood-feed, varies with bioassay survival for either East (E) or West (F) African hut design. Both (E-F) show the log-logistic model, see Supplementary file 1: Figs. S7B–C for models using the logistic function.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/nash2021systematic/1_s20_S2667114X21000418_main-Figure4-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:12.41 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4. Entomological outcomes as predicted by bioassay survival according to East and West African hut designs. A Comparison of the level of pyrethroid resistance as measured using a discriminating dose bioassay and the percentage of mosquitoes which enter a hut and survive 24 h. Solid lines show the fitted relationship for the East (red) and West (blue) African hut design assuming the log-logistic function. Comparable plots showing the logistic function are provided in Supplementary file 1: Fig. S7A. B-C The relationship between EHT survival (24 h post-collection, unless the ITN incorporated the insecticide chlorfenapyr, in which case 72-h survival was used) and the probability of being caught inside a control hut relative to a hut with any type of ITN (where anywhere above the grey dashed-line indicates more mosquitoes were caught in the control hut) (B), mosquitoes successfully feeding and surviving (C), or exiting the hut without feeding (D). The point size in B-D is proportional to the total number of mosquitoes collected in the trial and coloured according to hut design. Solid lines in A-D show the best-fit relationship whilst the lighter shaded area indicates 95% credible intervals for the best-fit curves. E-F The models from A-D were combined to summarise how the average probability that blood-feeding mosquitoes will be killed, exit without feeding, deterred from entering or successfully blood-feed, varies with bioassay survival for either East (E) or West (F) African hut design. Both (E-F) show the log-logistic model, see Supplementary file 1: Figs. S7B–C for models using the logistic function.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "nash2021systematic 6 tables 4 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/menze2022experimental/figures/figure-4-5.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:12.53 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Association between the CYP6P9a/b and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (A) Tube assay CYP6P9a and mortality. Role of CYP6P9a in pyrethroid resistance with samples from the WHO tube. Distribution of the CYP6P9a genotypes according to resistance phenotypes. (B) Tube assay CYP6P9b and mortality. Role of CYP6P9b in pyrethroid resistance with samples from the WHO tube. Distribution of the CYP6P9b genotypes according to resistance phenotypes. (C) Cone assay CYP6P9a and mortality. Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: p < 0.001). (D) Cone assay CYP6P9a and mortality allele. Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (E) Cone assay CYP6P9b and mortality. Genotype distribution of CYP6P9b between alive and dead mosquitoes after exposure to Olyset using the cone test, showing strong association (RR vs. SS: p < 0.001).\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "accrombessi2023efficacy 8 tables 0 figures\n", + "syme2022pyrethroid 8 tables 0 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/menze2022experimental/pathogens_11_00638_v2-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:13.04 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Association between the CYP6P9a/b and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (A) Tube assay CYP6P9a and mortality. Role of CYP6P9a in pyrethroid resistance with samples from the WHO tube. Distribution of the CYP6P9a genotypes according to resistance phenotypes. (B) Tube assay CYP6P9b and mortality. Role of CYP6P9b in pyrethroid resistance with samples from the WHO tube. Distribution of the CYP6P9b genotypes according to resistance phenotypes. (C) Cone assay CYP6P9a and mortality. Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: p < 0.001). (D) Cone assay CYP6P9a and mortality allele. Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (E) Cone assay CYP6P9b and mortality. Genotype distribution of CYP6P9b between\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/menze2022experimental/figures/figure-5-6.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:13.09 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. Association between the CYP6P9a/b and the ability to survive exposure to Olyset Plus nets after cone assays. (A) Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (p < 0.001). (B) Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (C) Genotype distribution of CYP6P9b between alive and dead mosquitoes after exposure to Olyset Plus using the cone test, showing the significant ability of the mosquitoes carrying the RR genotype to survive compared to SS (p < 0.001).\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/menze2022experimental/pathogens_11_00638_v2-Figure3-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:13.13 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. Association between the CYP6P9a/b and the ability to survive exposure to Olyset Plus nets after cone assays. (A) Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (p < 0.001). (B) Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (C) Genotype distribution of CYP6P9b between alive and dead mosquitoes after\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/menze2022experimental/pathogens_11_00638_v2-Figure4-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:13.23 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 4. Association between 6.5 kb SV and the ability to survive against exposure to Olyset and Olyset Plus nets using cone assays. (A) Distribution of 6.5 kb SV genotypes between dead and alive mosquitoes after exposure to Olyset, showing that 6.5 kb SV_R allows mosquitoes to survive significantly better against exposure to this net. (B) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the 6.5 kb SV _R_-resistant mosquitoes to survive compared to their susceptible counterparts 6.5 kb SV _S. (C) Distribution of 6.5 kb SV genotypes between dead and alive mosquitoes after exposure to the Olyset Plus net. (D) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the 6.5 kb SV _R_-resistant mosquitoes to survive compared to their susceptible counterparts 6.5 kb SV _S.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/menze2022experimental/figures/figure-7-8.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:13.30 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 5. Impact of both CYP6P9a and CYP6P9b on the efficacy of bed nets in the experimental hut trial. (A) Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: p < 0.001). (B) Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (C) Association between CYP6P9a and ability to blood-feed when exposed to Olyset. The CYP6P9a-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (D) Association between CYP6P9b and ability to survive exposure to Olyset in the experimental hut trial. (E) Allelic frequency of CYP6P9b between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the CYP6P9b_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9b_S. (F) Association between duplicated CYP6P9b gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The CYP6P9b-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/menze2022experimental/pathogens_11_00638_v2-Figure5-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:13.36 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 5. Impact of both CYP6P9a and CYP6P9b on the efficacy of bed nets in the experimental hut trial. (A) Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: p < 0.001). (B) Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (C) Association between CYP6P9a and ability to blood-feed when exposed to Olyset. The CYP6P9a-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (D) Association between CYP6P9b and ability to survive exposure to Olyset in the experimental hut trial. (E) Allelic frequency of CYP6P9b between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the CYP6P9b_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9b_S. (F) Association between duplicated CYP6P9b gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The CYP6P9b-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/menze2022experimental/figures/figure-9-9.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:13.44 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 6. Impact of the 6.5 kb SV-based metabolic resistance on bed nets’ efficacy in experimental hut trials. (A) Distribution of 6.5 kb SV genotypes between dead and alive mosquitoes after expo- sure to Olyset net, showing that 6.5 kb SV _R allows mosquitoes to survive significant better after exposure to this insecticide-treated net. (B) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the 6.5 kb SV _R_-resistant mosquitoes to survive compared to their susceptible counterparts 6.5 kb SV _S. (C) Distribution of 6.5 kb SV genotypes between the blood fed (BF) and unfed (UF) mosquitoes after exposure to Olyset (OL), showing that 6.5 kb SV_R significantly allows mosquitoes to blood-feed in the presence of this insecticide-treated net. (D) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the ability of the 6.5 kb SV _R_-resistant mosquitoes to blood-feed significantly better compared to their susceptible counterparts\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/menze2022experimental/pathogens_11_00638_v2-Figure6-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:13.50 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 6. Impact of the 6.5 kb SV-based metabolic resistance on bed nets’ efficacy in experimental hut trials. (A) Distribution of 6.5 kb SV genotypes between dead and alive mosquitoes after exposure to Olyset net, showing that 6.5 kb SV _R allows mosquitoes to survive significant better after exposure to this insecticide-treated net. (B) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the 6.5 kb SV _R_-resistant mosquitoes to survive compared to their susceptible counterparts 6.5 kb SV _S. (C) Distribution of 6.5 kb SV genotypes between the blood fed (BF) and unfed (UF) mosquitoes after exposure to Olyset (OL), showing that 6.5 kb SV_R significantly allows mosquitoes to bloodfeed in the presence of this insecticide-treated net. (D) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the ability of the 6.5 kb SV _R_-resistant mosquitoes to blood-feed significantly better compared to their susceptible counterparts 6.5 kb SV _S. (E) Distribution of 6.5 kb SV genotypes between blood-fed (BF) and unfed (UF) mosquitoes after exposure to Olyset Plus, showing that 6.5 kb SV_R significantly allows mosquitoes to blood-feed in the presence of this insecticide-treated net. (F) Allelic frequency\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/gebremariam2021evaluation/figures/figure-3-3.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:14.00 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1. Experimental hut design of the study.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "menze2022experimental 1 tables 5 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/gebremariam2021evaluation/gebremariam_et_al_2021_evaluation_of_long_lasting_insecticidal_nets_duranetr_under_laboratory_and_semi_field-Figure1-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:14.03 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1. Experimental hut design of the study.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/gebremariam2021evaluation/figures/figure-4-4.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:14.06 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Mean percent knockdown and mortality of An. arabiensis exposed in 3 minutes cone bioassay to DuraNet®, Jimma, and southwestern Ethiopia.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/gebremariam2021evaluation/gebremariam_et_al_2021_evaluation_of_long_lasting_insecticidal_nets_duranetr_under_laboratory_and_semi_field-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:14.17 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Mean percent knockdown and mortality of An. arabiensis exposed in 3 minutes cone bioassay to DuraNet®, Jimma, and\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "gebremariam2021evaluation 3 tables 2 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/briet2020physical/figures/figure-5-7.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:14.22 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Causal diagram for factors determining the effects of LLINs on malaria transmission. Solid lines indicate the main causal relationships between the measured quantities; dashed lines indicate which factors impact malaria transmission (via relationships estimated from experimental hut data and captured in the mathematical model)\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/briet2020physical/figures/figure-7-8.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:14.27 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Survival (1‑attrition) (a), use of nets currently in the household (b), proportion of original cohort of nets in use (c), mean of the natural log of estimated hole area (d), reduction in vectorial capacity of pyrethroid susceptible mosquitoes (e), and reduction in vectorial capacity of pyrethroid resistant mosquitoes (f), by country\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/briet2020physical/Attrition_physical_integrity_and_insecticidal_activity_of_long_lasting__insecti-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:14.40 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Survival (1‑attrition) (a), use of nets currently in the household (b), proportion of original cohort of nets in use (c), mean of the natural log of estimated hole area (d), reduction in vectorial capacity of pyrethroid susceptible mosquitoes (e), and reduction in vectorial capacity of pyrethroid resistant mosquitoes (f), by country\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/briet2020physical/figures/figure-8-9.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:14.51 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Persistence of active ingredients by LLIN brand\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/briet2020physical/Attrition_physical_integrity_and_insecticidal_activity_of_long_lasting__insecti-Figure4-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:15.00 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Lethality in cone tests and calibration of active ingredient content. The lethality and calibration curves are shown only for four specific LLIN brands. The lines for the other LLIN brands are very close to that for PermaNet 2.0\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/briet2020physical/figures/figure-11-11.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:15.05 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Predicted entomological effects of holed and intact LLINs. a Pyrethroid resistant mosquitoes. b Pyrethroid sensitive mosquitoes. The vertical black line corresponds to the target active agent content for PermaNet 2.0. The continuous lines correspond to intact LLINs and the dashed lines to LLINs with a holed area of 50 cm2. The effect size, on the vertical axis is the proportion by which availability of humans to mosquitoes is reduced, or killing of mosquitoes increased, when the LLIN is in use\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ibrahim2020exploring/figures/figure-3-3.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:15.10 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1. A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "briet2020physical 10 tables 5 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ibrahim2020exploring/genes_11_00454_pdf-Figure1-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:15.12 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1. ap sho ing the sa pling locality ( ajerar i a) in the Sahel of northern igeria.\u001b[0m\n", + "\u001b[32m[0621 00:15.17 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1. A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ibrahim2020exploring/figures/figure-8-4.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:15.20 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Resistance profiles of F1 An. funestus females. (a). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (b). Results of the cone bioassays with PermaNet 3.0 (side and roof), PermaNet Net. Results are the average of percentage Plus and Olyset mortalities ± SEM of five replicates; (c). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at P < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (d). Time-course bioassay for LT50 estimation/test for strength of permethrin resistance.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ibrahim2020exploring/genes_11_00454_pdf-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:15.27 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Resistance profiles of F1 An. funestus females. (a). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (b). Results of the cone bioassays with PermaNet®3.0 (side and roof), PermaNet®2.0, Olyset®Plus and Olyset®Net. Results are the average of percentage mortalities ± SEM of five replicates; (c). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl aleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the verage of percent g mortaliti s from four replicate each ± SEM. **** = statistically significant at P < 0 0001, in a two-tailed Chi-square test between results fr m syn rgised b o ssay and conventional bioassays; (d). Time-course bioassay for LT50 estimation/test for strength of permethrin resistance.\u001b[0m\n", + "\u001b[32m[0621 00:15.33 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Resistance profiles of F1 An. funestus females. (a). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (b). Results of the cone bioassays with PermaNet® 3.0 (side and roof), PermaNet® 2.0, Olyset® Plus and Olyset® Net. Results are the average of percentage mortalities ± SEM of five replicates; (c). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at P < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (d). Time-course bioassay for LT50 estimation/test for strength of permethrin resistance.\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ibrahim2020exploring/genes_11_00454_pdf-Figure3-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:15.40 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. enotyping of L119F STe2 utation. (a): distribution of the 119F utation a ong the 44 rando ly selected F0 fe ales; (b): the 119F utation genotype for 12 each of T-alive and -dead F1 fe ales, o ozygote resistant, RS = heterozygote resistant, and SS = susceptible; (c): agarose-gel s i t e 119 e t e istri ti fr allele-s ecific ( - ), t a el: 12 -ali e 1 f l s ( , , 6, and 8–12 are R , 1, 4, 5 and 7 are RS), bott m panel: 12 DDT-dea F1 females (13, 4, 5, 7, 9, 21– 4 are RS, 16 and 18 are SS, and 20 failed).\u001b[0m\n", + "\u001b[32m[0621 00:15.46 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. Genotyping of L119F GSTe2 mutation. (a): distribution of the 119F mutation among the 44 randomly selected F0 females; (b): the 119F mutation genotype for 12 each of DDT-alive and -dead F1 females, RR = homozygote resistant, RS = heterozygote resistant, and SS = susceptible; c: agarose-gel showing the L119F genotype distribution from allele-specific PCR (AS-PCR), top panel: 12 DDT-alive F1 females (2, 3, 6, and 8–12 are RR, 1, 4, 5 and 7 are RS), bottom panel: 12 DDT-dead F1 females (13, 14, 15, 17, 19, 21–24 are RS, 16 and 18 are SS, and 20 failed).\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ibrahim2020exploring 0 tables 6 figures\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/mieguim2021insights/figures/figure-4-7.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:15.52 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1. Seasonal relative abundance of Anopheles mosquito species in Mvoua. S1 short dry season, S2 long rainy season, S3 long dry season, S4 short rainy season\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " warnings.warn(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", + " obj = parse.load_str_bytes(\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/mieguim2021insights/figures/figure-5-8.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:15.57 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Seasonal variation in human biting behavior of malaria vectors in Mvoua from August 2018 to April 2019. In Inside (homes), Out outside, S1–S4 as defined in Fig. 1\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/mieguim2021insights/Insights_into_factors_sustaining_persistence_of_high_malaria_transmission_in__fo-Figure2-1.png'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:16.05 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Seasonal variation in human biting behavior of malaria vectors in Mvoua from August 2018 to April 2019. In Inside (homes), Out outside, S1–S4 as defined in Fig. 1\u001b[0m\n", + "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/mieguim2021insights/figures/figure-6-9.jpg'>\n", + " docs = reader.load_data(input_file, **kwargs)\n", + "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", + "\u001b[32m[0621 00:16.12 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Anopheles funestus and An. gambiae (s.l.) night‑biting cycle in Mvoua from August 2018 to April 2019\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "mieguim2021insights 4 tables 3 figures\n" + ] + }, + { + "data": { + "text/plain": [ + "285" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from llama_index.core import global_handler\n", + "records = []\n", + "\n", + "for ref, paper in tqdm(papers_subset.iterrows()):\n", + " doc = remote_dataset.add_document(ex.Document.from_file(\n", + " paper.file_path, reference=ref, pmid=paper.pmid, doi=paper.doi, id=paper.get('id')))\n", + " \n", + " metadata = {\"reference\": paper.name}\n", + " if isinstance(doc.pmid, (str, int)) and doc.pmid != 'nan':\n", + " metadata['pmid'] = doc.pmid\n", + " elif doc.id:\n", + " metadata['doc_id'] = str(doc.id)\n", + "\n", + " # Table segments\n", + " table_alignments = merge_extractions(\n", + " deepdoctection=tables[ref]['deepdoctection'],\n", + " unstructured=tables[ref]['unstructured'],\n", + " llmsherpa=tables[ref]['llmsherpa'],\n", + " nougat=tables[ref]['nougat'],\n", + " pdffigures2=tables[ref]['pdffigures2'],\n", + " )\n", + " table_records = table_alignments.to_records(dataset=remote_dataset, metadata=metadata)\n", + " records.extend(table_records)\n", + "\n", + " # Figure segments\n", + " ### comment out langfuse code \n", + " # global_handler.set_trace_params(\n", + " # name=f\"preprocess-{ref}\",\n", + " # session_id=ref,\n", + " # user_id='jonnytr',\n", + " # )\n", + " figure_segments = merge_extractions(\n", + " unstructured=figures[ref]['unstructured'],\n", + " pdffigures2=figures[ref]['pdffigures2'],\n", + " )\n", + " for alignment in figure_segments.items:\n", + " for source, segment in alignment.extractions.items():\n", + " if os.path.exists(segment.image) and segment.header:\n", + " _figure_extraction_response = segment.extract_html_table()\n", + " \n", + " figure_records = figure_segments.to_records(dataset=remote_dataset, metadata=metadata)\n", + " records.extend(figure_records)\n", + "\n", + " print(paper.name, len(table_records), 'tables', len(figure_records), 'figures')\n", + "\n", + "records = [r for r in records if r is not None]\n", + "len(records)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "638c5a8a-8815-4d2d-aed7-1056ea1a284d", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/html": [ + "
Pushing records to Argilla... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━  90% 0:00:04\n",
+                            "
\n" + ], + "text/plain": [ + "Pushing records to Argilla... \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;2;249;38;114m╸\u001b[0m\u001b[38;5;237m━━━━\u001b[0m \u001b[35m 90%\u001b[0m \u001b[36m0:00:04\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+                        ],
+                        "text/plain": []
+                    },
+                    "metadata": {},
+                    "output_type": "display_data"
+                },
+                {
+                    "data": {
+                        "text/html": [
+                            "
\n",
+                            "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "remote_dataset.add_records(records)" + ] + }, + { + "cell_type": "markdown", + "id": "f922936f-3ac0-4111-9049-d7c57945964b", + "metadata": {}, + "source": [ + "## Update Records" + ] + }, + { + "cell_type": "code", + "execution_count": 121, + "id": "43444fd9-a88c-40ec-8c2d-8fe2abd21bf2", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "24b6e0660e2842d0982fcf84bc77a4f8", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/840 [00:00╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮\n", + " in <module>:30 \n", + " \n", + " 27 │ │ │ ] \n", + " 28 │ │ ) \n", + " 29 │ │ \n", + " 30 │ │ nodes = vector_store.get_nodes(filters=filters) \n", + " 31 │ │ if nodes: \n", + " 32 │ │ │ # record.external_id = nodes[0].id_ \n", + " 33 │ │ │ print('record.external_id', nodes[0].id_ == record.id, len(nodes), header) \n", + " \n", + " /Users/jonnytr/Projects/extralit/src/extralit/extraction/vector_store.py:107 in get_nodes \n", + " \n", + " 104 def get_nodes(self, node_ids: Optional[List[str]] = None, filters: Optional[Metadata \n", + " 105 │ │ │ -> List[BaseNode]: \n", + " 106 │ │ collection = self._client.collections.get(self.index_name) \n", + " 107 │ │ all_properties = get_all_properties(self._client, self.index_name) \n", + " 108 │ │ \n", + " 109 │ │ if filters is not None: \n", + " 110 │ │ │ filters = _to_weaviate_filter(filters) \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/vector_stores/weaviate/utils. \n", + " py:96 in get_all_properties \n", + " \n", + " 93 if not client.collections.exists(class_name): \n", + " 94 │ │ raise ValueError(f\"{class_name} schema does not exist.\") \n", + " 95 \n", + " 96 properties = client.collections.get(class_name).config.get().properties \n", + " 97 return [p.name for p in properties] \n", + " 98 \n", + " 99 \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/collections/config.py:81 in get \n", + " \n", + " 78 │ │ │ │ If Weaviate reports a non-OK status. \n", + " 79 │ │ \"\"\" \n", + " 80 │ │ _validate_input([_ValidateArgument(expected=[bool], name=\"simple\", value=simple) \n", + " 81 │ │ schema = self.__get() \n", + " 82 │ │ if simple: \n", + " 83 │ │ │ return _collection_config_simple_from_json(schema) \n", + " 84 │ │ return _collection_config_from_json(schema) \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/collections/config.py:49 in \n", + " __get \n", + " \n", + " 46 │ │ self.__tenant = tenant \n", + " 47 \n", + " 48 def __get(self) -> Dict[str, Any]: \n", + " 49 │ │ response = self.__connection.get( \n", + " 50 │ │ │ path=f\"/schema/{self._name}\", \n", + " 51 │ │ │ error_msg=\"Collection configuration could not be retrieved.\", \n", + " 52 │ │ │ status_codes=_ExpectedStatusCodes(ok_in=200, error=\"Get collection configura \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/connect/v4.py:561 in get \n", + " \n", + " 558 │ │ \n", + " 559 │ │ request_url = self.url + self._api_version_path + path \n", + " 560 │ │ \n", + " 561 │ │ return self.__send( \n", + " 562 │ │ │ \"GET\", url=request_url, params=params, error_msg=error_msg, status_codes=sta \n", + " 563 │ │ ) \n", + " 564 \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/connect/v4.py:449 in __send \n", + " \n", + " 446 │ │ │ │ params=params, \n", + " 447 │ │ │ │ headers=self.__get_latest_headers(), \n", + " 448 │ │ │ ) \n", + " 449 │ │ │ res = self._client.send(req) \n", + " 450 │ │ │ if status_codes is not None and res.status_code not in status_codes.ok: \n", + " 451 │ │ │ │ raise UnexpectedStatusCodeError(error_msg, response=res) \n", + " 452 │ │ │ return cast(Response, res) \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_client.py:914 in send \n", + " \n", + " 911 │ │ \n", + " 912 │ │ auth = self._build_request_auth(request, auth) \n", + " 913 │ │ \n", + " 914 │ │ response = self._send_handling_auth( \n", + " 915 │ │ │ request, \n", + " 916 │ │ │ auth=auth, \n", + " 917 │ │ │ follow_redirects=follow_redirects, \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_client.py:942 in \n", + " _send_handling_auth \n", + " \n", + " 939 │ │ │ request = next(auth_flow) \n", + " 940 │ │ │ \n", + " 941 │ │ │ while True: \n", + " 942 │ │ │ │ response = self._send_handling_redirects( \n", + " 943 │ │ │ │ │ request, \n", + " 944 │ │ │ │ │ follow_redirects=follow_redirects, \n", + " 945 │ │ │ │ │ history=history, \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_client.py:979 in \n", + " _send_handling_redirects \n", + " \n", + " 976 │ │ │ for hook in self._event_hooks[\"request\"]: \n", + " 977 │ │ │ │ hook(request) \n", + " 978 │ │ │ \n", + " 979 │ │ │ response = self._send_single_request(request) \n", + " 980 │ │ │ try: \n", + " 981 │ │ │ │ for hook in self._event_hooks[\"response\"]: \n", + " 982 │ │ │ │ │ hook(response) \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_client.py:1015 in \n", + " _send_single_request \n", + " \n", + " 1012 │ │ │ ) \n", + " 1013 │ │ \n", + " 1014 │ │ with request_context(request=request): \n", + " 1015 │ │ │ response = transport.handle_request(request) \n", + " 1016 │ │ \n", + " 1017 │ │ assert isinstance(response.stream, SyncByteStream) \n", + " 1018 \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_transports/default.py:233 in \n", + " handle_request \n", + " \n", + " 230 │ │ │ extensions=request.extensions, \n", + " 231 │ │ ) \n", + " 232 │ │ with map_httpcore_exceptions(): \n", + " 233 │ │ │ resp = self._pool.handle_request(req) \n", + " 234 │ │ \n", + " 235 │ │ assert isinstance(resp.stream, typing.Iterable) \n", + " 236 \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/connection_pool.py:216 in \n", + " handle_request \n", + " \n", + " 213 │ │ │ │ closing = self._assign_requests_to_connections() \n", + " 214 │ │ │ \n", + " 215 │ │ │ self._close_connections(closing) \n", + " 216 │ │ │ raise exc from None \n", + " 217 │ │ \n", + " 218 │ │ # Return the response. Note that in this case we still have to manage \n", + " 219 │ │ # the point at which the response is closed. \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/connection_pool.py:196 in \n", + " handle_request \n", + " \n", + " 193 │ │ │ │ \n", + " 194 │ │ │ │ try: \n", + " 195 │ │ │ │ │ # Send the request on the assigned connection. \n", + " 196 │ │ │ │ │ response = connection.handle_request( \n", + " 197 │ │ │ │ │ │ pool_request.request \n", + " 198 │ │ │ │ │ ) \n", + " 199 │ │ │ │ except ConnectionNotAvailable: \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/connection.py:101 in \n", + " handle_request \n", + " \n", + " 98 │ │ │ self._connect_failed = True \n", + " 99 │ │ │ raise exc \n", + " 100 │ │ \n", + " 101 │ │ return self._connection.handle_request(request) \n", + " 102 \n", + " 103 def _connect(self, request: Request) -> NetworkStream: \n", + " 104 │ │ timeouts = request.extensions.get(\"timeout\", {}) \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/http11.py:143 in \n", + " handle_request \n", + " \n", + " 140 │ │ │ with ShieldCancellation(): \n", + " 141 │ │ │ │ with Trace(\"response_closed\", logger, request) as trace: \n", + " 142 │ │ │ │ │ self._response_closed() \n", + " 143 │ │ │ raise exc \n", + " 144 \n", + " 145 # Sending the request... \n", + " 146 \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/http11.py:113 in \n", + " handle_request \n", + " \n", + " 110 │ │ │ │ │ reason_phrase, \n", + " 111 │ │ │ │ │ headers, \n", + " 112 │ │ │ │ │ trailing_data, \n", + " 113 │ │ │ │ ) = self._receive_response_headers(**kwargs) \n", + " 114 │ │ │ │ trace.return_value = ( \n", + " 115 │ │ │ │ │ http_version, \n", + " 116 │ │ │ │ │ status, \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/http11.py:186 in \n", + " _receive_response_headers \n", + " \n", + " 183 │ │ timeout = timeouts.get(\"read\", None) \n", + " 184 │ │ \n", + " 185 │ │ while True: \n", + " 186 │ │ │ event = self._receive_event(timeout=timeout) \n", + " 187 │ │ │ if isinstance(event, h11.Response): \n", + " 188 │ │ │ │ break \n", + " 189 │ │ │ if ( \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/http11.py:224 in \n", + " _receive_event \n", + " \n", + " 221 │ │ │ │ event = self._h11_state.next_event() \n", + " 222 │ │ │ \n", + " 223 │ │ │ if event is h11.NEED_DATA: \n", + " 224 │ │ │ │ data = self._network_stream.read( \n", + " 225 │ │ │ │ │ self.READ_NUM_BYTES, timeout=timeout \n", + " 226 │ │ │ │ ) \n", + " 227 \n", + " \n", + " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_backends/sync.py:126 in read \n", + " \n", + " 123 │ │ exc_map: ExceptionMapping = {socket.timeout: ReadTimeout, OSError: ReadError} \n", + " 124 │ │ with map_exceptions(exc_map): \n", + " 125 │ │ │ self._sock.settimeout(timeout) \n", + " 126 │ │ │ return self._sock.recv(max_bytes) \n", + " 127 \n", + " 128 def write(self, buffer: bytes, timeout: typing.Optional[float] = None) -> None: \n", + " 129 │ │ if not buffer: \n", + "╰──────────────────────────────────────────────────────────────────────────────────────────────────╯\n", + "KeyboardInterrupt\n", + "\n" + ], + "text/plain": [ + "\u001b[31m╭─\u001b[0m\u001b[31m──────────────────────────────\u001b[0m\u001b[31m \u001b[0m\u001b[1;31mTraceback \u001b[0m\u001b[1;2;31m(most recent call last)\u001b[0m\u001b[31m \u001b[0m\u001b[31m───────────────────────────────\u001b[0m\u001b[31m─╮\u001b[0m\n", + "\u001b[31m│\u001b[0m in \u001b[92m\u001b[0m:\u001b[94m30\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m27 \u001b[0m\u001b[2m│ │ │ \u001b[0m] \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m28 \u001b[0m\u001b[2m│ │ \u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m29 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m30 \u001b[2m│ │ \u001b[0mnodes = vector_store.get_nodes(filters=filters) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m31 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m nodes: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m32 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[2m# record.external_id = nodes[0].id_\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m33 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[96mprint\u001b[0m(\u001b[33m'\u001b[0m\u001b[33mrecord.external_id\u001b[0m\u001b[33m'\u001b[0m, nodes[\u001b[94m0\u001b[0m].id_ == record.id, \u001b[96mlen\u001b[0m(nodes), header) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/Projects/extralit/src/extralit/extraction/\u001b[0m\u001b[1;33mvector_store.py\u001b[0m:\u001b[94m107\u001b[0m in \u001b[92mget_nodes\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m104 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mdef\u001b[0m \u001b[92mget_nodes\u001b[0m(\u001b[96mself\u001b[0m, node_ids: Optional[List[\u001b[96mstr\u001b[0m]] = \u001b[94mNone\u001b[0m, filters: Optional[Metadata \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m105 \u001b[0m\u001b[2m│ │ │ \u001b[0m-> List[BaseNode]: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m106 \u001b[0m\u001b[2m│ │ \u001b[0mcollection = \u001b[96mself\u001b[0m._client.collections.get(\u001b[96mself\u001b[0m.index_name) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m107 \u001b[2m│ │ \u001b[0mall_properties = get_all_properties(\u001b[96mself\u001b[0m._client, \u001b[96mself\u001b[0m.index_name) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m108 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m109 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m filters \u001b[95mis\u001b[0m \u001b[95mnot\u001b[0m \u001b[94mNone\u001b[0m: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m110 \u001b[0m\u001b[2m│ │ │ \u001b[0mfilters = _to_weaviate_filter(filters) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/vector_stores/weaviate/\u001b[0m\u001b[1;33mutils.\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[1;33mpy\u001b[0m:\u001b[94m96\u001b[0m in \u001b[92mget_all_properties\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 93 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mif\u001b[0m \u001b[95mnot\u001b[0m client.collections.exists(class_name): \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 94 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mraise\u001b[0m \u001b[96mValueError\u001b[0m(\u001b[33mf\u001b[0m\u001b[33m\"\u001b[0m\u001b[33m{\u001b[0mclass_name\u001b[33m}\u001b[0m\u001b[33m schema does not exist.\u001b[0m\u001b[33m\"\u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 95 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 96 \u001b[2m│ \u001b[0mproperties = client.collections.get(class_name).config.get().properties \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 97 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mreturn\u001b[0m [p.name \u001b[94mfor\u001b[0m p \u001b[95min\u001b[0m properties] \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 98 \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 99 \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/collections/\u001b[0m\u001b[1;33mconfig.py\u001b[0m:\u001b[94m81\u001b[0m in \u001b[92mget\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 78 \u001b[0m\u001b[2;33m│ │ │ │ \u001b[0m\u001b[33mIf Weaviate reports a non-OK status.\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 79 \u001b[0m\u001b[2;33m│ │ \u001b[0m\u001b[33m\"\"\"\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 80 \u001b[0m\u001b[2m│ │ \u001b[0m_validate_input([_ValidateArgument(expected=[\u001b[96mbool\u001b[0m], name=\u001b[33m\"\u001b[0m\u001b[33msimple\u001b[0m\u001b[33m\"\u001b[0m, value=simple) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 81 \u001b[2m│ │ \u001b[0mschema = \u001b[96mself\u001b[0m.__get() \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 82 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m simple: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 83 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mreturn\u001b[0m _collection_config_simple_from_json(schema) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 84 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mreturn\u001b[0m _collection_config_from_json(schema) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/collections/\u001b[0m\u001b[1;33mconfig.py\u001b[0m:\u001b[94m49\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92m__get\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 46 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[96mself\u001b[0m.__tenant = tenant \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 47 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 48 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mdef\u001b[0m \u001b[92m__get\u001b[0m(\u001b[96mself\u001b[0m) -> Dict[\u001b[96mstr\u001b[0m, Any]: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 49 \u001b[2m│ │ \u001b[0mresponse = \u001b[96mself\u001b[0m.__connection.get( \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 50 \u001b[0m\u001b[2m│ │ │ \u001b[0mpath=\u001b[33mf\u001b[0m\u001b[33m\"\u001b[0m\u001b[33m/schema/\u001b[0m\u001b[33m{\u001b[0m\u001b[96mself\u001b[0m._name\u001b[33m}\u001b[0m\u001b[33m\"\u001b[0m, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 51 \u001b[0m\u001b[2m│ │ │ \u001b[0merror_msg=\u001b[33m\"\u001b[0m\u001b[33mCollection configuration could not be retrieved.\u001b[0m\u001b[33m\"\u001b[0m, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 52 \u001b[0m\u001b[2m│ │ │ \u001b[0mstatus_codes=_ExpectedStatusCodes(ok_in=\u001b[94m200\u001b[0m, error=\u001b[33m\"\u001b[0m\u001b[33mGet collection configura\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/connect/\u001b[0m\u001b[1;33mv4.py\u001b[0m:\u001b[94m561\u001b[0m in \u001b[92mget\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m558 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m559 \u001b[0m\u001b[2m│ │ \u001b[0mrequest_url = \u001b[96mself\u001b[0m.url + \u001b[96mself\u001b[0m._api_version_path + path \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m560 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m561 \u001b[2m│ │ \u001b[0m\u001b[94mreturn\u001b[0m \u001b[96mself\u001b[0m.__send( \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m562 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[33m\"\u001b[0m\u001b[33mGET\u001b[0m\u001b[33m\"\u001b[0m, url=request_url, params=params, error_msg=error_msg, status_codes=sta \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m563 \u001b[0m\u001b[2m│ │ \u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m564 \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/connect/\u001b[0m\u001b[1;33mv4.py\u001b[0m:\u001b[94m449\u001b[0m in \u001b[92m__send\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m446 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mparams=params, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m447 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mheaders=\u001b[96mself\u001b[0m.__get_latest_headers(), \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m448 \u001b[0m\u001b[2m│ │ │ \u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m449 \u001b[2m│ │ │ \u001b[0mres = \u001b[96mself\u001b[0m._client.send(req) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m450 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mif\u001b[0m status_codes \u001b[95mis\u001b[0m \u001b[95mnot\u001b[0m \u001b[94mNone\u001b[0m \u001b[95mand\u001b[0m res.status_code \u001b[95mnot\u001b[0m \u001b[95min\u001b[0m status_codes.ok: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m451 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mraise\u001b[0m UnexpectedStatusCodeError(error_msg, response=res) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m452 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mreturn\u001b[0m cast(Response, res) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/\u001b[0m\u001b[1;33m_client.py\u001b[0m:\u001b[94m914\u001b[0m in \u001b[92msend\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 911 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 912 \u001b[0m\u001b[2m│ │ \u001b[0mauth = \u001b[96mself\u001b[0m._build_request_auth(request, auth) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 913 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 914 \u001b[2m│ │ \u001b[0mresponse = \u001b[96mself\u001b[0m._send_handling_auth( \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 915 \u001b[0m\u001b[2m│ │ │ \u001b[0mrequest, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 916 \u001b[0m\u001b[2m│ │ │ \u001b[0mauth=auth, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 917 \u001b[0m\u001b[2m│ │ │ \u001b[0mfollow_redirects=follow_redirects, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/\u001b[0m\u001b[1;33m_client.py\u001b[0m:\u001b[94m942\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92m_send_handling_auth\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 939 \u001b[0m\u001b[2m│ │ │ \u001b[0mrequest = \u001b[96mnext\u001b[0m(auth_flow) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 940 \u001b[0m\u001b[2m│ │ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 941 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mwhile\u001b[0m \u001b[94mTrue\u001b[0m: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 942 \u001b[2m│ │ │ │ \u001b[0mresponse = \u001b[96mself\u001b[0m._send_handling_redirects( \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 943 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mrequest, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 944 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mfollow_redirects=follow_redirects, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 945 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mhistory=history, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/\u001b[0m\u001b[1;33m_client.py\u001b[0m:\u001b[94m979\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92m_send_handling_redirects\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 976 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mfor\u001b[0m hook \u001b[95min\u001b[0m \u001b[96mself\u001b[0m._event_hooks[\u001b[33m\"\u001b[0m\u001b[33mrequest\u001b[0m\u001b[33m\"\u001b[0m]: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 977 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mhook(request) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 978 \u001b[0m\u001b[2m│ │ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 979 \u001b[2m│ │ │ \u001b[0mresponse = \u001b[96mself\u001b[0m._send_single_request(request) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 980 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mtry\u001b[0m: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 981 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mfor\u001b[0m hook \u001b[95min\u001b[0m \u001b[96mself\u001b[0m._event_hooks[\u001b[33m\"\u001b[0m\u001b[33mresponse\u001b[0m\u001b[33m\"\u001b[0m]: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 982 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mhook(response) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/\u001b[0m\u001b[1;33m_client.py\u001b[0m:\u001b[94m1015\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92m_send_single_request\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m1012 \u001b[0m\u001b[2m│ │ │ \u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m1013 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m1014 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mwith\u001b[0m request_context(request=request): \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m1015 \u001b[2m│ │ │ \u001b[0mresponse = transport.handle_request(request) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m1016 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m1017 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94massert\u001b[0m \u001b[96misinstance\u001b[0m(response.stream, SyncByteStream) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m1018 \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_transports/\u001b[0m\u001b[1;33mdefault.py\u001b[0m:\u001b[94m233\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m230 \u001b[0m\u001b[2m│ │ │ \u001b[0mextensions=request.extensions, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m231 \u001b[0m\u001b[2m│ │ \u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m232 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mwith\u001b[0m map_httpcore_exceptions(): \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m233 \u001b[2m│ │ │ \u001b[0mresp = \u001b[96mself\u001b[0m._pool.handle_request(req) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m234 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m235 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94massert\u001b[0m \u001b[96misinstance\u001b[0m(resp.stream, typing.Iterable) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m236 \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mconnection_pool.py\u001b[0m:\u001b[94m216\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m213 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mclosing = \u001b[96mself\u001b[0m._assign_requests_to_connections() \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m214 \u001b[0m\u001b[2m│ │ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m215 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[96mself\u001b[0m._close_connections(closing) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m216 \u001b[2m│ │ │ \u001b[0m\u001b[94mraise\u001b[0m exc \u001b[94mfrom\u001b[0m \u001b[94mNone\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m217 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m218 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[2m# Return the response. Note that in this case we still have to manage\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m219 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[2m# the point at which the response is closed.\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mconnection_pool.py\u001b[0m:\u001b[94m196\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m193 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m194 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mtry\u001b[0m: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m195 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0m\u001b[2m# Send the request on the assigned connection.\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m196 \u001b[2m│ │ │ │ │ \u001b[0mresponse = connection.handle_request( \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m197 \u001b[0m\u001b[2m│ │ │ │ │ │ \u001b[0mpool_request.request \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m198 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m199 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mexcept\u001b[0m ConnectionNotAvailable: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mconnection.py\u001b[0m:\u001b[94m101\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 98 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[96mself\u001b[0m._connect_failed = \u001b[94mTrue\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m 99 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mraise\u001b[0m exc \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m100 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m101 \u001b[2m│ │ \u001b[0m\u001b[94mreturn\u001b[0m \u001b[96mself\u001b[0m._connection.handle_request(request) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m102 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m103 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mdef\u001b[0m \u001b[92m_connect\u001b[0m(\u001b[96mself\u001b[0m, request: Request) -> NetworkStream: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m104 \u001b[0m\u001b[2m│ │ \u001b[0mtimeouts = request.extensions.get(\u001b[33m\"\u001b[0m\u001b[33mtimeout\u001b[0m\u001b[33m\"\u001b[0m, {}) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mhttp11.py\u001b[0m:\u001b[94m143\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m140 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mwith\u001b[0m ShieldCancellation(): \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m141 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mwith\u001b[0m Trace(\u001b[33m\"\u001b[0m\u001b[33mresponse_closed\u001b[0m\u001b[33m\"\u001b[0m, logger, request) \u001b[94mas\u001b[0m trace: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m142 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0m\u001b[96mself\u001b[0m._response_closed() \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m143 \u001b[2m│ │ │ \u001b[0m\u001b[94mraise\u001b[0m exc \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m144 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m145 \u001b[0m\u001b[2m│ \u001b[0m\u001b[2m# Sending the request...\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m146 \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mhttp11.py\u001b[0m:\u001b[94m113\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m110 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mreason_phrase, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m111 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mheaders, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m112 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mtrailing_data, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m113 \u001b[2m│ │ │ │ \u001b[0m) = \u001b[96mself\u001b[0m._receive_response_headers(**kwargs) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m114 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mtrace.return_value = ( \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m115 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mhttp_version, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m116 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mstatus, \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mhttp11.py\u001b[0m:\u001b[94m186\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92m_receive_response_headers\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m183 \u001b[0m\u001b[2m│ │ \u001b[0mtimeout = timeouts.get(\u001b[33m\"\u001b[0m\u001b[33mread\u001b[0m\u001b[33m\"\u001b[0m, \u001b[94mNone\u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m184 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m185 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mwhile\u001b[0m \u001b[94mTrue\u001b[0m: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m186 \u001b[2m│ │ │ \u001b[0mevent = \u001b[96mself\u001b[0m._receive_event(timeout=timeout) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m187 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mif\u001b[0m \u001b[96misinstance\u001b[0m(event, h11.Response): \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m188 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mbreak\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m189 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mif\u001b[0m ( \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mhttp11.py\u001b[0m:\u001b[94m224\u001b[0m in \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[92m_receive_event\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m221 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mevent = \u001b[96mself\u001b[0m._h11_state.next_event() \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m222 \u001b[0m\u001b[2m│ │ │ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m223 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mif\u001b[0m event \u001b[95mis\u001b[0m h11.NEED_DATA: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m224 \u001b[2m│ │ │ │ \u001b[0mdata = \u001b[96mself\u001b[0m._network_stream.read( \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m225 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0m\u001b[96mself\u001b[0m.READ_NUM_BYTES, timeout=timeout \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m226 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m227 \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_backends/\u001b[0m\u001b[1;33msync.py\u001b[0m:\u001b[94m126\u001b[0m in \u001b[92mread\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m123 \u001b[0m\u001b[2m│ │ \u001b[0mexc_map: ExceptionMapping = {socket.timeout: ReadTimeout, \u001b[96mOSError\u001b[0m: ReadError} \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m124 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mwith\u001b[0m map_exceptions(exc_map): \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m125 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[96mself\u001b[0m._sock.settimeout(timeout) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m126 \u001b[2m│ │ │ \u001b[0m\u001b[94mreturn\u001b[0m \u001b[96mself\u001b[0m._sock.recv(max_bytes) \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m127 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m128 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mdef\u001b[0m \u001b[92mwrite\u001b[0m(\u001b[96mself\u001b[0m, buffer: \u001b[96mbytes\u001b[0m, timeout: typing.Optional[\u001b[96mfloat\u001b[0m] = \u001b[94mNone\u001b[0m) -> \u001b[94mNone\u001b[0m: \u001b[31m│\u001b[0m\n", + "\u001b[31m│\u001b[0m \u001b[2m129 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m \u001b[95mnot\u001b[0m buffer: \u001b[31m│\u001b[0m\n", + "\u001b[31m╰──────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n", + "\u001b[1;91mKeyboardInterrupt\u001b[0m\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "record_updates = []\n", + "\n", + "for record in tqdm(remote_dataset.records):\n", + " metadata = record.metadata\n", + " data = get_record_data(record, fields='header', answers='header-correction')\n", + " header = data.get('header-correction', data.get('header'))\n", + " \n", + " if 'number' in metadata:\n", + " metadata['number'] = metadata['number'].replace('FigureSegment', 'Figure').replace('TableSegment', 'Table')\n", + " \n", + " if 'type' in metadata:\n", + " metadata['type'] = metadata['type'].replace('FigureSegment', 'figure').replace('TableSegment', 'table').lower()\n", + " elif 'table' in metadata.get('number', '').lower() or 'figure' in metadata.get('number', '').lower():\n", + " metadata['type'] = metadata['number'].split(' ')[0].lower()\n", + " else:\n", + " metadata['type'] = 'table'\n", + " \n", + " record.metadata = metadata \n", + " \n", + " record_updates.append(record)\n", + "len(record_updates)" + ] + }, + { + "cell_type": "code", + "execution_count": 117, + "id": "fa69261e-9783-4070-a2bc-67025b5b9596", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "d075cf03ad3d4af39a473665d5ef9bd1", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+                        ],
+                        "text/plain": []
+                    },
+                    "metadata": {},
+                    "output_type": "display_data"
+                },
+                {
+                    "data": {
+                        "text/html": [
+                            "
\n",
+                            "
\n" + ], + "text/plain": [ + "\n" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "remote_dataset.records.update(record_updates)" + ] + }, + { + "cell_type": "markdown", + "id": "03b51eb4-cf6f-41ba-a623-a4190728ed69", + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, + "source": [ + "# Evaluate OCR Accuracy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0af04a2f-91a0-4ee1-855e-454cf9b3a666", + "metadata": { + "editable": true, + "scrolled": true, + "slideshow": { + "slide_type": "" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "results = {}\n", + "count = 0\n", + "for reference in tqdm(papers_uploaded):\n", + " pred_tables = get_paper_tables(papers.loc[reference], remote_dataset, select='ranking')\n", + " true_tables = get_paper_tables(papers.loc[reference], remote_dataset, select='text-correction')\n", + " count += len(pred_tables)\n", + "\n", + " if len(pred_tables) != len(true_tables): \n", + " print(len(pred_tables), len(true_tables))\n", + "\n", + " pred_tables = [seg.html for seg in pred_tables.items]\n", + " true_tables = [seg.html for seg in true_tables.items]\n", + " results[reference] = grits_multi_tables(true_tables, pred_tables).mean().to_frame().T\n", + "\n", + "results = pd.concat(results).droplevel(level=1, axis=0)\n", + "metrics.mean(0).to_frame().T.map('{:.1%}'.format)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "991f60a8-2b46-49cd-a04b-ac59a1eb613b", + "metadata": {}, + "outputs": [], + "source": [ + "pred_tables" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8a74cf1d-92d7-426c-96b2-aec678811bd6", + "metadata": {}, + "outputs": [], + "source": [ + "count/sum(table_counts.values()), count, sum(table_counts.values())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0fc26c0e-7a9b-4757-b480-4db5ab2d025f", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "table_counts = {}\n", + "figure_counts = {}\n", + "for reference in papers_uploaded:\n", + " tables = get_paper_tables(papers.loc[reference], remote_dataset, select='text-correction', skip_status=None)\n", + " if not tables: continue\n", + " table_counts[reference] = max([table.number for table in tables.items if table.number and 'table' in table.header.lower()], default=0)\n", + " figure_counts[reference] = max([table.number for table in tables.items if table.number and table.header.lower().strip().startswith('fig')], default=0)\n", + "\n", + "sum(figure_counts.values()), sum(table_counts.values())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7d96f35f-0496-4feb-b1a2-9a49745efe40", + "metadata": {}, + "outputs": [], + "source": [ + "figure_counts" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1f485ca6-d8cf-4cee-9388-2ff398a851b6", + "metadata": {}, + "outputs": [], + "source": [ + "results = {}\n", + "durations = {}\n", + "count = 0\n", + "for reference in tqdm(papers_uploaded):\n", + " pred_tables = get_paper_tables(papers.loc[reference], remote_dataset, select='ranking')\n", + " true_tables = get_paper_tables(papers.loc[reference], remote_dataset, select='text-correction')\n", + " count += len(pred_tables)\n", + "\n", + " if len(pred_tables) != len(true_tables): \n", + " print(len(pred_tables), len(true_tables))\n", + "\n", + " for i, (pred_table, true_table) in enumerate(zip(pred_tables.items, true_tables.items)):\n", + " results[(reference, i)] = grits_multi_tables([true_table.html], [pred_table.html])\n", + " durations[(reference, i)] = pred_table.duration\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "66e63bc4-10dc-42e9-9ad5-ac18afa93b1f", + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "metrics = pd.concat(results).droplevel(level=-1, axis=0)\n", + "durations = pd.Series(durations, name='duration')\n", + "metrics.loc[durations.index, 'duration (s)'] = durations.values\n", + "metrics.columns = metrics.columns.map(lambda x: '_'.join(x).strip('_'))\n", + "metrics" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7fdf6c68-0694-426d-905e-740212962f9c", + "metadata": {}, + "outputs": [], + "source": [ + "durations_m = durations.groupby(level=0).sum() / 60\n", + "px.box(durations_m, orientation='h', width=500, height=220, \n", + " title='Manual table correction time per paper')\\\n", + " .update_xaxes(title='duration (minutes)', dtick=5)\\\n", + " .update_yaxes(title='')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00f379d8-bc18-4673-88f2-856cdcbc9ec3", + "metadata": {}, + "outputs": [], + "source": [ + "px.scatter(metrics.assign(grits_top_f1=metrics['grits_top_f1']*100,\n", + " grits_con_f1=metrics['grits_con_f1']*100),\n", + " title='Manual correction time per table depends
on OCR quality',\n", + " x='grits_top_f1',\n", + " y='duration (s)',\n", + " trendline='ols',\n", + " range_x=[100, 60],\n", + " range_y=[0, 800],\n", + " width=500,\n", + " height=400)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.19" + } }, - "tags": [] - }, - "outputs": [], - "source": [ - "%load_ext autoreload\n", - "%autoreload 2\n", - "# %load_ext heat" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "e21edbd0-c479-48db-b53d-becdf0cd060b", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# %%heat\n", - "from collections import defaultdict, Counter\n", - "import requests, json, rich, re, os, sys, unicodedata, io, hashlib, glob, collections\n", - "from IPython.display import IFrame, HTML, Image, JSON\n", - "from functools import partial\n", - "from tqdm.auto import tqdm\n", - "from pathlib import Path\n", - "from dotenv import load_dotenv\n", - "load_dotenv()\n", - "# sys.path.insert(0, 'src')\n", - "\n", - "import plotly.express as px\n", - "import pandas as pd\n", - "import numpy as np\n", - "\n", - "import argilla as rg\n", - "from argilla.client.feedback.schemas.enums import ResponseStatusFilter\n", - "from argilla.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor\n", - "from argilla.client.feedback.utils import create_token_highlights, audio_to_html, image_to_html, video_to_html\n", - "from argilla.client.feedback.utils import assign_records, assign_workspaces\n", - "\n", - "from pdf2image import convert_from_path\n", - "\n", - "import deepdoctection as dd\n", - "from unstructured.staging.argilla import stage_for_argilla\n", - "from llmsherpa.readers import LayoutPDFReader\n", - "\n", - "from extralit.extraction.models.paper import PaperExtraction, SchemaStructure\n", - "from extralit.preprocessing.methods import unstructured as unstructured \n", - "from extralit.preprocessing.methods import llmsherpa as llmsherpa\n", - "from extralit.preprocessing.methods import nougat as nougat\n", - "from extralit.preprocessing.segment import Segments, FigureSegment\n", - "from extralit.preprocessing.merge_segments import merge_extractions\n", - "from extralit.preprocessing.document import *\n", - "from extralit.convert.json_table import json_to_df, df_to_json\n", - "from extralit.convert.html_table import html_table_to_json\n", - "from extralit.convert.text import remove_markdown_from_string\n", - "from extralit.pipeline.ingest.record import get_record_data\n", - "from extralit.metrics.extraction import grits_from_pandas, grits_multi_tables\n", - "\n", - "from extralit.server.context.vectordb import get_weaviate_client\n", - "\n", - "os.environ[\"PYTORCH_MPS_HIGH_WATERMARK_RATIO\"] = \"0.0\"\n", - "pd.set_option('display.max_rows', 100)\n", - "pd.set_option('display.width', 1500)\n", - "pd.set_option('max_colwidth', 100)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "cb9cbd73-436b-4a54-8d20-4fa8bc6abc22", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/var/folders/yg/6jm_z4c91d30k5l7hm3s7h580000gp/T/ipykernel_75182/2468869230.py:9: ResourceWarning: unclosed \n", - " weaviate_client = get_weaviate_client()\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n" - ] - } - ], - "source": [ - "import weaviate\n", - "from extralit.extraction.vector_store import WeaviateVectorStore\n", - "from llama_index.core.vector_stores import (\n", - " MetadataFilter,\n", - " MetadataFilters,\n", - " FilterOperator, ExactMatchFilter,\n", - ")\n", - "\n", - "weaviate_client = get_weaviate_client()" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "9797f734-e7cc-4dd7-87ef-7c66172d31e9", - "metadata": {}, - "outputs": [], - "source": [ - "from llama_index.core import set_global_handler, Settings, callbacks, PromptTemplate\n", - "### comment out langfuse code \n", - "# import langfuse\n", - "# from langfuse.llama_index import LlamaIndexCallbackHandler\n", - "\n", - "# langfuse_callback_handler = LlamaIndexCallbackHandler(\n", - "# public_key=os.environ['LANGFUSE_PUBLIC_KEY'],\n", - "# secret_key=os.environ['LANGFUSE_SECRET_KEY'],\n", - "# host=os.environ['LANGFUSE_HOST'],\n", - "# )\n", - "# if not Settings.callback_manager.handlers:\n", - "# Settings.callback_manager.add_handler(langfuse_callback_handler)\n", - "# set_global_handler(\"langfuse\")\n", - "\n", - "# Ensure the global handler is NOT set to langfuse\n", - "set_global_handler(\"simple\")" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "7a4383b3-540a-4080-88ba-216cbccd9282", - "metadata": {}, - "outputs": [], - "source": [ - "client = rg.init(\n", - " api_url='http://10.24.49.60/',\n", - " api_key=\"386a5806-0182-41f6-8076-f4b557818f0b\",\n", - " workspace='preprocessing',\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "bcd39e63-cf3d-400a-a450-2701c4e15832", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "[UserModel(id=6d8ee721-49b7-4d1f-bf4c-d6b0eb187c62, first_name=Jonny, last_name=Tran, full_name=Jonny Tran, username=jonnytr, role=admin, workspaces=['jonnytr', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing', 'itn-recalibration-scratch'], inserted_at=2024-01-11 01:48:44.477722, updated_at=2024-03-22 06:56:39.809768),\n", - " UserModel(id=e96c9d89-36f4-4240-a592-9734087371d3, first_name=Amelia, last_name=Bertozzi-Villa, full_name=Amelia Bertozzi-Villa, username=ameliabv, role=admin, workspaces=['ameliabv', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing', 'itn-recalibration-scratch'], inserted_at=2024-01-11 01:48:44.549157, updated_at=2024-03-22 06:56:39.815293),\n", - " UserModel(id=91b12ed4-2aff-46d6-9eb3-c15d44e00e2a, first_name=Kate, last_name=Battle, full_name=Kate Battle, username=kateb, role=admin, workspaces=['kateb', 'itn-recalibration', 'gold-standard', 'test-extraction', 'preprocessing', 'itn-recalibration-scratch'], inserted_at=2024-01-11 01:48:44.553978, updated_at=2024-03-22 06:56:39.820769)]" - ] - }, - "execution_count": 20, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "remote_dataset = rg.FeedbackDataset.from_argilla(name=\"Table-Preprocessing\", workspace=\"itn-recalibration\")\n", - "\n", - "users = rg.Workspace.from_name('itn-recalibration').users\n", - "users_id_to_username = {u.id: u.username for u in users}\n", - "users" - ] - }, - { - "cell_type": "markdown", - "id": "17374647-df33-4aab-9827-0162e5b522ae", - "metadata": {}, - "source": [ - "# Load papers" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "219e6dd1-cae3-461c-bdad-78a50ca38cac", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "(197, 32)" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "papers = pd.read_parquet('config/extraction_queue_197papers_2024-04-03.parquet')\n", - "extractions = pd.read_csv('data/processed/extractions_preJonny_cleaned.csv', index_col='reference')\n", - "\n", - "papers = papers.assign(collections=papers['collections'].map(', '.join))\n", - "\n", - "papers.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "3155d4ed-b741-4c93-9c35-eeb428f189b3", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# Upload PDFs if not already exist in the Argilla database\n", - "# for ref, paper in tqdm(papers.iterrows()):\n", - "# doc = remote_dataset.add_document(rg.Document.from_file(\n", - "# paper.file_path, reference=ref, pmid=paper.pmid, doi=paper.doi, id=paper.get('id')))" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "id": "bda4d8fc-8814-4ae0-9145-7dc490ffe11c", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "bc52eb13e2f54ec1978013affd468883", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/670 [00:00, labels={'text-1': 'Method 1', 'text-2': 'Method 2', 'text-3': 'Method 3', 'text-4': 'Method 4', 'text-5': 'Method 5', 'none': 'None'}, visible_labels=None), MultiLabelQuestion(name='mismatched', title='Which of the method(s) extracted the wrong table/figure? (if any)', description='This indication helps in evaluating these models accuracy', required=False, type=, labels={'text-1': 'Method 1', 'text-2': 'Method 2', 'text-3': 'Method 3', 'text-4': 'Method 4', 'text-5': 'Method 5'}, visible_labels=None, labels_order=), TextQuestion(name='header-correction', title='Correct the table or figure title:', description=None, required=False, type='text', use_markdown=False, use_table=False), TextQuestion(name='text-correction', title='Correct the extracted data:', description=None, required=False, type='text', use_markdown=True, use_table=True), TextQuestion(name='notes', title='Mention any notes here', description=None, required=False, type='text', use_markdown=False, use_table=False)]\n", - " guidelines=None)\n", - " metadata_properties=[TermsMetadataProperty(name='reference', title='Reference', visible_for_annotators=True, type='terms', values=None), TermsMetadataProperty(name='page_number', title='Page Number', visible_for_annotators=True, type='terms', values=None), TermsMetadataProperty(name='number', title='Table/Figure Number', visible_for_annotators=True, type='terms', values=None), TermsMetadataProperty(name='type', title='Element type', visible_for_annotators=True, type='terms', values=None), TermsMetadataProperty(name='pmid', title='Document Pubmed ID', visible_for_annotators=True, type='terms', values=None), TermsMetadataProperty(name='doc_id', title='Document ID', visible_for_annotators=False, type='terms', values=None), FloatMetadataProperty(name='probability', title='Detection probability', visible_for_annotators=True, type='float', min=None, max=None), TermsMetadataProperty(name='annotators', title='annotators', visible_for_annotators=True, type='terms', values=None)])\n", - " vectors_settings=[])\n", - ")" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from extralit.pipeline.export.dataset import create_preprocessing_dataset\n", - "\n", - "dataset = create_preprocessing_dataset()\n", - "\n", - "remote_dataset = dataset.push_to_argilla(name=\"Table-Preprocessing\", workspace=\"itn-recalibration-scratch\")\n", - "\n", - "# Initialize the TextDescriptivesExtractor\n", - "# tde = TextDescriptivesExtractor(\n", - "# model=\"en\",\n", - "# metrics=['descriptive_stats'],\n", - "# fields=[\"text-1\"],\n", - "# visible_for_annotators=True,\n", - "# show_progress=True,\n", - "# )\n", - "\n", - "# pdf_reader = LayoutPDFReader(\"https://readers.llmsherpa.com/api/document/developer/parseDocument?renderFormat=all\")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "049797df-0875-4c79-9cf3-71ceaa05a2ba", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "markdown", - "id": "ac0ecee1-12ed-4e00-8f6f-b08e4716ccc5", - "metadata": {}, - "source": [ - "# Update dataset" - ] - }, - { - "cell_type": "markdown", - "id": "7fa5953a-be37-44b5-bcb4-3050c93c0f3f", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "## Choose papers queue" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "79eb1486-bc8a-4de8-82c0-ff72bfa155e1", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "text/plain": [ - "'verma2022laboratory.accrombessi2021assessing.ngufor2022comparative.gleave2021piperonyl.diouf2022evaluation.syme2021which.meiwald2022association.gichuki2021bioefficacy.kibondo2022influence.zahouli2023small.toe2018do.nash2021systematic.accrombessi2023efficacy.syme2022pyrethroid.menze2022experimental.gebremariam2021evaluation.briet2020physical.ibrahim2020exploring.mieguim2021insights'" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# papers_subset = ['Atieli2010effectgambiaeMalaria', Dabire2006personalpyrethroidsMalaria', 'Ochomo2017insecticidekenyaEmerging', 'Vatandoost2013washtestArthropod']\n", - "# papers_subset = ['Canning2023unwantedcountriesStudies', 'Tiruneh2020prevalencemetaanalysisPlos', 'Daley2018addressingintervention', 'Goodson2011changingafricaInfectious']\n", - "# papers_subset = ['ketoh2018efficacy', 'darriet2005pyrethoid', 'magesa1991trial', 'whopes2008report', 'quinones1998permethrin', 'kawada2014small', 'kawada2014preventive', 'randriamaherijaona2015do', 'kilian2011evidence',]\n", - "# papers_subset = ['mbogo1996impact', 'menze2020experimental', 'kitau2012species', 'kilian2008long', 'mnzava2001malaria', 'pmi2018senegal', 'hougard2003efficacy', 'pennetier2013efficacy',]\n", - "# papers_subset = ['whopes2007report', 'ngufor2016efficacy', 'okia2013bioefficacy', 'mosha2008comparative', 'quinones1997anopheles', 'ahoua2012status', 'sreehari2009wash', 'abdulla2005spatial', 'pmi2019nigeria', 'tan2016longitudinal',]\n", - "# papers_subset = ['pmi2019myanmar', 'wills2013physical', 'tokponnon2014impact', 'marchant2002socially', 'pinder2015efficacy', 'nevill1996insecticide', 'muller2006effects', 'terlouw2010impact', 'msuya1991trial', 'tungu2021efficacy',]\n", - "papers_subset = ['hamel2011combination', 'ter2003impact', 'moiroux2014human', 'schellenberg2001effect', 'tamari2020protective', 'yewhalaw2022experimental', 'tungu2021field', 'sanou2021insecticide', 'kouassi2020susceptibility', 'mulatier2019prior', \n", - " 'ngongang2022reduced', 'lorenz2020comparative', 'hien2021evidence', 'ngufor2020efficacy', 'sovi2022physical', 'adageba2022bio', 'githinji2020impact', 'grisales2021pyriproxyfen', 'tungu2021bio', 'tungu2021effectiveness',]\n", - "papers_subset = ['verma2022laboratory', 'accrombessi2021assessing', 'ngufor2022comparative', 'gleave2021piperonyl', 'diouf2022evaluation', 'syme2021which', 'meiwald2022association', 'gichuki2021bioefficacy', 'kibondo2022influence', 'zahouli2023small', 'toe2018do', 'nash2021systematic', 'accrombessi2023efficacy', 'syme2022pyrethroid', 'menze2022experimental', 'gebremariam2021evaluation', 'briet2020physical', 'ibrahim2020exploring', 'mieguim2021insights',]\n", - "'.'.join(papers_subset)" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "decef88a-4506-4d65-8629-c5fc6e1921e2", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "Index(['verma2022laboratory', 'accrombessi2021assessing', 'ngufor2022comparative', 'gleave2021piperonyl', 'diouf2022evaluation', 'syme2021which', 'meiwald2022association', 'gichuki2021bioefficacy', 'kibondo2022influence', 'zahouli2023small', 'toe2018do', 'nash2021systematic', 'accrombessi2023efficacy', 'syme2022pyrethroid', 'menze2022experimental', 'gebremariam2021evaluation', 'briet2020physical', 'ibrahim2020exploring', 'mieguim2021insights'], dtype='object', name='reference')" - ] - }, - "execution_count": 22, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "papers_subset = papers.loc[papers_subset]\n", - "papers_subset.index" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "443939fc-8d9c-4c67-9ce2-79246b467b44", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(120, 32)" - ] - }, - "execution_count": 18, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "papers_subset = papers.loc[papers.index.difference(papers_uploaded)]\n", - "papers_subset.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "85aee0d5-70a3-4892-9947-3655a49506d6", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "['abdella2009does',\n", - " 'abdulla2001impact',\n", - " 'abilio2015bio',\n", - " 'accrombessi2021assessing',\n", - " 'accrombessi2023efficacy',\n", - " 'agossa2014laboratory',\n", - " 'agossa2015impact',\n", - " 'akoton2018experimental',\n", - " 'allossogbe2017who',\n", - " 'alonso1993malaria',\n", - " 'anshebo2014estimation',\n", - " 'asidi2004experimental',\n", - " 'asidi2005experimental',\n", - " 'asidi2012loss',\n", - " 'awolola2014impact',\n", - " 'badolo2012experimental',\n", - " 'bayili2017evaluation',\n", - " 'bayili2019experimental',\n", - " 'birhanu2019bio',\n", - " 'bobanga2013field',\n", - " 'bogh1998permethrin',\n", - " 'boussougou2017physical',\n", - " 'briet2020physical',\n", - " 'camara2018efficacy',\n", - " 'chandre2010field',\n", - " 'chouaibou2006efficacy',\n", - " 'corbel2010field',\n", - " 'curtis2003insecticide',\n", - " 'dalessandro1995mortality',\n", - " 'darriet2011combining',\n", - " 'diouf2022evaluation',\n", - " 'djenontin2009managing',\n", - " 'djenontin2010indoor',\n", - " 'etang2004reduced',\n", - " 'etang2007preliminary',\n", - " 'etang2013evaluation',\n", - " 'etang2016when',\n", - " 'fadel2019combination',\n", - " 'fane2012anopheles',\n", - " 'gebremariam2021evaluation',\n", - " 'gichuki2021bioefficacy',\n", - " 'gleave2021piperonyl',\n", - " 'guillet2001combined',\n", - " 'hassan2008retention',\n", - " 'hauser2019ability',\n", - " 'hawley2003community',\n", - " 'henry2005protective',\n", - " 'hougard2002useful',\n", - " 'howard2000evidence',\n", - " 'hughes2020anopheles',\n", - " 'ibrahim2019high',\n", - " 'ibrahim2020exploring',\n", - " 'jones2012aging',\n", - " 'kawada2014small',\n", - " 'kibondo2022influence',\n", - " 'kilian2015field',\n", - " 'kolaczinski2000comparison',\n", - " 'kouassi2020susceptibility',\n", - " 'koudou2011efficacy',\n", - " 'kulkarni2007efficacy',\n", - " 'kweka2011durability',\n", - " 'kweka2017efficacy',\n", - " 'kweka2019bio',\n", - " 'lindblade2005evaluation',\n", - " 'lines1987experimental',\n", - " 'magbity1997effects',\n", - " 'mahande2018bio',\n", - " 'malima2009behavioural',\n", - " 'malima2013evaluation',\n", - " 'masalu2018potential',\n", - " 'massue2016durability',\n", - " 'maxwell2002effect',\n", - " 'maxwell2006tests',\n", - " 'meiwald2022association',\n", - " 'menze2022experimental',\n", - " 'mieguim2021insights',\n", - " 'mosha2008experimental',\n", - " 'msangi2008effects',\n", - " 'msuya1991trial',\n", - " 'mulatier2019prior',\n", - " 'murray2020barrier',\n", - " 'musa2020long',\n", - " 'nash2021systematic',\n", - " 'nguessan2016chlorfenapyr',\n", - " 'ngufor2014combining',\n", - " 'ngufor2014olyset',\n", - " 'ngufor2017which',\n", - " 'ngufor2022comparative',\n", - " 'obi2020monitoring',\n", - " 'ohashi2012efficacy',\n", - " 'okoyo2015comparing',\n", - " 'okumu2012implications',\n", - " 'omondi2017quantifying',\n", - " 'oumbouke2019evaluation',\n", - " 'oxborough2013itn',\n", - " 'oxborough2015new',\n", - " 'pmi2017madagascar',\n", - " 'pmi2018mozambique',\n", - " 'pmi2018senegal',\n", - " 'pmi2019myanmar',\n", - " 'pmi2019nigeria',\n", - " 'pmi2019tanzania',\n", - " 'randriamaherijaona2017durability',\n", - " 'riveron2018high',\n", - " 'solomon2018bed',\n", - " 'spitzen2017effect',\n", - " 'syme2021which',\n", - " 'syme2022pyrethroid',\n", - " 'tami2004evaluation',\n", - " 'tiono2018efficacy',\n", - " 'toe2018do',\n", - " 'tungu2015evaluation',\n", - " 'vatandoost2006comparative',\n", - " 'verma2022laboratory',\n", - " 'whopes2007report',\n", - " 'whopes2008report',\n", - " 'winkler2012efficacy',\n", - " 'yewhalaw2022experimental',\n", - " 'zahouli2023small',\n", - " 'zhou2016insecticide']" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "papers_subset.index.tolist()" - ] - }, - { - "cell_type": "markdown", - "id": "075b961c-2d35-4317-b48a-f5afb638c236", - "metadata": { - "scrolled": true - }, - "source": [ - "## Extract segments" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "8389d02d-7321-4308-be10-ea17d91b37b1", - "metadata": {}, - "outputs": [], - "source": [ - "# nougat_model = nougat.NougatOCR()\n", - "# nougat_model.batch_size = 1\n", - "nougat_model = None" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "57cd8e2e-4e76-4581-a813-33e83057fe72", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "b708665ba6fc4a37814360a3aac592ab", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/19 [00:00PermaNet® (n) %, 95 % CIOlyset® (n) %, 95 % CIAll nets (n) %, 95 % CILLIN age 12 months(14) 77.8, 58.6–96.7†(6) 33.3, 11.6–55.1(20) 55.6, 39.3–71.824 months(7) 38.9, 16.4–61.4(6) 30.0, 9.9–50.1(13) 34.2, 19.1–51.4Minimal effectiveness 12 months(18) 100.0, 100.0–100.0†(14) 77.8, 58.6–97.0(32) 88.9, 78.6–96.924 months(11) 61.1, 38.6–83.6(14) 70.0, 49.9–88.1(25) 65.8, 50.7–80.9*" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 21, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "id = 'tan2016longitudinal'\n", - "i = -1\n", - "table = tables[id]['llmsherpa'].items[i]\n", - "\n", - "print(papers.loc[id, 'file_path'])\n", - "print(table.header, table.number)\n", - "HTML(table.html)" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "d422ee41-a29e-436c-bf51-cb664f2ceaf3", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "FigureSegment(header='Fig. 2 Correlation of chemical and bioassay results (95 % confidence intervals shown in shaded area)', page_number=10, number=2)" - ] - }, - "execution_count": 23, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fig = figures['tan2016longitudinal']['pdffigures2'][0]\n", - "fig" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "e6e8c343-39c6-4c77-bd14-111a8a2084c8", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/html": [ - "" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "HTML(image_to_html(fig.image))" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "fc490766-1f29-4591-be82-1180f2521de5", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:416: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/tan2016longitudinal/tan2016longitudinal-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0520 13:54.02 @segment.py:246]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Correlation of chemical and bioassay results (95 % confidence intervals shown in shaded area)\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n" - ] - }, - { - "data": { - "text/plain": [ - "FigureExtractionResponse(summary='The figure shows the correlation between chemical concentrations (Deltamethrin and Permethrin) and bioassay results (Knock down and Mortality) in mosquitoes. The shaded areas represent 95% confidence intervals.', html='\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n
DeltamethrinPermethrin
Knock down (% mosquitoes)
Mortality (% mosquitoes)
Mean insecticide concentration in mg/m²
')" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "_figure_extraction_response = fig.extract_html_table()" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "6b5c2d46-8a0d-473d-b605-dc2bbac57f6b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
DeltamethrinPermethrin
Knock down (% mosquitoes)
Mortality (% mosquitoes)
Mean insecticide concentration in mg/m²
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "HTML(fig.html)" - ] - }, - { - "cell_type": "markdown", - "id": "97efd4ef-c6d3-4cd5-a9dd-044c6ee08339", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, - "source": [ - "### deepdoctection (experiments)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "e92c5fe3-486e-4296-b636-c144879b1ebf", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "analyzer =dd.get_dd_analyzer(config_overwrite=[\n", - " \"PT.LAYOUT.WEIGHTS=microsoft/table-transformer-detection/pytorch_model.bin\", # TATR table detection model\n", - " \"PT.ITEM.WEIGHTS=microsoft/table-transformer-structure-recognition/pytorch_model.bin\", # TATR table segmentation model\n", - " \"PT.ITEM.FILTER=['table']\",\n", - " \"OCR.USE_DOCTR=True\", # we disable Tesseract and use DocTr as OCR engine\n", - " \"OCR.USE_TESSERACT=False\",\n", - "])\n", - "\n", - "df = analyzer.analyze(path='data/pdf/Etang_et_al_2007_Trans_RSTMH.pdf')\n", - "df.reset_state()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9577cb2e-d4cb-4d01-903d-526dc3d4f8b1", - "metadata": {}, - "outputs": [], - "source": [ - "# doc = iter(df)\n", - "page = next(doc)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f3f98599-3c68-4087-bef5-220bc5cc5ae7", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "page.annotations[1]._category_name" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "74b33bd9-ae32-411e-b51c-2c25ac792be6", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "page.annotations[0]._annotation_id" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ae277688-0848-4c83-9b59-aa7e7605022f", - "metadata": {}, - "outputs": [], - "source": [ - "table.annotation_id" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f898123d-ea83-4ed4-b065-8e5228ee67cc", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "table = page.tables[0]\n", - "print(table.html)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9fe8d5d9-ebd8-4b55-bf98-4a8b6f431270", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "table.cells" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f9181c56-6802-40bd-9cdd-bac79bbde616", - "metadata": {}, - "outputs": [], - "source": [ - "page.viz(ignore_default_token_class=True, interactive=True)" - ] - }, - { - "cell_type": "markdown", - "id": "d7235e69-eddd-45f9-bdd8-ec34cbaf479a", - "metadata": { - "editable": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "source": [ - "#### Evaluate tables extracted" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4e940570-fac7-4f80-a329-da823d51e778", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "df = tables['Etang2007']['unstructured'][0].to_df()\n", - "df = df.dropna(axis=0, how='all').dropna(axis=1, how='all')\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fa7e5bea-93dd-4ac6-bb93-a892ebc9d538", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# for id, paper in tqdm(papers_subset.iterrows(), total=len(papers_subset)):\n", - "# text_segs, table_segs, _ = create_or_load_nougat_segments(paper, nougat_model=nougat_model, load_only=False, save=True)" - ] - }, - { - "cell_type": "markdown", - "id": "203095af-75db-4d00-ab94-3df87c157fb0", - "metadata": {}, - "source": [ - "## Create records" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "1817cbdf-b1cb-4be7-ae95-9b5ede7bcf78", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "95396ae97c1841ce9e59eea7e67699ba", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "0it [00:00, ?it/s]" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/verma2022laboratory/LLINPhaseIVV2022-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:04.51 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Schematic flow of work plan\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/verma2022laboratory/LLINPhaseIVV2022-Figure3-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:04.58 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Graph showing % KnockDown (%KD) and % Mortality in cone bioassays to determine the regeneration time of HILNet\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/verma2022laboratory/LLINPhaseIVV2022-Figure4-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:05.02 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Graph showing % KnockDown and % Mortality in wash resistance studies\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/accrombessi2021assessing/figures/figure-4-4.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:05.07 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Study area. Map showing Cove, Zagnanado and Ouinhi Districts, located in Zou department, central Benin, West Africa (Panel a); the 60 study clusters identified with core and buffer area and intervention allocation (Panel b); a minimum of 1000 m area was created between households in adjacent clusters (Panel c). Source of map: Own from the study investigators (CT, JC, MA, ED).\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "verma2022laboratory 3 tables 3 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/accrombessi2021assessing/Assessing_the_efficacy_of_two_dual_active_ingredients_long_lasting_insecticidal_-Figure1-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:05.14 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Study area. Map showing Cove, Zagnanado and Ouinhi Districts, located in Zou department, central Benin, West Africa (Panel a); the 60 study clusters identified with core and buffer area and intervention allocation (Panel b); a minimum of 1000m area was created between households in adjacent clusters (Panel c). Source of map: Own from the study investigators (CT, JC, MA, ED).\u001b[0m\n", - "\u001b[32m[0621 00:05.22 @staging.py:69]\u001b[0m \u001b[5m\u001b[35mWRN\u001b[0m \u001b[97mAttempting to fix broken JSON: ... 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60\\n \\n \\n\"}\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "accrombessi2021assessing 2 tables 1 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ngufor2022comparative/figures/figure-6-7.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:05.23 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ngufor2022comparative/Comparative_efficacy_of_two_pyrethroid_piperonyl_butoxide_nets_Olyset_Plus_and_-Figure1-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:05.28 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Mortality of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ngufor2022comparative/figures/figure-7-8.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:05.33 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Blood-feeding rates of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ngufor2022comparative/Comparative_efficacy_of_two_pyrethroid_piperonyl_butoxide_nets_Olyset_Plus_and_-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:05.39 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Blood-feeding rates of wild pyrethroid-resistant Anopheles gambiae s.l. in experimental huts in Cove, Benin evaluating different net types. Vertical lines indicate 95% confidence interval estimates whilst bars with the same letter label are not significantly different (P > 0.05)\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ngufor2022comparative/figures/figure-9-9.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:05.44 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mortality (%) of susceptible and resistant strains of An. gambiae s.l. in cone bioassays with Olyset Plus and Olyset Net. S R\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ngufor2022comparative/Comparative_efficacy_of_two_pyrethroid_piperonyl_butoxide_nets_Olyset_Plus_and_-Figure3-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:05.49 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mortality (%) of susceptible and resistant strains of An. gambiae s.l. in cone bioassays with Olyset Plus and Olyset Net. S = susceptible, R = resistant\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ngufor2022comparative/figures/figure-9-10.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:05.57 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Tunnel test mortality (%) of susceptible and resistant strains of Anopheles gambiae s.l. exposed to Olyset Plus vs. Olyset Net\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ngufor2022comparative/Comparative_efficacy_of_two_pyrethroid_piperonyl_butoxide_nets_Olyset_Plus_and_-Figure4-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:06.01 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Tunnel test mortality (%) of susceptible and resistant strains of Anopheles gambiae s.l. exposed to Olyset Plus vs. Olyset Net\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ngufor2022comparative/figures/figure-10-11.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:06.08 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Blood-feeding inhibition (%) of susceptible and resistant strains of An. gambiae s.l. in tunnel tests with Olyset Plus and Olyset Net. Blood-feeding inhibition was calculated relative to the control tunnel. S\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ngufor2022comparative/Comparative_efficacy_of_two_pyrethroid_piperonyl_butoxide_nets_Olyset_Plus_and_-Figure5-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:06.16 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Blood-feeding inhibition (%) of susceptible and resistant strains of An. gambiae s.l. in tunnel tests with Olyset Plus and Olyset Net. Blood-feeding inhibition was calculated relative to the control tunnel. S = susceptible, R = Resistant\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ngufor2022comparative 9 tables 5 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/gleave2021piperonyl/CD012776-Figure1-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:06.27 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1.   Study flow diagram.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/gleave2021piperonyl/CD012776-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:06.34 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2.   ‘Risk of bias' summary: review authors' judgements about each risk of bias item for each included study.\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "gleave2021piperonyl 133 tables 2 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/diouf2022evaluation/figures/figure-4-7.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:06.44 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Localities where LLINs were distributed and durability monitored\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/diouf2022evaluation/figures/figure-8-8.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:06.47 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/diouf2022evaluation/Evaluation_of_the_residual_efficacy_and_physical_durability_of_five_long_lasting-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:07.06 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Retained proportions not removed (red), retention after sampling (blue) and cumulative number of nets removed by type and semester after 3 years\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/diouf2022evaluation/figures/figure-10-9.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:07.11 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Categories of holes by type and semester after 3 years. Size 1, size 2, size 3\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/diouf2022evaluation/Evaluation_of_the_residual_efficacy_and_physical_durability_of_five_long_lasting-Figure3-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:07.17 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Categories of holes by type and semester after 3 years. Size 1, size 2, size 3\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/diouf2022evaluation/Evaluation_of_the_residual_efficacy_and_physical_durability_of_five_long_lasting-Figure4-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:07.25 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Insecticide concentration in mg/m2 according to the type LLINs and semester\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/diouf2022evaluation/Evaluation_of_the_residual_efficacy_and_physical_durability_of_five_long_lasting-Figure5-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:07.32 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Correlation of chemical and bioassay results by type of LLIN and semester\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "diouf2022evaluation 8 tables 5 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/syme2021which/figures/figure-9-2.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:07.41 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 1. Monthly mortality rates of wild, free-flying pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts with pirimiphos-methyl CS IRS applied alone and in combination with DuraNet1 in Covè, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/syme2021which/pone_0245804_pdf-Figure1-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:07.47 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 1. Monthly mortality rates of wild, free-flying pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts with pirimiphos-methyl CS IRS applied alone and in combination with DuraNet1 in Covè, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/syme2021which/pone_0245804_pdf-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:07.58 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 2. Monthly mortality rates of wild, free-flying pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts with chlorfenapyr IRS applied alone and in combination with DuraNet1 in Covè, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/syme2021which/figures/figure-10-4.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:08.03 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 3. Monthly mortality rates of wild, free-flying pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts with bendiocarb IRS applied alone and in combination with DuraNet1 in Covè, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/syme2021which/pone_0245804_pdf-Figure3-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:08.09 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 3. Monthly mortality rates of wild, free-flying pyrethroid-resistant Anopheles gambiae sensu lato entering experimental huts with bendiocarb IRS applied alone and in combination with DuraNet1 in Covè, southern Benin. Mortality was cumulated over successive months. Error bars represent 95% CI.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/syme2021which/pone_0245804_pdf-Figure4-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:08.14 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig 4. Mortality (72 h) of laboratory maintained, insecticide-susceptible Anopheles gambiae sensu stricto Kisumu colony exposed to IRS-treated hut walls in monthly, 30 mins wall cone bioassays in experimental huts in Covè, southern Benin. Error bars represent 95% CI. Approximately fifty (50) 2–3 days old mosquitoes were exposed for 30 mins to each IRS treated hut in batches of 10 per cone and mortality recorded after 72 h.\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "syme2021which 5 tables 4 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/meiwald2022association/figures/figure-4-3.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:08.19 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. A, Resistance intensity of field-caught Anopheles gambiae sensu lato (s.l.) after exposure to 1, 2, 5, or 10 times the diagnostic dose of pyrethroid insecticides. Mean knockdown/acute toxicity rates after 30-minute exposure are shown with 95% confidence intervals (CIs). Knockdown or mortality rates at the same dose per insecticide sharing a letter do not differ significantly (P > .05). Mortality rates <90% (lower red line) represent confirmed resistance at the diagnostic dose (1×), and rates <98% (upper red line) indicate moderate to high-intensity resistance or high-intensity resistance at 5× and 10×, respectively, as defined by the World Health Organization [24]. B, Restoration of deltamethrin susceptibility of field-caught A. gambiae s.l. after preexposure to piperonyl butoxide (PBO). Mean knockdown/acute toxicity after 30-minute exposure to 1 or 2 times the diagnostic dose of deltamethrin with 95% CIs. Knockdown/mortality rates do not differ significantly between pyrethroid only and synergist plus pyrethroid sharing a letter (P > .05). Red line at 98% mortality rate represents metabolic resistance mechanisms partially involved [24].\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/meiwald2022association/figures/figure-6-20.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:08.25 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. The longevity of field-caught Anopheles gambiae sensu lato after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (A) and 1× (B), 5× (C), and 10× (D) the diagnostic dose of pyrethroid insecticides in Centers for Disease Control and Prevention resistance intensity assays. Kaplan-Meier sur- vival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/meiwald2022association/jiaa699-Figure3-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:08.32 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. The longevity of field-caught Anopheles gambiae sensu lato after exposure to long-lasting insecticidal nets (LLINs) in World Health Organization cone assays (A) and 1× (B), 5× (C), and 10× (D) the diagnostic dose of pyrethroid insecticides in Centers for Disease Control and Prevention resistance intensity assays. Kaplan-Meier survival curves indicate the proportion alive each day after exposure. Immediate mortality rates after LLIN (60 minutes and 24 hours) or insecticidal exposure (30 or 60 minutes, depending on insecticide) were excluded.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/gichuki2021bioefficacy/figures/figure-4-9.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:08.46 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 A rectangular net and its individual panels showing positions for cutting netting pieces (positions 1–9 for bioassays; HP1–HP5 for chemical assays)\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "meiwald2022association 3 tables 2 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "gichuki2021bioefficacy 7 tables 1 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/kibondo2022influence/figures/figure-7-6.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:09.00 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Mosquito mortality after exposure to Interceptor® and Interceptor® G2 ITNs in Ifakara ambient chamber test (IACT), WHO tunnel test, cone and experimental hut. a An. arabiensis, b Cx. quinquefasciatus, c An. gambiae s.s., d Ae. aegypti\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/kibondo2022influence/Influence_of_testing_modality_on_bioefficacy_for_the_evaluation_of_Interceptor-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:09.09 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Mosquito mortality after exposure to Interceptor® and Interceptor® G2 ITNs in Ifakara ambient chamber test (IACT), WHO tunnel test, cone and experimental hut. a An. arabiensis, b Cx. quinquefasciatus, c An. gambiae s.s., d Ae. aegypti\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/kibondo2022influence/figures/figure-10-7.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:09.16 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mosquito blood-feeding inhibition after exposure to Interceptor and Interceptor® G2 ITNs in Ifakara ambient chamber test (IACT), WHO tunnel test and experimental hut. a An. arabiensis, b Cx. quinquefasciatus, c An. gambiae s.s., d Ae. aegypti\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/kibondo2022influence/Influence_of_testing_modality_on_bioefficacy_for_the_evaluation_of_Interceptor-Figure3-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:09.21 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mosquito blood-feeding inhibition after exposure to Interceptor and Interceptor® G2 ITNs in Ifakara ambient chamber test (IACT), WHO tunnel test and experimental hut. a An. arabiensis, b Cx. quinquefasciatus, c An. gambiae s.s., d Ae. aegypti\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/kibondo2022influence/figures/figure-12-8.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:09.26 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Comparison of mosquito mortality and blood-feeding inhibition of An. arabiensis in four different experimental hut designs in Ifakara, Tanzania\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/kibondo2022influence/Influence_of_testing_modality_on_bioefficacy_for_the_evaluation_of_Interceptor-Figure4-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:09.32 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Comparison of mosquito mortality and blood-feeding inhibition of An. arabiensis in four different experimental hut designs in Ifakara, Tanzania\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/kibondo2022influence/Influence_of_testing_modality_on_bioefficacy_for_the_evaluation_of_Interceptor-Figure5-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:09.39 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Factors determining bioassay results beyond product characteristics\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/zahouli2023small/Small_scale_field_evaluation_of_PermaNet_Dual_a_long_lasting_net_coated_with-Figure1-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:09.50 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Effects of treatments on blood-feeding (A) and immediate and extended mortality (B) rates in multiple insecticide-resistant Anopheles gambiae from experimental huts in Tiassalé, Côte d’Ivoire. Error bars show the standard error of the mean. Letters indicate the results of the\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "kibondo2022influence 5 tables 4 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/zahouli2023small/Small_scale_field_evaluation_of_PermaNet_Dual_a_long_lasting_net_coated_with-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:09.58 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Mean knock-down (A) and corrected mortality (B) rates in the susceptible Anopheles gambiae s.s. Kisumu strain exposed to net samples using cone bioassays before and after the experimental hut trial in Tiassalé, Côte d’Ivoire. KD60: Knock-down at 60 min. Error bars show the standard error of the mean\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/zahouli2023small/figures/figure-11-9.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:10.04 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mean knock-down (A) and corrected mortality (B) rates in the pyrethroid-resistant Anopheles gambiae s.l. Tiassalé strain exposed to net samples using cone bioassays before and after the experimental hut trial in Tiassalé, Côte d’Ivoire. KD60: Knock-down at 60 min. Error bars show the standard error of the mean\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/zahouli2023small/Small_scale_field_evaluation_of_PermaNet_Dual_a_long_lasting_net_coated_with-Figure3-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:10.14 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Mean knock-down (A) and corrected mortality (B) rates in the pyrethroid-resistant Anopheles gambiae s.l. Tiassalé strain exposed to net samples using cone bioassays before and after the experimental hut trial in Tiassalé, Côte d’Ivoire. KD60: Knock-down at 60 min. Error bars show the standard error of the mean\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/zahouli2023small/figures/figure-13-10.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:10.27 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Mean blood-feeding inhibition (A) and corrected mortality (B) rates in the susceptible Anopheles gambiae s.s. Kisumu strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassalé, Côte d’Ivoire. Error bars show the standard error of the mean\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/zahouli2023small/Small_scale_field_evaluation_of_PermaNet_Dual_a_long_lasting_net_coated_with-Figure4-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:10.33 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Mean blood-feeding inhibition (A) and corrected mortality (B) rates in the susceptible Anopheles gambiae s.s. Kisumu strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassalé, Côte d’Ivoire. Error bars show the standard error of the mean\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/zahouli2023small/figures/figure-14-11.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:10.42 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Mean of blood-feeding inhibition (A) and corrected mortality (B) rates in the pyrethroid-resistant Anopheles gambiae s.l. Tiassalé strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassalé, Côte d’Ivoire. Error bars show the standard error of the mean\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/zahouli2023small/Small_scale_field_evaluation_of_PermaNet_Dual_a_long_lasting_net_coated_with-Figure5-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:10.49 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Mean of blood-feeding inhibition (A) and corrected mortality (B) rates in the pyrethroid-resistant Anopheles gambiae s.l. Tiassalé strain exposed to net samples using tunnel tests before and after experimental hut trial in Tiassalé, Côte d’Ivoire. Error bars show the standard error of the mean\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/toe2018do/figures/figure-4-2.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:10.58 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1. Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: P < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "zahouli2023small 4 tables 5 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/toe2018do/Toe_et_al_2018_Medical_and_Veterinary_Entomology-Figure1-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:11.02 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1. Mortality rates (with binomial confidence intervals) after exposure to deltamethrin and permethrin in World Health Organization discriminating dose assays with or without pre-exposure to piperonyl butoxide (PBO) in (A) Vallée du Kou 5 and (B) Tengrela (October 2014). *Significant differences in mortality: P < 0.0001. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/toe2018do/Toe_et_al_2018_Medical_and_Veterinary_Entomology-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:11.07 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2. Expression levels of candidate genes previously associated with pyrethroid resistance in Tengrela and Vallée du Kou 5. The analysis was performed using the 2-ΔΔCt method with data normalized against three control genes and presented as a ratio of expression levels in the Ngousso susceptible laboratory strain. Relative gene expressions were transformed to log scale before plotting to minimize large differences in gene expression. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/toe2018do/figures/figure-6-6.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:11.13 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3. Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (P < 0.001), † (P < 0.0001), n.s. (non-significant), ‡ (P < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/toe2018do/Toe_et_al_2018_Medical_and_Veterinary_Entomology-Figure3-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:11.19 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3. Mean mortality rates with binomial confidence intervals for mosquitoes collected from (A) Tengrela and (B) Vallée du Kou 5 after exposure to longlasting insecticidal nets (LLINs) for 3 min. Significant differences in mortality between pyrethroid-only and pyrethroid plus piperonyl butoxide-treated LLINs are indicated by * (P < 0.001), † (P < 0.0001), n.s. (non-significant), ‡ (P < 0.0001) for the comparison between the sides and top of the PermaNet 3.0. Numbers in brackets are the total numbers of mosquitoes tested. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/toe2018do/figures/figure-7-9.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:11.23 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4. Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the P-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/toe2018do/Toe_et_al_2018_Medical_and_Veterinary_Entomology-Figure4-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:11.30 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4. Primary outcomes measured in the experimental hut trials in Tengrela and Vallée du Kou 5 (VK5). (A–D) Crude data for the measured outcomes. (A) Entry, number of mosquitoes per night entering a hut. (B) Exit, proportion of mosquitoes collected from the veranda trap. (C) Blood feeding, proportion of mosquitoes found blood-fed. (D) Mortality, proportion of mosquitoes dead at 24 h post-collection. (E–H) These outcomes measured relative to the control (i.e. untreated mosquito net) for both sites combined. (E) Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. (F) Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. (G) Blood feeding inhibition, the OR for a mosquito being blood-fed. (H) Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). Symbols show the average and whiskers show the limits of the 95% confidence intervals around the average. The dashed line shows the ratio or OR of 1, indicating no association of the outcome with the treatment. The data used to produce the plot together with the P-values are provided in Table S3. [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/toe2018do/figures/figure-8-10.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:11.36 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5. Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/toe2018do/Toe_et_al_2018_Medical_and_Veterinary_Entomology-Figure5-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:11.41 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5. Outcome measures comparing piperonyl butoxide (PBO)-treated and non-PBO-treated nets from the same manufacturers. Deterrence, the ratio of mosquitoes entering a hut relative to the control hut. Exophily, the odds ratio (OR) for a mosquito being found in the veranda trap. Blood feeding inhibition, the OR for a mosquito being blood-fed. Mortality, the OR for a mosquito being dead in the morning (immediate mortality) or after being caught alive and held for 24 h (delayed mortality). [Colour figure can be viewed at wileyonlinelibrary.com].\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/nash2021systematic/figures/figure-4-4.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:11.47 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1. Maps of EHT sites where ITNs and/or IRS have been investigated. Panels show sites across sub-Saharan Africa (A); Eastern Africa (54 trials), including Ethiopia, Tanzania and Madagascar (B); West (80 trials) and Central Africa (1 trial), including The Gambia, Mali, Ivory Coast, Burkina Faso, Togo, Benin, Nigeria and Cameroon (C). Point size indicates the number of studies at each site, whilst point colour denotes the design of hut used, be it East African (red), Ifakara (green) or West African (blue).\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "toe2018do 4 tables 5 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/nash2021systematic/figures/figure-6-5.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:11.52 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2. Characteristics of EHT data. A The number of EHTs investigating IRS or ITNs that collected data on each hut design and mosquito species (as reported in the study). Bar colours indicate the design of the hut used in the trial as shown in the legend, be it East African (red), West African (blue) or Ifakara (green). B Summary of the reported mortality observed in hut trials evaluating unwashed pyrethroid-only ITNs and how these change over time. Points are coloured according to the hut design (see A). C Histograms showing the average number of mosquitoes collected per night in the control huts of EHTs. The dotted line represents the mean number collected in trials of each hut design. Note: Some trials collected multiple mosquito species, therefore single trials may be counted more than once in this figure.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/nash2021systematic/1_s20_S2667114X21000418_main-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:12.01 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2. Characteristics of EHT data. A The number of EHTs investigating IRS or ITNs that collected data on each hut design and mosquito species (as reported in the study). Bar colours indicate the design of the hut used in the trial as shown in the legend, be it East African (red), West African (blue) or Ifakara (green). B Summary of the reported mortality observed in hut trials evaluating unwashed pyrethroid-only ITNs and how these change over time. Points are coloured according to the hut design (see A). C Histograms showing the average number of mosquitoes collected per night in the control huts of EHTs. The dotted line represents the mean number collected in trials of each hut design. Note: Some trials collected multiple mosquito species, therefore single trials may be counted more than once in this figure.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/nash2021systematic/figures/figure-7-6.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:12.07 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3. Entomological outcomes as predicted by bioassay survival. A Comparison of the level of pyrethroid resistance as measured using a discriminating dose bioassay and the percentage of mosquitoes which enter a hut with a pyrethroid-only ITN and survive 24 h after being collected. Solid lines show the fitted relationship using either the logistic (green) or log-logistic (yellow) models. Vertical and horizontal lines show 95% confidence interval estimates for each data point. B-C The rela- tionship between EHT survival (24 h post-collection, unless the ITN incorporated the insecticide chlorfenapyr, in which case 72-h survival was used) and the probability of being caught inside a control hut relative to a hut with any type of ITN (where anywhere above the grey dashed-line indicates more mosquitoes were caught in the control hut) (B), mosquitoes successfully feeding and surviving (C), or exiting the hut without feeding (D). The point size in B-D is proportional to the total number of mosquitoes collected in the trial and coloured according to hut design: East (red) or West (blue). Solid lines in A-D show the best-fit relationship whilst the lighter shaded area indicates 95% credible intervals for the best-fit curves. E-F The models from A-D were combined to summarise how the average probability that blood-feeding mosquitoes will be killed, exit without feeding, deterred from entering or successfully blood-feed, varies with bioassay survival. The relationship be- tween bioassay and EHT survival is highly uncertain, so both the logistic model (E) and the log-logistic model (F) are presented.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/nash2021systematic/1_s20_S2667114X21000418_main-Figure3-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:12.17 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3. Entomological outcomes as predicted by bioassay survival. A Comparison of the level of pyrethroid resistance as measured using a discriminating dose bioassay and the percentage of mosquitoes which enter a hut with a pyrethroid-only ITN and survive 24 h after being collected. Solid lines show the fitted relationship using either the logistic (green) or log-logistic (yellow) models. Vertical and horizontal lines show 95% confidence interval estimates for each data point. B-C The relationship between EHT survival (24 h post-collection, unless the ITN incorporated the insecticide chlorfenapyr, in which case 72-h survival was used) and the probability of being caught inside a control hut relative to a hut with any type of ITN (where anywhere above the grey dashed-line indicates more mosquitoes were caught in the control hut) (B), mosquitoes successfully feeding and surviving (C), or exiting the hut without feeding (D). The point size in B-D is proportional to the total number of mosquitoes collected in the trial and coloured according to hut design: East (red) or West (blue). Solid lines in A-D show the best-fit relationship whilst the lighter shaded area indicates 95% credible intervals for the best-fit curves. E-F The models from A-D were combined to summarise how the average probability that blood-feeding mosquitoes will be killed, exit without feeding, deterred from entering or successfully blood-feed, varies with bioassay survival. The relationship between bioassay and EHT survival is highly uncertain, so both the logistic model (E) and the log-logistic model (F) are presented.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/nash2021systematic/figures/figure-8-7.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:12.31 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4. Entomological outcomes as predicted by bioassay survival according to East and West African hut designs. A Comparison of the level of pyrethroid resistance as measured using a discriminating dose bioassay and the percentage of mosquitoes which enter a hut and survive 24 h. Solid lines show the fitted relationship for the East (red) and West (blue) African hut design assuming the log-logistic function. Comparable plots showing the logistic function are provided in Supplementary file 1: Fig. S7A. B-C The relationship between EHT survival (24 h post-collection, unless the ITN incorporated the insecticide chlorfenapyr, in which case 72-h survival was used) and the probability of being caught inside a control hut relative to a hut with any type of ITN (where anywhere above the grey dashed-line indicates more mosquitoes were caught in the control hut) (B), mosquitoes successfully feeding and surviving (C), or exiting the hut without feeding (D). The point size in B-D is proportional to the total number of mosquitoes collected in the trial and coloured according to hut design. Solid lines in A-D show the best-fit relationship whilst the lighter shaded area indicates 95% credible intervals for the best-fit curves. E-F The models from A-D were combined to summarise how the average probability that blood-feeding mosquitoes will be killed, exit without feeding, deterred from entering or successfully blood-feed, varies with bioassay survival for either East (E) or West (F) African hut design. Both (E-F) show the log-logistic model, see Supplementary file 1: Figs. S7B–C for models using the logistic function.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/nash2021systematic/1_s20_S2667114X21000418_main-Figure4-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:12.41 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4. Entomological outcomes as predicted by bioassay survival according to East and West African hut designs. A Comparison of the level of pyrethroid resistance as measured using a discriminating dose bioassay and the percentage of mosquitoes which enter a hut and survive 24 h. Solid lines show the fitted relationship for the East (red) and West (blue) African hut design assuming the log-logistic function. Comparable plots showing the logistic function are provided in Supplementary file 1: Fig. S7A. B-C The relationship between EHT survival (24 h post-collection, unless the ITN incorporated the insecticide chlorfenapyr, in which case 72-h survival was used) and the probability of being caught inside a control hut relative to a hut with any type of ITN (where anywhere above the grey dashed-line indicates more mosquitoes were caught in the control hut) (B), mosquitoes successfully feeding and surviving (C), or exiting the hut without feeding (D). The point size in B-D is proportional to the total number of mosquitoes collected in the trial and coloured according to hut design. Solid lines in A-D show the best-fit relationship whilst the lighter shaded area indicates 95% credible intervals for the best-fit curves. E-F The models from A-D were combined to summarise how the average probability that blood-feeding mosquitoes will be killed, exit without feeding, deterred from entering or successfully blood-feed, varies with bioassay survival for either East (E) or West (F) African hut design. Both (E-F) show the log-logistic model, see Supplementary file 1: Figs. S7B–C for models using the logistic function.\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "nash2021systematic 6 tables 4 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/menze2022experimental/figures/figure-4-5.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:12.53 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Association between the CYP6P9a/b and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (A) Tube assay CYP6P9a and mortality. Role of CYP6P9a in pyrethroid resistance with samples from the WHO tube. Distribution of the CYP6P9a genotypes according to resistance phenotypes. (B) Tube assay CYP6P9b and mortality. Role of CYP6P9b in pyrethroid resistance with samples from the WHO tube. Distribution of the CYP6P9b genotypes according to resistance phenotypes. (C) Cone assay CYP6P9a and mortality. Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: p < 0.001). (D) Cone assay CYP6P9a and mortality allele. Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (E) Cone assay CYP6P9b and mortality. Genotype distribution of CYP6P9b between alive and dead mosquitoes after exposure to Olyset using the cone test, showing strong association (RR vs. SS: p < 0.001).\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "accrombessi2023efficacy 8 tables 0 figures\n", - "syme2022pyrethroid 8 tables 0 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/menze2022experimental/pathogens_11_00638_v2-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:13.04 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Association between the CYP6P9a/b and the ability to survive exposure to Olyset nets after WHO tubes cone assays. (A) Tube assay CYP6P9a and mortality. Role of CYP6P9a in pyrethroid resistance with samples from the WHO tube. Distribution of the CYP6P9a genotypes according to resistance phenotypes. (B) Tube assay CYP6P9b and mortality. Role of CYP6P9b in pyrethroid resistance with samples from the WHO tube. Distribution of the CYP6P9b genotypes according to resistance phenotypes. (C) Cone assay CYP6P9a and mortality. Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of mosquitoes carrying the RR genotype in order to survive compared to SS (RR vs. SS: p < 0.001). (D) Cone assay CYP6P9a and mortality allele. Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (E) Cone assay CYP6P9b and mortality. Genotype distribution of CYP6P9b between\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/menze2022experimental/figures/figure-5-6.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:13.09 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. Association between the CYP6P9a/b and the ability to survive exposure to Olyset Plus nets after cone assays. (A) Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (p < 0.001). (B) Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (C) Genotype distribution of CYP6P9b between alive and dead mosquitoes after exposure to Olyset Plus using the cone test, showing the significant ability of the mosquitoes carrying the RR genotype to survive compared to SS (p < 0.001).\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/menze2022experimental/pathogens_11_00638_v2-Figure3-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:13.13 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. Association between the CYP6P9a/b and the ability to survive exposure to Olyset Plus nets after cone assays. (A) Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the mosquitoes to carry the RR genotype to survive compared to SS (p < 0.001). (B) Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (C) Genotype distribution of CYP6P9b between alive and dead mosquitoes after\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/menze2022experimental/pathogens_11_00638_v2-Figure4-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:13.23 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 4. Association between 6.5 kb SV and the ability to survive against exposure to Olyset and Olyset Plus nets using cone assays. (A) Distribution of 6.5 kb SV genotypes between dead and alive mosquitoes after exposure to Olyset, showing that 6.5 kb SV_R allows mosquitoes to survive significantly better against exposure to this net. (B) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset with the cone test, showing the significant ability of the 6.5 kb SV _R_-resistant mosquitoes to survive compared to their susceptible counterparts 6.5 kb SV _S. (C) Distribution of 6.5 kb SV genotypes between dead and alive mosquitoes after exposure to the Olyset Plus net. (D) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset Plus with the cone test, showing the significant ability of the 6.5 kb SV _R_-resistant mosquitoes to survive compared to their susceptible counterparts 6.5 kb SV _S.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/menze2022experimental/figures/figure-7-8.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:13.30 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 5. Impact of both CYP6P9a and CYP6P9b on the efficacy of bed nets in the experimental hut trial. (A) Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: p < 0.001). (B) Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (C) Association between CYP6P9a and ability to blood-feed when exposed to Olyset. The CYP6P9a-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (D) Association between CYP6P9b and ability to survive exposure to Olyset in the experimental hut trial. (E) Allelic frequency of CYP6P9b between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the CYP6P9b_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9b_S. (F) Association between duplicated CYP6P9b gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The CYP6P9b-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/menze2022experimental/pathogens_11_00638_v2-Figure5-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:13.36 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 5. Impact of both CYP6P9a and CYP6P9b on the efficacy of bed nets in the experimental hut trial. (A) Genotype distribution of CYP6P9a between alive and dead mosquitoes after exposure to Olyset, showing strong association (RR vs. SS: p < 0.001). (B) Allelic frequency of CYP6P9a between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the CYP6P9a_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9a_S. (C) Association between CYP6P9a and ability to blood-feed when exposed to Olyset. The CYP6P9a-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset net. (D) Association between CYP6P9b and ability to survive exposure to Olyset in the experimental hut trial. (E) Allelic frequency of CYP6P9b between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the significant ability of the CYP6P9b_R_-resistant mosquitoes to survive compared to their susceptible counterparts CYP6P9b_S. (F) Association between duplicated CYP6P9b gene and ability to blood-feed when exposed to Olyset in the experimental hut trial. The CYP6P9b-R allele increases the strength of resistant mosquitoes by taking a blood meal in contrast to the susceptible ones when exposed to Olyset.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/menze2022experimental/figures/figure-9-9.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:13.44 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 6. Impact of the 6.5 kb SV-based metabolic resistance on bed nets’ efficacy in experimental hut trials. (A) Distribution of 6.5 kb SV genotypes between dead and alive mosquitoes after expo- sure to Olyset net, showing that 6.5 kb SV _R allows mosquitoes to survive significant better after exposure to this insecticide-treated net. (B) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the 6.5 kb SV _R_-resistant mosquitoes to survive compared to their susceptible counterparts 6.5 kb SV _S. (C) Distribution of 6.5 kb SV genotypes between the blood fed (BF) and unfed (UF) mosquitoes after exposure to Olyset (OL), showing that 6.5 kb SV_R significantly allows mosquitoes to blood-feed in the presence of this insecticide-treated net. (D) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the ability of the 6.5 kb SV _R_-resistant mosquitoes to blood-feed significantly better compared to their susceptible counterparts\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/menze2022experimental/pathogens_11_00638_v2-Figure6-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:13.50 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 6. Impact of the 6.5 kb SV-based metabolic resistance on bed nets’ efficacy in experimental hut trials. (A) Distribution of 6.5 kb SV genotypes between dead and alive mosquitoes after exposure to Olyset net, showing that 6.5 kb SV _R allows mosquitoes to survive significant better after exposure to this insecticide-treated net. (B) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset with experimental hut trial, showing the significant ability of the 6.5 kb SV _R_-resistant mosquitoes to survive compared to their susceptible counterparts 6.5 kb SV _S. (C) Distribution of 6.5 kb SV genotypes between the blood fed (BF) and unfed (UF) mosquitoes after exposure to Olyset (OL), showing that 6.5 kb SV_R significantly allows mosquitoes to bloodfeed in the presence of this insecticide-treated net. (D) Allelic frequency of 6.5 kb SV between alive and dead mosquitoes after exposure to Olyset with the experimental hut trial, showing the ability of the 6.5 kb SV _R_-resistant mosquitoes to blood-feed significantly better compared to their susceptible counterparts 6.5 kb SV _S. (E) Distribution of 6.5 kb SV genotypes between blood-fed (BF) and unfed (UF) mosquitoes after exposure to Olyset Plus, showing that 6.5 kb SV_R significantly allows mosquitoes to blood-feed in the presence of this insecticide-treated net. (F) Allelic frequency\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/gebremariam2021evaluation/figures/figure-3-3.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:14.00 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1. Experimental hut design of the study.\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "menze2022experimental 1 tables 5 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/gebremariam2021evaluation/gebremariam_et_al_2021_evaluation_of_long_lasting_insecticidal_nets_duranetr_under_laboratory_and_semi_field-Figure1-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:14.03 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1. Experimental hut design of the study.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/gebremariam2021evaluation/figures/figure-4-4.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:14.06 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Mean percent knockdown and mortality of An. arabiensis exposed in 3 minutes cone bioassay to DuraNet®, Jimma, and southwestern Ethiopia.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/gebremariam2021evaluation/gebremariam_et_al_2021_evaluation_of_long_lasting_insecticidal_nets_duranetr_under_laboratory_and_semi_field-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:14.17 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Mean percent knockdown and mortality of An. arabiensis exposed in 3 minutes cone bioassay to DuraNet®, Jimma, and\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "gebremariam2021evaluation 3 tables 2 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/briet2020physical/figures/figure-5-7.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:14.22 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1 Causal diagram for factors determining the effects of LLINs on malaria transmission. Solid lines indicate the main causal relationships between the measured quantities; dashed lines indicate which factors impact malaria transmission (via relationships estimated from experimental hut data and captured in the mathematical model)\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/briet2020physical/figures/figure-7-8.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:14.27 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Survival (1‑attrition) (a), use of nets currently in the household (b), proportion of original cohort of nets in use (c), mean of the natural log of estimated hole area (d), reduction in vectorial capacity of pyrethroid susceptible mosquitoes (e), and reduction in vectorial capacity of pyrethroid resistant mosquitoes (f), by country\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/briet2020physical/Attrition_physical_integrity_and_insecticidal_activity_of_long_lasting__insecti-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:14.40 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Survival (1‑attrition) (a), use of nets currently in the household (b), proportion of original cohort of nets in use (c), mean of the natural log of estimated hole area (d), reduction in vectorial capacity of pyrethroid susceptible mosquitoes (e), and reduction in vectorial capacity of pyrethroid resistant mosquitoes (f), by country\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/briet2020physical/figures/figure-8-9.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:14.51 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Persistence of active ingredients by LLIN brand\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/briet2020physical/Attrition_physical_integrity_and_insecticidal_activity_of_long_lasting__insecti-Figure4-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:15.00 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 4 Lethality in cone tests and calibration of active ingredient content. The lethality and calibration curves are shown only for four specific LLIN brands. The lines for the other LLIN brands are very close to that for PermaNet 2.0\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/briet2020physical/figures/figure-11-11.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:15.05 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 5 Predicted entomological effects of holed and intact LLINs. a Pyrethroid resistant mosquitoes. b Pyrethroid sensitive mosquitoes. The vertical black line corresponds to the target active agent content for PermaNet 2.0. The continuous lines correspond to intact LLINs and the dashed lines to LLINs with a holed area of 50 cm2. The effect size, on the vertical axis is the proportion by which availability of humans to mosquitoes is reduced, or killing of mosquitoes increased, when the LLIN is in use\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ibrahim2020exploring/figures/figure-3-3.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:15.10 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1. A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "briet2020physical 10 tables 5 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ibrahim2020exploring/genes_11_00454_pdf-Figure1-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:15.12 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1. ap sho ing the sa pling locality ( ajerar i a) in the Sahel of northern igeria.\u001b[0m\n", - "\u001b[32m[0621 00:15.17 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 1. A map showing the sampling locality (Gajerar Giwa) in the Sahel of northern Nigeria.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/ibrahim2020exploring/figures/figure-8-4.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:15.20 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Resistance profiles of F1 An. funestus females. (a). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (b). Results of the cone bioassays with PermaNet 3.0 (side and roof), PermaNet Net. Results are the average of percentage Plus and Olyset mortalities ± SEM of five replicates; (c). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at P < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (d). Time-course bioassay for LT50 estimation/test for strength of permethrin resistance.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ibrahim2020exploring/genes_11_00454_pdf-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:15.27 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Resistance profiles of F1 An. funestus females. (a). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (b). Results of the cone bioassays with PermaNet®3.0 (side and roof), PermaNet®2.0, Olyset®Plus and Olyset®Net. Results are the average of percentage mortalities ± SEM of five replicates; (c). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl aleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the verage of percent g mortaliti s from four replicate each ± SEM. **** = statistically significant at P < 0 0001, in a two-tailed Chi-square test between results fr m syn rgised b o ssay and conventional bioassays; (d). Time-course bioassay for LT50 estimation/test for strength of permethrin resistance.\u001b[0m\n", - "\u001b[32m[0621 00:15.33 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 2. Resistance profiles of F1 An. funestus females. (a). Results of WHO susceptibility bioassays with various insecticides. Results are the average of percentage mortalities from four replicates each ± standard error of mean (SEM); (b). Results of the cone bioassays with PermaNet® 3.0 (side and roof), PermaNet® 2.0, Olyset® Plus and Olyset® Net. Results are the average of percentage mortalities ± SEM of five replicates; (c). Effect of pre-exposure of synergist piperonylbutoxide (PBO) against permethrin and diethyl maleate (DEM) against DDT (dichlorodiphenyltrichloroethane). Results are the average of percentage mortalities from four replicates each ± SEM. **** = statistically significant at P < 0.0001, in a two-tailed Chi-square test between results from synergised bioassay and conventional bioassays; (d). Time-course bioassay for LT50 estimation/test for strength of permethrin resistance.\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/ibrahim2020exploring/genes_11_00454_pdf-Figure3-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:15.40 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. enotyping of L119F STe2 utation. (a): distribution of the 119F utation a ong the 44 rando ly selected F0 fe ales; (b): the 119F utation genotype for 12 each of T-alive and -dead F1 fe ales, o ozygote resistant, RS = heterozygote resistant, and SS = susceptible; (c): agarose-gel s i t e 119 e t e istri ti fr allele-s ecific ( - ), t a el: 12 -ali e 1 f l s ( , , 6, and 8–12 are R , 1, 4, 5 and 7 are RS), bott m panel: 12 DDT-dea F1 females (13, 4, 5, 7, 9, 21– 4 are RS, 16 and 18 are SS, and 20 failed).\u001b[0m\n", - "\u001b[32m[0621 00:15.46 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Figure 3. Genotyping of L119F GSTe2 mutation. (a): distribution of the 119F mutation among the 44 randomly selected F0 females; (b): the 119F mutation genotype for 12 each of DDT-alive and -dead F1 females, RR = homozygote resistant, RS = heterozygote resistant, and SS = susceptible; c: agarose-gel showing the L119F genotype distribution from allele-specific PCR (AS-PCR), top panel: 12 DDT-alive F1 females (2, 3, 6, and 8–12 are RR, 1, 4, 5 and 7 are RS), bottom panel: 12 DDT-dead F1 females (13, 14, 15, 17, 19, 21–24 are RS, 16 and 18 are SS, and 20 failed).\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ibrahim2020exploring 0 tables 6 figures\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/mieguim2021insights/figures/figure-4-7.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:15.52 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 1. Seasonal relative abundance of Anopheles mosquito species in Mvoua. S1 short dry season, S2 long rainy season, S3 long dry season, S4 short rainy season\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1311: PydanticDeprecatedSince20: The `schema` method is deprecated; use `model_json_schema` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1135: PydanticDeprecatedSince20: The `parse_raw` method is deprecated; if your data is JSON use `model_validate_json`, otherwise load the data then use `model_validate` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " warnings.warn(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/pydantic/main.py:1143: PydanticDeprecatedSince20: `load_str_bytes` is deprecated. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.7/migration/\n", - " obj = parse.load_str_bytes(\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/mieguim2021insights/figures/figure-5-8.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:15.57 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Seasonal variation in human biting behavior of malaria vectors in Mvoua from August 2018 to April 2019. In Inside (homes), Out outside, S1–S4 as defined in Fig. 1\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/pdffigure2/mieguim2021insights/Insights_into_factors_sustaining_persistence_of_high_malaria_transmission_in__fo-Figure2-1.png'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:16.05 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 2 Seasonal variation in human biting behavior of malaria vectors in Mvoua from August 2018 to April 2019. In Inside (homes), Out outside, S1–S4 as defined in Fig. 1\u001b[0m\n", - "/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/core/readers/file/base.py:535: ResourceWarning: unclosed file <_io.BufferedReader name='/Users/jonnytr/Projects/ITN-recal-data-extraction/data/preprocessing/unstructured/mieguim2021insights/figures/figure-6-9.jpg'>\n", - " docs = reader.load_data(input_file, **kwargs)\n", - "ResourceWarning: Enable tracemalloc to get the object allocation traceback\n", - "\u001b[32m[0621 00:16.12 @segment.py:251]\u001b[0m \u001b[32mINF\u001b[0m \u001b[97mExtracting figure table: Fig. 3 Anopheles funestus and An. gambiae (s.l.) night‑biting cycle in Mvoua from August 2018 to April 2019\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "mieguim2021insights 4 tables 3 figures\n" - ] - }, - { - "data": { - "text/plain": [ - "285" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from llama_index.core import global_handler\n", - "records = []\n", - "\n", - "for ref, paper in tqdm(papers_subset.iterrows()):\n", - " doc = remote_dataset.add_document(rg.Document.from_file(\n", - " paper.file_path, reference=ref, pmid=paper.pmid, doi=paper.doi, id=paper.get('id')))\n", - " \n", - " metadata = {\"reference\": paper.name}\n", - " if isinstance(doc.pmid, (str, int)) and doc.pmid != 'nan':\n", - " metadata['pmid'] = doc.pmid\n", - " elif doc.id:\n", - " metadata['doc_id'] = str(doc.id)\n", - "\n", - " # Table segments\n", - " table_alignments = merge_extractions(\n", - " deepdoctection=tables[ref]['deepdoctection'],\n", - " unstructured=tables[ref]['unstructured'],\n", - " llmsherpa=tables[ref]['llmsherpa'],\n", - " nougat=tables[ref]['nougat'],\n", - " pdffigures2=tables[ref]['pdffigures2'],\n", - " )\n", - " table_records = table_alignments.to_records(dataset=remote_dataset, metadata=metadata)\n", - " records.extend(table_records)\n", - "\n", - " # Figure segments\n", - " ### comment out langfuse code \n", - " # global_handler.set_trace_params(\n", - " # name=f\"preprocess-{ref}\",\n", - " # session_id=ref,\n", - " # user_id='jonnytr',\n", - " # )\n", - " figure_segments = merge_extractions(\n", - " unstructured=figures[ref]['unstructured'],\n", - " pdffigures2=figures[ref]['pdffigures2'],\n", - " )\n", - " for alignment in figure_segments.items:\n", - " for source, segment in alignment.extractions.items():\n", - " if os.path.exists(segment.image) and segment.header:\n", - " _figure_extraction_response = segment.extract_html_table()\n", - " \n", - " figure_records = figure_segments.to_records(dataset=remote_dataset, metadata=metadata)\n", - " records.extend(figure_records)\n", - "\n", - " print(paper.name, len(table_records), 'tables', len(figure_records), 'figures')\n", - "\n", - "records = [r for r in records if r is not None]\n", - "len(records)" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "638c5a8a-8815-4d2d-aed7-1056ea1a284d", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/html": [ - "
Pushing records to Argilla... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━  90% 0:00:04\n",
-       "
\n" - ], - "text/plain": [ - "Pushing records to Argilla... \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;2;249;38;114m╸\u001b[0m\u001b[38;5;237m━━━━\u001b[0m \u001b[35m 90%\u001b[0m \u001b[36m0:00:04\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n"
-      ],
-      "text/plain": []
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "text/html": [
-       "
\n",
-       "
\n" - ], - "text/plain": [ - "\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "remote_dataset.add_records(records)" - ] - }, - { - "cell_type": "markdown", - "id": "f922936f-3ac0-4111-9049-d7c57945964b", - "metadata": {}, - "source": [ - "## Update Records" - ] - }, - { - "cell_type": "code", - "execution_count": 121, - "id": "43444fd9-a88c-40ec-8c2d-8fe2abd21bf2", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "24b6e0660e2842d0982fcf84bc77a4f8", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/840 [00:00╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮\n", - " in <module>:30 \n", - " \n", - " 27 │ │ │ ] \n", - " 28 │ │ ) \n", - " 29 │ │ \n", - " 30 │ │ nodes = vector_store.get_nodes(filters=filters) \n", - " 31 │ │ if nodes: \n", - " 32 │ │ │ # record.external_id = nodes[0].id_ \n", - " 33 │ │ │ print('record.external_id', nodes[0].id_ == record.id, len(nodes), header) \n", - " \n", - " /Users/jonnytr/Projects/extralit/src/extralit/extraction/vector_store.py:107 in get_nodes \n", - " \n", - " 104 def get_nodes(self, node_ids: Optional[List[str]] = None, filters: Optional[Metadata \n", - " 105 │ │ │ -> List[BaseNode]: \n", - " 106 │ │ collection = self._client.collections.get(self.index_name) \n", - " 107 │ │ all_properties = get_all_properties(self._client, self.index_name) \n", - " 108 │ │ \n", - " 109 │ │ if filters is not None: \n", - " 110 │ │ │ filters = _to_weaviate_filter(filters) \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/vector_stores/weaviate/utils. \n", - " py:96 in get_all_properties \n", - " \n", - " 93 if not client.collections.exists(class_name): \n", - " 94 │ │ raise ValueError(f\"{class_name} schema does not exist.\") \n", - " 95 \n", - " 96 properties = client.collections.get(class_name).config.get().properties \n", - " 97 return [p.name for p in properties] \n", - " 98 \n", - " 99 \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/collections/config.py:81 in get \n", - " \n", - " 78 │ │ │ │ If Weaviate reports a non-OK status. \n", - " 79 │ │ \"\"\" \n", - " 80 │ │ _validate_input([_ValidateArgument(expected=[bool], name=\"simple\", value=simple) \n", - " 81 │ │ schema = self.__get() \n", - " 82 │ │ if simple: \n", - " 83 │ │ │ return _collection_config_simple_from_json(schema) \n", - " 84 │ │ return _collection_config_from_json(schema) \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/collections/config.py:49 in \n", - " __get \n", - " \n", - " 46 │ │ self.__tenant = tenant \n", - " 47 \n", - " 48 def __get(self) -> Dict[str, Any]: \n", - " 49 │ │ response = self.__connection.get( \n", - " 50 │ │ │ path=f\"/schema/{self._name}\", \n", - " 51 │ │ │ error_msg=\"Collection configuration could not be retrieved.\", \n", - " 52 │ │ │ status_codes=_ExpectedStatusCodes(ok_in=200, error=\"Get collection configura \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/connect/v4.py:561 in get \n", - " \n", - " 558 │ │ \n", - " 559 │ │ request_url = self.url + self._api_version_path + path \n", - " 560 │ │ \n", - " 561 │ │ return self.__send( \n", - " 562 │ │ │ \"GET\", url=request_url, params=params, error_msg=error_msg, status_codes=sta \n", - " 563 │ │ ) \n", - " 564 \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/connect/v4.py:449 in __send \n", - " \n", - " 446 │ │ │ │ params=params, \n", - " 447 │ │ │ │ headers=self.__get_latest_headers(), \n", - " 448 │ │ │ ) \n", - " 449 │ │ │ res = self._client.send(req) \n", - " 450 │ │ │ if status_codes is not None and res.status_code not in status_codes.ok: \n", - " 451 │ │ │ │ raise UnexpectedStatusCodeError(error_msg, response=res) \n", - " 452 │ │ │ return cast(Response, res) \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_client.py:914 in send \n", - " \n", - " 911 │ │ \n", - " 912 │ │ auth = self._build_request_auth(request, auth) \n", - " 913 │ │ \n", - " 914 │ │ response = self._send_handling_auth( \n", - " 915 │ │ │ request, \n", - " 916 │ │ │ auth=auth, \n", - " 917 │ │ │ follow_redirects=follow_redirects, \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_client.py:942 in \n", - " _send_handling_auth \n", - " \n", - " 939 │ │ │ request = next(auth_flow) \n", - " 940 │ │ │ \n", - " 941 │ │ │ while True: \n", - " 942 │ │ │ │ response = self._send_handling_redirects( \n", - " 943 │ │ │ │ │ request, \n", - " 944 │ │ │ │ │ follow_redirects=follow_redirects, \n", - " 945 │ │ │ │ │ history=history, \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_client.py:979 in \n", - " _send_handling_redirects \n", - " \n", - " 976 │ │ │ for hook in self._event_hooks[\"request\"]: \n", - " 977 │ │ │ │ hook(request) \n", - " 978 │ │ │ \n", - " 979 │ │ │ response = self._send_single_request(request) \n", - " 980 │ │ │ try: \n", - " 981 │ │ │ │ for hook in self._event_hooks[\"response\"]: \n", - " 982 │ │ │ │ │ hook(response) \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_client.py:1015 in \n", - " _send_single_request \n", - " \n", - " 1012 │ │ │ ) \n", - " 1013 │ │ \n", - " 1014 │ │ with request_context(request=request): \n", - " 1015 │ │ │ response = transport.handle_request(request) \n", - " 1016 │ │ \n", - " 1017 │ │ assert isinstance(response.stream, SyncByteStream) \n", - " 1018 \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_transports/default.py:233 in \n", - " handle_request \n", - " \n", - " 230 │ │ │ extensions=request.extensions, \n", - " 231 │ │ ) \n", - " 232 │ │ with map_httpcore_exceptions(): \n", - " 233 │ │ │ resp = self._pool.handle_request(req) \n", - " 234 │ │ \n", - " 235 │ │ assert isinstance(resp.stream, typing.Iterable) \n", - " 236 \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/connection_pool.py:216 in \n", - " handle_request \n", - " \n", - " 213 │ │ │ │ closing = self._assign_requests_to_connections() \n", - " 214 │ │ │ \n", - " 215 │ │ │ self._close_connections(closing) \n", - " 216 │ │ │ raise exc from None \n", - " 217 │ │ \n", - " 218 │ │ # Return the response. Note that in this case we still have to manage \n", - " 219 │ │ # the point at which the response is closed. \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/connection_pool.py:196 in \n", - " handle_request \n", - " \n", - " 193 │ │ │ │ \n", - " 194 │ │ │ │ try: \n", - " 195 │ │ │ │ │ # Send the request on the assigned connection. \n", - " 196 │ │ │ │ │ response = connection.handle_request( \n", - " 197 │ │ │ │ │ │ pool_request.request \n", - " 198 │ │ │ │ │ ) \n", - " 199 │ │ │ │ except ConnectionNotAvailable: \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/connection.py:101 in \n", - " handle_request \n", - " \n", - " 98 │ │ │ self._connect_failed = True \n", - " 99 │ │ │ raise exc \n", - " 100 │ │ \n", - " 101 │ │ return self._connection.handle_request(request) \n", - " 102 \n", - " 103 def _connect(self, request: Request) -> NetworkStream: \n", - " 104 │ │ timeouts = request.extensions.get(\"timeout\", {}) \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/http11.py:143 in \n", - " handle_request \n", - " \n", - " 140 │ │ │ with ShieldCancellation(): \n", - " 141 │ │ │ │ with Trace(\"response_closed\", logger, request) as trace: \n", - " 142 │ │ │ │ │ self._response_closed() \n", - " 143 │ │ │ raise exc \n", - " 144 \n", - " 145 # Sending the request... \n", - " 146 \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/http11.py:113 in \n", - " handle_request \n", - " \n", - " 110 │ │ │ │ │ reason_phrase, \n", - " 111 │ │ │ │ │ headers, \n", - " 112 │ │ │ │ │ trailing_data, \n", - " 113 │ │ │ │ ) = self._receive_response_headers(**kwargs) \n", - " 114 │ │ │ │ trace.return_value = ( \n", - " 115 │ │ │ │ │ http_version, \n", - " 116 │ │ │ │ │ status, \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/http11.py:186 in \n", - " _receive_response_headers \n", - " \n", - " 183 │ │ timeout = timeouts.get(\"read\", None) \n", - " 184 │ │ \n", - " 185 │ │ while True: \n", - " 186 │ │ │ event = self._receive_event(timeout=timeout) \n", - " 187 │ │ │ if isinstance(event, h11.Response): \n", - " 188 │ │ │ │ break \n", - " 189 │ │ │ if ( \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/http11.py:224 in \n", - " _receive_event \n", - " \n", - " 221 │ │ │ │ event = self._h11_state.next_event() \n", - " 222 │ │ │ \n", - " 223 │ │ │ if event is h11.NEED_DATA: \n", - " 224 │ │ │ │ data = self._network_stream.read( \n", - " 225 │ │ │ │ │ self.READ_NUM_BYTES, timeout=timeout \n", - " 226 │ │ │ │ ) \n", - " 227 \n", - " \n", - " /Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_backends/sync.py:126 in read \n", - " \n", - " 123 │ │ exc_map: ExceptionMapping = {socket.timeout: ReadTimeout, OSError: ReadError} \n", - " 124 │ │ with map_exceptions(exc_map): \n", - " 125 │ │ │ self._sock.settimeout(timeout) \n", - " 126 │ │ │ return self._sock.recv(max_bytes) \n", - " 127 \n", - " 128 def write(self, buffer: bytes, timeout: typing.Optional[float] = None) -> None: \n", - " 129 │ │ if not buffer: \n", - "╰──────────────────────────────────────────────────────────────────────────────────────────────────╯\n", - "KeyboardInterrupt\n", - "\n" - ], - "text/plain": [ - "\u001b[31m╭─\u001b[0m\u001b[31m──────────────────────────────\u001b[0m\u001b[31m \u001b[0m\u001b[1;31mTraceback \u001b[0m\u001b[1;2;31m(most recent call last)\u001b[0m\u001b[31m \u001b[0m\u001b[31m───────────────────────────────\u001b[0m\u001b[31m─╮\u001b[0m\n", - "\u001b[31m│\u001b[0m in \u001b[92m\u001b[0m:\u001b[94m30\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m27 \u001b[0m\u001b[2m│ │ │ \u001b[0m] \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m28 \u001b[0m\u001b[2m│ │ \u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m29 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m30 \u001b[2m│ │ \u001b[0mnodes = vector_store.get_nodes(filters=filters) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m31 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m nodes: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m32 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[2m# record.external_id = nodes[0].id_\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m33 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[96mprint\u001b[0m(\u001b[33m'\u001b[0m\u001b[33mrecord.external_id\u001b[0m\u001b[33m'\u001b[0m, nodes[\u001b[94m0\u001b[0m].id_ == record.id, \u001b[96mlen\u001b[0m(nodes), header) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/Projects/extralit/src/extralit/extraction/\u001b[0m\u001b[1;33mvector_store.py\u001b[0m:\u001b[94m107\u001b[0m in \u001b[92mget_nodes\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m104 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mdef\u001b[0m \u001b[92mget_nodes\u001b[0m(\u001b[96mself\u001b[0m, node_ids: Optional[List[\u001b[96mstr\u001b[0m]] = \u001b[94mNone\u001b[0m, filters: Optional[Metadata \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m105 \u001b[0m\u001b[2m│ │ │ \u001b[0m-> List[BaseNode]: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m106 \u001b[0m\u001b[2m│ │ \u001b[0mcollection = \u001b[96mself\u001b[0m._client.collections.get(\u001b[96mself\u001b[0m.index_name) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m107 \u001b[2m│ │ \u001b[0mall_properties = get_all_properties(\u001b[96mself\u001b[0m._client, \u001b[96mself\u001b[0m.index_name) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m108 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m109 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m filters \u001b[95mis\u001b[0m \u001b[95mnot\u001b[0m \u001b[94mNone\u001b[0m: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m110 \u001b[0m\u001b[2m│ │ │ \u001b[0mfilters = _to_weaviate_filter(filters) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/llama_index/vector_stores/weaviate/\u001b[0m\u001b[1;33mutils.\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[1;33mpy\u001b[0m:\u001b[94m96\u001b[0m in \u001b[92mget_all_properties\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 93 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mif\u001b[0m \u001b[95mnot\u001b[0m client.collections.exists(class_name): \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 94 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mraise\u001b[0m \u001b[96mValueError\u001b[0m(\u001b[33mf\u001b[0m\u001b[33m\"\u001b[0m\u001b[33m{\u001b[0mclass_name\u001b[33m}\u001b[0m\u001b[33m schema does not exist.\u001b[0m\u001b[33m\"\u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 95 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 96 \u001b[2m│ \u001b[0mproperties = client.collections.get(class_name).config.get().properties \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 97 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mreturn\u001b[0m [p.name \u001b[94mfor\u001b[0m p \u001b[95min\u001b[0m properties] \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 98 \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 99 \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/collections/\u001b[0m\u001b[1;33mconfig.py\u001b[0m:\u001b[94m81\u001b[0m in \u001b[92mget\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 78 \u001b[0m\u001b[2;33m│ │ │ │ \u001b[0m\u001b[33mIf Weaviate reports a non-OK status.\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 79 \u001b[0m\u001b[2;33m│ │ \u001b[0m\u001b[33m\"\"\"\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 80 \u001b[0m\u001b[2m│ │ \u001b[0m_validate_input([_ValidateArgument(expected=[\u001b[96mbool\u001b[0m], name=\u001b[33m\"\u001b[0m\u001b[33msimple\u001b[0m\u001b[33m\"\u001b[0m, value=simple) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 81 \u001b[2m│ │ \u001b[0mschema = \u001b[96mself\u001b[0m.__get() \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 82 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m simple: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 83 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mreturn\u001b[0m _collection_config_simple_from_json(schema) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 84 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mreturn\u001b[0m _collection_config_from_json(schema) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/collections/\u001b[0m\u001b[1;33mconfig.py\u001b[0m:\u001b[94m49\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92m__get\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 46 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[96mself\u001b[0m.__tenant = tenant \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 47 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 48 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mdef\u001b[0m \u001b[92m__get\u001b[0m(\u001b[96mself\u001b[0m) -> Dict[\u001b[96mstr\u001b[0m, Any]: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 49 \u001b[2m│ │ \u001b[0mresponse = \u001b[96mself\u001b[0m.__connection.get( \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 50 \u001b[0m\u001b[2m│ │ │ \u001b[0mpath=\u001b[33mf\u001b[0m\u001b[33m\"\u001b[0m\u001b[33m/schema/\u001b[0m\u001b[33m{\u001b[0m\u001b[96mself\u001b[0m._name\u001b[33m}\u001b[0m\u001b[33m\"\u001b[0m, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 51 \u001b[0m\u001b[2m│ │ │ \u001b[0merror_msg=\u001b[33m\"\u001b[0m\u001b[33mCollection configuration could not be retrieved.\u001b[0m\u001b[33m\"\u001b[0m, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 52 \u001b[0m\u001b[2m│ │ │ \u001b[0mstatus_codes=_ExpectedStatusCodes(ok_in=\u001b[94m200\u001b[0m, error=\u001b[33m\"\u001b[0m\u001b[33mGet collection configura\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/connect/\u001b[0m\u001b[1;33mv4.py\u001b[0m:\u001b[94m561\u001b[0m in \u001b[92mget\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m558 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m559 \u001b[0m\u001b[2m│ │ \u001b[0mrequest_url = \u001b[96mself\u001b[0m.url + \u001b[96mself\u001b[0m._api_version_path + path \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m560 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m561 \u001b[2m│ │ \u001b[0m\u001b[94mreturn\u001b[0m \u001b[96mself\u001b[0m.__send( \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m562 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[33m\"\u001b[0m\u001b[33mGET\u001b[0m\u001b[33m\"\u001b[0m, url=request_url, params=params, error_msg=error_msg, status_codes=sta \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m563 \u001b[0m\u001b[2m│ │ \u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m564 \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/weaviate/connect/\u001b[0m\u001b[1;33mv4.py\u001b[0m:\u001b[94m449\u001b[0m in \u001b[92m__send\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m446 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mparams=params, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m447 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mheaders=\u001b[96mself\u001b[0m.__get_latest_headers(), \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m448 \u001b[0m\u001b[2m│ │ │ \u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m449 \u001b[2m│ │ │ \u001b[0mres = \u001b[96mself\u001b[0m._client.send(req) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m450 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mif\u001b[0m status_codes \u001b[95mis\u001b[0m \u001b[95mnot\u001b[0m \u001b[94mNone\u001b[0m \u001b[95mand\u001b[0m res.status_code \u001b[95mnot\u001b[0m \u001b[95min\u001b[0m status_codes.ok: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m451 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mraise\u001b[0m UnexpectedStatusCodeError(error_msg, response=res) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m452 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mreturn\u001b[0m cast(Response, res) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/\u001b[0m\u001b[1;33m_client.py\u001b[0m:\u001b[94m914\u001b[0m in \u001b[92msend\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 911 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 912 \u001b[0m\u001b[2m│ │ \u001b[0mauth = \u001b[96mself\u001b[0m._build_request_auth(request, auth) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 913 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 914 \u001b[2m│ │ \u001b[0mresponse = \u001b[96mself\u001b[0m._send_handling_auth( \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 915 \u001b[0m\u001b[2m│ │ │ \u001b[0mrequest, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 916 \u001b[0m\u001b[2m│ │ │ \u001b[0mauth=auth, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 917 \u001b[0m\u001b[2m│ │ │ \u001b[0mfollow_redirects=follow_redirects, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/\u001b[0m\u001b[1;33m_client.py\u001b[0m:\u001b[94m942\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92m_send_handling_auth\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 939 \u001b[0m\u001b[2m│ │ │ \u001b[0mrequest = \u001b[96mnext\u001b[0m(auth_flow) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 940 \u001b[0m\u001b[2m│ │ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 941 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mwhile\u001b[0m \u001b[94mTrue\u001b[0m: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 942 \u001b[2m│ │ │ │ \u001b[0mresponse = \u001b[96mself\u001b[0m._send_handling_redirects( \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 943 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mrequest, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 944 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mfollow_redirects=follow_redirects, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 945 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mhistory=history, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/\u001b[0m\u001b[1;33m_client.py\u001b[0m:\u001b[94m979\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92m_send_handling_redirects\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 976 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mfor\u001b[0m hook \u001b[95min\u001b[0m \u001b[96mself\u001b[0m._event_hooks[\u001b[33m\"\u001b[0m\u001b[33mrequest\u001b[0m\u001b[33m\"\u001b[0m]: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 977 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mhook(request) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 978 \u001b[0m\u001b[2m│ │ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m 979 \u001b[2m│ │ │ \u001b[0mresponse = \u001b[96mself\u001b[0m._send_single_request(request) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 980 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mtry\u001b[0m: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 981 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mfor\u001b[0m hook \u001b[95min\u001b[0m \u001b[96mself\u001b[0m._event_hooks[\u001b[33m\"\u001b[0m\u001b[33mresponse\u001b[0m\u001b[33m\"\u001b[0m]: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 982 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mhook(response) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/\u001b[0m\u001b[1;33m_client.py\u001b[0m:\u001b[94m1015\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92m_send_single_request\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m1012 \u001b[0m\u001b[2m│ │ │ \u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m1013 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m1014 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mwith\u001b[0m request_context(request=request): \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m1015 \u001b[2m│ │ │ \u001b[0mresponse = transport.handle_request(request) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m1016 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m1017 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94massert\u001b[0m \u001b[96misinstance\u001b[0m(response.stream, SyncByteStream) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m1018 \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpx/_transports/\u001b[0m\u001b[1;33mdefault.py\u001b[0m:\u001b[94m233\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m230 \u001b[0m\u001b[2m│ │ │ \u001b[0mextensions=request.extensions, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m231 \u001b[0m\u001b[2m│ │ \u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m232 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mwith\u001b[0m map_httpcore_exceptions(): \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m233 \u001b[2m│ │ │ \u001b[0mresp = \u001b[96mself\u001b[0m._pool.handle_request(req) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m234 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m235 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94massert\u001b[0m \u001b[96misinstance\u001b[0m(resp.stream, typing.Iterable) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m236 \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mconnection_pool.py\u001b[0m:\u001b[94m216\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m213 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mclosing = \u001b[96mself\u001b[0m._assign_requests_to_connections() \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m214 \u001b[0m\u001b[2m│ │ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m215 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[96mself\u001b[0m._close_connections(closing) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m216 \u001b[2m│ │ │ \u001b[0m\u001b[94mraise\u001b[0m exc \u001b[94mfrom\u001b[0m \u001b[94mNone\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m217 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m218 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[2m# Return the response. Note that in this case we still have to manage\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m219 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[2m# the point at which the response is closed.\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mconnection_pool.py\u001b[0m:\u001b[94m196\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m193 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m194 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mtry\u001b[0m: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m195 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0m\u001b[2m# Send the request on the assigned connection.\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m196 \u001b[2m│ │ │ │ │ \u001b[0mresponse = connection.handle_request( \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m197 \u001b[0m\u001b[2m│ │ │ │ │ │ \u001b[0mpool_request.request \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m198 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m199 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mexcept\u001b[0m ConnectionNotAvailable: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mconnection.py\u001b[0m:\u001b[94m101\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 98 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[96mself\u001b[0m._connect_failed = \u001b[94mTrue\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m 99 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mraise\u001b[0m exc \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m100 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m101 \u001b[2m│ │ \u001b[0m\u001b[94mreturn\u001b[0m \u001b[96mself\u001b[0m._connection.handle_request(request) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m102 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m103 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mdef\u001b[0m \u001b[92m_connect\u001b[0m(\u001b[96mself\u001b[0m, request: Request) -> NetworkStream: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m104 \u001b[0m\u001b[2m│ │ \u001b[0mtimeouts = request.extensions.get(\u001b[33m\"\u001b[0m\u001b[33mtimeout\u001b[0m\u001b[33m\"\u001b[0m, {}) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mhttp11.py\u001b[0m:\u001b[94m143\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m140 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mwith\u001b[0m ShieldCancellation(): \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m141 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mwith\u001b[0m Trace(\u001b[33m\"\u001b[0m\u001b[33mresponse_closed\u001b[0m\u001b[33m\"\u001b[0m, logger, request) \u001b[94mas\u001b[0m trace: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m142 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0m\u001b[96mself\u001b[0m._response_closed() \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m143 \u001b[2m│ │ │ \u001b[0m\u001b[94mraise\u001b[0m exc \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m144 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m145 \u001b[0m\u001b[2m│ \u001b[0m\u001b[2m# Sending the request...\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m146 \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mhttp11.py\u001b[0m:\u001b[94m113\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92mhandle_request\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m110 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mreason_phrase, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m111 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mheaders, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m112 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mtrailing_data, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m113 \u001b[2m│ │ │ │ \u001b[0m) = \u001b[96mself\u001b[0m._receive_response_headers(**kwargs) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m114 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mtrace.return_value = ( \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m115 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mhttp_version, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m116 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0mstatus, \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mhttp11.py\u001b[0m:\u001b[94m186\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92m_receive_response_headers\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m183 \u001b[0m\u001b[2m│ │ \u001b[0mtimeout = timeouts.get(\u001b[33m\"\u001b[0m\u001b[33mread\u001b[0m\u001b[33m\"\u001b[0m, \u001b[94mNone\u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m184 \u001b[0m\u001b[2m│ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m185 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mwhile\u001b[0m \u001b[94mTrue\u001b[0m: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m186 \u001b[2m│ │ │ \u001b[0mevent = \u001b[96mself\u001b[0m._receive_event(timeout=timeout) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m187 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mif\u001b[0m \u001b[96misinstance\u001b[0m(event, h11.Response): \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m188 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m\u001b[94mbreak\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m189 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mif\u001b[0m ( \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_sync/\u001b[0m\u001b[1;33mhttp11.py\u001b[0m:\u001b[94m224\u001b[0m in \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[92m_receive_event\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m221 \u001b[0m\u001b[2m│ │ │ │ \u001b[0mevent = \u001b[96mself\u001b[0m._h11_state.next_event() \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m222 \u001b[0m\u001b[2m│ │ │ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m223 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[94mif\u001b[0m event \u001b[95mis\u001b[0m h11.NEED_DATA: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m224 \u001b[2m│ │ │ │ \u001b[0mdata = \u001b[96mself\u001b[0m._network_stream.read( \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m225 \u001b[0m\u001b[2m│ │ │ │ │ \u001b[0m\u001b[96mself\u001b[0m.READ_NUM_BYTES, timeout=timeout \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m226 \u001b[0m\u001b[2m│ │ │ │ \u001b[0m) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m227 \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2;33m/Users/jonnytr/micromamba/lib/python3.10/site-packages/httpcore/_backends/\u001b[0m\u001b[1;33msync.py\u001b[0m:\u001b[94m126\u001b[0m in \u001b[92mread\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m123 \u001b[0m\u001b[2m│ │ \u001b[0mexc_map: ExceptionMapping = {socket.timeout: ReadTimeout, \u001b[96mOSError\u001b[0m: ReadError} \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m124 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mwith\u001b[0m map_exceptions(exc_map): \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m125 \u001b[0m\u001b[2m│ │ │ \u001b[0m\u001b[96mself\u001b[0m._sock.settimeout(timeout) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[31m❱ \u001b[0m126 \u001b[2m│ │ │ \u001b[0m\u001b[94mreturn\u001b[0m \u001b[96mself\u001b[0m._sock.recv(max_bytes) \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m127 \u001b[0m\u001b[2m│ \u001b[0m \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m128 \u001b[0m\u001b[2m│ \u001b[0m\u001b[94mdef\u001b[0m \u001b[92mwrite\u001b[0m(\u001b[96mself\u001b[0m, buffer: \u001b[96mbytes\u001b[0m, timeout: typing.Optional[\u001b[96mfloat\u001b[0m] = \u001b[94mNone\u001b[0m) -> \u001b[94mNone\u001b[0m: \u001b[31m│\u001b[0m\n", - "\u001b[31m│\u001b[0m \u001b[2m129 \u001b[0m\u001b[2m│ │ \u001b[0m\u001b[94mif\u001b[0m \u001b[95mnot\u001b[0m buffer: \u001b[31m│\u001b[0m\n", - "\u001b[31m╰──────────────────────────────────────────────────────────────────────────────────────────────────╯\u001b[0m\n", - "\u001b[1;91mKeyboardInterrupt\u001b[0m\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "record_updates = []\n", - "\n", - "for record in tqdm(remote_dataset.records):\n", - " metadata = record.metadata\n", - " data = get_record_data(record, fields='header', answers='header-correction')\n", - " header = data.get('header-correction', data.get('header'))\n", - " \n", - " if 'number' in metadata:\n", - " metadata['number'] = metadata['number'].replace('FigureSegment', 'Figure').replace('TableSegment', 'Table')\n", - " \n", - " if 'type' in metadata:\n", - " metadata['type'] = metadata['type'].replace('FigureSegment', 'figure').replace('TableSegment', 'table').lower()\n", - " elif 'table' in metadata.get('number', '').lower() or 'figure' in metadata.get('number', '').lower():\n", - " metadata['type'] = metadata['number'].split(' ')[0].lower()\n", - " else:\n", - " metadata['type'] = 'table'\n", - " \n", - " record.metadata = metadata \n", - " \n", - " record_updates.append(record)\n", - "len(record_updates)" - ] - }, - { - "cell_type": "code", - "execution_count": 117, - "id": "fa69261e-9783-4070-a2bc-67025b5b9596", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "d075cf03ad3d4af39a473665d5ef9bd1", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "Output()" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n"
-      ],
-      "text/plain": []
-     },
-     "metadata": {},
-     "output_type": "display_data"
-    },
-    {
-     "data": {
-      "text/html": [
-       "
\n",
-       "
\n" - ], - "text/plain": [ - "\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "remote_dataset.records.update(record_updates)" - ] - }, - { - "cell_type": "markdown", - "id": "03b51eb4-cf6f-41ba-a623-a4190728ed69", - "metadata": { - "jp-MarkdownHeadingCollapsed": true - }, - "source": [ - "# Evaluate OCR Accuracy" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0af04a2f-91a0-4ee1-855e-454cf9b3a666", - "metadata": { - "editable": true, - "scrolled": true, - "slideshow": { - "slide_type": "" - }, - "tags": [] - }, - "outputs": [], - "source": [ - "results = {}\n", - "count = 0\n", - "for reference in tqdm(papers_uploaded):\n", - " pred_tables = get_paper_tables(papers.loc[reference], remote_dataset, select='ranking')\n", - " true_tables = get_paper_tables(papers.loc[reference], remote_dataset, select='text-correction')\n", - " count += len(pred_tables)\n", - "\n", - " if len(pred_tables) != len(true_tables): \n", - " print(len(pred_tables), len(true_tables))\n", - "\n", - " pred_tables = [seg.html for seg in pred_tables.items]\n", - " true_tables = [seg.html for seg in true_tables.items]\n", - " results[reference] = grits_multi_tables(true_tables, pred_tables).mean().to_frame().T\n", - "\n", - "results = pd.concat(results).droplevel(level=1, axis=0)\n", - "metrics.mean(0).to_frame().T.map('{:.1%}'.format)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "991f60a8-2b46-49cd-a04b-ac59a1eb613b", - "metadata": {}, - "outputs": [], - "source": [ - "pred_tables" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "8a74cf1d-92d7-426c-96b2-aec678811bd6", - "metadata": {}, - "outputs": [], - "source": [ - "count/sum(table_counts.values()), count, sum(table_counts.values())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0fc26c0e-7a9b-4757-b480-4db5ab2d025f", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "table_counts = {}\n", - "figure_counts = {}\n", - "for reference in papers_uploaded:\n", - " tables = get_paper_tables(papers.loc[reference], remote_dataset, select='text-correction', skip_status=None)\n", - " if not tables: continue\n", - " table_counts[reference] = max([table.number for table in tables.items if table.number and 'table' in table.header.lower()], default=0)\n", - " figure_counts[reference] = max([table.number for table in tables.items if table.number and table.header.lower().strip().startswith('fig')], default=0)\n", - "\n", - "sum(figure_counts.values()), sum(table_counts.values())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7d96f35f-0496-4feb-b1a2-9a49745efe40", - "metadata": {}, - "outputs": [], - "source": [ - "figure_counts" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1f485ca6-d8cf-4cee-9388-2ff398a851b6", - "metadata": {}, - "outputs": [], - "source": [ - "results = {}\n", - "durations = {}\n", - "count = 0\n", - "for reference in tqdm(papers_uploaded):\n", - " pred_tables = get_paper_tables(papers.loc[reference], remote_dataset, select='ranking')\n", - " true_tables = get_paper_tables(papers.loc[reference], remote_dataset, select='text-correction')\n", - " count += len(pred_tables)\n", - "\n", - " if len(pred_tables) != len(true_tables): \n", - " print(len(pred_tables), len(true_tables))\n", - "\n", - " for i, (pred_table, true_table) in enumerate(zip(pred_tables.items, true_tables.items)):\n", - " results[(reference, i)] = grits_multi_tables([true_table.html], [pred_table.html])\n", - " durations[(reference, i)] = pred_table.duration\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "66e63bc4-10dc-42e9-9ad5-ac18afa93b1f", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "metrics = pd.concat(results).droplevel(level=-1, axis=0)\n", - "durations = pd.Series(durations, name='duration')\n", - "metrics.loc[durations.index, 'duration (s)'] = durations.values\n", - "metrics.columns = metrics.columns.map(lambda x: '_'.join(x).strip('_'))\n", - "metrics" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7fdf6c68-0694-426d-905e-740212962f9c", - "metadata": {}, - "outputs": [], - "source": [ - "durations_m = durations.groupby(level=0).sum() / 60\n", - "px.box(durations_m, orientation='h', width=500, height=220, \n", - " title='Manual table correction time per paper')\\\n", - " .update_xaxes(title='duration (minutes)', dtick=5)\\\n", - " .update_yaxes(title='')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "00f379d8-bc18-4673-88f2-856cdcbc9ec3", - "metadata": {}, - "outputs": [], - "source": [ - "px.scatter(metrics.assign(grits_top_f1=metrics['grits_top_f1']*100,\n", - " grits_con_f1=metrics['grits_con_f1']*100),\n", - " title='Manual correction time per table depends
on OCR quality',\n", - " x='grits_top_f1',\n", - " y='duration (s)',\n", - " trendline='ols',\n", - " range_x=[100, 60],\n", - " range_y=[0, 800],\n", - " width=500,\n", - " height=400)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.19" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/examples/document_extraction/setup_workspace.ipynb b/examples/document_extraction/setup_workspace.ipynb index 37ba20603..fdd4e7210 100644 --- a/examples/document_extraction/setup_workspace.ipynb +++ b/examples/document_extraction/setup_workspace.ipynb @@ -1,580 +1,580 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "f9d7358b", - "metadata": {}, - "source": [ - "# Setting Up Workspaces in Argilla\n", - "\n", - "In this tutorial, we will learn how to set up and manage workspaces in Argilla using the default credentials on a fresh installation. It will walk you through the following steps:\n", - "\n", - "1. Connecting to Argilla with default credentials 🔑\n", - "2. Creating your first workspace 🏗️\n", - "3. Listing available workspaces 📋\n", - "4. Adding PDF documents to the workspace 📄\n", - "5. Creating and uploading a schema 📊\n", - "6. Running PDF preprocessing 🔍\n", - "7. Running LLM extractions 🤖\n", - "\n", - "![Argilla Workspace Management](https://raw.githubusercontent.com/argilla-io/argilla/main/docs/assets/argilla_workspace_management.png)\n", - "\n", - "## Introduction\n", - "\n", - "A **workspace** is a space inside your Argilla instance where authorized users can collaborate on datasets. Workspaces are accessible through both the Python SDK and the UI. When you first install Argilla, you'll need to create workspaces to organize your data and user access.\n", - "\n", - "For more details on workspace management, refer to the [Argilla documentation](https://docs.extralit.ai/latest/admin_guide/workspace/).\n", - "\n", - "Let's get started!\n" - ] - }, - { - "cell_type": "markdown", - "id": "5601c172", - "metadata": {}, - "source": [ - "## 1. Connecting to Argilla\n", - "\n", - "First, we need to import the Argilla library and connect to our instance using the default credentials." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "ce009aae", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] + "cells": [ + { + "cell_type": "markdown", + "id": "f9d7358b", + "metadata": {}, + "source": [ + "# Setting Up Workspaces in Argilla\n", + "\n", + "In this tutorial, we will learn how to set up and manage workspaces in Argilla using the default credentials on a fresh installation. It will walk you through the following steps:\n", + "\n", + "1. Connecting to Argilla with default credentials 🔑\n", + "2. Creating your first workspace 🏗️\n", + "3. Listing available workspaces 📋\n", + "4. Adding PDF documents to the workspace 📄\n", + "5. Creating and uploading a schema 📊\n", + "6. Running PDF preprocessing 🔍\n", + "7. Running LLM extractions 🤖\n", + "\n", + "![Argilla Workspace Management](https://raw.githubusercontent.com/argilla-io/argilla/main/docs/assets/argilla_workspace_management.png)\n", + "\n", + "## Introduction\n", + "\n", + "A **workspace** is a space inside your Argilla instance where authorized users can collaborate on datasets. Workspaces are accessible through both the Python SDK and the UI. When you first install Argilla, you'll need to create workspaces to organize your data and user access.\n", + "\n", + "For more details on workspace management, refer to the [Argilla documentation](https://docs.extralit.ai/latest/admin_guide/workspace/).\n", + "\n", + "Let's get started!\n" + ] + }, + { + "cell_type": "markdown", + "id": "5601c172", + "metadata": {}, + "source": [ + "## 1. Connecting to Argilla\n", + "\n", + "First, we need to import the Argilla library and connect to our instance using the default credentials." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "ce009aae", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + }, + { + "ename": "ConnectError", + "evalue": "[Errno 61] Connection refused", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:67\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 67\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:256\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_close_connections(closing)\n\u001b[0;32m--> 256\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 258\u001b[0m \u001b[38;5;66;03m# Return the response. Note that in this case we still have to manage\u001b[39;00m\n\u001b[1;32m 259\u001b[0m \u001b[38;5;66;03m# the point at which the response is closed.\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:236\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 235\u001b[0m \u001b[38;5;66;03m# Send the request on the assigned connection.\u001b[39;00m\n\u001b[0;32m--> 236\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 237\u001b[0m \u001b[43m \u001b[49m\u001b[43mpool_request\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\n\u001b[1;32m 238\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 239\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ConnectionNotAvailable:\n\u001b[1;32m 240\u001b[0m \u001b[38;5;66;03m# In some cases a connection may initially be available to\u001b[39;00m\n\u001b[1;32m 241\u001b[0m \u001b[38;5;66;03m# handle a request, but then become unavailable.\u001b[39;00m\n\u001b[1;32m 242\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 243\u001b[0m \u001b[38;5;66;03m# In this case we clear the connection and try again.\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:101\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connect_failed \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 101\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 103\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection\u001b[38;5;241m.\u001b[39mhandle_request(request)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:78\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 78\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_connect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 80\u001b[0m ssl_object \u001b[38;5;241m=\u001b[39m stream\u001b[38;5;241m.\u001b[39mget_extra_info(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mssl_object\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:124\u001b[0m, in \u001b[0;36mHTTPConnection._connect\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m Trace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mconnect_tcp\u001b[39m\u001b[38;5;124m\"\u001b[39m, logger, request, kwargs) \u001b[38;5;28;01mas\u001b[39;00m trace:\n\u001b[0;32m--> 124\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_network_backend\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect_tcp\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 125\u001b[0m trace\u001b[38;5;241m.\u001b[39mreturn_value \u001b[38;5;241m=\u001b[39m stream\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_backends/sync.py:215\u001b[0m, in \u001b[0;36mSyncBackend.connect_tcp\u001b[0;34m(self, host, port, timeout, local_address, socket_options)\u001b[0m\n\u001b[1;32m 214\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(\u001b[38;5;241m*\u001b[39moption) \u001b[38;5;66;03m# pragma: no cover\u001b[39;00m\n\u001b[0;32m--> 215\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(socket\u001b[38;5;241m.\u001b[39mIPPROTO_TCP, socket\u001b[38;5;241m.\u001b[39mTCP_NODELAY, \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 216\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m SyncStream(sock)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_exceptions.py:14\u001b[0m, in \u001b[0;36mmap_exceptions\u001b[0;34m(map)\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(exc, from_exc):\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m to_exc(exc) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", + "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpathlib\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Path\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Connect to Argilla using default credentials\u001b[39;00m\n\u001b[0;32m---> 11\u001b[0m client \u001b[38;5;241m=\u001b[39m \u001b[43mrg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mArgilla\u001b[49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mhttp://localhost:6900/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43margilla.apikey\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSuccessfully connected to Argilla at \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclient\u001b[38;5;241m.\u001b[39mapi_url\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/client.py:73\u001b[0m, in \u001b[0;36mArgilla.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 53\u001b[0m api_url: Optional[\u001b[38;5;28mstr\u001b[39m] \u001b[38;5;241m=\u001b[39m DEFAULT_HTTP_CONFIG\u001b[38;5;241m.\u001b[39mapi_url,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mhttp_client_args,\n\u001b[1;32m 58\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 59\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Inits the `Argilla` client.\u001b[39;00m\n\u001b[1;32m 60\u001b[0m \n\u001b[1;32m 61\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;124;03m before raising an exception. Defaults to `5`.\u001b[39;00m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 73\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_url\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_key\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mhttp_client_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_default(\u001b[38;5;28mself\u001b[39m)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:146\u001b[0m, in \u001b[0;36mAPIClient.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mapi \u001b[38;5;241m=\u001b[39m ArgillaAPI(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhttp_client)\n\u001b[1;32m 145\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 146\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_connection\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m UnauthorizedError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ArgillaCredentialsError() \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:160\u001b[0m, in \u001b[0;36mAPIClient._validate_connection\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_validate_connection\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 160\u001b[0m user \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43musers\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_me\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 161\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLogged in as \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39musername\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m with the role \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39mrole\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 162\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog(message\u001b[38;5;241m=\u001b[39mmessage, level\u001b[38;5;241m=\u001b[39mlogging\u001b[38;5;241m.\u001b[39mINFO)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_exceptions/_api.py:91\u001b[0m, in \u001b[0;36mapi_error_handler.._handler_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_handler_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 91\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m HTTPStatusError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 93\u001b[0m _error_switch(status_code\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mstatus_code, error_detail\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mtext)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_users.py:90\u001b[0m, in \u001b[0;36mUsersAPI.get_me\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[38;5;129m@api_error_handler\u001b[39m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget_me\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m UserModel:\n\u001b[0;32m---> 90\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhttp_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/api/v1/me\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 91\u001b[0m response\u001b[38;5;241m.\u001b[39mraise_for_status()\n\u001b[1;32m 92\u001b[0m response_json \u001b[38;5;241m=\u001b[39m response\u001b[38;5;241m.\u001b[39mjson()\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1055\u001b[0m, in \u001b[0;36mClient.get\u001b[0;34m(self, url, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 1038\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget\u001b[39m(\n\u001b[1;32m 1039\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 1040\u001b[0m url: URLTypes,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1048\u001b[0m extensions: typing\u001b[38;5;241m.\u001b[39mOptional[RequestExtensions] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 1049\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Response:\n\u001b[1;32m 1050\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1051\u001b[0m \u001b[38;5;124;03m Send a `GET` request.\u001b[39;00m\n\u001b[1;32m 1052\u001b[0m \n\u001b[1;32m 1053\u001b[0m \u001b[38;5;124;03m **Parameters**: See `httpx.request`.\u001b[39;00m\n\u001b[1;32m 1054\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1055\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1056\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mGET\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1057\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1058\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1059\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1060\u001b[0m \u001b[43m \u001b[49m\u001b[43mcookies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcookies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1061\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1062\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1063\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1064\u001b[0m \u001b[43m \u001b[49m\u001b[43mextensions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextensions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1065\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:828\u001b[0m, in \u001b[0;36mClient.request\u001b[0;34m(self, method, url, content, data, files, json, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 813\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(message, \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m)\n\u001b[1;32m 815\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuild_request(\n\u001b[1;32m 816\u001b[0m method\u001b[38;5;241m=\u001b[39mmethod,\n\u001b[1;32m 817\u001b[0m url\u001b[38;5;241m=\u001b[39murl,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 826\u001b[0m extensions\u001b[38;5;241m=\u001b[39mextensions,\n\u001b[1;32m 827\u001b[0m )\n\u001b[0;32m--> 828\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:915\u001b[0m, in \u001b[0;36mClient.send\u001b[0;34m(self, request, stream, auth, follow_redirects)\u001b[0m\n\u001b[1;32m 907\u001b[0m follow_redirects \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 908\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfollow_redirects\n\u001b[1;32m 909\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(follow_redirects, UseClientDefault)\n\u001b[1;32m 910\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m follow_redirects\n\u001b[1;32m 911\u001b[0m )\n\u001b[1;32m 913\u001b[0m auth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_build_request_auth(request, auth)\n\u001b[0;32m--> 915\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_auth\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 916\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 917\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 918\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 919\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 920\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 921\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 922\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m stream:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:943\u001b[0m, in \u001b[0;36mClient._send_handling_auth\u001b[0;34m(self, request, auth, follow_redirects, history)\u001b[0m\n\u001b[1;32m 940\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mnext\u001b[39m(auth_flow)\n\u001b[1;32m 942\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 943\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_redirects\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhistory\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 948\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 949\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:980\u001b[0m, in \u001b[0;36mClient._send_handling_redirects\u001b[0;34m(self, request, follow_redirects, history)\u001b[0m\n\u001b[1;32m 977\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrequest\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[1;32m 978\u001b[0m hook(request)\n\u001b[0;32m--> 980\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_single_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 982\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresponse\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1016\u001b[0m, in \u001b[0;36mClient._send_single_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 1011\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 1012\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAttempted to send an async request with a sync Client instance.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1013\u001b[0m )\n\u001b[1;32m 1015\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m request_context(request\u001b[38;5;241m=\u001b[39mrequest):\n\u001b[0;32m-> 1016\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mtransport\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1018\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(response\u001b[38;5;241m.\u001b[39mstream, SyncByteStream)\n\u001b[1;32m 1020\u001b[0m response\u001b[38;5;241m.\u001b[39mrequest \u001b[38;5;241m=\u001b[39m request\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 218\u001b[0m req \u001b[38;5;241m=\u001b[39m httpcore\u001b[38;5;241m.\u001b[39mRequest(\n\u001b[1;32m 219\u001b[0m method\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mmethod,\n\u001b[1;32m 220\u001b[0m url\u001b[38;5;241m=\u001b[39mhttpcore\u001b[38;5;241m.\u001b[39mURL(\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 228\u001b[0m extensions\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 229\u001b[0m )\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_pool\u001b[38;5;241m.\u001b[39mhandle_request(req)\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n\u001b[1;32m 235\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m Response(\n\u001b[1;32m 236\u001b[0m status_code\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mstatus,\n\u001b[1;32m 237\u001b[0m headers\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mheaders,\n\u001b[1;32m 238\u001b[0m stream\u001b[38;5;241m=\u001b[39mResponseStream(resp\u001b[38;5;241m.\u001b[39mstream),\n\u001b[1;32m 239\u001b[0m extensions\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 240\u001b[0m )\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 135\u001b[0m value \u001b[38;5;241m=\u001b[39m typ()\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m value\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:84\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n\u001b[1;32m 83\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(exc)\n\u001b[0;32m---> 84\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m mapped_exc(message) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n", + "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused" + ] + } + ], + "source": [ + "import argilla as rg\n", + "import extralit as ex\n", + "import pandas as pd\n", + "import pandera as pa\n", + "from pandera.typing import Index, Series\n", + "import os\n", + "import tempfile\n", + "from pathlib import Path\n", + "\n", + "# Connect to Argilla using default credentials\n", + "client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='argilla.apikey')\n", + "\n", + "print(f\"Successfully connected to Argilla at {client.api_url}\")" + ] + }, + { + "cell_type": "markdown", + "id": "fcdd3afe", + "metadata": {}, + "source": [ + "## 2. Creating Your First Workspace\n", + "\n", + "After connecting to Argilla, let's create our first workspace. We'll define a new `Workspace` object and call the `create()` method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "64b5f09b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Workspace 'test-workspace' created successfully with ID: df91e2b9-c712-4474-af82-891478f23d40\n" + ] + } + ], + "source": [ + "# Define a new workspace\n", + "workspace_name = \"test_workspace\"\n", + "new_workspace = ex.Workspace(name=workspace_name, client=client)\n", + "\n", + "# Create the workspace\n", + "created_workspace = new_workspace.create()\n", + "\n", + "print(f\"Workspace '{workspace_name}' created successfully with ID: {created_workspace.id}\")" + ] + }, + { + "cell_type": "markdown", + "id": "c937e5c7", + "metadata": {}, + "source": [ + "## 3. Listing Available Workspaces\n", + "\n", + "Now, let's check all the workspaces available in our Argilla instance." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d4df67d6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total number of workspaces: 1\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "

Workspaces

nameidupdated_at
test-workspacedf91e2b9-c712-4474-af82-891478f23d402025-04-16T01:27:58.174591
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# List all workspaces\n", + "workspaces = client.workspaces\n", + "\n", + "# Display workspace information\n", + "print(f\"Total number of workspaces: {len(workspaces)}\\n\")\n", + "\n", + "# In a notebook, this will display a table with workspace information\n", + "workspaces" + ] + }, + { + "cell_type": "markdown", + "id": "8ca5b2b8", + "metadata": {}, + "source": [ + "## 4. Adding PDF Documents to the Workspace\n", + "\n", + "Let's add two PDF documents to our workspace. For this tutorial, we'll create temporary PDF files. In a real-world scenario, you'd use actual scientific papers." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "59084a6d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created reference CSV at /tmp/references.csv\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
referencefile_pathtitleauthorsyear
0smith2023first/tmp/sample1.pdfStudy on Sample DataSmith, J.2023
1johnson2022analysis/tmp/sample2.pdfAnalysis of Experimental ResultsJohnson, A.2022
\n", + "
" + ], + "text/plain": [ + " reference file_path title \\\n", + "0 smith2023first /tmp/sample1.pdf Study on Sample Data \n", + "1 johnson2022analysis /tmp/sample2.pdf Analysis of Experimental Results \n", + "\n", + " authors year \n", + "0 Smith, J. 2023 \n", + "1 Johnson, A. 2022 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# In a real-world scenario, you would use actual PDFs. Here we'll create temp files\n", + "# Define the paths for our temporary PDF files\n", + "temp_dir = tempfile.gettempdir()\n", + "pdf_file1 = Path(temp_dir) / \"sample1.pdf\"\n", + "pdf_file2 = Path(temp_dir) / \"sample2.pdf\"\n", + "\n", + "# Create empty PDF files - in reality, these would be your actual PDFs\n", + "with open(pdf_file1, \"wb\") as f:\n", + " f.write(b\"%PDF-1.5\\n%Example Document 1\")\n", + " \n", + "with open(pdf_file2, \"wb\") as f:\n", + " f.write(b\"%PDF-1.5\\n%Example Document 2\")\n", + "\n", + "# Create a reference dataframe with metadata for the PDFs\n", + "references_df = pd.DataFrame({\n", + " \"reference\": [\"smith2023first\", \"johnson2022analysis\"],\n", + " \"file_path\": [str(pdf_file1), str(pdf_file2)],\n", + " \"title\": [\"Study on Sample Data\", \"Analysis of Experimental Results\"],\n", + " \"authors\": [\"Smith, J.\", \"Johnson, A.\"],\n", + " \"year\": [2023, 2022]\n", + "})\n", + "\n", + "# Save the dataframe to a temporary CSV file\n", + "references_csv = Path(temp_dir) / \"references.csv\"\n", + "references_df.to_csv(references_csv, index=False)\n", + "\n", + "print(f\"Created reference CSV at {references_csv}\")\n", + "references_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "abc8562f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Workspace(id=UUID('df91e2b9-c712-4474-af82-891478f23d40') inserted_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) updated_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) name='test-workspace')" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_workspace" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a147c6c2", + "metadata": {}, + "outputs": [], + "source": [ + "# Import the documents into the workspace\n", + "# For demonstration purposes, we'll use the extralit client directly\n", + "# Initialize the extralit client with the same credentials\n", + "extralit_client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='argilla.apikey')\n", + "\n", + "# Import the documents\n", + "result = extralit_client.import_documents(\n", + " workspace=workspace_name,\n", + " papers=str(references_csv),\n", + " metadatas=[\"title\", \"authors\", \"year\"]\n", + ")\n", + "\n", + "print(f\"Imported {len(result)} documents into workspace '{workspace_name}'\")" + ] + }, + { + "cell_type": "markdown", + "id": "98a2025d", + "metadata": {}, + "source": [ + "## 5. Creating and Uploading a Schema\n", + "\n", + "Now, let's create a simple schema to define the structure of the data we want to extract from our documents." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f15f4b2f", + "metadata": {}, + "outputs": [], + "source": [ + "# Define a simple schema using Pandera\n", + "class Publication(pa.DataFrameModel):\n", + " \"\"\"\n", + " General information about the publication, extracted once per paper.\n", + " \"\"\"\n", + " reference: Index[str] = pa.Field(unique=True, check_name=True)\n", + " title: Series[str] = pa.Field()\n", + " authors: Series[str] = pa.Field()\n", + " publication_year: Series[int] = pa.Field(ge=1900, le=2100)\n", + " doi: Series[str] = pa.Field(nullable=True)\n", + " \n", + " class Config:\n", + " singleton = {'enabled': True} # Indicates this is a document-level schema\n", + "\n", + "# Define a second schema for experimental data\n", + "class ExperimentalData(pa.DataFrameModel):\n", + " \"\"\"\n", + " Experimental data extracted from the paper, may appear multiple times.\n", + " \"\"\"\n", + " experiment_id: Series[str] = pa.Field()\n", + " sample_size: Series[int] = pa.Field(gt=0)\n", + " study_type: Series[str] = pa.Field()\n", + " result_value: Series[float] = pa.Field()\n", + " significance: Series[float] = pa.Field(le=1.0, ge=0.0)\n", + "\n", + "# Create a schema structure object\n", + "from extralit.extraction.models.schema import SchemaStructure\n", + "\n", + "# Save schemas to a temporary JSON file\n", + "schema_file = Path(temp_dir) / \"schemas.json\"\n", + "schema_structure = SchemaStructure(schemas={\"Publication\": Publication, \"ExperimentalData\": ExperimentalData})\n", + "schema_structure.to_json(schema_file)\n", + "\n", + "print(f\"Created schema file at {schema_file}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dc61a1ab", + "metadata": {}, + "outputs": [], + "source": [ + "# Upload the schema to the workspace\n", + "result = extralit_client.upload_schemas(\n", + " workspace=workspace_name,\n", + " schemas=str(schema_file)\n", + ")\n", + "\n", + "print(f\"Uploaded schemas to workspace '{workspace_name}'\")" + ] + }, + { + "cell_type": "markdown", + "id": "7a92c20d", + "metadata": {}, + "source": [ + "## 6. Running PDF Preprocessing\n", + "\n", + "Next, let's run the PDF preprocessing step to extract text and table content from our documents." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "768e7176", + "metadata": {}, + "outputs": [], + "source": [ + "# Run PDF preprocessing\n", + "from extralit.preprocessing.pdf import process_pdfs\n", + "\n", + "# Get the references from our dataframe\n", + "references = references_df[\"reference\"].tolist()\n", + "\n", + "# Run the preprocessing step\n", + "preprocessing_result = process_pdfs(\n", + " workspace=workspace_name,\n", + " references=references,\n", + " text_ocr=[\"default\"], # Using the default text OCR model\n", + " table_ocr=[\"default\"], # Using the default table OCR model\n", + " output_dataset=\"PDF_Preprocessing_Results\"\n", + ")\n", + "\n", + "print(f\"Preprocessing completed for {len(preprocessing_result)} documents\")" + ] + }, + { + "cell_type": "markdown", + "id": "44aa776d", + "metadata": {}, + "source": [ + "## 7. Running LLM Extractions\n", + "\n", + "Finally, let's run the LLM extraction step to extract structured data according to our schema." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19221abe", + "metadata": {}, + "outputs": [], + "source": [ + "# Run LLM extractions\n", + "from extralit.extraction.llm import extract_data\n", + "\n", + "# Run the extraction step\n", + "extraction_result = extract_data(\n", + " workspace=workspace_name,\n", + " references=references,\n", + " output_dataset=\"Data_Extraction_Results\"\n", + ")\n", + "\n", + "print(f\"LLM extractions completed for {len(extraction_result)} documents\")" + ] + }, + { + "cell_type": "markdown", + "id": "c1b6ec61", + "metadata": {}, + "source": [ + "## 8. Checking Extraction Results\n", + "\n", + "Let's check the results of our extractions by listing the datasets created and viewing the extracted data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4dbb695d", + "metadata": {}, + "outputs": [], + "source": [ + "# List datasets in the workspace\n", + "datasets = extralit_client.list_datasets(workspace=workspace_name)\n", + "print(f\"Datasets in workspace '{workspace_name}':\\n\")\n", + "for dataset in datasets:\n", + " print(f\"- {dataset.name} ({dataset.id})\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6eee019d", + "metadata": {}, + "outputs": [], + "source": [ + "# Export the extracted data\n", + "extracted_data = extralit_client.export_data(\n", + " workspace=workspace_name,\n", + " output=\"temp_output.csv\" # This will save the data to a CSV file\n", + ")\n", + "\n", + "# Display the extracted data\n", + "if isinstance(extracted_data, dict):\n", + " for schema_name, data_df in extracted_data.items():\n", + " print(f\"\\nExtracted data for schema '{schema_name}':\\n\")\n", + " display(data_df)\n", + "else:\n", + " print(\"\\nExtracted data:\")\n", + " display(extracted_data)" + ] + }, + { + "cell_type": "markdown", + "id": "7a30a5ea", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Congratulations! You've successfully tested the primary functionalities of Extralit with default credentials on a fresh install. You have:\n", + "\n", + "1. Connected to Argilla with default credentials\n", + "2. Created a workspace\n", + "3. Added PDF documents\n", + "4. Created and uploaded a schema\n", + "5. Run PDF preprocessing\n", + "6. Run LLM extractions\n", + "7. Checked the extraction results\n", + "\n", + "This workflow demonstrates the basic process of using Extralit for data extraction from scientific papers. In a real-world scenario, you would upload actual scientific papers and create more complex schemas tailored to your specific data extraction needs.\n", + "\n", + "For more detailed information, refer to the [Extralit documentation](https://docs.extralit.ai/latest/)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.19" + } }, - { - "ename": "ConnectError", - "evalue": "[Errno 61] Connection refused", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:67\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 67\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:256\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_close_connections(closing)\n\u001b[0;32m--> 256\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 258\u001b[0m \u001b[38;5;66;03m# Return the response. Note that in this case we still have to manage\u001b[39;00m\n\u001b[1;32m 259\u001b[0m \u001b[38;5;66;03m# the point at which the response is closed.\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:236\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 235\u001b[0m \u001b[38;5;66;03m# Send the request on the assigned connection.\u001b[39;00m\n\u001b[0;32m--> 236\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 237\u001b[0m \u001b[43m \u001b[49m\u001b[43mpool_request\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\n\u001b[1;32m 238\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 239\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ConnectionNotAvailable:\n\u001b[1;32m 240\u001b[0m \u001b[38;5;66;03m# In some cases a connection may initially be available to\u001b[39;00m\n\u001b[1;32m 241\u001b[0m \u001b[38;5;66;03m# handle a request, but then become unavailable.\u001b[39;00m\n\u001b[1;32m 242\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 243\u001b[0m \u001b[38;5;66;03m# In this case we clear the connection and try again.\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:101\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connect_failed \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 101\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 103\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection\u001b[38;5;241m.\u001b[39mhandle_request(request)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:78\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 78\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_connect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 80\u001b[0m ssl_object \u001b[38;5;241m=\u001b[39m stream\u001b[38;5;241m.\u001b[39mget_extra_info(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mssl_object\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:124\u001b[0m, in \u001b[0;36mHTTPConnection._connect\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m Trace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mconnect_tcp\u001b[39m\u001b[38;5;124m\"\u001b[39m, logger, request, kwargs) \u001b[38;5;28;01mas\u001b[39;00m trace:\n\u001b[0;32m--> 124\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_network_backend\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect_tcp\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 125\u001b[0m trace\u001b[38;5;241m.\u001b[39mreturn_value \u001b[38;5;241m=\u001b[39m stream\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_backends/sync.py:215\u001b[0m, in \u001b[0;36mSyncBackend.connect_tcp\u001b[0;34m(self, host, port, timeout, local_address, socket_options)\u001b[0m\n\u001b[1;32m 214\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(\u001b[38;5;241m*\u001b[39moption) \u001b[38;5;66;03m# pragma: no cover\u001b[39;00m\n\u001b[0;32m--> 215\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(socket\u001b[38;5;241m.\u001b[39mIPPROTO_TCP, socket\u001b[38;5;241m.\u001b[39mTCP_NODELAY, \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 216\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m SyncStream(sock)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_exceptions.py:14\u001b[0m, in \u001b[0;36mmap_exceptions\u001b[0;34m(map)\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(exc, from_exc):\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m to_exc(exc) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", - "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpathlib\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Path\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Connect to Argilla using default credentials\u001b[39;00m\n\u001b[0;32m---> 11\u001b[0m client \u001b[38;5;241m=\u001b[39m \u001b[43mrg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mArgilla\u001b[49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mhttp://localhost:6900/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43margilla.apikey\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSuccessfully connected to Argilla at \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclient\u001b[38;5;241m.\u001b[39mapi_url\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/client.py:73\u001b[0m, in \u001b[0;36mArgilla.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 53\u001b[0m api_url: Optional[\u001b[38;5;28mstr\u001b[39m] \u001b[38;5;241m=\u001b[39m DEFAULT_HTTP_CONFIG\u001b[38;5;241m.\u001b[39mapi_url,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mhttp_client_args,\n\u001b[1;32m 58\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 59\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Inits the `Argilla` client.\u001b[39;00m\n\u001b[1;32m 60\u001b[0m \n\u001b[1;32m 61\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;124;03m before raising an exception. Defaults to `5`.\u001b[39;00m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 73\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_url\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_key\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mhttp_client_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_default(\u001b[38;5;28mself\u001b[39m)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:146\u001b[0m, in \u001b[0;36mAPIClient.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mapi \u001b[38;5;241m=\u001b[39m ArgillaAPI(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhttp_client)\n\u001b[1;32m 145\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 146\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_connection\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m UnauthorizedError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ArgillaCredentialsError() \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:160\u001b[0m, in \u001b[0;36mAPIClient._validate_connection\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_validate_connection\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 160\u001b[0m user \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43musers\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_me\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 161\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLogged in as \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39musername\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m with the role \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39mrole\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 162\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog(message\u001b[38;5;241m=\u001b[39mmessage, level\u001b[38;5;241m=\u001b[39mlogging\u001b[38;5;241m.\u001b[39mINFO)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_exceptions/_api.py:91\u001b[0m, in \u001b[0;36mapi_error_handler.._handler_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_handler_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 91\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m HTTPStatusError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 93\u001b[0m _error_switch(status_code\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mstatus_code, error_detail\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mtext)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_users.py:90\u001b[0m, in \u001b[0;36mUsersAPI.get_me\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[38;5;129m@api_error_handler\u001b[39m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget_me\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m UserModel:\n\u001b[0;32m---> 90\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhttp_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/api/v1/me\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 91\u001b[0m response\u001b[38;5;241m.\u001b[39mraise_for_status()\n\u001b[1;32m 92\u001b[0m response_json \u001b[38;5;241m=\u001b[39m response\u001b[38;5;241m.\u001b[39mjson()\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1055\u001b[0m, in \u001b[0;36mClient.get\u001b[0;34m(self, url, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 1038\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget\u001b[39m(\n\u001b[1;32m 1039\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 1040\u001b[0m url: URLTypes,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1048\u001b[0m extensions: typing\u001b[38;5;241m.\u001b[39mOptional[RequestExtensions] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 1049\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Response:\n\u001b[1;32m 1050\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1051\u001b[0m \u001b[38;5;124;03m Send a `GET` request.\u001b[39;00m\n\u001b[1;32m 1052\u001b[0m \n\u001b[1;32m 1053\u001b[0m \u001b[38;5;124;03m **Parameters**: See `httpx.request`.\u001b[39;00m\n\u001b[1;32m 1054\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1055\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1056\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mGET\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1057\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1058\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1059\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1060\u001b[0m \u001b[43m \u001b[49m\u001b[43mcookies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcookies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1061\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1062\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1063\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1064\u001b[0m \u001b[43m \u001b[49m\u001b[43mextensions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextensions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1065\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:828\u001b[0m, in \u001b[0;36mClient.request\u001b[0;34m(self, method, url, content, data, files, json, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 813\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(message, \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m)\n\u001b[1;32m 815\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuild_request(\n\u001b[1;32m 816\u001b[0m method\u001b[38;5;241m=\u001b[39mmethod,\n\u001b[1;32m 817\u001b[0m url\u001b[38;5;241m=\u001b[39murl,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 826\u001b[0m extensions\u001b[38;5;241m=\u001b[39mextensions,\n\u001b[1;32m 827\u001b[0m )\n\u001b[0;32m--> 828\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:915\u001b[0m, in \u001b[0;36mClient.send\u001b[0;34m(self, request, stream, auth, follow_redirects)\u001b[0m\n\u001b[1;32m 907\u001b[0m follow_redirects \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 908\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfollow_redirects\n\u001b[1;32m 909\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(follow_redirects, UseClientDefault)\n\u001b[1;32m 910\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m follow_redirects\n\u001b[1;32m 911\u001b[0m )\n\u001b[1;32m 913\u001b[0m auth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_build_request_auth(request, auth)\n\u001b[0;32m--> 915\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_auth\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 916\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 917\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 918\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 919\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 920\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 921\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 922\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m stream:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:943\u001b[0m, in \u001b[0;36mClient._send_handling_auth\u001b[0;34m(self, request, auth, follow_redirects, history)\u001b[0m\n\u001b[1;32m 940\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mnext\u001b[39m(auth_flow)\n\u001b[1;32m 942\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 943\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_redirects\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhistory\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 948\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 949\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:980\u001b[0m, in \u001b[0;36mClient._send_handling_redirects\u001b[0;34m(self, request, follow_redirects, history)\u001b[0m\n\u001b[1;32m 977\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrequest\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[1;32m 978\u001b[0m hook(request)\n\u001b[0;32m--> 980\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_single_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 982\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresponse\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1016\u001b[0m, in \u001b[0;36mClient._send_single_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 1011\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 1012\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAttempted to send an async request with a sync Client instance.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1013\u001b[0m )\n\u001b[1;32m 1015\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m request_context(request\u001b[38;5;241m=\u001b[39mrequest):\n\u001b[0;32m-> 1016\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mtransport\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1018\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(response\u001b[38;5;241m.\u001b[39mstream, SyncByteStream)\n\u001b[1;32m 1020\u001b[0m response\u001b[38;5;241m.\u001b[39mrequest \u001b[38;5;241m=\u001b[39m request\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 218\u001b[0m req \u001b[38;5;241m=\u001b[39m httpcore\u001b[38;5;241m.\u001b[39mRequest(\n\u001b[1;32m 219\u001b[0m method\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mmethod,\n\u001b[1;32m 220\u001b[0m url\u001b[38;5;241m=\u001b[39mhttpcore\u001b[38;5;241m.\u001b[39mURL(\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 228\u001b[0m extensions\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 229\u001b[0m )\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_pool\u001b[38;5;241m.\u001b[39mhandle_request(req)\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n\u001b[1;32m 235\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m Response(\n\u001b[1;32m 236\u001b[0m status_code\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mstatus,\n\u001b[1;32m 237\u001b[0m headers\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mheaders,\n\u001b[1;32m 238\u001b[0m stream\u001b[38;5;241m=\u001b[39mResponseStream(resp\u001b[38;5;241m.\u001b[39mstream),\n\u001b[1;32m 239\u001b[0m extensions\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 240\u001b[0m )\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 135\u001b[0m value \u001b[38;5;241m=\u001b[39m typ()\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m value\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:84\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n\u001b[1;32m 83\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(exc)\n\u001b[0;32m---> 84\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m mapped_exc(message) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n", - "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused" - ] - } - ], - "source": [ - "import argilla as rg\n", - "import extralit as ex\n", - "import pandas as pd\n", - "import pandera as pa\n", - "from pandera.typing import Index, Series\n", - "import os\n", - "import tempfile\n", - "from pathlib import Path\n", - "\n", - "# Connect to Argilla using default credentials\n", - "client = rg.Argilla(api_url=\"http://localhost:6900/\", api_key='argilla.apikey')\n", - "\n", - "print(f\"Successfully connected to Argilla at {client.api_url}\")" - ] - }, - { - "cell_type": "markdown", - "id": "fcdd3afe", - "metadata": {}, - "source": [ - "## 2. Creating Your First Workspace\n", - "\n", - "After connecting to Argilla, let's create our first workspace. We'll define a new `Workspace` object and call the `create()` method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "64b5f09b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Workspace 'test-workspace' created successfully with ID: df91e2b9-c712-4474-af82-891478f23d40\n" - ] - } - ], - "source": [ - "# Define a new workspace\n", - "workspace_name = \"test_workspace\"\n", - "new_workspace = rg.Workspace(name=workspace_name, client=client)\n", - "\n", - "# Create the workspace\n", - "created_workspace = new_workspace.create()\n", - "\n", - "print(f\"Workspace '{workspace_name}' created successfully with ID: {created_workspace.id}\")" - ] - }, - { - "cell_type": "markdown", - "id": "c937e5c7", - "metadata": {}, - "source": [ - "## 3. Listing Available Workspaces\n", - "\n", - "Now, let's check all the workspaces available in our Argilla instance." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "d4df67d6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total number of workspaces: 1\n", - "\n" - ] - }, - { - "data": { - "text/html": [ - "

Workspaces

nameidupdated_at
test-workspacedf91e2b9-c712-4474-af82-891478f23d402025-04-16T01:27:58.174591
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# List all workspaces\n", - "workspaces = client.workspaces\n", - "\n", - "# Display workspace information\n", - "print(f\"Total number of workspaces: {len(workspaces)}\\n\")\n", - "\n", - "# In a notebook, this will display a table with workspace information\n", - "workspaces" - ] - }, - { - "cell_type": "markdown", - "id": "8ca5b2b8", - "metadata": {}, - "source": [ - "## 4. Adding PDF Documents to the Workspace\n", - "\n", - "Let's add two PDF documents to our workspace. For this tutorial, we'll create temporary PDF files. In a real-world scenario, you'd use actual scientific papers." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "59084a6d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Created reference CSV at /tmp/references.csv\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
referencefile_pathtitleauthorsyear
0smith2023first/tmp/sample1.pdfStudy on Sample DataSmith, J.2023
1johnson2022analysis/tmp/sample2.pdfAnalysis of Experimental ResultsJohnson, A.2022
\n", - "
" - ], - "text/plain": [ - " reference file_path title \\\n", - "0 smith2023first /tmp/sample1.pdf Study on Sample Data \n", - "1 johnson2022analysis /tmp/sample2.pdf Analysis of Experimental Results \n", - "\n", - " authors year \n", - "0 Smith, J. 2023 \n", - "1 Johnson, A. 2022 " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# In a real-world scenario, you would use actual PDFs. Here we'll create temp files\n", - "# Define the paths for our temporary PDF files\n", - "temp_dir = tempfile.gettempdir()\n", - "pdf_file1 = Path(temp_dir) / \"sample1.pdf\"\n", - "pdf_file2 = Path(temp_dir) / \"sample2.pdf\"\n", - "\n", - "# Create empty PDF files - in reality, these would be your actual PDFs\n", - "with open(pdf_file1, \"wb\") as f:\n", - " f.write(b\"%PDF-1.5\\n%Example Document 1\")\n", - " \n", - "with open(pdf_file2, \"wb\") as f:\n", - " f.write(b\"%PDF-1.5\\n%Example Document 2\")\n", - "\n", - "# Create a reference dataframe with metadata for the PDFs\n", - "references_df = pd.DataFrame({\n", - " \"reference\": [\"smith2023first\", \"johnson2022analysis\"],\n", - " \"file_path\": [str(pdf_file1), str(pdf_file2)],\n", - " \"title\": [\"Study on Sample Data\", \"Analysis of Experimental Results\"],\n", - " \"authors\": [\"Smith, J.\", \"Johnson, A.\"],\n", - " \"year\": [2023, 2022]\n", - "})\n", - "\n", - "# Save the dataframe to a temporary CSV file\n", - "references_csv = Path(temp_dir) / \"references.csv\"\n", - "references_df.to_csv(references_csv, index=False)\n", - "\n", - "print(f\"Created reference CSV at {references_csv}\")\n", - "references_df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "abc8562f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Workspace(id=UUID('df91e2b9-c712-4474-af82-891478f23d40') inserted_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) updated_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) name='test-workspace')" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_workspace" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a147c6c2", - "metadata": {}, - "outputs": [], - "source": [ - "# Import the documents into the workspace\n", - "# For demonstration purposes, we'll use the extralit client directly\n", - "# Initialize the extralit client with the same credentials\n", - "extralit_client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='argilla.apikey')\n", - "\n", - "# Import the documents\n", - "result = extralit_client.import_documents(\n", - " workspace=workspace_name,\n", - " papers=str(references_csv),\n", - " metadatas=[\"title\", \"authors\", \"year\"]\n", - ")\n", - "\n", - "print(f\"Imported {len(result)} documents into workspace '{workspace_name}'\")" - ] - }, - { - "cell_type": "markdown", - "id": "98a2025d", - "metadata": {}, - "source": [ - "## 5. Creating and Uploading a Schema\n", - "\n", - "Now, let's create a simple schema to define the structure of the data we want to extract from our documents." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f15f4b2f", - "metadata": {}, - "outputs": [], - "source": [ - "# Define a simple schema using Pandera\n", - "class Publication(pa.DataFrameModel):\n", - " \"\"\"\n", - " General information about the publication, extracted once per paper.\n", - " \"\"\"\n", - " reference: Index[str] = pa.Field(unique=True, check_name=True)\n", - " title: Series[str] = pa.Field()\n", - " authors: Series[str] = pa.Field()\n", - " publication_year: Series[int] = pa.Field(ge=1900, le=2100)\n", - " doi: Series[str] = pa.Field(nullable=True)\n", - " \n", - " class Config:\n", - " singleton = {'enabled': True} # Indicates this is a document-level schema\n", - "\n", - "# Define a second schema for experimental data\n", - "class ExperimentalData(pa.DataFrameModel):\n", - " \"\"\"\n", - " Experimental data extracted from the paper, may appear multiple times.\n", - " \"\"\"\n", - " experiment_id: Series[str] = pa.Field()\n", - " sample_size: Series[int] = pa.Field(gt=0)\n", - " study_type: Series[str] = pa.Field()\n", - " result_value: Series[float] = pa.Field()\n", - " significance: Series[float] = pa.Field(le=1.0, ge=0.0)\n", - "\n", - "# Create a schema structure object\n", - "from extralit.extraction.models.schema import SchemaStructure\n", - "\n", - "# Save schemas to a temporary JSON file\n", - "schema_file = Path(temp_dir) / \"schemas.json\"\n", - "schema_structure = SchemaStructure(schemas={\"Publication\": Publication, \"ExperimentalData\": ExperimentalData})\n", - "schema_structure.to_json(schema_file)\n", - "\n", - "print(f\"Created schema file at {schema_file}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dc61a1ab", - "metadata": {}, - "outputs": [], - "source": [ - "# Upload the schema to the workspace\n", - "result = extralit_client.upload_schemas(\n", - " workspace=workspace_name,\n", - " schemas=str(schema_file)\n", - ")\n", - "\n", - "print(f\"Uploaded schemas to workspace '{workspace_name}'\")" - ] - }, - { - "cell_type": "markdown", - "id": "7a92c20d", - "metadata": {}, - "source": [ - "## 6. Running PDF Preprocessing\n", - "\n", - "Next, let's run the PDF preprocessing step to extract text and table content from our documents." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "768e7176", - "metadata": {}, - "outputs": [], - "source": [ - "# Run PDF preprocessing\n", - "from extralit.preprocessing.pdf import process_pdfs\n", - "\n", - "# Get the references from our dataframe\n", - "references = references_df[\"reference\"].tolist()\n", - "\n", - "# Run the preprocessing step\n", - "preprocessing_result = process_pdfs(\n", - " workspace=workspace_name,\n", - " references=references,\n", - " text_ocr=[\"default\"], # Using the default text OCR model\n", - " table_ocr=[\"default\"], # Using the default table OCR model\n", - " output_dataset=\"PDF_Preprocessing_Results\"\n", - ")\n", - "\n", - "print(f\"Preprocessing completed for {len(preprocessing_result)} documents\")" - ] - }, - { - "cell_type": "markdown", - "id": "44aa776d", - "metadata": {}, - "source": [ - "## 7. Running LLM Extractions\n", - "\n", - "Finally, let's run the LLM extraction step to extract structured data according to our schema." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "19221abe", - "metadata": {}, - "outputs": [], - "source": [ - "# Run LLM extractions\n", - "from extralit.extraction.llm import extract_data\n", - "\n", - "# Run the extraction step\n", - "extraction_result = extract_data(\n", - " workspace=workspace_name,\n", - " references=references,\n", - " output_dataset=\"Data_Extraction_Results\"\n", - ")\n", - "\n", - "print(f\"LLM extractions completed for {len(extraction_result)} documents\")" - ] - }, - { - "cell_type": "markdown", - "id": "c1b6ec61", - "metadata": {}, - "source": [ - "## 8. Checking Extraction Results\n", - "\n", - "Let's check the results of our extractions by listing the datasets created and viewing the extracted data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4dbb695d", - "metadata": {}, - "outputs": [], - "source": [ - "# List datasets in the workspace\n", - "datasets = extralit_client.list_datasets(workspace=workspace_name)\n", - "print(f\"Datasets in workspace '{workspace_name}':\\n\")\n", - "for dataset in datasets:\n", - " print(f\"- {dataset.name} ({dataset.id})\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6eee019d", - "metadata": {}, - "outputs": [], - "source": [ - "# Export the extracted data\n", - "extracted_data = extralit_client.export_data(\n", - " workspace=workspace_name,\n", - " output=\"temp_output.csv\" # This will save the data to a CSV file\n", - ")\n", - "\n", - "# Display the extracted data\n", - "if isinstance(extracted_data, dict):\n", - " for schema_name, data_df in extracted_data.items():\n", - " print(f\"\\nExtracted data for schema '{schema_name}':\\n\")\n", - " display(data_df)\n", - "else:\n", - " print(\"\\nExtracted data:\")\n", - " display(extracted_data)" - ] - }, - { - "cell_type": "markdown", - "id": "7a30a5ea", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "Congratulations! You've successfully tested the primary functionalities of Extralit with default credentials on a fresh install. You have:\n", - "\n", - "1. Connected to Argilla with default credentials\n", - "2. Created a workspace\n", - "3. Added PDF documents\n", - "4. Created and uploaded a schema\n", - "5. Run PDF preprocessing\n", - "6. Run LLM extractions\n", - "7. Checked the extraction results\n", - "\n", - "This workflow demonstrates the basic process of using Extralit for data extraction from scientific papers. In a real-world scenario, you would upload actual scientific papers and create more complex schemas tailored to your specific data extraction needs.\n", - "\n", - "For more detailed information, refer to the [Extralit documentation](https://docs.extralit.ai/latest/)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.19" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/examples/webhooks/basic-webhooks/main.py b/examples/webhooks/basic-webhooks/main.py index ef37dcc50..dbde54a15 100644 --- a/examples/webhooks/basic-webhooks/main.py +++ b/examples/webhooks/basic-webhooks/main.py @@ -1,14 +1,14 @@ import os from datetime import datetime -import extralit as rg +import extralit as ex # Environment variables with defaults API_KEY = os.environ.get("ARGILLA_API_KEY", "extralit.apikey") API_URL = os.environ.get("ARGILLA_API_URL", "http://localhost:6900") # Initialize Argilla client -client = rg.Extralit(api_key=API_KEY, api_url=API_URL) +client = ex.Extralit(api_key=API_KEY, api_url=API_URL) # Show the existing webhooks in the argilla server for webhook in client.webhooks: @@ -32,17 +32,17 @@ # Related resources will be passed as keyword arguments to the decorated function # (for example the dataset for a record-related event, or the record for a response-related event) # When a resource is deleted -@rg.webhook_listener(events=["record.deleted", "record.completed"]) -async def records_listener(record: rg.Record, type: str, timestamp: datetime): +@ex.webhook_listener(events=["record.deleted", "record.completed"]) +async def records_listener(record: ex.Record, type: str, timestamp: datetime): print(f"Received event of type {type} at {timestamp} for record {record}") -@rg.webhook_listener(events=["response.created", "response.updated"]) -async def responses_listener(response: rg.UserResponse, type: str, timestamp: datetime): +@ex.webhook_listener(events=["response.created", "response.updated"]) +async def responses_listener(response: ex.UserResponse, type: str, timestamp: datetime): print(f"Received event of type {type} at {timestamp} for response {response}") -@rg.webhook_listener( +@ex.webhook_listener( events=[ "dataset.created", "dataset.updated", @@ -50,7 +50,7 @@ async def responses_listener(response: rg.UserResponse, type: str, timestamp: da "dataset.deleted", ] ) -async def datasets_listener(type: str, timestamp: datetime, dataset: rg.Dataset): +async def datasets_listener(type: str, timestamp: datetime, dataset: ex.Dataset): print(f"Received event of type {type} at {timestamp} for dataset {dataset}") @@ -59,4 +59,4 @@ async def datasets_listener(type: str, timestamp: datetime, dataset: rg.Dataset) # uvicorn main:server --reload # ``` -server = rg.get_webhook_server() +server = ex.get_webhook_server() diff --git a/extralit-server/.env.dev b/extralit-server/.env.dev index 1e95eb88b..c25fc4370 100644 --- a/extralit-server/.env.dev +++ b/extralit-server/.env.dev @@ -1,7 +1,7 @@ OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES # Needed by RQ to work with forked processes on MacOS ALEMBIC_CONFIG=src/extralit_server/alembic.ini ARGILLA_AUTH_SECRET_KEY=8VO7na5N/jQx+yP/N+HlE8q51vPdrxqlh6OzoebIyko= # With this we avoid using a different key every time the server is reloaded -ARGILLA_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/argilla-dev.db?check_same_thread=False +ARGILLA_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/extralit-dev.db?check_same_thread=False HF_HUB_DISABLE_TELEMETRY=1 # S3 Configuration (skipped to use LocalFileStorage) diff --git a/extralit-server/docker/extralit-hf-spaces/README.md b/extralit-server/docker/extralit-hf-spaces/README.md index 824e6fbd3..1c92c5f50 100644 --- a/extralit-server/docker/extralit-hf-spaces/README.md +++ b/extralit-server/docker/extralit-hf-spaces/README.md @@ -1,5 +1,5 @@

- Argilla + Argilla
Argilla
diff --git a/extralit-server/docker/server/README.md b/extralit-server/docker/server/README.md index 66c246fd1..c01bbb9af 100644 --- a/extralit-server/docker/server/README.md +++ b/extralit-server/docker/server/README.md @@ -1,5 +1,5 @@

- Argilla + Argilla
Argilla
diff --git a/extralit-server/src/extralit_server/api/handlers/v1/files.py b/extralit-server/src/extralit_server/api/handlers/v1/files.py index af5116076..7fc6e0d94 100644 --- a/extralit-server/src/extralit_server/api/handlers/v1/files.py +++ b/extralit-server/src/extralit_server/api/handlers/v1/files.py @@ -103,7 +103,7 @@ async def list_objects( if se.code == "NoSuchBucket": raise HTTPException( status_code=404, - detail=f"Bucket '{bucket}' not found, please run `rg.Workspace.create('{bucket}')` to create the S3 bucket.", + detail=f"Bucket '{bucket}' not found, please run `ex.Workspace.create('{bucket}')` to create the S3 bucket.", ) from se else: raise HTTPException( diff --git a/extralit-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 b/extralit-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 index 04e9bb9c9..e3c1aa043 100644 --- a/extralit-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 +++ b/extralit-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 @@ -32,7 +32,7 @@ To load with Argilla, you'll just need to install Argilla as `pip install extral ```python import argilla as rg -ds = rg.Dataset.from_hub("{{ repo_id }}", settings="auto") +ds = ex.Dataset.from_hub("{{ repo_id }}", settings="auto") ``` This will load the settings and records from the dataset repository and push them to you Argilla server for exploration and annotation. @@ -53,7 +53,7 @@ This will only load the records of the dataset, but not the Argilla settings. This dataset repo contains: -* Dataset records in a format compatible with HuggingFace `datasets`. These records will be loaded automatically when using `rg.Dataset.from_hub` and can be loaded independently using the `datasets` library via `load_dataset`. +* Dataset records in a format compatible with HuggingFace `datasets`. These records will be loaded automatically when using `ex.Dataset.from_hub` and can be loaded independently using the `datasets` library via `load_dataset`. * The [annotation guidelines](#annotation-guidelines) that have been used for building and curating the dataset, if they've been defined in Argilla. * A dataset configuration folder conforming to the Argilla dataset format in `.argilla`. diff --git a/extralit-server/src/extralit_server/settings.py b/extralit-server/src/extralit_server/settings.py index 3c90a1dca..37cdbe800 100644 --- a/extralit-server/src/extralit_server/settings.py +++ b/extralit-server/src/extralit_server/settings.py @@ -198,7 +198,7 @@ def normalize_base_url(cls, base_url: str): def set_database_url(cls, database_url: str, info: ValidationInfo) -> str: if not database_url: home_path = info.data.get("home_path") - sqlite_file = os.path.join(home_path, "argilla.db") + sqlite_file = os.path.join(home_path, "extralit.db") return f"sqlite+aiosqlite:///{sqlite_file}?check_same_thread=False" if "sqlite" in database_url: diff --git a/extralit-server/tests/unit/commons/test_settings.py b/extralit-server/tests/unit/commons/test_settings.py index 814f19d4c..962418f5e 100644 --- a/extralit-server/tests/unit/commons/test_settings.py +++ b/extralit-server/tests/unit/commons/test_settings.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest @@ -38,7 +38,7 @@ def test_settings_default_database_url(monkeypatch): settings = Settings() - assert settings.database_url == f"sqlite+aiosqlite:///{settings.home_path}/argilla.db?check_same_thread=False" + assert settings.database_url == f"sqlite+aiosqlite:///{settings.home_path}/extralit.db?check_same_thread=False" @pytest.mark.parametrize( diff --git a/extralit-server/tests/unit/conftest.py b/extralit-server/tests/unit/conftest.py index 2fc19f623..26f42b745 100644 --- a/extralit-server/tests/unit/conftest.py +++ b/extralit-server/tests/unit/conftest.py @@ -48,7 +48,7 @@ def opensearch(elasticsearch_config: dict) -> Generator[OpenSearch, None, None]: client = OpenSearch(**elasticsearch_config) yield client - for index_info in client.cat.indices(index="ar.*,rg.*", format="json"): + for index_info in client.cat.indices(index="ar.*,ex.*", format="json"): client.indices.delete(index=index_info["index"]) diff --git a/extralit/README.md b/extralit/README.md index bbaeae948..35df3143c 100644 --- a/extralit/README.md +++ b/extralit/README.md @@ -75,7 +75,7 @@ Initialize the client: ```python import argilla as rg -client = rg.Argilla( +client = ex.Extralit( api_url="https://your-deployment-url", api_key="your-api-key" ) diff --git a/extralit/docs/admin_guide/custom_fields.md b/extralit/docs/admin_guide/custom_fields.md index eefdf0a66..d7a9ff7d3 100644 --- a/extralit/docs/admin_guide/custom_fields.md +++ b/extralit/docs/admin_guide/custom_fields.md @@ -9,7 +9,7 @@ This guide demonstrates how to create custom fields in Argilla using HTML, CSS, !!! info "Main Class" ```python - rg.CustomField( + ex.CustomField( name="custom", title="Custom", template="
{{record.fields.custom.key}}
", @@ -68,23 +68,23 @@ We can now pass these templates to the `CustomField` class. ```python import argilla as rg -custom_field = rg.CustomField( +custom_field = ex.CustomField( name="image", template=css_template + html_template, ) -settings = rg.Settings( +settings = ex.Settings( fields=[custom_field], - questions=[rg.TextQuestion(name="response")], + questions=[ex.TextQuestion(name="response")], ) -dataset = rg.Dataset( +dataset = ex.Dataset( name="custom_field_dataset", settings=settings, ).create() dataset.records.log([ - rg.Record( + ex.Record( fields={ "image": { "original": "https://argilla.io/brand-assets/argilla/argilla-logo-color-black.png", @@ -140,7 +140,7 @@ The result will be the following: {{/each}} """ - record = rg.Record( + record = ex.Record( fields={"text": "hello"}, metadata={ "name": "John Doe", @@ -157,7 +157,7 @@ The result will be the following: ```python template = "{{ json record.fields.user_profile }}" - record = rg.Record( + record = ex.Record( fields={ "user_profile": { "name": "John Doe", @@ -222,7 +222,7 @@ We can now pass these templates to the `CustomField` class, ensuring that the `a ```python import argilla as rg -custom_field = rg.CustomField( +custom_field = ex.CustomField( name="image", template=template + script, advanced_mode=True @@ -316,7 +316,7 @@ Besides the new `CustomField` code above, reusing the same approach as in the [U Next, we will create a record with two URLs to 3D objects from [the 3d-arena dataset](https://huggingface.co/datasets/dylanebert/3d-arena). ```python - record = rg.Record( + record = ex.Record( fields={ "object": { "option_a": "https://huggingface.co/datasets/dylanebert/3d-arena/resolve/main/outputs/Strawb3rry/a_bookshelf_with_ten_books_stacked_vertically.glb", diff --git a/extralit/docs/admin_guide/dataset.md b/extralit/docs/admin_guide/dataset.md index 91fbcef1a..a9752e4ab 100644 --- a/extralit/docs/admin_guide/dataset.md +++ b/extralit/docs/admin_guide/dataset.md @@ -15,10 +15,10 @@ A **dataset** is a collection of records that you can configure for labelers to The users with the `admin` role can manage (create, retrieve, update and delete) the datasets in the workspaces they have access to. !!! info "Main Classes" - === "`rg.Dataset`" + === "`ex.Dataset`" ```python - rg.Dataset( + ex.Dataset( name="name", workspace="workspace", settings=settings, @@ -27,22 +27,22 @@ A **dataset** is a collection of records that you can configure for labelers to ``` > Check the [Dataset - Python Reference](../reference/argilla/datasets/datasets.md) to see the attributes, arguments, and methods of the `Dataset` class in detail. - === "`rg.Settings`" + === "`ex.Settings`" ```python - rg.Settings( - fields=[rg.TextField(name="text")], + ex.Settings( + fields=[ex.TextField(name="text")], questions=[ - rg.LabelQuestion( + ex.LabelQuestion( name="label", labels=["label_1", "label_2", "label_3"] ) ], - metadata=[rg.TermsMetadataProperty(name="metadata")], - vectors=[rg.VectorField(name="vector", dimensions=10)], + metadata=[ex.TermsMetadataProperty(name="metadata")], + vectors=[ex.VectorField(name="vector", dimensions=10)], guidelines="guidelines", allow_extra_metadata=True, - distribution=rg.TaskDistribution(min_submitted=2), + distribution=ex.TaskDistribution(min_submitted=2), ) ``` @@ -58,24 +58,24 @@ To create a dataset, you can define it in the `Dataset` class and then call the ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") -settings = rg.Settings( +settings = ex.Settings( guidelines="These are some guidelines.", fields=[ - rg.TextField( + ex.TextField( name="text", ), ], questions=[ - rg.LabelQuestion( + ex.LabelQuestion( name="label", labels=["label_1", "label_2", "label_3"] ), ], ) -dataset = rg.Dataset( +dataset = ex.Dataset( name="my_dataset", workspace="my_workspace", settings=settings, @@ -95,19 +95,19 @@ To create multiple datasets with the same settings, define the settings once and ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") -settings = rg.Settings( +settings = ex.Settings( guidelines="These are some guidelines.", - fields=[rg.TextField(name="text", use_markdown=True)], + fields=[ex.TextField(name="text", use_markdown=True)], questions=[ - rg.LabelQuestion(name="label", labels=["label_1", "label_2", "label_3"]) + ex.LabelQuestion(name="label", labels=["label_1", "label_2", "label_3"]) ], - distribution=rg.TaskDistribution(min_submitted=3), + distribution=ex.TaskDistribution(min_submitted=3), ) -dataset1 = rg.Dataset(name="my_dataset_1", settings=settings) -dataset2 = rg.Dataset(name="my_dataset_2", settings=settings) +dataset1 = ex.Dataset(name="my_dataset_1", settings=settings) +dataset2 = ex.Dataset(name="my_dataset_2", settings=settings) # Create the datasets on the server dataset1.create() @@ -121,11 +121,11 @@ To create a new dataset from an existing dataset, get the settings from the exis ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") existing_dataset = client.datasets("my_dataset") -new_dataset = rg.Dataset(name="my_dataset_copy", settings=existing_dataset.settings) +new_dataset = ex.Dataset(name="my_dataset_copy", settings=existing_dataset.settings) new_dataset.create() ``` @@ -155,7 +155,7 @@ The fields in a dataset consist of one or more data items requiring annotation. === "Text" ```python - rg.TextField( + ex.TextField( name="text", title="Text", use_markdown=False, @@ -168,7 +168,7 @@ The fields in a dataset consist of one or more data items requiring annotation. === "Image" ```python - rg.ImageField( + ex.ImageField( name="image", title="Image", required=True, @@ -180,7 +180,7 @@ The fields in a dataset consist of one or more data items requiring annotation. === "Chat" ```python - rg.ChatField( + ex.ChatField( name="chat", title="Chat", use_markdown=True, @@ -196,7 +196,7 @@ The fields in a dataset consist of one or more data items requiring annotation. By default, `advanced_mode=False`, which will use a brackets syntax engine for the templates. This engine converts `{{record.fields.field.key}}` to the values of record's field's object. You can also use `advanced_mode=True`, which deactivates the above brackets syntax engine and allows you to add custom javascript to your template to render the field. ```python - rg.CustomField( + ex.CustomField( name="custom", title="Custom", template="
{{record.fields.custom.key}}
", @@ -219,7 +219,7 @@ To collect feedback for your dataset, you need to formulate questions that annot A `LabelQuestion` asks annotators to choose a unique label from a list of options. This type is useful for text classification tasks. In the UI, they will have a rounded shape. ```python - rg.LabelQuestion( + ex.LabelQuestion( name="label", labels={"YES": "Yes", "NO": "No"}, # or ["YES", "NO"] title="Is the response relevant for the given prompt?", @@ -234,7 +234,7 @@ To collect feedback for your dataset, you need to formulate questions that annot A `MultiLabelQuestion` asks annotators to choose all applicable labels from a list of options. This type is useful for multi-label text classification tasks. In the UI, they will have a squared shape. ```python - rg.MultiLabelQuestion( + ex.MultiLabelQuestion( name="multi_label", labels={ "hate": "Hate Speech", @@ -258,7 +258,7 @@ To collect feedback for your dataset, you need to formulate questions that annot A `RankingQuestion` asks annotators to order a list of options. It is useful to gather information on the preference or relevance of a set of options. ```python - rg.RankingQuestion( + ex.RankingQuestion( name="ranking", values={ "reply-1": "Reply 1", @@ -277,7 +277,7 @@ To collect feedback for your dataset, you need to formulate questions that annot A `RatingQuestion` asks annotators to select one option from a list of integer values. This type is useful for collecting numerical scores. ```python - rg.RatingQuestion( + ex.RatingQuestion( name="rating", values=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], title="How satisfied are you with the response?", @@ -292,7 +292,7 @@ To collect feedback for your dataset, you need to formulate questions that annot A `SpanQuestion` asks annotators to select a portion of the text of a specific field and apply a label to it. This type of question is useful for named entity recognition or information extraction tasks. ```python - rg.SpanQuestion( + ex.SpanQuestion( name="span", field="text", labels={ @@ -315,7 +315,7 @@ To collect feedback for your dataset, you need to formulate questions that annot A `TextQuestion` offers to annotators a free-text area where they can enter any text. This type is useful for collecting natural language data, such as corrections or explanations. ```python - rg.TextQuestion( + ex.TextQuestion( name="text", title="Please provide feedback on the response", description="Please provide feedback on the response", @@ -336,7 +336,7 @@ Metadata properties allow you to configure the use of metadata information for t A `TermsMetadataProperty` allows to add a list of strings as metadata options. ```python - rg.TermsMetadataProperty( + ex.TermsMetadataProperty( name="terms", options=["group-a", "group-b", "group-c"], title="Annotation groups", @@ -349,7 +349,7 @@ Metadata properties allow you to configure the use of metadata information for t An `IntegerMetadataProperty` allows to add integer values as metadata. ```python - rg.IntegerMetadataProperty( + ex.IntegerMetadataProperty( name="integer", title="length-input", min=42, @@ -362,7 +362,7 @@ Metadata properties allow you to configure the use of metadata information for t A `FloatMetadataProperty` allows to add float values as metadata. ```python - rg.FloatMetadataProperty( + ex.FloatMetadataProperty( name="float", title="Reading ease", min=-92.29914, @@ -381,7 +381,7 @@ To use the similarity search in the UI and the Python SDK, you will need to conf > Check the [Vector - Python Reference](../reference/argilla/settings/vectors.md) to see the `VectorField` class in detail. ```python -rg.VectorField( +ex.VectorField( name="my_vector", title="My Vector", dimensions=768 @@ -415,7 +415,7 @@ When working as a team, you may want to distribute the annotation task to ensure > Check the [Task Distribution - Python Reference](../reference/argilla/settings/task_distribution.md) to see the `TaskDistribution` class in detail. ```python -rg.TaskDistribution( +ex.TaskDistribution( min_submitted = 2 ) ``` @@ -430,7 +430,7 @@ You can list all the datasets available in a workspace using the `datasets` attr ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") workspace = client.workspaces("my_workspace") @@ -445,7 +445,7 @@ When you list datasets, dataset settings are not preloaded, since this can intro ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") for dataset in client.datasets: dataset.settings.get() # this will get the dataset settings from the server @@ -466,7 +466,7 @@ You can retrieve a dataset by calling the `datasets` method on the `Argilla` cla ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") # Retrieve the dataset from the first workspace retrieved_dataset = client.datasets(name="my_dataset") @@ -480,7 +480,7 @@ You can retrieve a dataset by calling the `datasets` method on the `Argilla` cla ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(id="") ``` @@ -492,7 +492,7 @@ You can check if a dataset exists. The `client.datasets` method will return `Non ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset") @@ -505,58 +505,58 @@ if dataset is not None: Once a dataset is published, there are limited things you can update. Here is a summary of the attributes you can change for each setting: === "Fields" - | Attributes | From SDK | From UI | - | ---------- | -------- | ------- | - |Name |❌ |❌ | - |Title |✅ |✅ | - |Required |❌ |❌ | - |Use markdown|✅ |✅ | - |Template |✅ |❌ | + | Attributes | From SDK | From UI | + | ------------ | -------- | ------- | + | Name | ❌ | ❌ | + | Title | ✅ | ✅ | + | Required | ❌ | ❌ | + | Use markdown | ✅ | ✅ | + | Template | ✅ | ❌ | === "Questions" - | Attributes | From SDK | From UI | - | --------------- | -------- | ------- | - |Name |❌ |❌ | - |Title |❌ |✅ | - |Description |❌ |✅ | - |Required |❌ |❌ | - |Labels |❌ |❌ | - |Values |❌ |❌ | - |Label order |❌ |✅ | - |Suggestions first|❌ |✅ | - |Visible labels |❌ |✅ | - |Field |❌ |❌ | - |Allow overlapping|❌ |❌ | - |Use markdown |❌ |✅ | + | Attributes | From SDK | From UI | + | ----------------- | -------- | ------- | + | Name | ❌ | ❌ | + | Title | ❌ | ✅ | + | Description | ❌ | ✅ | + | Required | ❌ | ❌ | + | Labels | ❌ | ❌ | + | Values | ❌ | ❌ | + | Label order | ❌ | ✅ | + | Suggestions first | ❌ | ✅ | + | Visible labels | ❌ | ✅ | + | Field | ❌ | ❌ | + | Allow overlapping | ❌ | ❌ | + | Use markdown | ❌ | ✅ | === "Metadata" - | Attributes | From SDK | From UI | - | -------------------- | -------- | ------- | - |Name |❌ |❌ | - |Title |✅ |✅ | - |Options |❌ |❌ | - |Minimum value |❌ |❌ | - |Maximum value |❌ |❌ | - |Visible for annotators|✅ |✅ | - |Allow extra metadata |✅ |✅ | + | Attributes | From SDK | From UI | + | ---------------------- | -------- | ------- | + | Name | ❌ | ❌ | + | Title | ✅ | ✅ | + | Options | ❌ | ❌ | + | Minimum value | ❌ | ❌ | + | Maximum value | ❌ | ❌ | + | Visible for annotators | ✅ | ✅ | + | Allow extra metadata | ✅ | ✅ | === "Vectors" | Attributes | From SDK | From UI | | ---------- | -------- | ------- | - |Name |❌ |❌ | - |Title |✅ |✅ | - |Dimensions |❌ |❌ | + | Name | ❌ | ❌ | + | Title | ✅ | ✅ | + | Dimensions | ❌ | ❌ | === "Guidelines" | From SDK | From UI | | -------- | ------- | - |✅ |✅ | + | ✅ | ✅ | === "Distribution" - | Attributes | From SDK | From UI | - | --------------- | -------- | ------- | - |Minimum submitted|✅ |✅ | + | Attributes | From SDK | From UI | + | ----------------- | -------- | ------- | + | Minimum submitted | ✅ | ✅ | To modify these attributes, you can simply set the new value of the attributes you wish to change and call the `update` method on the `Dataset` object. @@ -564,7 +564,7 @@ To modify these attributes, you can simply set the new value of the attributes y ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") dataset = client.datasets("my_dataset") @@ -581,13 +581,13 @@ You can also **add and delete metadata properties and vector fields** using the ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets("my_dataset") - dataset.settings.vectors.add(rg.VectorField(name="my_new_vector", dimensions=123)) + dataset.settings.vectors.add(ex.VectorField(name="my_new_vector", dimensions=123)) dataset.settings.metadata.add( - rg.TermsMetadataProperty( + ex.TermsMetadataProperty( name="my_new_metadata", options=["option_1", "option_2", "option_3"], ), @@ -600,7 +600,7 @@ You can also **add and delete metadata properties and vector fields** using the ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets("my_dataset") @@ -617,7 +617,7 @@ You can delete an existing dataset by calling the `delete` method on the `Datase ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") dataset_to_delete = client.datasets(name="my_dataset") diff --git a/extralit/docs/admin_guide/distribution.md b/extralit/docs/admin_guide/distribution.md index aff68df80..2be817ada 100644 --- a/extralit/docs/admin_guide/distribution.md +++ b/extralit/docs/admin_guide/distribution.md @@ -20,7 +20,7 @@ When a record has met the minimum number of submissions, the status of the recor !!! info "Main Class" ```python - rg.TaskDistribution( + ex.TaskDistribution( min_submitted = 2 ) ``` @@ -36,20 +36,20 @@ By default, Argilla will set the required minimum submitted responses to 1. This If you wish to set a different number, you can do so through the `distribution` setting in your dataset settings: ```python -settings = rg.Settings( +settings = ex.Settings( guidelines="These are some guidelines.", fields=[ - rg.TextField( + ex.TextField( name="text", ), ], questions=[ - rg.LabelQuestion( + ex.LabelQuestion( name="label", labels=["label_1", "label_2", "label_3"] ), ], - distribution=rg.TaskDistribution(min_submitted=3) + distribution=ex.TaskDistribution(min_submitted=3) ) ``` @@ -70,7 +70,7 @@ Admins and owners can change this value from the dataset settings page in the UI ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") dataset = client.datasets("my_dataset") @@ -88,7 +88,7 @@ total number of records in the dataset. ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") dataset = client.datasets("my_dataset") @@ -109,7 +109,7 @@ as well as the number of completed submissions per user. You can visit the [Anno ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") dataset = client.datasets("my_dataset") diff --git a/extralit/docs/admin_guide/import_export.md b/extralit/docs/admin_guide/import_export.md index 710ba69e0..c260850f3 100644 --- a/extralit/docs/admin_guide/import_export.md +++ b/extralit/docs/admin_guide/import_export.md @@ -8,69 +8,69 @@ This guide provides an overview of how to import and export your dataset or its In Argilla, you can import/export two main components of a dataset: -- The dataset's complete configuration is defined in `rg.Settings`. This is useful if you want to share your feedback task or restore it later in Argilla. +- The dataset's complete configuration is defined in `ex.Settings`. This is useful if you want to share your feedback task or restore it later in Argilla. - The records stored in the dataset, including `Metadata`, `Vectors`, `Suggestions`, and `Responses`. This is useful if you want to use your dataset's records outside of Argilla. Check the [Dataset - Python Reference](../reference/argilla/datasets/datasets.md) to see the attributes, arguments, and methods of the export `Dataset` class in detail. !!! info "Main Classes" - === "`rg.Dataset.to_hub`" + === "`ex.Dataset.to_hub`" ```python - rg.Dataset.to_hub( + ex.Dataset.to_hub( repo_id="/", with_records=True, generate_card=True ) ``` - === "`rg.Dataset.from_hub`" + === "`ex.Dataset.from_hub`" ```python - rg.Dataset.from_hub( + ex.Dataset.from_hub( repo_id="/", name="my_dataset", workspace="my_workspace", - client=rg.Client(), + client=ex.Client(), with_records=True ) ``` - === "`rg.Dataset.to_disk`" + === "`ex.Dataset.to_disk`" ```python - rg.Dataset.to_disk( + ex.Dataset.to_disk( path="", with_records=True ) ``` - === "`rg.Dataset.from_disk`" + === "`ex.Dataset.from_disk`" ```python - rg.Dataset.from_disk( + ex.Dataset.from_disk( path="", name="my_dataset", workspace="my_workspace", - client=rg.Client(), + client=ex.Client(), with_records=True ) ``` - === "`rg.Dataset.records.to_datasets()`" + === "`ex.Dataset.records.to_datasets()`" ```python - rg.Dataset.records.to_datasets() + ex.Dataset.records.to_datasets() ``` - === "`rg.Dataset.records.to_dict()`" + === "`ex.Dataset.records.to_dict()`" ```python - rg.Dataset.records.to_dict() + ex.Dataset.records.to_dict() ``` - === "`rg.Dataset.records.to_list()`" + === "`ex.Dataset.records.to_list()`" ```python - rg.Dataset.records.to_list() + ex.Dataset.records.to_list() ``` > Check the [Dataset - Python Reference](../reference/argilla/datasets/datasets.md) to see the attributes, arguments, and methods of the export `Dataset` class in detail. @@ -80,18 +80,18 @@ Check the [Dataset - Python Reference](../reference/argilla/datasets/datasets.md ## Importing and exporting datasets -First, we will go through exporting a complete dataset from Argilla. This includes the dataset's settings and records. All of these methods use the `rg.Dataset.from_*` and `rg.Dataset.to_*` methods. +First, we will go through exporting a complete dataset from Argilla. This includes the dataset's settings and records. All of these methods use the `ex.Dataset.from_*` and `ex.Dataset.to_*` methods. ### Hugging Face Hub #### Export to Hub -You can push a dataset from Argilla to the Hugging Face Hub. This is useful if you want to share your dataset with the community or version control it. You can push the dataset to the Hugging Face Hub using the `rg.Dataset.to_hub` method. +You can push a dataset from Argilla to the Hugging Face Hub. This is useful if you want to share your dataset with the community or version control it. You can push the dataset to the Hugging Face Hub using the `ex.Dataset.to_hub` method. ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset") @@ -107,15 +107,15 @@ dataset.to_hub(repo_id="/") #### Import from Hub -You can pull a dataset from the Hugging Face Hub to Argilla. This is useful if you want to restore a dataset and its configuration. You can pull the dataset from the Hugging Face Hub using the `rg.Dataset.from_hub` method. +You can pull a dataset from the Hugging Face Hub to Argilla. This is useful if you want to restore a dataset and its configuration. You can pull the dataset from the Hugging Face Hub using the `ex.Dataset.from_hub` method. ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") -rg.Dataset.from_hub(repo_id="/") +ex.Dataset.from_hub(repo_id="/") ``` By default, the `Dataset.from_hub` method will return the URL of the dataset configuration page. This page will let you preview the dataset's configuration and records before creating it in Argilla. @@ -126,12 +126,12 @@ You can infer the settings of the dataset automatically by configuring the `sett import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") -dataset = rg.Dataset.from_hub(repo_id="/", settings="auto") +dataset = ex.Dataset.from_hub(repo_id="/", settings="auto") ``` -The `rg.Dataset.from_hub` method loads the configuration and records from the dataset repo. If you only want to load records, you can pass a `datasets.Dataset` object to the `rg.Dataset.log` method. This enables you to configure your own dataset and reuse existing Hub datasets. See the [guide on records](record.md) for more information. +The `ex.Dataset.from_hub` method loads the configuration and records from the dataset repo. If you only want to load records, you can pass a `datasets.Dataset` object to the `ex.Dataset.log` method. This enables you to configure your own dataset and reuse existing Hub datasets. See the [guide on records](record.md) for more information. !!! note "With or without records" @@ -139,10 +139,10 @@ The `rg.Dataset.from_hub` method loads the configuration and records from the da The example above will pull the dataset's `Settings` and records from the hub. If you only want to pull the dataset's configuration, you can set the `with_records` parameter to `False`. This is useful if you're just interested in a specific dataset template or you want to make changes in the records. ```python - dataset = rg.Dataset.from_hub(repo_id="/", with_records=False, settings="auto") + dataset = ex.Dataset.from_hub(repo_id="/", with_records=False, settings="auto") ``` - You could then log the dataset's records using the `load_dataset` method of the `datasets` package and pass the dataset to the `rg.Dataset.log` method. + You could then log the dataset's records using the `load_dataset` method of the `datasets` package and pass the dataset to the `ex.Dataset.log` method. ```python hf_dataset = load_dataset("/") @@ -158,29 +158,29 @@ When importing datasets from the hub, Argilla will load settings from the hub in 1. If the dataset was pushed to hub by Argilla, then the settings will be loaded from the hub via the configuration file. 2. If the dataset was loaded by another source, then Argilla will define the settings based on the dataset's features in `datasets.Features`. For example, creating a `TextField` for a text feature or a `LabelQuestion` for a label class. -3. You can pass a custom `rg.Settings` object to the `rg.Dataset.from_hub` method via the `settings` parameter. This will override the settings loaded from the hub. +3. You can pass a custom `ex.Settings` object to the `ex.Dataset.from_hub` method via the `settings` parameter. This will override the settings loaded from the hub. ```python -settings = rg.Settings( - fields=[rg.TextField(name="text")], - questions=[rg.TextQuestion(name="answer")] +settings = ex.Settings( + fields=[ex.TextField(name="text")], + questions=[ex.TextQuestion(name="answer")] ) # (1) -dataset = rg.Dataset.from_hub(repo_id="/", settings=settings) +dataset = ex.Dataset.from_hub(repo_id="/", settings=settings) ``` -1. The settings that you pass to the `rg.Dataset.from_hub` method will override the settings loaded from the hub, and need to align with the dataset being loaded. +1. The settings that you pass to the `ex.Dataset.from_hub` method will override the settings loaded from the hub, and need to align with the dataset being loaded. ### Local Disk #### Export to Disk -You can save a dataset from Argilla to your local disk. This is useful if you want to back up your dataset. You can use the `rg.Dataset.to_disk` method. We recommend you to use an empty directory. +You can save a dataset from Argilla to your local disk. This is useful if you want to back up your dataset. You can use the `ex.Dataset.to_disk` method. We recommend you to use an empty directory. ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset") @@ -195,24 +195,24 @@ dataset.to_disk(path="", with_records=False) #### Import from Disk -You can load a dataset from your local disk to Argilla. This is useful if you want to restore a dataset's configuration. You can use the `rg.Dataset.from_disk` method. +You can load a dataset from your local disk to Argilla. This is useful if you want to restore a dataset's configuration. You can use the `ex.Dataset.from_disk` method. ```python import argilla as rg -dataset = rg.Dataset.from_disk(path="") +dataset = ex.Dataset.from_disk(path="") ``` !!! note "Directing the dataset to a name and workspace" You can also specify the name and workspace of the dataset when loading it from the disk. ```python - dataset = rg.Dataset.from_disk(path="", name="my_dataset", workspace="my_workspace") + dataset = ex.Dataset.from_disk(path="", name="my_dataset", workspace="my_workspace") ``` ## Importing and exporting records -The records alone can be exported from a dataset in Argilla. This is useful if you want to process the records in Python, export them to a different platform, or use them in model training. All of these methods use the `rg.Dataset.records` attribute. +The records alone can be exported from a dataset in Argilla. This is useful if you want to process the records in Python, export them to a different platform, or use them in model training. All of these methods use the `ex.Dataset.records` attribute. ### Export records @@ -228,7 +228,7 @@ The records can be exported as a dictionary, a list of dictionaries, or a `Datas ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset") # Export records as a dictionary @@ -251,7 +251,7 @@ The records can be exported as a dictionary, a list of dictionaries, or a `Datas ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") workspace = client.workspaces("my_workspace") @@ -274,7 +274,7 @@ The records can be exported as a dictionary, a list of dictionaries, or a `Datas ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset") # Export records as a dictionary @@ -283,4 +283,4 @@ The records can be exported as a dictionary, a list of dictionaries, or a `Datas ### Import records -To import records to a dataset, use the `rg.Datasets.records.log` method. There is a guide on how to do this in [How-to guides - Record](./record.md), or you can check the [Record - Python Reference](../reference/argilla/records/records.md). \ No newline at end of file +To import records to a dataset, use the `ex.Datasets.records.log` method. There is a guide on how to do this in [How-to guides - Record](./record.md), or you can check the [Record - Python Reference](../reference/argilla/records/records.md). \ No newline at end of file diff --git a/extralit/docs/admin_guide/migrate_from_legacy_datasets.md b/extralit/docs/admin_guide/migrate_from_legacy_datasets.md index 3c10942d7..d750898a6 100644 --- a/extralit/docs/admin_guide/migrate_from_legacy_datasets.md +++ b/extralit/docs/admin_guide/migrate_from_legacy_datasets.md @@ -97,14 +97,14 @@ First, instantiate the `Argilla` class to connect to the Argilla V2 server: ```python import argilla as rg -client = rg.Argilla() +client = ex.Extralit() ``` Next, recreate the users and workspaces on the Argilla V2 server: ```python for workspace in workspaces_v1: - rg.Workspace( + ex.Workspace( id=workspace.id, name=workspace.name, ).create() @@ -112,7 +112,7 @@ for workspace in workspaces_v1: ```python for user in users_v1: - user_v2 = rg.User( + user_v2 = ex.User( id=user.id, username=user.username, first_name=user.first_name, @@ -178,7 +178,7 @@ First, instantiate the `Argilla` class to connect to the Argilla V2 server: ```python import argilla as rg -client = rg.Argilla() +client = ex.Extralit() ``` Next, define the new dataset settings: @@ -186,18 +186,18 @@ Next, define the new dataset settings: === "For single-label classification" ```python - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), # (1) + ex.TextField(name="text"), # (1) ], questions=[ - rg.LabelQuestion(name="label", labels=settings_v1.label_schema), + ex.LabelQuestion(name="label", labels=settings_v1.label_schema), ], metadata=[ - rg.TermsMetadataProperty(name="split"), # (2) + ex.TermsMetadataProperty(name="split"), # (2) ], vectors=[ - rg.VectorField(name='mini-lm-sentence-transformers', dimensions=384), # (3) + ex.VectorField(name='mini-lm-sentence-transformers', dimensions=384), # (3) ], ) ``` @@ -209,18 +209,18 @@ Next, define the new dataset settings: === "For multi-label classification" ```python - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), # (1) + ex.TextField(name="text"), # (1) ], questions=[ - rg.MultiLabelQuestion(name="labels", labels=settings_v1.label_schema), + ex.MultiLabelQuestion(name="labels", labels=settings_v1.label_schema), ], metadata=[ - rg.TermsMetadataProperty(name="split"), # (2) + ex.TermsMetadataProperty(name="split"), # (2) ], vectors=[ - rg.VectorField(name='mini-lm-sentence-transformers', dimensions=384), # (3) + ex.VectorField(name='mini-lm-sentence-transformers', dimensions=384), # (3) ], ) ``` @@ -232,18 +232,18 @@ Next, define the new dataset settings: === "For token classification" ```python - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.SpanQuestion(name="spans", labels=settings_v1.label_schema), + ex.SpanQuestion(name="spans", labels=settings_v1.label_schema), ], metadata=[ - rg.TermsMetadataProperty(name="split"), # (1) + ex.TermsMetadataProperty(name="split"), # (1) ], vectors=[ - rg.VectorField(name='mini-lm-sentence-transformers', dimensions=384), # (2) + ex.VectorField(name='mini-lm-sentence-transformers', dimensions=384), # (2) ], ) ``` @@ -254,18 +254,18 @@ Next, define the new dataset settings: === "For text generation" ```python - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="text_generation"), + ex.TextQuestion(name="text_generation"), ], metadata=[ - rg.TermsMetadataProperty(name="split"), # (1) + ex.TermsMetadataProperty(name="split"), # (1) ], vectors=[ - rg.VectorField(name='mini-lm-sentence-transformers', dimensions=384), # (2) + ex.VectorField(name='mini-lm-sentence-transformers', dimensions=384), # (2) ], ) ``` @@ -276,7 +276,7 @@ Next, define the new dataset settings: Finally, create the new dataset on the Argilla V2 server: ```python -dataset = rg.Dataset(name=dataset_name, workspace=workspace, settings=settings) +dataset = ex.Dataset(name=dataset_name, workspace=workspace, settings=settings) dataset.create() ``` @@ -299,7 +299,7 @@ Here are a set of example functions to convert the records for single-label and === "For single-label classification" ```python - def map_to_record_for_single_label(data: dict, users_by_name: dict, current_user: rg.User) -> rg.Record: + def map_to_record_for_single_label(data: dict, users_by_name: dict, current_user: ex.User) -> ex.Record: """ This function maps a text classification record dictionary to the new Argilla record.""" suggestions = [] responses = [] @@ -308,7 +308,7 @@ Here are a set of example functions to convert the records for single-label and label, score = prediction[0].values() agent = data["prediction_agent"] suggestions.append( - rg.Suggestion( + ex.Suggestion( question_name="label", # (1) value=label, score=score, @@ -319,14 +319,14 @@ Here are a set of example functions to convert the records for single-label and if annotation := data.get("annotation"): user_id = users_by_name.get(data["annotation_agent"], current_user).id responses.append( - rg.Response( + ex.Response( question_name="label", # (2) value=annotation, user_id=user_id ) ) - return rg.Record( + return ex.Record( id=data["id"], fields=data["inputs"], # The inputs field should be a dictionary with the same keys as the `fields` in the settings @@ -345,7 +345,7 @@ Here are a set of example functions to convert the records for single-label and === "For multi-label classification" ```python - def map_to_record_for_multi_label(data: dict, users_by_name: dict, current_user: rg.User) -> rg.Record: + def map_to_record_for_multi_label(data: dict, users_by_name: dict, current_user: ex.User) -> ex.Record: """ This function maps a text classification record dictionary to the new Argilla record.""" suggestions = [] responses = [] @@ -354,7 +354,7 @@ Here are a set of example functions to convert the records for single-label and labels, scores = zip(*[(pred["label"], pred["score"]) for pred in prediction]) agent = data["prediction_agent"] suggestions.append( - rg.Suggestion( + ex.Suggestion( question_name="labels", # (1) value=labels, score=scores, @@ -365,14 +365,14 @@ Here are a set of example functions to convert the records for single-label and if annotation := data.get("annotation"): user_id = users_by_name.get(data["annotation_agent"], current_user).id responses.append( - rg.Response( + ex.Response( question_name="labels", # (2) value=annotation, user_id=user_id ) ) - return rg.Record( + return ex.Record( id=data["id"], fields=data["inputs"], # The inputs field should be a dictionary with the same keys as the `fields` in the settings @@ -391,7 +391,7 @@ Here are a set of example functions to convert the records for single-label and === "For token classification" ```python - def map_to_record_for_span(data: dict, users_by_name: dict, current_user: rg.User) -> rg.Record: + def map_to_record_for_span(data: dict, users_by_name: dict, current_user: ex.User) -> ex.Record: """ This function maps a token classification record dictionary to the new Argilla record.""" suggestions = [] responses = [] @@ -400,7 +400,7 @@ Here are a set of example functions to convert the records for single-label and scores = [span["score"] for span in prediction] agent = data["prediction_agent"] suggestions.append( - rg.Suggestion( + ex.Suggestion( question_name="spans", # (1) value=prediction, score=scores, @@ -411,14 +411,14 @@ Here are a set of example functions to convert the records for single-label and if annotation := data.get("annotation"): user_id = users_by_name.get(data["annotation_agent"], current_user).id responses.append( - rg.Response( + ex.Response( question_name="spans", # (2) value=annotation, user_id=user_id ) ) - return rg.Record( + return ex.Record( id=data["id"], fields={"text": data["text"]}, # The inputs field should be a dictionary with the same keys as the `fields` in the settings @@ -438,7 +438,7 @@ Here are a set of example functions to convert the records for single-label and === "For text generation" ```python - def map_to_record_for_text_generation(data: dict, users_by_name: dict, current_user: rg.User) -> rg.Record: + def map_to_record_for_text_generation(data: dict, users_by_name: dict, current_user: ex.User) -> ex.Record: """ This function maps a text2text record dictionary to the new Argilla record.""" suggestions = [] responses = [] @@ -447,7 +447,7 @@ Here are a set of example functions to convert the records for single-label and first = prediction[0] agent = data["prediction_agent"] suggestions.append( - rg.Suggestion( + ex.Suggestion( question_name="text_generation", # (1) value=first["text"], score=first["score"], @@ -459,14 +459,14 @@ Here are a set of example functions to convert the records for single-label and # From data[annotation] user_id = users_by_name.get(data["annotation_agent"], current_user).id responses.append( - rg.Response( + ex.Response( question_name="text_generation", # (2) value=annotation, user_id=user_id ) ) - return rg.Record( + return ex.Record( id=data["id"], fields={"text": data["text"]}, # The inputs field should be a dictionary with the same keys as the `fields` in the settings diff --git a/extralit/docs/admin_guide/query.md b/extralit/docs/admin_guide/query.md index 762d4f80a..c5f47b21a 100644 --- a/extralit/docs/admin_guide/query.md +++ b/extralit/docs/admin_guide/query.md @@ -10,20 +10,20 @@ You can search for records in your dataset by **querying** or **filtering**. The !!! info "Main Classes" - === "`rg.Query`" + === "`ex.Query`" ```python - rg.Query( + ex.Query( query="query", filter=filter ) ``` > Check the [Query - Python Reference](../reference/argilla/search.md) to see the attributes, arguments, and methods of the `Query` class in detail. - === "`rg.Filter`" + === "`ex.Filter`" ```python - rg.Filter( + ex.Filter( [ ("field", "==", "value"), ] @@ -31,10 +31,10 @@ You can search for records in your dataset by **querying** or **filtering**. The ``` > Check the [Filter - Python Reference](../reference/argilla/search.md) to see the attributes, arguments, and methods of the `Filter` class in detail. - === "`rg.Similar`" + === "`ex.Similar`" ```python - rg.Similar( + ex.Similar( name="vector", value=[0.1, 0.2, 0.3], ) @@ -50,11 +50,11 @@ To search for records with terms, you can use the `Dataset.records` attribute wi ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset", workspace="my_workspace") - query = rg.Query(query="my_term") + query = ex.Query(query="my_term") queried_records = dataset.records(query=query).to_list(flatten=True) ``` @@ -64,11 +64,11 @@ To search for records with terms, you can use the `Dataset.records` attribute wi ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset", workspace="my_workspace") - query = rg.Query(query="my_term1 my_term2") + query = ex.Query(query="my_term1 my_term2") queried_records = dataset.records(query=query).to_list(flatten=True) ``` @@ -77,15 +77,15 @@ To search for records with terms, you can use the `Dataset.records` attribute wi If you need more complex searches, you can use [Elasticsearch's simple query string syntax](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#simple-query-string-syntax). Here is a summary of the different available operators: -| operator | description | example | -| ------------ | --------------------------- | --------------------------------------------------------------------- | -|`+` or `space`| **AND**: search both terms | `argilla + distilabel` or `argilla distilabel`
return records that include the terms "argilla" and "distilabel"| -|`|` | **OR**: search either term | `argilla | distilabel`
returns records that include the term "argilla" or "distilabel"| -|`-` | **Negation**: exclude a term| `argilla -distilabel`
returns records that contain the term "argilla" and don't have the term "distilabel"| -|`*` | **Prefix**: search a prefix | `arg*`
returns records with any words starting with "arg-"| -|`"` | **Phrase**: search a phrase | `"argilla and distilabel"`
returns records that contain the phrase "argilla and distilabel"| -|`(` and `)` | **Precedence**: group terms | `(argilla | distilabel) rules`
returns records that contain either "argilla" or "distilabel" and "rules"| -|`~N` | **Edit distance**: search a term or phrase with an edit distance| `argilla~1`
returns records that contain the term "argilla" with an edit distance of 1, e.g. "argila"| +| operator | description | example | +| -------------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | +| `+` or `space` | **AND**: search both terms | `argilla + distilabel` or `argilla distilabel`
return records that include the terms "argilla" and "distilabel" | +| ` | ` | **OR**: search either term | `argilla | distilabel`
returns records that include the term "argilla" or "distilabel" | +| `-` | **Negation**: exclude a term | `argilla -distilabel`
returns records that contain the term "argilla" and don't have the term "distilabel" | +| `*` | **Prefix**: search a prefix | `arg*`
returns records with any words starting with "arg-" | +| `"` | **Phrase**: search a phrase | `"argilla and distilabel"`
returns records that contain the phrase "argilla and distilabel" | +| `(` and `)` | **Precedence**: group terms | `(argilla | distilabel) rules`
returns records that contain either "argilla" or "distilabel" and "rules" | +| `~N` | **Edit distance**: search a term or phrase with an edit distance | `argilla~1`
returns records that contain the term "argilla" with an edit distance of 1, e.g. "argila" | !!! tip To use one of these characters literally, escape it with a preceding backslash `\`, e.g. `"1 \+ 2"` would match records where the phrase "1 + 2" is found. @@ -99,20 +99,20 @@ You can use the `Filter` class to define the conditions and pass them to the `Da | `==` | The `field` value is equal to the `value` | | `>=` | The `field` value is greater than or equal to the `value` | | `<=` | The `field` value is less than or equal to the `value` | -| `in` | The `field` value is included in a list of values | +| `in` | The `field` value is included in a list of values | === "Single condition" ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset", workspace="my_workspace") - filter_label = rg.Filter(("label", "==", "positive")) + filter_label = ex.Filter(("label", "==", "positive")) - filtered_records = dataset.records(query=rg.Query(filter=filter_label)).to_list( + filtered_records = dataset.records(query=ex.Query(filter=filter_label)).to_list( flatten=True ) ``` @@ -122,11 +122,11 @@ You can use the `Filter` class to define the conditions and pass them to the `Da ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset", workspace="my_workspace") - filters = rg.Filter( + filters = ex.Filter( [ ("label.suggestion", "==", "positive"), ("metadata.count", ">=", 10), @@ -136,7 +136,7 @@ You can use the `Filter` class to define the conditions and pass them to the `Da ) filtered_records = dataset.records( - query=rg.Query(filter=filters), with_suggestions=True + query=ex.Query(filter=filters), with_suggestions=True ).to_list(flatten=True) ``` @@ -146,7 +146,7 @@ You can filter records based on the following fields: | field | description | example | -|-------------------------|--------------------------------------------------------------------------------|----------------------------------------------------------------| +| ----------------------- | ------------------------------------------------------------------------------ | -------------------------------------------------------------- | | `id` | The record id | `("id", "in", ["1","2","3"])` | | `_server_id` | The internal record id. This value must be a valida UUID | `("_server_id", "==", "ba69a996-85c2-4af0-a473-23138929641b")` | | `inserted_at` | The date and time the record was inserted. You can pass a datetime or a string | `("inserted_at" ">=", "2024-10-10")` | @@ -167,12 +167,12 @@ You can filter records based on record or response status. Record status can be ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset", workspace="my_workspace") -status_filter = rg.Query( - filter=rg.Filter( +status_filter = ex.Query( + filter=ex.Filter( [ ("status", "==", "completed"), ("response.status", "==", "discarded") @@ -191,13 +191,13 @@ You can search for records that are similar to a given vector. You can use the ` import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset", workspace="my_workspace") -similar_filter = rg.Query( - similar=rg.Similar( +similar_filter = ex.Query( + similar=ex.Similar( name="vector", value=[0.1, 0.2, 0.3], ) ) @@ -216,13 +216,13 @@ As mentioned, you can use a query with a search term and a filter or various fil ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset", workspace="my_workspace") -query_filter = rg.Query( +query_filter = ex.Query( query="my_term", - filter=rg.Filter( + filter=ex.Filter( [ ("label.suggestion", "==", "positive"), ("metadata.count", ">=", 10), diff --git a/extralit/docs/admin_guide/record.md b/extralit/docs/admin_guide/record.md index f984b002d..8a604607d 100644 --- a/extralit/docs/admin_guide/record.md +++ b/extralit/docs/admin_guide/record.md @@ -13,7 +13,7 @@ A **record** in Argilla is a data item that requires annotation, consisting of o !!! info "Main Class" ```python - rg.Record( + ex.Record( external_id="1234", fields={ "question": "Do you need oxygen to breathe?", @@ -26,10 +26,10 @@ A **record** in Argilla is a data item that requires annotation, consisting of o "my_vector": [0.1, 0.2, 0.3], }, suggestions=[ - rg.Suggestion("my_label", "positive", score=0.9, agent="model_name") + ex.Suggestion("my_label", "positive", score=0.9, agent="model_name") ], responses=[ - rg.Response("label", "positive", user_id=user_id) + ex.Response("label", "positive", user_id=user_id) ], ) ``` @@ -52,18 +52,18 @@ You can add records to a dataset in two different ways: either by using a dictio ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset") records = [ - rg.Record( + ex.Record( fields={ "question": "Do you need oxygen to breathe?", "answer": "Yes" }, ), - rg.Record( + ex.Record( fields={ "question": "What is the boiling point of water?", "answer": "100 degrees Celsius" @@ -87,7 +87,7 @@ You can add records to a dataset in two different ways: either by using a dictio ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset") @@ -131,7 +131,7 @@ You can add records to a dataset in two different ways: either by using a dictio import argilla as rg from datasets import load_dataset - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset") # (1) hf_dataset = load_dataset("imdb", split="train[:100]") # (2) @@ -161,7 +161,7 @@ Fields are the main pieces of information of the record. These are shown at firs Text fields expect input in the form of a `string`. ```python - record = rg.Record( + record = ex.Record( fields={"text": "Hello World, how are you?"} ) ``` @@ -173,13 +173,13 @@ Fields are the main pieces of information of the record. These are shown at firs ```python records = [ - rg.Record( + ex.Record( fields={"image": "https://example.com/image.jpg"} ), - rg.Record( + ex.Record( fields={"image": "path/to/image.jpg"} ), - rg.Record( + ex.Record( fields={"image": Image.open("path/to/image.jpg")} ), ] @@ -189,7 +189,7 @@ Fields are the main pieces of information of the record. These are shown at firs Chat fields expect a list of dictionaries with the keys `role` and `content`, where the `role` identifies the interlocutor type (e.g., user, assistant, model, etc.), whereas the `content` contains the text of the message. ```python - record = rg.Record( + record = ex.Record( fields={ "chat": [ {"role": "user", "content": "What is Argilla?"}, @@ -203,7 +203,7 @@ Fields are the main pieces of information of the record. These are shown at firs Custom fields expect a dictionary with the keys and values you define in the dataset settings. You need to ensure these are aligned with `CustomField.template` in order for them to be rendered in the UI. ```python - record = rg.Record( + record = ex.Record( fields={"custom": {"key": "value"}} ) ``` @@ -224,14 +224,14 @@ Record metadata can include any information about the record that is not part of ```python # Add records to the dataset with the metadata 'category' records = [ - rg.Record( + ex.Record( fields={ "question": "Do you need oxygen to breathe?", "answer": "Yes" }, metadata={"my_metadata": "option_1"}, ), - rg.Record( + ex.Record( fields={ "question": "What is the boiling point of water?", "answer": "100 degrees Celsius" @@ -279,7 +279,7 @@ You can associate vectors, like text embeddings, to your records. They can be us ```python # Add records to the dataset with the vector 'my_vector' and dimension=3 records = [ - rg.Record( + ex.Record( fields={ "question": "Do you need oxygen to breathe?", "answer": "Yes" @@ -288,7 +288,7 @@ You can associate vectors, like text embeddings, to your records. They can be us "my_vector": [0.1, 0.2, 0.3] }, ), - rg.Record( + ex.Record( fields={ "question": "What is the boiling point of water?", "answer": "100 degrees Celsius" @@ -337,13 +337,13 @@ Suggestions refer to suggested responses (e.g. model predictions) that you can a ```python # Add records to the dataset with the label 'my_label' records = [ - rg.Record( + ex.Record( fields={ "question": "Do you need oxygen to breathe?", "answer": "Yes" }, suggestions=[ - rg.Suggestion( + ex.Suggestion( "my_label", "positive", score=0.9, @@ -351,13 +351,13 @@ Suggestions refer to suggested responses (e.g. model predictions) that you can a ) ], ), - rg.Record( + ex.Record( fields={ "question": "What is the boiling point of water?", "answer": "100 degrees Celsius" }, suggestions=[ - rg.Suggestion( + ex.Suggestion( "my_label", "negative", score=0.9, @@ -418,22 +418,22 @@ If your dataset includes some annotations, you can add those to the records as y ```python # Add records to the dataset with the label 'my_label' records = [ - rg.Record( + ex.Record( fields={ "question": "Do you need oxygen to breathe?", "answer": "Yes" }, responses=[ - rg.Response("my_label", "positive", user_id=user.id) + ex.Response("my_label", "positive", user_id=user.id) ] ), - rg.Record( + ex.Record( fields={ "question": "What is the boiling point of water?", "answer": "100 degrees Celsius" }, responses=[ - rg.Response("my_label", "negative", user_id=user.id) + ex.Response("my_label", "negative", user_id=user.id) ] ), ] @@ -555,7 +555,7 @@ dataset.records.log(records=updated_data) # We can also add new suggestions with the `add` method: if not record.suggestions["label"]: record.suggestions.add( - rg.Suggestion("value", "label", score=0.9, agent="model_name") + ex.Suggestion("value", "label", score=0.9, agent="model_name") ) updated_records.append(record) @@ -581,7 +581,7 @@ dataset.records.log(records=updated_data) response.user_id = "existing_user_id" else: - record.responses.add(rg.Response("label", "YES", user_id=user.id)) + record.responses.add(ex.Response("label", "YES", user_id=user.id)) updated_records.append(record) @@ -603,8 +603,8 @@ dataset.records.delete(records=records_to_delete) > For more information about the query syntax, check this [how-to guide](query.md). ```python - status_filter = rg.Query( - filter = rg.Filter(("response.status", "==", "pending")) + status_filter = ex.Query( + filter = ex.Filter(("response.status", "==", "pending")) ) records_to_delete = list(dataset.records(status_filter)) diff --git a/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md b/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md index 338d22bb8..b200b2615 100644 --- a/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md +++ b/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md @@ -29,7 +29,7 @@ The `TextField` and `TextQuestion` provide the option to enable Markdown and the ```python chat_to_html([{"role": "user", "content": "hello"}]) ``` - > Check the [Markdown - Python Reference](../reference/argilla/markdown.md) to see the arguments of the `rg.markdown` methods in detail. + > Check the [Markdown - Python Reference](../reference/argilla/markdown.md) to see the arguments of the `ex.markdown` methods in detail. !!! tip You can get pretty creative with HTML. For example, think about visualizing graphs and tables. You can use some interesting Python packages methods like `pandas.DataFrame.to_html` and `plotly.io.to_html`. @@ -58,7 +58,7 @@ A DataURL is a scheme that allows data to be encoded into a base64-encoded strin height="300px" ) - rg.Record( + ex.Record( fields={"markdown_enabled_field": html} ) ``` @@ -76,7 +76,7 @@ A DataURL is a scheme that allows data to be encoded into a base64-encoded strin loop=True ) - rg.Record( + ex.Record( fields={"markdown_enabled_field": html} ) ``` @@ -94,7 +94,7 @@ A DataURL is a scheme that allows data to be encoded into a base64-encoded strin loop=True ) - rg.Record( + ex.Record( fields={"markdown_enabled_field": html} ) ``` @@ -110,7 +110,7 @@ A DataURL is a scheme that allows data to be encoded into a base64-encoded strin height="300px" ) - rg.Record( + ex.Record( fields={"markdown_enabled_field": html} ) ``` @@ -127,7 +127,7 @@ Instead of uploading local files through DataURLs, we can also visualize URLs di ```python html = "" - rg.Record( + ex.Record( fields={"markdown_enabled_field": html} ) ``` @@ -141,7 +141,7 @@ Instead of uploading local files through DataURLs, we can also visualize URLs di """" - rg.Record( + ex.Record( fields={"markdown_enabled_field": html} ) ``` @@ -155,7 +155,7 @@ Instead of uploading local files through DataURLs, we can also visualize URLs di """" - rg.Record( + ex.Record( fields={"markdown_enabled_field": html} ) ``` @@ -171,7 +171,7 @@ Instead of uploading local files through DataURLs, we can also visualize URLs di """" - rg.Record( + ex.Record( fields={"markdown_enabled_field": html} ) ``` @@ -194,7 +194,7 @@ messages = [ html = chat_to_html(messages) -rg.Record( +ex.Record( fields={"markdown_enabled_field": html} ) ``` diff --git a/extralit/docs/admin_guide/user.md b/extralit/docs/admin_guide/user.md index eb0f55c1c..a8f464e84 100644 --- a/extralit/docs/admin_guide/user.md +++ b/extralit/docs/admin_guide/user.md @@ -60,7 +60,7 @@ For the new users, the username and password are set during the creation process !!! info "Main Class" ```python - rg.User( + ex.User( username="username", first_name="first_name", last_name="last_name", @@ -78,7 +78,7 @@ To ensure you're using the correct credentials for managing users, you can get t ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") current_user = client.me ``` @@ -90,9 +90,9 @@ To create a new user in Argilla, you can define it in the `User` class and then ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") -user_to_create = rg.User( +user_to_create = ex.User( username="my_username", password="12345678", ) @@ -109,7 +109,7 @@ You can list all the existing users in Argilla by accessing the `users` attribut ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") users = client.users @@ -128,7 +128,7 @@ You can retrieve an existing user from Argilla by accessing the `users` attribut ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") retrieved_user = client.users("my_username") ``` @@ -138,7 +138,7 @@ You can retrieve an existing user from Argilla by accessing the `users` attribut ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") retrieved_user = client.users(id="") ``` @@ -150,7 +150,7 @@ You can check if a user exists. The `client.users` method will return `None` if ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") user = client.users("my_username") @@ -167,7 +167,7 @@ You can list all the users in a workspace by accessing the `users` attribute on ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") workspace = client.workspaces('my_workspace') @@ -184,7 +184,7 @@ You can add an existing user to a workspace in Argilla by calling the `add_to_wo ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") user = client.users('my_username') workspace = client.workspaces('my_workspace') @@ -201,7 +201,7 @@ You can remove an existing user from a workspace in Argilla by calling the `remo ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") user = client.users('my_username') workspace = client.workspaces('my_workspace') @@ -216,7 +216,7 @@ You can update an existing user in Argilla by calling the `update` method on the ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") user_to_update = client.users('my_username') @@ -235,7 +235,7 @@ You can delete an existing user from Argilla by calling the `delete` method on t ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") user_to_delete = client.users('my_username') diff --git a/extralit/docs/admin_guide/webhooks.md b/extralit/docs/admin_guide/webhooks.md index 015f26311..5164e3ed0 100644 --- a/extralit/docs/admin_guide/webhooks.md +++ b/extralit/docs/admin_guide/webhooks.md @@ -19,7 +19,7 @@ from datetime import datetime from extralit import webhook_listener @webhook_listener(events="dataset.created") -async def my_webhook_handler(dataset: rg.Dataset, type: str, timestamp: datetime): +async def my_webhook_handler(dataset: ex.Dataset, type: str, timestamp: datetime): print(dataset, type, timestamp) ``` @@ -28,7 +28,7 @@ In the example above, we have created a webhook that listens to the `dataset.cre The python SDK will automatically create a webhook in Argilla and listen to the specified event. When the event is triggered, the `my_webhook_handler` function will be called with the event data. The SDK will also parse the incoming webhook event into -a proper resource object (`rg.Dataset`, `rg.Record`, and `rg.Response`). The SDK will also take care of request authentication and error handling. +a proper resource object (`ex.Dataset`, `ex.Record`, and `ex.Response`). The SDK will also take care of request authentication and error handling. ## Running the webhook server @@ -71,9 +71,9 @@ To create a new webhook in Argilla, you can define it in the `Webhook` class and ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") -webhook = rg.Webhook( +webhook = ex.Webhook( url="http://127.0.0.1:8000", events=["dataset.created"], description="My webhook" @@ -90,7 +90,7 @@ You can list all the existing webhooks in Argilla by accessing the `webhooks` at ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") for webhook in client.webhooks: print(webhook) @@ -104,9 +104,9 @@ You can update a webhook using the `update` method. ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") -webhook = rg.Webhook( +webhook = ex.Webhook( url="http://127.0.0.1:8000", events=["dataset.created"], description="My webhook" @@ -125,7 +125,7 @@ You can delete a webhook using the `delete` method. ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") for webhook in client.webhooks: webhook.delete() diff --git a/extralit/docs/admin_guide/workspace.md b/extralit/docs/admin_guide/workspace.md index 6fa733508..9a0daef40 100644 --- a/extralit/docs/admin_guide/workspace.md +++ b/extralit/docs/admin_guide/workspace.md @@ -24,7 +24,7 @@ Depending on [your Argilla deployment](../getting_started/quickstart.md), the in !!! info "Main Class" ```python - rg.Workspace( + ex.Workspace( name = "name", client=client ) @@ -40,9 +40,9 @@ To create a new workspace in Argilla, you can define it in the `Workspace` class ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") -workspace_to_create = rg.Workspace(name="my_workspace") +workspace_to_create = ex.Workspace(name="my_workspace") created_workspace = workspace_to_create.create() ``` @@ -56,7 +56,7 @@ You can list all the existing workspaces in Argilla by calling the `workspaces` ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") workspaces = client.workspaces @@ -75,7 +75,7 @@ You can retrieve a workspace by accessing the `workspaces` method on the `Argill ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") retrieved_workspace = client.workspaces("my_workspace") ``` @@ -85,7 +85,7 @@ You can retrieve a workspace by accessing the `workspaces` method on the `Argill ```python import argilla as rg - client = rg.Argilla(api_url="", api_key="") + client = ex.Extralit(api_url="", api_key="") retrieved_workspace = client.workspaces(id="") ``` @@ -97,7 +97,7 @@ You can check if a workspace exists. The `client.workspaces` method will return ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") workspace = client.workspaces("my_workspace") @@ -114,7 +114,7 @@ You can list all the users in a workspace by accessing the `users` attribute on ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") workspace = client.workspaces('my_workspace') @@ -131,7 +131,7 @@ You can also add a user to a workspace by calling the `add_user` method on the ` ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") workspace = client.workspaces("my_workspace") @@ -147,7 +147,7 @@ You can also remove a user from a workspace by calling the `remove_user` method ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") workspace = client.workspaces("my_workspace") @@ -163,7 +163,7 @@ To delete a workspace, **no dataset can be associated with it**. If the workspac ```python import argilla as rg -client = rg.Argilla(api_url="", api_key="") +client = ex.Extralit(api_url="", api_key="") workspace_to_delete = client.workspaces("my_workspace") diff --git a/extralit/docs/community/adding_language.md b/extralit/docs/community/adding_language.md index 630e7b07c..7c634dd82 100644 --- a/extralit/docs/community/adding_language.md +++ b/extralit/docs/community/adding_language.md @@ -43,10 +43,10 @@ export default { ```python import argilla as rg -client_local = rg.Argilla(api_url="http://localhost:6900/", api_key="extralit.apikey") +client_local = ex.Extralit(api_url="http://localhost:6900/", api_key="extralit.apikey") sample_questions = [ - rg.SpanQuestion( + ex.SpanQuestion( name="question1", field="text", labels={ @@ -60,14 +60,14 @@ sample_questions = [ required=True, allow_overlapping=False, ), - rg.LabelQuestion( + ex.LabelQuestion( name="question2", labels={"YES": "Yes", "NO": "No"}, # or ["YES", "NO"] title="Is the answer relevant to the given prompt?", description="Choose the option that applies.", required=True, ), - rg.MultiLabelQuestion( + ex.MultiLabelQuestion( name="question3", labels={ "hate": "Hate speech", @@ -84,7 +84,7 @@ sample_questions = [ visible_labels=3, labels_order="natural" ), - rg.RankingQuestion( + ex.RankingQuestion( name="question4", values={ "reply-1": "Answer 1", @@ -95,14 +95,14 @@ sample_questions = [ description="1 = best, 3 = worst. Equal ratings are allowed.", required=True, ), - rg.RatingQuestion( + ex.RatingQuestion( name="question5", values=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], title="How satisfied are you with the answer?", description="1 = very dissatisfied, 10 = very satisfied", required=True, ), - rg.TextQuestion( + ex.TextQuestion( name="question6", title="Please provide your feedback on the answer", description="Please provide your feedback on the answer", @@ -112,21 +112,21 @@ sample_questions = [ ] sample_fields = [ - rg.ChatField( + ex.ChatField( name="chat", title="Previous conversation with the customer", use_markdown=True, required=True, description="Dialog between AI & customer up to the last question", ), - rg.TextField( + ex.TextField( name="text", title="Customer's question", use_markdown=False, required=True, description="This is a question from the customer", ), - rg.ImageField( + ex.ImageField( name="image", title="Image related to the question", required=True, @@ -135,11 +135,11 @@ sample_fields = [ ] # Create a new dataset with the same settings as the original -settings = rg.Settings( +settings = ex.Settings( fields=sample_fields, questions=sample_questions, ) -new_dataset = rg.Dataset( +new_dataset = ex.Dataset( name="demo_dataset", workspace="default", settings=settings, @@ -148,7 +148,7 @@ new_dataset = rg.Dataset( new_dataset.create() def fix_record(): - return rg.Record( + return ex.Record( fields={ "chat": [ {"role": "user", "content": "What is Argilla?"}, diff --git a/extralit/docs/getting_started/development_setup.md b/extralit/docs/getting_started/development_setup.md index f0c1b7c18..06f8793b3 100644 --- a/extralit/docs/getting_started/development_setup.md +++ b/extralit/docs/getting_started/development_setup.md @@ -180,7 +180,7 @@ Create a `.env.dev` file in the `extralit-server` directory with the following c ``` ALEMBIC_CONFIG=src/extralit_server/alembic.ini ARGILLA_AUTH_SECRET_KEY=8VO7na5N/jQx+yP/N+HlE8q51vPdrxqlh6OzoebIyko= -ARGILLA_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/argilla-dev.db?check_same_thread=False +ARGILLA_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/extralit-dev.db?check_same_thread=False # Search engine configuration ARGILLA_SEARCH_ENGINE=elasticsearch ARGILLA_ELASTICSEARCH=http://localhost:9200 @@ -377,7 +377,7 @@ If database migrations fail: ```bash # Reset the database -rm -rf ~/.extralit/argilla-dev.db +rm -rf ~/.extralit/extralit-dev.db pdm run migrate ``` diff --git a/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md b/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md index 7042d0304..bb9df487b 100644 --- a/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md +++ b/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md @@ -8,7 +8,7 @@ title: Hugging Face Spaces Settings This section details how to configure and deploy Extralit on Hugging Face Spaces. It covers: - How to configure persistent storage and database services -- How to configure Extralit +- How to configure Extralit - How to deploy Extralit under a Hugging Face Organization - How to configure and enable HF OAuth access - How to use Private Spaces @@ -106,7 +106,7 @@ import argilla as rg HF_TOKEN = "..." -client = rg.Argilla( +client = ex.Extralit( api_url="", api_key="", headers={"Authorization": f"Bearer {HF_TOKEN}"} diff --git a/extralit/docs/getting_started/installation.md b/extralit/docs/getting_started/installation.md index 814aa0cf2..d26e5d55d 100644 --- a/extralit/docs/getting_started/installation.md +++ b/extralit/docs/getting_started/installation.md @@ -34,7 +34,7 @@ Get your `` in `My Settings` in the Argilla UI (by default owner.apikey ```python import argilla as rg -client = rg.init( +client = ex.init( api_url="", api_key="", # headers={"Authorization": f"Bearer {HF_TOKEN}"} diff --git a/extralit/docs/getting_started/quickstart.md b/extralit/docs/getting_started/quickstart.md index 0cc7411b5..340460b13 100644 --- a/extralit/docs/getting_started/quickstart.md +++ b/extralit/docs/getting_started/quickstart.md @@ -52,7 +52,7 @@ Extralit is a free, open-source, self-hosted tool. This means you need to deploy ```python import argilla as rg - authenticated_client = rg.Argilla.deploy_on_spaces(api_key="") + authenticated_client = ex.Extralit.deploy_on_spaces(api_key="") ``` !!! warning "Persistent storage `SMALL`" @@ -143,7 +143,7 @@ To start interacting with your Argilla server, you need to instantiate a client ```python import argilla as rg -client = rg.client( +client = ex.client( api_url="", api_key="" ) diff --git a/extralit/docs/reference/argilla-server/configuration.md b/extralit/docs/reference/argilla-server/configuration.md index b710b0afc..edacd5356 100644 --- a/extralit/docs/reference/argilla-server/configuration.md +++ b/extralit/docs/reference/argilla-server/configuration.md @@ -61,7 +61,7 @@ If `USERNAME` and `PASSWORD` are provided, the owner user will be created with t #### Database -- `ARGILLA_DATABASE_URL`: A URL string that contains the necessary information to connect to a database. Argilla uses SQLite by default, PostgreSQL is also officially supported (Default: `sqlite:///$ARGILLA_HOME_PATH/argilla.db?check_same_thread=False`). +- `ARGILLA_DATABASE_URL`: A URL string that contains the necessary information to connect to a database. Argilla uses SQLite by default, PostgreSQL is also officially supported (Default: `sqlite:///$ARGILLA_HOME_PATH/extralit.db?check_same_thread=False`). ##### SQLite diff --git a/extralit/docs/reference/argilla/SUMMARY.md b/extralit/docs/reference/argilla/SUMMARY.md index 49d0ce459..04b2f308b 100644 --- a/extralit/docs/reference/argilla/SUMMARY.md +++ b/extralit/docs/reference/argilla/SUMMARY.md @@ -1,19 +1,19 @@ -* [rg.Argilla](client.md) -* [rg.Workspace](workspaces.md) -* [rg.User](users.md) -* [rg.Dataset](datasets/datasets.md) - * [rg.Dataset.records](datasets/dataset_records.md) -* [rg.Settings](settings/settings.md) +* [ex.Extralit](client.md) +* [ex.Workspace](workspaces.md) +* [ex.User](users.md) +* [ex.Dataset](datasets/datasets.md) + * [ex.Dataset.records](datasets/dataset_records.md) +* [ex.Settings](settings/settings.md) * [Fields](settings/fields.md) * [Questions](settings/questions.md) * [Metadata](settings/metadata_property.md) * [Vectors](settings/vectors.md) * [Distribution](settings/task_distribution.md) -* [rg.Record](records/records.md) - * [rg.Response](records/responses.md) - * [rg.Suggestion](records/suggestions.md) - * [rg.Vector](records/vectors.md) - * [rg.Metadata](records/metadata.md) -* [rg.Query](search.md) +* [ex.Record](records/records.md) + * [ex.Response](records/responses.md) + * [ex.Suggestion](records/suggestions.md) + * [ex.Vector](records/vectors.md) + * [ex.Metadata](records/metadata.md) +* [ex.Query](search.md) * [Webhooks](webhooks.md) -* [rg.markdown](markdown.md) +* [ex.markdown](markdown.md) diff --git a/extralit/docs/reference/argilla/client.md b/extralit/docs/reference/argilla/client.md index 501a11305..2fb2d2560 100644 --- a/extralit/docs/reference/argilla/client.md +++ b/extralit/docs/reference/argilla/client.md @@ -1,7 +1,7 @@ --- hide: footer --- -# `rg.Argilla` +# `ex.Extralit` To interact with the Argilla server from Python you can use the `Argilla` class. The `Argilla` client is used to create, get, update, and delete all Argilla resources, such as workspaces, users, datasets, and records. @@ -14,7 +14,7 @@ To deploy Argilla on Hugging Face Spaces, use the `deploy_on_spaces` method. ```python import argilla as rg -client = rg.Argilla.deploy_on_spaces(api_key="12345678") +client = ex.Extralit.deploy_on_spaces(api_key="12345678") ``` ### Connecting to an Argilla server @@ -24,7 +24,7 @@ To connect to an Argilla server, instantiate the `Argilla` class and pass the `a ```python import argilla as rg -client = rg.Argilla( +client = ex.Extralit( api_url="https://argilla.example.com", api_key="my_api_key", ) diff --git a/extralit/docs/reference/argilla/datasets/dataset_records.md b/extralit/docs/reference/argilla/datasets/dataset_records.md index d435dc191..12da69872 100644 --- a/extralit/docs/reference/argilla/datasets/dataset_records.md +++ b/extralit/docs/reference/argilla/datasets/dataset_records.md @@ -1,7 +1,7 @@ --- hide: footer --- -# `rg.Dataset.records` +# `ex.Dataset.records` ## Usage Examples @@ -27,13 +27,13 @@ To add records to a dataset, use the `log` method. Records can be added as dicti ```python records = [ - rg.Record( + ex.Record( fields={ "question": "Do you need oxygen to breathe?", "answer": "Yes" }, ), - rg.Record( + ex.Record( fields={ "question": "What is the boiling point of water?", "answer": "100 degrees Celsius" @@ -127,7 +127,7 @@ Records can also be updated using the `log` method with records that contain an ```python records = [ - rg.Record( + ex.Record( metadata={"department": "toys"}, id="2" # (1) ), @@ -196,7 +196,7 @@ Records can also be updated using the `log` method with records that contain an ### Adding and updating records with images -Argilla datasets can contain image fields. You can add images to a dataset by passing the image to the record object as either a remote URL, a local path to an image file, or a PIL object. The field names must be defined as an `rg.ImageField` in the dataset's `Settings` object to be accepted. Images will be stored in the Argilla database and returned using the data URI schema. +Argilla datasets can contain image fields. You can add images to a dataset by passing the image to the record object as either a remote URL, a local path to an image file, or a PIL object. The field names must be defined as an `ex.ImageField` in the dataset's `Settings` object to be accepted. Images will be stored in the Argilla database and returned using the data URI schema. !!! note "As PIL objects" To retrieve the images as rescaled PIL objects, you can use the `to_datasets` method when exporting the records, as shown in this [how-to guide](../../../admin_guide/import_export.md). @@ -280,7 +280,7 @@ for record in dataset.records(query="capital", with_vectors=True): print(record.vectors) ``` -Check out the [`rg.Record`](../records/records.md) class reference for more information on the properties and methods available on a record and the [`rg.Query`](../search.md) class reference for more information on the query syntax. +Check out the [`ex.Record`](../records/records.md) class reference for more information on the properties and methods available on a record and the [`ex.Query`](../search.md) class reference for more information on the query syntax. --- diff --git a/extralit/docs/reference/argilla/datasets/datasets.md b/extralit/docs/reference/argilla/datasets/datasets.md index 9c24a3bd5..05f0cce3f 100644 --- a/extralit/docs/reference/argilla/datasets/datasets.md +++ b/extralit/docs/reference/argilla/datasets/datasets.md @@ -1,7 +1,7 @@ --- hide: footer --- -# `rg.Dataset` +# `ex.Dataset` `Dataset` is a class that represents a collection of records. It is used to store and manage records in Argilla. @@ -12,14 +12,14 @@ hide: footer To create a new dataset you need to define its name and settings. Optional parameters are `workspace` and `client`, if you want to create the dataset in a specific workspace or on a specific Argilla instance. ```python -dataset = rg.Dataset( +dataset = ex.Dataset( name="my_dataset", - settings=rg.Settings( + settings=ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="response"), + ex.TextQuestion(name="response"), ], ), ) diff --git a/extralit/docs/reference/argilla/markdown.md b/extralit/docs/reference/argilla/markdown.md index 171289af9..98645ba54 100644 --- a/extralit/docs/reference/argilla/markdown.md +++ b/extralit/docs/reference/argilla/markdown.md @@ -2,7 +2,7 @@ hide: footer --- -# `rg.markdown` +# `ex.markdown` To support the usage of Markdown within Argilla, we've created some helper functions to easy the usage of DataURL conversions and chat message visualizations. diff --git a/extralit/docs/reference/argilla/records/metadata.md b/extralit/docs/reference/argilla/records/metadata.md index ecd4a0980..c9a0da36d 100644 --- a/extralit/docs/reference/argilla/records/metadata.md +++ b/extralit/docs/reference/argilla/records/metadata.md @@ -18,7 +18,7 @@ dataset = Dataset( fields=[TextField(name="text")], questions=[LabelQuestion(name="label", labels=["positive", "negative"])], metadata=[ - rg.TermsMetadataProperty(name="category", options=["A", "B", "C"]), + ex.TermsMetadataProperty(name="category", options=["A", "B", "C"]), ], ), ) @@ -43,14 +43,14 @@ Depending on the `MetadataProperty` type, metadata might need to be formatted in === "For `TermsMetadataProperty`" ```python - rg.Records( + ex.Records( fields={"text": "example"}, metadata={"category": "A"} ) # with multiple terms - rg.Records( + ex.Records( fields={"text": "example"}, metadata={"category": ["A", "B"]} ) @@ -59,7 +59,7 @@ Depending on the `MetadataProperty` type, metadata might need to be formatted in === "For `FloatMetadataProperty`" ```python - rg.Records( + ex.Records( fields={"text": "example"}, metadata={"category": 2.1} ) @@ -68,7 +68,7 @@ Depending on the `MetadataProperty` type, metadata might need to be formatted in === "For `IntegerMetadataProperty`" ```python - rg.Records( + ex.Records( fields={"text": "example"}, metadata={"category": 42} ) diff --git a/extralit/docs/reference/argilla/records/records.md b/extralit/docs/reference/argilla/records/records.md index a1474acdd..243ddc6f4 100644 --- a/extralit/docs/reference/argilla/records/records.md +++ b/extralit/docs/reference/argilla/records/records.md @@ -1,7 +1,7 @@ --- hide: footer --- -# `rg.Record` +# `ex.Record` The `Record` object is used to represent a single record in Argilla. It contains fields, suggestions, responses, metadata, and vectors. @@ -14,7 +14,7 @@ To create records, you can use the `Record` class and pass it to the `Dataset.re ```python dataset.records.log( records=[ - rg.Record( + ex.Record( fields={"text": "Hello World, how are you?"}, ), ] @@ -23,12 +23,12 @@ dataset.records.log( 1. The Argilla dataset contains a field named `text` matching the key here. -To create records with image fields, pass the image to the record object as either a remote url, local path to an image file, or a PIL object. The field names must be defined as an `rg.ImageField`in the dataset's `Settings` object to be accepted. Images will be stored in the Argilla database and returned as rescaled PIL objects. +To create records with image fields, pass the image to the record object as either a remote url, local path to an image file, or a PIL object. The field names must be defined as an `ex.ImageField`in the dataset's `Settings` object to be accepted. Images will be stored in the Argilla database and returned as rescaled PIL objects. ```python dataset.records.log( records=[ - rg.Record( + ex.Record( fields={"image": "https://example.com/image.jpg"}, # (1) ), ] diff --git a/extralit/docs/reference/argilla/records/responses.md b/extralit/docs/reference/argilla/records/responses.md index 41a36258a..d307551df 100644 --- a/extralit/docs/reference/argilla/records/responses.md +++ b/extralit/docs/reference/argilla/records/responses.md @@ -1,7 +1,7 @@ --- hide: footer --- -# `rg.Response` +# `ex.Response` Class for interacting with Argilla Responses of records. Responses are answers to questions by a user. Therefore, a question can have multiple responses, one for each user that has answered the question. A `Response` is typically created by a user in the UI or consumed from a data source as a label, unlike a `Suggestion` which is typically created by a model prediction. @@ -14,9 +14,9 @@ Instantiate the `Record` and related `Response` objects: ```python dataset.records.log( [ - rg.Record( + ex.Record( fields={"text": "Hello World, how are you?"}, - responses=[rg.Response("label", "negative", user_id=user.id)], + responses=[ex.Response("label", "negative", user_id=user.id)], external_id=str(uuid.uuid4()), ) ] @@ -57,7 +57,7 @@ for record in dataset.records: print(response.user_id) else: record.responses.add( - rg.Response("label", "positive", user_id=user.id) + ex.Response("label", "positive", user_id=user.id) ) # (2) ``` @@ -71,7 +71,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `LabelQuestion`" ```python - rg.Response( + ex.Response( question_name="label", value="positive", user_id=user.id, @@ -82,7 +82,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `MultiLabelQuestion`" ```python - rg.Response( + ex.Response( question_name="multi-label", value=["positive", "negative"], user_id=user.id, @@ -93,7 +93,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `RankingQuestion`" ```python - rg.Response( + ex.Response( question_name="rank", value=["1", "3", "2"], user_id=user.id, @@ -104,7 +104,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `RatingQuestion`" ```python - rg.Response( + ex.Response( question_name="rating", value=4, user_id=user.id, @@ -115,7 +115,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `SpanQuestion`" ```python - rg.Response( + ex.Response( question_name="span", value=[{"start": 0, "end": 9, "label": "MISC"}], user_id=user.id, @@ -126,7 +126,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `TextQuestion`" ```python - rg.Response( + ex.Response( question_name="text", value="value", user_id=user.id, diff --git a/extralit/docs/reference/argilla/records/suggestions.md b/extralit/docs/reference/argilla/records/suggestions.md index 78eeebe02..2f8ae3995 100644 --- a/extralit/docs/reference/argilla/records/suggestions.md +++ b/extralit/docs/reference/argilla/records/suggestions.md @@ -1,7 +1,7 @@ --- hide: footer --- -# `rg.Suggestion` +# `ex.Suggestion` Class for interacting with Argilla Suggestions of records. Suggestions are typically created by a model prediction, unlike a `Response` which is typically created by a user in the UI or consumed from a data source as a label. @@ -50,9 +50,9 @@ Or, instantiate the `Record` and related `Suggestions` objects directly, like th ```python dataset.records.log( [ - rg.Record( + ex.Record( fields={"text": "Hello World, how are you?"}, - suggestions=[rg.Suggestion("negative", "label", score=0.9, agent="model_name")], + suggestions=[ex.Suggestion("negative", "label", score=0.9, agent="model_name")], ) ] ) @@ -73,7 +73,7 @@ We can also add suggestions to records as we iterate over them using the `add` m for record in dataset.records(with_suggestions=True): if not record.suggestions["label"]: # (1) record.suggestions.add( - rg.Suggestion("positive", "label", score=0.9, agent="model_name") + ex.Suggestion("positive", "label", score=0.9, agent="model_name") ) # (2) ``` @@ -87,7 +87,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `LabelQuestion`" ```python - rg.Suggestion( + ex.Suggestion( question_name="label", value="positive", score=0.9, @@ -98,7 +98,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `MultiLabelQuestion`" ```python - rg.Suggestion( + ex.Suggestion( question_name="multi-label", value=["positive", "negative"], score=0.9, @@ -109,7 +109,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `RankingQuestion`" ```python - rg.Suggestion( + ex.Suggestion( question_name="rank", value=["1", "3", "2"], score=0.9, @@ -120,7 +120,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `RatingQuestion`" ```python - rg.Suggestion( + ex.Suggestion( question_name="rating", value=4, score=0.9, @@ -131,7 +131,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `SpanQuestion`" ```python - rg.Suggestion( + ex.Suggestion( question_name="span", value=[{"start": 0, "end": 9, "label": "MISC"}], score=0.9, @@ -142,7 +142,7 @@ Depending on the `Question` type, responses might need to be formatted in a slig === "For `TextQuestion`" ```python - rg.Suggestion( + ex.Suggestion( question_name="text", value="value", score=0.9, diff --git a/extralit/docs/reference/argilla/records/vectors.md b/extralit/docs/reference/argilla/records/vectors.md index a06018549..6c505b9a6 100644 --- a/extralit/docs/reference/argilla/records/vectors.md +++ b/extralit/docs/reference/argilla/records/vectors.md @@ -1,9 +1,9 @@ --- hide: footer --- -# `rg.Vector` +# `ex.Vector` -A vector is a numerical representation of a `Record` field or attribute, usually the record's text. Vectors can be used to search for similar records via the UI or SDK. Vectors can be added to a record directly or as a dictionary with a key that the matches `rg.VectorField` name. +A vector is a numerical representation of a `Record` field or attribute, usually the record's text. Vectors can be used to search for similar records via the UI or SDK. Vectors can be added to a record directly or as a dictionary with a key that the matches `ex.VectorField` name. ## Usage Examples @@ -38,7 +38,7 @@ dataset.records.log( ) ``` -Vectors can be passed using a mapping, where the key is the key in the data source and the value is the name in the dataset's setting's `rg.VectorField` object. For example, the following code adds a record with a vector using a mapping: +Vectors can be passed using a mapping, where the key is the key in the data source and the value is the name in the dataset's setting's `ex.VectorField` object. For example, the following code adds a record with a vector using a mapping: ```python dataset.records.log( @@ -57,9 +57,9 @@ Or, vectors can be instantiated and added to a record directly, like this: ```python dataset.records.log( [ - rg.Record( + ex.Record( fields={"text": "Hello World, how are you?"}, - vectors=[rg.Vector("embedding", [0.1, 0.2, 0.3])], + vectors=[ex.Vector("embedding", [0.1, 0.2, 0.3])], ) ] ) diff --git a/extralit/docs/reference/argilla/search.md b/extralit/docs/reference/argilla/search.md index 23553d015..388b0fc53 100644 --- a/extralit/docs/reference/argilla/search.md +++ b/extralit/docs/reference/argilla/search.md @@ -1,7 +1,7 @@ --- hide: footer --- -# `rg.Query` +# `ex.Query` To collect records based on searching criteria, you can use the `Query` and `Filter` classes. The `Query` class is used to define the search criteria, while the `Filter` class is used to filter the search results. `Filter` is passed to a `Query` object so you can combine multiple filters to create complex search queries. A `Query` object can also be passed to `Dataset.records` to fetch records based on the search criteria. @@ -24,7 +24,7 @@ Argilla allows you to filter records based on conditions. You can use the `Filte ```python # create a range from 10 to 20 -range_filter = rg.Filter( +range_filter = ex.Filter( [ ("metadata.count", ">=", 10), ("metadata.count", "<=", 20) @@ -32,7 +32,7 @@ range_filter = rg.Filter( ) # query records with metadata count greater than 10 and less than 20 -query = rg.Query(filters=range_filter, query="paris") +query = ex.Query(filters=range_filter, query="paris") # iterate over the results for record in dataset.records(query=query): diff --git a/extralit/docs/reference/argilla/settings/fields.md b/extralit/docs/reference/argilla/settings/fields.md index 8edb0b076..d5569e15b 100644 --- a/extralit/docs/reference/argilla/settings/fields.md +++ b/extralit/docs/reference/argilla/settings/fields.md @@ -11,32 +11,32 @@ Fields in Argilla define the content of a record that will be reviewed by a user To define a field, instantiate the different field classes and pass it to the `fields` parameter of the `Settings` class. ```python -text_field = rg.TextField(name="text") -markdown_field = rg.TextField(name="text", use_markdown=True) -image_field = rg.ImageField(name="image") +text_field = ex.TextField(name="text") +markdown_field = ex.TextField(name="text", use_markdown=True) +image_field = ex.ImageField(name="image") ``` The `fields` parameter of the `Settings` class can accept a list of fields, like this: ```python -settings = rg.Settings( +settings = ex.Settings( fields=[ text_field, markdown_field, image_field, ], questions=[ - rg.TextQuestion(name="response"), + ex.TextQuestion(name="response"), ], ) -data = rg.Dataset( +data = ex.Dataset( name="my_dataset", settings=settings, ) ``` -> To add records with values for fields, refer to the [`rg.Dataset.records`](../records/records.md) documentation. +> To add records with values for fields, refer to the [`ex.Dataset.records`](../records/records.md) documentation. --- diff --git a/extralit/docs/reference/argilla/settings/metadata_property.md b/extralit/docs/reference/argilla/settings/metadata_property.md index 2455a39a9..7312a1cc4 100644 --- a/extralit/docs/reference/argilla/settings/metadata_property.md +++ b/extralit/docs/reference/argilla/settings/metadata_property.md @@ -15,34 +15,34 @@ We define metadata properties via type specific classes. The following example d `TermsMetadataProperty` is used to define a metadata field with a list of options. For example, a color field with options red, blue, and green. `FloatMetadataProperty` and `IntegerMetadataProperty` is used to define a metadata field with a float value. For example, a price field with a minimum value of 0.0 and a maximum value of 100.0. ```python -metadata_field = rg.TermsMetadataProperty( +metadata_field = ex.TermsMetadataProperty( name="color", options=["red", "blue", "green"], title="Color", ) -float_metadata_field = rg.FloatMetadataProperty( +float_metadata_field = ex.FloatMetadataProperty( name="price", min=0.0, max=100.0, title="Price", ) -int_metadata_field = rg.IntegerMetadataProperty( +int_metadata_field = ex.IntegerMetadataProperty( name="quantity", min=0, max=100, title="Quantity", ) -dataset = rg.Dataset( +dataset = ex.Dataset( name="my_dataset", - settings=rg.Settings( + settings=ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="response"), + ex.TextQuestion(name="response"), ], metadata=[ metadata_field, @@ -52,13 +52,13 @@ dataset = rg.Dataset( ), ) -dataset = rg.Dataset( +dataset = ex.Dataset( name="my_dataset", settings=settings, ) ``` -> To add records with metadata, refer to the [`rg.Metadata`](../records/metadata.md) class documentation. +> To add records with metadata, refer to the [`ex.Metadata`](../records/metadata.md) class documentation. --- diff --git a/extralit/docs/reference/argilla/settings/questions.md b/extralit/docs/reference/argilla/settings/questions.md index 7ff7d1f14..a8dd9657b 100644 --- a/extralit/docs/reference/argilla/settings/questions.md +++ b/extralit/docs/reference/argilla/settings/questions.md @@ -11,11 +11,11 @@ Argilla uses questions to gather the feedback. The questions will be answered by To define a label question, for example, instantiate the `LabelQuestion` class and pass it to the `Settings` class. ```python -label_question = rg.LabelQuestion(name="label", labels=["positive", "negative"]) +label_question = ex.LabelQuestion(name="label", labels=["positive", "negative"]) -settings = rg.Settings( +settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ label_question, @@ -26,12 +26,12 @@ settings = rg.Settings( Questions can be combined in extensible ways based on the type of feedback you want to collect. For example, you can combine a label question with a text question to collect both a label and a text response. ```python -label_question = rg.LabelQuestion(name="label", labels=["positive", "negative"]) -text_question = rg.TextQuestion(name="response") +label_question = ex.LabelQuestion(name="label", labels=["positive", "negative"]) +text_question = ex.TextQuestion(name="response") -settings = rg.Settings( +settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ label_question, @@ -39,13 +39,13 @@ settings = rg.Settings( ], ) -dataset = rg.Dataset( +dataset = ex.Dataset( name="my_dataset", settings=settings, ) ``` -> To add records with responses to questions, refer to the [`rg.Response`](../records/responses.md) class documentation. +> To add records with responses to questions, refer to the [`ex.Response`](../records/responses.md) class documentation. --- diff --git a/extralit/docs/reference/argilla/settings/settings.md b/extralit/docs/reference/argilla/settings/settings.md index 62261487a..f8adc6bc4 100644 --- a/extralit/docs/reference/argilla/settings/settings.md +++ b/extralit/docs/reference/argilla/settings/settings.md @@ -1,9 +1,9 @@ --- hide: footer --- -# `rg.Settings` +# `ex.Settings` -`rg.Settings` is used to define the settings of an Argilla `Dataset`. The settings can be used to configure the +`ex.Settings` is used to define the settings of an Argilla `Dataset`. The settings can be used to configure the behavior of the dataset, such as the fields, questions, guidelines, metadata, and vectors. The `Settings` class is passed to the `Dataset` class and used to create the dataset on the server. Once created, the settings of a dataset cannot be changed. @@ -17,20 +17,20 @@ To create a new dataset with settings, instantiate the `Settings` class and pass ```python import argilla as rg -settings = rg.Settings( +settings = ex.Settings( guidelines="Select the sentiment of the prompt.", - fields=[rg.TextField(name="prompt", use_markdown=True)], - questions=[rg.LabelQuestion(name="sentiment", labels=["positive", "negative"])], + fields=[ex.TextField(name="prompt", use_markdown=True)], + questions=[ex.LabelQuestion(name="sentiment", labels=["positive", "negative"])], ) -dataset = rg.Dataset(name="sentiment_analysis", settings=settings) +dataset = ex.Dataset(name="sentiment_analysis", settings=settings) # Create the dataset on the server dataset.create() ``` -To define the settings for fields, questions, metadata, vectors, or distribution, refer to the [`rg.TextField`](fields.md), [`rg.LabelQuestion`](questions.md), [`rg.TermsMetadataProperty`](metadata_property.md), and [`rg.VectorField`](vectors.md), [`rg.TaskDistribution`](task_distribution.md) class documentation. +To define the settings for fields, questions, metadata, vectors, or distribution, refer to the [`ex.TextField`](fields.md), [`ex.LabelQuestion`](questions.md), [`ex.TermsMetadataProperty`](metadata_property.md), and [`ex.VectorField`](vectors.md), [`ex.TaskDistribution`](task_distribution.md) class documentation. ### Adding or removing properties to settings @@ -40,17 +40,17 @@ the method `settings.add` and `settings.<>.remove` ```python import argilla as rg -settings = rg.Settings( +settings = ex.Settings( guidelines="Select the sentiment of the prompt.", - fields=[rg.TextField(name="prompt", use_markdown=True)], - questions=[rg.LabelQuestion(name="sentiment", labels=["positive", "negative"])], + fields=[ex.TextField(name="prompt", use_markdown=True)], + questions=[ex.LabelQuestion(name="sentiment", labels=["positive", "negative"])], ) # Adding a new property -settings.add(rg.TextField(name="response", use_markdown=True)) +settings.add(ex.TextField(name="response", use_markdown=True)) # Replace an existing property by other property type -settings.add(rg.TextQuestion(name="response", use_markdown=False)) +settings.add(ex.TextQuestion(name="response", use_markdown=False)) # Remove an existing property settings.questions.remove("response") @@ -63,10 +63,10 @@ Argilla provides built-in templates for creating settings for common dataset typ #### Classification Task -You can define a classification task using the `rg.Settings.for_classification` class method. This will create a dataset with a text field and a label question. You can select field types using the `field_type` parameter with `image` or `text`. +You can define a classification task using the `ex.Settings.for_classification` class method. This will create a dataset with a text field and a label question. You can select field types using the `field_type` parameter with `image` or `text`. ```python -settings = rg.Settings.for_classification(labels=["positive", "negative"]) # (1) +settings = ex.Settings.for_classification(labels=["positive", "negative"]) # (1) ``` This will return a `Settings` object with the following settings: @@ -74,7 +74,7 @@ This will return a `Settings` object with the following settings: ```python settings = Settings( guidelines="Select a label for the document.", - fields=[rg.TextField(field_type)(name="text")], + fields=[ex.TextField(field_type)(name="text")], questions=[LabelQuestion(name="label", labels=labels)], mapping={"input": "text", "output": "label", "document": "text"}, ) @@ -82,10 +82,10 @@ settings = Settings( #### Ranking Task -You can define a ranking task using the `rg.Settings.for_ranking` class method. This will create a dataset with a text field and a ranking question. +You can define a ranking task using the `ex.Settings.for_ranking` class method. This will create a dataset with a text field and a ranking question. ```python -settings = rg.Settings.for_ranking() +settings = ex.Settings.for_ranking() ``` This will return a `Settings` object with the following settings: @@ -94,9 +94,9 @@ This will return a `Settings` object with the following settings: settings = Settings( guidelines="Rank the responses.", fields=[ - rg.TextField(name="instruction"), - rg.TextField(name="response1"), - rg.TextField(name="response2"), + ex.TextField(name="instruction"), + ex.TextField(name="response1"), + ex.TextField(name="response2"), ], questions=[RankingQuestion(name="ranking", values=["response1", "response2"])], mapping={ @@ -110,10 +110,10 @@ settings = Settings( #### Rating Task -You can define a rating task using the `rg.Settings.for_rating` class method. This will create a dataset with a text field and a rating question. +You can define a rating task using the `ex.Settings.for_rating` class method. This will create a dataset with a text field and a rating question. ```python -settings = rg.Settings.for_rating() +settings = ex.Settings.for_rating() ``` This will return a `Settings` object with the following settings: @@ -122,8 +122,8 @@ This will return a `Settings` object with the following settings: settings = Settings( guidelines="Rate the response.", fields=[ - rg.TextField(name="instruction"), - rg.TextField(name="response"), + ex.TextField(name="instruction"), + ex.TextField(name="response"), ], questions=[RatingQuestion(name="rating", values=[1, 2, 3, 4, 5])], mapping={ diff --git a/extralit/docs/reference/argilla/settings/task_distribution.md b/extralit/docs/reference/argilla/settings/task_distribution.md index 58563c300..899d44455 100644 --- a/extralit/docs/reference/argilla/settings/task_distribution.md +++ b/extralit/docs/reference/argilla/settings/task_distribution.md @@ -10,23 +10,23 @@ Distribution settings are used to define the criteria used by the tool to automa The default minimum submitted responses per record is 1. If you wish to increase this value, you can define it through the `TaskDistribution` class and pass it to the `Settings` class. ```python -settings = rg.Settings( +settings = ex.Settings( guidelines="These are some guidelines.", fields=[ - rg.TextField( + ex.TextField( name="text", ), ], questions=[ - rg.LabelQuestion( + ex.LabelQuestion( name="label", labels=["label_1", "label_2", "label_3"] ), ], - distribution=rg.TaskDistribution(min_submitted=3) + distribution=ex.TaskDistribution(min_submitted=3) ) -dataset = rg.Dataset( +dataset = ex.Dataset( name="my_dataset", settings=settings ) diff --git a/extralit/docs/reference/argilla/settings/vectors.md b/extralit/docs/reference/argilla/settings/vectors.md index c3b038224..13fd06218 100644 --- a/extralit/docs/reference/argilla/settings/vectors.md +++ b/extralit/docs/reference/argilla/settings/vectors.md @@ -10,12 +10,12 @@ Vector fields in Argilla are used to define the vector form of a record that wil To define a vector field, instantiate the `VectorField` class with a name and dimensions, then pass it to the `vectors` parameter of the `Settings` class. ```python -settings = rg.Settings( +settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], vectors=[ - rg.VectorField( + ex.VectorField( name="my_vector", dimension=768, title="Document Embedding", @@ -24,7 +24,7 @@ settings = rg.Settings( ) ``` -> To add records with vectors, refer to the [`rg.Vector`](../records/vectors.md) class documentation. +> To add records with vectors, refer to the [`ex.Vector`](../records/vectors.md) class documentation. --- diff --git a/extralit/docs/reference/argilla/users.md b/extralit/docs/reference/argilla/users.md index 87fa14cb5..fbfe39d07 100644 --- a/extralit/docs/reference/argilla/users.md +++ b/extralit/docs/reference/argilla/users.md @@ -1,7 +1,7 @@ --- hide: footer --- -# `rg.User` +# `ex.User` A user in Argilla is a profile that uses the SDK or UI. Their profile can be used to track their feedback activity and to manage their access to the Argilla server. @@ -10,7 +10,7 @@ A user in Argilla is a profile that uses the SDK or UI. Their profile can be use To create a new user, instantiate the `User` object with the client and the username: ```python -user = rg.User(username="my_username", password="my_password") +user = ex.User(username="my_username", password="my_password") user.create() ``` @@ -20,7 +20,7 @@ Existing users can be retrieved by their username: user = client.users("my_username") ``` -The current user of the `rg.Argilla` client can be accessed using the `me` attribute: +The current user of the `ex.Extralit` client can be accessed using the `me` attribute: ```python client.me diff --git a/extralit/docs/reference/argilla/webhooks.md b/extralit/docs/reference/argilla/webhooks.md index e894fdba5..8e48e1c3e 100644 --- a/extralit/docs/reference/argilla/webhooks.md +++ b/extralit/docs/reference/argilla/webhooks.md @@ -23,7 +23,7 @@ async def my_webhook_listener(dataset): To manually create a new webhook, instantiate the `Webhook` object with the client and the name: ```python -webhook = rg.Webhook( +webhook = ex.Webhook( url="https://somehost.com/webhook", events=["dataset.created"], description="My webhook" diff --git a/extralit/docs/reference/argilla/workspaces.md b/extralit/docs/reference/argilla/workspaces.md index 6e95648b3..8adf692fa 100644 --- a/extralit/docs/reference/argilla/workspaces.md +++ b/extralit/docs/reference/argilla/workspaces.md @@ -2,7 +2,7 @@ hide: footer --- -# `rg.Workspace` +# `ex.Workspace` In Argilla, workspaces are used to organize datasets in to groups. For example, you might have a workspace for each project or team. @@ -11,7 +11,7 @@ In Argilla, workspaces are used to organize datasets in to groups. For example, To create a new workspace, instantiate the `Workspace` object with the client and the name: ```python -workspace = rg.Workspace(name="my_workspace") +workspace = ex.Workspace(name="my_workspace") workspace.create() ``` diff --git a/extralit/docs/tutorials/image_classification.ipynb b/extralit/docs/tutorials/image_classification.ipynb index ec481c9f4..17cd7bb9a 100644 --- a/extralit/docs/tutorials/image_classification.ipynb +++ b/extralit/docs/tutorials/image_classification.ipynb @@ -120,7 +120,7 @@ "# Replace api_url with your url if using Docker\n", "# Replace api_key with your API key under \"My Settings\" in the UI\n", "# Uncomment the last line and set your HF_TOKEN if your space is private\n", - "client = rg.Argilla(\n", + "client = ex.Extralit(\n", " api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", " api_key=\"[your-api-key]\",\n", " # headers={\"Authorization\": f\"Bearer {HF_TOKEN}\"}\n", @@ -168,16 +168,16 @@ "source": [ "labels = [str(x) for x in range(10)]\n", "\n", - "settings = rg.Settings(\n", + "settings = ex.Settings(\n", " guidelines=\"The goal of this task is to classify a given image of a handwritten digit into one of 10 classes representing integer values from 0 to 9, inclusively.\",\n", " fields=[\n", - " rg.ImageField(\n", + " ex.ImageField(\n", " name=\"image\",\n", " title=\"An image of a handwritten digit.\",\n", " ),\n", " ],\n", " questions=[\n", - " rg.LabelQuestion(\n", + " ex.LabelQuestion(\n", " name=\"image_label\",\n", " title=\"What digit do you see on the image?\",\n", " labels=labels,\n", @@ -199,7 +199,7 @@ "metadata": {}, "outputs": [], "source": [ - "dataset = rg.Dataset(\n", + "dataset = ex.Dataset(\n", " name=\"image_classification_dataset\",\n", " settings=settings,\n", ")\n", @@ -495,7 +495,7 @@ "metadata": {}, "outputs": [], "source": [ - "status_filter = rg.Query(filter=rg.Filter((\"response.status\", \"==\", \"submitted\")))\n", + "status_filter = ex.Query(filter=ex.Filter((\"response.status\", \"==\", \"submitted\")))\n", "\n", "submitted = dataset.records(status_filter).to_datasets()" ] diff --git a/extralit/docs/tutorials/image_preference.ipynb b/extralit/docs/tutorials/image_preference.ipynb index b8a56b341..179b9d46f 100644 --- a/extralit/docs/tutorials/image_preference.ipynb +++ b/extralit/docs/tutorials/image_preference.ipynb @@ -110,7 +110,7 @@ "# Replace api_url with your url if using Docker\n", "# Replace api_key with your API key under \"My Settings\" in the UI\n", "# Uncomment the last line and set your HF_TOKEN if your space is private\n", - "client = rg.Argilla(\n", + "client = ex.Extralit(\n", " api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", " api_key=\"[your-api-key]\",\n", " # headers={\"Authorization\": f\"Bearer {HF_TOKEN}\"}\n", @@ -156,45 +156,45 @@ "metadata": {}, "outputs": [], "source": [ - "settings = rg.Settings(\n", + "settings = ex.Settings(\n", " guidelines=\"The goal is to choose the image that best represents the caption.\",\n", " fields=[\n", - " rg.TextField(\n", + " ex.TextField(\n", " name=\"caption\",\n", " title=\"An image caption belonging to the original image.\",\n", " ),\n", - " rg.ImageField(\n", + " ex.ImageField(\n", " name=\"image_original\",\n", " title=\"The original image, belonging to the caption.\",\n", " ),\n", - " rg.ImageField(\n", + " ex.ImageField(\n", " name=\"image_1\",\n", " title=\"An image that has been generated based on the caption.\",\n", " ),\n", - " rg.ImageField(\n", + " ex.ImageField(\n", " name=\"image_2\",\n", " title=\"An image that has been generated based on the caption.\",\n", " ),\n", " ],\n", " questions=[\n", - " rg.LabelQuestion(\n", + " ex.LabelQuestion(\n", " name=\"preference\",\n", " title=\"The chosen preference for the generation.\",\n", " labels=[\"image_1\", \"image_2\"],\n", " ),\n", - " rg.TextQuestion(\n", + " ex.TextQuestion(\n", " name=\"comment\",\n", " title=\"Any additional comments.\",\n", " required=False,\n", " ),\n", " ],\n", " metadata=[\n", - " rg.FloatMetadataProperty(name=\"toxicity\", title=\"Toxicity score\"),\n", - " rg.FloatMetadataProperty(name=\"identity_attack\", title=\"Identity attack score\"),\n", + " ex.FloatMetadataProperty(name=\"toxicity\", title=\"Toxicity score\"),\n", + " ex.FloatMetadataProperty(name=\"identity_attack\", title=\"Identity attack score\"),\n", "\n", " ],\n", " vectors=[\n", - " rg.VectorField(name=\"original_caption_vector\", dimensions=384),\n", + " ex.VectorField(name=\"original_caption_vector\", dimensions=384),\n", " ]\n", ")" ] @@ -212,7 +212,7 @@ "metadata": {}, "outputs": [], "source": [ - "dataset = rg.Dataset(\n", + "dataset = ex.Dataset(\n", " name=\"image_preference_dataset\",\n", " settings=settings,\n", ")\n", diff --git a/extralit/docs/tutorials/text_classification.ipynb b/extralit/docs/tutorials/text_classification.ipynb index 84af2d116..4e8ac966a 100644 --- a/extralit/docs/tutorials/text_classification.ipynb +++ b/extralit/docs/tutorials/text_classification.ipynb @@ -105,7 +105,7 @@ "# Replace api_url with your url if using Docker\n", "# Replace api_key with your API key under \"My Settings\" in the UI\n", "# Uncomment the last line and set your HF_TOKEN if your space is private\n", - "client = rg.Argilla(\n", + "client = ex.Extralit(\n", " api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", " api_key=\"[your-api-key]\",\n", " # headers={\"Authorization\": f\"Bearer {HF_TOKEN}\"}\n", @@ -153,17 +153,17 @@ "source": [ "labels = [\"positive\", \"negative\"]\n", "\n", - "settings = rg.Settings(\n", + "settings = ex.Settings(\n", " guidelines=\"Classify the reviews as positive or negative.\",\n", " fields=[\n", - " rg.TextField(\n", + " ex.TextField(\n", " name=\"review\",\n", " title=\"Text from the review\",\n", " use_markdown=False,\n", " ),\n", " ],\n", " questions=[\n", - " rg.LabelQuestion(\n", + " ex.LabelQuestion(\n", " name=\"sentiment_label\",\n", " title=\"In which category does this article fit?\",\n", " labels=labels,\n", @@ -185,7 +185,7 @@ "metadata": {}, "outputs": [], "source": [ - "dataset = rg.Dataset(\n", + "dataset = ex.Dataset(\n", " name=\"text_classification_dataset\",\n", " settings=settings,\n", ")\n", @@ -437,7 +437,7 @@ "metadata": {}, "outputs": [], "source": [ - "status_filter = rg.Query(filter=rg.Filter((\"response.status\", \"==\", \"submitted\")))\n", + "status_filter = ex.Query(filter=ex.Filter((\"response.status\", \"==\", \"submitted\")))\n", "\n", "submitted = dataset.records(status_filter).to_list(flatten=True)" ] diff --git a/extralit/docs/tutorials/token_classification.ipynb b/extralit/docs/tutorials/token_classification.ipynb index bb90ec2e7..70cc8a6da 100644 --- a/extralit/docs/tutorials/token_classification.ipynb +++ b/extralit/docs/tutorials/token_classification.ipynb @@ -110,7 +110,7 @@ "# Replace api_url with your url if using Docker\n", "# Replace api_key with your API key under \"My Settings\" in the UI\n", "# Uncomment the last line and set your HF_TOKEN if your space is private\n", - "client = rg.Argilla(\n", + "client = ex.Extralit(\n", " api_url=\"https://[your-owner-name]-[your_space_name].hf.space\",\n", " api_key=\"[your-api-key]\",\n", " # headers={\"Authorization\": f\"Bearer {HF_TOKEN}\"}\n", @@ -174,17 +174,17 @@ " \"EVENT\",\n", "]\n", "\n", - "settings = rg.Settings(\n", + "settings = ex.Settings(\n", " guidelines=\"Classify individual tokens according to the specified categories, ensuring that any overlapping or nested entities are accurately captured.\",\n", " fields=[\n", - " rg.TextField(\n", + " ex.TextField(\n", " name=\"text\",\n", " title=\"Text\",\n", " use_markdown=False,\n", " ),\n", " ],\n", " questions=[\n", - " rg.SpanQuestion(\n", + " ex.SpanQuestion(\n", " name=\"span_label\",\n", " field=\"text\",\n", " labels=labels,\n", @@ -208,7 +208,7 @@ "metadata": {}, "outputs": [], "source": [ - "dataset = rg.Dataset(\n", + "dataset = ex.Dataset(\n", " name=\"token_classification_dataset\",\n", " settings=settings,\n", ")\n", @@ -251,7 +251,7 @@ "metadata": {}, "outputs": [], "source": [ - "records = [rg.Record(fields={\"text\": \" \".join(row[\"tokens\"])}) for row in hf_dataset]\n", + "records = [ex.Record(fields={\"text\": \" \".join(row[\"tokens\"])}) for row in hf_dataset]\n", "\n", "dataset.records.log(records)" ] @@ -408,7 +408,7 @@ "metadata": {}, "outputs": [], "source": [ - "status_filter = rg.Query(filter=rg.Filter((\"response.status\", \"==\", \"submitted\")))\n", + "status_filter = ex.Query(filter=ex.Filter((\"response.status\", \"==\", \"submitted\")))\n", "\n", "submitted = dataset.records(status_filter).to_list(flatten=True)" ] diff --git a/extralit/src/extralit/_helpers/_deploy.py b/extralit/src/extralit/_helpers/_deploy.py index 01e6b5581..66ad67922 100644 --- a/extralit/src/extralit/_helpers/_deploy.py +++ b/extralit/src/extralit/_helpers/_deploy.py @@ -60,8 +60,8 @@ def deploy_on_spaces( Example: ```Python - import extralit as rg - client = rg.Argilla.deploy_on_spaces(api_key="12345678") + import extralit as ex + client = ex.Extralit.deploy_on_spaces(api_key="12345678") ``` """ hf_token = cls._acquire_hf_token(ht_token=hf_token) diff --git a/extralit/src/extralit/datasets/_io/card/argilla_template.md b/extralit/src/extralit/datasets/_io/card/argilla_template.md index 4cc7ee768..3c88005fa 100644 --- a/extralit/src/extralit/datasets/_io/card/argilla_template.md +++ b/extralit/src/extralit/datasets/_io/card/argilla_template.md @@ -32,7 +32,7 @@ To load with Argilla, you'll just need to install Argilla as `pip install extral ```python import argilla as rg -ds = rg.Dataset.from_hub("{{ repo_id }}", settings="auto") +ds = ex.Dataset.from_hub("{{ repo_id }}", settings="auto") ``` This will load the settings and records from the dataset repository and push them to you Argilla server for exploration and annotation. @@ -53,7 +53,7 @@ This will only load the records of the dataset, but not the Argilla settings. This dataset repo contains: -* Dataset records in a format compatible with HuggingFace `datasets`. These records will be loaded automatically when using `rg.Dataset.from_hub` and can be loaded independently using the `datasets` library via `load_dataset`. +* Dataset records in a format compatible with HuggingFace `datasets`. These records will be loaded automatically when using `ex.Dataset.from_hub` and can be loaded independently using the `datasets` library via `load_dataset`. * The [annotation guidelines](#annotation-guidelines) that have been used for building and curating the dataset, if they've been defined in Argilla. * A dataset configuration folder conforming to the Argilla dataset format in `.argilla`. @@ -63,18 +63,18 @@ The dataset is created in Argilla with: **fields**, **questions**, **suggestions The **fields** are the features or text of a dataset's records. For example, the 'text' column of a text classification dataset of the 'prompt' column of an instruction following dataset. -| Field Name | Title | Type | Required | Markdown | -| ---------- | ----- | ---- | -------- | -------- | -{% for field in argilla_fields %}| {{ field.name }} | {{ field.title }} | {{ field.type }} | {{ field.required }} | {{ field.use_markdown }} | +| Field Name | Title | Type | Required | Markdown | +| --------------------------------- | ---------------- | ----------------- | ---------------- | -------------------- | +| {% for field in argilla_fields %} | {{ field.name }} | {{ field.title }} | {{ field.type }} | {{ field.required }} | {{ field.use_markdown }} | {% endfor %} ### Questions The **questions** are the questions that will be asked to the annotators. They can be of different types, such as rating, text, label_selection, multi_label_selection, or ranking. -| Question Name | Title | Type | Required | Description | Values/Labels | -| ------------- | ----- | ---- | -------- | ----------- | ------------- | -{% for question in argilla_questions %}| {{ question.name }} | {{ question.title }} | {{ question.type }} | {{ question.required }} | {{ question.description | default("N/A", true) }} | {% if question.type in ["rating", "label_selection", "multi_label_selection", "ranking"] %}{% if question.type in ["rating", "ranking"] %}{{ question.values | list }}{% else %}{{ question.labels | list }}{% endif %}{% else %}N/A{% endif %} | +| Question Name | Title | Type | Required | Description | Values/Labels | +| --------------------------------------- | ------------------- | -------------------- | ------------------- | ----------------------- | ----------------------- | +| {% for question in argilla_questions %} | {{ question.name }} | {{ question.title }} | {{ question.type }} | {{ question.required }} | {{ question.description | default("N/A", true) }} | {% if question.type in ["rating", "label_selection", "multi_label_selection", "ranking"] %}{% if question.type in ["rating", "ranking"] %}{{ question.values | list }}{% else %}{{ question.labels | list }}{% endif %}{% else %}N/A{% endif %} | {% endfor %} @@ -82,9 +82,9 @@ The **questions** are the questions that will be asked to the annotators. They c ### Metadata The **metadata** is a dictionary that can be used to provide additional information about the dataset record. -| Metadata Name | Title | Type | Values | Visible for Annotators | -| ------------- | ----- | ---- | ------ | ---------------------- | -{% for metadata in argilla_metadata_properties %} | {{ metadata.name }} | {{ metadata.title }} | {{ metadata.type }} | {% if metadata.values %}{{ metadata.values }}{% else %}{{ metadata.min }} - {{ metadata.max }}{% endif %} | {{ metadata.visible_for_annotators }} | +| Metadata Name | Title | Type | Values | Visible for Annotators | +| ------------------------------------------------- | ------------------- | -------------------- | ------------------- | --------------------------------------------------------------------------------------------------------- | +| {% for metadata in argilla_metadata_properties %} | {{ metadata.name }} | {{ metadata.title }} | {{ metadata.type }} | {% if metadata.values %}{{ metadata.values }}{% else %}{{ metadata.min }} - {{ metadata.max }}{% endif %} | {{ metadata.visible_for_annotators }} | {% endfor %} {% endif %} @@ -92,9 +92,9 @@ The **metadata** is a dictionary that can be used to provide additional informat ### Vectors The **vectors** contain a vector representation of the record that can be used in search. -| Vector Name | Title | Dimensions | -|-------------|-------|------------| -{% for vector in argilla_vectors_settings %}| {{ vector.name }} | {{ vector.title }} | [1, {{ vector.dimensions }}] | +| Vector Name | Title | Dimensions | +| -------------------------------------------- | ----------------- | ------------------ | +| {% for vector in argilla_vectors_settings %} | {{ vector.name }} | {{ vector.title }} | [1, {{ vector.dimensions }}] | {% endfor %} {% endif %} diff --git a/extralit/src/extralit/datasets/_resource.py b/extralit/src/extralit/datasets/_resource.py index 959163202..bb00250c7 100644 --- a/extralit/src/extralit/datasets/_resource.py +++ b/extralit/src/extralit/datasets/_resource.py @@ -41,8 +41,8 @@ class Dataset(Resource, HubImportExportMixin, DiskImportExportMixin): name: Name of the dataset. records (DatasetRecords): The records object for the dataset. Used to interact with the records of the dataset by iterating, searching, etc. settings (Settings): The settings object of the dataset. Used to configure the dataset with fields, questions, guidelines, etc. - fields (list): The fields of the dataset, for example the `rg.TextField` of the dataset. Defined in the settings. - questions (list): The questions of the dataset defined in the settings. For example, the `rg.TextQuestion` that you want labelers to answer. + fields (list): The fields of the dataset, for example the `ex.TextField` of the dataset. Defined in the settings. + questions (list): The questions of the dataset defined in the settings. For example, the `ex.TextQuestion` that you want labelers to answer. guidelines (str): The guidelines of the dataset defined in the settings. Used to provide instructions to labelers. allow_extra_metadata (bool): True if extra metadata is allowed, False otherwise. """ diff --git a/extralit/src/extralit/records/_dataset_records.py b/extralit/src/extralit/records/_dataset_records.py index 902e8d219..f4c3d6e5a 100644 --- a/extralit/src/extralit/records/_dataset_records.py +++ b/extralit/src/extralit/records/_dataset_records.py @@ -255,7 +255,7 @@ def log( """Add or update records in a dataset on the server using the provided records. If the record includes a known `id` field, the record will be updated. If the record does not include a known `id` field, the record will be added as a new record. - See `rg.Record` for more information on the record definition. + See `ex.Record` for more information on the record definition. Parameters: records: A list of `Record` objects, a Hugging Face Dataset, or a list of dictionaries representing the records. diff --git a/extralit/src/extralit/responses.py b/extralit/src/extralit/responses.py index 35ade96fc..b4fb26700 100644 --- a/extralit/src/extralit/responses.py +++ b/extralit/src/extralit/responses.py @@ -97,7 +97,7 @@ def serialize(self) -> dict[str, Any]: Examples: ```python - response = rg.Response("label", "negative", user_id=user.id) + response = ex.Response("label", "negative", user_id=user.id) response.serialize() ``` """ diff --git a/extralit/src/extralit/settings/_io/_hub.py b/extralit/src/extralit/settings/_io/_hub.py index e2c78f23b..4df3a4c4c 100644 --- a/extralit/src/extralit/settings/_io/_hub.py +++ b/extralit/src/extralit/settings/_io/_hub.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -144,7 +144,7 @@ def _map_attribute_type(attribute_type): def _is_chat_feature(sub_features): - """Check if the sub_features correspond to an rg.ChatField.""" + """Check if the sub_features correspond to an ex.ChatField.""" return ( "content" in sub_features and "role" in sub_features @@ -176,16 +176,16 @@ def _render_code_snippet(repo_id: str, subset: Optional[str] = None): """ code_block = f""" # 1. Create new questions, fields, vectors, or metadata properties in the settings - settings = rg.Settings.from_hub({from_hub_args}) - settings.questions.add(rg.TextQuestion(name="new_question", required=True)) - dataset = rg.Dataset.from_hub({from_hub_args}, settings=settings) + settings = ex.Settings.from_hub({from_hub_args}) + settings.questions.add(ex.TextQuestion(name="new_question", required=True)) + dataset = ex.Dataset.from_hub({from_hub_args}, settings=settings) # 2. Map the dataset's columns to question, field, or metadata - settings = rg.Settings.from_hub( + settings = ex.Settings.from_hub( {from_hub_args}, feature_mapping={{"": "question"}}, ) - dataset = rg.Dataset.from_hub({from_hub_args}, settings=settings) + dataset = ex.Dataset.from_hub({from_hub_args}, settings=settings) """ console = Console() @@ -209,7 +209,7 @@ def _define_settings_from_features( features (Dict[str, Dict[str, Any]): The features of the dataset. Returns: - rg.Settings: The settings defined from the features. + ex.Settings: The settings defined from the features. """ from extralit import Settings diff --git a/extralit/src/extralit/webhooks/_helpers.py b/extralit/src/extralit/webhooks/_helpers.py index cc29a88f4..581b40b09 100644 --- a/extralit/src/extralit/webhooks/_helpers.py +++ b/extralit/src/extralit/webhooks/_helpers.py @@ -17,7 +17,7 @@ from threading import Thread from typing import TYPE_CHECKING, Optional, Callable, Union, List -import extralit as rg +import extralit as ex from extralit import Extralit from extralit.webhooks._handler import WebhookHandler from extralit.webhooks._resource import Webhook @@ -81,7 +81,7 @@ def webhook_listener( """ - client = client or rg.Extralit._get_default() + client = client or ex.Extralit._get_default() server = server or get_webhook_server() if isinstance(events, str): diff --git a/extralit/tests/integration/conftest.py b/extralit/tests/integration/conftest.py index cc6934c4c..53629f1d2 100644 --- a/extralit/tests/integration/conftest.py +++ b/extralit/tests/integration/conftest.py @@ -15,23 +15,23 @@ import pytest -import extralit as rg +import extralit as ex from extralit import Extralit, Workspace @pytest.fixture(scope="session") -def client() -> rg.Extralit: - client = rg.Extralit() +def client() -> ex.Extralit: + client = ex.Extralit() if len(list(client.workspaces)) == 0: - client.workspaces.add(rg.Workspace(name=f"test_{uuid.uuid4()}")) + client.workspaces.add(ex.Workspace(name=f"test_{uuid.uuid4()}")) yield client _cleanup(client) -def _cleanup(client: rg.Extralit): +def _cleanup(client: ex.Extralit): for dataset in client.datasets: if dataset.name.startswith("test_"): dataset.delete() diff --git a/extralit/tests/integration/test_add_records.py b/extralit/tests/integration/test_add_records.py index 247447910..3c163667b 100644 --- a/extralit/tests/integration/test_add_records.py +++ b/extralit/tests/integration/test_add_records.py @@ -15,7 +15,7 @@ import uuid from datetime import datetime -import extralit as rg +import extralit as ex import pytest from extralit import Extralit, Workspace from extralit._exceptions._responses import RecordResponsesError @@ -44,16 +44,16 @@ def test_add_records(client): "id": uuid.uuid4(), }, ] - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), - rg.ImageField(name="image", required=True), + ex.TextField(name="text"), + ex.ImageField(name="image", required=True), ], questions=[ - rg.TextQuestion(name="comment", use_markdown=False), + ex.TextQuestion(name="comment", use_markdown=False), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, settings=settings, client=client, @@ -80,10 +80,10 @@ def test_add_dict_records(client: Extralit, dataset_name: str): if ds is not None: ds.delete() - ds = rg.Dataset(name=dataset_name, workspace=ws) - ds.settings = rg.Settings( - fields=[rg.TextField(name="text")], - questions=[rg.TextQuestion(name="label")], + ds = ex.Dataset(name=dataset_name, workspace=ws) + ds.settings = ex.Settings( + fields=[ex.TextField(name="text")], + questions=[ex.TextQuestion(name="label")], ) ds.create() @@ -143,16 +143,16 @@ def test_add_records_with_suggestions(client) -> None: "topics.score": [0.9, 0.8, 0.7], }, ] - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="comment", use_markdown=False), - rg.MultiLabelQuestion(name="topics", labels=["topic1", "topic2", "topic3"], labels_order="suggestion"), + ex.TextQuestion(name="comment", use_markdown=False), + ex.MultiLabelQuestion(name="topics", labels=["topic1", "topic2", "topic3"], labels_order="suggestion"), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, settings=settings, client=client, @@ -193,19 +193,19 @@ def test_add_records_with_suggestions_non_existent_question(client) -> None: f"test_add_record_with_suggestions_non_existent_question {datetime.now().strftime('%Y%m%d%H%M%S')}" ) mock_data = [ - rg.Record( - fields={"text": "value"}, suggestions=[rg.Suggestion(question_name="non_existent_question", value="mock")] + ex.Record( + fields={"text": "value"}, suggestions=[ex.Suggestion(question_name="non_existent_question", value="mock")] ) ] - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="comment", use_markdown=False), + ex.TextQuestion(name="comment", use_markdown=False), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, settings=settings, client=client, @@ -234,20 +234,20 @@ def test_add_records_with_responses(client, username: str) -> None: "id": uuid.uuid4(), }, ] - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.LabelQuestion(name="label", labels=["positive", "negative"]), + ex.LabelQuestion(name="label", labels=["positive", "negative"]), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, settings=settings, client=client, ) - user = rg.User( + user = ex.User( username=username, first_name="test", password="testtesttest", @@ -278,21 +278,21 @@ def test_add_records_with_responses_non_existent_question(client, username: str) f"test_add_record_with_responses_non_existent_question {datetime.now().strftime('%Y%m%d%H%M%S')}" ) - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="comment", use_markdown=False), + ex.TextQuestion(name="comment", use_markdown=False), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, settings=settings, client=client, ) dataset.create() - user = rg.User( + user = ex.User( username=username, first_name="test", password="testtesttest", @@ -300,9 +300,9 @@ def test_add_records_with_responses_non_existent_question(client, username: str) ) user.create() mock_data = [ - rg.Record( + ex.Record( fields={"text": "value"}, - responses=[rg.Response(question_name="non_existent_question", value="mock", user_id=user.id)], + responses=[ex.Response(question_name="non_existent_question", value="mock", user_id=user.id)], ) ] with pytest.raises(RecordResponsesError, match="Argilla SDK error: RecordResponsesError: Record response"): @@ -331,18 +331,18 @@ def test_add_records_with_responses_and_suggestions(client, username: str) -> No "id": uuid.uuid4(), }, ] - settings = rg.Settings( - fields=[rg.TextField(name="text")], + settings = ex.Settings( + fields=[ex.TextField(name="text")], questions=[ - rg.LabelQuestion(name="label", labels=["positive", "negative"]), + ex.LabelQuestion(name="label", labels=["positive", "negative"]), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, settings=settings, client=client, ) - user = rg.User( + user = ex.User( username=username, first_name="test", password="testtesttest", @@ -394,20 +394,20 @@ def test_add_records_with_fields_mapped(client, username: str) -> None: "score": 0.5, }, ] - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.LabelQuestion(name="label", labels=["positive", "negative"]), + ex.LabelQuestion(name="label", labels=["positive", "negative"]), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, settings=settings, client=client, ) - user = rg.User( + user = ex.User( username=username, first_name="test", password="testtesttest", @@ -460,20 +460,20 @@ def test_add_records_with_id_mapped(client, username: str) -> None: "uuid": uuid.uuid4(), }, ] - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.LabelQuestion(name="label", labels=["positive", "negative"]), + ex.LabelQuestion(name="label", labels=["positive", "negative"]), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, settings=settings, client=client, ) - user = rg.User( + user = ex.User( username=username, first_name="test", password="testtesttest", @@ -501,44 +501,44 @@ def test_add_record_resources(client): user_id = client.users[0].id mock_dataset_name = f"test_add_records{datetime.now().strftime('%Y%m%d%H%M%S')}" mock_resources = [ - rg.Record( + ex.Record( fields={"text": "Hello World, how are you?"}, suggestions=[ - rg.Suggestion("label", "positive", score=0.9), - rg.Suggestion("topics", ["topic1", "topic2"], score=[0.9, 0.8]), + ex.Suggestion("label", "positive", score=0.9), + ex.Suggestion("topics", ["topic1", "topic2"], score=[0.9, 0.8]), ], - responses=[rg.Response("label", "positive", user_id=user_id)], + responses=[ex.Response("label", "positive", user_id=user_id)], id=str(uuid.uuid4()), ), - rg.Record( + ex.Record( fields={"text": "Hello World, how are you?"}, suggestions=[ - rg.Suggestion("label", "positive", score=0.9), - rg.Suggestion("topics", ["topic1", "topic2"], score=[0.9, 0.8]), + ex.Suggestion("label", "positive", score=0.9), + ex.Suggestion("topics", ["topic1", "topic2"], score=[0.9, 0.8]), ], - responses=[rg.Response("label", "positive", user_id=user_id)], + responses=[ex.Response("label", "positive", user_id=user_id)], id=str(uuid.uuid4()), ), - rg.Record( + ex.Record( fields={"text": "Hello World, how are you?"}, suggestions=[ - rg.Suggestion("label", "positive", score=0.9), - rg.Suggestion("topics", ["topic1", "topic2"], score=[0.9, 0.8]), + ex.Suggestion("label", "positive", score=0.9), + ex.Suggestion("topics", ["topic1", "topic2"], score=[0.9, 0.8]), ], - responses=[rg.Response("label", "positive", user_id=user_id)], + responses=[ex.Response("label", "positive", user_id=user_id)], id=str(uuid.uuid4()), ), ] - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.LabelQuestion(name="label", labels=["positive", "negative"]), - rg.MultiLabelQuestion(name="topics", labels=["topic1", "topic2", "topic3"]), + ex.LabelQuestion(name="label", labels=["positive", "negative"]), + ex.MultiLabelQuestion(name="topics", labels=["topic1", "topic2", "topic3"]), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, settings=settings, client=client, @@ -569,9 +569,9 @@ def test_add_record_resources(client): assert dataset_records[2].suggestions["topics"].score == [0.9, 0.8] -def test_add_record_with_chat_field(client: rg.Extralit, dataset_name: str): +def test_add_record_with_chat_field(client: ex.Extralit, dataset_name: str): mock_resources = [ - rg.Record( + ex.Record( fields={ "chat": [ { @@ -585,7 +585,7 @@ def test_add_record_with_chat_field(client: rg.Extralit, dataset_name: str): ] }, ), - rg.Record( + ex.Record( fields={ "chat": [ { @@ -600,15 +600,15 @@ def test_add_record_with_chat_field(client: rg.Extralit, dataset_name: str): }, ), ] - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.ChatField(name="chat", required=False), + ex.ChatField(name="chat", required=False), ], questions=[ - rg.TextQuestion(name="comment", use_markdown=False), + ex.TextQuestion(name="comment", use_markdown=False), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=dataset_name, settings=settings, client=client, @@ -620,30 +620,30 @@ def test_add_record_with_chat_field(client: rg.Extralit, dataset_name: str): assert dataset.name == dataset_name -def test_add_records_with_optional_chat_field(client: rg.Extralit, dataset_name: str): +def test_add_records_with_optional_chat_field(client: ex.Extralit, dataset_name: str): mock_resources = [ - rg.Record( + ex.Record( fields={ "text": "This a text", "chat": None, }, ), - rg.Record( + ex.Record( fields={ "text": "This a text", }, ), ] - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text", required=True), - rg.ChatField(name="chat", required=False), + ex.TextField(name="text", required=True), + ex.ChatField(name="chat", required=False), ], questions=[ - rg.TextQuestion(name="comment", use_markdown=False), + ex.TextQuestion(name="comment", use_markdown=False), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=dataset_name, settings=settings, client=client, @@ -671,20 +671,20 @@ def test_add_records_with_responses_and_same_schema_name(client: Extralit, usern "label": "negative", }, ] - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.LabelQuestion(name="label", labels=["positive", "negative"]), + ex.LabelQuestion(name="label", labels=["positive", "negative"]), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, settings=settings, client=client, ) - user = rg.User( + user = ex.User( username=username, first_name="test", password="testtesttest", @@ -709,21 +709,21 @@ def test_add_records_with_responses_and_same_schema_name(client: Extralit, usern def test_add_records_objects_with_responses(client: Extralit, username: str): mock_dataset_name = f"test_modify_record_responses_locally {uuid.uuid4()}" - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.LabelQuestion(name="label", labels=["positive", "negative"]), - rg.TextQuestion(name="comment", use_markdown=False, required=False), + ex.LabelQuestion(name="label", labels=["positive", "negative"]), + ex.TextQuestion(name="comment", use_markdown=False, required=False), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, settings=settings, client=client, ) - user = rg.User( + user = ex.User( username=username, first_name="test", password="testtesttest", @@ -733,24 +733,24 @@ def test_add_records_objects_with_responses(client: Extralit, username: str): dataset.create() records = [ - rg.Record( + ex.Record( fields={"text": "Hello World, how are you?"}, - responses=[rg.Response("label", "negative", user_id=user.id, status="submitted")], + responses=[ex.Response("label", "negative", user_id=user.id, status="submitted")], id=str(uuid.uuid4()), ), - rg.Record( + ex.Record( fields={"text": "Hello World, how are you?"}, - responses=[rg.Response("label", "positive", user_id=user.id, status="discarded")], + responses=[ex.Response("label", "positive", user_id=user.id, status="discarded")], id=str(uuid.uuid4()), ), - rg.Record( + ex.Record( fields={"text": "Hello World, how are you?"}, - responses=[rg.Response("comment", "The comment", user_id=user.id, status="draft")], + responses=[ex.Response("comment", "The comment", user_id=user.id, status="draft")], id=str(uuid.uuid4()), ), - rg.Record( + ex.Record( fields={"text": "Hello World, how are you?"}, - responses=[rg.Response("comment", "The comment", user_id=user.id)], + responses=[ex.Response("comment", "The comment", user_id=user.id)], id=str(uuid.uuid4()), ), ] @@ -778,12 +778,12 @@ def test_add_records_objects_with_responses(client: Extralit, username: str): def test_add_records_with_boolean_metadata(client: Extralit, dataset_name: str): - settings = rg.Settings( - fields=[rg.TextField(name="text")], - metadata=[rg.TermsMetadataProperty(name="boolean", options=[True, False])], - questions=[rg.TextQuestion(name="comment", use_markdown=False)], + settings = ex.Settings( + fields=[ex.TextField(name="text")], + metadata=[ex.TermsMetadataProperty(name="boolean", options=[True, False])], + questions=[ex.TextQuestion(name="comment", use_markdown=False)], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=dataset_name, settings=settings, client=client, diff --git a/extralit/tests/integration/test_dataset_workspace.py b/extralit/tests/integration/test_dataset_workspace.py index 83016d743..e5a1aa09d 100644 --- a/extralit/tests/integration/test_dataset_workspace.py +++ b/extralit/tests/integration/test_dataset_workspace.py @@ -15,21 +15,21 @@ import pytest -import extralit as rg +import extralit as ex from extralit._exceptions import NotFoundError @pytest.fixture -def dataset(client: rg.Extralit, dataset_name: str): +def dataset(client: ex.Extralit, dataset_name: str): ws = client.workspaces[0] - dataset = rg.Dataset( + dataset = ex.Dataset( name=dataset_name, - settings=rg.Settings( + settings=ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="response"), + ex.TextQuestion(name="response"), ], ), workspace=ws, @@ -40,59 +40,59 @@ def dataset(client: rg.Extralit, dataset_name: str): dataset.delete() -def test_dataset_with_workspace(client: rg.Extralit, dataset_name: str): +def test_dataset_with_workspace(client: ex.Extralit, dataset_name: str): ws = client.workspaces[0] - dataset = rg.Dataset( + dataset = ex.Dataset( name=dataset_name, - settings=rg.Settings( + settings=ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="response"), + ex.TextQuestion(name="response"), ], ), workspace=ws, client=client, ) dataset.create() - assert isinstance(dataset, rg.Dataset) + assert isinstance(dataset, ex.Dataset) assert client.api.datasets.exists(dataset.id) assert dataset.workspace == ws -def test_dataset_with_workspace_name(client: rg.Extralit, dataset_name: str): +def test_dataset_with_workspace_name(client: ex.Extralit, dataset_name: str): ws = client.workspaces[0] - dataset = rg.Dataset( + dataset = ex.Dataset( name=dataset_name, - settings=rg.Settings( + settings=ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="response"), + ex.TextQuestion(name="response"), ], ), workspace=ws.name, client=client, ) dataset.create() - assert isinstance(dataset, rg.Dataset) + assert isinstance(dataset, ex.Dataset) assert dataset.id is not None assert client.api.datasets.exists(dataset.id) assert dataset.workspace == ws -def test_dataset_with_incorrect_workspace_name(client: rg.Extralit, dataset_name: str): +def test_dataset_with_incorrect_workspace_name(client: ex.Extralit, dataset_name: str): with pytest.raises(expected_exception=NotFoundError): - rg.Dataset( + ex.Dataset( name=dataset_name, - settings=rg.Settings( + settings=ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="response"), + ex.TextQuestion(name="response"), ], ), workspace=f"non_existing_workspace", @@ -100,40 +100,40 @@ def test_dataset_with_incorrect_workspace_name(client: rg.Extralit, dataset_name ).create() -def test_dataset_with_default_workspace(client: rg.Extralit, dataset_name: str): - dataset = rg.Dataset( +def test_dataset_with_default_workspace(client: ex.Extralit, dataset_name: str): + dataset = ex.Dataset( name=dataset_name, - settings=rg.Settings( + settings=ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="response"), + ex.TextQuestion(name="response"), ], ), client=client, ) dataset.create() - assert isinstance(dataset, rg.Dataset) + assert isinstance(dataset, ex.Dataset) assert client.api.datasets.exists(dataset.id) assert dataset.workspace == client.workspaces[0] -def test_retrieving_dataset(client: rg.Extralit, dataset: rg.Dataset): +def test_retrieving_dataset(client: ex.Extralit, dataset: ex.Dataset): ws = client.workspaces[0] dataset = client.datasets(dataset.name, workspace=ws) - assert isinstance(dataset, rg.Dataset) + assert isinstance(dataset, ex.Dataset) assert client.api.datasets.exists(dataset.id) -def test_retrieving_dataset_on_name(client: rg.Extralit, dataset: rg.Dataset): +def test_retrieving_dataset_on_name(client: ex.Extralit, dataset: ex.Dataset): ws = client.workspaces[0] dataset = client.datasets(dataset.name, workspace=ws.name) - assert isinstance(dataset, rg.Dataset) + assert isinstance(dataset, ex.Dataset) assert client.api.datasets.exists(dataset.id) -def test_retrieving_dataset_on_default(client: rg.Extralit, dataset: rg.Dataset): +def test_retrieving_dataset_on_default(client: ex.Extralit, dataset: ex.Dataset): dataset = client.datasets(dataset.name) - assert isinstance(dataset, rg.Dataset) + assert isinstance(dataset, ex.Dataset) assert client.api.datasets.exists(dataset.id) diff --git a/extralit/tests/integration/test_delete_records.py b/extralit/tests/integration/test_delete_records.py index 11e09a91d..fd9699d89 100644 --- a/extralit/tests/integration/test_delete_records.py +++ b/extralit/tests/integration/test_delete_records.py @@ -16,23 +16,23 @@ import pytest -import extralit as rg +import extralit as ex @pytest.fixture -def dataset(client: rg.Extralit) -> rg.Dataset: +def dataset(client: ex.Extralit) -> ex.Dataset: workspace = client.workspaces[0] mock_dataset_name = f"test_delete_records_{uuid.uuid1()}" - settings = rg.Settings( + settings = ex.Settings( allow_extra_metadata=True, fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="label", use_markdown=False), + ex.TextQuestion(name="label", use_markdown=False), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=mock_dataset_name, workspace=workspace.name, settings=settings, @@ -42,7 +42,7 @@ def dataset(client: rg.Extralit) -> rg.Dataset: return dataset -def test_delete_records(client: rg.Extralit, dataset: rg.Dataset): +def test_delete_records(client: ex.Extralit, dataset: ex.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -73,7 +73,7 @@ def test_delete_records(client: rg.Extralit, dataset: rg.Dataset): assert record.id not in [record.id for record in records_to_delete] -def test_delete_single_record(client: rg.Extralit, dataset: rg.Dataset): +def test_delete_single_record(client: ex.Extralit, dataset: ex.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -103,8 +103,8 @@ def test_delete_single_record(client: rg.Extralit, dataset: rg.Dataset): assert mock_data[1]["id"] not in [record.id for record in dataset_records] -def test_delete_records_with_batch_support(client: rg.Extralit, dataset: rg.Dataset): - records = [rg.Record(id=uuid.uuid4(), fields={"text": f"Field for record {i}"}) for i in range(0, 1000)] +def test_delete_records_with_batch_support(client: ex.Extralit, dataset: ex.Dataset): + records = [ex.Record(id=uuid.uuid4(), fields={"text": f"Field for record {i}"}) for i in range(0, 1000)] dataset.records.log(records) all_records = list(dataset.records) diff --git a/extralit/tests/integration/test_export_dataset.py b/extralit/tests/integration/test_export_dataset.py index eb0565196..583e3924e 100644 --- a/extralit/tests/integration/test_export_dataset.py +++ b/extralit/tests/integration/test_export_dataset.py @@ -18,7 +18,7 @@ from tempfile import TemporaryDirectory from typing import Any, List -import extralit as rg +import extralit as ex import pytest from extralit._exceptions import SettingsError from datasets import load_dataset @@ -29,18 +29,18 @@ @pytest.fixture -def dataset(client, dataset_name: str) -> rg.Dataset: - settings = rg.Settings( +def dataset(client, dataset_name: str) -> ex.Dataset: + settings = ex.Settings( fields=[ - rg.TextField(name="text"), - rg.ImageField(name="image"), - rg.ChatField(name="chat"), + ex.TextField(name="text"), + ex.ImageField(name="image"), + ex.ChatField(name="chat"), ], questions=[ - rg.LabelQuestion(name="label", labels=["positive", "negative"]), + ex.LabelQuestion(name="label", labels=["positive", "negative"]), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=dataset_name, settings=settings, client=client, @@ -101,14 +101,14 @@ def token(): @pytest.mark.parametrize("with_records_export", [True, False]) class TestDiskImportExportMixin: def test_export_dataset_to_disk( - self, dataset: rg.Dataset, mock_data: List[dict[str, Any]], with_records_export: bool + self, dataset: ex.Dataset, mock_data: List[dict[str, Any]], with_records_export: bool ): dataset.records.log(records=mock_data) with TemporaryDirectory() as temp_dir: output_dir = dataset.to_disk(path=temp_dir, with_records=with_records_export) - records_path = os.path.join(output_dir, rg.Dataset._DEFAULT_RECORDS_PATH) + records_path = os.path.join(output_dir, ex.Dataset._DEFAULT_RECORDS_PATH) if with_records_export: assert os.path.exists(records_path) with open(records_path, "r") as f: @@ -120,12 +120,12 @@ def test_export_dataset_to_disk( else: assert not os.path.exists(records_path) - settings_path = os.path.join(output_dir, rg.Dataset._DEFAULT_SETTINGS_PATH) + settings_path = os.path.join(output_dir, ex.Dataset._DEFAULT_SETTINGS_PATH) assert os.path.exists(settings_path) with open(settings_path, "r") as f: exported_settings = json.load(f) - dataset_path = os.path.join(output_dir, rg.Dataset._DEFAULT_DATASET_PATH) + dataset_path = os.path.join(output_dir, ex.Dataset._DEFAULT_DATASET_PATH) assert os.path.exists(dataset_path) with open(dataset_path, "r") as f: exported_dataset = json.load(f) @@ -139,7 +139,7 @@ def test_export_dataset_to_disk( @pytest.mark.parametrize("with_records_import", [True, False]) def test_import_dataset_from_disk( self, - dataset: rg.Dataset, + dataset: ex.Dataset, client, mock_data: List[dict[str, Any]], with_records_export: bool, @@ -149,7 +149,7 @@ def test_import_dataset_from_disk( with TemporaryDirectory() as temp_dir: output_dir = dataset.to_disk(path=temp_dir, with_records=with_records_export) - new_dataset = rg.Dataset.from_disk( + new_dataset = ex.Dataset.from_disk( output_dir, client=client, with_records=with_records_import, name=f"test_{uuid.uuid4()}" ) @@ -186,7 +186,7 @@ def test_import_dataset_from_disk( @pytest.mark.parametrize("with_records_export", [True, False]) class TestHubImportExportMixin: def test_export_dataset_to_hub( - self, token: str, dataset: rg.Dataset, mock_data: List[dict[str, Any]], with_records_export: bool + self, token: str, dataset: ex.Dataset, mock_data: List[dict[str, Any]], with_records_export: bool ): repo_id = f"extralit-dev/test_export_dataset_to_hub_with_records_{with_records_export}" dataset.records.log(records=mock_data) @@ -199,7 +199,7 @@ def test_export_dataset_to_hub( def test_import_dataset_from_hub( self, token: str, - dataset: rg.Dataset, + dataset: ex.Dataset, client, mock_data: List[dict[str, Any]], with_records_export: bool, @@ -219,7 +219,7 @@ def test_import_dataset_from_hub( match="Trying to load a dataset `with_records=True` but dataset does not contain any records.", ): try: - new_dataset = rg.Dataset.from_hub( + new_dataset = ex.Dataset.from_hub( repo_id=repo_id, client=client, with_records=with_records_import, @@ -231,7 +231,7 @@ def test_import_dataset_from_hub( pytest.skip(f"Skipping test due to Hugging Face Hub connection error: {e}") else: try: - new_dataset = rg.Dataset.from_hub( + new_dataset = ex.Dataset.from_hub( repo_id=repo_id, client=client, with_records=with_records_import, @@ -258,8 +258,8 @@ def test_import_dataset_from_hub( def test_import_dataset_from_hub_using_settings( self, token: str, - dataset: rg.Dataset, - client: rg.Extralit, + dataset: ex.Dataset, + client: ex.Extralit, mock_data: List[dict[str, Any]], with_records_export: bool, with_records_import: bool, @@ -272,13 +272,13 @@ def test_import_dataset_from_hub_using_settings( dataset.to_hub(repo_id=repo_id, with_records=with_records_export, token=token) except (HfHubHTTPError, ReadTimeout, ConnectTimeout, HTTPError, RequestException) as e: pytest.skip(f"Skipping test due to Hugging Face Hub connection error: {e}") - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.LabelQuestion(name="label", labels=["positive", "negative"]), - rg.LabelQuestion(name="extra_label", labels=["extra_positive", "extra_negative"]), + ex.LabelQuestion(name="label", labels=["positive", "negative"]), + ex.LabelQuestion(name="extra_label", labels=["extra_positive", "extra_negative"]), ], ) if with_records_import and not with_records_export: @@ -287,7 +287,7 @@ def test_import_dataset_from_hub_using_settings( match="Trying to load a dataset `with_records=True` but dataset does not contain any records.", ): try: - new_dataset = rg.Dataset.from_hub( + new_dataset = ex.Dataset.from_hub( repo_id=repo_id, client=client, with_records=with_records_import, @@ -299,7 +299,7 @@ def test_import_dataset_from_hub_using_settings( pytest.skip(f"Skipping test due to Hugging Face Hub connection error: {e}") else: try: - new_dataset = rg.Dataset.from_hub( + new_dataset = ex.Dataset.from_hub( repo_id=repo_id, client=client, with_records=with_records_import, @@ -328,8 +328,8 @@ def test_import_dataset_from_hub_using_settings( def test_import_dataset_from_hub_using_wrong_settings( self, token: str, - dataset: rg.Dataset, - client: rg.Extralit, + dataset: ex.Dataset, + client: ex.Extralit, mock_data: List[dict[str, Any]], with_records_export: bool, ): @@ -340,32 +340,32 @@ def test_import_dataset_from_hub_using_wrong_settings( dataset.to_hub(repo_id=repo_id, with_records=with_records_export, token=token) except (HfHubHTTPError, ReadTimeout, ConnectTimeout, HTTPError, RequestException) as e: pytest.skip(f"Skipping test due to Hugging Face Hub connection error: {e}") - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.RatingQuestion(name="label", values=[1, 2, 3, 4, 5]), + ex.RatingQuestion(name="label", values=[1, 2, 3, 4, 5]), ], ) if with_records_export: with pytest.raises(SettingsError): try: - rg.Dataset.from_hub( + ex.Dataset.from_hub( repo_id=repo_id, client=client, token=token, settings=settings, name=mock_dataset_name ) except (HfHubHTTPError, ReadTimeout, ConnectTimeout, HTTPError, RequestException) as e: pytest.skip(f"Skipping test due to Hugging Face Hub connection error: {e}") else: try: - rg.Dataset.from_hub( + ex.Dataset.from_hub( repo_id=repo_id, client=client, token=token, settings=settings, name=mock_dataset_name ) except (HfHubHTTPError, ReadTimeout, ConnectTimeout, HTTPError, RequestException) as e: pytest.skip(f"Skipping test due to Hugging Face Hub connection error: {e}") def test_import_dataset_from_hub_with_automatic_settings( - self, token: str, dataset: rg.Dataset, client, mock_data: List[dict[str, Any]], with_records_export: bool + self, token: str, dataset: ex.Dataset, client, mock_data: List[dict[str, Any]], with_records_export: bool ): repo_id = f"extralit-dev/test_import_dataset_from_hub_with_automatic_settings_{with_records_export}" mock_dataset_name = f"test_import_dataset_from_hub_with_automatic_settings_{uuid.uuid4()}" @@ -373,7 +373,7 @@ def test_import_dataset_from_hub_with_automatic_settings( try: mocked_external_dataset = load_dataset(path=repo_id, split="train") - rg_dataset = rg.Dataset.from_hub( + rg_dataset = ex.Dataset.from_hub( repo_id=repo_id, client=client, token=token, diff --git a/extralit/tests/integration/test_export_records.py b/extralit/tests/integration/test_export_records.py index 3c85b2b18..f26d3dcdf 100644 --- a/extralit/tests/integration/test_export_records.py +++ b/extralit/tests/integration/test_export_records.py @@ -21,23 +21,23 @@ from PIL import Image from datasets import Dataset as HFDataset -import extralit as rg +import extralit as ex from extralit import Extralit @pytest.fixture -def dataset(client, dataset_name: str) -> rg.Dataset: - settings = rg.Settings( +def dataset(client, dataset_name: str) -> ex.Dataset: + settings = ex.Settings( fields=[ - rg.TextField(name="text"), - rg.ChatField(name="chat"), - rg.ImageField(name="image"), + ex.TextField(name="text"), + ex.ChatField(name="chat"), + ex.ImageField(name="image"), ], questions=[ - rg.TextQuestion(name="label", use_markdown=False), + ex.TextQuestion(name="label", use_markdown=False), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=dataset_name, settings=settings, client=client, @@ -89,7 +89,7 @@ def mock_data(): ] -def test_export_records_dict_flattened(client: Extralit, dataset: rg.Dataset, mock_data): +def test_export_records_dict_flattened(client: Extralit, dataset: ex.Dataset, mock_data): dataset.records.log(records=mock_data) exported_records = dataset.records.to_dict(flatten=True) assert isinstance(exported_records, dict) @@ -99,7 +99,7 @@ def test_export_records_dict_flattened(client: Extralit, dataset: rg.Dataset, mo assert exported_records["text"] == ["Hello World, how are you?"] * 3 -def test_export_records_list_flattened(client: Extralit, dataset: rg.Dataset, mock_data): +def test_export_records_list_flattened(client: Extralit, dataset: ex.Dataset, mock_data): dataset.records.log(records=mock_data) exported_records = dataset.records.to_list(flatten=True) assert len(exported_records) == len(mock_data) @@ -113,9 +113,9 @@ def test_export_records_list_flattened(client: Extralit, dataset: rg.Dataset, mo assert exported_records[0]["label.suggestion.score"] is None -def test_export_record_list_with_filtered_records(client: Extralit, dataset: rg.Dataset, mock_data): +def test_export_record_list_with_filtered_records(client: Extralit, dataset: ex.Dataset, mock_data): dataset.records.log(records=mock_data) - exported_records = dataset.records(query=rg.Query(query="hello")).to_list(flatten=True) + exported_records = dataset.records(query=ex.Query(query="hello")).to_list(flatten=True) assert len(exported_records) == len(mock_data) assert isinstance(exported_records, list) assert isinstance(exported_records[0], dict) @@ -127,7 +127,7 @@ def test_export_record_list_with_filtered_records(client: Extralit, dataset: rg. assert exported_records[0]["label.suggestion.score"] is None -def test_export_records_list_nested(client: Extralit, dataset: rg.Dataset, mock_data): +def test_export_records_list_nested(client: Extralit, dataset: ex.Dataset, mock_data): dataset.records.log(records=mock_data) exported_records = dataset.records.to_list(flatten=False) assert len(exported_records) == len(mock_data) @@ -136,7 +136,7 @@ def test_export_records_list_nested(client: Extralit, dataset: rg.Dataset, mock_ assert exported_records[0]["suggestions"]["label"]["score"] is None -def test_export_records_dict_nested(client: Extralit, dataset: rg.Dataset, mock_data): +def test_export_records_dict_nested(client: Extralit, dataset: ex.Dataset, mock_data): dataset.records.log(records=mock_data) exported_records = dataset.records.to_dict(flatten=False) assert isinstance(exported_records, dict) @@ -144,7 +144,7 @@ def test_export_records_dict_nested(client: Extralit, dataset: rg.Dataset, mock_ assert exported_records["suggestions"][0]["label"]["value"] == "positive" -def test_export_records_dict_nested_orient_index(client: Extralit, dataset: rg.Dataset, mock_data): +def test_export_records_dict_nested_orient_index(client: Extralit, dataset: ex.Dataset, mock_data): dataset.records.log(records=mock_data) exported_records = dataset.records.to_dict(flatten=False, orient="index") assert isinstance(exported_records, dict) @@ -155,7 +155,7 @@ def test_export_records_dict_nested_orient_index(client: Extralit, dataset: rg.D assert exported_record["id"] == str(mock_record["id"]) -def test_export_records_to_json(dataset: rg.Dataset, mock_data): +def test_export_records_to_json(dataset: ex.Dataset, mock_data): dataset.records.log(records=mock_data) with TemporaryDirectory() as temp_dir: @@ -168,7 +168,7 @@ def test_export_records_to_json(dataset: rg.Dataset, mock_data): assert exported_records[0]["suggestions"]["label"]["value"] == "positive" -def test_export_records_from_json(dataset: rg.Dataset, mock_data): +def test_export_records_from_json(dataset: ex.Dataset, mock_data): dataset.records.log(records=mock_data) with TemporaryDirectory() as temp_dir: @@ -182,7 +182,7 @@ def test_export_records_from_json(dataset: rg.Dataset, mock_data): assert record.id == str(mock_data[i]["id"]) -def test_export_records_to_hf_datasets(dataset: rg.Dataset, mock_data): +def test_export_records_to_hf_datasets(dataset: ex.Dataset, mock_data): dataset.records.log(records=mock_data) hf_dataset = dataset.records.to_datasets() @@ -205,7 +205,7 @@ def test_export_records_to_hf_datasets(dataset: rg.Dataset, mock_data): assert chat[0]["content"] == "Hello World, how are you?" -def test_import_records_from_hf_dataset(dataset: rg.Dataset, mock_data) -> None: +def test_import_records_from_hf_dataset(dataset: ex.Dataset, mock_data) -> None: mock_hf_dataset = HFDataset.from_list(mock_data) dataset.records.log(records=mock_hf_dataset) diff --git a/extralit/tests/integration/test_import_features.py b/extralit/tests/integration/test_import_features.py index 37c71b4e6..45de12f3b 100644 --- a/extralit/tests/integration/test_import_features.py +++ b/extralit/tests/integration/test_import_features.py @@ -16,7 +16,7 @@ import uuid from typing import Any, List, Generator -import extralit as rg +import extralit as ex import pytest from datasets import Dataset as HFDataset, Value, Features, ClassLabel from huggingface_hub.errors import HfHubHTTPError @@ -25,17 +25,17 @@ @pytest.fixture -def dataset(client, dataset_name: str) -> Generator[rg.Dataset, None, None]: - settings = rg.Settings( +def dataset(client, dataset_name: str) -> Generator[ex.Dataset, None, None]: + settings = ex.Settings( fields=[ - rg.TextField(name="text"), - rg.ImageField(name="image"), + ex.TextField(name="text"), + ex.ImageField(name="image"), ], questions=[ - rg.LabelQuestion(name="label", labels=["positive", "negative"]), + ex.LabelQuestion(name="label", labels=["positive", "negative"]), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=dataset_name, settings=settings, client=client, @@ -77,7 +77,7 @@ def token(): @pytest.mark.skipif(not os.getenv("HF_TOKEN_ARGILLA_INTERNAL_TESTING"), reason="No HF token provided") class TestImportFeaturesFromHub: def test_import_records_from_datasets_with_classlabel( - self, token: str, dataset: rg.Dataset, client, mock_data: List[dict[str, Any]] + self, token: str, dataset: ex.Dataset, client, mock_data: List[dict[str, Any]] ): repo_id = f"extralit-dev/test_import_dataset_from_hub_with_classlabel_{uuid.uuid4()}" @@ -110,10 +110,10 @@ def test_import_records_from_datasets_with_classlabel( assert exported_dataset.features["label.suggestion"].names == ["positive", "negative"] assert exported_dataset["label.suggestion"] == [0, 1, 0] - def test_import_from_hub_with_upper_case_columns(self, client: rg.Extralit, token: str, dataset_name: str): + def test_import_from_hub_with_upper_case_columns(self, client: ex.Extralit, token: str, dataset_name: str): created_dataset = None try: - created_dataset = rg.Dataset.from_hub( + created_dataset = ex.Dataset.from_hub( "extralit-dev/test_import_from_hub_with_upper_case_columns", token=token, name=dataset_name, @@ -131,10 +131,10 @@ def test_import_from_hub_with_upper_case_columns(self, client: rg.Extralit, toke assert created_dataset.settings.fields[0].name == "Text" assert list(created_dataset.records)[0].fields["Text"] == "Hello World, how are you?" - def test_import_from_hub_with_unlabelled_classes(self, client: rg.Extralit, token: str, dataset_name: str): + def test_import_from_hub_with_unlabelled_classes(self, client: ex.Extralit, token: str, dataset_name: str): created_dataset = None try: - created_dataset = rg.Dataset.from_hub( + created_dataset = ex.Dataset.from_hub( "extralit-dev/test_import_from_hub_with_unlabelled_classes", token=token, name=dataset_name, @@ -151,10 +151,10 @@ def test_import_from_hub_with_unlabelled_classes(self, client: rg.Extralit, toke assert created_dataset.settings.fields[0].name == "Text" assert list(created_dataset.records)[0].fields["Text"] == "Hello World, how are you?" - def test_import_with_row_id_as_record_id(self, client: rg.Extralit, token: str, dataset_name: str): + def test_import_with_row_id_as_record_id(self, client: ex.Extralit, token: str, dataset_name: str): created_dataset = None try: - created_dataset = rg.Dataset.from_hub( + created_dataset = ex.Dataset.from_hub( "extralit-dev/test_import_from_hub_with_unlabelled_classes", token=token, name=dataset_name, diff --git a/extralit/tests/integration/test_manage_metadata.py b/extralit/tests/integration/test_manage_metadata.py index e293cceb0..450226be9 100644 --- a/extralit/tests/integration/test_manage_metadata.py +++ b/extralit/tests/integration/test_manage_metadata.py @@ -14,7 +14,7 @@ import pytest -import extralit as rg +import extralit as ex from extralit import Extralit, Dataset, Settings, TextField, Workspace, LabelQuestion @@ -24,7 +24,7 @@ def dataset_with_metadata(client: Extralit, workspace: Workspace, dataset_name: fields=[TextField(name="text")], questions=[LabelQuestion(name="label", labels=["positive", "negative"])], metadata=[ - rg.TermsMetadataProperty(name="category", options=["A", "B", "C"]), + ex.TermsMetadataProperty(name="category", options=["A", "B", "C"]), ], ) dataset = Dataset( @@ -43,7 +43,7 @@ def test_create_dataset_with_metadata(client: Extralit, workspace: Workspace, da fields=[TextField(name="text")], questions=[LabelQuestion(name="label", labels=["positive", "negative"])], metadata=[ - rg.TermsMetadataProperty(name="category", options=["A", "B", "C"]), + ex.TermsMetadataProperty(name="category", options=["A", "B", "C"]), ], ) dataset = Dataset( @@ -61,10 +61,10 @@ def test_create_dataset_with_metadata(client: Extralit, workspace: Workspace, da @pytest.mark.parametrize( "min, max, type", [ - (0, 1, rg.FloatMetadataProperty), - (None, None, rg.FloatMetadataProperty), - (0, 1, rg.IntegerMetadataProperty), - (None, None, rg.IntegerMetadataProperty), + (0, 1, ex.FloatMetadataProperty), + (None, None, ex.FloatMetadataProperty), + (0, 1, ex.IntegerMetadataProperty), + (None, None, ex.IntegerMetadataProperty), ], ) def test_create_dataset_with_numerical_metadata( diff --git a/extralit/tests/integration/test_query_records.py b/extralit/tests/integration/test_query_records.py index 121bc1675..1b5a36b1f 100644 --- a/extralit/tests/integration/test_query_records.py +++ b/extralit/tests/integration/test_query_records.py @@ -17,7 +17,7 @@ import pytest -import extralit as rg +import extralit as ex from extralit import Extralit, Dataset, Settings, TextField, Workspace, LabelQuestion @@ -83,24 +83,24 @@ def test_query_records_by_suggestion_value(client: Extralit, dataset: Dataset): dataset.records.log(data) - query = rg.Query(filter=rg.Filter([("label", "==", "positive")])) + query = ex.Query(filter=ex.Filter([("label", "==", "positive")])) records = list(dataset.records(query=query)) assert len(records) == 2 assert records[0].id == "1" assert records[1].id == "3" - query = rg.Query(filter=rg.Filter(("label", "==", "negative"))) + query = ex.Query(filter=ex.Filter(("label", "==", "negative"))) records = list(dataset.records(query=query)) assert len(records) == 1 assert records[0].id == "2" - query = rg.Query(filter=rg.Filter(("label", "in", ["positive", "negative"]))) + query = ex.Query(filter=ex.Filter(("label", "in", ["positive", "negative"]))) records = list(dataset.records(query=query)) assert len(records) == 3 - test_filter = rg.Filter([("label", "==", "positive"), ("label", "==", "negative")]) - query = rg.Query(filter=test_filter) + test_filter = ex.Filter([("label", "==", "positive"), ("label", "==", "negative")]) + query = ex.Query(filter=test_filter) records = list(dataset.records(query=query)) assert len(records) == 0 diff --git a/extralit/tests/integration/test_ranking_questions.py b/extralit/tests/integration/test_ranking_questions.py index 65e4ef441..3ce5de1c2 100644 --- a/extralit/tests/integration/test_ranking_questions.py +++ b/extralit/tests/integration/test_ranking_questions.py @@ -15,22 +15,22 @@ import pytest -import extralit as rg +import extralit as ex @pytest.fixture -def dataset(client: rg.Extralit, dataset_name: str): +def dataset(client: ex.Extralit, dataset_name: str): ws = client.workspaces.default - settings = rg.Settings( + settings = ex.Settings( guidelines=f"The dataset guidelines", - fields=[rg.TextField(name="text", required=True, title="Text")], + fields=[ex.TextField(name="text", required=True, title="Text")], questions=[ - rg.LabelQuestion(name="label", title="Label", labels=["positive", "negative"]), - rg.RankingQuestion(name="ranking", title="Ranking", values=["1", "2", "3"]), + ex.LabelQuestion(name="label", title="Label", labels=["positive", "negative"]), + ex.RankingQuestion(name="ranking", title="Ranking", values=["1", "2", "3"]), ], ) - ds = rg.Dataset( + ds = ex.Dataset( name=dataset_name, settings=settings, client=client, @@ -41,7 +41,7 @@ def dataset(client: rg.Extralit, dataset_name: str): ds.delete() -def test_ranking_question_with_suggestions(dataset: rg.Dataset): +def test_ranking_question_with_suggestions(dataset: ex.Dataset): dataset.records.log( [ {"text": "This is a test text", "label": "positive", "ranking": ["2", "1", "3"]}, @@ -50,7 +50,7 @@ def test_ranking_question_with_suggestions(dataset: rg.Dataset): assert next(iter(dataset.records(with_suggestions=True))).suggestions["ranking"].value == ["2", "1", "3"] -def test_ranking_question_with_responses(dataset: rg.Dataset): +def test_ranking_question_with_responses(dataset: ex.Dataset): dataset.records.log( [ {"text": "This is a test text", "label": "positive", "ranking_": ["2"]}, diff --git a/extralit/tests/integration/test_update_records.py b/extralit/tests/integration/test_update_records.py index 74fd64bc6..5bc0d7fe5 100644 --- a/extralit/tests/integration/test_update_records.py +++ b/extralit/tests/integration/test_update_records.py @@ -16,22 +16,22 @@ import pytest -import extralit as rg +import extralit as ex @pytest.fixture -def dataset(client: rg.Extralit, dataset_name: str) -> rg.Dataset: +def dataset(client: ex.Extralit, dataset_name: str) -> ex.Dataset: workspace = client.workspaces[0] - settings = rg.Settings( + settings = ex.Settings( allow_extra_metadata=True, fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="label", use_markdown=False), + ex.TextQuestion(name="label", use_markdown=False), ], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=dataset_name, workspace=workspace.name, settings=settings, @@ -42,7 +42,7 @@ def dataset(client: rg.Extralit, dataset_name: str) -> rg.Dataset: class TestUpdateRecords: - def test_update_records_fields(self, client: rg.Extralit, dataset: rg.Dataset): + def test_update_records_fields(self, client: ex.Extralit, dataset: ex.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -72,7 +72,7 @@ def test_update_records_fields(self, client: rg.Extralit, dataset: rg.Dataset): class TestUpdateSuggestions: - def test_update_records_suggestions_from_data(self, client: rg.Extralit, dataset: rg.Dataset): + def test_update_records_suggestions_from_data(self, client: ex.Extralit, dataset: ex.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -110,7 +110,7 @@ def test_update_records_suggestions_from_data(self, client: rg.Extralit, dataset assert record.suggestions["label"].value == "positive" @pytest.mark.skip(reason="This test is failing because the backend expects the fields to be present in the data.") - def test_update_records_without_fields(self, client: rg.Extralit, dataset: rg.Dataset): + def test_update_records_without_fields(self, client: ex.Extralit, dataset: ex.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -139,7 +139,7 @@ def test_update_records_without_fields(self, client: rg.Extralit, dataset: rg.Da for i, record in enumerate(dataset.records(with_suggestions=True)): assert record.suggestions["label"].value == updated_mock_data[i]["label"] - def test_update_records_add_suggestions(self, client: rg.Extralit, dataset: rg.Dataset): + def test_update_records_add_suggestions(self, client: ex.Extralit, dataset: ex.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -163,7 +163,7 @@ def test_update_records_add_suggestions(self, client: rg.Extralit, dataset: rg.D for record in dataset.records(with_suggestions=True): record.suggestions.add( - rg.Suggestion( + ex.Suggestion( question_name="label", value="positive", ) @@ -177,7 +177,7 @@ def test_update_records_add_suggestions(self, client: rg.Extralit, dataset: rg.D class TestUpdateResponses: - def test_update_records_add_responses(self, client: rg.Extralit, dataset: rg.Dataset): + def test_update_records_add_responses(self, client: ex.Extralit, dataset: ex.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -201,7 +201,7 @@ def test_update_records_add_responses(self, client: rg.Extralit, dataset: rg.Dat for record in dataset.records(with_suggestions=True): record.responses.add( - rg.Response( + ex.Response( question_name="label", value="positive", user_id=client.users[0].id, diff --git a/extralit/tests/integration/test_vectors.py b/extralit/tests/integration/test_vectors.py index c60016e62..3983c4b75 100644 --- a/extralit/tests/integration/test_vectors.py +++ b/extralit/tests/integration/test_vectors.py @@ -17,18 +17,18 @@ import pytest -import extralit as rg +import extralit as ex @pytest.fixture -def dataset(client: rg.Extralit, dataset_name: str) -> rg.Dataset: +def dataset(client: ex.Extralit, dataset_name: str) -> ex.Dataset: workspace = client.workspaces[0] - settings = rg.Settings( - fields=[rg.TextField(name="text")], - questions=[rg.LabelQuestion(name="label", labels=["positive", "negative"])], - vectors=[rg.VectorField(name="vector", dimensions=10)], + settings = ex.Settings( + fields=[ex.TextField(name="text")], + questions=[ex.LabelQuestion(name="label", labels=["positive", "negative"])], + vectors=[ex.VectorField(name="vector", dimensions=10)], ) - dataset = rg.Dataset( + dataset = ex.Dataset( name=dataset_name, workspace=workspace, settings=settings, @@ -39,7 +39,7 @@ def dataset(client: rg.Extralit, dataset_name: str) -> rg.Dataset: dataset.delete() -def test_vectors(client: rg.Extralit, dataset: rg.Dataset): +def test_vectors(client: ex.Extralit, dataset: ex.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -71,7 +71,7 @@ def test_vectors(client: rg.Extralit, dataset: rg.Dataset): assert dataset_records[2].vectors["vector"] == mock_data[2]["vector"] -def test_vectors_return_with_bool(client: rg.Extralit, dataset: rg.Dataset): +def test_vectors_return_with_bool(client: ex.Extralit, dataset: ex.Dataset): mock_data = [ { "text": "Hello World, how are you?", @@ -103,7 +103,7 @@ def test_vectors_return_with_bool(client: rg.Extralit, dataset: rg.Dataset): assert dataset_records[2].vectors["vector"] == mock_data[2]["vector"] -def test_vectors_return_with_name(client: rg.Extralit, dataset: rg.Dataset): +def test_vectors_return_with_name(client: ex.Extralit, dataset: ex.Dataset): mock_data = [ { "text": "Hello World, how are you?", diff --git a/extralit/tests/unit/export/test_record_export_import_compatibillity.py b/extralit/tests/unit/export/test_record_export_import_compatibillity.py index 37cd235c9..234586b8c 100644 --- a/extralit/tests/unit/export/test_record_export_import_compatibillity.py +++ b/extralit/tests/unit/export/test_record_export_import_compatibillity.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,20 +17,20 @@ import pytest -import extralit as rg +import extralit as ex from extralit.records._resource import Record @pytest.fixture def record(): - return rg.Record( + return ex.Record( id=uuid.uuid4(), fields={"text": "Hello World, how are you?"}, suggestions=[ - rg.Suggestion("label", "positive", score=0.9), - rg.Suggestion("topics", ["topic1", "topic2"], score=[0.9, 0.8]), + ex.Suggestion("label", "positive", score=0.9), + ex.Suggestion("topics", ["topic1", "topic2"], score=[0.9, 0.8]), ], - responses=[rg.Response("label", "positive", user_id=uuid.uuid4())], + responses=[ex.Response("label", "positive", user_id=uuid.uuid4())], metadata={"source": "twitter", "language": "en"}, vectors={"text": [0, 0, 0]}, ) @@ -38,7 +38,7 @@ def record(): def test_export_record_to_from_dict(record): record_dict = record.to_dict() - imported_record = rg.Record.from_dict(record_dict) + imported_record = ex.Record.from_dict(record_dict) assert record.responses["label"][0].value == imported_record.responses["label"][0].value assert record.suggestions["topics"].value == imported_record.suggestions["topics"].value diff --git a/extralit/tests/unit/export/test_settings_export_import_compatibillity.py b/extralit/tests/unit/export/test_settings_export_import_compatibillity.py index d824d37f1..de3ad6fc3 100644 --- a/extralit/tests/unit/export/test_settings_export_import_compatibillity.py +++ b/extralit/tests/unit/export/test_settings_export_import_compatibillity.py @@ -20,30 +20,30 @@ import httpx from pytest_httpx import HTTPXMock -import extralit as rg +import extralit as ex @pytest.fixture def settings(): - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text", title="text"), + ex.TextField(name="text", title="text"), ], metadata=[ - rg.FloatMetadataProperty("source"), + ex.FloatMetadataProperty("source"), ], questions=[ - rg.LabelQuestion(name="label", title="text", labels=["positive", "negative"]), + ex.LabelQuestion(name="label", title="text", labels=["positive", "negative"]), ], - vectors=[rg.VectorField(name="text_vector", dimensions=3)], + vectors=[ex.VectorField(name="text_vector", dimensions=3)], ) return settings @pytest.fixture -def dataset(httpx_mock: HTTPXMock, settings) -> rg.Dataset: +def dataset(httpx_mock: HTTPXMock, settings) -> ex.Dataset: api_url = "http://test_url" - client = rg.Extralit(api_url) + client = ex.Extralit(api_url) workspace_id = uuid.uuid4() workspace_name = "workspace-01" mock_workspace = { @@ -67,7 +67,7 @@ def dataset(httpx_mock: HTTPXMock, settings) -> rg.Dataset: ) with httpx.Client(): - dataset = rg.Dataset( + dataset = ex.Dataset( client=client, name=f"dataset_{uuid.uuid4()}", settings=settings, @@ -88,7 +88,7 @@ def test_settings_to_json(settings): assert "metadata" in settings_json assert "vectors" in settings_json - loaded_settings = rg.Settings.from_json(temp_file_path) + loaded_settings = ex.Settings.from_json(temp_file_path) assert settings == loaded_settings @@ -96,6 +96,6 @@ def test_export_settings_from_disk(settings): with TemporaryDirectory() as temp_dir: temp_file_path = f"{temp_dir}/settings.json" settings.to_json(temp_file_path) - loaded_settings = rg.Settings.from_json(temp_file_path) + loaded_settings = ex.Settings.from_json(temp_file_path) assert settings == loaded_settings diff --git a/extralit/tests/unit/helpers/test_resource_repr.py b/extralit/tests/unit/helpers/test_resource_repr.py index cdf8744d5..f21ade45c 100644 --- a/extralit/tests/unit/helpers/test_resource_repr.py +++ b/extralit/tests/unit/helpers/test_resource_repr.py @@ -14,16 +14,16 @@ import uuid -import extralit as rg +import extralit as ex from extralit._helpers._resource_repr import ResourceHTMLReprMixin class TestResourceHTMLReprMixin: def test_represent_workspaces_as_html(self): - client = rg.Extralit() + client = ex.Extralit() workspaces = [ - rg.Workspace(name="workspace1", id=uuid.uuid4()), - rg.Workspace(name="workspace2", id=uuid.uuid4()), + ex.Workspace(name="workspace1", id=uuid.uuid4()), + ex.Workspace(name="workspace2", id=uuid.uuid4()), ] assert ( @@ -36,10 +36,10 @@ def test_represent_workspaces_as_html(self): "" ) - workspace = rg.Workspace(name="workspace1", id=uuid.uuid4()) + workspace = ex.Workspace(name="workspace1", id=uuid.uuid4()) datasets = [ - rg.Dataset(name="dataset1", workspace=workspace, client=client), - rg.Dataset(name="dataset2", workspace=workspace, client=client), + ex.Dataset(name="dataset1", workspace=workspace, client=client), + ex.Dataset(name="dataset2", workspace=workspace, client=client), ] for dataset in datasets: diff --git a/extralit/tests/unit/test_io/test_generic.py b/extralit/tests/unit/test_io/test_generic.py index 0ca7d68a4..a382b64c4 100644 --- a/extralit/tests/unit/test_io/test_generic.py +++ b/extralit/tests/unit/test_io/test_generic.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,7 +14,7 @@ from uuid import uuid4 -import extralit as rg +import extralit as ex from extralit import ResponseStatus from extralit.records._io import GenericIO @@ -23,18 +23,18 @@ class TestGenericIO: def test_to_list_flatten(self): user_a, user_b, user_c = uuid4(), uuid4(), uuid4() - record = rg.Record( + record = ex.Record( fields={"field": "The field"}, metadata={"key": "value"}, responses=[ - rg.Response(question_name="q1", value="value", user_id=user_a, status=ResponseStatus.submitted), - rg.Response(question_name="q2", value="value", user_id=user_a, status=ResponseStatus.submitted), - rg.Response(question_name="q2", value="value", user_id=user_b, status=ResponseStatus.draft), - rg.Response(question_name="q1", value="value", user_id=user_c), + ex.Response(question_name="q1", value="value", user_id=user_a, status=ResponseStatus.submitted), + ex.Response(question_name="q2", value="value", user_id=user_a, status=ResponseStatus.submitted), + ex.Response(question_name="q2", value="value", user_id=user_b, status=ResponseStatus.draft), + ex.Response(question_name="q1", value="value", user_id=user_c), ], suggestions=[ - rg.Suggestion(question_name="q1", value="value", score=0.1, agent="test"), - rg.Suggestion(question_name="q2", value="value", score=0.9), + ex.Suggestion(question_name="q1", value="value", score=0.1, agent="test"), + ex.Suggestion(question_name="q2", value="value", score=0.9), ], ) @@ -62,7 +62,7 @@ def test_to_list_flatten(self): ] def test_records_tuple_to_list(self): - record = rg.Record(fields={"field": "The field"}, metadata={"key": "value"}) + record = ex.Record(fields={"field": "The field"}, metadata={"key": "value"}) records_list = GenericIO.to_list( [ diff --git a/extralit/tests/unit/test_io/test_hf_datasets.py b/extralit/tests/unit/test_io/test_hf_datasets.py index e0f5971f1..6f0540250 100644 --- a/extralit/tests/unit/test_io/test_hf_datasets.py +++ b/extralit/tests/unit/test_io/test_hf_datasets.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,42 +16,42 @@ from datasets import Value, Sequence, load_dataset -import extralit as rg +import extralit as ex from extralit.records._io import HFDatasetsIO from extralit.records._mapping import IngestedRecordMapper class TestHFDatasetsIO: def test_to_datasets_with_partial_values_in_records(self): - mock_dataset = rg.Dataset( + mock_dataset = ex.Dataset( name="test", - settings=rg.Settings( + settings=ex.Settings( fields=[ - rg.TextField(name="field"), + ex.TextField(name="field"), ], questions=[ - rg.TextQuestion(name="question"), + ex.TextQuestion(name="question"), ], ), ) records = [ - rg.Record(fields={"field": "The field"}, metadata={"a": "a"}), - rg.Record(fields={"field": "Other field", "other": "Field"}, metadata={"b": "b"}), - rg.Record(fields={"field": "Again"}, suggestions=[rg.Suggestion("question", value="value")]), - rg.Record( - fields={"field": "Field"}, responses=[rg.Response("other_question", value="value", user_id=uuid4())] + ex.Record(fields={"field": "The field"}, metadata={"a": "a"}), + ex.Record(fields={"field": "Other field", "other": "Field"}, metadata={"b": "b"}), + ex.Record(fields={"field": "Again"}, suggestions=[ex.Suggestion("question", value="value")]), + ex.Record( + fields={"field": "Field"}, responses=[ex.Response("other_question", value="value", user_id=uuid4())] ), - rg.Record( + ex.Record( fields={"field": "The record field including more type of responses"}, suggestions=[ - rg.Suggestion("rating", value=1), - rg.Suggestion("ranking", value=["value1", "value2"]), - rg.Suggestion("spans", value=[{"start": 0, "end": 10, "label": "test"}]), + ex.Suggestion("rating", value=1), + ex.Suggestion("ranking", value=["value1", "value2"]), + ex.Suggestion("spans", value=[{"start": 0, "end": 10, "label": "test"}]), ], responses=[ - rg.Response("rating", value=1, user_id=uuid4()), - rg.Response("ranking", value=["value1", "value2"], user_id=uuid4()), - rg.Response("spans", value=[{"start": 0, "end": 10, "label": "test"}], user_id=uuid4()), + ex.Response("rating", value=1, user_id=uuid4()), + ex.Response("ranking", value=["value1", "value2"], user_id=uuid4()), + ex.Response("spans", value=[{"start": 0, "end": 10, "label": "test"}], user_id=uuid4()), ], ), ] @@ -108,7 +108,7 @@ def test_to_datasets_with_partial_values_in_records(self): } def test_to_argilla_with_sequence_of_class_labels(self): - dataset = rg.Dataset(name="test", settings=rg.Settings(fields=[rg.TextField(name="text")])) + dataset = ex.Dataset(name="test", settings=ex.Settings(fields=[ex.TextField(name="text")])) mapper = IngestedRecordMapper(dataset, uuid4()) hf_ds = load_dataset("google-research-datasets/go_emotions", name="simplified", split="train[:5]") diff --git a/extralit/tests/unit/test_record_ingestion.py b/extralit/tests/unit/test_record_ingestion.py index 227d09ced..d905b1714 100644 --- a/extralit/tests/unit/test_record_ingestion.py +++ b/extralit/tests/unit/test_record_ingestion.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,21 +16,21 @@ import pytest -import extralit as rg +import extralit as ex from extralit._exceptions import RecordsIngestionError from extralit.records._dataset_records import RecordErrorHandling @pytest.fixture def dataset(): - settings = rg.Settings( - fields=[rg.TextField(name="prompt")], - questions=[rg.LabelQuestion(name="label", labels=["negative", "positive"])], - metadata=[rg.FloatMetadataProperty(name="score")], - vectors=[rg.VectorField(name="vector", dimensions=3)], + settings = ex.Settings( + fields=[ex.TextField(name="prompt")], + questions=[ex.LabelQuestion(name="label", labels=["negative", "positive"])], + metadata=[ex.FloatMetadataProperty(name="score")], + vectors=[ex.VectorField(name="vector", dimensions=3)], ) - workspace = rg.Workspace(name="workspace", id=uuid4()) - return rg.Dataset( + workspace = ex.Workspace(name="workspace", id=uuid4()) + return ex.Dataset( name="test_dataset", settings=settings, workspace=workspace, @@ -178,15 +178,15 @@ def test_ingest_record_from_dict_with_mapped_metadata_vectors(dataset): def test_ingest_record_from_dict_with_mapping_multiple(): - settings = rg.Settings( - fields=[rg.TextField(name="prompt_field")], + settings = ex.Settings( + fields=[ex.TextField(name="prompt_field")], questions=[ - rg.LabelQuestion(name="label", labels=["negative", "positive"]), - rg.TextQuestion(name="prompt_question"), + ex.LabelQuestion(name="label", labels=["negative", "positive"]), + ex.TextQuestion(name="prompt_question"), ], ) - workspace = rg.Workspace(name="workspace", id=uuid4()) - dataset = rg.Dataset( + workspace = ex.Workspace(name="workspace", id=uuid4()) + dataset = ex.Dataset( name="test_dataset", settings=settings, workspace=workspace, diff --git a/extralit/tests/unit/test_resources/test_datasets.py b/extralit/tests/unit/test_resources/test_datasets.py index 6429deaa3..fc4f4f9b1 100644 --- a/extralit/tests/unit/test_resources/test_datasets.py +++ b/extralit/tests/unit/test_resources/test_datasets.py @@ -19,7 +19,7 @@ import pytest from pytest_httpx import HTTPXMock -import extralit as rg +import extralit as ex from extralit._exceptions import ( BadRequestError, ConflictError, @@ -31,9 +31,9 @@ @pytest.fixture -def dataset(httpx_mock: HTTPXMock) -> rg.Dataset: +def dataset(httpx_mock: HTTPXMock) -> ex.Dataset: api_url = "http://test_url" - client = rg.Extralit(api_url) + client = ex.Extralit(api_url) workspace_id = uuid.uuid4() workspace_name = "workspace-01" mock_workspace = { @@ -57,15 +57,15 @@ def dataset(httpx_mock: HTTPXMock) -> rg.Dataset: ) with httpx.Client(): - dataset = rg.Dataset( + dataset = ex.Dataset( client=client, name=f"dataset_{uuid.uuid4()}", - settings=rg.Settings( + settings=ex.Settings( fields=[ - rg.TextField(name="text"), + ex.TextField(name="text"), ], questions=[ - rg.TextQuestion(name="response"), + ex.TextQuestion(name="response"), ], ), workspace=workspace_name, @@ -274,7 +274,7 @@ def test_delete_dataset(self, httpx_mock: HTTPXMock): status_code=200, ) with httpx.Client() as client: - client = rg.Extralit("http://test_url") + client = ex.Extralit("http://test_url") client.api.datasets.delete(mock_dataset_id) pytest.raises(httpx.HTTPError, client.api.datasets.get, mock_dataset_id) @@ -302,7 +302,7 @@ def test_publish_dataset(self, httpx_mock: HTTPXMock): status_code=200, ) with httpx.Client() as client: - client = rg.Extralit("http://test_url") + client = ex.Extralit("http://test_url") client.api.datasets.publish(mock_dataset_id) dataset = client.api.datasets.get(mock_dataset_id) assert dataset.status == "ready" @@ -329,7 +329,7 @@ def test_get_by_name_and_workspace_id(self, httpx_mock: HTTPXMock): json=mock_return_value, url=f"{api_url}/api/v1/me/datasets", method="GET", status_code=200 ) with httpx.Client(): - client = rg.Extralit(api_url) + client = ex.Extralit(api_url) dataset = client.api.datasets.get_by_name_and_workspace_id("dataset-01", mock_workspace_id) assert mock_dataset_id.hex == mock_return_value["items"][0]["id"] assert dataset.name == mock_return_value["items"][0]["name"] diff --git a/extralit/tests/unit/test_resources/test_fields.py b/extralit/tests/unit/test_resources/test_fields.py index f95c61572..0e481b833 100644 --- a/extralit/tests/unit/test_resources/test_fields.py +++ b/extralit/tests/unit/test_resources/test_fields.py @@ -18,7 +18,7 @@ import httpx from pytest_httpx import HTTPXMock -import extralit as rg +import extralit as ex from extralit._models import FieldModel from extralit._models._settings._fields import ImageFieldSettings, ChatFieldSettings from extralit.settings._field import ImageField, ChatField, CustomField @@ -116,5 +116,5 @@ def test_create_field(self, httpx_mock: HTTPXMock): status_code=200, ) with httpx.Client() as client: - client = rg.Extralit(api_url="http://test_url") + client = ex.Extralit(api_url="http://test_url") client.api.fields.create(mock_field) diff --git a/extralit/tests/unit/test_resources/test_questions.py b/extralit/tests/unit/test_resources/test_questions.py index 789e15b6c..105355991 100644 --- a/extralit/tests/unit/test_resources/test_questions.py +++ b/extralit/tests/unit/test_resources/test_questions.py @@ -18,7 +18,7 @@ import httpx from pytest_httpx import HTTPXMock -import extralit as rg +import extralit as ex from extralit._models import QuestionModel @@ -73,6 +73,6 @@ def test_create_span_question(self, httpx_mock: HTTPXMock): }, ) - client = rg.Extralit(api_url="http://test_url") + client = ex.Extralit(api_url="http://test_url") created_question = client.api.questions.create(question=question) assert created_question.model_dump(exclude_unset=True) == mock_return_value diff --git a/extralit/tests/unit/test_resources/test_users.py b/extralit/tests/unit/test_resources/test_users.py index 24989c5e9..57d4e58ee 100644 --- a/extralit/tests/unit/test_resources/test_users.py +++ b/extralit/tests/unit/test_resources/test_users.py @@ -20,7 +20,7 @@ import pytest from pytest_httpx import HTTPXMock -import extralit as rg +import extralit as ex from extralit._exceptions import ( BadRequestError, ConflictError, @@ -34,7 +34,7 @@ class TestUserSerialization: def test_serialize(self): - user = rg.User( + user = ex.User( id=uuid.uuid4(), username="test-user", first_name="Test", @@ -46,7 +46,7 @@ def test_serialize(self): def test_json_serialize(self): mock_uuid = uuid.uuid4() - user = rg.User( + user = ex.User( id=mock_uuid, username="test-user", first_name="Test", @@ -66,7 +66,7 @@ def test_model_from_json(self): "last_name": "User", "role": "admin", } - user = rg.User(**user_json) + user = ex.User(**user_json) assert user.username == user_json["username"] assert str(user.id) == str(user_json["id"]) @@ -102,8 +102,8 @@ def test_create_user(self, httpx_mock: HTTPXMock, status_code, expected_exceptio json=mock_return_value, url=f"{api_url}/api/v1/users", method="POST", status_code=status_code ) with httpx.Client(): - client = rg.Extralit(api_url=api_url, api_key="admin.apikey") - user = rg.User( + client = ex.Extralit(api_url=api_url, api_key="admin.apikey") + user = ex.User( username="test-user", client=client, ) @@ -150,8 +150,8 @@ def test_get_user(self, httpx_mock: HTTPXMock, status_code, expected_exception, json=mock_return_value, url=f"{api_url}/api/v1/users", method="POST", status_code=status_code ) with httpx.Client(): - client = rg.Extralit(api_url=api_url, api_key="admin.apikey") - user = rg.User( + client = ex.Extralit(api_url=api_url, api_key="admin.apikey") + user = ex.User( username="test-user", client=client, ) @@ -194,7 +194,7 @@ def test_list_users(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/users") with httpx.Client(): - client = rg.Extralit(api_url="http://test_url", api_key="admin.apikey") + client = ex.Extralit(api_url="http://test_url", api_key="admin.apikey") users = client.users assert len(users) == 2 for i in range(len(users)): @@ -222,7 +222,7 @@ def test_get_me(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/me") with httpx.Client(): - client = rg.Extralit(api_url=api_url, api_key="admin.apikey") + client = ex.Extralit(api_url=api_url, api_key="admin.apikey") user = client.api.users.get_me() assert user.username == mock_return_value["username"] assert user.id == uuid.UUID(mock_return_value["id"]) @@ -250,14 +250,14 @@ def test_remove_user_from_workspace(self, httpx_mock: HTTPXMock): json=mock_return_value, ) with httpx.Client(): - client = rg.Extralit(api_url="http://test_url", api_key="admin.apikey") + client = ex.Extralit(api_url="http://test_url", api_key="admin.apikey") client.api.users.delete_from_workspace(workspace_id, user_id) def test_delete_user(self, httpx_mock: HTTPXMock): user_id = uuid.uuid4() httpx_mock.add_response(url=f"http://test_url/api/v1/users/{user_id}", method="DELETE") with httpx.Client(): - client = rg.Extralit(api_url="http://test_url", api_key="admin.apikey") + client = ex.Extralit(api_url="http://test_url", api_key="admin.apikey") client.api.users.delete(user_id) def test_list_workspace_users(self, httpx_mock: HTTPXMock): @@ -288,7 +288,7 @@ def test_list_workspace_users(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/workspaces/{workspace_id}/users") with httpx.Client(): - client = rg.Extralit(api_url=api_url, api_key="admin.apikey") + client = ex.Extralit(api_url=api_url, api_key="admin.apikey") users = client.api.users.list_by_workspace_id(workspace_id) assert len(users) == 2 for i in range(len(users)): @@ -316,7 +316,7 @@ def test_create_user(self, httpx_mock: HTTPXMock): httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/users", method="POST", status_code=200) with httpx.Client(): - client = rg.Extralit(api_url=api_url, api_key="admin.apikey") + client = ex.Extralit(api_url=api_url, api_key="admin.apikey") user_create = UserModel(username="test-user", password="test-password") user = client.api.users.create(user_create) assert user.id == user_id diff --git a/extralit/tests/unit/test_resources/test_workspaces.py b/extralit/tests/unit/test_resources/test_workspaces.py index 0587250f7..baabcb9ea 100644 --- a/extralit/tests/unit/test_resources/test_workspaces.py +++ b/extralit/tests/unit/test_resources/test_workspaces.py @@ -19,7 +19,7 @@ import pytest from pytest_httpx import HTTPXMock -import extralit as rg +import extralit as ex from extralit._exceptions import ( BadRequestError, ConflictError, @@ -32,7 +32,7 @@ class TestWorkspacesSerialization: def test_serialize(self): - ws = rg.Workspace( + ws = ex.Workspace( name="test-workspace", id=uuid.uuid4(), ) @@ -41,7 +41,7 @@ def test_serialize(self): def test_json_serialize_raise_typeerror(self): with pytest.raises(TypeError): - rg.Workspace( + ex.Workspace( name="test-workspace", id=uuid.uuid4(), inserted_at=datetime.utcnow(), @@ -73,13 +73,13 @@ def test_create_workspace(self, httpx_mock: HTTPXMock, status_code, expected_exc api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/workspaces", status_code=status_code) with httpx.Client(): - client = rg.Extralit(api_url=api_url, api_key="admin.apikey") + client = ex.Extralit(api_url=api_url, api_key="admin.apikey") if expected_exception: with pytest.raises(expected_exception, match=expected_message): - ws = rg.Workspace(name="test-workspace", id=uuid.uuid4(), client=client) + ws = ex.Workspace(name="test-workspace", id=uuid.uuid4(), client=client) ws.create() else: - ws = rg.Workspace(name="test-workspace", id=uuid.uuid4(), client=client) + ws = ex.Workspace(name="test-workspace", id=uuid.uuid4(), client=client) created_workspace = ws.create() assert created_workspace.name == mock_name assert created_workspace.id == uuid.UUID(mock_return_value["id"]) @@ -111,14 +111,14 @@ def test_get_workspace(self, httpx_mock: HTTPXMock, status_code, expected_except json=mock_return_value, url=f"{api_url}/api/v1/workspaces/{workspace_id}", status_code=status_code ) with httpx.Client(): - client = rg.Extralit(api_url="http://test_url", api_key="admin.apikey") + client = ex.Extralit(api_url="http://test_url", api_key="admin.apikey") if expected_exception: with pytest.raises(expected_exception, match=expected_message): - workspace = rg.Workspace(name="test-workspace", id=workspace_id, client=client) + workspace = ex.Workspace(name="test-workspace", id=workspace_id, client=client) workspace = workspace.get() else: - workspace = rg.Workspace(name="test-workspace", id=workspace_id, client=client) + workspace = ex.Workspace(name="test-workspace", id=workspace_id, client=client) workspace = workspace.get() assert workspace.name == mock_return_value["name"] assert workspace.id == workspace_id @@ -143,7 +143,7 @@ def test_list_workspaces(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/me/workspaces") with httpx.Client(): - client = rg.Extralit(api_url="http://test_url", api_key="admin.apikey") + client = ex.Extralit(api_url="http://test_url", api_key="admin.apikey") workspaces = client.workspaces assert len(workspaces) == 2 for i in range(len(workspaces)): @@ -174,7 +174,7 @@ def test_get_workspace_by_name(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/me/workspaces") with httpx.Client(): - client = rg.Extralit(api_url=api_url, api_key="admin.apikey") + client = ex.Extralit(api_url=api_url, api_key="admin.apikey") ws = client.api.workspaces.get_by_name("test-workspace") assert ws is not None assert ws.name == "test-workspace" @@ -200,13 +200,13 @@ def test_multiple_clients_create_workspace(self, httpx_mock: HTTPXMock): json=mock_return, ) with httpx.Client(): - local_client = rg.Extralit(api_url="http://localhost:6900", api_key="admin.apikey") - remote_client = rg.Extralit(api_url="http://argilla.production.net", api_key="admin.apikey") + local_client = ex.Extralit(api_url="http://localhost:6900", api_key="admin.apikey") + remote_client = ex.Extralit(api_url="http://argilla.production.net", api_key="admin.apikey") assert local_client.api_url == "http://localhost:6900" assert remote_client.api_url == "http://argilla.production.net" - local_workspace = rg.Workspace(name="local-test-workspace", client=local_client) + local_workspace = ex.Workspace(name="local-test-workspace", client=local_client) local_workspace = local_workspace.create() - remote_workspace = rg.Workspace(name="remote-test-workspace", client=remote_client) + remote_workspace = ex.Workspace(name="remote-test-workspace", client=remote_client) remote_workspace = remote_workspace.create() def test_delete_workspace(self, httpx_mock: HTTPXMock): @@ -214,7 +214,7 @@ def test_delete_workspace(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(url=f"{api_url}/api/v1/workspaces/{workspace_id}", status_code=204) with httpx.Client(): - client = rg.Extralit(api_url=api_url, api_key="admin.apikey") + client = ex.Extralit(api_url=api_url, api_key="admin.apikey") client.api.workspaces.delete(workspace_id) def test_list_workspace_datasets(self, httpx_mock: HTTPXMock): @@ -246,7 +246,7 @@ def test_list_workspace_datasets(self, httpx_mock: HTTPXMock): api_url = "http://test_url" httpx_mock.add_response(json=mock_return_value, url=f"{api_url}/api/v1/me/datasets") with httpx.Client(): - client = rg.Extralit(api_url=api_url, api_key="admin.apikey") + client = ex.Extralit(api_url=api_url, api_key="admin.apikey") datasets = client.api.datasets.list(workspace_id) assert len(datasets) == 2 for i in range(len(datasets)): diff --git a/extralit/tests/unit/test_settings/test_metadata.py b/extralit/tests/unit/test_settings/test_metadata.py index be271fff4..06b721e8b 100644 --- a/extralit/tests/unit/test_settings/test_metadata.py +++ b/extralit/tests/unit/test_settings/test_metadata.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,14 +16,14 @@ import pytest -import extralit as rg +import extralit as ex from extralit._models import MetadataFieldModel, TermsMetadataPropertySettings class TestMetadata: @pytest.mark.parametrize("options", [["option1", "option2"], [1, 2, 3, 4], [True, False]]) def test_create_metadata_terms(self, options: list): - property = rg.TermsMetadataProperty(title="A metadata property", name="metadata", options=options) + property = ex.TermsMetadataProperty(title="A metadata property", name="metadata", options=options) assert property._model.type == "terms" assert property.title == "A metadata property" @@ -43,7 +43,7 @@ def test_create_metadata_terms(self, options: list): } def test_create_terms_metadata_without_options(self): - property = rg.TermsMetadataProperty(name="metadata") + property = ex.TermsMetadataProperty(name="metadata") assert property.title == "metadata" assert property.name == "metadata" @@ -73,7 +73,7 @@ def test_create_from_model(self): visible_for_annotators=True, ) - property = rg.TermsMetadataProperty.from_model(model) + property = ex.TermsMetadataProperty.from_model(model) assert property.id == model.id assert property.title == "A metadata property" @@ -82,13 +82,13 @@ def test_create_from_model(self): assert property.options == ["option1", "option2"] def test_create_integer_metadata_with_visible_for_annotators(self): - metadata = rg.IntegerMetadataProperty(name="integer", min=10, visible_for_annotators=False) + metadata = ex.IntegerMetadataProperty(name="integer", min=10, visible_for_annotators=False) assert metadata.visible_for_annotators is False def test_create_float_metadata_with_visible_for_annotators(self): - metadata = rg.FloatMetadataProperty(name="integer", min=3.5, max=10.5, visible_for_annotators=False) + metadata = ex.FloatMetadataProperty(name="integer", min=3.5, max=10.5, visible_for_annotators=False) assert metadata.visible_for_annotators is False def test_create_terms_metadata_with_boolean_options(self): - metadata = rg.TermsMetadataProperty(name="metadata", options=[True, False]) + metadata = ex.TermsMetadataProperty(name="metadata", options=[True, False]) assert metadata.options == [True, False] diff --git a/extralit/tests/unit/test_settings/test_multi_label_question.py b/extralit/tests/unit/test_settings/test_multi_label_question.py index fe757eb83..89ed6ae6b 100644 --- a/extralit/tests/unit/test_settings/test_multi_label_question.py +++ b/extralit/tests/unit/test_settings/test_multi_label_question.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,24 +12,24 @@ # See the License for the specific language governing permissions and # limitations under the License. -import extralit as rg +import extralit as ex class TestMultiLabelQuestions: def test_create_question(self): - question = rg.MultiLabelQuestion(name="span_question", labels=["label1", "label2", "label3"]) + question = ex.MultiLabelQuestion(name="span_question", labels=["label1", "label2", "label3"]) assert question.name == "span_question" assert question.labels == ["label1", "label2", "label3"] assert question.visible_labels == 3 def test_change_labels_value(self): - question = rg.MultiLabelQuestion(name="span_question", labels=["label1", "label2", "label3"]) + question = ex.MultiLabelQuestion(name="span_question", labels=["label1", "label2", "label3"]) question.labels = ["label1", "label2"] assert question.labels == ["label1", "label2"] assert question.visible_labels == 3 def test_update_visible_labels(self): - question = rg.MultiLabelQuestion(name="span_question", labels=["label1", "label2", "label3", "label4"]) + question = ex.MultiLabelQuestion(name="span_question", labels=["label1", "label2", "label3", "label4"]) assert question.visible_labels == 4 question.visible_labels = 3 assert question.visible_labels == 3 diff --git a/extralit/tests/unit/test_settings/test_settings.py b/extralit/tests/unit/test_settings/test_settings.py index 191bd8940..e31dedb3b 100644 --- a/extralit/tests/unit/test_settings/test_settings.py +++ b/extralit/tests/unit/test_settings/test_settings.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -18,7 +18,7 @@ import pytest from pytest_mock import MockerFixture -import extralit as rg +import extralit as ex from extralit import Dataset from extralit._exceptions import SettingsError from extralit._models import DatasetModel @@ -27,63 +27,63 @@ class TestSettings: def test_init_settings(self): - settings = rg.Settings() + settings = ex.Settings() assert len(settings.fields) == 0 assert len(settings.questions) == 0 def test_with_guidelines(self): mock_guidelines = "This is a guideline" - settings = rg.Settings( + settings = ex.Settings( guidelines=mock_guidelines, ) assert settings.guidelines == mock_guidelines def test_with_guidelines_attribute(self): mock_guidelines = "This is a guideline" - settings = rg.Settings() + settings = ex.Settings() settings.guidelines = mock_guidelines assert settings.guidelines == mock_guidelines def test_with_text_field(self): mock_name = "prompt" mock_use_markdown = True - settings = rg.Settings(fields=[rg.TextField(name=mock_name, use_markdown=mock_use_markdown)]) + settings = ex.Settings(fields=[ex.TextField(name=mock_name, use_markdown=mock_use_markdown)]) assert settings.fields[0].name == mock_name assert settings.fields[0].use_markdown == mock_use_markdown def test_with_text_field_attribute(self): - settings = rg.Settings() + settings = ex.Settings() mock_name = "prompt" mock_use_markdown = True - settings.fields = [rg.TextField(name=mock_name, use_markdown=mock_use_markdown)] + settings.fields = [ex.TextField(name=mock_name, use_markdown=mock_use_markdown)] assert settings.fields[0].name == mock_name assert settings.fields[0].use_markdown == mock_use_markdown def test_with_label_question(self): - settings = rg.Settings(questions=[rg.LabelQuestion(name="sentiment", labels=["positive", "negative"])]) + settings = ex.Settings(questions=[ex.LabelQuestion(name="sentiment", labels=["positive", "negative"])]) assert settings.questions[0].name == "sentiment" assert settings.questions[0].labels == ["positive", "negative"] def test_with_label_question_attribute(self): - settings = rg.Settings() - settings.questions = [rg.LabelQuestion(name="sentiment", labels=["positive", "negative"])] + settings = ex.Settings() + settings.questions = [ex.LabelQuestion(name="sentiment", labels=["positive", "negative"])] assert settings.questions[0].name == "sentiment" assert settings.questions[0].labels == ["positive", "negative"] def test_settings_repr(self): - settings = rg.Settings( + settings = ex.Settings( fields=[ - rg.TextField(name="text", title="text"), - rg.ImageField(name="image", title="image"), + ex.TextField(name="text", title="text"), + ex.ImageField(name="image", title="image"), ], metadata=[ - rg.FloatMetadataProperty("source"), + ex.FloatMetadataProperty("source"), ], questions=[ - rg.LabelQuestion(name="label", title="text", labels=["positive", "negative"]), - rg.RatingQuestion(name="rating", title="text", values=[1, 2, 3, 4, 5]), - rg.TextQuestion(name="text", title="text"), - rg.SpanQuestion( + ex.LabelQuestion(name="label", title="text", labels=["positive", "negative"]), + ex.RatingQuestion(name="rating", title="text", values=[1, 2, 3, 4, 5]), + ex.TextQuestion(name="text", title="text"), + ex.SpanQuestion( name="span", title="text", field="text", @@ -91,7 +91,7 @@ def test_settings_repr(self): visible_labels=3, ), ], - vectors=[rg.VectorField(name="text", dimensions=3)], + vectors=[ex.VectorField(name="text", dimensions=3)], ) assert ( settings.__repr__() == f"Settings(guidelines=None, allow_extra_metadata=False, " @@ -100,22 +100,22 @@ def test_settings_repr(self): ) def test_settings_validation_with_duplicated_names(self): - settings = rg.Settings( - fields=[rg.TextField(name="text", title="text")], - metadata=[rg.FloatMetadataProperty("source")], - questions=[rg.LabelQuestion(name="label", title="text", labels=["positive", "negative"])], - vectors=[rg.VectorField(name="text", dimensions=3)], + settings = ex.Settings( + fields=[ex.TextField(name="text", title="text")], + metadata=[ex.FloatMetadataProperty("source")], + questions=[ex.LabelQuestion(name="label", title="text", labels=["positive", "negative"])], + vectors=[ex.VectorField(name="text", dimensions=3)], ) with pytest.raises(SettingsError, match="names of dataset settings must be unique"): settings.validate() def test_copy_settings(self): - settings = rg.Settings( - fields=[rg.TextField(name="text", title="text")], - metadata=[rg.FloatMetadataProperty("source")], - questions=[rg.LabelQuestion(name="label", title="text", labels=["positive", "negative"])], - vectors=[rg.VectorField(name="text", dimensions=3)], + settings = ex.Settings( + fields=[ex.TextField(name="text", title="text")], + metadata=[ex.FloatMetadataProperty("source")], + questions=[ex.LabelQuestion(name="label", title="text", labels=["positive", "negative"])], + vectors=[ex.VectorField(name="text", dimensions=3)], ) settings_copy = copy.copy(settings) @@ -125,11 +125,11 @@ def test_copy_settings(self): assert settings == settings_copy def test_custom_copy_settings(self): - settings = rg.Settings( - fields=[rg.TextField(name="text", title="text")], - metadata=[rg.FloatMetadataProperty("source")], - questions=[rg.LabelQuestion(name="label", title="text", labels=["positive", "negative"])], - vectors=[rg.VectorField(name="text", dimensions=3)], + settings = ex.Settings( + fields=[ex.TextField(name="text", title="text")], + metadata=[ex.FloatMetadataProperty("source")], + questions=[ex.LabelQuestion(name="label", title="text", labels=["positive", "negative"])], + vectors=[ex.VectorField(name="text", dimensions=3)], ) settings_copy = settings._copy() @@ -139,11 +139,11 @@ def test_custom_copy_settings(self): assert settings != settings_copy def test_settings_access(self): - fields = [rg.TextField(name="text"), rg.TextField(name="other-text")] + fields = [ex.TextField(name="text"), ex.TextField(name="other-text")] for field in fields: field._model.id = uuid.uuid4() - settings = rg.Settings(fields=fields) + settings = ex.Settings(fields=fields) assert settings.fields[0] == settings.fields["text"] assert settings.fields[1] == settings.fields["other-text"] @@ -151,33 +151,33 @@ def test_settings_access(self): assert settings.fields[fields[1].id] == fields[1] def test_settings_access_by_none_id(self): - settings = rg.Settings(fields=[rg.TextField(name="text", title="title")]) + settings = ex.Settings(fields=[ex.TextField(name="text", title="title")]) assert settings.fields[None] is None def test_settings_access_by_missing(self): - field = rg.TextField(name="text", title="title") + field = ex.TextField(name="text", title="title") field._model.id = uuid.uuid4() - settings = rg.Settings(fields=[field]) + settings = ex.Settings(fields=[field]) assert settings.fields[uuid.uuid4()] is None assert settings.fields["missing"] is None def test_settings_access_by_out_of_range(self): - settings = rg.Settings(fields=[rg.TextField(name="text", title="title")]) + settings = ex.Settings(fields=[ex.TextField(name="text", title="title")]) with pytest.raises(IndexError): _ = settings.fields[10] def test_settings_with_modified_default_task_distribution(self): - settings = rg.Settings(fields=[rg.TextField(name="text", title="title")]) + settings = ex.Settings(fields=[ex.TextField(name="text", title="title")]) assert settings.distribution == TaskDistribution(min_submitted=1) settings.distribution.min_submitted = 10 - other_settings = rg.Settings(fields=[rg.TextField(name="text", title="title")]) + other_settings = ex.Settings(fields=[ex.TextField(name="text", title="title")]) assert other_settings.distribution == TaskDistribution(min_submitted=1) def test_settings_with_modified_task_distribution_value(self): - settings = rg.Settings(fields=[rg.TextField(name="text", title="title")]) + settings = ex.Settings(fields=[ex.TextField(name="text", title="title")]) assert settings.distribution == TaskDistribution(min_submitted=1) settings.distribution.min_submitted = 10 @@ -185,17 +185,17 @@ def test_settings_with_modified_task_distribution_value(self): assert settings.distribution == TaskDistribution(min_submitted=10) def test_compare_equal_settings(self): - settings = rg.Settings(fields=[rg.TextField(name="text", title="title")]) + settings = ex.Settings(fields=[ex.TextField(name="text", title="title")]) assert settings == settings - @pytest.mark.parametrize("other_settings", [None, "value", 100, rg.Settings()]) + @pytest.mark.parametrize("other_settings", [None, "value", 100, ex.Settings()]) def test_compare_different_settings(self, other_settings: Any): - settings = rg.Settings(fields=[rg.TextField(name="text", title="title")]) + settings = ex.Settings(fields=[ex.TextField(name="text", title="title")]) assert settings != other_settings def test_read_settings_without_distribution(self, mocker: "MockerFixture"): - settings = rg.Settings( - fields=[rg.TextField(name="text", title="title")], + settings = ex.Settings( + fields=[ex.TextField(name="text", title="title")], _dataset=Dataset(name="dataset"), ) @@ -214,10 +214,10 @@ def test_read_settings_without_distribution(self, mocker: "MockerFixture"): assert settings.distribution == TaskDistribution.default() def test_serialize(self): - settings = rg.Settings( + settings = ex.Settings( guidelines="This is a guideline", - fields=[rg.TextField(name="prompt", use_markdown=True)], - questions=[rg.LabelQuestion(name="sentiment", labels=["positive", "negative"])], + fields=[ex.TextField(name="prompt", use_markdown=True)], + questions=[ex.LabelQuestion(name="sentiment", labels=["positive", "negative"])], ) settings_serialized = settings.serialize() assert settings_serialized["guidelines"] == "This is a guideline" @@ -225,11 +225,11 @@ def test_serialize(self): assert settings_serialized["fields"][0]["settings"]["use_markdown"] is True def test_remove_property_from_settings(self): - settings = rg.Settings( - fields=[rg.TextField(name="text", title="text")], - questions=[rg.LabelQuestion(name="label", title="text", labels=["positive", "negative"])], - metadata=[rg.FloatMetadataProperty("source")], - vectors=[rg.VectorField(name="vector", dimensions=3)], + settings = ex.Settings( + fields=[ex.TextField(name="text", title="text")], + questions=[ex.LabelQuestion(name="label", title="text", labels=["positive", "negative"])], + metadata=[ex.FloatMetadataProperty("source")], + vectors=[ex.VectorField(name="vector", dimensions=3)], ) settings.fields.remove("text") @@ -245,26 +245,26 @@ def test_remove_property_from_settings(self): assert len(settings.vectors) == 0 def test_adding_properties_with_override_enabled(self): - settings = rg.Settings() + settings = ex.Settings() - settings.add(rg.TextField(name="text", title="text")) + settings.add(ex.TextField(name="text", title="text")) assert len(settings.fields) == 1 - settings.add(rg.TextQuestion(name="question", title="question")) + settings.add(ex.TextQuestion(name="question", title="question")) assert len(settings.questions) == 1 - settings.add(rg.FloatMetadataProperty(name="text"), override=True) + settings.add(ex.FloatMetadataProperty(name="text"), override=True) assert len(settings.metadata) == 1 assert len(settings.fields) == 0 def test_adding_properties_with_disabled_override(self): - settings = rg.Settings() + settings = ex.Settings() - settings.add(rg.TextField(name="text", title="text")) + settings.add(ex.TextField(name="text", title="text")) assert len(settings.fields) == 1 - settings.add(rg.TextQuestion(name="question", title="question")) + settings.add(ex.TextQuestion(name="question", title="question")) assert len(settings.questions) == 1 with pytest.raises(SettingsError, match="Property with name 'text' already exists"): - settings.add(rg.FloatMetadataProperty(name="text"), override=False) + settings.add(ex.FloatMetadataProperty(name="text"), override=False) diff --git a/extralit/tests/unit/test_settings/test_settings_fields.py b/extralit/tests/unit/test_settings/test_settings_fields.py index b923b53ba..1aa7866c3 100644 --- a/extralit/tests/unit/test_settings/test_settings_fields.py +++ b/extralit/tests/unit/test_settings/test_settings_fields.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,14 +13,14 @@ # limitations under the License. import pytest -import extralit as rg +import extralit as ex class TestTextField: def test_init_text_field(self): mock_name = "prompt" mock_use_markdown = True - text_field = rg.TextField(name=mock_name, use_markdown=mock_use_markdown) + text_field = ex.TextField(name=mock_name, use_markdown=mock_use_markdown) assert text_field.name == mock_name assert text_field.use_markdown == mock_use_markdown assert text_field.title == mock_name @@ -30,7 +30,7 @@ def test_init_text_field_with_title(self): mock_name = "prompt" mock_use_markdown = True mock_title = "Prompt" - text_field = rg.TextField(name=mock_name, use_markdown=mock_use_markdown, title=mock_title) + text_field = ex.TextField(name=mock_name, use_markdown=mock_use_markdown, title=mock_title) assert text_field.name == mock_name assert text_field.use_markdown == mock_use_markdown assert text_field.title == mock_title @@ -46,25 +46,25 @@ def test_init_text_field_with_title(self): ) def test_title_validator(self, title, name, expected, mocker): mock_use_markdown = True - text_field = rg.TextField(name=name, use_markdown=mock_use_markdown, title=title) + text_field = ex.TextField(name=name, use_markdown=mock_use_markdown, title=title) assert text_field.title == expected class TestChatField: def test_create_chat_field(self): - field = rg.ChatField(name="chat") + field = ex.ChatField(name="chat") assert field.name == "chat" assert field.use_markdown is True def test_create_chat_field_with_use_markdown(self): - field = rg.ChatField(name="chat", use_markdown=False) + field = ex.ChatField(name="chat", use_markdown=False) assert field.name == "chat" assert field.use_markdown is False def test_update_chat_field_use_markdown(self): - field = rg.ChatField(name="chat", use_markdown=True) + field = ex.ChatField(name="chat", use_markdown=True) field.use_markdown = False assert field.use_markdown is False @@ -72,14 +72,14 @@ def test_update_chat_field_use_markdown(self): class TestCustomField: def test_create_custom_field(self): - field = rg.CustomField(name="custom", template="

{{ custom }}

") + field = ex.CustomField(name="custom", template="

{{ custom }}

") assert field.name == "custom" assert field.template == "

{{ custom }}

" assert field.advanced_mode is False def test_create_custom_field_with_advanced_mode(self): - field = rg.CustomField(name="custom", template="

", advanced_mode=True) + field = ex.CustomField(name="custom", template="

", advanced_mode=True) assert field.name == "custom" assert field.template == "

" diff --git a/extralit/tests/unit/test_settings/test_settings_from_features.py b/extralit/tests/unit/test_settings/test_settings_from_features.py index c4584f120..cb694713c 100644 --- a/extralit/tests/unit/test_settings/test_settings_from_features.py +++ b/extralit/tests/unit/test_settings/test_settings_from_features.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -13,7 +13,7 @@ # limitations under the License. import pytest -import extralit as rg +import extralit as ex from extralit._exceptions._settings import SettingsError from extralit.settings._io._hub import _define_settings_from_features @@ -24,7 +24,7 @@ def test_define_settings_from_features_text(): settings = _define_settings_from_features(features, feature_mapping={}) assert len(settings.fields) == 1 - assert isinstance(settings.fields[0], rg.TextField) + assert isinstance(settings.fields[0], ex.TextField) assert settings.fields[0].name == "text_column" assert len(settings.questions) == 0 @@ -34,7 +34,7 @@ def test_define_settings_from_features_image(): settings = _define_settings_from_features(features, feature_mapping={}) assert len(settings.fields) == 1 - assert isinstance(settings.fields[0], rg.ImageField) + assert isinstance(settings.fields[0], ex.ImageField) assert settings.fields[0].name == "image_column" @@ -43,7 +43,7 @@ def test_define_settings_from_bool_features(): settings = _define_settings_from_features(features, feature_mapping={}) assert len(settings.metadata) == 1 - assert isinstance(settings.metadata[0], rg.TermsMetadataProperty) + assert isinstance(settings.metadata[0], ex.TermsMetadataProperty) assert settings.metadata[0].name == "bool_column" @@ -56,12 +56,12 @@ def test_define_settings_from_features_multiple(): settings = _define_settings_from_features(features, feature_mapping={}) assert len(settings.fields) == 2 - assert isinstance(settings.fields[0], rg.TextField) + assert isinstance(settings.fields[0], ex.TextField) assert settings.fields[0].name == "text_column" - assert isinstance(settings.fields[1], rg.ImageField) + assert isinstance(settings.fields[1], ex.ImageField) assert settings.fields[1].name == "image_column" assert len(settings.questions) == 1 - assert isinstance(settings.questions[0], rg.LabelQuestion) + assert isinstance(settings.questions[0], ex.LabelQuestion) assert settings.questions[0].name == "label_column" @@ -74,12 +74,12 @@ def test_mapped_question(): settings = _define_settings_from_features(features, feature_mapping={"text_column": "question"}) assert len(settings.fields) == 1 - assert isinstance(settings.fields[0], rg.ImageField) + assert isinstance(settings.fields[0], ex.ImageField) assert settings.fields[0].name == "image_column" assert len(settings.questions) == 2 - assert isinstance(settings.questions[0], rg.TextQuestion) + assert isinstance(settings.questions[0], ex.TextQuestion) assert settings.questions[0].name == "text_column" - assert isinstance(settings.questions[1], rg.LabelQuestion) + assert isinstance(settings.questions[1], ex.LabelQuestion) assert settings.questions[1].name == "label_column" @@ -92,12 +92,12 @@ def test_mapped_fields(): settings = _define_settings_from_features(features, feature_mapping={"text_column": "field"}) assert len(settings.fields) == 2 - assert isinstance(settings.fields[0], rg.TextField) + assert isinstance(settings.fields[0], ex.TextField) assert settings.fields[0].name == "text_column" - assert isinstance(settings.fields[1], rg.ImageField) + assert isinstance(settings.fields[1], ex.ImageField) assert settings.fields[1].name == "image_column" assert len(settings.questions) == 1 - assert isinstance(settings.questions[0], rg.LabelQuestion) + assert isinstance(settings.questions[0], ex.LabelQuestion) assert settings.questions[0].name == "label_column" diff --git a/extralit/tests/unit/test_settings/test_settings_mapping_record_ingestion.py b/extralit/tests/unit/test_settings/test_settings_mapping_record_ingestion.py index d6f192eae..1384fd6a5 100644 --- a/extralit/tests/unit/test_settings/test_settings_mapping_record_ingestion.py +++ b/extralit/tests/unit/test_settings/test_settings_mapping_record_ingestion.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ import pytest -import extralit as rg +import extralit as ex @pytest.fixture @@ -29,18 +29,18 @@ def dataset(): "model": "label.suggestion.agent", "my_prompt": ("prompt_field", "prompt_question"), } - settings = rg.Settings( - fields=[rg.TextField(name="prompt_field")], + settings = ex.Settings( + fields=[ex.TextField(name="prompt_field")], questions=[ - rg.LabelQuestion(name="label", labels=["negative", "positive"]), - rg.TextQuestion(name="prompt_question"), + ex.LabelQuestion(name="label", labels=["negative", "positive"]), + ex.TextQuestion(name="prompt_question"), ], - metadata=[rg.FloatMetadataProperty(name="score")], - vectors=[rg.VectorField(name="vector", dimensions=3)], + metadata=[ex.FloatMetadataProperty(name="score")], + vectors=[ex.VectorField(name="vector", dimensions=3)], mapping=mock_mapping, ) - workspace = rg.Workspace(name="workspace", id=uuid4()) - dataset = rg.Dataset( + workspace = ex.Workspace(name="workspace", id=uuid4()) + dataset = ex.Dataset( name="test_dataset", settings=settings, workspace=workspace, @@ -82,7 +82,7 @@ def test_settings_with_record_mapping_export(dataset): with TemporaryDirectory() as temp_dir: path = f"{temp_dir}/test_dataset.json" dataset.settings.to_json(path) - loaded_settings = rg.Settings.from_json(path) + loaded_settings = ex.Settings.from_json(path) assert dataset.settings.mapping == loaded_settings.mapping assert dataset.settings == loaded_settings diff --git a/extralit/tests/unit/test_settings/test_settings_questions.py b/extralit/tests/unit/test_settings/test_settings_questions.py index b64395aef..4442d07e7 100644 --- a/extralit/tests/unit/test_settings/test_settings_questions.py +++ b/extralit/tests/unit/test_settings/test_settings_questions.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,19 +12,19 @@ # See the License for the specific language governing permissions and # limitations under the License. -import extralit as rg +import extralit as ex class TestQuestions: def test_label_question_init(self): labels = ["label1", "label2", "label3"] - question = rg.LabelQuestion(name="label_question", labels=labels) + question = ex.LabelQuestion(name="label_question", labels=labels) assert question.name == "label_question" assert question.labels == ["label1", "label2", "label3"] def test_label_question_init_with_dict(self): labels = {"label1": "1", "label2": "2", "label3": "3"} - question = rg.LabelQuestion(name="label_question", labels=labels) + question = ex.LabelQuestion(name="label_question", labels=labels) assert question.name == "label_question" assert question.labels == ["label1", "label2", "label3"] text_of_labels = [label["text"] for label in question._model.settings.options] @@ -32,31 +32,31 @@ def test_label_question_init_with_dict(self): assert text_of_labels[i] == list(labels.values())[i] def test_rating_question_init(self): - question = rg.RatingQuestion(name="rating_question", values=[1, 2, 3]) + question = ex.RatingQuestion(name="rating_question", values=[1, 2, 3]) assert question.name == "rating_question" assert question.values == [1, 2, 3] def test_text_question_init(self): - question = rg.TextQuestion(name="text_question", use_markdown=True) + question = ex.TextQuestion(name="text_question", use_markdown=True) assert question.name == "text_question" assert question.use_markdown is True def test_multi_label_question_init(self): labels = ["label1", "label2", "label3"] - question = rg.MultiLabelQuestion(name="multi_label_question", labels=labels, visible_labels=3) + question = ex.MultiLabelQuestion(name="multi_label_question", labels=labels, visible_labels=3) assert question.name == "multi_label_question" assert question.labels == ["label1", "label2", "label3"] assert question.visible_labels == 3 def test_multi_label_question_init_with_dict(self): labels = {"label1": "1", "label2": "2", "label3": "3"} - question = rg.MultiLabelQuestion(name="multi_label_question", labels=labels, visible_labels=3) + question = ex.MultiLabelQuestion(name="multi_label_question", labels=labels, visible_labels=3) assert question.name == "multi_label_question" assert question.labels == ["label1", "label2", "label3"] assert question.visible_labels == 3 def test_multi_label_question_init_ordered(self): - question = rg.MultiLabelQuestion( + question = ex.MultiLabelQuestion( name="multi_label_question", labels=["label1", "label2", "label3"], visible_labels=3, @@ -67,6 +67,6 @@ def test_multi_label_question_init_ordered(self): assert question.visible_labels == 3 def test_ranking_question_init(self): - question = rg.RankingQuestion(name="ranking_question", values=["rank-a", "rank-b"]) + question = ex.RankingQuestion(name="ranking_question", values=["rank-a", "rank-b"]) assert question.name == "ranking_question" assert question.values == ["rank-a", "rank-b"] diff --git a/extralit/tests/unit/test_settings/test_span_question.py b/extralit/tests/unit/test_settings/test_span_question.py index 46051a641..256969d29 100644 --- a/extralit/tests/unit/test_settings/test_span_question.py +++ b/extralit/tests/unit/test_settings/test_span_question.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,12 +12,12 @@ # See the License for the specific language governing permissions and # limitations under the License. -import extralit as rg +import extralit as ex class TestSpanQuestions: def test_create_question(self): - question = rg.SpanQuestion( + question = ex.SpanQuestion( name="span_question", field="field", allow_overlapping=True, labels=["label1", "label2", "label3"] ) assert question.name == "span_question" @@ -27,21 +27,21 @@ def test_create_question(self): assert question.visible_labels == 3 def test_change_field_value(self): - question = rg.SpanQuestion( + question = ex.SpanQuestion( name="span_question", field="field", allow_overlapping=True, labels=["label1", "label2"] ) question.field = "new_field" assert question.field == "new_field" def test_change_allow_overlapping_value(self): - question = rg.SpanQuestion( + question = ex.SpanQuestion( name="span_question", field="field", allow_overlapping=True, labels=["label1", "label2"] ) question.allow_overlapping = False assert question.allow_overlapping is False def test_change_labels_value(self): - question = rg.SpanQuestion( + question = ex.SpanQuestion( name="span_question", field="field", allow_overlapping=True, labels=["label1", "label2", "label3"] ) question.labels = ["label1", "label2"] From ee4b0923b788ff45da10aef5527ecf3240ca1cf8 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 10:03:09 -0700 Subject: [PATCH 12/23] updated client.Argilla to client.Extralit --- .../oauth/_provider/useOAuthViewModel.ts | 2 +- codecov.yml | 4 --- .../src/extralit_server/errors/base_errors.py | 30 +++++++------------ .../test_create_dataset_records_bulk.py | 12 ++++---- .../v1/datasets/test_export_dataset_to_hub.py | 14 ++++----- .../v1/datasets/test_get_dataset_progress.py | 29 +++++++++--------- .../test_get_dataset_users_progress.py | 24 +++++++-------- ...test_create_current_user_responses_bulk.py | 24 +++++++-------- .../unit/api/handlers/v1/test_datasets.py | 6 ++-- .../api/handlers/v1/users/test_update_user.py | 28 ++++++++--------- .../tests/unit/commons/test_telemetry.py | 2 +- .../tests/unit/errors/test_errors.py | 22 +++++++------- extralit/docs/reference/argilla/client.md | 2 +- .../unit/api/test_workspace_documents_api.py | 8 ++--- extralit/tests/unit/test_interface.py | 10 +++---- 15 files changed, 102 insertions(+), 115 deletions(-) diff --git a/argilla-frontend/pages/oauth/_provider/useOAuthViewModel.ts b/argilla-frontend/pages/oauth/_provider/useOAuthViewModel.ts index 0febbd14a..66ee5ce67 100644 --- a/argilla-frontend/pages/oauth/_provider/useOAuthViewModel.ts +++ b/argilla-frontend/pages/oauth/_provider/useOAuthViewModel.ts @@ -32,7 +32,7 @@ export const useOAuthViewModel = () => { redirect(); } catch { notification.notify({ - message: t("argilla.api.errors::UnauthorizedError"), + message: t("extralit.api.errors::UnauthorizedError"), type: "danger", }); router.go("/"); diff --git a/codecov.yml b/codecov.yml index 4824b23e8..2cab1dd0c 100644 --- a/codecov.yml +++ b/codecov.yml @@ -20,10 +20,6 @@ flags: paths: - extralit/src/extralit/ carryforward: true - argilla_v1: - paths: - - argilla-v1/src/argilla_v1/ - carryforward: true extralit_server: paths: - extralit-server/ diff --git a/extralit-server/src/extralit_server/errors/base_errors.py b/extralit-server/src/extralit_server/errors/base_errors.py index f5567ea74..9bd8903bc 100644 --- a/extralit-server/src/extralit_server/errors/base_errors.py +++ b/extralit-server/src/extralit_server/errors/base_errors.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typing import Any, Optional, Type, Union @@ -39,7 +39,7 @@ def api_documentation(cls): @classmethod def get_error_code(cls): - return f"argilla.api.errors::{cls.__name__}" + return f"extralit.api.errors::{cls.__name__}" @property def code(self) -> str: @@ -136,26 +136,18 @@ def __init__(self): class WrongInputParamError(BadRequestError): """Error related with input params in general""" - pass - class InvalidTextSearchError(BadRequestError): """Error related with input params in search""" - pass - class WrongTaskError(BadRequestError): """Error raised when provided task cannot be processed with requested entity""" - pass - class MissingInputParamError(BadRequestError): """Error when some required parameter is missing for operation""" - pass - class EntityAlreadyExistsError(ServerError): """Error raised when entity was created""" diff --git a/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py index 78511a429..662dcbe7f 100644 --- a/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py +++ b/extralit-server/tests/unit/api/handlers/v1/datasets/records/records_bulk/test_create_dataset_records_bulk.py @@ -548,7 +548,7 @@ async def test_create_dataset_records_bulk_with_chat_field_empty_values( assert response.status_code == 422 assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -659,7 +659,7 @@ async def test_create_dataset_records_bulk_with_chat_field_without_content_key( assert response.status_code == 422 assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -744,7 +744,7 @@ async def test_create_dataset_records_bulk_with_wrong_custom_field_value( 1, { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -771,7 +771,7 @@ async def test_create_dataset_records_bulk_with_wrong_custom_field_value( 1.0, { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -798,7 +798,7 @@ async def test_create_dataset_records_bulk_with_wrong_custom_field_value( True, { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -825,7 +825,7 @@ async def test_create_dataset_records_bulk_with_wrong_custom_field_value( ["wrong", "value"], { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { diff --git a/extralit-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py index 49d62d40b..efd5e616b 100644 --- a/extralit-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py +++ b/extralit-server/tests/unit/api/handlers/v1/datasets/test_export_dataset_to_hub.py @@ -140,7 +140,7 @@ async def test_export_dataset_to_hub_as_admin_from_different_workspace(self, asy assert response.status_code == 403 assert response.json() == { "detail": { - "code": "argilla.api.errors::ForbiddenOperationError", + "code": "extralit.api.errors::ForbiddenOperationError", "params": {"detail": "Operation not allowed"}, }, } @@ -166,7 +166,7 @@ async def test_export_dataset_to_hub_as_annotator(self, async_client: AsyncClien assert response.status_code == 403 assert response.json() == { "detail": { - "code": "argilla.api.errors::ForbiddenOperationError", + "code": "extralit.api.errors::ForbiddenOperationError", "params": {"detail": "Operation not allowed"}, }, } @@ -190,7 +190,7 @@ async def test_export_dataset_to_hub_without_authentication(self, async_client: assert response.status_code == 401 assert response.json() == { "detail": { - "code": "argilla.api.errors::UnauthorizedError", + "code": "extralit.api.errors::UnauthorizedError", "params": { "detail": "Could not validate credentials", }, @@ -241,7 +241,7 @@ async def test_export_dataset_with_empty_name(self, async_client: AsyncClient, o assert response.status_code == 422 assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -275,7 +275,7 @@ async def test_export_dataset_with_empty_subset(self, async_client: AsyncClient, assert response.status_code == 422 assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -309,7 +309,7 @@ async def test_export_dataset_with_empty_split(self, async_client: AsyncClient, assert response.status_code == 422 assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -342,7 +342,7 @@ async def test_export_dataset_with_empty_token(self, async_client: AsyncClient, assert response.status_code == 422 assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { diff --git a/extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py index fb56b839f..95e47a4cd 100644 --- a/extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py +++ b/extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_progress.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest @@ -18,11 +18,10 @@ from httpx import AsyncClient from extralit_server.constants import API_KEY_HEADER_NAME -from extralit_server.enums import UserRole, RecordStatus +from extralit_server.enums import UserRole from extralit_server.search_engine import SearchEngine -from tests.factories import DatasetFactory, RecordFactory, UserFactory, DatasetUserFactory -from tests.unit.conftest import annotator +from tests.factories import DatasetFactory, UserFactory, DatasetUserFactory @pytest.mark.asyncio @@ -105,7 +104,7 @@ async def test_get_dataset_progress_as_restricted_user_from_different_workspace( assert response.status_code == 403 assert response.json() == { "detail": { - "code": "argilla.api.errors::ForbiddenOperationError", + "code": "extralit.api.errors::ForbiddenOperationError", "params": {"detail": "Operation not allowed"}, }, } @@ -116,7 +115,7 @@ async def test_get_dataset_progress_without_authentication(self, async_client: A assert response.status_code == 401 assert response.json() == { "detail": { - "code": "argilla.api.errors::UnauthorizedError", + "code": "extralit.api.errors::UnauthorizedError", "params": {"detail": "Could not validate credentials"}, }, } diff --git a/extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py b/extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py index f7b817b37..97ec05803 100644 --- a/extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py +++ b/extralit-server/tests/unit/api/handlers/v1/datasets/test_get_dataset_users_progress.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from uuid import UUID, uuid4 @@ -176,7 +176,7 @@ async def test_get_dataset_users_progress_as_restricted_user_from_different_work assert response.status_code == 403 assert response.json() == { "detail": { - "code": "argilla.api.errors::ForbiddenOperationError", + "code": "extralit.api.errors::ForbiddenOperationError", "params": {"detail": "Operation not allowed"}, }, } @@ -187,7 +187,7 @@ async def test_get_dataset_users_progress_without_authentication(self, async_cli assert response.status_code == 401 assert response.json() == { "detail": { - "code": "argilla.api.errors::UnauthorizedError", + "code": "extralit.api.errors::UnauthorizedError", "params": {"detail": "Could not validate credentials"}, }, } diff --git a/extralit-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py b/extralit-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py index bda017c32..62216f40a 100644 --- a/extralit-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py +++ b/extralit-server/tests/unit/api/handlers/v1/responses/test_create_current_user_responses_bulk.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os import pytest @@ -148,7 +148,7 @@ async def test_multiple_responses( { "item": None, "error": { - "detail": "argilla.api.errors::ForbiddenOperationError(detail=Operation not allowed)", + "detail": "extralit.api.errors::ForbiddenOperationError(detail=Operation not allowed)", }, }, ], @@ -381,7 +381,7 @@ async def test_unauthorized_response( { "item": None, "error": { - "detail": "argilla.api.errors::ForbiddenOperationError(detail=Operation not allowed)", + "detail": "extralit.api.errors::ForbiddenOperationError(detail=Operation not allowed)", }, }, ], diff --git a/extralit-server/tests/unit/api/handlers/v1/test_datasets.py b/extralit-server/tests/unit/api/handlers/v1/test_datasets.py index b9ba307dd..35a32f7cd 100644 --- a/extralit-server/tests/unit/api/handlers/v1/test_datasets.py +++ b/extralit-server/tests/unit/api/handlers/v1/test_datasets.py @@ -1625,7 +1625,7 @@ async def test_create_dataset_records_with_duplicated_response_for_an_user( assert response.status_code == 422, response.json() assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -1735,7 +1735,7 @@ async def test_create_dataset_records_with_wrong_value_field( assert response.status_code == 422 assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -1845,7 +1845,7 @@ async def test_create_dataset_records_with_wrong_optional_fields( assert response.status_code == 422 assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { diff --git a/extralit-server/tests/unit/api/handlers/v1/users/test_update_user.py b/extralit-server/tests/unit/api/handlers/v1/users/test_update_user.py index 15078aa58..b2bc2c3bb 100644 --- a/extralit-server/tests/unit/api/handlers/v1/users/test_update_user.py +++ b/extralit-server/tests/unit/api/handlers/v1/users/test_update_user.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import pytest from uuid import UUID, uuid4 @@ -19,7 +19,7 @@ from extralit_server.enums import UserRole from extralit_server.models import User from httpx import AsyncClient -from sqlalchemy import func, select +from sqlalchemy import select from sqlalchemy.ext.asyncio import AsyncSession from tests.factories import UserFactory @@ -176,7 +176,7 @@ async def test_update_user_with_none_first_name( assert response.status_code == 422 assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -230,7 +230,7 @@ async def test_update_user_with_none_username( assert response.status_code == 422 assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { @@ -259,7 +259,7 @@ async def test_update_user_with_none_password( assert response.status_code == 422 assert response.json() == { "detail": { - "code": "argilla.api.errors::ValidationError", + "code": "extralit.api.errors::ValidationError", "params": { "errors": [ { diff --git a/extralit-server/tests/unit/commons/test_telemetry.py b/extralit-server/tests/unit/commons/test_telemetry.py index 855481f15..dc952b511 100644 --- a/extralit-server/tests/unit/commons/test_telemetry.py +++ b/extralit-server/tests/unit/commons/test_telemetry.py @@ -154,7 +154,7 @@ async def test_track_api_request_call_with_error_and_exception( "request.user-agent": None, "request.accept-language": None, "response.status": "500", - "response.error_code": "argilla.api.errors::ServerError", + "response.error_code": "extralit.api.errors::ServerError", }, ) diff --git a/extralit-server/tests/unit/errors/test_errors.py b/extralit-server/tests/unit/errors/test_errors.py index 5ffb2effb..0ff1dae91 100644 --- a/extralit-server/tests/unit/errors/test_errors.py +++ b/extralit-server/tests/unit/errors/test_errors.py @@ -1,20 +1,20 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from extralit_server.errors import GenericServerError def test_generic_error(): err = GenericServerError(error=ValueError("this is an error")) - assert str(err) == "argilla.api.errors::GenericServerError(type=builtins.ValueError,message=this is an error)" + assert str(err) == "extralit.api.errors::GenericServerError(type=builtins.ValueError,message=this is an error)" diff --git a/extralit/docs/reference/argilla/client.md b/extralit/docs/reference/argilla/client.md index 2fb2d2560..56488b156 100644 --- a/extralit/docs/reference/argilla/client.md +++ b/extralit/docs/reference/argilla/client.md @@ -54,7 +54,7 @@ for dataset in my_workspace.datasets: --- -::: src.argilla.client.core.Argilla +::: src.argilla.client.core.Extralit ::: src.argilla.client.resources.Users ::: src.argilla.client.resources.Workspaces ::: src.argilla.client.resources.Datasets diff --git a/extralit/tests/unit/api/test_workspace_documents_api.py b/extralit/tests/unit/api/test_workspace_documents_api.py index 83d07c216..e89292627 100644 --- a/extralit/tests/unit/api/test_workspace_documents_api.py +++ b/extralit/tests/unit/api/test_workspace_documents_api.py @@ -165,7 +165,7 @@ def test_document_get(self, mock_client, sample_document_id): documents_api.get.return_value = retrieved_model # Call get - with patch("extralit.documents._resource.Argilla._get_default", return_value=client): + with patch("extralit.documents._resource.Extralit._get_default", return_value=client): doc = Document.get(id=sample_document_id) # Verify API was called @@ -223,7 +223,7 @@ def test_document_factory_methods(self, mock_client, sample_workspace_id): """Test Document factory methods.""" client, documents_api = mock_client - with patch("extralit.documents._resource.Argilla._get_default", return_value=client): + with patch("extralit.documents._resource.Extralit._get_default", return_value=client): # Test from_pmid doc_pmid = Document.from_pmid(pmid="12345678", workspace_id=sample_workspace_id) assert doc_pmid.pmid == "12345678" @@ -244,7 +244,7 @@ def test_document_from_file_local(self, mock_client, sample_workspace_id): tmp_file_path = tmp_file.name try: - with patch("extralit.documents._resource.Argilla._get_default", return_value=client): + with patch("extralit.documents._resource.Extralit._get_default", return_value=client): # Test from_file with local path doc = Document.from_file( file_path_or_url=tmp_file_path, reference="LocalFile2023", workspace_id=sample_workspace_id @@ -262,7 +262,7 @@ def test_document_from_file_url(self, mock_client, sample_workspace_id): """Test Document.from_file() with URL.""" client, documents_api = mock_client - with patch("extralit.documents._resource.Argilla._get_default", return_value=client): + with patch("extralit.documents._resource.Extralit._get_default", return_value=client): # Test from_file with URL doc = Document.from_file( file_path_or_url="https://example.com/paper.pdf", diff --git a/extralit/tests/unit/test_interface.py b/extralit/tests/unit/test_interface.py index e116522ee..468547474 100644 --- a/extralit/tests/unit/test_interface.py +++ b/extralit/tests/unit/test_interface.py @@ -14,23 +14,23 @@ from unittest import mock -import extralit as rg +import extralit as ex class TestArgilla: def test_default_client(self): - with mock.patch("extralit.Argilla") as mock_client: + with mock.patch("extralit.Extralit") as mock_client: mock_client.return_value.api_url = "http://localhost:6900" mock_client.return_value.api_key = "admin.apikey" mock_client.return_value.workspace = "argilla" - client = rg.Extralit(api_url="http://localhost:6900", api_key="admin.apikey") + client = ex.Extralit(api_url="http://localhost:6900", api_key="admin.apikey") assert client.api_url == "http://localhost:6900" assert client.api_key == "admin.apikey" def test_multiple_clients(self): - local_client = rg.Extralit(api_url="http://localhost:6900", api_key="admin.apikey") - remote_client = rg.Extralit(api_url="http://argilla.production.net", api_key="admin.apikey") + local_client = ex.Extralit(api_url="http://localhost:6900", api_key="admin.apikey") + remote_client = ex.Extralit(api_url="http://argilla.production.net", api_key="admin.apikey") assert local_client.api_url == "http://localhost:6900" assert remote_client.api_url == "http://argilla.production.net" From 1be0449328fccdd393d6a20b00cd0f15c110c8e7 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 10:10:25 -0700 Subject: [PATCH 13/23] changed ARGILLA_ to EXTRALIT_ --- .../extralit-server.build-docker-images.yml | 4 +- .github/workflows/extralit-server.yml | 8 +-- .github/workflows/extralit.yml | 10 ++-- .kiro/steering/tech.md | 6 +- Tiltfile | 22 +++---- .../docker/nginx/docker-compose.yaml | 2 +- .../docker/traefik/docker-compose.yaml | 2 +- .../deployments/k8s/argilla-chart/README.md | 4 +- .../argilla-chart/templates/deployment.yaml | 12 ++-- .../templates/worker-deployment.yaml | 6 +- .../deployments/k8s/extralit-configs.yaml | 2 +- .../deployments/k8s/extralit-deployment.yaml | 6 +- .../k8s/extralit-server-deployment.yaml | 51 ++++++++-------- examples/webhooks/basic-webhooks/README.md | 4 +- examples/webhooks/basic-webhooks/main.py | 4 +- extralit-server/.env.dev | 22 +++---- extralit-server/.env.test | 4 +- .../docker/extralit-hf-spaces/Dockerfile | 6 +- extralit-server/docker/server/Dockerfile | 8 +-- .../server/dev.extralit_server.dockerfile | 6 +- .../server/scripts/start_extralit_server.sh | 12 ++-- extralit-server/pyproject.toml | 2 +- .../extralit_server/api/schemas/v1/chat.py | 28 ++++----- .../cli/database/users/migrate.py | 22 +++---- .../src/extralit_server/cli/rich.py | 26 ++++---- .../src/extralit_server/security/settings.py | 22 +++---- .../src/extralit_server/settings.py | 6 +- .../src/extralit_server/telemetry/_helpers.py | 22 +++---- .../unit/cli/database/users/test_migrate.py | 26 ++++---- .../tests/unit/commons/test_settings.py | 20 +++---- .../contexts/hub/test_hub_dataset_exporter.py | 4 +- .../tests/unit/security/test_settings.py | 32 +++++----- extralit/.env.test | 4 +- extralit/docs/admin_guide/k8s_deployment.md | 4 +- extralit/docs/admin_guide/upgrading.md | 2 +- .../docs/getting_started/development_setup.md | 16 ++--- ...how-to-configure-argilla-on-huggingface.md | 2 +- extralit/docs/getting_started/quickstart.md | 2 +- .../reference/argilla-server/configuration.md | 60 +++++++++---------- .../argilla-server/oauth2_configuration.md | 22 +++---- .../reference/argilla-server/sso_keycloak.md | 16 ++--- .../docs/user_guide/command_line_interface.md | 4 +- extralit/src/extralit/_api/_client.py | 10 ++-- extralit/src/extralit/_api/_token.py | 4 +- extralit/src/extralit/_helpers/_deploy.py | 4 +- extralit/src/extralit/client/core.py | 8 +-- .../datasets/_io/card/_dataset_card.py | 6 +- .../tests/integration/test_export_dataset.py | 4 +- .../tests/integration/test_import_features.py | 4 +- 49 files changed, 292 insertions(+), 291 deletions(-) diff --git a/.github/workflows/extralit-server.build-docker-images.yml b/.github/workflows/extralit-server.build-docker-images.yml index c1e960516..7867decc9 100644 --- a/.github/workflows/extralit-server.build-docker-images.yml +++ b/.github/workflows/extralit-server.build-docker-images.yml @@ -119,7 +119,7 @@ jobs: # labels: ${{ steps.meta.outputs.labels }} # build-args: | # extralit_server_IMAGE=${{ env.SERVER_DOCKER_IMAGE }} - # ARGILLA_VERSION=${{ env.IMAGE_TAG }} + # EXTRALIT_VERSION=${{ env.IMAGE_TAG }} # push: true # - name: Push latest `argilla-hf-spaces` image @@ -132,7 +132,7 @@ jobs: # labels: ${{ steps.meta.outputs.labels }} # build-args: | # extralit_server_IMAGE=${{ env.SERVER_DOCKER_IMAGE }} - # ARGILLA_VERSION=${{ env.IMAGE_TAG }} + # EXTRALIT_VERSION=${{ env.IMAGE_TAG }} # push: true - name: Trigger HF-Space build diff --git a/.github/workflows/extralit-server.yml b/.github/workflows/extralit-server.yml index 3ebd6d8b2..d69b90e5a 100644 --- a/.github/workflows/extralit-server.yml +++ b/.github/workflows/extralit-server.yml @@ -112,11 +112,11 @@ jobs: id: run-tests continue-on-error: true env: - HF_TOKEN_ARGILLA_INTERNAL_TESTING: ${{ secrets.HF_TOKEN_ARGILLA_INTERNAL_TESTING }} + HF_TOKEN_EXTRALIT_INTERNAL_TESTING: ${{ secrets.HF_TOKEN_EXTRALIT_INTERNAL_TESTING }} run: | - ARGILLA_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/argilla - ARGILLA_ELASTICSEARCH=http://localhost:9200 - ARGILLA_SEARCH_ENGINE=elasticsearch + EXTRALIT_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/argilla + EXTRALIT_ELASTICSEARCH=http://localhost:9200 + EXTRALIT_SEARCH_ENGINE=elasticsearch pdm test-cov tests/unit - name: Upload test coverage diff --git a/.github/workflows/extralit.yml b/.github/workflows/extralit.yml index eefdedbf6..8e3be8227 100644 --- a/.github/workflows/extralit.yml +++ b/.github/workflows/extralit.yml @@ -36,15 +36,15 @@ jobs: ports: - 6900:6900 env: - ARGILLA_ENABLE_TELEMETRY: 0 + EXTRALIT_ENABLE_TELEMETRY: 0 # Set credentials USERNAME: argilla PASSWORD: 12345678 API_KEY: extralit.apikey # Configure storage to use local files instead of MinIO - ARGILLA_S3_ENDPOINT: "" - ARGILLA_S3_ACCESS_KEY: "" - ARGILLA_S3_SECRET_KEY: "" + EXTRALIT_S3_ENDPOINT: "" + EXTRALIT_S3_ACCESS_KEY: "" + EXTRALIT_S3_SECRET_KEY: "" runs-on: ubuntu-22.04 defaults: run: @@ -88,7 +88,7 @@ jobs: chmod -R 777 /tmp/argilla-files - name: Set huggingface hub credentials run: | - echo "HF_TOKEN_ARGILLA_INTERNAL_TESTING=${{ secrets.HF_TOKEN_ARGILLA_INTERNAL_TESTING }}" >> "$GITHUB_ENV" + echo "HF_TOKEN_EXTRALIT_INTERNAL_TESTING=${{ secrets.HF_TOKEN_EXTRALIT_INTERNAL_TESTING }}" >> "$GITHUB_ENV" echo "Enable HF access token" - name: Run unit tests id: tests-unit diff --git a/.kiro/steering/tech.md b/.kiro/steering/tech.md index ead15567a..16eecc60d 100644 --- a/.kiro/steering/tech.md +++ b/.kiro/steering/tech.md @@ -91,9 +91,9 @@ tilt down # Stop k8s environment ``` ## Environment Variables -- `ARGILLA_DATABASE_URL`: Database connection string -- `ARGILLA_ELASTICSEARCH`: ElasticSearch URL -- `ARGILLA_REDIS_URL`: Redis connection for background jobs +- `EXTRALIT_DATABASE_URL`: Database connection string +- `EXTRALIT_ELASTICSEARCH`: ElasticSearch URL +- `EXTRALIT_REDIS_URL`: Redis connection for background jobs - `API_BASE_URL`: Backend API URL for frontend - `OPENAI_API_KEY`: For LLM integration - `S3_ENDPOINT`, `S3_ACCESS_KEY`, `S3_SECRET_KEY`: Object storage \ No newline at end of file diff --git a/Tiltfile b/Tiltfile index 714d4dbd7..e99160250 100644 --- a/Tiltfile +++ b/Tiltfile @@ -11,9 +11,9 @@ ENV = str(local('echo $ENV')).strip() or 'dev' USERS_DB = str(local('echo $USERS_DB')).strip() DOCKER_REPO = str(local('echo $DOCKER_REPO')).strip() or 'localhost:5005' -ARGILLA_DATABASE_URL = str(local('echo $ARGILLA_DATABASE_URL')).strip() -if ARGILLA_DATABASE_URL: - print("Using external database with ARGILLA_DATABASE_URL envvar, skipping `main-db` deployment") +EXTRALIT_DATABASE_URL = str(local('echo $EXTRALIT_DATABASE_URL')).strip() +if EXTRALIT_DATABASE_URL: + print("Using external database with EXTRALIT_DATABASE_URL envvar, skipping `main-db` deployment") S3_ENDPOINT = str(local('echo $S3_ENDPOINT')).strip() S3_ACCESS_KEY = str(local('echo $S3_ACCESS_KEY')).strip() S3_SECRET_KEY = str(local('echo $S3_SECRET_KEY')).strip() @@ -51,7 +51,7 @@ k8s_resource( # PostgreSQL is the database for extralit-server helm_repo('bitnami', 'https://charts.bitnami.com/bitnami', labels=['helm'], resource_name='bitnami-helm') -if not ARGILLA_DATABASE_URL: +if not EXTRALIT_DATABASE_URL: helm_resource( name='main-db', chart='bitnami/postgresql', @@ -104,17 +104,17 @@ for o in extralit_server_k8s_yaml: for container in o['spec']['template']['spec']['containers']: if container['name'] == 'extralit-server': container['image'] = "{DOCKER_REPO}/extralit-server".format(DOCKER_REPO=DOCKER_REPO) - if ARGILLA_DATABASE_URL: + if EXTRALIT_DATABASE_URL: container['env'].extend([ - {'name': 'ARGILLA_DATABASE_URL', 'value': ARGILLA_DATABASE_URL}, + {'name': 'EXTRALIT_DATABASE_URL', 'value': EXTRALIT_DATABASE_URL}, {'name': 'POSTGRES_HOST', 'value': ""}, {'name': 'POSTGRES_PASSWORD', 'value': ""}, ]) if S3_ENDPOINT and S3_ACCESS_KEY and S3_SECRET_KEY: container['env'].extend([ - {'name': 'ARGILLA_S3_ENDPOINT', 'value': S3_ENDPOINT}, - {'name': 'ARGILLA_S3_ACCESS_KEY', 'value': S3_ACCESS_KEY}, - {'name': 'ARGILLA_S3_SECRET_KEY', 'value': S3_SECRET_KEY} + {'name': 'EXTRALIT_S3_ENDPOINT', 'value': S3_ENDPOINT}, + {'name': 'EXTRALIT_S3_ACCESS_KEY', 'value': S3_ACCESS_KEY}, + {'name': 'EXTRALIT_S3_SECRET_KEY', 'value': S3_SECRET_KEY} ]) k8s_yaml([ @@ -127,7 +127,7 @@ k8s_resource( 'extralit-server', port_forwards=['6900'], labels=['extralit-server'], - resource_deps=['redis', 'main-db', 'elasticsearch'] if not ARGILLA_DATABASE_URL else ['redis', 'elasticsearch'], + resource_deps=['redis', 'main-db', 'elasticsearch'] if not EXTRALIT_DATABASE_URL else ['redis', 'elasticsearch'], ) # Langfuse Observability server @@ -137,7 +137,7 @@ k8s_resource( port_forwards=['4000'], labels=['extralit'], auto_init=False, - resource_deps=['main-db'] if not ARGILLA_DATABASE_URL else [], + resource_deps=['main-db'] if not EXTRALIT_DATABASE_URL else [], ) # MinIO S3 storage diff --git a/examples/deployments/docker/nginx/docker-compose.yaml b/examples/deployments/docker/nginx/docker-compose.yaml index c0c272d8a..8ff766c97 100644 --- a/examples/deployments/docker/nginx/docker-compose.yaml +++ b/examples/deployments/docker/nginx/docker-compose.yaml @@ -13,7 +13,7 @@ services: image: extralitdev/argilla-hf-spaces:latest environment: HF_HUB_DISABLE_TELEMETRY: 1 - ARGILLA_BASE_URL: /argilla + EXTRALIT_BASE_URL: /argilla USERNAME: argilla PASSWORD: 12345678 diff --git a/examples/deployments/docker/traefik/docker-compose.yaml b/examples/deployments/docker/traefik/docker-compose.yaml index b65428ac5..a76d6ff17 100644 --- a/examples/deployments/docker/traefik/docker-compose.yaml +++ b/examples/deployments/docker/traefik/docker-compose.yaml @@ -20,7 +20,7 @@ services: image: extralitdev/argilla-hf-spaces:latest environment: HF_HUB_DISABLE_TELEMETRY: 1 - ARGILLA_BASE_URL: /argilla + EXTRALIT_BASE_URL: /argilla USERNAME: argilla PASSWORD: 12345678 API_KEY: extralit.apikey diff --git a/examples/deployments/k8s/argilla-chart/README.md b/examples/deployments/k8s/argilla-chart/README.md index 6736e6a1d..68e9b3d78 100644 --- a/examples/deployments/k8s/argilla-chart/README.md +++ b/examples/deployments/k8s/argilla-chart/README.md @@ -93,8 +93,8 @@ Argilla will be accessible at http://localhost:6900. Set the following environment variables: ```bash -export ARGILLA_API_URL=http://localhost:6900 -export ARGILLA_API_KEY=extralit.apikey +export EXTRALIT_API_URL=http://localhost:6900 +export EXTRALIT_API_KEY=extralit.apikey ``` Run the following command to execute the integration tests: diff --git a/examples/deployments/k8s/argilla-chart/templates/deployment.yaml b/examples/deployments/k8s/argilla-chart/templates/deployment.yaml index e47af4bda..8ff76d145 100644 --- a/examples/deployments/k8s/argilla-chart/templates/deployment.yaml +++ b/examples/deployments/k8s/argilla-chart/templates/deployment.yaml @@ -29,16 +29,16 @@ spec: - name: {{ .Chart.Name }} image: "{{ .Values.argilla.image.repository }}:{{ .Values.argilla.image.tag }}" env: - - name: ARGILLA_ELASTICSEARCH + - name: EXTRALIT_ELASTICSEARCH # TODO: modify this to use externalElasticsearch.host if elasticsearch.useOperator is false value: {{if .Values.elasticsearch.useOperator}}"http://{{ include "argilla.fullname" . }}-es-http:9200"{{else}}"{{ .Values.externalElasticsearch.host }}:{{ .Values.externalElasticsearch.port }}"{{end}} - - name: ARGILLA_ELASTICSEARCH_SSL_VERIFY + - name: EXTRALIT_ELASTICSEARCH_SSL_VERIFY value: {{ .Values.elasticsearch.sslVerify | quote }} - - name: ARGILLA_AUTH_SECRET_KEY + - name: EXTRALIT_AUTH_SECRET_KEY value: {{ .Values.argilla.authSecretKey | quote }} - - name: ARGILLA_REDIS_URL + - name: EXTRALIT_REDIS_URL value: {{if .Values.externalRedis.enabled}}"{{ .Values.externalRedis.url }}"{{else}}"redis://{{ .Release.Name }}-redis-master:6379/0"{{end}} - - name: ARGILLA_REDIS_USE_CLUSTER + - name: EXTRALIT_REDIS_USE_CLUSTER value: {{ if and .Values.externalRedis.enabled .Values.externalRedis.is_redis_cluster }} "True" {{ else }} "False" {{ end }} - name: USERNAME value: {{ .Values.argilla.auth.username | quote }} @@ -47,7 +47,7 @@ spec: - name: API_KEY value: {{ .Values.argilla.auth.apiKey | quote }} {{- if .Values.argilla.persistence.enabled }} - - name: ARGILLA_HOME_PATH + - name: EXTRALIT_HOME_PATH value: {{ .Values.argilla.persistence.mountPath | quote }} {{- end }} ports: diff --git a/examples/deployments/k8s/argilla-chart/templates/worker-deployment.yaml b/examples/deployments/k8s/argilla-chart/templates/worker-deployment.yaml index ba4ae8eaf..f5ae8e7b9 100644 --- a/examples/deployments/k8s/argilla-chart/templates/worker-deployment.yaml +++ b/examples/deployments/k8s/argilla-chart/templates/worker-deployment.yaml @@ -21,14 +21,14 @@ spec: - name: {{ .Chart.Name }}-worker image: "{{ .Values.argilla.image.repository }}:{{ .Values.argilla.image.tag }}" env: - - name: ARGILLA_ELASTICSEARCH + - name: EXTRALIT_ELASTICSEARCH value: {{if .Values.elasticsearch.useOperator}}"http://{{ include "argilla.fullname" . }}-es-http:9200"{{else}}"{{ .Values.externalElasticsearch.host }}:{{ .Values.externalElasticsearch.port }}"{{end}} - - name: ARGILLA_REDIS_URL + - name: EXTRALIT_REDIS_URL value: redis://{{ .Release.Name }}-redis-master:6379/0 - name: BACKGROUND_NUM_WORKERS value: "{{ .Values.worker.numWorkers | default 2 }}" {{- if .Values.argilla.persistence.enabled }} - - name: ARGILLA_HOME_PATH + - name: EXTRALIT_HOME_PATH value: {{ .Values.argilla.persistence.mountPath | quote }} {{- end }} command: ["sh", "-c", "python -m extralit_server worker --num-workers ${BACKGROUND_NUM_WORKERS}"] diff --git a/examples/deployments/k8s/extralit-configs.yaml b/examples/deployments/k8s/extralit-configs.yaml index 1dee52654..2f1ec41a0 100644 --- a/examples/deployments/k8s/extralit-configs.yaml +++ b/examples/deployments/k8s/extralit-configs.yaml @@ -1,6 +1,6 @@ apiVersion: v1 data: - ARGILLA_API_KEY: Mzg2YTU4MDYtMDE4Mi00MWY2LTgwNzYtZjRiNTU3ODE4ZjBi + EXTRALIT_API_KEY: Mzg2YTU4MDYtMDE4Mi00MWY2LTgwNzYtZjRiNTU3ODE4ZjBi LANGFUSE_PUBLIC_KEY: cGstbGYtNDgxZTdmMTItZmJjOC00MTM2LTk0NDAtNzk2NTdhMTU2NDk5 LANGFUSE_SECRET_KEY: c2stbGYtN2JiODM1ODktOTcyOC00MWI5LWI0OWEtYTJmZTYxNTZiYWFk OPENAI_API_KEY: c2stbGYtN2JiODM1ODktOTcyOC00MWI5LWI0OWEtYTJmZTYxNTZiYWFk diff --git a/examples/deployments/k8s/extralit-deployment.yaml b/examples/deployments/k8s/extralit-deployment.yaml index a7be6c268..e875eb2a0 100644 --- a/examples/deployments/k8s/extralit-deployment.yaml +++ b/examples/deployments/k8s/extralit-deployment.yaml @@ -32,13 +32,13 @@ spec: secretKeyRef: name: extralit-secrets key: OPENAI_API_KEY - - name: ARGILLA_BASE_URL + - name: EXTRALIT_BASE_URL value: "http://extralit-server:6900" - - name: ARGILLA_API_KEY + - name: EXTRALIT_API_KEY valueFrom: secretKeyRef: name: extralit-secrets - key: ARGILLA_API_KEY + key: EXTRALIT_API_KEY - name: WCS_HTTP_URL value: "http://weaviate:80" - name: WCS_GRPC_URL diff --git a/examples/deployments/k8s/extralit-server-deployment.yaml b/examples/deployments/k8s/extralit-server-deployment.yaml index 434810b25..37560390d 100644 --- a/examples/deployments/k8s/extralit-server-deployment.yaml +++ b/examples/deployments/k8s/extralit-server-deployment.yaml @@ -22,20 +22,23 @@ spec: affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: - - weight: 1 - preference: - matchExpressions: - - key: role - operator: In - values: - - extralit-server + - weight: 1 + preference: + matchExpressions: + - key: role + operator: In + values: + - extralit-server initContainers: - name: wait-for-elasticsearch image: alpine/curl:latest - command: [ "sh", "-c", - "ELASTICSEARCH_URL='http://elasticsearch-master:9200'; status_code=$(curl -s -k -o /dev/null -w '%{http_code}' $ELASTICSEARCH_URL); - while [ $status_code -ne 200 ]; do sleep 5; status_code=$(curl -s -o /dev/null -w '%{http_code}' $ELASTICSEARCH_URL); - echo Sleeping...; done; echo Elasticsearch Connected " ] + command: [ + "sh", + "-c", + "ELASTICSEARCH_URL='http://elasticsearch-master:9200'; status_code=$(curl -s -k -o /dev/null -w '%{http_code}' $ELASTICSEARCH_URL); + while [ $status_code -ne 200 ]; do sleep 5; status_code=$(curl -s -o /dev/null -w '%{http_code}' $ELASTICSEARCH_URL); + echo Sleeping...; done; echo Elasticsearch Connected ", + ] containers: - name: extralit-server image: extralit/extralit-server:latest @@ -49,39 +52,39 @@ spec: cpu: "2" memory: "2Gi" env: - - name: ARGILLA_ELASTICSEARCH_PROTOCOL + - name: EXTRALIT_ELASTICSEARCH_PROTOCOL value: "http" - - name: ARGILLA_ELASTICSEARCH_HOST + - name: EXTRALIT_ELASTICSEARCH_HOST value: "elasticsearch-master:9200" - - name: ARGILLA_ELASTIC_PASSWORD + - name: EXTRALIT_ELASTIC_PASSWORD valueFrom: secretKeyRef: name: elasticsearch-master-credentials key: password optional: true - - name: ARGILLA_ELASTICSEARCH_SSL_VERIFY + - name: EXTRALIT_ELASTICSEARCH_SSL_VERIFY value: "false" - # - name: ARGILLA_ELASTICSEARCH_CA_PATH + # - name: EXTRALIT_ELASTICSEARCH_CA_PATH # value: /usr/share/elasticsearch/config/certs/ca.crt - - name: ARGILLA_AUTH_SECRET_KEY + - name: EXTRALIT_AUTH_SECRET_KEY value: "CHANGE_ME" - - name: ARGILLA_CORS_ORIGINS + - name: EXTRALIT_CORS_ORIGINS value: '["*"]' - - name: ARGILLA_REDIS_URL + - name: EXTRALIT_REDIS_URL value: "redis://redis-master:6379/0" - - name: ARGILLA_EXTRALIT_URL + - name: EXTRALIT_EXTRALIT_URL value: "http://extralit-server:5555" - - name: ARGILLA_S3_ENDPOINT + - name: EXTRALIT_S3_ENDPOINT valueFrom: secretKeyRef: name: extralit-secrets key: S3_ENDPOINT - - name: ARGILLA_S3_ACCESS_KEY + - name: EXTRALIT_S3_ACCESS_KEY valueFrom: secretKeyRef: name: extralit-secrets key: S3_ACCESS_KEY - - name: ARGILLA_S3_SECRET_KEY + - name: EXTRALIT_S3_SECRET_KEY valueFrom: secretKeyRef: name: extralit-secrets @@ -101,4 +104,4 @@ spec: - name: elasticsearch-master-certs secret: secretName: elasticsearch-master-certs - optional: true \ No newline at end of file + optional: true diff --git a/examples/webhooks/basic-webhooks/README.md b/examples/webhooks/basic-webhooks/README.md index e6dea8078..42631daff 100644 --- a/examples/webhooks/basic-webhooks/README.md +++ b/examples/webhooks/basic-webhooks/README.md @@ -27,12 +27,12 @@ For more information on how to install the server, please refer to the [Extralit Once the argilla server is up and running, start the webhook server by running the following command: ```bash -ARGILLA_API_KEY=extralit.apikey \ +EXTRALIT_API_KEY=extralit.apikey \ WEBHOOK_SERVER_URL=http://host.docker.internal:8000 \ uvicorn main:server ``` -The `ARGILLA_API_KEY` environment variable should be set to the API key of the argilla server. +The `EXTRALIT_API_KEY` environment variable should be set to the API key of the argilla server. The `WEBHOOK_SERVER_URL` environment variable should be set to the URL where the webhook server is running. In this case, we are using `http://host.docker.internal:8000` because the webhook calls will be done inside a docker container. diff --git a/examples/webhooks/basic-webhooks/main.py b/examples/webhooks/basic-webhooks/main.py index dbde54a15..91586039f 100644 --- a/examples/webhooks/basic-webhooks/main.py +++ b/examples/webhooks/basic-webhooks/main.py @@ -4,8 +4,8 @@ import extralit as ex # Environment variables with defaults -API_KEY = os.environ.get("ARGILLA_API_KEY", "extralit.apikey") -API_URL = os.environ.get("ARGILLA_API_URL", "http://localhost:6900") +API_KEY = os.environ.get("EXTRALIT_API_KEY", "extralit.apikey") +API_URL = os.environ.get("EXTRALIT_API_URL", "http://localhost:6900") # Initialize Argilla client client = ex.Extralit(api_key=API_KEY, api_url=API_URL) diff --git a/extralit-server/.env.dev b/extralit-server/.env.dev index c25fc4370..9617b610b 100644 --- a/extralit-server/.env.dev +++ b/extralit-server/.env.dev @@ -1,22 +1,22 @@ OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES # Needed by RQ to work with forked processes on MacOS ALEMBIC_CONFIG=src/extralit_server/alembic.ini -ARGILLA_AUTH_SECRET_KEY=8VO7na5N/jQx+yP/N+HlE8q51vPdrxqlh6OzoebIyko= # With this we avoid using a different key every time the server is reloaded -ARGILLA_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/extralit-dev.db?check_same_thread=False +EXTRALIT_AUTH_SECRET_KEY=8VO7na5N/jQx+yP/N+HlE8q51vPdrxqlh6OzoebIyko= # With this we avoid using a different key every time the server is reloaded +EXTRALIT_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/extralit-dev.db?check_same_thread=False HF_HUB_DISABLE_TELEMETRY=1 # S3 Configuration (skipped to use LocalFileStorage) -# ARGILLA_S3_ENDPOINT=http://localhost:9000 -# ARGILLA_S3_ACCESS_KEY=minioadmin -# ARGILLA_S3_SECRET_KEY=minioadmin -# ARGILLA_S3_SECURE=false -# ARGILLA_S3_REGION=us-east-1 +# EXTRALIT_S3_ENDPOINT=http://localhost:9000 +# EXTRALIT_S3_ACCESS_KEY=minioadmin +# EXTRALIT_S3_SECRET_KEY=minioadmin +# EXTRALIT_S3_SECURE=false +# EXTRALIT_S3_REGION=us-east-1 # Extralit URL -ARGILLA_EXTRALIT_URL=http://localhost:6900 +EXTRALIT_EXTRALIT_URL=http://localhost:6900 # Search engine configuration -ARGILLA_SEARCH_ENGINE=elasticsearch -ARGILLA_ELASTICSEARCH=http://localhost:9200 +EXTRALIT_SEARCH_ENGINE=elasticsearch +EXTRALIT_ELASTICSEARCH=http://localhost:9200 # Redis configuration -ARGILLA_REDIS_URL=redis://localhost:6379/0 +EXTRALIT_REDIS_URL=redis://localhost:6379/0 diff --git a/extralit-server/.env.test b/extralit-server/.env.test index 8c9492fde..0c7c9aa08 100644 --- a/extralit-server/.env.test +++ b/extralit-server/.env.test @@ -1,3 +1,3 @@ -ARGILLA_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/argilla-test.db?check_same_thread=False -ARGILLA_REDIS_URL=redis://localhost:6379/1 # Using a different Redis database for testing +EXTRALIT_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/argilla-test.db?check_same_thread=False +EXTRALIT_REDIS_URL=redis://localhost:6379/1 # Using a different Redis database for testing HF_HUB_DISABLE_TELEMETRY=1 \ No newline at end of file diff --git a/extralit-server/docker/extralit-hf-spaces/Dockerfile b/extralit-server/docker/extralit-hf-spaces/Dockerfile index eb333b72e..561e7f106 100644 --- a/extralit-server/docker/extralit-hf-spaces/Dockerfile +++ b/extralit-server/docker/extralit-hf-spaces/Dockerfile @@ -1,9 +1,9 @@ # Multi-stage build to reduce image size -ARG ARGILLA_VERSION=latest +ARG EXTRALIT_VERSION=latest ARG extralit_server_IMAGE=extralitdev/extralit-server # Base stage with common dependencies -FROM ${extralit_server_IMAGE}:${ARGILLA_VERSION} AS base +FROM ${extralit_server_IMAGE}:${EXTRALIT_VERSION} AS base USER root # Copy Argilla distribution files @@ -56,7 +56,7 @@ USER argilla ENV ELASTIC_CONTAINER=true ENV ES_JAVA_OPTS="-Xms1g -Xmx1g" -ENV ARGILLA_HOME_PATH=/data/argilla +ENV EXTRALIT_HOME_PATH=/data/argilla ENV REINDEX_DATASETS=1 CMD ["/bin/bash", "start.sh"] \ No newline at end of file diff --git a/extralit-server/docker/server/Dockerfile b/extralit-server/docker/server/Dockerfile index eabeb115a..1d7c7e052 100644 --- a/extralit-server/docker/server/Dockerfile +++ b/extralit-server/docker/server/Dockerfile @@ -25,7 +25,7 @@ ENV USERNAME="" ENV PASSWORD="" ENV API_KEY="" ## Argilla home path -ENV ARGILLA_HOME_PATH=/var/lib/argilla +ENV EXTRALIT_HOME_PATH=/var/lib/argilla ## Uvicorn defaults ENV UVICORN_PORT=6900 ### Uvicorn app. Extended apps can override this variable @@ -34,14 +34,14 @@ ENV UVICORN_APP=extralit_server:app RUN useradd -ms /bin/bash argilla # Create argilla volume -RUN mkdir -p "$ARGILLA_HOME_PATH" && \ - chown argilla:argilla "$ARGILLA_HOME_PATH" && \ +RUN mkdir -p "$EXTRALIT_HOME_PATH" && \ + chown argilla:argilla "$EXTRALIT_HOME_PATH" && \ apt-get update && \ apt-get upgrade -y && \ apt-get install -y --no-install-recommends libpq-dev && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* /packages -VOLUME $ARGILLA_HOME_PATH +VOLUME $EXTRALIT_HOME_PATH COPY scripts/start_extralit_server.sh /home/argilla # Destination folder must be the same as the builder one. Otherwise installed script won't work (since the installation fixes the path inside the script) diff --git a/extralit-server/docker/server/dev.extralit_server.dockerfile b/extralit-server/docker/server/dev.extralit_server.dockerfile index 835f8972d..61c438f71 100644 --- a/extralit-server/docker/server/dev.extralit_server.dockerfile +++ b/extralit-server/docker/server/dev.extralit_server.dockerfile @@ -36,8 +36,8 @@ ENV PASSWORD="12345678" ENV API_KEY="extralit.apikey" ## Argilla home path -ENV ARGILLA_HOME_PATH=/var/lib/argilla -ENV ARGILLA_LOCAL_AUTH_USERS_DB_FILE=$USERS_DB +ENV EXTRALIT_HOME_PATH=/var/lib/argilla +ENV EXTRALIT_LOCAL_AUTH_USERS_DB_FILE=$USERS_DB ## Uvicorn defaults ENV UVICORN_PORT=6900 ### Uvicorn app. Extended apps can override this variable @@ -46,7 +46,7 @@ ENV UVICORN_APP=extralit_server:app # Create a user and a volume for argilla RUN useradd -ms /bin/bash argilla -RUN mkdir -p "$ARGILLA_HOME_PATH" && chown argilla:argilla "$ARGILLA_HOME_PATH" +RUN mkdir -p "$EXTRALIT_HOME_PATH" && chown argilla:argilla "$EXTRALIT_HOME_PATH" # Copy the scripts and install uvicorn COPY docker/server/scripts/ /home/argilla/ diff --git a/extralit-server/docker/server/scripts/start_extralit_server.sh b/extralit-server/docker/server/scripts/start_extralit_server.sh index 35765a5de..75716730d 100755 --- a/extralit-server/docker/server/scripts/start_extralit_server.sh +++ b/extralit-server/docker/server/scripts/start_extralit_server.sh @@ -2,14 +2,14 @@ set -e # Set environment variables -if [ -z "$ARGILLA_ELASTICSEARCH" ] && [ -n "$ARGILLA_ELASTICSEARCH_HOST" ]; then - echo 'Setting ARGILLA_ELASTICSEARCH with $ARGILLA_ELASTICSEARCH_PROTOCOL://elastic:$ARGILLA_ELASTIC_PASSWORD@$ARGILLA_ELASTICSEARCH_HOST' - export ARGILLA_ELASTICSEARCH=$ARGILLA_ELASTICSEARCH_PROTOCOL://elastic:$ARGILLA_ELASTIC_PASSWORD@$ARGILLA_ELASTICSEARCH_HOST +if [ -z "$EXTRALIT_ELASTICSEARCH" ] && [ -n "$EXTRALIT_ELASTICSEARCH_HOST" ]; then + echo 'Setting EXTRALIT_ELASTICSEARCH with $EXTRALIT_ELASTICSEARCH_PROTOCOL://elastic:$EXTRALIT_ELASTIC_PASSWORD@$EXTRALIT_ELASTICSEARCH_HOST' + export EXTRALIT_ELASTICSEARCH=$EXTRALIT_ELASTICSEARCH_PROTOCOL://elastic:$EXTRALIT_ELASTIC_PASSWORD@$EXTRALIT_ELASTICSEARCH_HOST fi -if [ -z "$ARGILLA_DATABASE_URL" ] && [ -n "$POSTGRES_PASSWORD" ] && [ -n "$POSTGRES_HOST" ]; then - echo 'Setting ARGILLA_DATABASE_URL with postgresql+asyncpg://postgres:$POSTGRES_PASSWORD@$POSTGRES_HOST/postgres' - export ARGILLA_DATABASE_URL=postgresql+asyncpg://postgres:$POSTGRES_PASSWORD@$POSTGRES_HOST/postgres +if [ -z "$EXTRALIT_DATABASE_URL" ] && [ -n "$POSTGRES_PASSWORD" ] && [ -n "$POSTGRES_HOST" ]; then + echo 'Setting EXTRALIT_DATABASE_URL with postgresql+asyncpg://postgres:$POSTGRES_PASSWORD@$POSTGRES_HOST/postgres' + export EXTRALIT_DATABASE_URL=postgresql+asyncpg://postgres:$POSTGRES_PASSWORD@$POSTGRES_HOST/postgres fi # Run database migrations diff --git a/extralit-server/pyproject.toml b/extralit-server/pyproject.toml index 5c5c6eef0..84002257e 100644 --- a/extralit-server/pyproject.toml +++ b/extralit-server/pyproject.toml @@ -188,4 +188,4 @@ test = { cmd = "pytest --verbosity=1 --disable-warnings", env_file = ".env.test" test-cov = { cmd = "pytest tests --cov=extralit_server --cov-report=term --cov-report=xml --verbosity=0 --disable-warnings", env_file = ".env.test" } docker-build-extralit-server = { shell = "pdm build && cp -R dist docker/server && docker build -t extralit/extralit-server:local docker/server" } -docker-build-argilla-hf-spaces = { shell = "pdm run docker-build-extralit-server && docker build --build-arg ARGILLA_VERSION=local -t extralit/argilla-hf-spaces:local docker/argilla-hf-spaces" } +docker-build-argilla-hf-spaces = { shell = "pdm run docker-build-extralit-server && docker build --build-arg EXTRALIT_VERSION=local -t extralit/argilla-hf-spaces:local docker/argilla-hf-spaces" } diff --git a/extralit-server/src/extralit_server/api/schemas/v1/chat.py b/extralit-server/src/extralit_server/api/schemas/v1/chat.py index 9fd93318d..f36760c09 100644 --- a/extralit-server/src/extralit_server/api/schemas/v1/chat.py +++ b/extralit-server/src/extralit_server/api/schemas/v1/chat.py @@ -1,25 +1,25 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os from pydantic import BaseModel, Field -MIN_MESSAGE_LENGTH = int(os.getenv("ARGILLA_MIN_MESSAGE_LENGTH", 1)) -MAX_MESSAGE_LENGTH = int(os.getenv("ARGILLA_MAX_MESSAGE_LENGTH", 20000)) +MIN_MESSAGE_LENGTH = int(os.getenv("EXTRALIT_MIN_MESSAGE_LENGTH", 1)) +MAX_MESSAGE_LENGTH = int(os.getenv("EXTRALIT_MAX_MESSAGE_LENGTH", 20000)) -MIN_ROLE_LENGTH = int(os.getenv("ARGILLA_MIN_ROLE_LENGTH", 1)) -MAX_ROLE_LENGTH = int(os.getenv("ARGILLA_MAX_ROLE_LENGTH", 20)) +MIN_ROLE_LENGTH = int(os.getenv("EXTRALIT_MIN_ROLE_LENGTH", 1)) +MAX_ROLE_LENGTH = int(os.getenv("EXTRALIT_MAX_ROLE_LENGTH", 20)) class ChatFieldValue(BaseModel): diff --git a/extralit-server/src/extralit_server/cli/database/users/migrate.py b/extralit-server/src/extralit_server/cli/database/users/migrate.py index 7e62d2d93..bf93c57f0 100644 --- a/extralit-server/src/extralit_server/cli/database/users/migrate.py +++ b/extralit-server/src/extralit_server/cli/database/users/migrate.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import asyncio import os from typing import TYPE_CHECKING, List, Optional @@ -107,7 +107,7 @@ def _user_workspace_names(self, user: dict) -> List[str]: def migrate(): """Migrate users defined in YAML file to database.""" - users_db_file: str = os.getenv("ARGILLA_LOCAL_AUTH_USERS_DB_FILE", ".users.yml") + users_db_file: str = os.getenv("EXTRALIT_LOCAL_AUTH_USERS_DB_FILE", ".users.yml") asyncio.run(UsersMigrator(users_db_file).migrate()) diff --git a/extralit-server/src/extralit_server/cli/rich.py b/extralit-server/src/extralit_server/cli/rich.py index aff4be543..9f208059a 100644 --- a/extralit-server/src/extralit_server/cli/rich.py +++ b/extralit-server/src/extralit_server/cli/rich.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typing import Any @@ -18,18 +18,18 @@ from rich.panel import Panel from rich.table import Table -_ARGILLA_BORDER_STYLE = "red" +_EXTRALIT_BORDER_STYLE = "red" def get_argilla_themed_table(title: str, **kwargs: Any) -> Table: - return Table(title=title, border_style=_ARGILLA_BORDER_STYLE, **kwargs) + return Table(title=title, border_style=_EXTRALIT_BORDER_STYLE, **kwargs) def get_argilla_themed_panel(renderable: RenderableType, title: str, success: bool = True, **kwargs: Any) -> Panel: if success: title = f"[green]{title}" - return Panel(renderable=renderable, border_style=_ARGILLA_BORDER_STYLE, title=title, **kwargs) + return Panel(renderable=renderable, border_style=_EXTRALIT_BORDER_STYLE, title=title, **kwargs) def echo_in_panel(renderable: RenderableType, title: str, success: bool = True, **kwargs: Any) -> None: diff --git a/extralit-server/src/extralit_server/security/settings.py b/extralit-server/src/extralit_server/security/settings.py index 19583ea63..5bd816178 100644 --- a/extralit-server/src/extralit_server/security/settings.py +++ b/extralit-server/src/extralit_server/security/settings.py @@ -1,17 +1,17 @@ # coding=utf-8 -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os from typing import TYPE_CHECKING, Optional from uuid import uuid4 @@ -69,7 +69,7 @@ def oauth(self) -> "OAuth2Settings": return self._oauth_settings class Config: - env_prefix = "ARGILLA_AUTH_" + env_prefix = "EXTRALIT_AUTH_" settings = Settings() diff --git a/extralit-server/src/extralit_server/settings.py b/extralit-server/src/extralit_server/settings.py index 37cdbe800..7442c0def 100644 --- a/extralit-server/src/extralit_server/settings.py +++ b/extralit-server/src/extralit_server/settings.py @@ -167,10 +167,10 @@ class Settings(BaseSettings): def set_enable_telemetry(cls, enable_telemetry: bool) -> bool: if os.getenv("HF_HUB_DISABLE_TELEMETRY") == "1" or os.getenv("HF_HUB_OFFLINE") == "1": enable_telemetry = False - if os.getenv("ARGILLA_ENABLE_TELEMETRY") == "0": + if os.getenv("EXTRALIT_ENABLE_TELEMETRY") == "0": os.environ["HF_HUB_DISABLE_TELEMETRY"] = "1" warnings.warn( - "environment vairbale ARGILLA_ENABLE_TELEMETRY is deprecated, use HF_HUB_DISABLE_TELEMETRY or HF_HUB_OFFLINE instead." + "environment vairbale EXTRALIT_ENABLE_TELEMETRY is deprecated, use HF_HUB_DISABLE_TELEMETRY or HF_HUB_OFFLINE instead." ) enable_telemetry = False @@ -276,7 +276,7 @@ def search_engine_is_opensearch(self) -> bool: return self.search_engine == SEARCH_ENGINE_OPENSEARCH class Config: - env_prefix = "ARGILLA_" + env_prefix = "EXTRALIT_" settings = Settings() diff --git a/extralit-server/src/extralit_server/telemetry/_helpers.py b/extralit-server/src/extralit_server/telemetry/_helpers.py index f1aebe597..1e923a9ee 100644 --- a/extralit-server/src/extralit_server/telemetry/_helpers.py +++ b/extralit-server/src/extralit_server/telemetry/_helpers.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import logging import os import uuid @@ -27,7 +27,7 @@ def get_server_id() -> UUID: """ Returns the server ID. If it is not set, it generates a new one and stores it - in $ARGILLA_HOME/server_id.dat + in $EXTRALIT_HOME/server_id.dat Returns: UUID: The server ID diff --git a/extralit-server/tests/unit/cli/database/users/test_migrate.py b/extralit-server/tests/unit/cli/database/users/test_migrate.py index e12cb98e7..a1bff6c32 100644 --- a/extralit-server/tests/unit/cli/database/users/test_migrate.py +++ b/extralit-server/tests/unit/cli/database/users/test_migrate.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os from typing import TYPE_CHECKING @@ -27,7 +27,7 @@ def test_migrate(monkeypatch, sync_db: "Session", cli_runner: CliRunner, cli: Typer): mock_users_file = os.path.join(os.path.dirname(__file__), "test_user_files", "users.yml") - with mock.patch.dict(os.environ, {"ARGILLA_LOCAL_AUTH_USERS_DB_FILE": mock_users_file}): + with mock.patch.dict(os.environ, {"EXTRALIT_LOCAL_AUTH_USERS_DB_FILE": mock_users_file}): result = cli_runner.invoke(cli, "database users migrate") assert result.exit_code == 0 @@ -79,7 +79,7 @@ def test_migrate(monkeypatch, sync_db: "Session", cli_runner: CliRunner, cli: Ty def test_migrate_with_one_user_file(monkeypatch, sync_db: "Session", cli_runner: CliRunner, cli: Typer): mock_users_file = os.path.join(os.path.dirname(__file__), "test_user_files", "users_one.yml") - with mock.patch.dict(os.environ, {"ARGILLA_LOCAL_AUTH_USERS_DB_FILE": mock_users_file}): + with mock.patch.dict(os.environ, {"EXTRALIT_LOCAL_AUTH_USERS_DB_FILE": mock_users_file}): result = cli_runner.invoke(cli, "database users migrate") assert result.exit_code == 0 @@ -97,7 +97,7 @@ def test_migrate_with_one_user_file(monkeypatch, sync_db: "Session", cli_runner: def test_migrate_with_nonexistent_file(monkeypatch, sync_db: "Session", cli_runner: CliRunner, cli: Typer): - with mock.patch.dict(os.environ, {"ARGILLA_LOCAL_AUTH_USERS_DB_FILE": "nonexistent.yml"}): + with mock.patch.dict(os.environ, {"EXTRALIT_LOCAL_AUTH_USERS_DB_FILE": "nonexistent.yml"}): result = cli_runner.invoke(cli, "database users migrate") assert result.exit_code == 1 diff --git a/extralit-server/tests/unit/commons/test_settings.py b/extralit-server/tests/unit/commons/test_settings.py index 962418f5e..b49c66327 100644 --- a/extralit-server/tests/unit/commons/test_settings.py +++ b/extralit-server/tests/unit/commons/test_settings.py @@ -18,14 +18,14 @@ def test_settings_index_replicas_with_shards_defined(monkeypatch): - monkeypatch.setenv("ARGILLA_ES_RECORDS_INDEX_SHARDS", "100") - monkeypatch.setenv("ARGILLA_ES_RECORDS_INDEX_REPLICAS", "2") + monkeypatch.setenv("EXTRALIT_ES_RECORDS_INDEX_SHARDS", "100") + monkeypatch.setenv("EXTRALIT_ES_RECORDS_INDEX_REPLICAS", "2") assert Settings().es_records_index_replicas == 2 def test_settings_default_index_replicas_with_shards_defined(monkeypatch): - monkeypatch.setenv("ARGILLA_ES_RECORDS_INDEX_SHARDS", "100") + monkeypatch.setenv("EXTRALIT_ES_RECORDS_INDEX_SHARDS", "100") settings = Settings() @@ -34,7 +34,7 @@ def test_settings_default_index_replicas_with_shards_defined(monkeypatch): def test_settings_default_database_url(monkeypatch): - monkeypatch.setenv("ARGILLA_DATABASE_URL", "") + monkeypatch.setenv("EXTRALIT_DATABASE_URL", "") settings = Settings() @@ -51,7 +51,7 @@ def test_settings_default_database_url(monkeypatch): ], ) def test_settings_database_url(url: str, expected_url: str, monkeypatch): - monkeypatch.setenv("ARGILLA_DATABASE_URL", url) + monkeypatch.setenv("EXTRALIT_DATABASE_URL", url) assert Settings().database_url == expected_url @@ -61,7 +61,7 @@ def test_settings_default_database_sqlite_timeout(): def test_settings_database_sqlite_timeout(monkeypatch): - monkeypatch.setenv("ARGILLA_DATABASE_SQLITE_TIMEOUT", "3") + monkeypatch.setenv("EXTRALIT_DATABASE_SQLITE_TIMEOUT", "3") assert Settings().database_sqlite_timeout == 3 @@ -71,7 +71,7 @@ def test_settings_default_database_postgresql_pool_size(): def test_settings_database_postgresql_pool_size(monkeypatch): - monkeypatch.setenv("ARGILLA_DATABASE_POSTGRESQL_POOL_SIZE", "42") + monkeypatch.setenv("EXTRALIT_DATABASE_POSTGRESQL_POOL_SIZE", "42") assert Settings().database_postgresql_pool_size == 42 @@ -81,18 +81,18 @@ def test_settings_default_database_postgresql_max_overflow(): def test_settings_database_postgresql_max_overflow(monkeypatch): - monkeypatch.setenv("ARGILLA_DATABASE_POSTGRESQL_MAX_OVERFLOW", "12") + monkeypatch.setenv("EXTRALIT_DATABASE_POSTGRESQL_MAX_OVERFLOW", "12") assert Settings().database_postgresql_max_overflow == 12 def test_enable_share_your_progress(monkeypatch): - monkeypatch.setenv("ARGILLA_ENABLE_SHARE_YOUR_PROGRESS", "true") + monkeypatch.setenv("EXTRALIT_ENABLE_SHARE_YOUR_PROGRESS", "true") assert Settings().enable_share_your_progress is True def test_disable_enable_share_your_progress(monkeypatch): - monkeypatch.setenv("ARGILLA_ENABLE_SHARE_YOUR_PROGRESS", "false") + monkeypatch.setenv("EXTRALIT_ENABLE_SHARE_YOUR_PROGRESS", "false") assert Settings().enable_share_your_progress is False diff --git a/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py b/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py index a66c41e0c..b64d36f50 100644 --- a/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py +++ b/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py @@ -42,7 +42,7 @@ ) HF_ORGANIZATION = "extralit-dev" -HF_TOKEN = os.environ.get("HF_TOKEN_ARGILLA_INTERNAL_TESTING") +HF_TOKEN = os.environ.get("HF_TOKEN_EXTRALIT_INTERNAL_TESTING") IMAGE_URL = "https://argilla.io/brand-assets/argilla/argilla-logo-color-black.png" IMAGE_DATA_URL = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" @@ -91,7 +91,7 @@ def wrapper(*args, **kwargs): return decorator_func -@pytest.mark.skipif(HF_TOKEN is None, reason="HF_TOKEN_ARGILLA_INTERNAL_TESTING is not defined") +@pytest.mark.skipif(HF_TOKEN is None, reason="HF_TOKEN_EXTRALIT_INTERNAL_TESTING is not defined") class TestHubDatasetExporter: @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to(self, sync_test_session, hf_api: HfApi, hf_dataset_name: str): diff --git a/extralit-server/tests/unit/security/test_settings.py b/extralit-server/tests/unit/security/test_settings.py index 577c1cb0d..8b82018ce 100644 --- a/extralit-server/tests/unit/security/test_settings.py +++ b/extralit-server/tests/unit/security/test_settings.py @@ -1,22 +1,20 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -import json +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os import tempfile from unittest import mock -from extralit_server.security.authentication.oauth2 import OAuth2Settings from extralit_server.security.settings import Settings @@ -32,7 +30,7 @@ def test_default_security_settings(): def test_configure_algorithm(): algorithm = "mock-algorithm" - with mock.patch.dict(os.environ, {"ARGILLA_AUTH_ALGORITHM": algorithm}): + with mock.patch.dict(os.environ, {"EXTRALIT_AUTH_ALGORITHM": algorithm}): settings = Settings() assert settings.algorithm == algorithm @@ -40,7 +38,7 @@ def test_configure_algorithm(): def test_configure_token_expiration(): token_expiration = 3600 - with mock.patch.dict(os.environ, {"ARGILLA_AUTH_TOKEN_EXPIRATION": str(token_expiration)}): + with mock.patch.dict(os.environ, {"EXTRALIT_AUTH_TOKEN_EXPIRATION": str(token_expiration)}): settings = Settings() assert settings.token_expiration == token_expiration @@ -48,7 +46,7 @@ def test_configure_token_expiration(): def test_configure_secret_key(): secret_key = "mock-secret-key" - with mock.patch.dict(os.environ, {"ARGILLA_AUTH_SECRET_KEY": secret_key}): + with mock.patch.dict(os.environ, {"EXTRALIT_AUTH_SECRET_KEY": secret_key}): settings = Settings() assert settings.secret_key == secret_key @@ -56,7 +54,7 @@ def test_configure_secret_key(): def test_configure_oauth_cfg(): oauth_cfg = "mock-oauth-cfg" - with mock.patch.dict(os.environ, {"ARGILLA_AUTH_OAUTH_CFG": oauth_cfg}): + with mock.patch.dict(os.environ, {"EXTRALIT_AUTH_OAUTH_CFG": oauth_cfg}): settings = Settings() assert settings.oauth_cfg == oauth_cfg @@ -67,7 +65,7 @@ def test_configure_oauth_with_none_allowed_workspaces(): file.writelines(["allowed_workspaces:", ""]) file.flush() - with mock.patch.dict(os.environ, {"ARGILLA_AUTH_OAUTH_CFG": file.name}): + with mock.patch.dict(os.environ, {"EXTRALIT_AUTH_OAUTH_CFG": file.name}): settings = Settings() assert settings.oauth.allowed_workspaces == [] diff --git a/extralit/.env.test b/extralit/.env.test index b471bb2db..2017c844c 100644 --- a/extralit/.env.test +++ b/extralit/.env.test @@ -1,2 +1,2 @@ -ARGILLA_API_URL=http://localhost:6900 -ARGILLA_API_KEY=extralit.apikey +EXTRALIT_API_URL=http://localhost:6900 +EXTRALIT_API_KEY=extralit.apikey diff --git a/extralit/docs/admin_guide/k8s_deployment.md b/extralit/docs/admin_guide/k8s_deployment.md index 14fd7c3ac..22d9230b9 100644 --- a/extralit/docs/admin_guide/k8s_deployment.md +++ b/extralit/docs/admin_guide/k8s_deployment.md @@ -110,8 +110,8 @@ Set environment variables: Run the `start_extralit_server.sh` script for initial setup. Manage users with `extralit_server` CLI: ```bash -ARGILLA_DATABASE_URL=postgresql+asyncpg://postgres:$POSTGRES_PASSWORD@$POSTGRES_HOST/postgres \ -ARGILLA_LOCAL_AUTH_USERS_DB_FILE=path/to/users.yaml \ +EXTRALIT_DATABASE_URL=postgresql+asyncpg://postgres:$POSTGRES_PASSWORD@$POSTGRES_HOST/postgres \ +EXTRALIT_LOCAL_AUTH_USERS_DB_FILE=path/to/users.yaml \ extralit_server database users migrate ``` diff --git a/extralit/docs/admin_guide/upgrading.md b/extralit/docs/admin_guide/upgrading.md index c20339789..ba163a081 100644 --- a/extralit/docs/admin_guide/upgrading.md +++ b/extralit/docs/admin_guide/upgrading.md @@ -99,7 +99,7 @@ extralit_server database migrate ```bash docker run -d --name extralit-quickstart -p 6900:6900 \ - -e ARGILLA_AUTH_SECRET_KEY=$(openssl rand -hex 32) \ + -e EXTRALIT_AUTH_SECRET_KEY=$(openssl rand -hex 32) \ extralit/argilla-hf-spaces:latest ``` diff --git a/extralit/docs/getting_started/development_setup.md b/extralit/docs/getting_started/development_setup.md index 06f8793b3..80f50bd04 100644 --- a/extralit/docs/getting_started/development_setup.md +++ b/extralit/docs/getting_started/development_setup.md @@ -51,7 +51,7 @@ Then, select from three different development environments through devcontainers ```bash # Use external database instead of deploying PostgreSQL - export ARGILLA_DATABASE_URL="postgresql://user:password@external-host:5432/dbname" + export EXTRALIT_DATABASE_URL="postgresql://user:password@external-host:5432/dbname" # Use external S3-compatible storage instead of deploying MinIO export S3_ENDPOINT="https://your-s3-endpoint" @@ -179,13 +179,13 @@ Create a `.env.dev` file in the `extralit-server` directory with the following c ``` ALEMBIC_CONFIG=src/extralit_server/alembic.ini -ARGILLA_AUTH_SECRET_KEY=8VO7na5N/jQx+yP/N+HlE8q51vPdrxqlh6OzoebIyko= -ARGILLA_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/extralit-dev.db?check_same_thread=False +EXTRALIT_AUTH_SECRET_KEY=8VO7na5N/jQx+yP/N+HlE8q51vPdrxqlh6OzoebIyko= +EXTRALIT_DATABASE_URL=sqlite+aiosqlite:///${HOME}/.extralit/extralit-dev.db?check_same_thread=False # Search engine configuration -ARGILLA_SEARCH_ENGINE=elasticsearch -ARGILLA_ELASTICSEARCH=http://localhost:9200 +EXTRALIT_SEARCH_ENGINE=elasticsearch +EXTRALIT_ELASTICSEARCH=http://localhost:9200 # Redis configuration -ARGILLA_REDIS_URL=redis://localhost:6379/0 +EXTRALIT_REDIS_URL=redis://localhost:6379/0 ``` ### 5. Set Up the Databases @@ -291,13 +291,13 @@ docker build -t extralit-server:latest -f docker/server/Dockerfile docker/server To build the Argilla HF Spaces Docker image, which includes the Argilla Server, ElasticSearch, and Redis, use the following command: ```bash -docker build --build-arg extralit_server_IMAGE=extralit-server --build-arg ARGILLA_VERSION=latest -t argilla-hf-spaces:latest -f docker/argilla-hf-spaces/Dockerfile docker/argilla-hf-spaces/ +docker build --build-arg extralit_server_IMAGE=extralit-server --build-arg EXTRALIT_VERSION=latest -t argilla-hf-spaces:latest -f docker/argilla-hf-spaces/Dockerfile docker/argilla-hf-spaces/ ``` Start the Argilla Server and other dependencies using Docker: ```bash -docker run --rm -p 6900:6900 -e ARGILLA_ENABLE_TELEMETRY=0 -e USERNAME=argilla -e PASSWORD=12345678 -e API_KEY=extralit.apikey --name argilla-hf-spaces argilla-hf-spaces:latest +docker run --rm -p 6900:6900 -e EXTRALIT_ENABLE_TELEMETRY=0 -e USERNAME=argilla -e PASSWORD=12345678 -e API_KEY=extralit.apikey --name argilla-hf-spaces argilla-hf-spaces:latest ``` diff --git a/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md b/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md index bb9df487b..e8e21e1ee 100644 --- a/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md +++ b/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md @@ -29,7 +29,7 @@ In the Space creation UI, persistent storage is set to `Small PAID`, which is a If you just want to quickly test or use Argilla for a few hours with the risk of loosing your datasets, choose `Ephemeral FREE`. `Ephemeral FREE` means your datasets and configuration will not be saved to disk, when the Space is restarted your datasets, workspaces, and users will be lost. -If you want to disable the persistence storage warning, you can set the environment variable `ARGILLA_SHOW_HUGGINGFACE_SPACE_PERSISTENT_STORAGE_WARNING=false` +If you want to disable the persistence storage warning, you can set the environment variable `EXTRALIT_SHOW_HUGGINGFACE_SPACE_PERSISTENT_STORAGE_WARNING=false` !!! warning "Read this if you have datasets and want to enable persistent storage" If you want to enable persistent storage `Small PAID` and you have created datasets, users, or workspaces, follow this process: diff --git a/extralit/docs/getting_started/quickstart.md b/extralit/docs/getting_started/quickstart.md index 340460b13..af98f45ef 100644 --- a/extralit/docs/getting_started/quickstart.md +++ b/extralit/docs/getting_started/quickstart.md @@ -28,7 +28,7 @@ Extralit is a free, open-source, self-hosted tool. This means you need to deploy - You must fill out the following Space secrets fields: - `OAUTH2_HUGGINGFACE_CLIENT_ID` and `OAUTH2_HUGGINGFACE_CLIENT_SECRET`: The Oauth. - - `ARGILLA_DATABASE_URL`: The URL of the PostgreSQL database where the data will be stored. If you leave it blank, the data will be lost when the Space restarts. + - `EXTRALIT_DATABASE_URL`: The URL of the PostgreSQL database where the data will be stored. If you leave it blank, the data will be lost when the Space restarts. - `S3_ENDPOINT`, `S3_ACCESS_KEY`, `S3_SECRET_KEY`: The name of the S3 bucket where papers and data extraction artifacts will be stored. If you leave it blank, the data will be lost when the Space restarts. - Click Duplicate Space to build an Extralit instance 🚀. - Once you see the UI, [go to the Sign in into the UI section](#sign-in-into-the-extralit-ui). If you see the `Building` message for longer than 2-3 min refresh the page. diff --git a/extralit/docs/reference/argilla-server/configuration.md b/extralit/docs/reference/argilla-server/configuration.md index edacd5356..fa7d00992 100644 --- a/extralit/docs/reference/argilla-server/configuration.md +++ b/extralit/docs/reference/argilla-server/configuration.md @@ -2,10 +2,10 @@ This section explains advanced operations and settings for running the Argilla Server and Argilla Python Client. -By default, the Argilla Server will look for your Elasticsearch (ES) endpoint at `http://localhost:9200`. You can customize this by setting the `ARGILLA_ELASTICSEARCH` environment variable. Have a look at the list of available [environment variables](#environment-variables) to further configure the Argilla server. +By default, the Argilla Server will look for your Elasticsearch (ES) endpoint at `http://localhost:9200`. You can customize this by setting the `EXTRALIT_ELASTICSEARCH` environment variable. Have a look at the list of available [environment variables](#environment-variables) to further configure the Argilla server. From the Argilla version `1.19.0`, you must set up the search engine manually to work with datasets. You should set the -environment variable `ARGILLA_SEARCH_ENGINE=opensearch` or `ARGILLA_SEARCH_ENGINE=elasticsearch` depending on the backend you're using +environment variable `EXTRALIT_SEARCH_ENGINE=opensearch` or `EXTRALIT_SEARCH_ENGINE=elasticsearch` depending on the backend you're using The default value for this variable is set to `elasticsearch`. The minimal version for Elasticsearch is `8.5.0`, and for Opensearch is `2.4.0`. Please, review your backend and upgrade it if necessary. @@ -19,11 +19,11 @@ Please, review your backend and upgrade it if necessary. ### Using a proxy -If you run Argilla behind a proxy by adding some extra prefix to expose the service, you should set the `ARGILLA_BASE_URL` +If you run Argilla behind a proxy by adding some extra prefix to expose the service, you should set the `EXTRALIT_BASE_URL` environment variable to properly route requests to the server application. For example, if your proxy exposes Argilla in the URL `https://my-proxy/custom-path-for-argilla`, you should launch the -Argilla server with `ARGILLA_BASE_URL=/custom-path-for-argilla`. +Argilla server with `EXTRALIT_BASE_URL=/custom-path-for-argilla`. NGINX and Traefik have been tested and are known to work with Argilla: @@ -38,15 +38,15 @@ You can set the following environment variables to further configure your server #### FastAPI -- `ARGILLA_HOME_PATH`: The directory where Argilla will store all the files needed to run. If the path doesn't exist it will be automatically created (Default: `~/.argilla`). +- `EXTRALIT_HOME_PATH`: The directory where Argilla will store all the files needed to run. If the path doesn't exist it will be automatically created (Default: `~/.argilla`). -- `ARGILLA_BASE_URL`: If you want to launch the Argilla server in a specific base path other than /, you should set up this environment variable. This can be useful when running Argilla behind a proxy that adds a prefix path to route the service (Default: "/"). +- `EXTRALIT_BASE_URL`: If you want to launch the Argilla server in a specific base path other than /, you should set up this environment variable. This can be useful when running Argilla behind a proxy that adds a prefix path to route the service (Default: "/"). -- `ARGILLA_CORS_ORIGINS`: List of host patterns for CORS origin access. +- `EXTRALIT_CORS_ORIGINS`: List of host patterns for CORS origin access. -- `ARGILLA_DOCS_ENABLED`: If False, disables openapi docs endpoint at _/api/docs_. +- `EXTRALIT_DOCS_ENABLED`: If False, disables openapi docs endpoint at _/api/docs_. -- `ARGILLA_ENABLE_SHARE_YOUR_PROGRESS`: If True, enables the share your progress feature. This feature allows users to share their progress with the community. If False, the feature will be disabled. +- `EXTRALIT_ENABLE_SHARE_YOUR_PROGRESS`: If True, enables the share your progress feature. This feature allows users to share their progress with the community. If False, the feature will be disabled. - `HF_HUB_DISABLE_TELEMETRY`: If True, disables telemetry for usage metrics. Alternatively, you can disable telemetry by setting `HF_HUB_OFFLINE=1`. @@ -54,67 +54,67 @@ You can set the following environment variables to further configure your server - `USERNAME`: If provided, the owner username (Default: `None`). - `PASSWORD`: If provided, the owner password (Default: `None`). -- `ARGILLA_AUTH_SECRET_KEY`: The secret key used to sign the API token data. You can use `openssl rand -hex 32` to generate a 32 character string to use with this environment variable. By default a random value is generated, so if you are using more than one server worker (or more than one Argilla server) you will need to set the same value for all of them. -- `ARGILLA_AUTH_OAUTH_CFG`: Path to the OAuth2 configuration file (Default: `$PWD/.oauth.yml`). +- `EXTRALIT_AUTH_SECRET_KEY`: The secret key used to sign the API token data. You can use `openssl rand -hex 32` to generate a 32 character string to use with this environment variable. By default a random value is generated, so if you are using more than one server worker (or more than one Argilla server) you will need to set the same value for all of them. +- `EXTRALIT_AUTH_OAUTH_CFG`: Path to the OAuth2 configuration file (Default: `$PWD/.oauth.yml`). If `USERNAME` and `PASSWORD` are provided, the owner user will be created with these credentials on the server startup. #### Database -- `ARGILLA_DATABASE_URL`: A URL string that contains the necessary information to connect to a database. Argilla uses SQLite by default, PostgreSQL is also officially supported (Default: `sqlite:///$ARGILLA_HOME_PATH/extralit.db?check_same_thread=False`). +- `EXTRALIT_DATABASE_URL`: A URL string that contains the necessary information to connect to a database. Argilla uses SQLite by default, PostgreSQL is also officially supported (Default: `sqlite:///$EXTRALIT_HOME_PATH/extralit.db?check_same_thread=False`). ##### SQLite The following environment variables are useful only when SQLite is used: -- `ARGILLA_DATABASE_SQLITE_TIMEOUT`: How many seconds the connection should wait before raising an `OperationalError` when a table is locked. If another connection opens a transaction to modify a table, that table will be locked until the transaction is committed. (Defaut: `15` seconds). +- `EXTRALIT_DATABASE_SQLITE_TIMEOUT`: How many seconds the connection should wait before raising an `OperationalError` when a table is locked. If another connection opens a transaction to modify a table, that table will be locked until the transaction is committed. (Defaut: `15` seconds). ##### PostgreSQL The following environment variables are useful only when PostgreSQL is used: -- `ARGILLA_DATABASE_POSTGRESQL_POOL_SIZE`: The number of connections to keep open inside the database connection pool (Default: `15`). +- `EXTRALIT_DATABASE_POSTGRESQL_POOL_SIZE`: The number of connections to keep open inside the database connection pool (Default: `15`). -- `ARGILLA_DATABASE_POSTGRESQL_MAX_OVERFLOW`: The number of connections that can be opened above and beyond `ARGILLA_DATABASE_POSTGRESQL_POOL_SIZE` setting (Default: `10`). +- `EXTRALIT_DATABASE_POSTGRESQL_MAX_OVERFLOW`: The number of connections that can be opened above and beyond `EXTRALIT_DATABASE_POSTGRESQL_POOL_SIZE` setting (Default: `10`). #### Search engine -- `ARGILLA_ELASTICSEARCH`: URL of the connection endpoint of the Elasticsearch instance (Default: `http://localhost:9200`). +- `EXTRALIT_ELASTICSEARCH`: URL of the connection endpoint of the Elasticsearch instance (Default: `http://localhost:9200`). -- `ARGILLA_SEARCH_ENGINE`: Search engine to use. Valid values are "elasticsearch" and "opensearch" (Default: "elasticsearch"). +- `EXTRALIT_SEARCH_ENGINE`: Search engine to use. Valid values are "elasticsearch" and "opensearch" (Default: "elasticsearch"). -- `ARGILLA_ELASTICSEARCH_SSL_VERIFY`: If "False", disables SSL certificate verification when connecting to the Elasticsearch backend. +- `EXTRALIT_ELASTICSEARCH_SSL_VERIFY`: If "False", disables SSL certificate verification when connecting to the Elasticsearch backend. -- `ARGILLA_ELASTICSEARCH_CA_PATH`: Path to CA cert for ES host. For example: `/full/path/to/root-ca.pem` (Optional) +- `EXTRALIT_ELASTICSEARCH_CA_PATH`: Path to CA cert for ES host. For example: `/full/path/to/root-ca.pem` (Optional) -- `ARGILLA_ES_RECORDS_INDEX_SHARDS`: Default number of elasticsearch/opensearch shards for each search index. (Default: `1`). +- `EXTRALIT_ES_RECORDS_INDEX_SHARDS`: Default number of elasticsearch/opensearch shards for each search index. (Default: `1`). -- `ARGILLA_ES_RECORDS_INDEX_REPLICAS`: Default number of elasticsearch/opensearch replicas for each search index. (Default: `0`). +- `EXTRALIT_ES_RECORDS_INDEX_REPLICAS`: Default number of elasticsearch/opensearch replicas for each search index. (Default: `0`). ### Redis Redis is used by Argilla to store information about jobs to be processed on background. The following environment variables are useful to config how Argilla connects to Redis: -- `ARGILLA_REDIS_URL`: A URL string that contains the necessary information to connect to a Redis instance (Default: `redis://localhost:6379/0`). -- `ARGILLA_REDIS_USE_CLUSTER`: If "True" tries the connection with the URL to a Redis Cluster instead of a Redis Standalone instance. +- `EXTRALIT_REDIS_URL`: A URL string that contains the necessary information to connect to a Redis instance (Default: `redis://localhost:6379/0`). +- `EXTRALIT_REDIS_USE_CLUSTER`: If "True" tries the connection with the URL to a Redis Cluster instead of a Redis Standalone instance. ### Datasets -- `ARGILLA_LABEL_SELECTION_OPTIONS_MAX_ITEMS`: Set the number of maximum items to be allowed by label and multi label questions (Default: `500`). +- `EXTRALIT_LABEL_SELECTION_OPTIONS_MAX_ITEMS`: Set the number of maximum items to be allowed by label and multi label questions (Default: `500`). -- `ARGILLA_SPAN_OPTIONS_MAX_ITEMS`: Set the number of maximum items to be allowed by span questions (Default: `500`). +- `EXTRALIT_SPAN_OPTIONS_MAX_ITEMS`: Set the number of maximum items to be allowed by span questions (Default: `500`). -- `ARGILLA_MIN_MESSAGE_LENGTH`: Set the minimum length of the message to be allowed in chat questions (Default: `1`). +- `EXTRALIT_MIN_MESSAGE_LENGTH`: Set the minimum length of the message to be allowed in chat questions (Default: `1`). -- `ARGILLA_MAX_MESSAGE_LENGTH`: Set the maximum length of the message to be allowed in chat questions (Default: `20000`). +- `EXTRALIT_MAX_MESSAGE_LENGTH`: Set the maximum length of the message to be allowed in chat questions (Default: `20000`). -- `ARGILLA_MIN_ROLE_LENGTH`: Set the minimum length of the role to be allowed in chat questions (Default: `1`). +- `EXTRALIT_MIN_ROLE_LENGTH`: Set the minimum length of the role to be allowed in chat questions (Default: `1`). -- `ARGILLA_MAX_ROLE_LENGTH`: Set the maximum length of the role to be allowed in chat questions (Default: `20`). +- `EXTRALIT_MAX_ROLE_LENGTH`: Set the maximum length of the role to be allowed in chat questions (Default: `20`). ### Hugging Face -- `ARGILLA_SHOW_HUGGINGFACE_SPACE_PERSISTENT_STORAGE_WARNING`: When Argilla is running on Hugging Face Spaces you can use this environment variable to disable the warning message showed when persistent storage is disabled for the space (Default: `true`). +- `EXTRALIT_SHOW_HUGGINGFACE_SPACE_PERSISTENT_STORAGE_WARNING`: When Argilla is running on Hugging Face Spaces you can use this environment variable to disable the warning message showed when persistent storage is disabled for the space (Default: `true`). ### Docker images only diff --git a/extralit/docs/reference/argilla-server/oauth2_configuration.md b/extralit/docs/reference/argilla-server/oauth2_configuration.md index da14903ed..1a93a4e41 100644 --- a/extralit/docs/reference/argilla-server/oauth2_configuration.md +++ b/extralit/docs/reference/argilla-server/oauth2_configuration.md @@ -7,7 +7,7 @@ GitHub, or Hugging Face. Next sections will guide you through the configuration The OAuth2 configuration file is a YAML file that contains the configuration for the OAuth2 providers that you want to enable. The default file name is `.oauth.yml` and it should be placed in the root directory of the Argilla server. You -can also specify a different file name using the `ARGILLA_AUTH_OAUTH_CFG` environment variable. +can also specify a different file name using the `EXTRALIT_AUTH_OAUTH_CFG` environment variable. The file should have the following structure: @@ -42,10 +42,10 @@ following fields: We will see later how to add more providers not supported by default. - `client_id`: The client ID provided by the OAuth2 provider. You can get this value by creating an application in the provider's developer console. This is a required field, but you can also use the -`ARGILLA_OAUTH2__CLIENT_ID` environment variable to set the value. +`EXTRALIT_OAUTH2__CLIENT_ID` environment variable to set the value. - `client_secret`: The client secret provided by the OAuth2 provider. You can get this value by creating an application in the provider's developer console. This is a required field, but you can also use -the `ARGILLA_OAUTH2__CLIENT_SECRET` environment variable to set the value. +the `EXTRALIT_OAUTH2__CLIENT_SECRET` environment variable to set the value. - `scope`: The scope of the OAuth2 provider. This is an optional field, and normally you don't need to set it, but you can use it to request specific permissions from the user access. @@ -90,8 +90,8 @@ fields in the `.oauth.yml` file: providers: - name: huggingface - client_id: "" # You can use the ARGILLA_OAUTH2_HUGGINGFACE_CLIENT_ID environment variable - client_secret: "" # You can use the ARGILLA_OAUTH2_HUGGINGFACE_CLIENT_SECRET environment variable + client_id: "" # You can use the EXTRALIT_OAUTH2_HUGGINGFACE_CLIENT_ID environment variable + client_secret: "" # You can use the EXTRALIT_OAUTH2_HUGGINGFACE_CLIENT_SECRET environment variable scope: "openid profile" # This field is optional. But this value must be aligned your OAuth2 application created in Hugging Face. ... @@ -112,8 +112,8 @@ define the following fields in the `.oauth.yml` file: providers: - name: github - client_id: "" # You can use the ARGILLA_OAUTH2_GITHUB_CLIENT_ID environment variable - client_secret: "" # You can use the ARGILLA_OAUTH2_GITHUB_CLIENT_SECRET environment variable + client_id: "" # You can use the EXTRALIT_OAUTH2_GITHUB_CLIENT_ID environment variable + client_secret: "" # You can use the EXTRALIT_OAUTH2_GITHUB_CLIENT_SECRET environment variable ... ``` @@ -129,8 +129,8 @@ should define the following fields in the `.oauth.yml` file: providers: - name: google-oauth2 - client_id: "" # You can use the ARGILLA_OAUTH2_GOOGLE_OAUTH2_CLIENT_ID environment variable - client_secret: "" # You can use the ARGILLA_OAUTH2_GOOGLE_OAUTH2_CLIENT_SECRET environment variable + client_id: "" # You can use the EXTRALIT_OAUTH2_GOOGLE_OAUTH2_CLIENT_ID environment variable + client_secret: "" # You can use the EXTRALIT_OAUTH2_GOOGLE_OAUTH2_CLIENT_SECRET environment variable ... ``` @@ -151,8 +151,8 @@ the `.oauth.yml` file: providers: - name: apple-id - client_id: "" # You can use the ARGILLA_OAUTH2_APPLE_ID_CLIENT_ID environment variable - client_secret: "" # You can use the ARGILLA_OAUTH2_APPLE_ID_CLIENT_SECRET environment variable + client_id: "" # You can use the EXTRALIT_OAUTH2_APPLE_ID_CLIENT_ID environment variable + client_secret: "" # You can use the EXTRALIT_OAUTH2_APPLE_ID_CLIENT_SECRET environment variable extra_backends: - social_core.backends.apple.AppleIdAuth # Register the Apple OAuth2 provider backend diff --git a/extralit/docs/reference/argilla-server/sso_keycloak.md b/extralit/docs/reference/argilla-server/sso_keycloak.md index 9d88d7a87..c21d28a21 100644 --- a/extralit/docs/reference/argilla-server/sso_keycloak.md +++ b/extralit/docs/reference/argilla-server/sso_keycloak.md @@ -21,8 +21,8 @@ from keycloak import KeycloakAdmin from keycloak import KeycloakOpenIDConnection from keycloak import KeycloakOpenID -ARGILLA_CLIENT_ID = "argilla-client" -ARGILLA_REALM = "argilla" +EXTRALIT_CLIENT_ID = "argilla-client" +EXTRALIT_REALM = "argilla" keycloak_connection = KeycloakOpenIDConnection( server_url="http://localhost:8080/", @@ -36,7 +36,7 @@ keycloak_admin = KeycloakAdmin(connection=keycloak_connection) keycloak_admin.create_realm( { - "realm": ARGILLA_REALM, + "realm": EXTRALIT_REALM, "enabled": True, "displayName": "Argilla", "userManagedAccessAllowed": True, @@ -47,14 +47,14 @@ keycloak_connection = KeycloakOpenIDConnection( username="admin", password="admin", user_realm_name="master", - realm_name=ARGILLA_REALM, + realm_name=EXTRALIT_REALM, ) keycloak_admin = KeycloakAdmin(connection=keycloak_connection) client = keycloak_admin.create_client( { - "clientId": ARGILLA_CLIENT_ID, # The client ID (you can choose a name) + "clientId": EXTRALIT_CLIENT_ID, # The client ID (you can choose a name) "enabled": True, "protocol": "openid-connect", # Protocol (you can use other protocols like 'saml' if needed) "publicClient": False, # Set to False if the client will use client secrets @@ -70,8 +70,8 @@ client = keycloak_admin.create_client( ) keycloak_openid = KeycloakOpenID(server_url="http://localhost:8080/", - client_id=ARGILLA_CLIENT_ID, - realm_name=ARGILLA_REALM) + client_id=EXTRALIT_CLIENT_ID, + realm_name=EXTRALIT_REALM) public_key = keycloak_openid.public_key() @@ -90,7 +90,7 @@ audience_mapper = keycloak_admin.add_mapper_to_client_scope( "protocolMapper": "oidc-audience-mapper", "consentRequired": False, "config": { - "included.client.audience": ARGILLA_CLIENT_ID, + "included.client.audience": EXTRALIT_CLIENT_ID, "id.token.claim": "false", "access.token.claim": "true" } diff --git a/extralit/docs/user_guide/command_line_interface.md b/extralit/docs/user_guide/command_line_interface.md index 33d98b7b6..fcf742cfb 100644 --- a/extralit/docs/user_guide/command_line_interface.md +++ b/extralit/docs/user_guide/command_line_interface.md @@ -42,8 +42,8 @@ extralit logout ### Environment Setup The CLI uses these environment variables: -- `ARGILLA_API_URL`: Your Extralit server URL -- `ARGILLA_API_KEY`: Your API key +- `EXTRALIT_API_URL`: Your Extralit server URL +- `EXTRALIT_API_KEY`: Your API key Configuration is stored in `~/.extralit/credentials.json`. diff --git a/extralit/src/extralit/_api/_client.py b/extralit/src/extralit/_api/_client.py index 8387d20c2..2f94459c4 100644 --- a/extralit/src/extralit/_api/_client.py +++ b/extralit/src/extralit/_api/_client.py @@ -38,10 +38,10 @@ __all__ = ["APIClient"] -ARGILLA_API_URL = get_secret("ARGILLA_API_URL") or _DEFAULT_API_URL -ARGILLA_API_KEY = get_secret("ARGILLA_API_KEY") or "" +EXTRALIT_API_URL = get_secret("EXTRALIT_API_URL") or _DEFAULT_API_URL +EXTRALIT_API_KEY = get_secret("EXTRALIT_API_KEY") or "" -DEFAULT_HTTP_CONFIG = HTTPClientConfig(api_url=ARGILLA_API_URL, api_key=ARGILLA_API_KEY) +DEFAULT_HTTP_CONFIG = HTTPClientConfig(api_url=EXTRALIT_API_URL, api_key=EXTRALIT_API_KEY) class ExtralitAPI: @@ -111,9 +111,9 @@ class APIClient: Args: api_url (str, optional): The URL of the Argilla API. Defaults to the value of - the `ARGILLA_API_URL` environment variable. + the `EXTRALIT_API_URL` environment variable. api_key (str, optional): The API key to authenticate with the Argilla API. Defaults to - the value of the `ARGILLA_API_KEY` environment variable. + the value of the `EXTRALIT_API_KEY` environment variable. timeout (int, optional): The timeout in seconds for the HTTP requests. Defaults to 60. **http_client_args: Additional keyword arguments to pass to the httpx.Client instance. See https://www.python-httpx.org/api/#client for more information. diff --git a/extralit/src/extralit/_api/_token.py b/extralit/src/extralit/_api/_token.py index 9690dde92..b06476385 100644 --- a/extralit/src/extralit/_api/_token.py +++ b/extralit/src/extralit/_api/_token.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -70,7 +70,7 @@ def _get_secret_from_google_colab(name: str) -> Optional[str]: secret_value = _clean_secret_value(userdata.get(name)) except userdata.NotebookAccessError: - # Means the user has a secret call `ARGILLA_API_URL` and `ARGILLA_API_URL` and got a popup "please grand access to ARGILLA_API_URL" and refused it + # Means the user has a secret call `EXTRALIT_API_URL` and `EXTRALIT_API_URL` and got a popup "please grand access to EXTRALIT_API_URL" and refused it # => warn user but ignore error => do not re-request access to user if not _IS_GOOGLE_COLAB_CHECKED: warnings.warn( diff --git a/extralit/src/extralit/_helpers/_deploy.py b/extralit/src/extralit/_helpers/_deploy.py index 66ad67922..7c2c2f3ed 100644 --- a/extralit/src/extralit/_helpers/_deploy.py +++ b/extralit/src/extralit/_helpers/_deploy.py @@ -28,7 +28,7 @@ from extralit.client import Extralit _SLEEP_TIME = 10 -_ARGILLA_SPACE_TEMPLATE_REPO = "argilla/argilla-template-space" +_EXTRALIT_SPACE_TEMPLATE_REPO = "argilla/argilla-template-space" class SpacesDeploymentMixin(LoggingMixin): @@ -98,7 +98,7 @@ def deploy_on_spaces( cls._space_storage_warning() hf_api.duplicate_space( - from_id=_ARGILLA_SPACE_TEMPLATE_REPO, + from_id=_EXTRALIT_SPACE_TEMPLATE_REPO, to_id=repo_id, private=private, exist_ok=True, diff --git a/extralit/src/extralit/client/core.py b/extralit/src/extralit/client/core.py index b14851092..ed4a19bb6 100644 --- a/extralit/src/extralit/client/core.py +++ b/extralit/src/extralit/client/core.py @@ -53,10 +53,10 @@ def __init__( Args: api_url: the URL of the Argilla API. If not provided, then the value will try - to be set from `ARGILLA_API_URL` environment variable. Defaults to + to be set from `EXTRALIT_API_URL` environment variable. Defaults to `"http://localhost:6900"`. api_key: the key to be used to authenticate in the Argilla API. If not provided, - then the value will try to be set from `ARGILLA_API_KEY` environment variable. + then the value will try to be set from `EXTRALIT_API_KEY` environment variable. Defaults to `None`. timeout: the maximum time in seconds to wait for a request to the Argilla API to be completed before raising an exception. Defaults to `60`. @@ -93,8 +93,8 @@ def from_credentials( """ from extralit.client.login import ExtralitCredentials - api_url = api_url or os.environ.get("ARGILLA_API_URL") - api_key = api_key or os.environ.get("ARGILLA_API_KEY") + api_url = api_url or os.environ.get("EXTRALIT_API_URL") + api_key = api_key or os.environ.get("EXTRALIT_API_KEY") workspace = workspace or os.environ.get("EXTRALIT_WORKSPACE") if (not api_url or not api_key) and ExtralitCredentials.exists(): diff --git a/extralit/src/extralit/datasets/_io/card/_dataset_card.py b/extralit/src/extralit/datasets/_io/card/_dataset_card.py index 70e625e3f..4138db98a 100644 --- a/extralit/src/extralit/datasets/_io/card/_dataset_card.py +++ b/extralit/src/extralit/datasets/_io/card/_dataset_card.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -16,7 +16,7 @@ from huggingface_hub import DatasetCard -TEMPLATE_ARGILLA_DATASET_CARD_PATH = Path(__file__).parent / "argilla_template.md" +TEMPLATE_EXTRALIT_DATASET_CARD_PATH = Path(__file__).parent / "argilla_template.md" class ArgillaDatasetCard(DatasetCard): @@ -25,4 +25,4 @@ class ArgillaDatasetCard(DatasetCard): `argilla/client/feedback/integrations/huggingface/card/argilla_template.md`. """ - default_template_path = TEMPLATE_ARGILLA_DATASET_CARD_PATH + default_template_path = TEMPLATE_EXTRALIT_DATASET_CARD_PATH diff --git a/extralit/tests/integration/test_export_dataset.py b/extralit/tests/integration/test_export_dataset.py index 583e3924e..8c457bf58 100644 --- a/extralit/tests/integration/test_export_dataset.py +++ b/extralit/tests/integration/test_export_dataset.py @@ -94,7 +94,7 @@ def mock_data() -> List[dict[str, Any]]: @pytest.fixture def token(): - return os.getenv("HF_TOKEN_ARGILLA_INTERNAL_TESTING") + return os.getenv("HF_TOKEN_EXTRALIT_INTERNAL_TESTING") @pytest.mark.flaky(retries=_RETRIES, only_on=[OSError]) # I/O consistency CICD pipline @@ -180,7 +180,7 @@ def test_import_dataset_from_disk( ], ) # Hub consistency CICD pipline @pytest.mark.skipif( - not os.getenv("HF_TOKEN_ARGILLA_INTERNAL_TESTING"), + not os.getenv("HF_TOKEN_EXTRALIT_INTERNAL_TESTING"), reason="You are missing a token to write to `extralit-dev` org on the Hugging Face Hub", ) @pytest.mark.parametrize("with_records_export", [True, False]) diff --git a/extralit/tests/integration/test_import_features.py b/extralit/tests/integration/test_import_features.py index 45de12f3b..80ff299ae 100644 --- a/extralit/tests/integration/test_import_features.py +++ b/extralit/tests/integration/test_import_features.py @@ -71,10 +71,10 @@ def mock_data() -> List[dict[str, Any]]: @pytest.fixture def token(): - return os.getenv("HF_TOKEN_ARGILLA_INTERNAL_TESTING") + return os.getenv("HF_TOKEN_EXTRALIT_INTERNAL_TESTING") -@pytest.mark.skipif(not os.getenv("HF_TOKEN_ARGILLA_INTERNAL_TESTING"), reason="No HF token provided") +@pytest.mark.skipif(not os.getenv("HF_TOKEN_EXTRALIT_INTERNAL_TESTING"), reason="No HF token provided") class TestImportFeaturesFromHub: def test_import_records_from_datasets_with_classlabel( self, token: str, dataset: ex.Dataset, client, mock_data: List[dict[str, Any]] From 02ece81103422a47c8d51cb72b230ec2fb90c9d1 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 10:25:21 -0700 Subject: [PATCH 14/23] Refactor: Replace ArgillaError with ExtralitError across the codebase - Updated exception handling to use ExtralitError instead of ArgillaError in various modules. - Adjusted client and exception imports to reflect the new naming convention. - Ensured consistency in error handling across the API client and related components. --- examples/custom_field/table_field.ipynb | 2 +- .../document_extraction/setup_workspace.ipynb | 6 +++--- .../contexts/hub/test_hub_dataset_exporter.py | 1 + extralit/docs/community/developer.md | 16 ++++++++-------- .../integrations/llamaindex_rag_github.ipynb | 2 +- extralit/src/extralit/_api/_client.py | 6 +++--- extralit/src/extralit/_exceptions/_api.py | 6 +++--- extralit/src/extralit/_exceptions/_base.py | 8 ++++---- extralit/src/extralit/_exceptions/_client.py | 4 ++-- extralit/src/extralit/_exceptions/_hub.py | 8 ++++---- extralit/src/extralit/_exceptions/_metadata.py | 6 +++--- extralit/src/extralit/_exceptions/_records.py | 6 +++--- extralit/src/extralit/_exceptions/_responses.py | 6 +++--- .../src/extralit/_exceptions/_serialization.py | 6 +++--- extralit/src/extralit/_exceptions/_settings.py | 6 +++--- .../src/extralit/_exceptions/_suggestions.py | 6 +++--- extralit/src/extralit/client/resources.py | 12 ++++++------ extralit/src/extralit/datasets/_io/_disk.py | 4 ++-- extralit/src/extralit/records/_resource.py | 4 ++-- extralit/src/extralit/settings/_field.py | 6 +++--- extralit/tests/integration/test_client.py | 16 ++++++++-------- .../tests/unit/test_resources/test_records.py | 6 +++--- 22 files changed, 72 insertions(+), 71 deletions(-) diff --git a/examples/custom_field/table_field.ipynb b/examples/custom_field/table_field.ipynb index c3e19f437..b94c1fbc0 100644 --- a/examples/custom_field/table_field.ipynb +++ b/examples/custom_field/table_field.ipynb @@ -26,7 +26,7 @@ "import argilla as rg\n", "from datasets import load_dataset\n", "\n", - "client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='argilla.apikey')" + "client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')" ] }, { diff --git a/examples/document_extraction/setup_workspace.ipynb b/examples/document_extraction/setup_workspace.ipynb index fdd4e7210..fe7159e40 100644 --- a/examples/document_extraction/setup_workspace.ipynb +++ b/examples/document_extraction/setup_workspace.ipynb @@ -72,7 +72,7 @@ "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused", "\nThe above exception was the direct cause of the following exception:\n", "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpathlib\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Path\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Connect to Argilla using default credentials\u001b[39;00m\n\u001b[0;32m---> 11\u001b[0m client \u001b[38;5;241m=\u001b[39m \u001b[43mrg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mArgilla\u001b[49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mhttp://localhost:6900/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43margilla.apikey\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSuccessfully connected to Argilla at \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclient\u001b[38;5;241m.\u001b[39mapi_url\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", + "Cell \u001b[0;32mIn[1], line 11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpathlib\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Path\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Connect to Argilla using default credentials\u001b[39;00m\n\u001b[0;32m---> 11\u001b[0m client \u001b[38;5;241m=\u001b[39m \u001b[43mrg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mArgilla\u001b[49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mhttp://localhost:6900/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mextralit.apikey\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSuccessfully connected to Argilla at \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclient\u001b[38;5;241m.\u001b[39mapi_url\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/client.py:73\u001b[0m, in \u001b[0;36mArgilla.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 53\u001b[0m api_url: Optional[\u001b[38;5;28mstr\u001b[39m] \u001b[38;5;241m=\u001b[39m DEFAULT_HTTP_CONFIG\u001b[38;5;241m.\u001b[39mapi_url,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mhttp_client_args,\n\u001b[1;32m 58\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 59\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Inits the `Argilla` client.\u001b[39;00m\n\u001b[1;32m 60\u001b[0m \n\u001b[1;32m 61\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;124;03m before raising an exception. Defaults to `5`.\u001b[39;00m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 73\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_url\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_key\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mhttp_client_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_default(\u001b[38;5;28mself\u001b[39m)\n", "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:146\u001b[0m, in \u001b[0;36mAPIClient.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mapi \u001b[38;5;241m=\u001b[39m ArgillaAPI(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhttp_client)\n\u001b[1;32m 145\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 146\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_connection\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m UnauthorizedError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ArgillaCredentialsError() \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n", "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:160\u001b[0m, in \u001b[0;36mAPIClient._validate_connection\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_validate_connection\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 160\u001b[0m user \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43musers\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_me\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 161\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLogged in as \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39musername\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m with the role \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39mrole\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 162\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog(message\u001b[38;5;241m=\u001b[39mmessage, level\u001b[38;5;241m=\u001b[39mlogging\u001b[38;5;241m.\u001b[39mINFO)\n", @@ -102,7 +102,7 @@ "from pathlib import Path\n", "\n", "# Connect to Argilla using default credentials\n", - "client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='argilla.apikey')\n", + "client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')\n", "\n", "print(f\"Successfully connected to Argilla at {client.api_url}\")" ] @@ -340,7 +340,7 @@ "# Import the documents into the workspace\n", "# For demonstration purposes, we'll use the extralit client directly\n", "# Initialize the extralit client with the same credentials\n", - "extralit_client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='argilla.apikey')\n", + "extralit_client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')\n", "\n", "# Import the documents\n", "result = extralit_client.import_documents(\n", diff --git a/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py b/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py index b64d36f50..c28c28fd8 100644 --- a/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py +++ b/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py @@ -282,6 +282,7 @@ def test_export_to_with_image_field_as_data_url(self, sync_test_session, hf_data assert isinstance(exported_dataset[0]["image"], Image.Image) @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") def test_export_to_with_text_question(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) diff --git a/extralit/docs/community/developer.md b/extralit/docs/community/developer.md index 7ed67e224..b17e03cd1 100644 --- a/extralit/docs/community/developer.md +++ b/extralit/docs/community/developer.md @@ -44,9 +44,9 @@ Once you have your environment set up, you can return to this guide to learn mor The Extralit repository has a monorepo structure, which means that all the components are located in the same repository: [`extralit/extralit`](https://github.com/extralit/extralit). This repo is divided into the following folders: -- [`argilla/src/extralit/`](https://github.com/extralit/extralit/tree/develop/argilla/src/extralit): The FastAPI server project for extraction -- [`argilla/docs/`](https://github.com/extralit/extralit/tree/develop/argilla/docs): The documentation project -- [`argilla/src/argilla/`](https://github.com/extralit/extralit/tree/develop/argilla): The argilla SDK project +- [`extralit/src/extralit/`](https://github.com/extralit/extralit/tree/develop/extralit/src/extralit): The FastAPI server project for extraction +- [`extralit/docs/`](https://github.com/extralit/extralit/tree/develop/extralit/docs): The documentation project +- [`extralit/src/extralit/`](https://github.com/extralit/extralit/tree/develop/argilla): The argilla SDK project - [`extralit-server/src/extralit_server/`](https://github.com/extralit/extralit/tree/develop/extralit-server): The FastAPI server project for annotation - [`argilla-frontend/`](https://github.com/extralit/extralit/tree/develop/argilla-frontend): The Vue.js UI project - [`examples`](https://github.com/extralit/extralit/tree/develop/examples): Example resources for deployments, scripts and notebooks @@ -92,7 +92,7 @@ pdm install --dev To install specific sub-packages with editable mode, you can use the following command: ```sh -pip install -e argilla/ +pip install -e extralit/ # or pip install -e extralit-server/ ``` @@ -132,7 +132,7 @@ This format helps document the code, keeps the commit history clean, and makes i Running tests at the end of every development cycle is indispensable to ensure no breaking changes. GH Actions Workflows automatically run the tests on every commit and PR, but you can also run them locally. ```sh -cd argilla/ +cd extralit/ pdm run test-cov tests/unit pdm run test-cov tests/integration ``` @@ -230,7 +230,7 @@ The Command Line Interface (CLI) is an important part of Extralit that enables u #### CLI Structure -The CLI code is located in `argilla/src/argilla/cli` with this organization: +The CLI code is located in `extralit/src/extralit/cli` with this organization: ``` cli/ @@ -250,7 +250,7 @@ The CLI uses [Typer](https://typer.tiangolo.com/) for creating the command-line 1. Create a new module in the appropriate directory: ```python -# src/argilla/cli/mycommand/__main__.py +# src/extralit/cli/mycommand/__main__.py import typer from extralit.cli.callback import init_callback from extralit.cli.rich import get_argilla_themed_panel @@ -285,7 +285,7 @@ app.add_typer(mycommand.app, name="mycommand") - Create commands that fit into existing workflows - Follow consistent naming and structure patterns -- Provide clear help text for all commands and options, e.g. use the [`print_rich_table`](https://github.com/extralit/extralit/blob/develop/argilla/src/argilla/cli/rich.py#L115) function to print tables in a rich format +- Provide clear help text for all commands and options, e.g. use the [`print_rich_table`](https://github.com/extralit/extralit/blob/develop/extralit/src/extralit/cli/rich.py#L115) function to print tables in a rich format - Use sensible defaults to minimize required input - Follow the Unix philosophy: commands should do one thing well diff --git a/extralit/docs/community/integrations/llamaindex_rag_github.ipynb b/extralit/docs/community/integrations/llamaindex_rag_github.ipynb index 9436784fb..37102dae0 100644 --- a/extralit/docs/community/integrations/llamaindex_rag_github.ipynb +++ b/extralit/docs/community/integrations/llamaindex_rag_github.ipynb @@ -126,7 +126,7 @@ "argilla_handler = ArgillaHandler(\n", " dataset_name=\"github_query_llama_index\",\n", " api_url=\"http://localhost:6900\",\n", - " api_key=\"argilla.apikey\",\n", + " api_key=\"extralit.apikey\",\n", " number_of_retrievals=2,\n", ")\n", "root_dispatcher = get_dispatcher()\n", diff --git a/extralit/src/extralit/_api/_client.py b/extralit/src/extralit/_api/_client.py index 2f94459c4..d6fab844f 100644 --- a/extralit/src/extralit/_api/_client.py +++ b/extralit/src/extralit/_api/_client.py @@ -31,7 +31,7 @@ from extralit._api._users import UsersAPI from extralit._api._vectors import VectorsAPI from extralit._api._workspaces import WorkspacesAPI -from extralit._exceptions import ArgillaError +from extralit._exceptions import ExtralitError from extralit._constants import _DEFAULT_API_URL from extralit._api._token import get_secret @@ -128,10 +128,10 @@ def __init__( **http_client_args, ): if not api_url: - raise ArgillaError("Missing api_url. You must provide a valid API url") + raise ExtralitError("Missing api_url. You must provide a valid API url") if not api_key: - raise ArgillaError("Missing api_key. You must provide a valid API key.") + raise ExtralitError("Missing api_key. You must provide a valid API key.") self.api_url = api_url self.api_key = api_key diff --git a/extralit/src/extralit/_exceptions/_api.py b/extralit/src/extralit/_exceptions/_api.py index be50c40ee..0f1206f6d 100644 --- a/extralit/src/extralit/_exceptions/_api.py +++ b/extralit/src/extralit/_exceptions/_api.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,10 +15,10 @@ from httpx import HTTPStatusError -from extralit._exceptions._base import ArgillaError +from extralit._exceptions._base import ExtralitError -class ArgillaAPIError(ArgillaError): +class ArgillaAPIError(ExtralitError): message = "Server error" def __init__(self, message: Optional[str] = None, status_code: int = 500): diff --git a/extralit/src/extralit/_exceptions/_base.py b/extralit/src/extralit/_exceptions/_base.py index 57d071407..968eeb8f7 100644 --- a/extralit/src/extralit/_exceptions/_base.py +++ b/extralit/src/extralit/_exceptions/_base.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -14,11 +14,11 @@ from typing import Optional -class ArgillaError(Exception): - message_stub = "Argilla SDK error" +class ExtralitError(Exception): + message_stub = "Extralit SDK error" def __init__(self, message: Optional[str] = None): - """Base class for all Argilla exceptions + """Base class for all Extralit exceptions Args: message (str): The message to display when the exception is raised """ diff --git a/extralit/src/extralit/_exceptions/_client.py b/extralit/src/extralit/_exceptions/_client.py index c1450179e..2a66f019d 100644 --- a/extralit/src/extralit/_exceptions/_client.py +++ b/extralit/src/extralit/_exceptions/_client.py @@ -12,9 +12,9 @@ # See the License for the specific language governing permissions and # limitations under the License. -from extralit._exceptions._base import ArgillaError +from extralit._exceptions._base import ExtralitError -class ExtralitCredentialsError(ArgillaError): +class ExtralitCredentialsError(ExtralitError): def __init__(self, message: str = "Credentials (api_key and/or api_url) are invalid") -> None: super().__init__(message) diff --git a/extralit/src/extralit/_exceptions/_hub.py b/extralit/src/extralit/_exceptions/_hub.py index 0baf3bd0a..1c7cb0e79 100644 --- a/extralit/src/extralit/_exceptions/_hub.py +++ b/extralit/src/extralit/_exceptions/_hub.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -11,7 +11,7 @@ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. -from extralit._exceptions import ArgillaError +from extralit._exceptions import ExtralitError __all__ = [ "ImportDatasetError", @@ -19,11 +19,11 @@ ] -class ImportDatasetError(ArgillaError): +class ImportDatasetError(ExtralitError): def __init__(self, message: str = "Error importing dataset") -> None: super().__init__(message) -class DatasetsServerException(ArgillaError): +class DatasetsServerException(ExtralitError): def __init__(self, message: str = "Error connecting to Hugging Face Hub datasets-server API") -> None: super().__init__(message) diff --git a/extralit/src/extralit/_exceptions/_metadata.py b/extralit/src/extralit/_exceptions/_metadata.py index 84be16a38..b51861da2 100644 --- a/extralit/src/extralit/_exceptions/_metadata.py +++ b/extralit/src/extralit/_exceptions/_metadata.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from extralit._exceptions._base import ArgillaError +from extralit._exceptions._base import ExtralitError -class MetadataError(ArgillaError): +class MetadataError(ExtralitError): message: str = "Error defining dataset metadata settings" diff --git a/extralit/src/extralit/_exceptions/_records.py b/extralit/src/extralit/_exceptions/_records.py index 117f4d59b..dbb5d86e8 100644 --- a/extralit/src/extralit/_exceptions/_records.py +++ b/extralit/src/extralit/_exceptions/_records.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from extralit._exceptions._base import ArgillaError +from extralit._exceptions._base import ExtralitError -class RecordsIngestionError(ArgillaError): +class RecordsIngestionError(ExtralitError): pass diff --git a/extralit/src/extralit/_exceptions/_responses.py b/extralit/src/extralit/_exceptions/_responses.py index bc9e01db3..8fb09b4ee 100644 --- a/extralit/src/extralit/_exceptions/_responses.py +++ b/extralit/src/extralit/_exceptions/_responses.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from extralit._exceptions._base import ArgillaError +from extralit._exceptions._base import ExtralitError -class RecordResponsesError(ArgillaError): +class RecordResponsesError(ExtralitError): pass diff --git a/extralit/src/extralit/_exceptions/_serialization.py b/extralit/src/extralit/_exceptions/_serialization.py index 7ee355800..100cb4024 100644 --- a/extralit/src/extralit/_exceptions/_serialization.py +++ b/extralit/src/extralit/_exceptions/_serialization.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from extralit._exceptions._base import ArgillaError +from extralit._exceptions._base import ExtralitError -class ArgillaSerializeError(ArgillaError): +class ArgillaSerializeError(ExtralitError): pass diff --git a/extralit/src/extralit/_exceptions/_settings.py b/extralit/src/extralit/_exceptions/_settings.py index 10b03278c..02ec76ccd 100644 --- a/extralit/src/extralit/_exceptions/_settings.py +++ b/extralit/src/extralit/_exceptions/_settings.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from extralit._exceptions._base import ArgillaError +from extralit._exceptions._base import ExtralitError -class SettingsError(ArgillaError): +class SettingsError(ExtralitError): pass diff --git a/extralit/src/extralit/_exceptions/_suggestions.py b/extralit/src/extralit/_exceptions/_suggestions.py index 6044efd4d..f16777a9a 100644 --- a/extralit/src/extralit/_exceptions/_suggestions.py +++ b/extralit/src/extralit/_exceptions/_suggestions.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,8 +12,8 @@ # See the License for the specific language governing permissions and # limitations under the License. -from extralit._exceptions._base import ArgillaError +from extralit._exceptions._base import ExtralitError -class RecordSuggestionsError(ArgillaError): +class RecordSuggestionsError(ExtralitError): pass diff --git a/extralit/src/extralit/client/resources.py b/extralit/src/extralit/client/resources.py index e4fab94c1..3cdd1d116 100644 --- a/extralit/src/extralit/client/resources.py +++ b/extralit/src/extralit/client/resources.py @@ -21,7 +21,7 @@ from extralit._api._base import ResourceAPI from extralit._api._client import DEFAULT_HTTP_CONFIG # noqa: F401 from extralit._api._webhooks import WebhookModel -from extralit._exceptions import ArgillaError, NotFoundError +from extralit._exceptions import ExtralitError, NotFoundError from extralit._helpers import GenericIterator from extralit._helpers._resource_repr import ResourceHTMLReprMixin from extralit._models import DatasetModel, ResourceModel, UserModel, WorkspaceModel @@ -55,7 +55,7 @@ def __call__(self, id: Union[UUID, str]) -> Optional["User"]: def __call__(self, username: str = None, id: Union[str, UUID] = None) -> Optional["User"]: if not (username or id): - raise ArgillaError("One of 'username' or 'id' must be provided") + raise ExtralitError("One of 'username' or 'id' must be provided") if username and id: warnings.warn("Only one of 'username' or 'id' must be provided. Using 'id'") username = None @@ -151,7 +151,7 @@ def __call__(self, id: Union[UUID, str]) -> Optional["Workspace"]: def __call__(self, name: str = None, id: Union[UUID, str] = None) -> Optional["Workspace"]: if not (name or id): - raise ArgillaError("One of 'name' or 'id' must be provided") + raise ExtralitError("One of 'name' or 'id' must be provided") if name and id: warnings.warn("Only one of 'name' or 'id' must be provided. Using 'id'") @@ -208,7 +208,7 @@ def list(self) -> List["Workspace"]: def default(self) -> "Workspace": """The default workspace.""" if len(self) == 0: - raise ArgillaError("There are no workspaces created. Please create a new workspace first") + raise ExtralitError("There are no workspaces created. Please create a new workspace first") return self[0] ############################ @@ -270,7 +270,7 @@ def __call__( workspace_obj = self._client.workspaces(workspace_obj) if workspace_obj is None: - raise ArgillaError("Workspace not found. Please provide a valid workspace name or id.") + raise ExtralitError("Workspace not found. Please provide a valid workspace name or id.") for dataset in workspace_obj.datasets: if dataset.name == name: @@ -293,7 +293,7 @@ def __call__( return None else: - raise ArgillaError("One of 'name', 'id', or 'workspace' must be provided") + raise ExtralitError("One of 'name', 'id', or 'workspace' must be provided") def __iter__(self): return self._Iterator([self._from_model(model) for model in self._api.list()]) diff --git a/extralit/src/extralit/datasets/_io/_disk.py b/extralit/src/extralit/datasets/_io/_disk.py index aa3e381dc..6d950b144 100644 --- a/extralit/src/extralit/datasets/_io/_disk.py +++ b/extralit/src/extralit/datasets/_io/_disk.py @@ -21,7 +21,7 @@ from pathlib import Path from typing import TYPE_CHECKING, Optional, Tuple, Type, Union -from extralit._exceptions import RecordsIngestionError, ArgillaError, ImportDatasetError +from extralit._exceptions import RecordsIngestionError, ExtralitError, ImportDatasetError from extralit._models import DatasetModel from extralit.client import Extralit from extralit.settings import Settings @@ -97,7 +97,7 @@ def from_disk( if isinstance(workspace, str): workspace = client.workspaces(workspace) if not workspace: - raise ArgillaError(f"Workspace {workspace} not found on the server.") + raise ExtralitError(f"Workspace {workspace} not found on the server.") else: warnings.warn("Workspace not provided. Using default workspace.") workspace = client.workspaces.default diff --git a/extralit/src/extralit/records/_resource.py b/extralit/src/extralit/records/_resource.py index eaeb20387..42f2b9ca4 100644 --- a/extralit/src/extralit/records/_resource.py +++ b/extralit/src/extralit/records/_resource.py @@ -16,7 +16,7 @@ from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Optional, Union from uuid import UUID -from extralit._exceptions import ArgillaError +from extralit._exceptions import ExtralitError from extralit._helpers._media import cast_image, uncast_image from extralit._models import ( FieldValue, @@ -419,7 +419,7 @@ def _check_response_already_exists(self, response: Response) -> None: """Checks if a response for the same question name and user id already exists""" for existing_response in self.__responses_by_question_name[response.question_name]: if existing_response.user_id == response.user_id: - raise ArgillaError( + raise ExtralitError( f"Response for question with name {response.question_name!r} and user id {response.user_id!r} " f"already found. The responses for the same question name do not support more than one user" ) diff --git a/extralit/src/extralit/settings/_field.py b/extralit/src/extralit/settings/_field.py index 97a604baf..86a341d19 100644 --- a/extralit/src/extralit/settings/_field.py +++ b/extralit/src/extralit/settings/_field.py @@ -20,7 +20,7 @@ from extralit import Extralit from extralit._api import FieldsAPI -from extralit._exceptions import ArgillaError, SettingsError +from extralit._exceptions import ExtralitError, SettingsError from extralit._models import ( FieldModel, TextFieldSettings, @@ -285,7 +285,7 @@ def _load_template(cls, template: str) -> str: return requests.get(template).text if isinstance(template, str): return template - raise ArgillaError( + raise ExtralitError( "Invalid template. Please provide 1: a valid path or URL to a HTML file. 2: a valid HTML string." ) @@ -335,7 +335,7 @@ def _field_from_model(model: FieldModel) -> Field: elif model.settings.type == "table": return TableField.from_model(model) else: - raise ArgillaError(f"Unsupported field type: {model.settings.type}") + raise ExtralitError(f"Unsupported field type: {model.settings.type}") def _field_from_dict(data: dict) -> Field: diff --git a/extralit/tests/integration/test_client.py b/extralit/tests/integration/test_client.py index 5597dc3e7..220ae0a4b 100644 --- a/extralit/tests/integration/test_client.py +++ b/extralit/tests/integration/test_client.py @@ -17,7 +17,7 @@ import pytest from extralit import Extralit, Dataset, TextField, TextQuestion, Settings, User, Workspace -from extralit._exceptions import ArgillaError +from extralit._exceptions import ExtralitError @pytest.fixture @@ -80,25 +80,25 @@ def test_get_resources_warnings(self, client: Extralit): assert client.datasets(name="missing") is None def test_get_resource_with_missing_args(self, client: Extralit): - with pytest.raises(ArgillaError): + with pytest.raises(ExtralitError): client.workspaces() - with pytest.raises(ArgillaError): + with pytest.raises(ExtralitError): client.datasets() - with pytest.raises(ArgillaError): + with pytest.raises(ExtralitError): client.users() def test_init_with_missing_api_url(self): - with pytest.raises(ArgillaError): + with pytest.raises(ExtralitError): Extralit(api_url=None) - with pytest.raises(ArgillaError): + with pytest.raises(ExtralitError): Extralit(api_url="") def test_init_with_missing_api_key(self): - with pytest.raises(ArgillaError): + with pytest.raises(ExtralitError): Extralit(api_key=None) - with pytest.raises(ArgillaError): + with pytest.raises(ExtralitError): Extralit(api_key="") diff --git a/extralit/tests/unit/test_resources/test_records.py b/extralit/tests/unit/test_resources/test_records.py index 7120e4221..58f39cdc1 100644 --- a/extralit/tests/unit/test_resources/test_records.py +++ b/extralit/tests/unit/test_resources/test_records.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,7 +17,7 @@ import pytest from extralit import Dataset, Record, Response, Settings, Suggestion, TextField, TextQuestion -from extralit._exceptions import ArgillaError +from extralit._exceptions import ExtralitError from extralit._models import RecordModel from extralit._models._record._metadata import MetadataModel @@ -107,7 +107,7 @@ def test_add_record_response_for_the_same_question_and_user_id(self): response = Response(question_name="question", value="value", user_id=uuid.uuid4()) record = Record(fields={"name": "John"}, responses=[response]) - with pytest.raises(ArgillaError): + with pytest.raises(ExtralitError): record.responses.add(response) def test_record_from_model_with_none_vectors(self, dataset: Dataset): From b38a0a1fbd5bed55d6fbc5ddc502da938d67688a Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 13:17:18 -0700 Subject: [PATCH 15/23] Refactor: Rename references from Argilla to Extralit across the codebase - Updated configuration files, including codecov.yml and docker-compose.yml, to reflect the new naming convention. - Changed environment variables and database configurations to use Extralit instead of Argilla. - Modified exception handling to replace ArgillaAPIError with ExtralitAPIError in the API client. - Adjusted paths and service names in Kubernetes deployment files to align with the new structure. - Removed deprecated Argilla chart files and updated related tests to ensure consistency with the Extralit naming. --- .../docker-compose/docker-compose.yml | 2 +- .devcontainer/docker-compose/setup.sh | 10 --- .../ISSUE_TEMPLATE/bug-python-deployment.yml | 6 +- .github/ISSUE_TEMPLATE/bug-ui-ux.yml | 6 +- .github/workflows/extralit-server.yml | 4 +- .github/workflows/extralit.yml | 12 +-- .../services/useLocalStorage.ts | 4 +- codecov.yml | 10 +-- .../docker/nginx/docker-compose.yaml | 2 +- .../docker/traefik/docker-compose.yaml | 2 +- .../k8s/argilla-chart/templates/hpa.yaml | 22 ------ .../k8s/argilla-chart/templates/ingress.yaml | 25 ------ .../k8s/argilla-chart/templates/pvc.yaml | 17 ---- .../k8s/argilla-chart/templates/service.yaml | 12 --- .../.helmignore | 0 .../Chart.lock | 0 .../Chart.yaml | 4 +- .../README.md | 4 +- .../templates/NOTES.txt | 14 ++-- .../templates/_helpers.tpl | 22 +++--- .../templates/configmap.yaml | 2 +- .../templates/deployment.yaml | 38 ++++----- .../templates/elasticsearch-operator.yaml | 4 +- .../k8s/extralit-chart/templates/hpa.yaml | 22 ++++++ .../k8s/extralit-chart/templates/ingress.yaml | 25 ++++++ .../k8s/extralit-chart/templates/pvc.yaml | 17 ++++ .../k8s/extralit-chart/templates/service.yaml | 10 +++ .../templates/serviceaccount.yaml | 4 +- .../templates/worker-deployment.yaml | 20 ++--- .../tests/simple_test.yaml | 4 +- .../tests/suite_test.yaml | 48 +++++------ .../tests/test-connection.yaml | 6 +- .../values.yaml | 8 +- .../k8s/extralit-server-certificate.yaml | 4 +- .../k8s/extralit-server-ingress.yaml | 26 +++--- .../deployments/k8s/postgres-deployment.yml | 44 +++++------ extralit-server/docker/server/Dockerfile | 18 ++--- .../server/dev.extralit_server.dockerfile | 79 ------------------- extralit-server/src/extralit_server/_app.py | 4 +- .../src/extralit_server/constants.py | 2 +- .../contexts/hub/test_hub_dataset_exporter.py | 49 ++++++------ extralit/src/extralit/_api/_workspaces.py | 24 +++--- extralit/src/extralit/_exceptions/_api.py | 18 ++--- extralit/src/extralit/_helpers/_deploy.py | 2 +- extralit/src/extralit/settings/_resource.py | 10 +-- extralit/src/extralit/webhooks/_event.py | 6 +- extralit/tests/unit/test_interface.py | 2 +- 47 files changed, 292 insertions(+), 382 deletions(-) delete mode 100644 examples/deployments/k8s/argilla-chart/templates/hpa.yaml delete mode 100644 examples/deployments/k8s/argilla-chart/templates/ingress.yaml delete mode 100644 examples/deployments/k8s/argilla-chart/templates/pvc.yaml delete mode 100644 examples/deployments/k8s/argilla-chart/templates/service.yaml rename examples/deployments/k8s/{argilla-chart => extralit-chart}/.helmignore (100%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/Chart.lock (100%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/Chart.yaml (94%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/README.md (96%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/templates/NOTES.txt (78%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/templates/_helpers.tpl (78%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/templates/configmap.yaml (68%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/templates/deployment.yaml (57%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/templates/elasticsearch-operator.yaml (92%) create mode 100644 examples/deployments/k8s/extralit-chart/templates/hpa.yaml create mode 100644 examples/deployments/k8s/extralit-chart/templates/ingress.yaml create mode 100644 examples/deployments/k8s/extralit-chart/templates/pvc.yaml create mode 100644 examples/deployments/k8s/extralit-chart/templates/service.yaml rename examples/deployments/k8s/{argilla-chart => extralit-chart}/templates/serviceaccount.yaml (70%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/templates/worker-deployment.yaml (66%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/tests/simple_test.yaml (69%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/tests/suite_test.yaml (81%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/tests/test-connection.yaml (52%) rename examples/deployments/k8s/{argilla-chart => extralit-chart}/values.yaml (95%) delete mode 100644 extralit-server/docker/server/dev.extralit_server.dockerfile diff --git a/.devcontainer/docker-compose/docker-compose.yml b/.devcontainer/docker-compose/docker-compose.yml index 99fea6492..7ae4e848e 100644 --- a/.devcontainer/docker-compose/docker-compose.yml +++ b/.devcontainer/docker-compose/docker-compose.yml @@ -43,7 +43,7 @@ services: POSTGRES_HOST: localhost POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres - POSTGRES_DB: argilla + POSTGRES_DB: extralit healthcheck: test: ["CMD-SHELL", "pg_isready"] interval: 10s diff --git a/.devcontainer/docker-compose/setup.sh b/.devcontainer/docker-compose/setup.sh index 25ec1da11..7cd9f1193 100644 --- a/.devcontainer/docker-compose/setup.sh +++ b/.devcontainer/docker-compose/setup.sh @@ -12,14 +12,4 @@ else echo "Package 'extralit' is already installed. Skipping installation." fi -# Check if the upstream remote already exists -git config --global --add safe.directory /workspaces/extralit -if ! git remote get-url upstream &>/dev/null; then - echo "Adding upstream remote..." - git remote add upstream https://github.com/argilla-io/argilla - git fetch upstream --no-tags -else - echo "Upstream remote already exists. Skipping addition." -fi - echo "Setup script completed." diff --git a/.github/ISSUE_TEMPLATE/bug-python-deployment.yml b/.github/ISSUE_TEMPLATE/bug-python-deployment.yml index f6a8cd8fd..100c0beed 100644 --- a/.github/ISSUE_TEMPLATE/bug-python-deployment.yml +++ b/.github/ISSUE_TEMPLATE/bug-python-deployment.yml @@ -39,8 +39,8 @@ body: - type: input id: extralit-version attributes: - label: Extralit/Argilla Version - description: What version of Extralit/Argilla are you using? + label: Extralit Version + description: What version of Extralit are you using? placeholder: e.g. v0.2.0 validations: required: true @@ -104,4 +104,4 @@ body: attributes: label: Additional context description: Add any other context about the problem here. - placeholder: Any other information that might be helpful... \ No newline at end of file + placeholder: Any other information that might be helpful... diff --git a/.github/ISSUE_TEMPLATE/bug-ui-ux.yml b/.github/ISSUE_TEMPLATE/bug-ui-ux.yml index f7ff93192..74ca009bd 100644 --- a/.github/ISSUE_TEMPLATE/bug-ui-ux.yml +++ b/.github/ISSUE_TEMPLATE/bug-ui-ux.yml @@ -74,8 +74,8 @@ body: - type: input id: extralit-version attributes: - label: Extralit/Argilla Version - description: What version of Extralit/Argilla are you using? + label: Extralit Version + description: What version of Extralit are you using? placeholder: e.g. 1.0.0 validations: required: true @@ -101,4 +101,4 @@ body: attributes: label: Additional context description: Add any other context about the problem here. - placeholder: Any other information that might be helpful... \ No newline at end of file + placeholder: Any other information that might be helpful... diff --git a/.github/workflows/extralit-server.yml b/.github/workflows/extralit-server.yml index d69b90e5a..3413050cc 100644 --- a/.github/workflows/extralit-server.yml +++ b/.github/workflows/extralit-server.yml @@ -51,7 +51,7 @@ jobs: POSTGRES_HOST: localhost POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres - POSTGRES_DB: argilla + POSTGRES_DB: extralit options: >- --health-cmd pg_isready --health-interval 10s @@ -114,7 +114,7 @@ jobs: env: HF_TOKEN_EXTRALIT_INTERNAL_TESTING: ${{ secrets.HF_TOKEN_EXTRALIT_INTERNAL_TESTING }} run: | - EXTRALIT_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/argilla + EXTRALIT_DATABASE_URL=postgresql://postgres:postgres@localhost:5432/extralit EXTRALIT_ELASTICSEARCH=http://localhost:9200 EXTRALIT_SEARCH_ENGINE=elasticsearch pdm test-cov tests/unit diff --git a/.github/workflows/extralit.yml b/.github/workflows/extralit.yml index 8e3be8227..781217b20 100644 --- a/.github/workflows/extralit.yml +++ b/.github/workflows/extralit.yml @@ -38,7 +38,7 @@ jobs: env: EXTRALIT_ENABLE_TELEMETRY: 0 # Set credentials - USERNAME: argilla + USERNAME: extralit PASSWORD: 12345678 API_KEY: extralit.apikey # Configure storage to use local files instead of MinIO @@ -80,12 +80,12 @@ jobs: pdm install uv cache prune --ci - - name: Wait for argilla server to start + - name: Wait for extralit-server to start run: | while ! curl -XGET http://localhost:6900/api/_status; do sleep 5; done # Create a directory for local storage that the container can access - mkdir -p /tmp/argilla-files - chmod -R 777 /tmp/argilla-files + mkdir -p /tmp/extralit-files + chmod -R 777 /tmp/extralit-files - name: Set huggingface hub credentials run: | echo "HF_TOKEN_EXTRALIT_INTERNAL_TESTING=${{ secrets.HF_TOKEN_EXTRALIT_INTERNAL_TESTING }}" >> "$GITHUB_ENV" @@ -114,7 +114,7 @@ jobs: uses: codecov/codecov-action@v5.4.3 with: files: coverage.xml - flags: argilla + flags: extralit token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: false @@ -133,7 +133,7 @@ jobs: name: extralit path: extralit/dist - # This job will publish argilla package into PyPI repository + # This job will publish extralit package into PyPI repository publish_release: name: Publish Release runs-on: ubuntu-latest diff --git a/argilla-frontend/v1/infrastructure/services/useLocalStorage.ts b/argilla-frontend/v1/infrastructure/services/useLocalStorage.ts index 21620f716..d7a7e2663 100644 --- a/argilla-frontend/v1/infrastructure/services/useLocalStorage.ts +++ b/argilla-frontend/v1/infrastructure/services/useLocalStorage.ts @@ -1,6 +1,6 @@ import { ILocalStorageService, Options } from "~/v1/domain/services/ILocalStorageService"; -const STORAGE_KEY = "argilla"; +const STORAGE_KEY = "extralit"; const EMPTY_OBJECT = "{}"; @@ -31,7 +31,7 @@ export const useLocalStorage = (): ILocalStorageService => { [key]: value, }) ); - } catch {} + } catch { } }; const pop = (key: Options) => { diff --git a/codecov.yml b/codecov.yml index 2cab1dd0c..0ed568ccb 100644 --- a/codecov.yml +++ b/codecov.yml @@ -12,9 +12,9 @@ flags: paths: - argilla-frontend/ carryforward: true - argilla: + extralit: paths: - - extralit/src/argilla/ + - extralit/src/extralit/ carryforward: true extralit: paths: @@ -36,10 +36,10 @@ component_management: paths: - extralit/src/extralit/** - - component_id: argilla - name: argilla + - component_id: extralit + name: extralit paths: - - extralit/src/argilla/** + - extralit/src/extralit/** - component_id: extralit-server paths: diff --git a/examples/deployments/docker/nginx/docker-compose.yaml b/examples/deployments/docker/nginx/docker-compose.yaml index 8ff766c97..dd5cb8073 100644 --- a/examples/deployments/docker/nginx/docker-compose.yaml +++ b/examples/deployments/docker/nginx/docker-compose.yaml @@ -15,7 +15,7 @@ services: HF_HUB_DISABLE_TELEMETRY: 1 EXTRALIT_BASE_URL: /argilla - USERNAME: argilla + USERNAME: extralit PASSWORD: 12345678 API_KEY: extralit.apikey ports: diff --git a/examples/deployments/docker/traefik/docker-compose.yaml b/examples/deployments/docker/traefik/docker-compose.yaml index a76d6ff17..0cafd682c 100644 --- a/examples/deployments/docker/traefik/docker-compose.yaml +++ b/examples/deployments/docker/traefik/docker-compose.yaml @@ -21,7 +21,7 @@ services: environment: HF_HUB_DISABLE_TELEMETRY: 1 EXTRALIT_BASE_URL: /argilla - USERNAME: argilla + USERNAME: extralit PASSWORD: 12345678 API_KEY: extralit.apikey labels: diff --git a/examples/deployments/k8s/argilla-chart/templates/hpa.yaml b/examples/deployments/k8s/argilla-chart/templates/hpa.yaml deleted file mode 100644 index 510fd55ce..000000000 --- a/examples/deployments/k8s/argilla-chart/templates/hpa.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if .Values.argilla.hpa.enabled }} -apiVersion: autoscaling/v2 -kind: HorizontalPodAutoscaler -metadata: - name: {{ include "argilla.fullname" . }} - labels: - {{- include "argilla.labels" . | nindent 4 }} -spec: - scaleTargetRef: - apiVersion: apps/v1 - kind: Deployment - name: {{ include "argilla.fullname" . }} - minReplicas: {{ .Values.argilla.hpa.minReplicas }} - maxReplicas: {{ .Values.argilla.hpa.maxReplicas }} - metrics: - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: {{ .Values.argilla.hpa.targetCPUUtilizationPercentage }} -{{- end }} diff --git a/examples/deployments/k8s/argilla-chart/templates/ingress.yaml b/examples/deployments/k8s/argilla-chart/templates/ingress.yaml deleted file mode 100644 index 55d3de0be..000000000 --- a/examples/deployments/k8s/argilla-chart/templates/ingress.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if .Values.argilla.ingress.enabled }} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: {{ include "argilla.fullname" . }} - labels: - {{- include "argilla.labels" . | nindent 4 }} - {{- with .Values.argilla.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - ingressClassName: {{ .Values.argilla.ingress.className }} - rules: - - host: {{ .Values.argilla.ingress.host | quote }} - http: - paths: - - path: / - pathType: Prefix - backend: - service: - name: {{ include "argilla.fullname" . }} - port: - number: 6900 -{{- end }} \ No newline at end of file diff --git a/examples/deployments/k8s/argilla-chart/templates/pvc.yaml b/examples/deployments/k8s/argilla-chart/templates/pvc.yaml deleted file mode 100644 index b6839866d..000000000 --- a/examples/deployments/k8s/argilla-chart/templates/pvc.yaml +++ /dev/null @@ -1,17 +0,0 @@ -{{- if .Values.argilla.persistence.enabled -}} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ include "argilla.fullname" . }}-pvc - labels: - {{- include "argilla.labels" . | nindent 4 }} -spec: - accessModes: - - {{ .Values.argilla.persistence.accessMode | quote }} - resources: - requests: - storage: {{ .Values.argilla.persistence.size | quote }} - {{- if .Values.argilla.persistence.storageClass }} - storageClassName: {{ .Values.argilla.persistence.storageClass | quote }} - {{- end }} -{{- end }} \ No newline at end of file diff --git a/examples/deployments/k8s/argilla-chart/templates/service.yaml b/examples/deployments/k8s/argilla-chart/templates/service.yaml deleted file mode 100644 index 3b108e94c..000000000 --- a/examples/deployments/k8s/argilla-chart/templates/service.yaml +++ /dev/null @@ -1,12 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "argilla.fullname" . }} - labels: - {{- include "argilla.labels" . | nindent 4 }} -spec: - selector: - {{- include "argilla.selectorLabels" . | nindent 4 }} - ports: - - name: http - port: 6900 diff --git a/examples/deployments/k8s/argilla-chart/.helmignore b/examples/deployments/k8s/extralit-chart/.helmignore similarity index 100% rename from examples/deployments/k8s/argilla-chart/.helmignore rename to examples/deployments/k8s/extralit-chart/.helmignore diff --git a/examples/deployments/k8s/argilla-chart/Chart.lock b/examples/deployments/k8s/extralit-chart/Chart.lock similarity index 100% rename from examples/deployments/k8s/argilla-chart/Chart.lock rename to examples/deployments/k8s/extralit-chart/Chart.lock diff --git a/examples/deployments/k8s/argilla-chart/Chart.yaml b/examples/deployments/k8s/extralit-chart/Chart.yaml similarity index 94% rename from examples/deployments/k8s/argilla-chart/Chart.yaml rename to examples/deployments/k8s/extralit-chart/Chart.yaml index ad90d6898..947973b62 100644 --- a/examples/deployments/k8s/argilla-chart/Chart.yaml +++ b/examples/deployments/k8s/extralit-chart/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 -name: argilla -description: A Helm chart for Argilla Server on Kubernetes +name: extralit +description: A Helm chart for Extralit Server on Kubernetes # A chart can be either an 'application' or a 'library' chart. # diff --git a/examples/deployments/k8s/argilla-chart/README.md b/examples/deployments/k8s/extralit-chart/README.md similarity index 96% rename from examples/deployments/k8s/argilla-chart/README.md rename to examples/deployments/k8s/extralit-chart/README.md index 68e9b3d78..2af644e02 100644 --- a/examples/deployments/k8s/argilla-chart/README.md +++ b/examples/deployments/k8s/extralit-chart/README.md @@ -71,7 +71,7 @@ kubectl get pods -n elastic-system After adding the repository, you can install the chart with the release name `my-extralit-server`: ```bash -helm install my-extralit-server examples/deployments/k8s/argilla-chart +helm install my-extralit-server examples/deployments/k8s/extralit-chart ``` Check the status of the pods: @@ -135,7 +135,7 @@ helm unittest --help To execute the unit tests for this chart, run the following command from the root of the chart directory: ```bash -helm unittest examples/deployments/k8s/argilla-chart +helm unittest examples/deployments/k8s/extralit-chart ``` This will run all the test files located in the `tests/` directory of the chart. diff --git a/examples/deployments/k8s/argilla-chart/templates/NOTES.txt b/examples/deployments/k8s/extralit-chart/templates/NOTES.txt similarity index 78% rename from examples/deployments/k8s/argilla-chart/templates/NOTES.txt rename to examples/deployments/k8s/extralit-chart/templates/NOTES.txt index 70e5252ba..e5460bb98 100644 --- a/examples/deployments/k8s/argilla-chart/templates/NOTES.txt +++ b/examples/deployments/k8s/extralit-chart/templates/NOTES.txt @@ -10,20 +10,20 @@ To learn more about the release, try: Argilla: -{{- if .Values.argilla.ingress.enabled }} - You can access the Argilla server at: http://{{ .Values.argilla.ingress.host }} +{{- if .Values.extralit.ingress.enabled }} + You can access the Argilla server at: http://{{ .Values.extralit.ingress.host }} {{- else }} To access the Argilla server, run these commands: - $ export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "argilla.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + $ export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "extralit.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") $ kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 6900:6900 Then access the Argilla server at http://localhost:6900 {{- end }} -{{- if .Values.argilla.persistence.enabled }} +{{- if .Values.extralit.persistence.enabled }} Persistence is enabled for Argilla. - Your Argilla data will be stored in a Persistent Volume Claim named: {{ .Release.Name }}-argilla-pvc + Your Argilla data will be stored in a Persistent Volume Claim named: {{ .Release.Name }}-extralit-pvc To find the actual storage location of your Argilla data, run the following command: - $ kubectl get pvc {{ .Release.Name }}-argilla-pvc -o jsonpath="{.spec.volumeName}" + $ kubectl get pvc {{ .Release.Name }}-extralit-pvc -o jsonpath="{.spec.volumeName}" $ kubectl get pv -o jsonpath="{.spec.hostPath.path}" {{- end }} @@ -55,7 +55,7 @@ Redis: Using external Redis at: {{ .Values.externalRedis.host }}:{{ .Values.externalRedis.port }} {{- end }} -{{- if and (not .Values.redis.master.persistence.enabled) (not .Values.elasticsearch.persistence.enabled) (not .Values.argilla.persistence.enabled)}} +{{- if and (not .Values.redis.master.persistence.enabled) (not .Values.elasticsearch.persistence.enabled) (not .Values.extralit.persistence.enabled)}} Persistence is disabled. Your data will not be preserved across pod restarts. {{- end }} diff --git a/examples/deployments/k8s/argilla-chart/templates/_helpers.tpl b/examples/deployments/k8s/extralit-chart/templates/_helpers.tpl similarity index 78% rename from examples/deployments/k8s/argilla-chart/templates/_helpers.tpl rename to examples/deployments/k8s/extralit-chart/templates/_helpers.tpl index a9d92ee54..421733573 100644 --- a/examples/deployments/k8s/argilla-chart/templates/_helpers.tpl +++ b/examples/deployments/k8s/extralit-chart/templates/_helpers.tpl @@ -1,11 +1,11 @@ {{/* Expand the name of the chart. */}} -{{- define "argilla.name" -}} +{{- define "extralit.name" -}} {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} {{- end }} -{{- define "argilla.worker.name" -}} +{{- define "extralit.worker.name" -}} {{- printf "%s-%s" .Release.Name "worker" | trunc 63 | trimSuffix "-" }} {{- end }} @@ -15,7 +15,7 @@ Create a default fully qualified app name. We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). If release name contains chart name it will be used as a full name. */}} -{{- define "argilla.fullname" -}} +{{- define "extralit.fullname" -}} {{- if .Values.fullnameOverride }} {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} {{- else }} @@ -31,9 +31,9 @@ If release name contains chart name it will be used as a full name. {{/* Common labels */}} -{{- define "argilla.labels" -}} -helm.sh/chart: {{ include "argilla.chart" . }} -{{ include "argilla.selectorLabels" . }} +{{- define "extralit.labels" -}} +helm.sh/chart: {{ include "extralit.chart" . }} +{{ include "extralit.selectorLabels" . }} {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} {{- end }} @@ -43,15 +43,15 @@ app.kubernetes.io/managed-by: {{ .Release.Service }} {{/* Selector labels */}} -{{- define "argilla.selectorLabels" -}} -app.kubernetes.io/name: {{ include "argilla.name" . }} +{{- define "extralit.selectorLabels" -}} +app.kubernetes.io/name: {{ include "extralit.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} {{- end }} {{/* Create chart name and version as used by the chart label. */}} -{{- define "argilla.chart" -}} +{{- define "extralit.chart" -}} {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} {{- end }} @@ -59,7 +59,7 @@ Create chart name and version as used by the chart label. Argilla Worker labels */}} {{- define "worker.labels" -}} -helm.sh/chart: {{ include "argilla.chart" . }} +helm.sh/chart: {{ include "extralit.chart" . }} app.kubernetes.io/component: worker {{- if .Chart.AppVersion }} app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} @@ -72,6 +72,6 @@ Argilla Worker Selector labels */}} {{- define "worker.selectorLabels" -}} app.kubernetes.io/component: worker -app.kubernetes.io/name: {{ include "argilla.worker.name" . }} +app.kubernetes.io/name: {{ include "extralit.worker.name" . }} app.kubernetes.io/instance: {{ .Release.Name }}-worker {{- end }} diff --git a/examples/deployments/k8s/argilla-chart/templates/configmap.yaml b/examples/deployments/k8s/extralit-chart/templates/configmap.yaml similarity index 68% rename from examples/deployments/k8s/argilla-chart/templates/configmap.yaml rename to examples/deployments/k8s/extralit-chart/templates/configmap.yaml index 896550bcc..a80efbaa9 100644 --- a/examples/deployments/k8s/argilla-chart/templates/configmap.yaml +++ b/examples/deployments/k8s/extralit-chart/templates/configmap.yaml @@ -8,5 +8,5 @@ data: hosts: | 127.0.0.1 localhost ::1 localhost - {{ .Values.argilla.configmap.minikubeIP }} {{ .Values.argilla.ingress.host }} + {{ .Values.extralit.configmap.minikubeIP }} {{ .Values.extralit.ingress.host }} {{- end }} diff --git a/examples/deployments/k8s/argilla-chart/templates/deployment.yaml b/examples/deployments/k8s/extralit-chart/templates/deployment.yaml similarity index 57% rename from examples/deployments/k8s/argilla-chart/templates/deployment.yaml rename to examples/deployments/k8s/extralit-chart/templates/deployment.yaml index 8ff76d145..d6d479b19 100644 --- a/examples/deployments/k8s/argilla-chart/templates/deployment.yaml +++ b/examples/deployments/k8s/extralit-chart/templates/deployment.yaml @@ -1,18 +1,18 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "argilla.fullname" . }} + name: {{ include "extralit.fullname" . }} labels: - {{- include "argilla.labels" . | nindent 4 }} + {{- include "extralit.labels" . | nindent 4 }} spec: - replicas: {{ .Values.argilla.replicaCount }} + replicas: {{ .Values.extralit.replicaCount }} selector: matchLabels: - {{- include "argilla.selectorLabels" . | nindent 6 }} + {{- include "extralit.selectorLabels" . | nindent 6 }} template: metadata: labels: - {{- include "argilla.selectorLabels" . | nindent 8 }} + {{- include "extralit.selectorLabels" . | nindent 8 }} spec: volumes: {{- if not .Values.elasticsearch.useOperator }} @@ -20,35 +20,35 @@ spec: configMap: name: custom-hosts {{- end }} - {{- if .Values.argilla.persistence.enabled }} - - name: argilla-data + {{- if .Values.extralit.persistence.enabled }} + - name: extralit-data persistentVolumeClaim: claimName: {{ .Release.Name }}-pvc {{- end }} containers: - name: {{ .Chart.Name }} - image: "{{ .Values.argilla.image.repository }}:{{ .Values.argilla.image.tag }}" + image: "{{ .Values.extralit.image.repository }}:{{ .Values.extralit.image.tag }}" env: - name: EXTRALIT_ELASTICSEARCH # TODO: modify this to use externalElasticsearch.host if elasticsearch.useOperator is false - value: {{if .Values.elasticsearch.useOperator}}"http://{{ include "argilla.fullname" . }}-es-http:9200"{{else}}"{{ .Values.externalElasticsearch.host }}:{{ .Values.externalElasticsearch.port }}"{{end}} + value: {{if .Values.elasticsearch.useOperator}}"http://{{ include "extralit.fullname" . }}-es-http:9200"{{else}}"{{ .Values.externalElasticsearch.host }}:{{ .Values.externalElasticsearch.port }}"{{end}} - name: EXTRALIT_ELASTICSEARCH_SSL_VERIFY value: {{ .Values.elasticsearch.sslVerify | quote }} - name: EXTRALIT_AUTH_SECRET_KEY - value: {{ .Values.argilla.authSecretKey | quote }} + value: {{ .Values.extralit.authSecretKey | quote }} - name: EXTRALIT_REDIS_URL value: {{if .Values.externalRedis.enabled}}"{{ .Values.externalRedis.url }}"{{else}}"redis://{{ .Release.Name }}-redis-master:6379/0"{{end}} - name: EXTRALIT_REDIS_USE_CLUSTER value: {{ if and .Values.externalRedis.enabled .Values.externalRedis.is_redis_cluster }} "True" {{ else }} "False" {{ end }} - name: USERNAME - value: {{ .Values.argilla.auth.username | quote }} + value: {{ .Values.extralit.auth.username | quote }} - name: PASSWORD - value: {{ .Values.argilla.auth.password | quote }} + value: {{ .Values.extralit.auth.password | quote }} - name: API_KEY - value: {{ .Values.argilla.auth.apiKey | quote }} - {{- if .Values.argilla.persistence.enabled }} + value: {{ .Values.extralit.auth.apiKey | quote }} + {{- if .Values.extralit.persistence.enabled }} - name: EXTRALIT_HOME_PATH - value: {{ .Values.argilla.persistence.mountPath | quote }} + value: {{ .Values.extralit.persistence.mountPath | quote }} {{- end }} ports: - containerPort: 6900 @@ -58,9 +58,9 @@ spec: mountPath: /etc/hosts subPath: hosts {{- end }} - {{- if .Values.argilla.persistence.enabled }} - - name: argilla-data - mountPath: {{ .Values.argilla.persistence.mountPath}} + {{- if .Values.extralit.persistence.enabled }} + - name: extralit-data + mountPath: {{ .Values.extralit.persistence.mountPath}} {{- end }} resources: - {{- toYaml .Values.argilla.resources | nindent 12 }} + {{- toYaml .Values.extralit.resources | nindent 12 }} diff --git a/examples/deployments/k8s/argilla-chart/templates/elasticsearch-operator.yaml b/examples/deployments/k8s/extralit-chart/templates/elasticsearch-operator.yaml similarity index 92% rename from examples/deployments/k8s/argilla-chart/templates/elasticsearch-operator.yaml rename to examples/deployments/k8s/extralit-chart/templates/elasticsearch-operator.yaml index c31ec0b95..8eaba8600 100644 --- a/examples/deployments/k8s/argilla-chart/templates/elasticsearch-operator.yaml +++ b/examples/deployments/k8s/extralit-chart/templates/elasticsearch-operator.yaml @@ -2,7 +2,7 @@ apiVersion: elasticsearch.k8s.elastic.co/v1 kind: Elasticsearch metadata: - name: {{ include "argilla.fullname" . }} + name: {{ include "extralit.fullname" . }} spec: version: {{ .Values.elasticsearch.version }} @@ -50,6 +50,6 @@ spec: {{- end }} {{- if .Values.elasticsearch.disableAuthentication }} secureSettings: - - secretName: {{ include "argilla.fullname" . }}-es-http-certs-internal + - secretName: {{ include "extralit.fullname" . }}-es-http-certs-internal {{- end }} {{- end }} \ No newline at end of file diff --git a/examples/deployments/k8s/extralit-chart/templates/hpa.yaml b/examples/deployments/k8s/extralit-chart/templates/hpa.yaml new file mode 100644 index 000000000..eac2d6ad2 --- /dev/null +++ b/examples/deployments/k8s/extralit-chart/templates/hpa.yaml @@ -0,0 +1,22 @@ +{{- if .Values.extralit.hpa.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "extralit.fullname" . }} + labels: + {{- include "extralit.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "extralit.fullname" . }} + minReplicas: {{ .Values.extralit.hpa.minReplicas }} + maxReplicas: {{ .Values.extralit.hpa.maxReplicas }} + metrics: + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.extralit.hpa.targetCPUUtilizationPercentage }} +{{- end }} diff --git a/examples/deployments/k8s/extralit-chart/templates/ingress.yaml b/examples/deployments/k8s/extralit-chart/templates/ingress.yaml new file mode 100644 index 000000000..f35de63ff --- /dev/null +++ b/examples/deployments/k8s/extralit-chart/templates/ingress.yaml @@ -0,0 +1,25 @@ +{{- if .Values.extralit.ingress.enabled }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ include "extralit.fullname" . }} + labels: + {{- include "extralit.labels" . | nindent 4 }} + {{- with .Values.extralit.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + ingressClassName: {{ .Values.extralit.ingress.className }} + rules: + - host: {{ .Values.extralit.ingress.host | quote }} + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: {{ include "extralit.fullname" . }} + port: + number: 6900 +{{- end }} \ No newline at end of file diff --git a/examples/deployments/k8s/extralit-chart/templates/pvc.yaml b/examples/deployments/k8s/extralit-chart/templates/pvc.yaml new file mode 100644 index 000000000..c786439d1 --- /dev/null +++ b/examples/deployments/k8s/extralit-chart/templates/pvc.yaml @@ -0,0 +1,17 @@ +{{- if .Values.extralit.persistence.enabled -}} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "extralit.fullname" . }}-pvc + labels: + {{- include "extralit.labels" . | nindent 4 }} +spec: + accessModes: + - {{ .Values.extralit.persistence.accessMode | quote }} + resources: + requests: + storage: {{ .Values.extralit.persistence.size | quote }} + {{- if .Values.extralit.persistence.storageClass }} + storageClassName: {{ .Values.extralit.persistence.storageClass | quote }} + {{- end }} +{{- end }} \ No newline at end of file diff --git a/examples/deployments/k8s/extralit-chart/templates/service.yaml b/examples/deployments/k8s/extralit-chart/templates/service.yaml new file mode 100644 index 000000000..09279e1ac --- /dev/null +++ b/examples/deployments/k8s/extralit-chart/templates/service.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: Service +metadata: + name: { { include "extralit.fullname" . } } + labels: { { - include "extralit.labels" . | nindent 4 } } +spec: + selector: { { - include "extralit.selectorLabels" . | nindent 4 } } + ports: + - name: http + port: 6900 diff --git a/examples/deployments/k8s/argilla-chart/templates/serviceaccount.yaml b/examples/deployments/k8s/extralit-chart/templates/serviceaccount.yaml similarity index 70% rename from examples/deployments/k8s/argilla-chart/templates/serviceaccount.yaml rename to examples/deployments/k8s/extralit-chart/templates/serviceaccount.yaml index dd7eb4986..96094ceea 100644 --- a/examples/deployments/k8s/argilla-chart/templates/serviceaccount.yaml +++ b/examples/deployments/k8s/extralit-chart/templates/serviceaccount.yaml @@ -2,9 +2,9 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: {{ include "argilla-chart.serviceAccountName" . }} + name: {{ include "extralit-chart.serviceAccountName" . }} labels: - {{- include "argilla-chart.labels" . | nindent 4 }} + {{- include "extralit-chart.labels" . | nindent 4 }} {{- with .Values.serviceAccount.annotations }} annotations: {{- toYaml . | nindent 4 }} diff --git a/examples/deployments/k8s/argilla-chart/templates/worker-deployment.yaml b/examples/deployments/k8s/extralit-chart/templates/worker-deployment.yaml similarity index 66% rename from examples/deployments/k8s/argilla-chart/templates/worker-deployment.yaml rename to examples/deployments/k8s/extralit-chart/templates/worker-deployment.yaml index f5ae8e7b9..6ce9a12dd 100644 --- a/examples/deployments/k8s/argilla-chart/templates/worker-deployment.yaml +++ b/examples/deployments/k8s/extralit-chart/templates/worker-deployment.yaml @@ -1,7 +1,7 @@ apiVersion: apps/v1 kind: Deployment metadata: - name: {{ include "argilla.fullname" . }}-worker + name: {{ include "extralit.fullname" . }}-worker labels: {{- include "worker.labels" . | nindent 4 }} app.kubernetes.io/component: worker @@ -19,29 +19,29 @@ spec: spec: containers: - name: {{ .Chart.Name }}-worker - image: "{{ .Values.argilla.image.repository }}:{{ .Values.argilla.image.tag }}" + image: "{{ .Values.extralit.image.repository }}:{{ .Values.extralit.image.tag }}" env: - name: EXTRALIT_ELASTICSEARCH - value: {{if .Values.elasticsearch.useOperator}}"http://{{ include "argilla.fullname" . }}-es-http:9200"{{else}}"{{ .Values.externalElasticsearch.host }}:{{ .Values.externalElasticsearch.port }}"{{end}} + value: {{if .Values.elasticsearch.useOperator}}"http://{{ include "extralit.fullname" . }}-es-http:9200"{{else}}"{{ .Values.externalElasticsearch.host }}:{{ .Values.externalElasticsearch.port }}"{{end}} - name: EXTRALIT_REDIS_URL value: redis://{{ .Release.Name }}-redis-master:6379/0 - name: BACKGROUND_NUM_WORKERS value: "{{ .Values.worker.numWorkers | default 2 }}" - {{- if .Values.argilla.persistence.enabled }} + {{- if .Values.extralit.persistence.enabled }} - name: EXTRALIT_HOME_PATH - value: {{ .Values.argilla.persistence.mountPath | quote }} + value: {{ .Values.extralit.persistence.mountPath | quote }} {{- end }} command: ["sh", "-c", "python -m extralit_server worker --num-workers ${BACKGROUND_NUM_WORKERS}"] - {{- if .Values.argilla.persistence.enabled }} + {{- if .Values.extralit.persistence.enabled }} volumeMounts: - - name: argilla-data - mountPath: {{ .Values.argilla.persistence.mountPath}} + - name: extralit-data + mountPath: {{ .Values.extralit.persistence.mountPath}} {{- end }} resources: {{- toYaml .Values.worker.resources | nindent 12 }} - {{- if .Values.argilla.persistence.enabled }} + {{- if .Values.extralit.persistence.enabled }} volumes: - - name: argilla-data + - name: extralit-data persistentVolumeClaim: claimName: {{ .Release.Name }}-pvc {{- end }} \ No newline at end of file diff --git a/examples/deployments/k8s/argilla-chart/tests/simple_test.yaml b/examples/deployments/k8s/extralit-chart/tests/simple_test.yaml similarity index 69% rename from examples/deployments/k8s/argilla-chart/tests/simple_test.yaml rename to examples/deployments/k8s/extralit-chart/tests/simple_test.yaml index 7d607aa44..8b896e2c0 100644 --- a/examples/deployments/k8s/argilla-chart/tests/simple_test.yaml +++ b/examples/deployments/k8s/extralit-chart/tests/simple_test.yaml @@ -4,7 +4,7 @@ templates: tests: - it: should render HPA set: - argilla.hpa.enabled: true + extralit.hpa.enabled: true asserts: - hasDocuments: - count: 1 \ No newline at end of file + count: 1 diff --git a/examples/deployments/k8s/argilla-chart/tests/suite_test.yaml b/examples/deployments/k8s/extralit-chart/tests/suite_test.yaml similarity index 81% rename from examples/deployments/k8s/argilla-chart/tests/suite_test.yaml rename to examples/deployments/k8s/extralit-chart/tests/suite_test.yaml index 42cc4056d..75c76e282 100644 --- a/examples/deployments/k8s/argilla-chart/tests/suite_test.yaml +++ b/examples/deployments/k8s/extralit-chart/tests/suite_test.yaml @@ -1,4 +1,4 @@ -suite: test argilla chart +suite: test extralit chart templates: - templates/configmap.yaml - templates/deployment.yaml @@ -13,7 +13,7 @@ tests: set: elasticsearch.useOperator: false configmap.minikubeIP: "192.168.49.2" - ingress.host: "argilla.local" + ingress.host: "extralit.local" templates: - templates/configmap.yaml asserts: @@ -24,7 +24,7 @@ tests: value: custom-hosts - matchRegex: path: data.hosts - pattern: 192.168.49.2 argilla.local + pattern: 192.168.49.2 extralit.local - it: should not render configmap when elasticsearch.useOperator is true set: @@ -37,12 +37,12 @@ tests: - it: should render deployment correctly set: - argilla.replicaCount: 2 - argilla.image.repository: argilla/argilla - argilla.image.tag: latest - argilla.authSecretKey: testsecret - argilla.auth.username: argilla - argilla.auth.password: "12345678" + extralit.replicaCount: 2 + extralit.image.repository: extralit/extralit + extralit.image.tag: latest + extralit.authSecretKey: testsecret + extralit.auth.username: extralit + extralit.auth.password: "12345678" templates: - templates/deployment.yaml asserts: @@ -53,7 +53,7 @@ tests: value: 2 - equal: path: spec.template.spec.containers[0].image - value: argilla/argilla:latest + value: extralit/extralit:latest - contains: path: spec.template.spec.containers[0].env content: @@ -83,9 +83,9 @@ tests: - it: should render PVC when persistence is enabled set: - argilla.persistence.enabled: true - argilla.persistence.accessMode: ReadWriteOnce - argilla.persistence.size: 5Gi + extralit.persistence.enabled: true + extralit.persistence.accessMode: ReadWriteOnce + extralit.persistence.size: 5Gi templates: - templates/pvc.yaml asserts: @@ -114,10 +114,10 @@ tests: - it: should render HPA when enabled set: - argilla.hpa.enabled: true - argilla.hpa.minReplicas: 2 - argilla.hpa.maxReplicas: 5 - argilla.hpa.targetCPUUtilizationPercentage: 80 + extralit.hpa.enabled: true + extralit.hpa.minReplicas: 2 + extralit.hpa.maxReplicas: 5 + extralit.hpa.targetCPUUtilizationPercentage: 80 templates: - templates/hpa.yaml asserts: @@ -141,7 +141,7 @@ tests: - it: should not render HPA when disabled set: - argilla.hpa.enabled: false + extralit.hpa.enabled: false templates: - templates/hpa.yaml asserts: @@ -150,10 +150,10 @@ tests: - it: should render Ingress when enabled set: - argilla.ingress.enabled: true - argilla.ingress.className: nginx - argilla.ingress.host: argilla.example.com - argilla.ingress.annotations: + extralit.ingress.enabled: true + extralit.ingress.className: nginx + extralit.ingress.host: extralit.example.com + extralit.ingress.annotations: kubernetes.io/ingress.class: nginx templates: - templates/ingress.yaml @@ -165,7 +165,7 @@ tests: value: nginx - equal: path: spec.rules[0].host - value: argilla.example.com + value: extralit.example.com - equal: path: spec.rules[0].http.paths[0].path value: / @@ -181,7 +181,7 @@ tests: - it: should not render Ingress when disabled set: - argilla.ingress.enabled: false + extralit.ingress.enabled: false templates: - templates/ingress.yaml asserts: diff --git a/examples/deployments/k8s/argilla-chart/tests/test-connection.yaml b/examples/deployments/k8s/extralit-chart/tests/test-connection.yaml similarity index 52% rename from examples/deployments/k8s/argilla-chart/tests/test-connection.yaml rename to examples/deployments/k8s/extralit-chart/tests/test-connection.yaml index 7d53f0439..c27c66c44 100644 --- a/examples/deployments/k8s/argilla-chart/tests/test-connection.yaml +++ b/examples/deployments/k8s/extralit-chart/tests/test-connection.yaml @@ -1,9 +1,9 @@ apiVersion: v1 kind: Pod metadata: - name: "{{ include "argilla.fullname" . }}-test-connection" + name: "{{ include "extralit.fullname" . }}-test-connection" labels: - {{- include "argilla.labels" . | nindent 4 }} + {{- include "extralit.labels" . | nindent 4 }} annotations: "helm.sh/hook": test spec: @@ -11,5 +11,5 @@ spec: - name: wget image: busybox command: ['wget'] - args: ['http://{{ .Values.argilla.ingress.host }}'] + args: ['http://{{ .Values.extralit.ingress.host }}'] restartPolicy: Never diff --git a/examples/deployments/k8s/argilla-chart/values.yaml b/examples/deployments/k8s/extralit-chart/values.yaml similarity index 95% rename from examples/deployments/k8s/argilla-chart/values.yaml rename to examples/deployments/k8s/extralit-chart/values.yaml index 036c87372..bb60c1d5e 100644 --- a/examples/deployments/k8s/argilla-chart/values.yaml +++ b/examples/deployments/k8s/extralit-chart/values.yaml @@ -1,4 +1,4 @@ -argilla: +extralit: replicaCount: 1 image: repository: extralit/extralit-server @@ -10,7 +10,7 @@ argilla: cpu: "1" authSecretKey: "CHANGE_ME" auth: - username: "argilla" + username: "extralit" password: "12345678" apiKey: "extralit.apikey" persistence: @@ -21,7 +21,7 @@ argilla: ingress: enabled: true className: "nginx" - host: "argilla.local" + host: "extralit.local" annotations: kubernetes.io/ingress.class: nginx nginx.ingress.kubernetes.io/ssl-redirect: "false" @@ -58,7 +58,7 @@ elasticsearch: - ReadWriteOnce externalElasticsearch: - host: "argilla.local" + host: "extralit.local" port: 9200 path: "/es" diff --git a/examples/deployments/k8s/extralit-server-certificate.yaml b/examples/deployments/k8s/extralit-server-certificate.yaml index fcc7c6321..e16a8dc67 100644 --- a/examples/deployments/k8s/extralit-server-certificate.yaml +++ b/examples/deployments/k8s/extralit-server-certificate.yaml @@ -11,8 +11,8 @@ metadata: name: extralit-server-certificate spec: dnsNames: - - argilla-hostname + - extralit-hostname secretName: extralit-server-tls issuerRef: name: selfsigned-issuer - kind: ClusterIssuer \ No newline at end of file + kind: ClusterIssuer diff --git a/examples/deployments/k8s/extralit-server-ingress.yaml b/examples/deployments/k8s/extralit-server-ingress.yaml index 724513c17..fb6ee17a7 100644 --- a/examples/deployments/k8s/extralit-server-ingress.yaml +++ b/examples/deployments/k8s/extralit-server-ingress.yaml @@ -6,17 +6,17 @@ metadata: nginx.ingress.kubernetes.io/rewrite-target: / spec: tls: - - hosts: - - argilla-hostname - secretName: extralit-server-tls + - hosts: + - extralit-hostname + secretName: extralit-server-tls rules: - - host: argilla-hostname - http: - paths: - - path: "/" - pathType: Prefix - backend: - service: - name: extralit-server - port: - number: 6900 + - host: extralit-hostname + http: + paths: + - path: "/" + pathType: Prefix + backend: + service: + name: extralit-server + port: + number: 6900 diff --git a/examples/deployments/k8s/postgres-deployment.yml b/examples/deployments/k8s/postgres-deployment.yml index 7cdcf035d..043cf4bb0 100644 --- a/examples/deployments/k8s/postgres-deployment.yml +++ b/examples/deployments/k8s/postgres-deployment.yml @@ -14,24 +14,24 @@ spec: app: postgres spec: containers: - - name: postgres - image: postgres:14-alpine - ports: - - containerPort: 5432 - env: - - name: POSTGRES_DB - value: argilla - - name: POSTGRES_USER - value: argilla - - name: POSTGRES_PASSWORD - value: password - volumeMounts: - - mountPath: /var/lib/postgresql/data - name: postgresdb + - name: postgres + image: postgres:14-alpine + ports: + - containerPort: 5432 + env: + - name: POSTGRES_DB + value: extralit + - name: POSTGRES_USER + value: extralit + - name: POSTGRES_PASSWORD + value: password + volumeMounts: + - mountPath: /var/lib/postgresql/data + name: postgresdb volumes: - - name: postgresdb - persistentVolumeClaim: - claimName: postgres-pvc + - name: postgresdb + persistentVolumeClaim: + claimName: postgres-pvc --- apiVersion: v1 kind: PersistentVolumeClaim @@ -52,9 +52,9 @@ metadata: name: postgres-pv spec: capacity: - storage: 1Gi # specify the size of the volume - volumeMode: Filesystem # can also be Block + storage: 1Gi # specify the size of the volume + volumeMode: Filesystem # can also be Block accessModes: - - ReadWriteOnce # The volume can be mounted as read-write by a single node - storageClassName: local-path # name of the StorageClass - persistentVolumeReclaimPolicy: Retain # Retain the volume data when the PVC is deleted \ No newline at end of file + - ReadWriteOnce # The volume can be mounted as read-write by a single node + storageClassName: local-path # name of the StorageClass + persistentVolumeReclaimPolicy: Retain # Retain the volume data when the PVC is deleted diff --git a/extralit-server/docker/server/Dockerfile b/extralit-server/docker/server/Dockerfile index 1d7c7e052..114c6a836 100644 --- a/extralit-server/docker/server/Dockerfile +++ b/extralit-server/docker/server/Dockerfile @@ -2,7 +2,7 @@ FROM python:3.13-slim AS builder # Install uv COPY --from=ghcr.io/astral-sh/uv:0.7.12 /uv /uvx /bin/ -# Copying argilla distribution files +# Copying extralit distribution files COPY dist/*.whl /packages/ RUN python -m venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" @@ -25,17 +25,17 @@ ENV USERNAME="" ENV PASSWORD="" ENV API_KEY="" ## Argilla home path -ENV EXTRALIT_HOME_PATH=/var/lib/argilla +ENV EXTRALIT_HOME_PATH=/var/lib/extralit ## Uvicorn defaults ENV UVICORN_PORT=6900 ### Uvicorn app. Extended apps can override this variable ENV UVICORN_APP=extralit_server:app -RUN useradd -ms /bin/bash argilla +RUN useradd -ms /bin/bash extralit -# Create argilla volume +# Create extralit volume RUN mkdir -p "$EXTRALIT_HOME_PATH" && \ - chown argilla:argilla "$EXTRALIT_HOME_PATH" && \ + chown extralit:extralit "$EXTRALIT_HOME_PATH" && \ apt-get update && \ apt-get upgrade -y && \ apt-get install -y --no-install-recommends libpq-dev && \ @@ -43,18 +43,18 @@ RUN mkdir -p "$EXTRALIT_HOME_PATH" && \ rm -rf /var/lib/apt/lists/* /packages VOLUME $EXTRALIT_HOME_PATH -COPY scripts/start_extralit_server.sh /home/argilla +COPY scripts/start_extralit_server.sh /home/extralit # Destination folder must be the same as the builder one. Otherwise installed script won't work (since the installation fixes the path inside the script) -COPY --chown=argilla:argilla --from=builder /opt/venv /opt/venv +COPY --chown=extralit:extralit --from=builder /opt/venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" ENV MAMBA_ROOT_PREFIX=/opt/venv ENV CONDA_PREFIX=/opt/venv -WORKDIR /home/argilla +WORKDIR /home/extralit RUN chmod +x start_extralit_server.sh -USER argilla +USER extralit # Exposing ports EXPOSE 6900 diff --git a/extralit-server/docker/server/dev.extralit_server.dockerfile b/extralit-server/docker/server/dev.extralit_server.dockerfile deleted file mode 100644 index 61c438f71..000000000 --- a/extralit-server/docker/server/dev.extralit_server.dockerfile +++ /dev/null @@ -1,79 +0,0 @@ -FROM python:3.10-slim AS builder - -# Copying argilla distribution files -COPY dist/*.whl /packages/ -RUN python -m venv /opt/venv -ENV PATH="/opt/venv/bin:$PATH" -RUN apt-get update && \ - apt-get upgrade -y && \ - apt-get install -y python-dev-is-python3 libpq-dev gcc && \ - pip install --upgrade uv && \ - uv pip install uvicorn[standard] && \ - for wheel in /packages/*.whl; do uv pip install "$wheel"[server,postgresql]; done && \ - apt-get remove -y python-dev-is-python3 libpq-dev gcc && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* && \ - rm -rf /packages - -FROM python:3.10-slim - -RUN apt-get update && \ - apt-get upgrade -y && \ - apt-get install -y libpq-dev nano && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* - -COPY --from=builder /opt/venv /opt/venv - -# Set environment variables for the container -# Environment Variables -ARG ENV=dev -ARG USERS_DB=/config/users.yaml -ENV ENV=$ENV - -ENV USERNAME="argilla" -ENV PASSWORD="12345678" -ENV API_KEY="extralit.apikey" - -## Argilla home path -ENV EXTRALIT_HOME_PATH=/var/lib/argilla -ENV EXTRALIT_LOCAL_AUTH_USERS_DB_FILE=$USERS_DB -## Uvicorn defaults -ENV UVICORN_PORT=6900 -### Uvicorn app. Extended apps can override this variable -ENV UVICORN_APP=extralit_server:app - - -# Create a user and a volume for argilla -RUN useradd -ms /bin/bash argilla -RUN mkdir -p "$EXTRALIT_HOME_PATH" && chown argilla:argilla "$EXTRALIT_HOME_PATH" - -# Copy the scripts and install uvicorn -COPY docker/server/scripts/ /home/argilla/ - -# Copy the entire repository into /home/argilla in the container -COPY . /home/argilla/ - -# Change the ownership of the /home/argilla directory to the new user -WORKDIR /home/argilla/ - -# Set up a virtual environment in /opt/venv -SHELL ["/bin/bash", "-c"] -RUN source /opt/venv/bin/activate -ENV PATH="/opt/venv/bin:$PATH" -ENV VIRTUAL_ENV="/opt/venv" -ENV UVICORN_APP=extralit_server:app - -RUN uv pip install -q uvicorn[standard] -e "." - -RUN chmod +x /home/argilla/start_extralit_server.sh && \ - chown -R argilla:argilla /home/argilla - -# Switch to the argilla user -USER argilla - -# Expose the necessary port -EXPOSE 6900 - -# Set the command for the container -CMD /bin/bash -c "/bin/bash start_extralit_server.sh" diff --git a/extralit-server/src/extralit_server/_app.py b/extralit-server/src/extralit_server/_app.py index 5e0844cb2..768e68c29 100644 --- a/extralit-server/src/extralit_server/_app.py +++ b/extralit-server/src/extralit_server/_app.py @@ -151,8 +151,8 @@ def create_server_app() -> FastAPI: """Configure the argilla server""" app = FastAPI( - title="Argilla", - description="Argilla API", + title="Extralit", + description="Extralit API", docs_url=None, redoc_url=None, redirect_slashes=False, diff --git a/extralit-server/src/extralit_server/constants.py b/extralit-server/src/extralit_server/constants.py index 1963fd865..90c3ffaab 100644 --- a/extralit-server/src/extralit_server/constants.py +++ b/extralit-server/src/extralit_server/constants.py @@ -21,7 +21,7 @@ SEARCH_ENGINE_ELASTICSEARCH = "elasticsearch" SEARCH_ENGINE_OPENSEARCH = "opensearch" -DEFAULT_USERNAME = "argilla" +DEFAULT_USERNAME = "extralit" DEFAULT_PASSWORD = "1234" DEFAULT_API_KEY = "extralit.apikey" diff --git a/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py b/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py index c28c28fd8..35e23b894 100644 --- a/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py +++ b/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py @@ -22,6 +22,7 @@ from huggingface_hub import HfApi from huggingface_hub.errors import HfHubHTTPError from datasets import load_dataset, get_dataset_config_names, get_dataset_split_names +from requests.models import HTTPError from extralit_server.contexts import hub from extralit_server.contexts.hub import HubDatasetExporter @@ -93,7 +94,7 @@ def wrapper(*args, **kwargs): @pytest.mark.skipif(HF_TOKEN is None, reason="HF_TOKEN_EXTRALIT_INTERNAL_TESTING is not defined") class TestHubDatasetExporter: - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to(self, sync_test_session, hf_api: HfApi, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -123,7 +124,7 @@ def test_export_to(self, sync_test_session, hf_api: HfApi, hf_dataset_name: str) } @pytest.mark.skip(reason="the Hub is ignoring for some reason the subset and using default instead") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_custom_subset(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -142,7 +143,7 @@ def test_export_to_with_custom_subset(self, sync_test_session, hf_dataset_name: assert get_dataset_config_names(hf_dataset_name) == ["custom"] - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_custom_split(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -168,7 +169,7 @@ def test_export_to_with_custom_split(self, sync_test_session, hf_dataset_name: s else: raise error - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_private_dataset(self, sync_test_session, hf_api: HfApi, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -187,7 +188,7 @@ def test_export_to_with_private_dataset(self, sync_test_session, hf_api: HfApi, assert hf_api.dataset_info(hf_dataset_name).private == True - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_chat_field(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -214,7 +215,7 @@ def test_export_to_with_chat_field(self, sync_test_session, hf_dataset_name: str assert exported_dataset[0]["chat"] == chat_record_value @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_custom_field(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -242,7 +243,7 @@ def test_export_to_with_custom_field(self, sync_test_session, hf_dataset_name: s assert exported_dataset[0]["custom"] == "custom-value" @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_image_field_as_url(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -262,7 +263,7 @@ def test_export_to_with_image_field_as_url(self, sync_test_session, hf_dataset_n assert exported_dataset[0]["image"] == IMAGE_URL @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_image_field_as_data_url(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -281,7 +282,7 @@ def test_export_to_with_image_field_as_data_url(self, sync_test_session, hf_data assert isinstance(exported_dataset[0]["image"], Image.Image) - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") def test_export_to_with_text_question(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -343,7 +344,7 @@ def test_export_to_with_text_question(self, sync_test_session, hf_dataset_name: } @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_text_question_and_suggestion(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) @@ -414,7 +415,7 @@ def test_export_to_with_text_question_and_suggestion(self, sync_test_session, hf } @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_rating_question(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) @@ -479,7 +480,7 @@ def test_export_to_with_rating_question(self, sync_test_session, hf_dataset_name } @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_rating_question_and_suggestion(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) @@ -554,7 +555,7 @@ def test_export_to_with_rating_question_and_suggestion(self, sync_test_session, } @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_label_question(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) @@ -618,7 +619,7 @@ def test_export_to_with_label_question(self, sync_test_session, hf_dataset_name: } @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_label_question_and_suggestion(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) @@ -691,7 +692,7 @@ def test_export_to_with_label_question_and_suggestion(self, sync_test_session, h "label-question.suggestion.score": 0.3, } - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_multi_label_question(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) @@ -754,7 +755,7 @@ def test_export_to_with_multi_label_question(self, sync_test_session, hf_dataset "multi-label-question.responses.users": [str(annotators[0].id), str(annotators[1].id)], } - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_multi_label_question_and_suggestion(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) @@ -827,7 +828,7 @@ def test_export_to_with_multi_label_question_and_suggestion(self, sync_test_sess "multi-label-question.suggestion.score": [0.8, 0.7], } - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_ranking_question(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) @@ -911,7 +912,7 @@ def test_export_to_with_ranking_question(self, sync_test_session, hf_dataset_nam } @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_ranking_question_and_suggestion(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) @@ -1014,7 +1015,7 @@ def test_export_to_with_ranking_question_and_suggestion(self, sync_test_session, "ranking-question.suggestion.score": [0.5, 0.4, 0.3, 0.2], } - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_span_question(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) @@ -1093,7 +1094,7 @@ def test_export_to_with_span_question(self, sync_test_session, hf_dataset_name: } @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_span_question_and_suggestion(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotators = AnnotatorSyncFactory.create_batch(2, workspaces=[dataset.workspace]) @@ -1187,7 +1188,7 @@ def test_export_to_with_span_question_and_suggestion(self, sync_test_session, hf "span-question.suggestion.score": [0.7, 0.6], } - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_draft_response(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotator = AnnotatorSyncFactory.create(workspaces=[dataset.workspace]) @@ -1235,7 +1236,7 @@ def test_export_to_with_draft_response(self, sync_test_session, hf_dataset_name: } @pytest.mark.skip(reason="Too many requests error when accessing Hugging Face API") - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_discarded_response(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) annotator = AnnotatorSyncFactory.create(workspaces=[dataset.workspace]) @@ -1282,7 +1283,7 @@ def test_export_to_with_discarded_response(self, sync_test_session, hf_dataset_n "text-question.responses.users": [str(annotator.id)], } - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_metadata(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -1342,7 +1343,7 @@ def test_export_to_with_metadata(self, sync_test_session, hf_dataset_name: str): assert exported_dataset[0]["metadata.metadata-integer"] == 42 assert exported_dataset[0]["metadata.metadata-float"] == 3.14 - @skip_on(HfHubHTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") + @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_vectors(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) diff --git a/extralit/src/extralit/_api/_workspaces.py b/extralit/src/extralit/_api/_workspaces.py index 3c0df46a5..3b671d73e 100644 --- a/extralit/src/extralit/_api/_workspaces.py +++ b/extralit/src/extralit/_api/_workspaces.py @@ -22,7 +22,7 @@ from extralit._constants import _DEFAULT_SCHEMA_S3_PATH from extralit._api._base import ResourceAPI -from extralit._exceptions._api import api_error_handler, ArgillaAPIError +from extralit._exceptions._api import api_error_handler, ExtralitAPIError from extralit._models._workspace import WorkspaceModel from extralit._models._files import ListObjectsResponse, ObjectMetadata, FileObjectResponse @@ -137,7 +137,7 @@ def list_files( A list of files. Raises: - ArgillaAPIError: If the API request fails. + ExtralitAPIError: If the API request fails. ValueError: If the workspace name is invalid. """ if not workspace_name: @@ -177,7 +177,7 @@ def list_files( logger.info(f"No files found at path '{path}' in workspace '{workspace_name}'") return ListObjectsResponse(objects=[]) logger.error(f"Failed to list files in workspace '{workspace_name}': {str(e)}") - raise ArgillaAPIError(f"Failed to list files: {str(e)}") from e + raise ExtralitAPIError(f"Failed to list files: {str(e)}") from e except Exception as e: logger.error(f"Unexpected error listing files in workspace '{workspace_name}': {str(e)}") raise @@ -195,7 +195,7 @@ def get_file(self, workspace_name: str, path: str, version_id: Optional[str] = N The file content and metadata. Raises: - ArgillaAPIError: If the API request fails. + ExtralitAPIError: If the API request fails. ValueError: If the workspace name or path is invalid. FileNotFoundError: If the file does not exist. """ @@ -249,7 +249,7 @@ def get_file(self, workspace_name: str, path: str, version_id: Optional[str] = N logger.error(f"File '{path}' not found in workspace '{workspace_name}'") raise FileNotFoundError(f"File '{path}' not found in workspace '{workspace_name}'") from e logger.error(f"Failed to get file '{path}' from workspace '{workspace_name}': {str(e)}") - raise ArgillaAPIError(f"Failed to get file: {str(e)}") from e + raise ExtralitAPIError(f"Failed to get file: {str(e)}") from e except Exception as e: logger.error(f"Unexpected error getting file '{path}' from workspace '{workspace_name}': {str(e)}") @@ -268,7 +268,7 @@ def put_file(self, workspace_name: str, path: str, file_path: Path) -> "ObjectMe The metadata of the uploaded file. Raises: - ArgillaAPIError: If the API request fails. + ExtralitAPIError: If the API request fails. ValueError: If the workspace name or path is invalid. FileNotFoundError: If the local file does not exist. PermissionError: If the local file cannot be read. @@ -308,7 +308,7 @@ def put_file(self, workspace_name: str, path: str, file_path: Path) -> "ObjectMe return metadata except httpx.HTTPStatusError as e: logger.error(f"Failed to upload file '{file_path}' to workspace '{workspace_name}': {str(e)}") - raise ArgillaAPIError(f"Failed to upload file: {str(e)}") from e + raise ExtralitAPIError(f"Failed to upload file: {str(e)}") from e except Exception as e: logger.error(f"Unexpected error uploading file '{file_path}' to workspace '{workspace_name}': {str(e)}") raise @@ -323,7 +323,7 @@ def delete_file(self, workspace_name: str, path: str, version_id: Optional[str] version_id: The version ID of the file. Raises: - ArgillaAPIError: If the API request fails. + ExtralitAPIError: If the API request fails. ValueError: If the workspace name or path is invalid. FileNotFoundError: If the file does not exist. """ @@ -348,7 +348,7 @@ def delete_file(self, workspace_name: str, path: str, version_id: Optional[str] logger.error(f"File '{path}' not found in workspace '{workspace_name}'") raise FileNotFoundError(f"File '{path}' not found in workspace '{workspace_name}'") from e logger.error(f"Failed to delete file '{path}' from workspace '{workspace_name}': {str(e)}") - raise ArgillaAPIError(f"Failed to delete file: {str(e)}") from e + raise ExtralitAPIError(f"Failed to delete file: {str(e)}") from e except Exception as e: logger.error(f"Unexpected error deleting file '{path}' from workspace '{workspace_name}': {str(e)}") raise @@ -437,7 +437,7 @@ def list_schemas( Raises: ImportError: If required packages are missing. - ArgillaAPIError: If the API request fails. + ExtralitAPIError: If the API request fails. ValueError: If the workspace name is invalid. """ try: @@ -514,9 +514,9 @@ def list_schemas( except Exception as e: logger.error(f"Unexpected error loading schemas from workspace '{workspace_name}': {str(e)}") - if isinstance(e, (ImportError, ArgillaAPIError, ValueError)): + if isinstance(e, (ImportError, ExtralitAPIError, ValueError)): raise - raise ArgillaAPIError(f"Failed to load schemas: {str(e)}") from e + raise ExtralitAPIError(f"Failed to load schemas: {str(e)}") from e @api_error_handler def add_schema(self, workspace_name: str, schema: Any, prefix: str = _DEFAULT_SCHEMA_S3_PATH) -> None: diff --git a/extralit/src/extralit/_exceptions/_api.py b/extralit/src/extralit/_exceptions/_api.py index 0f1206f6d..2faf405ad 100644 --- a/extralit/src/extralit/_exceptions/_api.py +++ b/extralit/src/extralit/_exceptions/_api.py @@ -18,7 +18,7 @@ from extralit._exceptions._base import ExtralitError -class ArgillaAPIError(ExtralitError): +class ExtralitAPIError(ExtralitError): message = "Server error" def __init__(self, message: Optional[str] = None, status_code: int = 500): @@ -31,31 +31,31 @@ def __init__(self, message: Optional[str] = None, status_code: int = 500): self.status_code = status_code -class BadRequestError(ArgillaAPIError): +class BadRequestError(ExtralitAPIError): message = "Bad request to the server" -class ForbiddenError(ArgillaAPIError): +class ForbiddenError(ExtralitAPIError): message = "User role is forbidden from performing this action by server" -class NotFoundError(ArgillaAPIError): +class NotFoundError(ExtralitAPIError): message = "Resource or entity not found on the server" -class ConflictError(ArgillaAPIError): +class ConflictError(ExtralitAPIError): message = "Conflict with the server. Resource or entity already exists" -class UnprocessableEntityError(ArgillaAPIError): +class UnprocessableEntityError(ExtralitAPIError): message = "Unprocessable entity. The server cannot process the request" -class InternalServerError(ArgillaAPIError): +class InternalServerError(ExtralitAPIError): message = "Internal server error" -class UnauthorizedError(ArgillaAPIError): +class UnauthorizedError(ExtralitAPIError): message = "Unauthorized user request to the server" @@ -83,7 +83,7 @@ def _error_switch(status_code: int, error_detail: str): 422: UnprocessableEntityError, 500: InternalServerError, } - exception_class = switch.get(status_code, ArgillaAPIError) + exception_class = switch.get(status_code, ExtralitAPIError) raise exception_class(f"{exception_class.message}. Details: {error_detail}", status_code=status_code) def _handler_wrapper(*args, **kwargs): diff --git a/extralit/src/extralit/_helpers/_deploy.py b/extralit/src/extralit/_helpers/_deploy.py index 7c2c2f3ed..2ea4214fe 100644 --- a/extralit/src/extralit/_helpers/_deploy.py +++ b/extralit/src/extralit/_helpers/_deploy.py @@ -36,7 +36,7 @@ class SpacesDeploymentMixin(LoggingMixin): def deploy_on_spaces( cls, api_key: str, - repo_name: Optional[str] = "argilla", + repo_name: Optional[str] = "extralit", org_name: Optional[str] = None, hf_token: Optional[str] = None, space_storage: Optional[Union[str, "SpaceStorage", Literal["small", "medium", "large"]]] = None, diff --git a/extralit/src/extralit/settings/_resource.py b/extralit/src/extralit/settings/_resource.py index 7bfc6b1dc..c51cf79d7 100644 --- a/extralit/src/extralit/settings/_resource.py +++ b/extralit/src/extralit/settings/_resource.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -20,7 +20,7 @@ from typing import List, Optional, TYPE_CHECKING, Dict, Union, Iterator, Sequence, Literal from uuid import UUID -from extralit._exceptions import SettingsError, ArgillaAPIError, ArgillaSerializeError +from extralit._exceptions import SettingsError, ExtralitAPIError, ArgillaSerializeError from extralit._models._dataset import DatasetModel from extralit._resource import Resource from extralit.settings._field import Field, _field_from_dict, _field_from_model, FieldBase @@ -533,7 +533,7 @@ def _create(self): try: property.dataset = self._settings.dataset property.create() - except ArgillaAPIError as e: + except ExtralitAPIError as e: raise SettingsError(f"Failed to create property {property.name!r}: {e.message}") from e def _update(self): @@ -541,7 +541,7 @@ def _update(self): try: item.dataset = self._settings.dataset item.update() if item.id else item.create() - except ArgillaAPIError as e: + except ExtralitAPIError as e: raise SettingsError(f"Failed to update {item.name!r}: {e.message}") from e self._delete() @@ -550,7 +550,7 @@ def _delete(self): for item in self._removed_properties: try: item.delete() - except ArgillaAPIError as e: + except ExtralitAPIError as e: raise SettingsError(f"Failed to delete {item.name!r}: {e.message}") from e def serialize(self) -> List[dict]: diff --git a/extralit/src/extralit/webhooks/_event.py b/extralit/src/extralit/webhooks/_event.py index a681a3d69..f1029b1d6 100644 --- a/extralit/src/extralit/webhooks/_event.py +++ b/extralit/src/extralit/webhooks/_event.py @@ -19,7 +19,7 @@ from pydantic import BaseModel, ConfigDict from extralit import Dataset, Record, UserResponse, Workspace -from extralit._exceptions import ArgillaAPIError +from extralit._exceptions import ExtralitAPIError from extralit._models import RecordModel, UserResponseModel, WorkspaceModel, EventType if TYPE_CHECKING: @@ -144,7 +144,7 @@ def _parse_dataset_from_webhook_data(cls, data: dict, client: "Extralit") -> Dat try: dataset.get() - except ArgillaAPIError: + except ExtralitAPIError: # TODO: Show notification pass finally: @@ -157,7 +157,7 @@ def _parse_record_from_webhook_data(cls, data: dict, client: "Extralit") -> Reco record = Record.from_model(RecordModel.model_validate(data), dataset=dataset) try: record.get() - except ArgillaAPIError: + except ExtralitAPIError: # TODO: Show notification pass finally: diff --git a/extralit/tests/unit/test_interface.py b/extralit/tests/unit/test_interface.py index 468547474..c2162ce2e 100644 --- a/extralit/tests/unit/test_interface.py +++ b/extralit/tests/unit/test_interface.py @@ -22,7 +22,7 @@ def test_default_client(self): with mock.patch("extralit.Extralit") as mock_client: mock_client.return_value.api_url = "http://localhost:6900" mock_client.return_value.api_key = "admin.apikey" - mock_client.return_value.workspace = "argilla" + mock_client.return_value.workspace = "extralit" client = ex.Extralit(api_url="http://localhost:6900", api_key="admin.apikey") assert client.api_url == "http://localhost:6900" From 1772935f52dc1a51c6c273af0d6278e446953b4b Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 13:24:39 -0700 Subject: [PATCH 16/23] Refactor: Update references from Argilla to Extralit in Docker configurations and workflows - Changed Docker image names from `argilla-hf-spaces` to `extralit-hf-space` across multiple Dockerfiles and configuration files. - Updated environment variables and paths in Docker Compose and Nginx configurations to reflect the new naming convention. - Adjusted the MkDocs configuration to point to the correct source and reference paths for Extralit. - Ensured consistency in the server and client references throughout the codebase. --- .../extralit-server.build-docker-images.yml | 6 ++--- .github/workflows/extralit.yml | 2 +- argilla-frontend/dev.frontend.Dockerfile | 8 +++--- .../docker/nginx/docker-compose.yaml | 4 +-- examples/deployments/docker/nginx/nginx.conf | 4 +-- .../docker/traefik/docker-compose.yaml | 8 +++--- .../docker/extralit-hf-spaces/Dockerfile | 10 +++---- extralit-server/pyproject.toml | 2 +- .../8c574ada5e5f_update_enum_columns.py | 26 +++++++++---------- extralit/mkdocs.yml | 4 +-- 10 files changed, 37 insertions(+), 37 deletions(-) diff --git a/.github/workflows/extralit-server.build-docker-images.yml b/.github/workflows/extralit-server.build-docker-images.yml index 7867decc9..e54308826 100644 --- a/.github/workflows/extralit-server.build-docker-images.yml +++ b/.github/workflows/extralit-server.build-docker-images.yml @@ -49,7 +49,7 @@ jobs: echo "PLATFORMS=linux/amd64,linux/arm64" >> $GITHUB_ENV echo "IMAGE_TAG=v$PACKAGE_VERSION" >> $GITHUB_ENV echo "SERVER_DOCKER_IMAGE=extralit/extralit-server" >> $GITHUB_ENV - echo "HF_SPACES_DOCKER_IMAGE=extralit/extralit-hf-spaces" >> $GITHUB_ENV + echo "HF_SPACES_DOCKER_IMAGE=extralit/extralit-hf-space" >> $GITHUB_ENV echo "DOCKER_USERNAME=$DOCKER_USERNAME" >> $GITHUB_ENV echo "DOCKER_PASSWORD=$DOCKER_PASSWORD" >> $GITHUB_ENV echo "PUBLISH_LATEST=$PUBLISH_LATEST" >> $GITHUB_ENV @@ -57,7 +57,7 @@ jobs: echo "PLATFORMS=linux/amd64" >> $GITHUB_ENV echo "IMAGE_TAG=$DOCKER_IMAGE_TAG" >> $GITHUB_ENV echo "SERVER_DOCKER_IMAGE=extralitdev/extralit-server" >> $GITHUB_ENV - echo "HF_SPACES_DOCKER_IMAGE=extralitdev/extralit-hf-spaces" >> $GITHUB_ENV + echo "HF_SPACES_DOCKER_IMAGE=extralitdev/extralit-hf-space" >> $GITHUB_ENV echo "DOCKER_USERNAME=$DOCKER_USERNAME_DEV" >> $GITHUB_ENV echo "DOCKER_PASSWORD=$DOCKER_PASSWORD_DEV" >> $GITHUB_ENV echo "PUBLISH_LATEST=true" >> $GITHUB_ENV @@ -159,4 +159,4 @@ jobs: # username: ${{ env.DOCKER_USERNAME }} # password: ${{ env.DOCKER_PASSWORD }} # repository: $${{ env.HF_SPACES_DOCKER_IMAGE }} - # readme-filepath: extralit-server/docker/extralit-hf-spaces/README.md + # readme-filepath: extralit-server/docker/extralit-hf-space/README.md diff --git a/.github/workflows/extralit.yml b/.github/workflows/extralit.yml index 781217b20..5513b6a3e 100644 --- a/.github/workflows/extralit.yml +++ b/.github/workflows/extralit.yml @@ -32,7 +32,7 @@ jobs: if: github.event.pull_request.draft == false services: extralit-server: - image: extralitdev/argilla-hf-spaces:develop + image: extralitdev/extralit-hf-space:develop ports: - 6900:6900 env: diff --git a/argilla-frontend/dev.frontend.Dockerfile b/argilla-frontend/dev.frontend.Dockerfile index ae588e31a..f393eb5d5 100644 --- a/argilla-frontend/dev.frontend.Dockerfile +++ b/argilla-frontend/dev.frontend.Dockerfile @@ -1,6 +1,6 @@ ARG extralit_server_TAG=develop -FROM extralitdev/argilla-hf-spaces:${extralit_server_TAG} +FROM extralitdev/extralit-hf-space:${extralit_server_TAG} USER root @@ -9,7 +9,7 @@ RUN apt-get update && \ USER argilla -WORKDIR /home/argilla/frontend +WORKDIR /home/extralit/frontend COPY --chown=argilla:argilla dist ./dist COPY --chown=argilla:argilla .nuxt ./.nuxt @@ -21,9 +21,9 @@ COPY --chown=argilla:argilla nuxt.config.ts ./nuxt.config.ts # If we want to use a built-in server in the future to check all functionality we can modify the following Procfile # content adding ElasticSearch and extralit-server processes. RUN npm install && \ - echo 'frontend: cd /home/argilla/frontend && HOST=0.0.0.0 PORT=3000 npm run start\n' > /home/argilla/Procfile.frontend + echo 'frontend: cd /home/extralit/frontend && HOST=0.0.0.0 PORT=3000 npm run start\n' > /home/extralit/Procfile.frontend -WORKDIR /home/argilla/ +WORKDIR /home/extralit/ EXPOSE 3000 EXPOSE 6900 diff --git a/examples/deployments/docker/nginx/docker-compose.yaml b/examples/deployments/docker/nginx/docker-compose.yaml index dd5cb8073..f859ec54f 100644 --- a/examples/deployments/docker/nginx/docker-compose.yaml +++ b/examples/deployments/docker/nginx/docker-compose.yaml @@ -10,10 +10,10 @@ services: - ./nginx.conf:/etc/nginx/nginx.conf:ro argilla: - image: extralitdev/argilla-hf-spaces:latest + image: extralitdev/extralit-hf-space:latest environment: HF_HUB_DISABLE_TELEMETRY: 1 - EXTRALIT_BASE_URL: /argilla + EXTRALIT_BASE_URL: /extralit USERNAME: extralit PASSWORD: 12345678 diff --git a/examples/deployments/docker/nginx/nginx.conf b/examples/deployments/docker/nginx/nginx.conf index ebce98633..dec2e0a43 100644 --- a/examples/deployments/docker/nginx/nginx.conf +++ b/examples/deployments/docker/nginx/nginx.conf @@ -4,8 +4,8 @@ http { server { listen 80; - location /argilla/ { - proxy_pass http://argilla:6900/; + location /extralit/ { + proxy_pass http://extralit:6900/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; diff --git a/examples/deployments/docker/traefik/docker-compose.yaml b/examples/deployments/docker/traefik/docker-compose.yaml index 0cafd682c..e59b39686 100644 --- a/examples/deployments/docker/traefik/docker-compose.yaml +++ b/examples/deployments/docker/traefik/docker-compose.yaml @@ -17,18 +17,18 @@ services: - "/var/run/docker.sock:/var/run/docker.sock:ro" argilla: - image: extralitdev/argilla-hf-spaces:latest + image: extralitdev/extralit-hf-space:latest environment: HF_HUB_DISABLE_TELEMETRY: 1 - EXTRALIT_BASE_URL: /argilla + EXTRALIT_BASE_URL: /extralit USERNAME: extralit PASSWORD: 12345678 API_KEY: extralit.apikey labels: - "traefik.enable=true" - - "traefik.http.routers.argilla.rule=PathPrefix(`/argilla/`)" + - "traefik.http.routers.argilla.rule=PathPrefix(`/extralit/`)" - "traefik.http.routers.argilla.entrypoints=web" - "traefik.http.services.argilla.loadbalancer.server.port=6900" - - "traefik.http.middlewares.argilla-stripprefix.stripprefix.prefixes=/argilla" + - "traefik.http.middlewares.argilla-stripprefix.stripprefix.prefixes=/extralit" - "traefik.http.middlewares.argilla-stripprefix.stripprefix.forceSlash=false" - "traefik.http.routers.argilla.middlewares=argilla-stripprefix" diff --git a/extralit-server/docker/extralit-hf-spaces/Dockerfile b/extralit-server/docker/extralit-hf-spaces/Dockerfile index 561e7f106..a6f0e0c0f 100644 --- a/extralit-server/docker/extralit-hf-spaces/Dockerfile +++ b/extralit-server/docker/extralit-hf-spaces/Dockerfile @@ -7,8 +7,8 @@ FROM ${extralit_server_IMAGE}:${EXTRALIT_VERSION} AS base USER root # Copy Argilla distribution files -COPY scripts/start.sh /home/argilla -COPY Procfile /home/argilla +COPY scripts/start.sh /home/extralit +COPY Procfile /home/extralit COPY requirements.txt /packages/requirements.txt # Install apt dependencies - breaking up large installations @@ -36,8 +36,8 @@ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends re # Install Python dependencies and additional utilities RUN pip install --no-cache-dir -r /packages/requirements.txt && \ - chmod +x /home/argilla/start.sh && \ - chmod +x /home/argilla/start_extralit_server.sh && \ + chmod +x /home/extralit/start.sh && \ + chmod +x /home/extralit/start_extralit_server.sh && \ DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends curl jq pwgen && \ apt-get remove -y wget gnupg && \ apt-get clean && \ @@ -56,7 +56,7 @@ USER argilla ENV ELASTIC_CONTAINER=true ENV ES_JAVA_OPTS="-Xms1g -Xmx1g" -ENV EXTRALIT_HOME_PATH=/data/argilla +ENV EXTRALIT_HOME_PATH=/data/extralit ENV REINDEX_DATASETS=1 CMD ["/bin/bash", "start.sh"] \ No newline at end of file diff --git a/extralit-server/pyproject.toml b/extralit-server/pyproject.toml index 84002257e..e84927bd0 100644 --- a/extralit-server/pyproject.toml +++ b/extralit-server/pyproject.toml @@ -188,4 +188,4 @@ test = { cmd = "pytest --verbosity=1 --disable-warnings", env_file = ".env.test" test-cov = { cmd = "pytest tests --cov=extralit_server --cov-report=term --cov-report=xml --verbosity=0 --disable-warnings", env_file = ".env.test" } docker-build-extralit-server = { shell = "pdm build && cp -R dist docker/server && docker build -t extralit/extralit-server:local docker/server" } -docker-build-argilla-hf-spaces = { shell = "pdm run docker-build-extralit-server && docker build --build-arg EXTRALIT_VERSION=local -t extralit/argilla-hf-spaces:local docker/argilla-hf-spaces" } +docker-build-argilla-hf-spaces = { shell = "pdm run docker-build-extralit-server && docker build --build-arg EXTRALIT_VERSION=local -t extralit/extralit-hf-space:local docker/argilla-hf-spaces" } diff --git a/extralit-server/src/extralit_server/alembic/versions/8c574ada5e5f_update_enum_columns.py b/extralit-server/src/extralit_server/alembic/versions/8c574ada5e5f_update_enum_columns.py index 78c6037ab..b14d9326f 100644 --- a/extralit-server/src/extralit_server/alembic/versions/8c574ada5e5f_update_enum_columns.py +++ b/extralit-server/src/extralit_server/alembic/versions/8c574ada5e5f_update_enum_columns.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """update_enum_columns @@ -29,13 +29,13 @@ branch_labels = None depends_on = None -# Aligned with the values of `ResponseStatus` in `src/argilla/server/models/dataset.py` +# Aligned with the values of `ResponseStatus` in `src/extralit/server/models/dataset.py` response_status_enum = sa.Enum("draft", "submitted", "discarded", name="response_status_enum") -# Aligned with the values of `DatasetStatus` in `src/argilla/server/models/dataset.py` +# Aligned with the values of `DatasetStatus` in `src/extralit/server/models/dataset.py` dataset_status_enum = sa.Enum("draft", "ready", name="dataset_status_enum") -# Aligned with the values of `UserRole` in `src/argilla/server/models/dataset.py` +# Aligned with the values of `UserRole` in `src/extralit/server/models/dataset.py` user_role_enum = sa.Enum("owner", "admin", "annotator", name="user_role_enum") diff --git a/extralit/mkdocs.yml b/extralit/mkdocs.yml index 28ea80509..c0788e787 100644 --- a/extralit/mkdocs.yml +++ b/extralit/mkdocs.yml @@ -82,7 +82,7 @@ theme: name: Switch to system preference watch: - - src/argilla + - src/extralit # Extensions markdown_extensions: @@ -220,7 +220,7 @@ nav: - Image classification: tutorials/image_classification.ipynb - Image preference: tutorials/image_preference.ipynb - API Reference: - - Argilla Python SDK: reference/argilla/ + - Argilla Python SDK: reference/extralit/ - FastAPI Server: - Server configuration: reference/extralit-server/configuration.md - OAuth2 configuration: reference/extralit-server/oauth2_configuration.md From 8bcba770688883fb052fde4010f783eb3cb444c1 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 13:35:00 -0700 Subject: [PATCH 17/23] Update Docker image references and skip tests in hub dataset exporter - Changed Docker image references from `argilla-hf-spaces` to `extralit-hf-space` in the upgrade documentation and workflow configuration. - Added skip markers to all tests in the `TestHubDatasetExporter` class to temporarily disable them due to external API rate limiting issues. --- .github/workflows/extralit.yml | 2 +- .../unit/contexts/hub/test_hub_dataset_exporter.py | 11 +++++++++++ extralit/docs/admin_guide/upgrading.md | 4 ++-- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.github/workflows/extralit.yml b/.github/workflows/extralit.yml index 5513b6a3e..8bf89dae0 100644 --- a/.github/workflows/extralit.yml +++ b/.github/workflows/extralit.yml @@ -32,7 +32,7 @@ jobs: if: github.event.pull_request.draft == false services: extralit-server: - image: extralitdev/extralit-hf-space:develop + image: extralitdev/extralit-hf-space:latest ports: - 6900:6900 env: diff --git a/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py b/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py index 35e23b894..1f0a13a90 100644 --- a/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py +++ b/extralit-server/tests/unit/contexts/hub/test_hub_dataset_exporter.py @@ -94,6 +94,7 @@ def wrapper(*args, **kwargs): @pytest.mark.skipif(HF_TOKEN is None, reason="HF_TOKEN_EXTRALIT_INTERNAL_TESTING is not defined") class TestHubDatasetExporter: + @pytest.mark.skip(reason="Skipping all tests in this file") @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to(self, sync_test_session, hf_api: HfApi, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -143,6 +144,7 @@ def test_export_to_with_custom_subset(self, sync_test_session, hf_dataset_name: assert get_dataset_config_names(hf_dataset_name) == ["custom"] + @pytest.mark.skip(reason="Skipping all tests in this file") @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_custom_split(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -169,6 +171,7 @@ def test_export_to_with_custom_split(self, sync_test_session, hf_dataset_name: s else: raise error + @pytest.mark.skip(reason="Skipping all tests in this file") @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_private_dataset(self, sync_test_session, hf_api: HfApi, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -188,6 +191,7 @@ def test_export_to_with_private_dataset(self, sync_test_session, hf_api: HfApi, assert hf_api.dataset_info(hf_dataset_name).private == True + @pytest.mark.skip(reason="Skipping all tests in this file") @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_chat_field(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -692,6 +696,7 @@ def test_export_to_with_label_question_and_suggestion(self, sync_test_session, h "label-question.suggestion.score": 0.3, } + @pytest.mark.skip(reason="Skipping all tests in this file") @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_multi_label_question(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -755,6 +760,7 @@ def test_export_to_with_multi_label_question(self, sync_test_session, hf_dataset "multi-label-question.responses.users": [str(annotators[0].id), str(annotators[1].id)], } + @pytest.mark.skip(reason="Skipping all tests in this file") @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_multi_label_question_and_suggestion(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -828,6 +834,7 @@ def test_export_to_with_multi_label_question_and_suggestion(self, sync_test_sess "multi-label-question.suggestion.score": [0.8, 0.7], } + @pytest.mark.skip(reason="Skipping all tests in this file") @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_ranking_question(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -1015,6 +1022,7 @@ def test_export_to_with_ranking_question_and_suggestion(self, sync_test_session, "ranking-question.suggestion.score": [0.5, 0.4, 0.3, 0.2], } + @pytest.mark.skip(reason="Skipping all tests in this file") @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_span_question(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -1188,6 +1196,7 @@ def test_export_to_with_span_question_and_suggestion(self, sync_test_session, hf "span-question.suggestion.score": [0.7, 0.6], } + @pytest.mark.skip(reason="Skipping all tests in this file") @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_draft_response(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -1283,6 +1292,7 @@ def test_export_to_with_discarded_response(self, sync_test_session, hf_dataset_n "text-question.responses.users": [str(annotator.id)], } + @pytest.mark.skip(reason="Skipping all tests in this file") @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_metadata(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) @@ -1343,6 +1353,7 @@ def test_export_to_with_metadata(self, sync_test_session, hf_dataset_name: str): assert exported_dataset[0]["metadata.metadata-integer"] == 42 assert exported_dataset[0]["metadata.metadata-float"] == 3.14 + @pytest.mark.skip(reason="Skipping all tests in this file") @skip_on(HTTPError, reason="Skipping due to HF 429 Client Error: Too Many Requests") def test_export_to_with_vectors(self, sync_test_session, hf_dataset_name: str): dataset = DatasetSyncFactory.create(status=DatasetStatus.ready) diff --git a/extralit/docs/admin_guide/upgrading.md b/extralit/docs/admin_guide/upgrading.md index ba163a081..451bc4d3d 100644 --- a/extralit/docs/admin_guide/upgrading.md +++ b/extralit/docs/admin_guide/upgrading.md @@ -85,7 +85,7 @@ extralit_server database migrate 1. Pull the latest Extralit image: ```bash - docker pull extralit/argilla-hf-spaces:latest + docker pull extralit/extralit-hf-space:latest ``` 2. Stop and remove the existing container: @@ -100,7 +100,7 @@ extralit_server database migrate ```bash docker run -d --name extralit-quickstart -p 6900:6900 \ -e EXTRALIT_AUTH_SECRET_KEY=$(openssl rand -hex 32) \ - extralit/argilla-hf-spaces:latest + extralit/extralit-hf-space:latest ``` ### Docker Deployment Update From 31af01263f420321fdef294ea8231c149111be49 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 14:38:04 -0700 Subject: [PATCH 18/23] latest --- .../extralit-server.build-docker-images.yml | 20 +------------------ .../tests/integration/test_add_records.py | 4 ++-- 2 files changed, 3 insertions(+), 21 deletions(-) diff --git a/.github/workflows/extralit-server.build-docker-images.yml b/.github/workflows/extralit-server.build-docker-images.yml index e54308826..d9ca8afe0 100644 --- a/.github/workflows/extralit-server.build-docker-images.yml +++ b/.github/workflows/extralit-server.build-docker-images.yml @@ -1,4 +1,4 @@ -name: Build Argilla server docker images +name: Build extralit-server docker images on: workflow_call: @@ -142,21 +142,3 @@ jobs: repository: extralit/extralit-hf-space event-type: build-hf-space client-payload: '{"tag":"${{ env.IMAGE_TAG }}","is_release":${{ inputs.is_release }}}' - # TODO: uncomment this once the step works again - # - name: Docker Hub Description for `extralit-server` - # uses: peter-evans/dockerhub-description@v4 - # if: ${{ env.PUBLISH_LATEST == 'true' }} - # with: - # username: ${{ env.DOCKER_USERNAME }} - # password: ${{ env.DOCKER_PASSWORD }} - # repository: $${{ env.SERVER_DOCKER_IMAGE }} - # readme-filepath: extralit-server/docker/server/README.md - # TODO: uncomment this once the step works again - # - name: Docker Hub Description for `argilla-hf-spaces` - # uses: peter-evans/dockerhub-description@v4 - # if: ${{ env.PUBLISH_LATEST == 'true' }} - # with: - # username: ${{ env.DOCKER_USERNAME }} - # password: ${{ env.DOCKER_PASSWORD }} - # repository: $${{ env.HF_SPACES_DOCKER_IMAGE }} - # readme-filepath: extralit-server/docker/extralit-hf-space/README.md diff --git a/extralit/tests/integration/test_add_records.py b/extralit/tests/integration/test_add_records.py index 3c163667b..864234c33 100644 --- a/extralit/tests/integration/test_add_records.py +++ b/extralit/tests/integration/test_add_records.py @@ -211,7 +211,7 @@ def test_add_records_with_suggestions_non_existent_question(client) -> None: client=client, ) dataset.create() - with pytest.raises(RecordSuggestionsError, match="Argilla SDK error: RecordSuggestionsError: Record suggestion"): + with pytest.raises(RecordSuggestionsError, match="Extralit SDK error: RecordSuggestionsError: Record suggestion"): dataset.records.log(mock_data) @@ -305,7 +305,7 @@ def test_add_records_with_responses_non_existent_question(client, username: str) responses=[ex.Response(question_name="non_existent_question", value="mock", user_id=user.id)], ) ] - with pytest.raises(RecordResponsesError, match="Argilla SDK error: RecordResponsesError: Record response"): + with pytest.raises(RecordResponsesError, match="Extralit SDK error: RecordResponsesError: Record response"): dataset.records.log(mock_data) From b21af6ead9d6e5546bafed888bf16f5521820496 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 6 Aug 2025 21:44:44 +0000 Subject: [PATCH 19/23] =?UTF-8?q?Complete=20frontend=20directory=20rename:?= =?UTF-8?q?=20argilla-frontend=20=E2=86=92=20extralit-frontend=20and=20upd?= =?UTF-8?q?ate=20all=20references?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: dawn-tran <104935595+dawn-tran@users.noreply.github.com> --- .devcontainer/devcontainer.json | 4 +-- .../docker-compose/devcontainer.json | 4 +-- .devcontainer/ui-design/devcontainer.json | 8 ++--- .github/copilot-instructions.md | 6 ++-- .github/workflows/copilot-setup-steps.yml | 6 ++-- ...ontend.build-push-dev-frontend-docker.yml} | 6 ++-- ... extralit-frontend.deploy-environment.yml} | 12 +++---- ...frontend.teardown-all-pr-environments.yml} | 0 ...alit-frontend.teardown-pr-environment.yml} | 2 +- ...lla-frontend.yml => extralit-frontend.yml} | 30 ++++++++-------- .kiro/specs/import-history-sidebar/design.md | 14 ++++---- .kiro/specs/import-history-sidebar/tasks.md | 20 +++++------ .kiro/specs/papers-library-importer/design.md | 34 +++++++++--------- .kiro/steering/structure.md | 10 +++--- .kiro/steering/tech.md | 4 +-- .pre-commit-config.yaml | 8 ++--- Tiltfile | 8 ++--- codecov.yml | 6 ++-- .../.eslintignore | 0 .../.eslintrc.js | 0 .../.gitignore | 0 .../.prettierrc.js | 0 .../CHANGELOG.md | 0 .../LICENSE | 0 .../README.md | 0 .../__mocks__/styleMock.js | 0 .../__mocks__/tabulator-tables.js | 0 .../assets/css/fonts.css | 0 .../assets/css/themes.css | 0 .../assets/icon-template.js.tmp | 0 .../assets/icons/arrow-down.js | 0 .../assets/icons/arrow-up.js | 0 .../assets/icons/assign.js | 0 .../assets/icons/bulk-mode.js | 0 .../assets/icons/change-height.js | 0 .../assets/icons/check.js | 0 .../assets/icons/chevron-down.js | 0 .../assets/icons/chevron-left.js | 0 .../assets/icons/chevron-right.js | 0 .../assets/icons/chevron-up.js | 0 .../assets/icons/clear.js | 0 .../assets/icons/close.js | 0 .../assets/icons/code.js | 0 .../assets/icons/copy.js | 0 .../assets/icons/danger.js | 0 .../assets/icons/dark-theme.js | 0 .../assets/icons/discard.js | 0 .../assets/icons/document.js | 0 .../assets/icons/draggable.js | 0 .../assets/icons/expand-arrows.js | 0 .../assets/icons/exploration.js | 0 .../assets/icons/export.js | 0 .../assets/icons/external-link.js | 0 .../assets/icons/external.js | 0 .../assets/icons/filter.js | 0 .../assets/icons/focus-mode.js | 0 .../assets/icons/hand-labeling.js | 0 .../assets/icons/high-contrast-theme.js | 0 .../assets/icons/import.js | 0 .../assets/icons/index.js | 0 .../assets/icons/info.js | 0 .../assets/icons/kebab.js | 0 .../assets/icons/light-theme.js | 0 .../assets/icons/link.js | 0 .../assets/icons/log-out.js | 0 .../assets/icons/matching.js | 0 .../assets/icons/math-plus.js | 0 .../assets/icons/meatballs.js | 0 .../assets/icons/minimize-arrows.js | 0 .../assets/icons/no-matching.js | 0 .../assets/icons/pen.js | 0 .../assets/icons/plus.js | 0 .../assets/icons/progress.js | 0 .../assets/icons/question-answering.js | 0 .../assets/icons/records.js | 0 .../assets/icons/refresh.js | 0 .../assets/icons/reset.js | 0 .../assets/icons/row-last.js | 0 .../assets/icons/rows.js | 0 .../assets/icons/search.js | 0 .../assets/icons/settings.js | 0 .../assets/icons/shortcuts.js | 0 .../assets/icons/similarity.js | 0 .../assets/icons/smile-sad.js | 0 .../assets/icons/sort.js | 0 .../assets/icons/stats.js | 0 .../assets/icons/suggestion.js | 0 .../assets/icons/support.js | 0 .../assets/icons/system-theme.js | 0 .../assets/icons/text-classification.js | 0 .../assets/icons/text-to-image.js | 0 .../assets/icons/time.js | 0 .../assets/icons/trash-empty.js | 0 .../assets/icons/unavailable.js | 0 .../assets/icons/update.js | 0 .../assets/icons/validate.js | 0 .../assets/icons/weak-labeling.js | 0 .../assets/scss/abstract.scss | 0 .../scss/abstract/functions/_functions.scss | 0 .../scss/abstract/mixins/_grid-mixins.scss | 0 .../scss/abstract/mixins/_media-queries.scss | 0 .../assets/scss/abstract/mixins/_mixins.scss | 0 .../abstract/placeholders/_placeholders.scss | 0 .../scss/abstract/placeholders/_tooltip.scss | 0 .../scss/abstract/variables/_variables.scss | 0 .../assets/scss/base/base.scss | 0 .../assets/styles.scss | 0 .../babel.config.js | 0 .../base-action-tooltip/BaseActionTooltip.vue | 0 .../components/base/base-badge/BaseBadge.vue | 0 .../base/base-badge/BaseBadgeSkeleton.vue | 0 .../base/base-badge/BaseIconWithBadge.vue | 0 .../base/base-banner/BaseBanner.vue | 0 .../base/base-brand-icon/BrandIcon.vue | 0 .../base/base-brand-icon/BrandLogo.vue | 0 .../base/base-breadcrumbs/BaseBreadcrumbs.vue | 0 .../base/base-button/BaseButton.vue | 0 .../base/base-card/BaseCard.spec.js | 0 .../components/base/base-card/BaseCard.vue | 0 .../base/base-card/BaseCardWithTabs.vue | 0 .../base/base-checkbox/BaseCheckbox.vue | 0 .../components/base/base-code/BaseCode.vue | 0 .../BaseCollapsablePanel.vue | 0 .../components/base/base-date/BaseDate.vue | 0 .../__snapshots__/base-date.test.ts.snap | 0 .../base/base-date/base-date.test.ts | 0 .../DocumentationViewer.vue | 0 .../base/base-dropdown/BaseDropdown.spec.js | 0 .../base/base-dropdown/BaseDropdown.vue | 0 .../base/base-feedback/BaseFeedback.spec.js | 0 .../base/base-feedback/BaseFeedback.vue | 0 .../BaseFeedbackError.component.vue | 0 .../BaseFeedbackError.spec.js | 0 .../base-flow-modal/BaseFlowModal.spec.js | 0 .../base/base-flow-modal/BaseFlowModal.vue | 0 .../components/base/base-icon/BaseIcon.vue | 0 .../components/base/base-input/BaseInput.vue | 0 .../base/base-input/BaseInputContainer.vue | 0 .../components/base/base-input/common.js | 0 .../base-input/utils/getClosestVueParent.js | 0 .../base/base-loading/BaseLoading.vue | 0 .../components/base/base-modal/BaseModal.vue | 0 .../base/base-pdf-viewer/PDFViewer.vue | 0 .../base/base-progress/BaseCircleProgress.vue | 0 .../base/base-progress/BaseLinearProgress.vue | 0 .../BaseLinearProgressSkeleton.vue | 0 .../base-radio-button/BaseRadioButton.spec.js | 0 .../base-radio-button/BaseRadioButton.vue | 0 .../base-range/BaseRangeMultipleSlider.vue | 0 .../base/base-range/BaseRangeSlider.vue | 0 .../base/base-render-html/RenderHTML.vue | 0 .../base/base-render-html/renderHTML.test.js | 0 .../MarkdownRenderer.spec.js | 0 .../base-render-markdown/MarkdownRenderer.vue | 0 .../base/base-render-table/RenderTable.vue | 0 .../base-render-table/renderTable.test.ts | 0 .../base/base-render-table/tableUtils.ts | 0 .../useLLMExtractionViewModel.ts | 0 .../useReferenceTablesViewModel.ts | 0 .../useSchemaTableViewModel.ts | 0 .../base/base-render-table/validatorUtils.ts | 0 .../base-resizable/HorizontalResizable.vue | 0 .../base/base-resizable/VerticalResizable.vue | 0 .../base/base-resizable/useResizable.ts | 0 .../base/base-scroll/SynchronizeScroll.vue | 0 .../base/base-search-bar/BaseSearch.vue | 0 .../base/base-search-bar/BaseSearchBar.vue | 0 .../base/base-separator/BaseSeparator.vue | 0 .../base/base-shapes/GeometricShapeA.vue | 0 .../base-simple-table/BaseSimpleTable.test.ts | 0 .../base-simple-table/BaseSimpleTable.vue | 0 .../base/base-slider/BaseSlider.spec.js | 0 .../base/base-slider/BaseSlider.vue | 0 .../__snapshots__/BaseSlider.spec.js.snap | 0 .../base/base-spinner/BaseSpinner.vue | 0 .../base/base-switch/BaseSwitch.vue | 0 .../components/base/base-tabs/BaseTabs.vue | 0 .../base/base-tabs/BaseTabsAndContent.vue | 0 .../base/base-tabs/baseTabs.spec.js | 0 .../components/base/base-tag/BaseTag.vue | 0 .../components/base/base-toast/Toast.vue | 0 .../components/base/base-toast/api.ts | 0 .../components/base/base-toast/bus.js | 0 .../components/base/base-toast/helpers.js | 0 .../components/base/base-toast/positions.js | 0 .../components/base/base-toast/timer.js | 0 .../base/base-tooltip/BaseFixedTooltip.vue | 0 .../base/base-tooltip/BaseTooltip.spec.js | 0 .../base/base-tooltip/BaseTooltip.vue | 0 .../base-topbar-brand/BaseTopbarBrand.vue | 0 .../RecordFeedbackTaskAndQuestionnaire.vue | 0 .../annotation/container/fields/Record.vue | 0 .../container/fields/RecordFields.vue | 0 .../container/fields/RecordFieldsHeader.vue | 0 .../container/fields/RecordMenu.vue | 0 .../container/fields/RecordMetadataInfo.vue | 0 .../container/fields/RecordStatus.vue | 0 .../fields/SimilarityScorePercentage.vue | 0 .../container/fields/chat-field/ChatField.vue | 0 .../chat-field/useChatFieldViewModel.ts | 0 .../fields/custom-field/CustomField.vue | 0 .../fields/image-field/ImageField.vue | 0 .../container/fields/sandbox/Sandbox.vue | 0 .../SpanAnnotationTextField.vue | 0 .../components/EntityBadge.vue | 0 .../components/EntityComponent.vue | 0 .../components/EntityDropdown.vue | 0 .../components/EntityDropdownOverlapping.vue | 0 .../components/highlighting.ts | 0 .../components/span-selection.test.ts | 0 .../components/span-selection.ts | 0 .../components/spanAnnotationCursor.vue | 0 .../useSpanAnnotationTextFieldViewModel.ts | 0 .../fields/table-field/TableField.vue | 0 .../container/fields/text-field/TextField.vue | 0 .../text-field/useTextFieldViewModel.ts | 0 .../fields/useSearchTextHighlight.ts | 0 .../container/mode/BulkAnnotation.vue | 0 .../container/mode/FocusAnnotation.vue | 0 .../mode/useBulkAnnotationViewModel.ts | 0 .../container/mode/useDocumentViewModel.ts | 0 .../mode/useFocusAnnotationViewModel.ts | 0 .../container/questions/QuestionsForm.vue | 0 .../questions/form/Questions.component.vue | 0 .../form/multi-label/MultiLabel.component.vue | 0 .../form/ranking/Ranking.component.vue | 0 .../DndSelection.component.vue | 0 .../dndSelection.component.spec.js | 0 .../questions/form/ranking/ranking-adapter.js | 0 .../form/ranking/ranking-adapter.test.js | 0 .../questions/form/ranking/ranking-fakes.js | 0 .../form/rating/Rating.component.vue | 0 .../rating/RatingMonoSelection.component.vue | 0 .../questions/form/rating/RatingShortcuts.vue | 0 .../ratingMonoSelection.component.spec.js | 0 .../LabelSelection.component.vue | 0 .../labelSelection.component.spec.js | 0 .../useLabelSelectionViewModel.ts | 0 .../QuestionHeader.component.vue | 0 .../search-label/SearchLabel.component.vue | 0 .../searchLabel.component.spec.js | 0 .../single-label/SingleLabel.component.vue | 0 .../questions/form/span/EntityLabelBadge.vue | 0 .../span/EntityLabelSelection.component.vue | 0 .../questions/form/span/SpanComponent.vue | 0 .../questions/form/table/TableComponent.vue | 0 .../text-area/ContentEditableFeedbackTask.vue | 0 .../form/text-area/TextArea.component.vue | 0 .../form/text-area/TextAreaContents.vue | 0 .../form/text-area/TextAreaSuggestion.vue | 0 .../questions/form/useQuestionsViewModel.ts | 0 .../similarity/SimilarityConfigDropdown.vue | 0 .../container/similarity/SimilarityFilter.vue | 0 .../similarity/SimilarityRecordReference.vue | 0 .../similarity/SimilarityReference.vue | 0 .../filters/SimilarityFilterLimit.vue | 0 .../filters/SimilarityFilterOrder.vue | 0 .../filters/SimilarityFilterVector.vue | 0 .../SimilarityFilterVectorRadioButtons.vue | 0 .../useRecordFeedbackTaskViewModel.ts | 0 .../container/useRecordsMessages.test.ts | 0 .../container/useRecordsMessages.ts | 0 .../view-config/RecordsViewConfig.vue | 0 .../guidelines/AnnotationGuidelines.vue | 0 .../useAnnotationGuidelinesViewModel.ts | 0 .../annotation/header/DatasetFilters.vue | 0 .../header/RadioButtonsSelect.base.vue | 0 .../annotation/header/StatusFilter.vue | 0 .../header/ToggleAnnotationType.vue | 0 .../header/filters/CategoriesSelector.vue | 0 .../annotation/header/filters/FilterBadge.vue | 0 .../header/filters/FilterButton.vue | 0 .../header/filters/FilterButtonWithBadges.vue | 0 .../header/filters/FilterTooltip.vue | 0 .../header/filters/LabelsSelector.vue | 0 .../header/filters/LabelsSelectorSearch.vue | 0 .../header/filters/OptionsSelector.vue | 0 .../header/filters/RangeSelector.vue | 0 .../DatasetSettingsIconFeedbackTask.vue | 0 .../header/header-bar/ExportToHub.vue | 0 .../header/header-bar/HeaderFeedbackTask.vue | 0 .../header/header-bar/ImportData.vue | 0 .../header-bar/headerFeedbackTask.spec.js | 0 .../header-bar/useExportToHubViewModel.ts | 0 .../annotation/header/load-line/LoadLine.vue | 0 .../header/metadata-filter/MetadataFilter.vue | 0 .../useMetadataFilterViewModel.ts | 0 .../responses-filter/ResponsesFilter.vue | 0 .../useResponseFilterViewModel.ts | 0 .../search-bar-filter/SearchBarFilter.vue | 0 .../annotation/header/sort-filter/Sort.vue | 0 .../header/sort-filter/SortButton.vue | 0 .../header/sort-filter/SortCategoriesList.vue | 0 .../header/sort-filter/SortSelector.vue | 0 .../header/sort-filter/SortSelectorItem.vue | 0 .../header/sort-filter/useSortRecords.ts | 0 .../suggestion-filter/SuggestionFilter.vue | 0 .../useSuggestionFilterViewModel.ts | 0 .../header/useDatasetsFiltersViewModel.ts | 0 .../pagination/PageSizeSelector.vue | 0 .../annotation/pagination/Pagination.vue | 0 .../pagination/PaginationFeedbackTask.vue | 0 .../usePaginationFeedbackTaskViewModel.ts | 0 .../progress/AnnotationProgress.vue | 0 .../progress/AnnotationProgressDetailed.vue | 0 .../annotation/progress/TeamProgress.vue | 0 .../annotation/progress/share/Share.vue | 0 .../progress/share/useShareViewModel.ts | 0 .../progress/status-counter/StatusCounter.vue | 0 .../status-counter/StatusCounterSkeleton.vue | 0 .../useAnnotationProgressViewModel.ts | 0 .../progress/useTeamProgressViewModel.ts | 0 .../settings/DatasetDeleteFeedbackTask.vue | 0 .../settings/SettingsDangerZone.vue | 0 .../annotation/settings/SettingsFields.vue | 0 .../annotation/settings/SettingsInfo.vue | 0 .../settings/SettingsInfoReadOnly.vue | 0 .../annotation/settings/SettingsMetadata.vue | 0 .../annotation/settings/SettingsQuestions.vue | 0 .../annotation/settings/SettingsVectors.vue | 0 .../TopDatasetSettingsFeedbackTask.vue | 0 .../annotation/settings/Validation.vue | 0 .../DatasetDescription.vue | 0 .../DatasetDescriptionReadOnly.spec.js | 0 .../DatasetDescriptionReadOnly.vue | 0 .../settings/useDeleteDatasetViewModel.ts | 0 .../settings/useSettingInfoViewModel.ts | 0 .../settings/useSettingsFieldsViewModel.ts | 0 .../settings/useSettingsMetadataViewModel.ts | 0 .../settings/useSettingsQuestionsViewModel.ts | 0 .../settings/useSettingsVectorsViewModel.ts | 0 .../shortcuts/AnnotationHelpShortcut.vue | 0 .../DatasetConfiguration.spec.js | 0 .../configuration/DatasetConfiguration.vue | 0 .../DatasetConfigurationDialog.vue | 0 .../DatasetConfigurationForm.vue | 0 .../DatasetConfigurationMetadataSelector.vue | 0 .../fields/DatasetConfigurationField.vue | 0 .../DatasetConfigurationAddQuestion.vue | 0 .../DatasetConfigurationColumnSelector.vue | 0 .../DatasetConfigurationFieldSelector.vue | 0 .../questions/DatasetConfigurationInput.vue | 0 .../questions/DatasetConfigurationLabels.vue | 0 .../DatasetConfigurationQuestion.vue | 0 .../questions/DatasetConfigurationRanking.vue | 0 .../questions/DatasetConfigurationRating.vue | 0 .../questions/DatasetConfigurationSpan.vue | 0 .../shared/DatasetConfigurationCard.vue | 0 .../DatasetConfigurationChipsSelector.vue | 0 .../shared/DatasetConfigurationSelector.vue | 0 .../configuration/useDatasetConfiguration.ts | 0 .../useDatasetConfigurationForm.ts | 0 ...useDatasetConfigurationNameAndWorkspace.ts | 0 .../features/documents/DocumentsList.vue | 0 .../documents/useDocumentsListViewModel.ts | 0 .../components/features/global/AppHeader.vue | 0 .../PersistentStorageBanner.vue | 0 .../usePersistentStorageViewModel.ts | 0 .../global/user/UserAvatarTooltip.vue | 0 .../global/user/userAvatarTooltipViewModel.ts | 0 .../home/dataset-fields/DatasetFields.vue | 0 .../home/dataset-fields/useDatasetFields.ts | 0 .../home/dataset-list/DatasetCard.vue | 0 .../home/dataset-list/DatasetList.vue | 0 .../home/dataset-list/DatasetListCards.vue | 0 .../dataset-list/sort-filter/DatasetsSort.vue | 0 .../sort-filter/DatasetsSortButton.vue | 0 .../sort-filter/DatasetsSortSelectorItem.vue | 0 .../dataset-list/useDatasetCardViewModel.ts | 0 .../workspaces-filter/WorkspaceSelector.vue | 0 .../workspaces-filter/WorkspacesFilter.vue | 0 .../WorkspacesFilterButton.vue | 0 .../home/dataset-progress/DatasetProgress.vue | 0 .../dataset-questions/DatasetQuestions.vue | 0 .../dataset-questions/useDatasetQuestions.ts | 0 .../home/dataset-total/DatasetTotal.vue | 0 .../home/dataset-users/DatasetUsers.vue | 0 .../home/datasets-empty/DatasetsEmpty.vue | 0 .../home/datasets-empty/DatasetsEmptyCard.vue | 0 .../home/datasets-empty/useDatasetsEmpty.ts | 0 .../features/home/shared/DatasetBadge.vue | 0 .../features/home/shared/UserBadge.vue | 0 .../home/sidebar/ExampleDatasetCard.vue | 0 .../features/home/sidebar/ImportDocuments.vue | 0 .../features/home/sidebar/ImportFromHub.vue | 0 .../home/sidebar/ImportFromPython.vue | 0 .../features/home/sidebar/LinkCard.vue | 0 .../home/sidebar/useImportFromPython.ts | 0 .../import/ImportAnalysisTable.spec.js | 0 .../features/import/ImportAnalysisTable.vue | 0 .../features/import/ImportBatchProgress.vue | 0 .../features/import/ImportFileUpload.vue | 0 .../import/ImportHistoryDataPreview.spec.js | 0 .../import/ImportHistoryDataPreview.vue | 0 .../import/ImportHistoryDetailsModal.vue | 0 .../features/import/ImportHistoryList.vue | 0 .../features/import/ImportModal.spec.js | 0 .../features/import/ImportModal.vue | 0 .../features/import/ImportSummary.vue | 0 .../features/import/RecentImportCard.spec.js | 0 .../features/import/RecentImportCard.vue | 0 .../features/import/RecentImports.spec.js | 0 .../features/import/RecentImports.vue | 0 .../components/features/import/types.ts | 0 .../import/useImportAnalysisViewModel.ts | 0 .../import/useImportBatchProgressViewModel.ts | 0 .../import/useImportHistoryListViewModel.ts | 0 .../import/useRecentImportsViewModel.spec.js | 0 .../import/useRecentImportsViewModel.ts | 0 .../components/features/login/OAuthLogin.vue | 0 .../login/components/DecorationShape.vue | 0 .../features/login/components/HFLogo.vue | 0 .../login/components/HuggingFaceButton.vue | 0 .../login/components/KeycloakLogo.vue | 0 .../login/components/LoginImageBg.vue | 0 .../features/login/components/LoginInput.vue | 0 .../login/components/OAuthLoginButton.vue | 0 .../features/login/useOAuthLoginViewModel.ts | 0 .../user-settings/UserSettingsContent.vue | 0 .../user-settings/UserSettingsHeader.vue | 0 .../user-settings/UserSettingsLanguage.vue | 0 .../user-settings/UserSettingsTheme.vue | 0 .../user-settings/useUserInfoViewModel.ts | 0 .../useUserSettingsLanguageViewModel.ts | 0 .../user-token/UserToken.component.vue | 0 .../dev.frontend.Dockerfile | 14 ++++---- .../docs/conventions.md | 0 .../docs/shortcuts.md | 0 .../docs/snippets/start_page.md | 0 .../docs/structure.md | 0 ...e-can-drag-and-drop-ranking-question-1.png | Bin ...e-can-drag-and-drop-ranking-question-2.png | Bin .../Annotate-page-clear-all-questions-1.png | Bin .../Annotate-page-clear-all-questions-2.png | Bin ...all-questions-and-discard-the-record-1.png | Bin ...-complete-partially-ranking-question-1.png | Bin ...hen-user-no-complete-required-answer-1.png | Bin ...r-by-workspaces-from-annotation-page-1.png | Bin ...n-form-where-there-is-no-in-question-1.png | Bin ...n-form-where-there-is-no-in-question-2.png | Bin ...f-form-and-click-in-a-question-again-1.png | Bin ...f-form-and-click-in-a-question-again-2.png | Bin ...tate-page-go-to-annotation-mode-page-1.png | Bin ...on-when-user-change-suggested-answer-1.png | Bin ...e-page-label-with-just-one-character-1.png | Bin ...gested-answer-and-go-back-to-default-1.png | Bin ...ter-the-metadata-terms-with-keyboard-1.png | Bin ...er-automatically-by-range-with-mouse-1.png | Bin ...e-less-than-prefilled-by-the-backend-4.png | Bin ...e-less-than-prefilled-by-the-backend-3.png | Bin ...ter-the-metadata-terms-with-keyboard-4.png | Bin ...ter-the-metadata-terms-with-keyboard-2.png | Bin ...e-user-just-click-over-term-metadata-1.png | Bin ...e-user-just-click-over-term-metadata-3.png | Bin ...e-less-than-prefilled-by-the-backend-2.png | Bin ...e-user-just-click-over-term-metadata-5.png | Bin ...e-user-just-click-over-term-metadata-2.png | Bin ...er-automatically-by-range-with-mouse-3.png | Bin ...e-user-just-click-over-term-metadata-4.png | Bin ...er-automatically-by-range-with-mouse-2.png | Bin ...ter-the-metadata-terms-with-keyboard-3.png | Bin ...e-less-than-prefilled-by-the-backend-1.png | Bin ...dataFilters-See-the-metadata-filters-1.png | Bin ...dataFilters-See-the-metadata-filters-2.png | Bin ...ing-See-the-metadata-sorting-options-1.png | Bin ...orting-The-user-can-sort-by-metadata-1.png | Bin ...orting-The-user-can-sort-by-metadata-2.png | Bin ...-focus-is-on-a-singleLabel-Component-2.png | Bin ...n-focus-is-on-a-multiLabel-Component-1.png | Bin ...t-is-editing-the-user-can-not-submit-2.png | Bin ...-focus-is-on-a-singleLabel-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-1.png | Bin ...t-and-the-user-applied-the-read-mode-2.png | Bin ...t-and-the-user-applied-the-read-mode-1.png | Bin ...t-and-the-user-applied-the-read-mode-1.png | Bin ...-is-editing-the-user-can-not-discard-1.png | Bin ...-is-editing-the-user-can-not-discard-2.png | Bin ...n-focus-is-on-a-multiLabel-Component-2.png | Bin ...-focus-is-on-a-singleLabel-Component-2.png | Bin ...ut-is-editing-the-user-can-not-clear-2.png | Bin ...-When-focus-is-on-a-rating-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-2.png | Bin ...-focus-is-on-a-singleLabel-Component-1.png | Bin ...-When-focus-is-on-a-rating-Component-2.png | Bin ...t-is-editing-the-user-can-not-submit-1.png | Bin ...-focus-is-on-a-singleLabel-Component-2.png | Bin ...ut-is-editing-the-user-can-not-clear-1.png | Bin ...t-and-the-user-applied-the-read-mode-1.png | Bin ...t-and-the-user-applied-the-read-mode-2.png | Bin ...-focus-is-on-a-singleLabel-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-2.png | Bin ...t-and-the-user-applied-the-read-mode-2.png | Bin ...-When-focus-is-on-a-rating-Component-1.png | Bin ...-When-focus-is-on-a-rating-Component-2.png | Bin ...-When-focus-is-on-a-rating-Component-1.png | Bin ...-When-focus-is-on-a-rating-Component-2.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-1.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-2.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-3.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-2.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-2.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-1.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-1.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-3.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-2.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-1.png | Bin ...press-Tab-to-focus-on-first-question-2.png | Bin ...press-Tab-to-focus-on-first-question-1.png | Bin ...hen-the-user-try-to-find-other-label-1.png | Bin ...hen-the-user-try-to-find-other-label-2.png | Bin ...component-go-to-multilabel-component-1.png | Bin ...t-question-with-shift-and-arrow-down-1.png | Bin ...ous-question-with-shift-and-arrow-up-1.png | Bin ...s-a-loop-inside-multilabel-component-1.png | Bin ...s-in-ranking-component-with-keyboard-1.png | Bin ...o-to-ranking-component-with-keyboard-1.png | Bin ...-with-some-ranked-and-other-unranked-1.png | Bin ...-with-some-ranked-and-other-unranked-3.png | Bin ...-with-some-ranked-and-other-unranked-4.png | Bin ...-with-some-ranked-and-other-unranked-2.png | Bin ...-move-as-a-loop-in-ranking-component-1.png | Bin ...-move-as-a-loop-in-ranking-component-2.png | Bin ...-move-as-a-loop-in-ranking-component-3.png | Bin ...-move-as-a-loop-in-ranking-component-4.png | Bin ...onent-order-ranking-question-options-1.png | Bin ...ent-reorder-ranking-question-options-1.png | Bin ...reset-order-ranking-question-options-1.png | Bin ...lots-clear-form-answers-after-unrank-1.png | Bin ...lots-clear-form-answers-after-unrank-2.png | Bin ...o-to-ranking-component-with-keyboard-1.png | Bin ...2-slots-move-to-slot-1-by-pressing-1-1.png | Bin ...slots-move-to-slot-10-by-pressing-10-1.png | Bin ...slots-move-to-slot-11-by-pressing-11-1.png | Bin ...slots-move-to-slot-12-by-pressing-12-1.png | Bin ...ank-a-question-by-pressing-Backspace-1.png | Bin ...ank-a-question-by-pressing-Backspace-2.png | Bin ...and-press-Space-to-select-this-value-1.png | Bin ...and-press-Space-to-select-this-value-1.png | Bin ...and-press-Space-to-select-this-value-2.png | Bin ...and-press-Space-to-select-this-value-2.png | Bin ...go-to-rating-component-with-keyboard-1.png | Bin ...select-the-value-previously-selected-1.png | Bin ...select-the-value-previously-selected-2.png | Bin ...select-the-value-previously-selected-3.png | Bin ...rd-automatically-go-to-next-question-1.png | Bin ...on-go-automatically-to-next-question-1.png | Bin ...if-the-user-press-twice-the-same-key-1.png | Bin ...ot-rating-if-press-any-non-digit-key-1.png | Bin ...go-to-rating-component-with-keyboard-1.png | Bin ...rating-a-question-too-fast-key-press-1.png | Bin ...rating-a-question-too-fast-key-press-2.png | Bin ...rating-a-question-too-fast-key-press-3.png | Bin ...rating-a-question-too-fast-key-press-4.png | Bin ...options-rating-value-1-by-pressing-1-1.png | Bin ...tions-rating-value-10-by-pressing-10-1.png | Bin ...options-rating-value-5-by-pressing-5-1.png | Bin ...ions-rating-with-non-existing-number-1.png | Bin ...user-can-not-rating-with-invalid-key-1.png | Bin ...-user-can-not-rating-with-value-zero-1.png | Bin ...-Shortcuts-panel-open-shortcut-panel-1.png | Bin ...on-and-select-one-pressing-Space-key-1.png | Bin ...tion-when-user-click-in-other-option-1.png | Bin ...e-component-expand-collapsable-label-1.png | Bin ...t-question-with-shift-and-arrow-down-1.png | Bin ...ous-question-with-shift-and-arrow-up-1.png | Bin ...the-user-move-as-a-loop-with-tab-key-1.png | Bin ...-search-bar-and-can-update-this-text-1.png | Bin ...ery-and-discard-with-shift-backspace-1.png | Bin ...ch-query-and-submit-with-shift-enter-1.png | Bin ...ch-query-and-submit-with-shift-enter-3.png | Bin ...ch-query-and-submit-with-shift-enter-2.png | Bin ...ery-and-discard-with-shift-backspace-2.png | Bin ...-search-bar-and-can-update-this-text-3.png | Bin ...ery-and-discard-with-shift-backspace-3.png | Bin ...ery-and-discard-with-shift-backspace-4.png | Bin ...-search-bar-and-can-update-this-text-2.png | Bin ...ch-query-and-submit-with-shift-enter-4.png | Bin ...ically-to-search-bar-and-filter-data-1.png | Bin ...o-to-previous-question-with-keyboard-1.png | Bin ...t-go-to-text-component-with-keyboard-1.png | Bin ...-without-execute-any-global-shortcut-1.png | Bin ...nt-the-user-want-to-edit-again-focus-1.png | Bin ...mponent-the-user-want-to-loose-focus-1.png | Bin ...-Shortcuts-panel-open-shortcut-panel-1.png | Bin ...rd-after-2-seconds-should-be-pending-1.png | Bin ...rd-after-2-seconds-should-be-pending-2.png | Bin ...rd-after-2-seconds-should-be-pending-3.png | Bin ...er-try-to-go-to-next-record-NO-alert-1.png | Bin ...try-to-refresh-from-sidebar-NO-alert-1.png | Bin ...try-to-refresh-from-sidebar-NO-alert-2.png | Bin ...-try-to-go-to-settings-page-NO-alert-2.png | Bin ...er-try-to-go-to-next-record-NO-alert-3.png | Bin ...-try-to-go-to-settings-page-NO-alert-1.png | Bin ...er-try-to-go-to-next-record-NO-alert-2.png | Bin ...-try-to-go-to-settings-page-NO-alert-3.png | Bin ...try-to-refresh-from-sidebar-NO-alert-3.png | Bin ...user-try-to-go-to-home-page-NO-alert-1.png | Bin ...user-try-to-go-to-home-page-NO-alert-2.png | Bin ...user-try-to-go-to-home-page-NO-alert-3.png | Bin ...previous-record-show-updated-answers-1.png | Bin ...previous-record-show-updated-answers-2.png | Bin ...previous-record-show-updated-answers-3.png | Bin ...3-seconds-we-can-see-the-saved-label-1.png | Bin ...3-seconds-we-can-see-the-saved-label-2.png | Bin ...3-seconds-we-can-see-the-saved-label-3.png | Bin ...itted-record-and-go-to-settings-page-2.png | Bin ...itted-record-and-go-to-settings-page-3.png | Bin ...ubmitted-record-and-refresh-the-page-3.png | Bin ...ubmitted-record-and-refresh-the-page-1.png | Bin ...ubmitted-record-and-refresh-the-page-2.png | Bin ...itted-record-and-go-to-settings-page-1.png | Bin ...ed-a-submitted-record-and-go-to-home-1.png | Bin ...ed-a-submitted-record-and-go-to-home-2.png | Bin ...ed-a-submitted-record-and-go-to-home-3.png | Bin ...bmitted-record-and-go-to-next-record-6.png | Bin ...bmitted-record-and-go-to-next-record-3.png | Bin ...bmitted-record-and-go-to-next-record-5.png | Bin ...bmitted-record-and-go-to-next-record-1.png | Bin ...bmitted-record-and-go-to-next-record-2.png | Bin ...bmitted-record-and-go-to-next-record-4.png | Bin ...the-submitted-record-see-the-toaster-1.png | Bin ...the-submitted-record-see-the-toaster-2.png | Bin ...ged-submitted-record-see-the-toaster-3.png | Bin ...ged-submitted-record-see-the-toaster-2.png | Bin ...ged-submitted-record-see-the-toaster-1.png | Bin ...-the-record-have-the-initial-answers-2.png | Bin ...-the-record-have-the-initial-answers-3.png | Bin ...-the-record-have-the-initial-answers-1.png | Bin ...-the-record-have-the-initial-answers-4.png | Bin ...-the-record-have-the-initial-answers-5.png | Bin ...e-can-drag-and-drop-ranking-question-1.png | Bin ...e-can-drag-and-drop-ranking-question-2.png | Bin .../Annotate-page-clear-all-questions-1.png | Bin .../Annotate-page-clear-all-questions-2.png | Bin ...all-questions-and-discard-the-record-1.png | Bin ...-complete-partially-ranking-question-1.png | Bin ...hen-user-no-complete-required-answer-1.png | Bin ...r-by-workspaces-from-annotation-page-1.png | Bin ...n-form-where-there-is-no-in-question-1.png | Bin ...n-form-where-there-is-no-in-question-2.png | Bin ...f-form-and-click-in-a-question-again-1.png | Bin ...f-form-and-click-in-a-question-again-2.png | Bin ...tate-page-go-to-annotation-mode-page-1.png | Bin ...on-when-user-change-suggested-answer-1.png | Bin ...e-page-label-with-just-one-character-1.png | Bin ...gested-answer-and-go-back-to-default-1.png | Bin ...ter-the-metadata-terms-with-keyboard-1.png | Bin ...er-automatically-by-range-with-mouse-1.png | Bin ...e-less-than-prefilled-by-the-backend-4.png | Bin ...e-less-than-prefilled-by-the-backend-3.png | Bin ...ter-the-metadata-terms-with-keyboard-4.png | Bin ...ter-the-metadata-terms-with-keyboard-2.png | Bin ...e-user-just-click-over-term-metadata-1.png | Bin ...e-user-just-click-over-term-metadata-3.png | Bin ...e-less-than-prefilled-by-the-backend-2.png | Bin ...e-user-just-click-over-term-metadata-5.png | Bin ...e-user-just-click-over-term-metadata-2.png | Bin ...er-automatically-by-range-with-mouse-3.png | Bin ...e-user-just-click-over-term-metadata-4.png | Bin ...er-automatically-by-range-with-mouse-2.png | Bin ...ter-the-metadata-terms-with-keyboard-3.png | Bin ...e-less-than-prefilled-by-the-backend-1.png | Bin ...dataFilters-See-the-metadata-filters-1.png | Bin ...dataFilters-See-the-metadata-filters-2.png | Bin ...ing-See-the-metadata-sorting-options-1.png | Bin ...orting-The-user-can-sort-by-metadata-1.png | Bin ...orting-The-user-can-sort-by-metadata-2.png | Bin ...-focus-is-on-a-singleLabel-Component-2.png | Bin ...n-focus-is-on-a-multiLabel-Component-1.png | Bin ...t-is-editing-the-user-can-not-submit-2.png | Bin ...-focus-is-on-a-singleLabel-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-1.png | Bin ...t-and-the-user-applied-the-read-mode-2.png | Bin ...t-and-the-user-applied-the-read-mode-1.png | Bin ...t-and-the-user-applied-the-read-mode-1.png | Bin ...-is-editing-the-user-can-not-discard-1.png | Bin ...-is-editing-the-user-can-not-discard-2.png | Bin ...n-focus-is-on-a-multiLabel-Component-2.png | Bin ...-focus-is-on-a-singleLabel-Component-2.png | Bin ...ut-is-editing-the-user-can-not-clear-2.png | Bin ...-When-focus-is-on-a-rating-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-2.png | Bin ...-focus-is-on-a-singleLabel-Component-1.png | Bin ...-When-focus-is-on-a-rating-Component-2.png | Bin ...t-is-editing-the-user-can-not-submit-1.png | Bin ...-focus-is-on-a-singleLabel-Component-2.png | Bin ...ut-is-editing-the-user-can-not-clear-1.png | Bin ...t-and-the-user-applied-the-read-mode-1.png | Bin ...t-and-the-user-applied-the-read-mode-2.png | Bin ...-focus-is-on-a-singleLabel-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-2.png | Bin ...t-and-the-user-applied-the-read-mode-2.png | Bin ...-When-focus-is-on-a-rating-Component-1.png | Bin ...-When-focus-is-on-a-rating-Component-2.png | Bin ...-When-focus-is-on-a-rating-Component-1.png | Bin ...-When-focus-is-on-a-rating-Component-2.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-1.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-2.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-3.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-2.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-2.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-1.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-1.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-3.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-2.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-1.png | Bin ...press-Tab-to-focus-on-first-question-2.png | Bin ...press-Tab-to-focus-on-first-question-1.png | Bin ...hen-the-user-try-to-find-other-label-1.png | Bin ...hen-the-user-try-to-find-other-label-2.png | Bin ...component-go-to-multilabel-component-1.png | Bin ...t-question-with-shift-and-arrow-down-1.png | Bin ...ous-question-with-shift-and-arrow-up-1.png | Bin ...s-a-loop-inside-multilabel-component-1.png | Bin ...s-in-ranking-component-with-keyboard-1.png | Bin ...o-to-ranking-component-with-keyboard-1.png | Bin ...-with-some-ranked-and-other-unranked-1.png | Bin ...-with-some-ranked-and-other-unranked-3.png | Bin ...-with-some-ranked-and-other-unranked-4.png | Bin ...-with-some-ranked-and-other-unranked-2.png | Bin ...-move-as-a-loop-in-ranking-component-1.png | Bin ...-move-as-a-loop-in-ranking-component-2.png | Bin ...-move-as-a-loop-in-ranking-component-3.png | Bin ...-move-as-a-loop-in-ranking-component-4.png | Bin ...onent-order-ranking-question-options-1.png | Bin ...ent-reorder-ranking-question-options-1.png | Bin ...reset-order-ranking-question-options-1.png | Bin ...lots-clear-form-answers-after-unrank-1.png | Bin ...lots-clear-form-answers-after-unrank-2.png | Bin ...o-to-ranking-component-with-keyboard-1.png | Bin ...2-slots-move-to-slot-1-by-pressing-1-1.png | Bin ...slots-move-to-slot-10-by-pressing-10-1.png | Bin ...slots-move-to-slot-11-by-pressing-11-1.png | Bin ...slots-move-to-slot-11-by-pressing-11-2.png | Bin ...slots-move-to-slot-12-by-pressing-12-1.png | Bin ...ank-a-question-by-pressing-Backspace-1.png | Bin ...ank-a-question-by-pressing-Backspace-2.png | Bin ...and-press-Space-to-select-this-value-1.png | Bin ...and-press-Space-to-select-this-value-1.png | Bin ...and-press-Space-to-select-this-value-2.png | Bin ...and-press-Space-to-select-this-value-2.png | Bin ...go-to-rating-component-with-keyboard-1.png | Bin ...select-the-value-previously-selected-1.png | Bin ...select-the-value-previously-selected-2.png | Bin ...select-the-value-previously-selected-3.png | Bin ...rd-automatically-go-to-next-question-1.png | Bin ...on-go-automatically-to-next-question-1.png | Bin ...if-the-user-press-twice-the-same-key-1.png | Bin ...ot-rating-if-press-any-non-digit-key-1.png | Bin ...go-to-rating-component-with-keyboard-1.png | Bin ...rating-a-question-too-fast-key-press-1.png | Bin ...rating-a-question-too-fast-key-press-2.png | Bin ...rating-a-question-too-fast-key-press-3.png | Bin ...rating-a-question-too-fast-key-press-4.png | Bin ...options-rating-value-1-by-pressing-1-1.png | Bin ...tions-rating-value-10-by-pressing-10-1.png | Bin ...options-rating-value-5-by-pressing-5-1.png | Bin ...ions-rating-with-non-existing-number-1.png | Bin ...user-can-not-rating-with-invalid-key-1.png | Bin ...-user-can-not-rating-with-value-zero-1.png | Bin ...-Shortcuts-panel-open-shortcut-panel-1.png | Bin ...on-and-select-one-pressing-Space-key-1.png | Bin ...tion-when-user-click-in-other-option-1.png | Bin ...e-component-expand-collapsable-label-1.png | Bin ...t-question-with-shift-and-arrow-down-1.png | Bin ...ous-question-with-shift-and-arrow-up-1.png | Bin ...the-user-move-as-a-loop-with-tab-key-1.png | Bin ...-search-bar-and-can-update-this-text-1.png | Bin ...ery-and-discard-with-shift-backspace-1.png | Bin ...ch-query-and-submit-with-shift-enter-1.png | Bin ...ch-query-and-submit-with-shift-enter-3.png | Bin ...ch-query-and-submit-with-shift-enter-2.png | Bin ...ery-and-discard-with-shift-backspace-2.png | Bin ...-search-bar-and-can-update-this-text-3.png | Bin ...ery-and-discard-with-shift-backspace-3.png | Bin ...ery-and-discard-with-shift-backspace-4.png | Bin ...-search-bar-and-can-update-this-text-2.png | Bin ...ch-query-and-submit-with-shift-enter-4.png | Bin ...ically-to-search-bar-and-filter-data-1.png | Bin ...o-to-previous-question-with-keyboard-1.png | Bin ...t-go-to-text-component-with-keyboard-1.png | Bin ...-without-execute-any-global-shortcut-1.png | Bin ...nt-the-user-want-to-edit-again-focus-1.png | Bin ...mponent-the-user-want-to-loose-focus-1.png | Bin ...-Shortcuts-panel-open-shortcut-panel-1.png | Bin ...rd-after-2-seconds-should-be-pending-1.png | Bin ...rd-after-2-seconds-should-be-pending-2.png | Bin ...rd-after-2-seconds-should-be-pending-3.png | Bin ...er-try-to-go-to-next-record-NO-alert-1.png | Bin ...try-to-refresh-from-sidebar-NO-alert-1.png | Bin ...try-to-refresh-from-sidebar-NO-alert-2.png | Bin ...-try-to-go-to-settings-page-NO-alert-2.png | Bin ...er-try-to-go-to-next-record-NO-alert-3.png | Bin ...-try-to-go-to-settings-page-NO-alert-1.png | Bin ...er-try-to-go-to-next-record-NO-alert-2.png | Bin ...-try-to-go-to-settings-page-NO-alert-3.png | Bin ...try-to-refresh-from-sidebar-NO-alert-3.png | Bin ...user-try-to-go-to-home-page-NO-alert-1.png | Bin ...user-try-to-go-to-home-page-NO-alert-2.png | Bin ...user-try-to-go-to-home-page-NO-alert-3.png | Bin ...previous-record-show-updated-answers-1.png | Bin ...previous-record-show-updated-answers-2.png | Bin ...previous-record-show-updated-answers-3.png | Bin ...3-seconds-we-can-see-the-saved-label-1.png | Bin ...3-seconds-we-can-see-the-saved-label-2.png | Bin ...3-seconds-we-can-see-the-saved-label-3.png | Bin ...itted-record-and-go-to-settings-page-2.png | Bin ...itted-record-and-go-to-settings-page-3.png | Bin ...ubmitted-record-and-refresh-the-page-3.png | Bin ...ubmitted-record-and-refresh-the-page-1.png | Bin ...ubmitted-record-and-refresh-the-page-2.png | Bin ...itted-record-and-go-to-settings-page-1.png | Bin ...ed-a-submitted-record-and-go-to-home-1.png | Bin ...ed-a-submitted-record-and-go-to-home-2.png | Bin ...ed-a-submitted-record-and-go-to-home-3.png | Bin ...bmitted-record-and-go-to-next-record-6.png | Bin ...bmitted-record-and-go-to-next-record-3.png | Bin ...bmitted-record-and-go-to-next-record-5.png | Bin ...bmitted-record-and-go-to-next-record-1.png | Bin ...bmitted-record-and-go-to-next-record-2.png | Bin ...bmitted-record-and-go-to-next-record-4.png | Bin ...the-submitted-record-see-the-toaster-1.png | Bin ...the-submitted-record-see-the-toaster-2.png | Bin ...ged-submitted-record-see-the-toaster-3.png | Bin ...ged-submitted-record-see-the-toaster-2.png | Bin ...ged-submitted-record-see-the-toaster-1.png | Bin ...-the-record-have-the-initial-answers-2.png | Bin ...-the-record-have-the-initial-answers-3.png | Bin ...-the-record-have-the-initial-answers-1.png | Bin ...-the-record-have-the-initial-answers-4.png | Bin ...-the-record-have-the-initial-answers-5.png | Bin ...e-can-drag-and-drop-ranking-question-1.png | Bin ...e-can-drag-and-drop-ranking-question-2.png | Bin .../Annotate-page-clear-all-questions-1.png | Bin .../Annotate-page-clear-all-questions-2.png | Bin ...all-questions-and-discard-the-record-1.png | Bin ...-complete-partially-ranking-question-1.png | Bin ...hen-user-no-complete-required-answer-1.png | Bin ...r-by-workspaces-from-annotation-page-1.png | Bin ...n-form-where-there-is-no-in-question-1.png | Bin ...n-form-where-there-is-no-in-question-2.png | Bin ...f-form-and-click-in-a-question-again-1.png | Bin ...f-form-and-click-in-a-question-again-2.png | Bin ...tate-page-go-to-annotation-mode-page-1.png | Bin ...on-when-user-change-suggested-answer-1.png | Bin ...e-page-label-with-just-one-character-1.png | Bin ...gested-answer-and-go-back-to-default-1.png | Bin ...ter-the-metadata-terms-with-keyboard-1.png | Bin ...er-automatically-by-range-with-mouse-1.png | Bin ...e-less-than-prefilled-by-the-backend-4.png | Bin ...e-less-than-prefilled-by-the-backend-3.png | Bin ...ter-the-metadata-terms-with-keyboard-4.png | Bin ...ter-the-metadata-terms-with-keyboard-2.png | Bin ...e-user-just-click-over-term-metadata-1.png | Bin ...e-user-just-click-over-term-metadata-3.png | Bin ...e-less-than-prefilled-by-the-backend-2.png | Bin ...e-user-just-click-over-term-metadata-5.png | Bin ...e-user-just-click-over-term-metadata-2.png | Bin ...er-automatically-by-range-with-mouse-3.png | Bin ...e-user-just-click-over-term-metadata-4.png | Bin ...er-automatically-by-range-with-mouse-2.png | Bin ...ter-the-metadata-terms-with-keyboard-3.png | Bin ...e-less-than-prefilled-by-the-backend-1.png | Bin ...dataFilters-See-the-metadata-filters-1.png | Bin ...dataFilters-See-the-metadata-filters-2.png | Bin ...ing-See-the-metadata-sorting-options-1.png | Bin ...orting-The-user-can-sort-by-metadata-1.png | Bin ...orting-The-user-can-sort-by-metadata-2.png | Bin ...-focus-is-on-a-singleLabel-Component-2.png | Bin ...n-focus-is-on-a-multiLabel-Component-1.png | Bin ...t-is-editing-the-user-can-not-submit-2.png | Bin ...-focus-is-on-a-singleLabel-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-1.png | Bin ...t-and-the-user-applied-the-read-mode-2.png | Bin ...t-and-the-user-applied-the-read-mode-1.png | Bin ...t-and-the-user-applied-the-read-mode-1.png | Bin ...-is-editing-the-user-can-not-discard-1.png | Bin ...-is-editing-the-user-can-not-discard-2.png | Bin ...n-focus-is-on-a-multiLabel-Component-2.png | Bin ...-focus-is-on-a-singleLabel-Component-2.png | Bin ...ut-is-editing-the-user-can-not-clear-2.png | Bin ...-When-focus-is-on-a-rating-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-2.png | Bin ...-focus-is-on-a-singleLabel-Component-1.png | Bin ...-When-focus-is-on-a-rating-Component-2.png | Bin ...t-is-editing-the-user-can-not-submit-1.png | Bin ...-focus-is-on-a-singleLabel-Component-2.png | Bin ...ut-is-editing-the-user-can-not-clear-1.png | Bin ...t-and-the-user-applied-the-read-mode-1.png | Bin ...t-and-the-user-applied-the-read-mode-2.png | Bin ...-focus-is-on-a-singleLabel-Component-1.png | Bin ...n-focus-is-on-a-multiLabel-Component-2.png | Bin ...t-and-the-user-applied-the-read-mode-2.png | Bin ...-When-focus-is-on-a-rating-Component-1.png | Bin ...-When-focus-is-on-a-rating-Component-2.png | Bin ...-When-focus-is-on-a-rating-Component-1.png | Bin ...-When-focus-is-on-a-rating-Component-2.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-1.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-2.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-3.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-2.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-2.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-1.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-1.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-3.png | Bin ...ev-record-by-pressing-Ctrl-ArrowLeft-2.png | Bin ...t-record-by-pressing-Ctrl-ArrowRight-1.png | Bin ...press-Tab-to-focus-on-first-question-2.png | Bin ...press-Tab-to-focus-on-first-question-1.png | Bin ...hen-the-user-try-to-find-other-label-1.png | Bin ...hen-the-user-try-to-find-other-label-2.png | Bin ...component-go-to-multilabel-component-1.png | Bin ...t-question-with-shift-and-arrow-down-1.png | Bin ...ous-question-with-shift-and-arrow-up-1.png | Bin ...s-a-loop-inside-multilabel-component-1.png | Bin ...s-in-ranking-component-with-keyboard-1.png | Bin ...o-to-ranking-component-with-keyboard-1.png | Bin ...-with-some-ranked-and-other-unranked-1.png | Bin ...-with-some-ranked-and-other-unranked-3.png | Bin ...-with-some-ranked-and-other-unranked-4.png | Bin ...-with-some-ranked-and-other-unranked-2.png | Bin ...-move-as-a-loop-in-ranking-component-1.png | Bin ...-move-as-a-loop-in-ranking-component-2.png | Bin ...-move-as-a-loop-in-ranking-component-3.png | Bin ...-move-as-a-loop-in-ranking-component-4.png | Bin ...onent-order-ranking-question-options-1.png | Bin ...ent-reorder-ranking-question-options-1.png | Bin ...reset-order-ranking-question-options-1.png | Bin ...lots-clear-form-answers-after-unrank-1.png | Bin ...lots-clear-form-answers-after-unrank-2.png | Bin ...o-to-ranking-component-with-keyboard-1.png | Bin ...2-slots-move-to-slot-1-by-pressing-1-1.png | Bin ...slots-move-to-slot-10-by-pressing-10-1.png | Bin ...slots-move-to-slot-11-by-pressing-11-1.png | Bin ...slots-move-to-slot-12-by-pressing-12-1.png | Bin ...slots-move-to-slot-12-by-pressing-12-2.png | Bin ...ank-a-question-by-pressing-Backspace-1.png | Bin ...ank-a-question-by-pressing-Backspace-2.png | Bin ...and-press-Space-to-select-this-value-1.png | Bin ...and-press-Space-to-select-this-value-1.png | Bin ...and-press-Space-to-select-this-value-2.png | Bin ...and-press-Space-to-select-this-value-2.png | Bin ...go-to-rating-component-with-keyboard-1.png | Bin ...select-the-value-previously-selected-1.png | Bin ...select-the-value-previously-selected-2.png | Bin ...select-the-value-previously-selected-3.png | Bin ...rd-automatically-go-to-next-question-1.png | Bin ...on-go-automatically-to-next-question-1.png | Bin ...if-the-user-press-twice-the-same-key-1.png | Bin ...ot-rating-if-press-any-non-digit-key-1.png | Bin ...go-to-rating-component-with-keyboard-1.png | Bin ...rating-a-question-too-fast-key-press-1.png | Bin ...rating-a-question-too-fast-key-press-2.png | Bin ...rating-a-question-too-fast-key-press-3.png | Bin ...rating-a-question-too-fast-key-press-4.png | Bin ...options-rating-value-1-by-pressing-1-1.png | Bin ...tions-rating-value-10-by-pressing-10-1.png | Bin ...options-rating-value-5-by-pressing-5-1.png | Bin ...ions-rating-with-non-existing-number-1.png | Bin ...user-can-not-rating-with-invalid-key-1.png | Bin ...-user-can-not-rating-with-value-zero-1.png | Bin ...-Shortcuts-panel-open-shortcut-panel-1.png | Bin ...on-and-select-one-pressing-Space-key-1.png | Bin ...tion-when-user-click-in-other-option-1.png | Bin ...e-component-expand-collapsable-label-1.png | Bin ...t-question-with-shift-and-arrow-down-1.png | Bin ...ous-question-with-shift-and-arrow-up-1.png | Bin ...the-user-move-as-a-loop-with-tab-key-1.png | Bin ...-search-bar-and-can-update-this-text-1.png | Bin ...ery-and-discard-with-shift-backspace-1.png | Bin ...ch-query-and-submit-with-shift-enter-1.png | Bin ...ch-query-and-submit-with-shift-enter-3.png | Bin ...ch-query-and-submit-with-shift-enter-2.png | Bin ...ery-and-discard-with-shift-backspace-2.png | Bin ...-search-bar-and-can-update-this-text-3.png | Bin ...ery-and-discard-with-shift-backspace-3.png | Bin ...ery-and-discard-with-shift-backspace-4.png | Bin ...-search-bar-and-can-update-this-text-2.png | Bin ...ch-query-and-submit-with-shift-enter-4.png | Bin ...ically-to-search-bar-and-filter-data-1.png | Bin ...o-to-previous-question-with-keyboard-1.png | Bin ...t-go-to-text-component-with-keyboard-1.png | Bin ...-without-execute-any-global-shortcut-1.png | Bin ...nt-the-user-want-to-edit-again-focus-1.png | Bin ...mponent-the-user-want-to-loose-focus-1.png | Bin ...-Shortcuts-panel-open-shortcut-panel-1.png | Bin ...rd-after-2-seconds-should-be-pending-1.png | Bin ...rd-after-2-seconds-should-be-pending-2.png | Bin ...rd-after-2-seconds-should-be-pending-3.png | Bin ...er-try-to-go-to-next-record-NO-alert-1.png | Bin ...try-to-refresh-from-sidebar-NO-alert-1.png | Bin ...try-to-refresh-from-sidebar-NO-alert-2.png | Bin ...-try-to-go-to-settings-page-NO-alert-2.png | Bin ...er-try-to-go-to-next-record-NO-alert-3.png | Bin ...-try-to-go-to-settings-page-NO-alert-1.png | Bin ...er-try-to-go-to-next-record-NO-alert-2.png | Bin ...-try-to-go-to-settings-page-NO-alert-3.png | Bin ...try-to-refresh-from-sidebar-NO-alert-3.png | Bin ...user-try-to-go-to-home-page-NO-alert-1.png | Bin ...user-try-to-go-to-home-page-NO-alert-2.png | Bin ...user-try-to-go-to-home-page-NO-alert-3.png | Bin ...previous-record-show-updated-answers-1.png | Bin ...previous-record-show-updated-answers-2.png | Bin ...previous-record-show-updated-answers-3.png | Bin ...3-seconds-we-can-see-the-saved-label-1.png | Bin ...3-seconds-we-can-see-the-saved-label-2.png | Bin ...3-seconds-we-can-see-the-saved-label-3.png | Bin ...itted-record-and-go-to-settings-page-2.png | Bin ...itted-record-and-go-to-settings-page-3.png | Bin ...ubmitted-record-and-refresh-the-page-3.png | Bin ...ubmitted-record-and-refresh-the-page-1.png | Bin ...ubmitted-record-and-refresh-the-page-2.png | Bin ...itted-record-and-go-to-settings-page-1.png | Bin ...ed-a-submitted-record-and-go-to-home-1.png | Bin ...ed-a-submitted-record-and-go-to-home-2.png | Bin ...ed-a-submitted-record-and-go-to-home-3.png | Bin ...bmitted-record-and-go-to-next-record-6.png | Bin ...bmitted-record-and-go-to-next-record-3.png | Bin ...bmitted-record-and-go-to-next-record-5.png | Bin ...bmitted-record-and-go-to-next-record-1.png | Bin ...bmitted-record-and-go-to-next-record-2.png | Bin ...bmitted-record-and-go-to-next-record-4.png | Bin ...the-submitted-record-see-the-toaster-1.png | Bin ...the-submitted-record-see-the-toaster-2.png | Bin ...ged-submitted-record-see-the-toaster-3.png | Bin ...ged-submitted-record-see-the-toaster-2.png | Bin ...ged-submitted-record-see-the-toaster-1.png | Bin ...-the-record-have-the-initial-answers-2.png | Bin ...-the-record-have-the-initial-answers-3.png | Bin ...-the-record-have-the-initial-answers-1.png | Bin ...-the-record-have-the-initial-answers-4.png | Bin ...-the-record-have-the-initial-answers-5.png | Bin .../annotation-mode.page.spec.ts | 0 .../autosave-annotation-mode.page.spec.ts | 0 .../goToAnnotationPage.ts | 0 .../mac-annotation-mode.page.spec.ts | 0 ...s-and-sorting-annotation-mode.page.spec.ts | 0 .../e2e/common/dataset-api-mock.ts | 0 .../e2e/common/field-api-mock.ts | 0 .../e2e/common/import-api-mock.ts | 0 .../e2e/common/index.ts | 0 .../e2e/common/login-and-wait-for.ts | 0 .../e2e/common/metadata-api-mock.ts | 0 .../e2e/common/question-api-mock.ts | 0 .../e2e/common/record-api-mock.ts | 0 ...-the-information-tab-with-basic-info-1.png | Bin ...b-delete-dataset-but-cancel-deletion-1.png | Bin ...b-delete-dataset-but-cancel-deletion-2.png | Bin ...b-delete-dataset-but-cancel-deletion-3.png | Bin ...er-zone-tab-delete-dataset-correctly-1.png | Bin ...er-zone-tab-delete-dataset-correctly-2.png | Bin ...er-zone-tab-delete-dataset-correctly-3.png | Bin ...r-zone-tab-delete-dataset-with-error-1.png | Bin ...r-zone-tab-delete-dataset-with-error-2.png | Bin ...r-zone-tab-delete-dataset-with-error-3.png | Bin .../Dataset-setting-page-fields-tab-1.png | Bin ...-updated-guidelines-from-Preview-tab-1.png | Bin ...-updated-guidelines-from-Preview-tab-2.png | Bin ...el-updated-guidelines-from-Write-tab-1.png | Bin ...el-updated-guidelines-from-Write-tab-2.png | Bin ...ge-information-tab-update-guidelines-1.png | Bin ...ge-information-tab-update-guidelines-2.png | Bin ...ge-information-tab-update-guidelines-3.png | Bin ...iption-is-bigger-than-500-characters-1.png | Bin ...-title-is-bigger-than-200-characters-1.png | Bin ...le-label-change-question-description-1.png | Bin ...b-Single-label-change-question-title-1.png | Bin ...abel-change-question-visible-options-1.png | Bin ...abel-change-question-visible-options-2.png | Bin ...quired-error-when-the-title-is-empty-1.png | Bin ...omponent-change-question-description-1.png | Bin ...Text-component-change-question-title-1.png | Bin ...mponent-change-question-use-markdown-1.png | Bin ...mponent-change-question-use-markdown-2.png | Bin ...-the-information-tab-with-basic-info-1.png | Bin ...b-delete-dataset-but-cancel-deletion-1.png | Bin ...b-delete-dataset-but-cancel-deletion-2.png | Bin ...b-delete-dataset-but-cancel-deletion-3.png | Bin ...er-zone-tab-delete-dataset-correctly-1.png | Bin ...er-zone-tab-delete-dataset-correctly-2.png | Bin ...er-zone-tab-delete-dataset-correctly-3.png | Bin ...r-zone-tab-delete-dataset-with-error-1.png | Bin ...r-zone-tab-delete-dataset-with-error-2.png | Bin ...r-zone-tab-delete-dataset-with-error-3.png | Bin .../Dataset-setting-page-fields-tab-1.png | Bin ...-updated-guidelines-from-Preview-tab-1.png | Bin ...-updated-guidelines-from-Preview-tab-2.png | Bin ...el-updated-guidelines-from-Write-tab-1.png | Bin ...el-updated-guidelines-from-Write-tab-2.png | Bin ...ge-information-tab-update-guidelines-1.png | Bin ...ge-information-tab-update-guidelines-2.png | Bin ...ge-information-tab-update-guidelines-3.png | Bin ...iption-is-bigger-than-500-characters-1.png | Bin ...-title-is-bigger-than-200-characters-1.png | Bin ...le-label-change-question-description-1.png | Bin ...b-Single-label-change-question-title-1.png | Bin ...abel-change-question-visible-options-1.png | Bin ...abel-change-question-visible-options-2.png | Bin ...quired-error-when-the-title-is-empty-1.png | Bin ...omponent-change-question-description-1.png | Bin ...Text-component-change-question-title-1.png | Bin ...mponent-change-question-use-markdown-1.png | Bin ...mponent-change-question-use-markdown-2.png | Bin ...-the-information-tab-with-basic-info-1.png | Bin ...b-delete-dataset-but-cancel-deletion-1.png | Bin ...b-delete-dataset-but-cancel-deletion-2.png | Bin ...b-delete-dataset-but-cancel-deletion-3.png | Bin ...er-zone-tab-delete-dataset-correctly-1.png | Bin ...er-zone-tab-delete-dataset-correctly-2.png | Bin ...er-zone-tab-delete-dataset-correctly-3.png | Bin ...r-zone-tab-delete-dataset-with-error-1.png | Bin ...r-zone-tab-delete-dataset-with-error-2.png | Bin ...r-zone-tab-delete-dataset-with-error-3.png | Bin .../Dataset-setting-page-fields-tab-1.png | Bin ...-updated-guidelines-from-Preview-tab-1.png | Bin ...-updated-guidelines-from-Preview-tab-2.png | Bin ...el-updated-guidelines-from-Write-tab-1.png | Bin ...el-updated-guidelines-from-Write-tab-2.png | Bin ...ge-information-tab-update-guidelines-1.png | Bin ...ge-information-tab-update-guidelines-2.png | Bin ...ge-information-tab-update-guidelines-3.png | Bin ...iption-is-bigger-than-500-characters-1.png | Bin ...-title-is-bigger-than-200-characters-1.png | Bin ...le-label-change-question-description-1.png | Bin ...b-Single-label-change-question-title-1.png | Bin ...abel-change-question-visible-options-1.png | Bin ...abel-change-question-visible-options-2.png | Bin ...quired-error-when-the-title-is-empty-1.png | Bin ...omponent-change-question-description-1.png | Bin ...Text-component-change-question-title-1.png | Bin ...mponent-change-question-use-markdown-1.png | Bin ...mponent-change-question-use-markdown-2.png | Bin .../dataset-setting-page.spec.ts | 0 ...e-with-datasets-filter-by-workspaces-1.png | Bin ...e-with-datasets-filter-by-workspaces-2.png | Bin ...e-with-datasets-filter-by-workspaces-3.png | Bin ...ge-with-datasets-show-datasets-table-1.png | Bin ...show-documentation-starter-first-tab-1.png | Bin ...how-documentation-starter-second-tab-1.png | Bin ...e-with-datasets-filter-by-workspaces-1.png | Bin ...e-with-datasets-filter-by-workspaces-2.png | Bin ...e-with-datasets-filter-by-workspaces-3.png | Bin ...ge-with-datasets-show-datasets-table-1.png | Bin ...show-documentation-starter-first-tab-1.png | Bin ...how-documentation-starter-second-tab-1.png | Bin ...e-with-datasets-filter-by-workspaces-1.png | Bin ...e-with-datasets-filter-by-workspaces-2.png | Bin ...e-with-datasets-filter-by-workspaces-3.png | Bin ...ge-with-datasets-show-datasets-table-1.png | Bin ...show-documentation-starter-first-tab-1.png | Bin ...how-documentation-starter-second-tab-1.png | Bin .../e2e/datasets-page/datasets-page.spec.ts | 0 .../import-configuration-workflow.spec.ts | 0 .../chromium/Login-page-has-title-1.png | Bin .../firefox/Login-page-has-title-1.png | Bin .../webkit/Login-page-has-title-1.png | Bin .../e2e/login-page/login-page.spec.ts | 0 ...page-see-user-setting-page-correctly-1.png | Bin ...page-see-user-setting-page-correctly-1.png | Bin ...page-see-user-setting-page-correctly-1.png | Bin .../user-setting-page.spec.ts | 0 .../extension/icon.png | Bin .../extension/manifest.json | 0 .../extension/popup.html | 0 .../extension/popup.js | 0 .../jest.config.js | 0 .../jest.setup.ts | 0 .../layouts/AnnotationPage.vue | 0 .../layouts/AuthenticationLayout.vue | 0 .../layouts/Home.vue | 0 .../layouts/InternalPage.vue | 0 .../layouts/app.vue | 0 .../layouts/error.vue | 0 .../middleware/README.md | 0 .../middleware/me.ts | 0 .../middleware/route-guard.ts | 0 .../nuxt.config.ts | 0 .../package-lock.json | 0 .../package.json | 0 .../pages/README.md | 0 .../annotation-mode/index.component.spec.js | 0 .../dataset/_id/annotation-mode/index.vue | 0 .../useAnnotationModeViewModel.ts | 0 .../pages/dataset/_id/settings.vue | 0 .../dataset/_id/useDatasetSettingViewModel.ts | 0 .../pages/dataset/_id/useDatasetViewModel.ts | 0 .../pages/index.vue | 0 .../pages/new/_id.vue | 0 .../pages/new/hf/_repoId.vue | 0 .../pages/new/import/_id.vue | 0 .../useImportConfigurationViewModel.spec.js | 0 .../import/useImportConfigurationViewModel.ts | 0 .../pages/oauth/_provider/callback.vue | 0 .../oauth/_provider/useOAuthViewModel.ts | 0 .../pages/sign-in.test.js | 0 .../pages/sign-in.vue | 0 .../pages/useHomeViewModel.ts | 0 .../pages/useNewDatasetViewModel.ts | 0 .../pages/useSignInViewModel.ts | 0 .../pages/useWelcomeHFViewModel.ts | 0 .../pages/user-settings.vue | 0 .../pages/welcome-hf-sign-in.vue | 0 .../playwright.config.ts | 0 .../plugins/axios/axios-cache.ts | 0 .../plugins/axios/axios-global-handler.ts | 0 .../plugins/di/di.ts | 0 .../plugins/directives/badge.directive.ts | 0 .../plugins/directives/circle.directive.ts | 0 .../directives/click-outside.directive.ts | 0 .../plugins/directives/copy-code.directive.js | 0 .../directives/required-field.directive.ts | 0 .../plugins/directives/svg-icon.element.ts | 0 .../plugins/directives/tooltip.directive.ts | 0 .../plugins/extensions/color-generator.ts | 0 .../plugins/extensions/color-schema.ts | 0 .../plugins/extensions/copy-to-clipboard.ts | 0 .../plugins/extensions/format-number.ts | 0 .../plugins/extensions/notification.ts | 0 .../plugins/extensions/platform.ts | 0 .../plugins/extensions/vue-draggable.ts | 0 .../plugins/index.ts | 0 .../plugins/language/language-detector.ts | 0 .../plugins/language/language-direction.ts | 0 .../plugins/logo/logo.ts | 0 .../static/README.md | 0 .../static/apple-touch-icon.png | Bin .../static/favicon-16x16.png | Bin .../static/favicon-32x32.png | Bin .../static/favicon.ico | Bin .../fonts/raptorv2premium-bold-webfont.woff | Bin .../fonts/raptorv2premium-bold-webfont.woff2 | Bin .../static/icons/arrow-down.svg | 0 .../static/icons/arrow-up.svg | 0 .../static/icons/assign.svg | 0 .../static/icons/bulk-mode.svg | 0 .../static/icons/change-height.svg | 0 .../static/icons/check.svg | 0 .../static/icons/chevron-down.svg | 0 .../static/icons/chevron-left.svg | 0 .../static/icons/chevron-right.svg | 0 .../static/icons/chevron-up.svg | 0 .../static/icons/clear.svg | 0 .../static/icons/close.svg | 0 .../static/icons/code.svg | 0 .../static/icons/copy.svg | 0 .../static/icons/danger.svg | 0 .../static/icons/dark-theme.svg | 0 .../static/icons/discard.svg | 0 .../static/icons/draggable.svg | 0 .../static/icons/expand-arrows.svg | 0 .../static/icons/exploration.svg | 0 .../static/icons/export.svg | 0 .../static/icons/external-link.svg | 0 .../static/icons/external.svg | 0 .../static/icons/filter.svg | 0 .../static/icons/focus-mode.svg | 0 .../static/icons/hand-labeling.svg | 0 .../static/icons/high-contrast-theme.svg | 0 .../static/icons/import.svg | 0 .../static/icons/info.svg | 0 .../static/icons/kebab.svg | 0 .../static/icons/light-theme.svg | 0 .../static/icons/link.svg | 0 .../static/icons/log-out.svg | 0 .../static/icons/matching.svg | 0 .../static/icons/math-plus.svg | 0 .../static/icons/meatballs.svg | 0 .../static/icons/minimize-arrows.svg | 0 .../static/icons/no-matching.svg | 0 .../static/icons/pen.svg | 0 .../static/icons/plus.svg | 0 .../static/icons/progress.svg | 0 .../static/icons/question-answering.svg | 0 .../static/icons/records.svg | 0 .../static/icons/refresh.svg | 0 .../static/icons/reset.svg | 0 .../static/icons/row-last.svg | 0 .../static/icons/rows.svg | 0 .../static/icons/search.svg | 0 .../static/icons/settings.svg | 0 .../static/icons/shortcuts.svg | 0 .../static/icons/similarity.svg | 0 .../static/icons/smile-sad.svg | 0 .../static/icons/sort.svg | 0 .../static/icons/stats.svg | 0 .../static/icons/suggestion.svg | 0 .../static/icons/support.svg | 0 .../static/icons/system-theme.svg | 0 .../static/icons/text-classification.svg | 0 .../static/icons/text-to-image.svg | 0 .../static/icons/time.svg | 0 .../static/icons/trash-empty.svg | 0 .../static/icons/unavailable.svg | 0 .../static/icons/update.svg | 0 .../static/icons/validate.svg | 0 .../static/icons/weak-labeling.svg | 0 .../static/images/help-info/explain.png | Bin .../static/images/help-info/similarity.png | Bin .../static/images/img-placeholder.svg | 0 .../static/images/logo-white.svg | 0 .../static/images/logo.svg | 0 .../static/images/welcome-hf-sign-in-ss.jpg | Bin .../static/js/handlebars.min.js | 0 .../static/site.webmanifest | 0 .../translation/de.js | 0 .../translation/en.js | 0 .../translation/es.js | 0 .../translation/ja.js | 0 .../tsconfig.json | 0 .../v1/di/__mocks__/useResolveMock.ts | 0 .../v1/di/di.ts | 0 .../v1/di/index.ts | 0 .../v1/domain/entities/IAnswer.ts | 0 .../entities/__mocks__/criteria/mock.ts | 0 .../entities/__mocks__/dataset/mocks.ts | 0 .../domain/entities/__mocks__/field/mocks.ts | 0 .../entities/__mocks__/metadata/mock.ts | 0 .../entities/__mocks__/question/mock.ts | 0 .../domain/entities/__mocks__/vector/mocks.ts | 0 .../v1/domain/entities/color/Color.test.ts | 0 .../v1/domain/entities/color/Color.ts | 0 .../v1/domain/entities/common/Criteria.ts | 0 .../v1/domain/entities/common/Filter.ts | 0 .../v1/domain/entities/common/Params.ts | 0 .../domain/entities/dataset/Dataset.test.ts | 0 .../v1/domain/entities/dataset/Dataset.ts | 0 .../domain/entities/dataset/DatasetExport.ts | 0 .../domain/entities/dataset/DatasetSetting.ts | 0 .../domain/entities/dataset/Metrics.test.ts | 0 .../v1/domain/entities/dataset/Metrics.ts | 0 .../v1/domain/entities/dataset/Progress.ts | 0 .../distribution/TaskDistribution.test.ts | 0 .../entities/distribution/TaskDistribution.ts | 0 .../v1/domain/entities/document/Document.ts | 0 .../entities/environment/Environment.ts | 0 .../v1/domain/entities/error/Guard.ts | 0 .../v1/domain/entities/error/index.ts | 0 .../v1/domain/entities/field/Field.test.ts | 0 .../v1/domain/entities/field/Field.ts | 0 .../v1/domain/entities/field/FieldType.ts | 0 .../entities/hub/DatasetCreation.test.ts | 0 .../v1/domain/entities/hub/DatasetCreation.ts | 0 .../entities/hub/DatasetCreationBuilder.ts | 0 .../v1/domain/entities/hub/FieldCreation.ts | 0 .../domain/entities/hub/MetadataCreation.ts | 0 .../domain/entities/hub/QuestionCreation.ts | 0 .../v1/domain/entities/hub/Subset.ts | 0 .../domain/entities/import/ImportAnalysis.ts | 0 .../import/ImportHistoryDatasetBuilder.ts | 0 .../entities/import/ImportHistoryDetails.ts | 0 .../domain/entities/metadata/Metadata.test.ts | 0 .../v1/domain/entities/metadata/Metadata.ts | 0 .../metadata/MetadataCriteria.test.ts | 0 .../entities/metadata/MetadataCriteria.ts | 0 .../entities/metadata/MetadataFilter.test.ts | 0 .../entities/metadata/MetadataFilter.ts | 0 .../entities/metadata/MetadataRecord.ts | 0 .../domain/entities/metadata/MetadataType.ts | 0 .../v1/domain/entities/oauth/OAuthProvider.ts | 0 .../domain/entities/page/PageCriteria.test.ts | 0 .../v1/domain/entities/page/PageCriteria.ts | 0 .../domain/entities/question/Question.test.ts | 0 .../v1/domain/entities/question/Question.ts | 0 .../entities/question/QuestionAnswer.ts | 0 .../entities/question/QuestionSetting.test.ts | 0 .../entities/question/QuestionSetting.ts | 0 .../entities/question/QuestionType.test.ts | 0 .../domain/entities/question/QuestionType.ts | 0 .../entities/question/Suggestion.test.ts | 0 .../v1/domain/entities/question/Suggestion.ts | 0 .../question/answer/SpanAnswer.test.ts | 0 .../v1/domain/entities/record/Record.ts | 0 .../v1/domain/entities/record/RecordAnswer.ts | 0 .../entities/record/RecordCriteria.test.ts | 0 .../domain/entities/record/RecordCriteria.ts | 0 .../v1/domain/entities/record/RecordStatus.ts | 0 .../v1/domain/entities/record/Records.test.ts | 0 .../v1/domain/entities/record/Records.ts | 0 .../response/ResponseCriteria.test.ts | 0 .../entities/response/ResponseCriteria.ts | 0 .../entities/response/ResponseFilter.ts | 0 .../search/SearchTextCriteria.test.ts | 0 .../entities/search/SearchTextCriteria.ts | 0 .../domain/entities/similarity/Score.test.ts | 0 .../v1/domain/entities/similarity/Score.ts | 0 .../similarity/SimilarityCriteria.test.ts | 0 .../entities/similarity/SimilarityCriteria.ts | 0 .../domain/entities/sort/SortCriteria.test.ts | 0 .../v1/domain/entities/sort/SortCriteria.ts | 0 .../v1/domain/entities/sort/SortList.test.ts | 0 .../v1/domain/entities/sort/SortList.ts | 0 .../v1/domain/entities/suggestion/Agent.ts | 0 .../suggestion/SuggestionCriteria.test.ts | 0 .../entities/suggestion/SuggestionCriteria.ts | 0 .../entities/suggestion/SuggestionFilter.ts | 0 .../v1/domain/entities/table/Extraction.ts | 0 .../v1/domain/entities/table/Schema.ts | 0 .../v1/domain/entities/table/TableData.ts | 0 .../v1/domain/entities/table/Validation.ts | 0 .../v1/domain/entities/user/User.ts | 0 .../domain/entities/vector/DatasetVector.ts | 0 .../v1/domain/entities/vector/Vector.test.ts | 0 .../v1/domain/entities/vector/Vector.ts | 0 .../v1/domain/entities/workspace/Workspace.ts | 0 .../events/RecordResponseUpdatedEvent.ts | 0 .../v1/domain/services/IAuthRepository.ts | 0 .../v1/domain/services/IAuthService.ts | 0 .../v1/domain/services/IDatasetRepository.ts | 0 .../domain/services/IDatasetSettingStorage.ts | 0 .../v1/domain/services/IDatasetStorage.ts | 0 .../v1/domain/services/IDatasetsStorage.ts | 0 .../v1/domain/services/IDocumentStorage.ts | 0 .../domain/services/IEnvironmentRepository.ts | 0 .../v1/domain/services/IFieldRepository.ts | 0 .../domain/services/ILocalStorageService.ts | 0 .../v1/domain/services/IMetricsStorage.ts | 0 .../v1/domain/services/IOAuthRepository.ts | 0 .../v1/domain/services/IQuestionRepository.ts | 0 .../v1/domain/services/IRecordStorage.ts | 0 .../domain/services/ITeamProgressStorage.ts | 0 .../v1/domain/services/IUserRepository.ts | 0 .../v1/domain/services/RoleService.ts | 0 .../v1/domain/services/RouterService.ts | 0 .../v1/domain/usecases/auth-login-use-case.ts | 0 .../usecases/bulk-annotation-use-case.ts | 0 .../bulk-upload-documents-use-case.ts | 0 .../usecases/create-dataset-use-case.ts | 0 .../create-import-history-use-case.ts | 0 .../get-dataset-settings-use-case.ts | 0 .../update-dataset-setting-use-case.ts | 0 .../update-field-setting-use-case.ts | 0 .../update-metadata-setting-use-case.ts | 0 .../update-question-setting-use-case.ts | 0 .../update-vector-setting-use-case.ts | 0 .../usecases/delete-dataset-use-case.ts | 0 .../usecases/discard-record-use-case.ts | 0 .../export-dataset-to-hub-use-case.ts | 0 .../usecases/get-dataset-by-id-use-case.ts | 0 ...et-dataset-fields-grouped-use-case.test.ts | 0 .../get-dataset-fields-grouped-use-case.ts | 0 .../usecases/get-dataset-progress-use-case.ts | 0 .../get-dataset-questions-filter-use-case.ts | 0 ...dataset-questions-grouped-use-case.test.ts | 0 .../get-dataset-questions-grouped-use-case.ts | 0 ...get-dataset-suggestions-agents-use-case.ts | 0 .../usecases/get-dataset-vectors-use-case.ts | 0 .../domain/usecases/get-datasets-use-case.ts | 0 .../usecases/get-document-by-id-use-case.ts | 0 .../get-documents-by-workspace-use-case.ts | 0 .../usecases/get-environment-use-case.ts | 0 .../get-extraction-completion-use-case.ts | 0 .../get-extraction-schema-use-case.ts | 0 .../v1/domain/usecases/get-fields-use-case.ts | 0 .../usecases/get-first-record-from-hub.ts | 0 .../get-hf-dataset-creation-use-case.ts | 0 .../usecases/get-import-analysis-use-case.ts | 0 .../get-import-history-details-use-case.ts | 0 .../usecases/get-import-history-use-case.ts | 0 .../usecases/get-job-status-use-case.ts | 0 .../domain/usecases/get-metadata-use-case.ts | 0 .../get-records-by-criteria-use-case.ts | 0 .../usecases/get-user-metrics-use-case.ts | 0 .../usecases/get-workspaces-use-case.ts | 0 .../load-records-to-annotate-use-case.ts | 0 .../v1/domain/usecases/load-user-use-case.ts | 0 .../domain/usecases/oauth-login-use-case.ts | 0 .../usecases/oauth-login-usecase.test.ts | 0 .../v1/domain/usecases/save-draft-use-case.ts | 0 .../domain/usecases/submit-record-use-case.ts | 0 .../events/UpdateMetricsEventHandler.ts | 0 .../events/UpdateTeamProgressEventHandler.ts | 0 .../v1/infrastructure/events/index.ts | 0 .../v1/infrastructure/events/useEvents.ts | 0 .../repositories/AgentRepository.ts | 0 .../repositories/AuthRepository.ts | 0 .../infrastructure/repositories/AxiosCache.ts | 0 .../repositories/AxiosErrorHandler.ts | 0 .../repositories/DatasetRepository.ts | 0 .../repositories/DocumentRepository.ts | 0 .../repositories/EnvironmentRepository.ts | 0 .../repositories/FieldRepository.ts | 0 .../repositories/HubRepository.ts | 0 .../repositories/JobRepository.ts | 0 .../repositories/MetadataMetricsRepository.ts | 0 .../repositories/MetadataRepository.ts | 0 .../repositories/MetricsRepository.ts | 0 .../repositories/OAuthRepository.ts | 0 .../repositories/QuestionRepository.ts | 0 .../repositories/RecordRepository.ts | 0 .../repositories/UserRepository.ts | 0 .../repositories/VectorRepository.ts | 0 .../repositories/WorkspaceRepository.ts | 0 .../v1/infrastructure/repositories/index.ts | 0 .../v1/infrastructure/services/index.ts | 0 .../services/useAxiosExtension.ts | 0 .../services/useBeforeUnload.ts | 0 .../infrastructure/services/useClipboard.ts | 0 .../infrastructure/services/useColorSchema.ts | 0 .../v1/infrastructure/services/useDebounce.ts | 0 .../services/useFeatureToggle.ts | 0 .../v1/infrastructure/services/useFocusTab.ts | 0 .../services/useLanguageDetector.test.ts | 0 .../services/useLanguageDetector.ts | 0 .../services/useLanguageDirection.test.ts | 0 .../services/useLanguageDirection.ts | 0 .../services/useLocalStorage.ts | 0 .../services/useNotifications.ts | 0 .../v1/infrastructure/services/usePlatform.ts | 0 .../infrastructure/services/useQueue.test.ts | 0 .../v1/infrastructure/services/useQueue.ts | 0 .../v1/infrastructure/services/useRole.ts | 0 .../v1/infrastructure/services/useRoutes.ts | 0 .../services/useRunningEnvironment.test.ts | 0 .../services/useRunningEnvironment.ts | 0 .../infrastructure/services/useTranslate.ts | 0 .../v1/infrastructure/services/useUser.ts | 0 .../v1/infrastructure/services/useWait.ts | 0 .../storage/DatasetSettingStorage.ts | 0 .../infrastructure/storage/DatasetStorage.ts | 0 .../infrastructure/storage/DatasetsStorage.ts | 0 .../infrastructure/storage/DocumentStorage.ts | 0 .../infrastructure/storage/MetricsStorage.ts | 0 .../infrastructure/storage/RecordsStorage.ts | 0 .../storage/TeamProgressStorage.ts | 0 .../v1/infrastructure/types/api.ts | 0 .../v1/infrastructure/types/dataset.ts | 0 .../v1/infrastructure/types/environment.ts | 0 .../v1/infrastructure/types/field.ts | 0 .../v1/infrastructure/types/index.ts | 0 .../v1/infrastructure/types/metadata.ts | 0 .../v1/infrastructure/types/question.ts | 0 .../v1/infrastructure/types/record.ts | 0 .../v1/infrastructure/types/vector.ts | 0 .../v1/store/create.ts | 0 .../v1/store/non-reactive.ts | 0 .../vue-shim.d.ts | 0 extralit/docs/admin_guide/k8s_deployment.md | 2 +- extralit/docs/admin_guide/upgrading.md | 10 +++--- extralit/docs/community/adding_language.md | 8 ++--- extralit/docs/community/developer.md | 2 +- .../docs/getting_started/development_setup.md | 8 ++--- 1544 files changed, 113 insertions(+), 113 deletions(-) rename .github/workflows/{argilla-frontend.build-push-dev-frontend-docker.yml => extralit-frontend.build-push-dev-frontend-docker.yml} (96%) rename .github/workflows/{argilla-frontend.deploy-environment.yml => extralit-frontend.deploy-environment.yml} (91%) rename .github/workflows/{argilla-frontend.teardown-all-pr-environments.yml => extralit-frontend.teardown-all-pr-environments.yml} (100%) rename .github/workflows/{argilla-frontend.teardown-pr-environment.yml => extralit-frontend.teardown-pr-environment.yml} (93%) rename .github/workflows/{argilla-frontend.yml => extralit-frontend.yml} (79%) rename {argilla-frontend => extralit-frontend}/.eslintignore (100%) rename {argilla-frontend => extralit-frontend}/.eslintrc.js (100%) rename {argilla-frontend => extralit-frontend}/.gitignore (100%) rename {argilla-frontend => extralit-frontend}/.prettierrc.js (100%) rename {argilla-frontend => extralit-frontend}/CHANGELOG.md (100%) rename {argilla-frontend => extralit-frontend}/LICENSE (100%) rename {argilla-frontend => extralit-frontend}/README.md (100%) rename {argilla-frontend => extralit-frontend}/__mocks__/styleMock.js (100%) rename {argilla-frontend => extralit-frontend}/__mocks__/tabulator-tables.js (100%) rename {argilla-frontend => extralit-frontend}/assets/css/fonts.css (100%) rename {argilla-frontend => extralit-frontend}/assets/css/themes.css (100%) rename {argilla-frontend => extralit-frontend}/assets/icon-template.js.tmp (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/arrow-down.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/arrow-up.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/assign.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/bulk-mode.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/change-height.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/check.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/chevron-down.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/chevron-left.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/chevron-right.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/chevron-up.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/clear.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/close.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/code.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/copy.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/danger.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/dark-theme.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/discard.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/document.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/draggable.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/expand-arrows.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/exploration.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/export.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/external-link.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/external.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/filter.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/focus-mode.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/hand-labeling.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/high-contrast-theme.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/import.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/index.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/info.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/kebab.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/light-theme.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/link.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/log-out.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/matching.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/math-plus.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/meatballs.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/minimize-arrows.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/no-matching.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/pen.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/plus.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/progress.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/question-answering.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/records.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/refresh.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/reset.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/row-last.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/rows.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/search.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/settings.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/shortcuts.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/similarity.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/smile-sad.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/sort.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/stats.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/suggestion.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/support.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/system-theme.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/text-classification.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/text-to-image.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/time.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/trash-empty.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/unavailable.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/update.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/validate.js (100%) rename {argilla-frontend => extralit-frontend}/assets/icons/weak-labeling.js (100%) rename {argilla-frontend => extralit-frontend}/assets/scss/abstract.scss (100%) rename {argilla-frontend => extralit-frontend}/assets/scss/abstract/functions/_functions.scss (100%) rename {argilla-frontend => extralit-frontend}/assets/scss/abstract/mixins/_grid-mixins.scss (100%) rename {argilla-frontend => extralit-frontend}/assets/scss/abstract/mixins/_media-queries.scss (100%) rename {argilla-frontend => extralit-frontend}/assets/scss/abstract/mixins/_mixins.scss (100%) rename {argilla-frontend => extralit-frontend}/assets/scss/abstract/placeholders/_placeholders.scss (100%) rename {argilla-frontend => extralit-frontend}/assets/scss/abstract/placeholders/_tooltip.scss (100%) rename {argilla-frontend => extralit-frontend}/assets/scss/abstract/variables/_variables.scss (100%) rename {argilla-frontend => extralit-frontend}/assets/scss/base/base.scss (100%) rename {argilla-frontend => extralit-frontend}/assets/styles.scss (100%) rename {argilla-frontend => extralit-frontend}/babel.config.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-action-tooltip/BaseActionTooltip.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-badge/BaseBadge.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-badge/BaseBadgeSkeleton.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-badge/BaseIconWithBadge.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-banner/BaseBanner.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-brand-icon/BrandIcon.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-brand-icon/BrandLogo.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-breadcrumbs/BaseBreadcrumbs.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-button/BaseButton.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-card/BaseCard.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-card/BaseCard.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-card/BaseCardWithTabs.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-checkbox/BaseCheckbox.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-code/BaseCode.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-collpasable-panel/BaseCollapsablePanel.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-date/BaseDate.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-date/__snapshots__/base-date.test.ts.snap (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-date/base-date.test.ts (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-documentation-viewer/DocumentationViewer.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-dropdown/BaseDropdown.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-dropdown/BaseDropdown.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-feedback/BaseFeedback.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-feedback/BaseFeedback.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-feedback/base-feedback-error/BaseFeedbackError.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-feedback/base-feedback-error/BaseFeedbackError.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-flow-modal/BaseFlowModal.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-flow-modal/BaseFlowModal.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-icon/BaseIcon.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-input/BaseInput.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-input/BaseInputContainer.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-input/common.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-input/utils/getClosestVueParent.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-loading/BaseLoading.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-modal/BaseModal.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-pdf-viewer/PDFViewer.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-progress/BaseCircleProgress.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-progress/BaseLinearProgress.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-progress/BaseLinearProgressSkeleton.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-radio-button/BaseRadioButton.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-radio-button/BaseRadioButton.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-range/BaseRangeMultipleSlider.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-range/BaseRangeSlider.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-render-html/RenderHTML.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-render-html/renderHTML.test.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-render-markdown/MarkdownRenderer.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-render-markdown/MarkdownRenderer.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-render-table/RenderTable.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-render-table/renderTable.test.ts (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-render-table/tableUtils.ts (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-render-table/useLLMExtractionViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-render-table/useReferenceTablesViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-render-table/useSchemaTableViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-render-table/validatorUtils.ts (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-resizable/HorizontalResizable.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-resizable/VerticalResizable.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-resizable/useResizable.ts (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-scroll/SynchronizeScroll.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-search-bar/BaseSearch.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-search-bar/BaseSearchBar.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-separator/BaseSeparator.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-shapes/GeometricShapeA.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-simple-table/BaseSimpleTable.test.ts (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-simple-table/BaseSimpleTable.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-slider/BaseSlider.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-slider/BaseSlider.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-slider/__snapshots__/BaseSlider.spec.js.snap (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-spinner/BaseSpinner.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-switch/BaseSwitch.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-tabs/BaseTabs.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-tabs/BaseTabsAndContent.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-tabs/baseTabs.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-tag/BaseTag.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-toast/Toast.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-toast/api.ts (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-toast/bus.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-toast/helpers.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-toast/positions.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-toast/timer.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-tooltip/BaseFixedTooltip.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-tooltip/BaseTooltip.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-tooltip/BaseTooltip.vue (100%) rename {argilla-frontend => extralit-frontend}/components/base/base-topbar-brand/BaseTopbarBrand.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/RecordFeedbackTaskAndQuestionnaire.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/Record.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/RecordFields.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/RecordFieldsHeader.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/RecordMenu.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/RecordMetadataInfo.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/RecordStatus.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/SimilarityScorePercentage.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/chat-field/ChatField.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/chat-field/useChatFieldViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/custom-field/CustomField.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/image-field/ImageField.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/sandbox/Sandbox.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/span-annotation/SpanAnnotationTextField.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/span-annotation/components/EntityBadge.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/span-annotation/components/EntityComponent.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/span-annotation/components/EntityDropdown.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/span-annotation/components/EntityDropdownOverlapping.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/span-annotation/components/highlighting.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/span-annotation/components/span-selection.test.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/span-annotation/components/span-selection.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/span-annotation/components/spanAnnotationCursor.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/span-annotation/useSpanAnnotationTextFieldViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/table-field/TableField.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/text-field/TextField.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/text-field/useTextFieldViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/fields/useSearchTextHighlight.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/mode/BulkAnnotation.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/mode/FocusAnnotation.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/mode/useBulkAnnotationViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/mode/useDocumentViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/mode/useFocusAnnotationViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/QuestionsForm.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/Questions.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/multi-label/MultiLabel.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/ranking/Ranking.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/ranking/drag-and-drop-selection/DndSelection.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/ranking/drag-and-drop-selection/dndSelection.component.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/ranking/ranking-adapter.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/ranking/ranking-adapter.test.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/ranking/ranking-fakes.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/rating/Rating.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/rating/RatingMonoSelection.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/rating/RatingShortcuts.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/rating/ratingMonoSelection.component.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/shared-components/label-selection/LabelSelection.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/shared-components/label-selection/labelSelection.component.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/shared-components/label-selection/useLabelSelectionViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/shared-components/question-header/QuestionHeader.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/shared-components/search-label/SearchLabel.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/shared-components/search-label/searchLabel.component.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/single-label/SingleLabel.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/span/EntityLabelBadge.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/span/EntityLabelSelection.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/span/SpanComponent.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/table/TableComponent.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/text-area/ContentEditableFeedbackTask.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/text-area/TextArea.component.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/text-area/TextAreaContents.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/text-area/TextAreaSuggestion.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/questions/form/useQuestionsViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/similarity/SimilarityConfigDropdown.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/similarity/SimilarityFilter.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/similarity/SimilarityRecordReference.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/similarity/SimilarityReference.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/similarity/filters/SimilarityFilterLimit.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/similarity/filters/SimilarityFilterOrder.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/similarity/filters/SimilarityFilterVector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/similarity/filters/SimilarityFilterVectorRadioButtons.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/useRecordFeedbackTaskViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/useRecordsMessages.test.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/useRecordsMessages.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/container/view-config/RecordsViewConfig.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/guidelines/AnnotationGuidelines.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/guidelines/useAnnotationGuidelinesViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/DatasetFilters.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/RadioButtonsSelect.base.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/StatusFilter.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/ToggleAnnotationType.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/filters/CategoriesSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/filters/FilterBadge.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/filters/FilterButton.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/filters/FilterButtonWithBadges.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/filters/FilterTooltip.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/filters/LabelsSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/filters/LabelsSelectorSearch.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/filters/OptionsSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/filters/RangeSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/header-bar/DatasetSettingsIconFeedbackTask.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/header-bar/ExportToHub.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/header-bar/HeaderFeedbackTask.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/header-bar/ImportData.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/header-bar/headerFeedbackTask.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/header-bar/useExportToHubViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/load-line/LoadLine.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/metadata-filter/MetadataFilter.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/metadata-filter/useMetadataFilterViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/responses-filter/ResponsesFilter.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/responses-filter/useResponseFilterViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/search-bar-filter/SearchBarFilter.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/sort-filter/Sort.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/sort-filter/SortButton.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/sort-filter/SortCategoriesList.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/sort-filter/SortSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/sort-filter/SortSelectorItem.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/sort-filter/useSortRecords.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/suggestion-filter/SuggestionFilter.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/suggestion-filter/useSuggestionFilterViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/header/useDatasetsFiltersViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/pagination/PageSizeSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/pagination/Pagination.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/pagination/PaginationFeedbackTask.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/pagination/usePaginationFeedbackTaskViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/progress/AnnotationProgress.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/progress/AnnotationProgressDetailed.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/progress/TeamProgress.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/progress/share/Share.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/progress/share/useShareViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/progress/status-counter/StatusCounter.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/progress/status-counter/StatusCounterSkeleton.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/progress/useAnnotationProgressViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/progress/useTeamProgressViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/DatasetDeleteFeedbackTask.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/SettingsDangerZone.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/SettingsFields.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/SettingsInfo.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/SettingsInfoReadOnly.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/SettingsMetadata.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/SettingsQuestions.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/SettingsVectors.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/TopDatasetSettingsFeedbackTask.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/Validation.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/dataset-description/DatasetDescription.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/dataset-description/DatasetDescriptionReadOnly.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/dataset-description/DatasetDescriptionReadOnly.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/useDeleteDatasetViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/useSettingInfoViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/useSettingsFieldsViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/useSettingsMetadataViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/useSettingsQuestionsViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/settings/useSettingsVectorsViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/annotation/shortcuts/AnnotationHelpShortcut.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/DatasetConfiguration.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/DatasetConfiguration.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/DatasetConfigurationDialog.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/DatasetConfigurationForm.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/DatasetConfigurationMetadataSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/fields/DatasetConfigurationField.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/questions/DatasetConfigurationAddQuestion.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/questions/DatasetConfigurationColumnSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/questions/DatasetConfigurationFieldSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/questions/DatasetConfigurationInput.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/questions/DatasetConfigurationLabels.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/questions/DatasetConfigurationQuestion.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/questions/DatasetConfigurationRanking.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/questions/DatasetConfigurationRating.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/questions/DatasetConfigurationSpan.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/shared/DatasetConfigurationCard.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/shared/DatasetConfigurationChipsSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/shared/DatasetConfigurationSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/useDatasetConfiguration.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/useDatasetConfigurationForm.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/dataset-creation/configuration/useDatasetConfigurationNameAndWorkspace.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/documents/DocumentsList.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/documents/useDocumentsListViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/global/AppHeader.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/global/persistent-storage/PersistentStorageBanner.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/global/persistent-storage/usePersistentStorageViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/global/user/UserAvatarTooltip.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/global/user/userAvatarTooltipViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-fields/DatasetFields.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-fields/useDatasetFields.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-list/DatasetCard.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-list/DatasetList.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-list/DatasetListCards.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-list/sort-filter/DatasetsSort.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-list/sort-filter/DatasetsSortButton.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-list/sort-filter/DatasetsSortSelectorItem.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-list/useDatasetCardViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-list/workspaces-filter/WorkspaceSelector.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-list/workspaces-filter/WorkspacesFilter.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-list/workspaces-filter/WorkspacesFilterButton.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-progress/DatasetProgress.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-questions/DatasetQuestions.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-questions/useDatasetQuestions.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-total/DatasetTotal.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/dataset-users/DatasetUsers.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/datasets-empty/DatasetsEmpty.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/datasets-empty/DatasetsEmptyCard.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/datasets-empty/useDatasetsEmpty.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/shared/DatasetBadge.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/shared/UserBadge.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/sidebar/ExampleDatasetCard.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/sidebar/ImportDocuments.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/sidebar/ImportFromHub.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/sidebar/ImportFromPython.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/sidebar/LinkCard.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/home/sidebar/useImportFromPython.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/ImportAnalysisTable.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/ImportAnalysisTable.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/ImportBatchProgress.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/ImportFileUpload.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/ImportHistoryDataPreview.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/ImportHistoryDataPreview.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/ImportHistoryDetailsModal.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/ImportHistoryList.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/ImportModal.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/ImportModal.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/ImportSummary.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/RecentImportCard.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/RecentImportCard.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/RecentImports.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/RecentImports.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/types.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/useImportAnalysisViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/useImportBatchProgressViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/useImportHistoryListViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/useRecentImportsViewModel.spec.js (100%) rename {argilla-frontend => extralit-frontend}/components/features/import/useRecentImportsViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/login/OAuthLogin.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/login/components/DecorationShape.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/login/components/HFLogo.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/login/components/HuggingFaceButton.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/login/components/KeycloakLogo.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/login/components/LoginImageBg.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/login/components/LoginInput.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/login/components/OAuthLoginButton.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/login/useOAuthLoginViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/user-settings/UserSettingsContent.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/user-settings/UserSettingsHeader.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/user-settings/UserSettingsLanguage.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/user-settings/UserSettingsTheme.vue (100%) rename {argilla-frontend => extralit-frontend}/components/features/user-settings/useUserInfoViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/user-settings/useUserSettingsLanguageViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/components/features/user-settings/user-token/UserToken.component.vue (100%) rename {argilla-frontend => extralit-frontend}/dev.frontend.Dockerfile (63%) rename {argilla-frontend => extralit-frontend}/docs/conventions.md (100%) rename {argilla-frontend => extralit-frontend}/docs/shortcuts.md (100%) rename {argilla-frontend => extralit-frontend}/docs/snippets/start_page.md (100%) rename {argilla-frontend => extralit-frontend}/docs/structure.md (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-can-drag-and-drop-ranking-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-can-drag-and-drop-ranking-question-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-and-discard-the-record-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-filter-by-workspaces-from-annotation-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-go-to-annotation-mode-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-label-with-just-one-character-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-can-drag-and-drop-ranking-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-can-drag-and-drop-ranking-question-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-and-discard-the-record-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-filter-by-workspaces-from-annotation-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-go-to-annotation-mode-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-label-with-just-one-character-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-can-drag-and-drop-ranking-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-can-drag-and-drop-ranking-question-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-and-discard-the-record-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-filter-by-workspaces-from-annotation-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-go-to-annotation-mode-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-label-with-just-one-character-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/annotation-mode.page.spec.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/autosave-annotation-mode.page.spec.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/goToAnnotationPage.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/mac-annotation-mode.page.spec.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/annotation-mode-page/metadata-filters-and-sorting-annotation-mode.page.spec.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/common/dataset-api-mock.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/common/field-api-mock.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/common/import-api-mock.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/common/index.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/common/login-and-wait-for.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/common/metadata-api-mock.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/common/question-api-mock.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/common/record-api-mock.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-fields-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-fields-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-fields-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/dataset-setting-page/dataset-setting-page.spec.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-show-datasets-table-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-show-datasets-table-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-2.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-3.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-show-datasets-table-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/datasets-page/datasets-page.spec.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/import-configuration-workflow/import-configuration-workflow.spec.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/login-page/__screenshots__/chromium/Login-page-has-title-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/login-page/__screenshots__/firefox/Login-page-has-title-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/login-page/__screenshots__/webkit/Login-page-has-title-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/login-page/login-page.spec.ts (100%) rename {argilla-frontend => extralit-frontend}/e2e/user-setting-page/__screenshots__/chromium/User-setting-page-see-user-setting-page-correctly-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/user-setting-page/__screenshots__/firefox/User-setting-page-see-user-setting-page-correctly-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/user-setting-page/__screenshots__/webkit/User-setting-page-see-user-setting-page-correctly-1.png (100%) rename {argilla-frontend => extralit-frontend}/e2e/user-setting-page/user-setting-page.spec.ts (100%) rename {argilla-frontend => extralit-frontend}/extension/icon.png (100%) rename {argilla-frontend => extralit-frontend}/extension/manifest.json (100%) rename {argilla-frontend => extralit-frontend}/extension/popup.html (100%) rename {argilla-frontend => extralit-frontend}/extension/popup.js (100%) rename {argilla-frontend => extralit-frontend}/jest.config.js (100%) rename {argilla-frontend => extralit-frontend}/jest.setup.ts (100%) rename {argilla-frontend => extralit-frontend}/layouts/AnnotationPage.vue (100%) rename {argilla-frontend => extralit-frontend}/layouts/AuthenticationLayout.vue (100%) rename {argilla-frontend => extralit-frontend}/layouts/Home.vue (100%) rename {argilla-frontend => extralit-frontend}/layouts/InternalPage.vue (100%) rename {argilla-frontend => extralit-frontend}/layouts/app.vue (100%) rename {argilla-frontend => extralit-frontend}/layouts/error.vue (100%) rename {argilla-frontend => extralit-frontend}/middleware/README.md (100%) rename {argilla-frontend => extralit-frontend}/middleware/me.ts (100%) rename {argilla-frontend => extralit-frontend}/middleware/route-guard.ts (100%) rename {argilla-frontend => extralit-frontend}/nuxt.config.ts (100%) rename {argilla-frontend => extralit-frontend}/package-lock.json (100%) rename {argilla-frontend => extralit-frontend}/package.json (100%) rename {argilla-frontend => extralit-frontend}/pages/README.md (100%) rename {argilla-frontend => extralit-frontend}/pages/dataset/_id/annotation-mode/index.component.spec.js (100%) rename {argilla-frontend => extralit-frontend}/pages/dataset/_id/annotation-mode/index.vue (100%) rename {argilla-frontend => extralit-frontend}/pages/dataset/_id/annotation-mode/useAnnotationModeViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/pages/dataset/_id/settings.vue (100%) rename {argilla-frontend => extralit-frontend}/pages/dataset/_id/useDatasetSettingViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/pages/dataset/_id/useDatasetViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/pages/index.vue (100%) rename {argilla-frontend => extralit-frontend}/pages/new/_id.vue (100%) rename {argilla-frontend => extralit-frontend}/pages/new/hf/_repoId.vue (100%) rename {argilla-frontend => extralit-frontend}/pages/new/import/_id.vue (100%) rename {argilla-frontend => extralit-frontend}/pages/new/import/useImportConfigurationViewModel.spec.js (100%) rename {argilla-frontend => extralit-frontend}/pages/new/import/useImportConfigurationViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/pages/oauth/_provider/callback.vue (100%) rename {argilla-frontend => extralit-frontend}/pages/oauth/_provider/useOAuthViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/pages/sign-in.test.js (100%) rename {argilla-frontend => extralit-frontend}/pages/sign-in.vue (100%) rename {argilla-frontend => extralit-frontend}/pages/useHomeViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/pages/useNewDatasetViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/pages/useSignInViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/pages/useWelcomeHFViewModel.ts (100%) rename {argilla-frontend => extralit-frontend}/pages/user-settings.vue (100%) rename {argilla-frontend => extralit-frontend}/pages/welcome-hf-sign-in.vue (100%) rename {argilla-frontend => extralit-frontend}/playwright.config.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/axios/axios-cache.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/axios/axios-global-handler.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/di/di.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/directives/badge.directive.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/directives/circle.directive.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/directives/click-outside.directive.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/directives/copy-code.directive.js (100%) rename {argilla-frontend => extralit-frontend}/plugins/directives/required-field.directive.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/directives/svg-icon.element.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/directives/tooltip.directive.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/extensions/color-generator.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/extensions/color-schema.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/extensions/copy-to-clipboard.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/extensions/format-number.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/extensions/notification.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/extensions/platform.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/extensions/vue-draggable.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/index.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/language/language-detector.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/language/language-direction.ts (100%) rename {argilla-frontend => extralit-frontend}/plugins/logo/logo.ts (100%) rename {argilla-frontend => extralit-frontend}/static/README.md (100%) rename {argilla-frontend => extralit-frontend}/static/apple-touch-icon.png (100%) rename {argilla-frontend => extralit-frontend}/static/favicon-16x16.png (100%) rename {argilla-frontend => extralit-frontend}/static/favicon-32x32.png (100%) rename {argilla-frontend => extralit-frontend}/static/favicon.ico (100%) rename {argilla-frontend => extralit-frontend}/static/fonts/raptorv2premium-bold-webfont.woff (100%) rename {argilla-frontend => extralit-frontend}/static/fonts/raptorv2premium-bold-webfont.woff2 (100%) rename {argilla-frontend => extralit-frontend}/static/icons/arrow-down.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/arrow-up.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/assign.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/bulk-mode.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/change-height.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/check.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/chevron-down.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/chevron-left.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/chevron-right.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/chevron-up.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/clear.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/close.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/code.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/copy.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/danger.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/dark-theme.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/discard.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/draggable.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/expand-arrows.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/exploration.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/export.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/external-link.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/external.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/filter.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/focus-mode.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/hand-labeling.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/high-contrast-theme.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/import.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/info.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/kebab.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/light-theme.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/link.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/log-out.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/matching.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/math-plus.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/meatballs.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/minimize-arrows.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/no-matching.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/pen.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/plus.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/progress.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/question-answering.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/records.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/refresh.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/reset.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/row-last.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/rows.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/search.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/settings.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/shortcuts.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/similarity.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/smile-sad.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/sort.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/stats.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/suggestion.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/support.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/system-theme.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/text-classification.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/text-to-image.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/time.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/trash-empty.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/unavailable.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/update.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/validate.svg (100%) rename {argilla-frontend => extralit-frontend}/static/icons/weak-labeling.svg (100%) rename {argilla-frontend => extralit-frontend}/static/images/help-info/explain.png (100%) rename {argilla-frontend => extralit-frontend}/static/images/help-info/similarity.png (100%) rename {argilla-frontend => extralit-frontend}/static/images/img-placeholder.svg (100%) rename {argilla-frontend => extralit-frontend}/static/images/logo-white.svg (100%) rename {argilla-frontend => extralit-frontend}/static/images/logo.svg (100%) rename {argilla-frontend => extralit-frontend}/static/images/welcome-hf-sign-in-ss.jpg (100%) rename {argilla-frontend => extralit-frontend}/static/js/handlebars.min.js (100%) rename {argilla-frontend => extralit-frontend}/static/site.webmanifest (100%) rename {argilla-frontend => extralit-frontend}/translation/de.js (100%) rename {argilla-frontend => extralit-frontend}/translation/en.js (100%) rename {argilla-frontend => extralit-frontend}/translation/es.js (100%) rename {argilla-frontend => extralit-frontend}/translation/ja.js (100%) rename {argilla-frontend => extralit-frontend}/tsconfig.json (100%) rename {argilla-frontend => extralit-frontend}/v1/di/__mocks__/useResolveMock.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/di/di.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/di/index.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/IAnswer.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/__mocks__/criteria/mock.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/__mocks__/dataset/mocks.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/__mocks__/field/mocks.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/__mocks__/metadata/mock.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/__mocks__/question/mock.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/__mocks__/vector/mocks.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/color/Color.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/color/Color.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/common/Criteria.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/common/Filter.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/common/Params.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/dataset/Dataset.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/dataset/Dataset.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/dataset/DatasetExport.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/dataset/DatasetSetting.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/dataset/Metrics.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/dataset/Metrics.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/dataset/Progress.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/distribution/TaskDistribution.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/distribution/TaskDistribution.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/document/Document.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/environment/Environment.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/error/Guard.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/error/index.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/field/Field.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/field/Field.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/field/FieldType.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/hub/DatasetCreation.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/hub/DatasetCreation.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/hub/DatasetCreationBuilder.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/hub/FieldCreation.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/hub/MetadataCreation.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/hub/QuestionCreation.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/hub/Subset.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/import/ImportAnalysis.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/import/ImportHistoryDatasetBuilder.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/import/ImportHistoryDetails.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/metadata/Metadata.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/metadata/Metadata.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/metadata/MetadataCriteria.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/metadata/MetadataCriteria.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/metadata/MetadataFilter.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/metadata/MetadataFilter.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/metadata/MetadataRecord.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/metadata/MetadataType.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/oauth/OAuthProvider.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/page/PageCriteria.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/page/PageCriteria.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/question/Question.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/question/Question.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/question/QuestionAnswer.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/question/QuestionSetting.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/question/QuestionSetting.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/question/QuestionType.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/question/QuestionType.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/question/Suggestion.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/question/Suggestion.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/question/answer/SpanAnswer.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/record/Record.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/record/RecordAnswer.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/record/RecordCriteria.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/record/RecordCriteria.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/record/RecordStatus.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/record/Records.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/record/Records.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/response/ResponseCriteria.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/response/ResponseCriteria.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/response/ResponseFilter.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/search/SearchTextCriteria.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/search/SearchTextCriteria.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/similarity/Score.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/similarity/Score.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/similarity/SimilarityCriteria.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/similarity/SimilarityCriteria.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/sort/SortCriteria.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/sort/SortCriteria.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/sort/SortList.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/sort/SortList.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/suggestion/Agent.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/suggestion/SuggestionCriteria.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/suggestion/SuggestionCriteria.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/suggestion/SuggestionFilter.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/table/Extraction.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/table/Schema.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/table/TableData.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/table/Validation.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/user/User.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/vector/DatasetVector.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/vector/Vector.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/vector/Vector.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/entities/workspace/Workspace.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/events/RecordResponseUpdatedEvent.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IAuthRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IAuthService.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IDatasetRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IDatasetSettingStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IDatasetStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IDatasetsStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IDocumentStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IEnvironmentRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IFieldRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/ILocalStorageService.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IMetricsStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IOAuthRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IQuestionRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IRecordStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/ITeamProgressStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/IUserRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/RoleService.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/services/RouterService.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/auth-login-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/bulk-annotation-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/bulk-upload-documents-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/create-dataset-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/create-import-history-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/dataset-setting/get-dataset-settings-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/dataset-setting/update-dataset-setting-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/dataset-setting/update-field-setting-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/dataset-setting/update-metadata-setting-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/dataset-setting/update-question-setting-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/dataset-setting/update-vector-setting-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/delete-dataset-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/discard-record-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/export-dataset-to-hub-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-dataset-by-id-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-dataset-fields-grouped-use-case.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-dataset-fields-grouped-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-dataset-progress-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-dataset-questions-filter-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-dataset-questions-grouped-use-case.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-dataset-questions-grouped-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-dataset-suggestions-agents-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-dataset-vectors-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-datasets-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-document-by-id-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-documents-by-workspace-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-environment-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-extraction-completion-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-extraction-schema-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-fields-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-first-record-from-hub.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-hf-dataset-creation-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-import-analysis-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-import-history-details-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-import-history-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-job-status-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-metadata-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-records-by-criteria-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-user-metrics-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/get-workspaces-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/load-records-to-annotate-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/load-user-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/oauth-login-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/oauth-login-usecase.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/save-draft-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/domain/usecases/submit-record-use-case.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/events/UpdateMetricsEventHandler.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/events/UpdateTeamProgressEventHandler.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/events/index.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/events/useEvents.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/AgentRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/AuthRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/AxiosCache.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/AxiosErrorHandler.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/DatasetRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/DocumentRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/EnvironmentRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/FieldRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/HubRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/JobRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/MetadataMetricsRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/MetadataRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/MetricsRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/OAuthRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/QuestionRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/RecordRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/UserRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/VectorRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/WorkspaceRepository.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/repositories/index.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/index.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useAxiosExtension.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useBeforeUnload.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useClipboard.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useColorSchema.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useDebounce.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useFeatureToggle.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useFocusTab.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useLanguageDetector.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useLanguageDetector.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useLanguageDirection.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useLanguageDirection.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useLocalStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useNotifications.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/usePlatform.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useQueue.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useQueue.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useRole.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useRoutes.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useRunningEnvironment.test.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useRunningEnvironment.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useTranslate.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useUser.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/services/useWait.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/storage/DatasetSettingStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/storage/DatasetStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/storage/DatasetsStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/storage/DocumentStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/storage/MetricsStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/storage/RecordsStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/storage/TeamProgressStorage.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/types/api.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/types/dataset.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/types/environment.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/types/field.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/types/index.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/types/metadata.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/types/question.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/types/record.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/infrastructure/types/vector.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/store/create.ts (100%) rename {argilla-frontend => extralit-frontend}/v1/store/non-reactive.ts (100%) rename {argilla-frontend => extralit-frontend}/vue-shim.d.ts (100%) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index acf6c444f..003be84d4 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -35,14 +35,14 @@ "python.condaPath": "/usr/local/bin/micromamba", "search.exclude": { "extralit-server/src/extralit_server/static/": true, - "argilla-frontend/dist/": true, + "extralit-frontend/dist/": true, "_nuxt/": true, "node_modules/": true, ".venv/": true }, "files.watcherExclude": { "extralit-server/src/extralit_server/static/": true, - "argilla-frontend/dist/": true, + "extralit-frontend/dist/": true, "_nuxt/": true, "node_modules/": true, ".venv/": true diff --git a/.devcontainer/docker-compose/devcontainer.json b/.devcontainer/docker-compose/devcontainer.json index 4e87edc07..3f702f1c2 100644 --- a/.devcontainer/docker-compose/devcontainer.json +++ b/.devcontainer/docker-compose/devcontainer.json @@ -102,7 +102,7 @@ "python.envFile": "${workspaceFolder}/extralit/.env.test", "search.exclude": { "extralit-server/src/extralit_server/static/": true, - "argilla-frontend/dist/": true, + "extralit-frontend/dist/": true, "_nuxt/": true, "node_modules/": true, ".venv/": true, @@ -110,7 +110,7 @@ }, "files.watcherExclude": { "extralit-server/src/extralit_server/static/": true, - "argilla-frontend/dist/": true, + "extralit-frontend/dist/": true, "_nuxt/": true, "node_modules/": true, ".venv/": true diff --git a/.devcontainer/ui-design/devcontainer.json b/.devcontainer/ui-design/devcontainer.json index af3b2e8f2..731bec546 100644 --- a/.devcontainer/ui-design/devcontainer.json +++ b/.devcontainer/ui-design/devcontainer.json @@ -38,14 +38,14 @@ }, "codespaces": { "openFiles": [ - "argilla-frontend/assets/scss/abstract/variables/_themes.scss", - "argilla-frontend/assets/scss/abstract/variables/_variables.scss" + "extralit-frontend/assets/scss/abstract/variables/_themes.scss", + "extralit-frontend/assets/scss/abstract/variables/_variables.scss" ] } }, "onCreateCommand": "echo '🎨 Setting up design environment...'", - "postCreateCommand": "cd argilla-frontend && npm install && echo '# Designer Guide\n\n1. Edit theme files in `assets/scss/`\n2. The development server will automatically reload to show your changes\n3. Press F1 and type \"Focus on SCSS Files\" to see only design files'", - "postStartCommand": "cd argilla-frontend && API_BASE_URL=https://extralit-public-demo.hf.space/ npm run dev", + "postCreateCommand": "cd extralit-frontend && npm install && echo '# Designer Guide\n\n1. Edit theme files in `assets/scss/`\n2. The development server will automatically reload to show your changes\n3. Press F1 and type \"Focus on SCSS Files\" to see only design files'", + "postStartCommand": "cd extralit-frontend && API_BASE_URL=https://extralit-public-demo.hf.space/ npm run dev", "forwardPorts": [ 3000 ], diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index 55e55413e..dd2baf7f3 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -22,13 +22,13 @@ When contributing to Extralit, consider these guidelines: Extralit is organized as a monorepo with several main components: - **extralit/**: Python SDK and core extraction functionality -- **extralit-server/** (formerly extralit-server): Backend server implementation -- **argilla-frontend/**: Frontend web application (will be renamed to extralit-frontend in future) +- **extralit-server/** (formerly argilla-server): Backend server implementation +- **extralit-frontend/** (formerly argilla-frontend): Frontend web application - **examples/**: Sample implementations and deployment configurations ## Core Components -### Frontend (`argilla-frontend`) +### Frontend (`extralit-frontend`) The frontend is built with Vue.js and Nuxt.js, providing a modern web interface for document management, extraction, and annotation. diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 19af2b044..b7d2f6006 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -86,10 +86,10 @@ jobs: with: node-version: 20 cache: "npm" - cache-dependency-path: argilla-frontend/package-lock.json + cache-dependency-path: extralit-frontend/package-lock.json - - name: Setup argilla-frontend dependencies - working-directory: argilla-frontend + - name: Setup extralit-frontend dependencies + working-directory: extralit-frontend env: API_BASE_URL: http://localhost:3000 run: | diff --git a/.github/workflows/argilla-frontend.build-push-dev-frontend-docker.yml b/.github/workflows/extralit-frontend.build-push-dev-frontend-docker.yml similarity index 96% rename from .github/workflows/argilla-frontend.build-push-dev-frontend-docker.yml rename to .github/workflows/extralit-frontend.build-push-dev-frontend-docker.yml index 341180614..42d17e889 100644 --- a/.github/workflows/argilla-frontend.build-push-dev-frontend-docker.yml +++ b/.github/workflows/extralit-frontend.build-push-dev-frontend-docker.yml @@ -1,4 +1,4 @@ -name: Build Argilla Docker image +name: Build Extralit Docker image on: workflow_call: @@ -43,7 +43,7 @@ jobs: runs-on: ubuntu-latest defaults: run: - working-directory: argilla-frontend + working-directory: extralit-frontend # Grant permissions to `GITHUB_TOKEN` for Google Cloud Workload Identity Provider permissions: @@ -107,7 +107,7 @@ jobs: - name: Build and push uses: docker/build-push-action@v4 with: - context: argilla-frontend + context: extralit-frontend file: ${{ inputs.dockerfile }} platforms: ${{ inputs.platforms }} tags: ${{ steps.generate-docker-tags.outputs.tags }} diff --git a/.github/workflows/argilla-frontend.deploy-environment.yml b/.github/workflows/extralit-frontend.deploy-environment.yml similarity index 91% rename from .github/workflows/argilla-frontend.deploy-environment.yml rename to .github/workflows/extralit-frontend.deploy-environment.yml index 9bcf22ee2..b8301f518 100644 --- a/.github/workflows/argilla-frontend.deploy-environment.yml +++ b/.github/workflows/extralit-frontend.deploy-environment.yml @@ -1,4 +1,4 @@ -name: Deploy Argilla environment +name: Deploy Extralit environment on: workflow_dispatch: @@ -6,7 +6,7 @@ on: image-name: description: The name of the Docker image to deploy. type: string - default: extralit/argilla-quickstart-for-dev + default: extralit/extralit-quickstart-for-dev image-version: description: The version of the Docker image to deploy. In the form pr-. type: string @@ -22,7 +22,7 @@ on: jobs: deploy: - name: Deploy Argilla to Cloud Run + name: Deploy Extralit to Cloud Run runs-on: ubuntu-latest # Grant permissions to `GITHUB_TOKEN` for Google Cloud Workload Identity Provider @@ -51,7 +51,7 @@ jobs: id: deploy uses: "google-github-actions/deploy-cloudrun@v1" with: - service: argilla-quickstart-${{ inputs.image-version }} + service: extralit-quickstart-${{ inputs.image-version }} image: europe-docker.pkg.dev/argilla-ci/${{ inputs.image-name}}:${{ inputs.image-version }} region: europe-southwest1 flags: "--min-instances=1 --max-instances=1 --port=3000 --cpu=2000m --memory=4096Mi --no-cpu-throttling --allow-unauthenticated" @@ -63,13 +63,13 @@ jobs: ANNOTATOR_PASSWORD=${{ steps.credentials.outputs.annotator }} ANNOTATOR_API_KEY=${{ steps.credentials.outputs.annotator }} HF_HUB_DISABLE_TELEMETRY=1 - API_BASE_URL=https://dev.argilla.io/ + API_BASE_URL=https://dev.extralit.io/ - name: Post credentials in Slack uses: ./.github/actions/slack-post-credentials if: ${{ github.event_name != 'workflow_dispatch' }} with: - slack-channel-name: argilla-github + slack-channel-name: extralit-github url: ${{ steps.deploy.outputs.url }} owner: ${{ steps.credentials.outputs.owner }} admin: ${{ steps.credentials.outputs.admin }} diff --git a/.github/workflows/argilla-frontend.teardown-all-pr-environments.yml b/.github/workflows/extralit-frontend.teardown-all-pr-environments.yml similarity index 100% rename from .github/workflows/argilla-frontend.teardown-all-pr-environments.yml rename to .github/workflows/extralit-frontend.teardown-all-pr-environments.yml diff --git a/.github/workflows/argilla-frontend.teardown-pr-environment.yml b/.github/workflows/extralit-frontend.teardown-pr-environment.yml similarity index 93% rename from .github/workflows/argilla-frontend.teardown-pr-environment.yml rename to .github/workflows/extralit-frontend.teardown-pr-environment.yml index c2b93ab88..098bc508a 100644 --- a/.github/workflows/argilla-frontend.teardown-pr-environment.yml +++ b/.github/workflows/extralit-frontend.teardown-pr-environment.yml @@ -32,7 +32,7 @@ jobs: - name: Remove PR environment if exists run: | - service_name="argilla-quickstart-pr-${{ github.event.pull_request.number }}" + service_name="extralit-quickstart-pr-${{ github.event.pull_request.number }}" services=$(gcloud run services list --project=argilla-ci --format="value(metadata.name)") if echo "$services" | grep -q "$service_name"; then echo "Service '$service_name' exists. Removing it..." diff --git a/.github/workflows/argilla-frontend.yml b/.github/workflows/extralit-frontend.yml similarity index 79% rename from .github/workflows/argilla-frontend.yml rename to .github/workflows/extralit-frontend.yml index 87158318d..4708d5959 100644 --- a/.github/workflows/argilla-frontend.yml +++ b/.github/workflows/extralit-frontend.yml @@ -1,4 +1,4 @@ -name: Build Argilla frontend package +name: Build Extralit frontend package concurrency: group: ${{ github.workflow }}-${{ github.ref }} @@ -13,13 +13,13 @@ on: - develop - releases/** paths: - - "argilla-frontend/**" - - ".github/workflows/argilla-frontend.*" + - "extralit-frontend/**" + - ".github/workflows/extralit-frontend.*" pull_request: types: [opened, edited, synchronize, reopened, ready_for_review] paths: - - "argilla-frontend/**" + - "extralit-frontend/**" permissions: @@ -29,12 +29,12 @@ permissions: jobs: build: - name: Build argilla-frontend + name: Build extralit-frontend if: github.event.pull_request.draft == false runs-on: ubuntu-latest defaults: run: - working-directory: argilla-frontend + working-directory: extralit-frontend steps: - name: Checkout Code 🛎 @@ -43,7 +43,7 @@ jobs: - name: Update repo visualizer uses: githubocto/repo-visualizer@0.7.1 with: - root_path: "argilla-frontend/" + root_path: "extralit-frontend/" excluded_paths: "dist,build,node_modules,docs,tests,.swm,assets,.github,package-lock.json,pdm.lock" excluded_globs: "*.spec.js;**/*.{png,jpg,svg,md};**/!(*.module).ts,**/__pycache__/,**/__mocks__/,LICENSE*,**/.gitignore,**/*.egg-info/,**/.*/" output_file: "repo-visualizer.svg" @@ -95,31 +95,31 @@ jobs: - name: Upload frontend statics as artifact uses: actions/upload-artifact@v4 with: - name: argilla-frontend - path: argilla-frontend/dist + name: extralit-frontend + path: extralit-frontend/dist # build_dev_docker_image: - # name: Build development argilla-frontend docker image + # name: Build development extralit-frontend docker image # needs: build - # uses: ./.github/workflows/argilla-frontend.build-push-dev-frontend-docker.yml + # uses: ./.github/workflows/extralit-frontend.build-push-dev-frontend-docker.yml # if: | # !cancelled() && # github.event_name == 'pull_request' && github.event.pull_request.draft == false # with: - # image-name: extralit/argilla-frontend-for-dev - # dockerfile: argilla-frontend/dev.frontend.Dockerfile + # image-name: extralit/extralit-frontend-for-dev + # dockerfile: extralit-frontend/dev.frontend.Dockerfile # platforms: linux/amd64 # secrets: inherit # deploy: # name: Deploy pr environment - # uses: ./.github/workflows/argilla-frontend.deploy-environment.yml + # uses: ./.github/workflows/extralit-frontend.deploy-environment.yml # needs: build_dev_docker_image # if: | # !cancelled() && # needs.build_dev_docker_image.result == 'success' && # github.event_name == 'pull_request' && github.event.pull_request.draft == false # with: - # image-name: extralit/argilla-frontend-for-dev + # image-name: extralit/extralit-frontend-for-dev # image-version: ${{ needs.build_dev_docker_image.outputs.version }} # secrets: inherit diff --git a/.kiro/specs/import-history-sidebar/design.md b/.kiro/specs/import-history-sidebar/design.md index 641bbba05..09fde6d7a 100644 --- a/.kiro/specs/import-history-sidebar/design.md +++ b/.kiro/specs/import-history-sidebar/design.md @@ -64,7 +64,7 @@ graph TD ### Frontend Components -#### 1. Home Page Integration (`argilla-frontend/pages/index.vue`) +#### 1. Home Page Integration (`extralit-frontend/pages/index.vue`) **Recent Imports Sidebar Section:** - Replace example datasets section with Recent Imports component @@ -93,7 +93,7 @@ graph TD ``` -#### 2. Recent Imports Component (`argilla-frontend/components/features/import/RecentImports.vue`) +#### 2. Recent Imports Component (`extralit-frontend/components/features/import/RecentImports.vue`) **Features:** - Displays 5 most recent ImportHistory records for the workspace @@ -151,7 +151,7 @@ graph TD ``` -#### 3. Recent Import Card Component (`argilla-frontend/components/features/import/RecentImportCard.vue`) +#### 3. Recent Import Card Component (`extralit-frontend/components/features/import/RecentImportCard.vue`) **Features:** - Compact card display for individual ImportHistory records @@ -185,7 +185,7 @@ graph TD ``` -#### 4. Import Configuration Page (`argilla-frontend/pages/new/import/_id.vue`) +#### 4. Import Configuration Page (`extralit-frontend/pages/new/import/_id.vue`) **Features:** - New page route for ImportHistory-based dataset configuration @@ -225,7 +225,7 @@ graph TD ``` -#### 5. ImportHistory Dataset Creation Builder (`argilla-frontend/v1/domain/entities/import/ImportHistoryDatasetBuilder.ts`) +#### 5. ImportHistory Dataset Creation Builder (`extralit-frontend/v1/domain/entities/import/ImportHistoryDatasetBuilder.ts`) **Purpose:** - Adapts ImportHistory data structure to DatasetCreation format @@ -266,7 +266,7 @@ export class ImportHistoryDatasetBuilder { #### 6. Enhanced ImportHistory Use Cases -**New Get ImportHistory Details Use Case (`argilla-frontend/v1/domain/usecases/get-import-history-details-use-case.ts`)** +**New Get ImportHistory Details Use Case (`extralit-frontend/v1/domain/usecases/get-import-history-details-use-case.ts`)** ```typescript export class GetImportHistoryDetailsUseCase { constructor(private readonly axios: NuxtAxiosInstance) {} @@ -372,7 +372,7 @@ A new component that displays ImportHistory tabular data using BaseSimpleTable w ### File Organization ``` -argilla-frontend/ +extralit-frontend/ ├── pages/new/import/ │ └── _id.vue # Import configuration page ├── components/features/import/ diff --git a/.kiro/specs/import-history-sidebar/tasks.md b/.kiro/specs/import-history-sidebar/tasks.md index e97ce8976..3b15e85ec 100644 --- a/.kiro/specs/import-history-sidebar/tasks.md +++ b/.kiro/specs/import-history-sidebar/tasks.md @@ -8,7 +8,7 @@ - [ ] 2. Create ImportHistory Details Use Case - [x] 2.1 Create GetImportHistoryDetailsUseCase class - - Write use case class in `argilla-frontend/v1/domain/usecases/get-import-history-details-use-case.ts` + - Write use case class in `extralit-frontend/v1/domain/usecases/get-import-history-details-use-case.ts` - Implement execute method to fetch detailed ImportHistory data - Add proper TypeScript interfaces for ImportHistoryResponse with data field - _Requirements: 2.3, 3.1_ @@ -21,35 +21,35 @@ - [ ] 3. Create ImportHistory Dataset Builder - [x] 3.1 Create ImportHistoryDatasetBuilder class - - Write builder class in `argilla-frontend/v1/domain/entities/import/ImportHistoryDatasetBuilder.ts` + - Write builder class in `extralit-frontend/v1/domain/entities/import/ImportHistoryDatasetBuilder.ts` - Implement conversion from ImportHistory data structure to DatasetCreation format - Add field mapping capabilities similar to HuggingFace datasets - Handle data type inference and validation for ImportHistory fields - _Requirements: 3.4, 4.1, 4.7_ - [x] 3.2 Create ImportHistory entity types - - Define ImportHistoryDetailsResponse interface in `argilla-frontend/v1/domain/entities/import/ImportHistoryDetails.ts` + - Define ImportHistoryDetailsResponse interface in `extralit-frontend/v1/domain/entities/import/ImportHistoryDetails.ts` - Add proper TypeScript types for ImportHistory data structure - Ensure compatibility with existing ImportHistoryResponse from backend - _Requirements: 3.1, 3.3_ - [ ] 4. Create Recent Imports Sidebar Components - [x] 4.1 Create RecentImports component - - Write component in `argilla-frontend/components/features/import/RecentImports.vue` + - Write component in `extralit-frontend/components/features/import/RecentImports.vue` - Implement loading, empty, and error states for recent imports - Add integration with GetImportHistoryUseCase for fetching recent imports - Include "View All Imports" and "Import Documents" buttons - _Requirements: 1.1, 1.2, 1.3, 1.4, 1.6, 6.1, 6.3_ - [x] 4.2 Create RecentImportCard component - - Write component in `argilla-frontend/components/features/import/RecentImportCard.vue` + - Write component in `extralit-frontend/components/features/import/RecentImportCard.vue` - Implement compact card display for individual ImportHistory records - Show filename, date, and summary statistics with proper styling - Add hover states and click interactions - _Requirements: 1.3, 5.3_ - [x] 4.3 Create RecentImports view model - - Write view model in `argilla-frontend/components/features/import/useRecentImportsViewModel.ts` + - Write view model in `extralit-frontend/components/features/import/useRecentImportsViewModel.ts` - Implement reactive state management for recent imports data - Add error handling and loading state management - Integrate with GetImportHistoryUseCase for data fetching @@ -57,14 +57,14 @@ - [ ] 5. Create ImportHistory Data Preview Component - [x] 5.1 Create ImportHistoryDataPreview component - - Write component in `argilla-frontend/components/features/import/ImportHistoryDataPreview.vue` + - Write component in `extralit-frontend/components/features/import/ImportHistoryDataPreview.vue` - Implement tabular display of ImportHistory data using BaseSimpleTable - Add pagination, search, and filtering capabilities for large datasets - Create responsive design for preview pane integration - _Requirements: 3.2, 3.3, 3.7_ - [x] 6. Create Import Configuration Page - [x] 6.1 Create import configuration page route - - Create page file `argilla-frontend/pages/new/import/_id.vue` + - Create page file `extralit-frontend/pages/new/import/_id.vue` - Implement route parameter validation and ImportHistory data fetching - Add loading, error, and navigation states - Create breadcrumb navigation with proper routing @@ -100,7 +100,7 @@ - [x] 8. Integrate Recent Imports into Home Page - [x] 8.1 Modify home page sidebar - - Update `argilla-frontend/pages/index.vue` to replace example datasets with RecentImports component + - Update `extralit-frontend/pages/index.vue` to replace example datasets with RecentImports component - Add event handlers for import selection and modal opening - Integrate with existing workspace selection functionality - Maintain existing ImportModal and ImportHistoryList modal functionality @@ -114,7 +114,7 @@ - [x] 9. Add Import Configuration Route - [x] 9.1 Update routes configuration - - Add importConfiguration route to ROUTES object in `argilla-frontend/v1/infrastructure/services/useRoutes.ts` + - Add importConfiguration route to ROUTES object in `extralit-frontend/v1/infrastructure/services/useRoutes.ts` - Implement goToImportConfiguration navigation method - Ensure proper route parameter handling for import_id - _Requirements: 2.1, 2.2, 7.1_ diff --git a/.kiro/specs/papers-library-importer/design.md b/.kiro/specs/papers-library-importer/design.md index 9fd577765..f2b60a543 100644 --- a/.kiro/specs/papers-library-importer/design.md +++ b/.kiro/specs/papers-library-importer/design.md @@ -125,17 +125,17 @@ async def upload_reference_documents_job( ### Frontend Components **Architecture Pattern:** -- **Backend API Types**: Located in `argilla-frontend/v1/domain/entities/import/ImportAnalysis.ts` - contains data structures that map directly to backend API schemas (ImportAnalysisRequest, ImportAnalysisResponse, DocumentImportAnalysis, etc.) -- **Frontend Component Types**: Located in `argilla-frontend/components/features/import/types.ts` - contains UI-specific types (AnalysisTableRow, TableColumn, ImportConfirmationData, etc.) and re-exports backend types for convenience -- **Use Cases**: Located in `argilla-frontend/v1/domain/usecases/get-import-analysis-use-case.ts` - handles API communication with ImportAnalysisUseCase class for POST /api/v1/imports/analyze requests +- **Backend API Types**: Located in `extralit-frontend/v1/domain/entities/import/ImportAnalysis.ts` - contains data structures that map directly to backend API schemas (ImportAnalysisRequest, ImportAnalysisResponse, DocumentImportAnalysis, etc.) +- **Frontend Component Types**: Located in `extralit-frontend/components/features/import/types.ts` - contains UI-specific types (AnalysisTableRow, TableColumn, ImportConfirmationData, etc.) and re-exports backend types for convenience +- **Use Cases**: Located in `extralit-frontend/v1/domain/usecases/get-import-analysis-use-case.ts` - handles API communication with ImportAnalysisUseCase class for POST /api/v1/imports/analyze requests -Note to reuse existing styles in argilla-frontend/assets/scss/base/base.scss, argilla-frontend/assets/scss/abstract/variables/_variables.scss and existing components in `components/base` where possible to keep similar the design system and code reuse and best practices. +Note to reuse existing styles in extralit-frontend/assets/scss/base/base.scss, extralit-frontend/assets/scss/abstract/variables/_variables.scss and existing components in `components/base` where possible to keep similar the design system and code reuse and best practices. -- `argilla-frontend/components/base`: +- `extralit-frontend/components/base`: base-action-tooltip, base-badge, base-banner, base-brand-icon, base-breadcrumbs, base-button, base-card, base-checkbox, base-code, base-collpasable-panel, base-date, base-documentation-viewer, base-dropdown, base-feedback, base-icon, base-input, base-loading, base-modal, base-pdf-viewer, base-progress, base-radio-button, base-range, base-render-html, base-render-markdown, base-render-table, base-resizable, base-scroll, base-search-bar, base-separator, base-shapes, base-slider, base-spinner, base-switch, base-tabs, base-tag, base-toast, base-tooltip, base-topbar-brand -#### 1. Home Page Integration (`argilla-frontend/pages/index.vue`) +#### 1. Home Page Integration (`extralit-frontend/pages/index.vue`) **Import Documents Button:** - Add "Import Documents" button above existing ImportFromHub and ImportFromPython components @@ -147,7 +147,7 @@ Note to reuse existing styles in argilla-frontend/assets/scss/base/base.scss, ar - Pass selected workspace ID to ImportModal component for import analysis - Ensure workspace context is maintained throughout the import workflow -#### 2. FlowModal Base Component (`argilla-frontend/components/base/base-flow-modal/BaseFlowModal.vue`) +#### 2. FlowModal Base Component (`extralit-frontend/components/base/base-flow-modal/BaseFlowModal.vue`) **New full-screen modal component designed for multi-step workflows:** @@ -202,7 +202,7 @@ interface FlowModalProps { - Smooth transitions between steps - Loading states and disabled button styling -#### 3. Import Modal Workflow (`argilla-frontend/components/features/import/ImportModal.vue`) +#### 3. Import Modal Workflow (`extralit-frontend/components/features/import/ImportModal.vue`) **Full-page modal using new BaseFlowModal component with multi-step workflow:** - Step 1: Upload Bibliography File (.bib file upload) @@ -218,13 +218,13 @@ interface FlowModalProps { #### 3. Upload Steps Components -**Step 1: Bibliography Upload (`argilla-frontend/components/features/import/ImportBibUpload.vue`)** +**Step 1: Bibliography Upload (`extralit-frontend/components/features/import/ImportBibUpload.vue`)** - Single .bib file upload with drag-and-drop or file picker - Support for ";"-separated values (especially the `file` attribute in zotero_export.bib) - Parsing preview of dataframe columns parsed from the .bib file, - Display upload status and reference count -**Step 2: PDF Upload (`argilla-frontend/components/features/import/ImportPdfUpload.vue`)** +**Step 2: PDF Upload (`extralit-frontend/components/features/import/ImportPdfUpload.vue`)** - Multiple PDF file upload with drag-and-drop or folder selection - File path matching preview with bibliography entries - Upload progress and file validation @@ -297,7 +297,7 @@ Example BibTeX files: } ``` -#### 4. Import Analysis Table (`argilla-frontend/components/features/import/ImportAnalysisTable.vue`) +#### 4. Import Analysis Table (`extralit-frontend/components/features/import/ImportAnalysisTable.vue`) **Features using new simple table component:** - Uses `GetImportAnalysisUseCase` from `~/v1/domain/usecases/get-import-analysis-use-case.ts` for backend communication @@ -313,13 +313,13 @@ Example BibTeX files: - Receives workspace ID as prop and passes it to the analysis use case - Automatically triggers analysis when dataframe data is available and workspace ID is provided -**Table Component (`argilla-frontend/components/base/base-simple-table/BaseSimpleTable.vue`)** +**Table Component (`extralit-frontend/components/base/base-simple-table/BaseSimpleTable.vue`)** - New reusable table component built on Tabulator - Simpler than base-render-table, focused on basic tabular display using the `/dist/css/tabulator_semanticui.min.css` theme - Support for custom column renderers and actions - Built-in sorting, filtering, and pagination -#### 5. Batch Upload Progress (`argilla-frontend/components/features/import/ImportBatchProgress.vue`) +#### 5. Batch Upload Progress (`extralit-frontend/components/features/import/ImportBatchProgress.vue`) **Features:** - Files uploaded in batches with sequential batch processing @@ -332,20 +332,20 @@ Example BibTeX files: #### 6. Import Summary & History Components -**Import Summary (`argilla-frontend/components/features/import/ImportSummary.vue`)** +**Import Summary (`extralit-frontend/components/features/import/ImportSummary.vue`)** - Import metadata summary with statistics (total processed, successfully added, updated, skipped, failed) - Detailed breakdown of results with error information - Failed imports table with retry options - "View Import Log" button to access detailed history - "Return to Library" button for navigation -**Import History List (`argilla-frontend/components/features/import/ImportHistoryList.vue`)** +**Import History List (`extralit-frontend/components/features/import/ImportHistoryList.vue`)** - Display list of all import operations with metadata - Columns: Import ID, Uploaded By, Date & Time, Source File Name, Total Papers, Success/Updated/Skipped/Failed counts - "View Details" action for each import to display detailed data table - Pagination and filtering for large import history -**Import History Details (`argilla-frontend/components/features/import/ImportHistoryDetails.vue`)** +**Import History Details (`extralit-frontend/components/features/import/ImportHistoryDetails.vue`)** - Detailed data table showing individual reference results - Columns: Reference, Title, Authors, Year, Error Message, Actions - Filter and search functionality @@ -609,7 +609,7 @@ The import system processes tabular data (BibTeX, CSV, etc.) into a standardized ### File Organization ``` -argilla-frontend/ +extralit-frontend/ ├── v1/domain/ │ ├── entities/import/ │ │ └── ImportAnalysis.ts # Backend API data structures diff --git a/.kiro/steering/structure.md b/.kiro/steering/structure.md index 25de7cc53..a9ae6899e 100644 --- a/.kiro/steering/structure.md +++ b/.kiro/steering/structure.md @@ -6,7 +6,7 @@ This is a monorepo containing multiple related packages: ``` extralit/ ├── extralit-server/ # FastAPI backend server -├── argilla-frontend/ # Nuxt.js web UI +├── extralit-frontend/ # Nuxt.js web UI ├── extralit/ # Python SDK and CLI ├── examples/ # Usage examples and deployments └── .kiro/ # Kiro AI assistant configuration @@ -36,9 +36,9 @@ extralit-server/ - **Background Jobs**: In `jobs/` - RQ job definitions - **Migrations**: Use Alembic in `alembic/versions/` -## Frontend Structure (argilla-frontend/) +## Frontend Structure (extralit-frontend/) ``` -argilla-frontend/ +extralit-frontend/ ├── components/ │ ├── base/ # Reusable UI components │ └── features/ # Feature-specific components @@ -179,14 +179,14 @@ examples/ ## Configuration Files - **Backend**: `extralit-server/pyproject.toml` (PDM), `.env.dev`, `.env.test` -- **Frontend**: `argilla-frontend/package.json` (npm), `nuxt.config.ts` +- **Frontend**: `extralit-frontend/package.json` (npm), `nuxt.config.ts` - **SDK**: `extralit/pyproject.toml` (PDM) - **Docker**: `docker-compose.yaml` for local development - **K8s**: `Tiltfile` for Kubernetes development ## Development Workflow 1. **Backend changes**: Work in `extralit-server/src/extralit_server/` -2. **Frontend changes**: Work in `argilla-frontend/components/` or `argilla-frontend/pages/` +2. **Frontend changes**: Work in `extralit-frontend/components/` or `extralit-frontend/pages/` 3. **SDK changes**: Work in `extralit/src/argilla/` or `extralit/src/extralit/` 4. **Tests**: Each package has its own `tests/` directory 5. **Documentation**: Use `extralit/docs/` for SDK docs diff --git a/.kiro/steering/tech.md b/.kiro/steering/tech.md index 16eecc60d..7b625a169 100644 --- a/.kiro/steering/tech.md +++ b/.kiro/steering/tech.md @@ -23,7 +23,7 @@ Extralit is a multi-component system with 5 core components: - Uvicorn for ASGI server - Typer for CLI interface -## Frontend (argilla-frontend/) +## Frontend (extralit-frontend/) - **Framework**: Nuxt.js 2.17 (Vue.js 2.7) - **Component Import**: Nuxt automatically scans the ~/components directory and makes all .vue files - **Build System**: npm/yarn @@ -62,7 +62,7 @@ pdm run worker # Start background worker ### Frontend Development ```bash -cd argilla-frontend +cd extralit-frontend npm install npm run dev # Start dev server npm run build # Production build diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c12b35188..2409fd576 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -94,15 +94,15 @@ repos: - --fuzzy-match-generates-todo ############################################################################## - # argilla-frontend specific hooks + # extralit-frontend specific hooks ############################################################################## - repo: local hooks: - id: frontend-lint - name: "Lint and fix argilla-frontend files" - entry: bash -c 'cd argilla-frontend && npx eslint --fix "${@#argilla-frontend/}" || true' + name: "Lint and fix extralit-frontend files" + entry: bash -c 'cd extralit-frontend && npx eslint --fix "${@#extralit-frontend/}" || true' language: system - files: '^argilla-frontend/.*\.(js|ts|vue)$' + files: '^extralit-frontend/.*\.(js|ts|vue)$' pass_filenames: true ############################################################################## diff --git a/Tiltfile b/Tiltfile index e99160250..b64063372 100644 --- a/Tiltfile +++ b/Tiltfile @@ -80,10 +80,10 @@ helm_resource( ) # extralit-server is the web backend (FastAPI + SQL database) -if not os.path.exists('argilla-frontend/dist'): - local('npm install && npm run build', dir='argilla-frontend', quiet=True) +if not os.path.exists('extralit-frontend/dist'): + local('npm install && npm run build', dir='extralit-frontend', quiet=True) if not os.path.exists('extralit-server/src/extralit_server/static'): - local('cp -r argilla-frontend/dist extralit-server/src/extralit_server/static', quiet=True) + local('cp -r extralit-frontend/dist extralit-server/src/extralit_server/static', quiet=True) if not os.path.exists('extralit-server/dist/'): local('pdm build', dir='extralit-server') docker_build( @@ -172,7 +172,7 @@ docker_build( "{DOCKER_REPO}/extralit-server".format(DOCKER_REPO=DOCKER_REPO), context='extralit/', dockerfile='extralit/docker/extralit.dockerfile', - ignore=['.*', 'argilla-frontend/', 'extralit-server/', '**/__pycache__', '*.pyc'], + ignore=['.*', 'extralit-frontend/', 'extralit-server/', '**/__pycache__', '*.pyc'], live_update=[ sync('extralit/', '/home/extralit/'), ] diff --git a/codecov.yml b/codecov.yml index 0ed568ccb..b3a453cba 100644 --- a/codecov.yml +++ b/codecov.yml @@ -10,7 +10,7 @@ coverage: flags: frontend: paths: - - argilla-frontend/ + - extralit-frontend/ carryforward: true extralit: paths: @@ -45,6 +45,6 @@ component_management: paths: - extralit-server/** - - component_id: argilla-frontend + - component_id: extralit-frontend paths: - - argilla-frontend/** + - extralit-frontend/** diff --git a/argilla-frontend/.eslintignore b/extralit-frontend/.eslintignore similarity index 100% rename from argilla-frontend/.eslintignore rename to extralit-frontend/.eslintignore diff --git a/argilla-frontend/.eslintrc.js b/extralit-frontend/.eslintrc.js similarity index 100% rename from argilla-frontend/.eslintrc.js rename to extralit-frontend/.eslintrc.js diff --git a/argilla-frontend/.gitignore b/extralit-frontend/.gitignore similarity index 100% rename from argilla-frontend/.gitignore rename to extralit-frontend/.gitignore diff --git a/argilla-frontend/.prettierrc.js b/extralit-frontend/.prettierrc.js similarity index 100% rename from argilla-frontend/.prettierrc.js rename to extralit-frontend/.prettierrc.js diff --git a/argilla-frontend/CHANGELOG.md b/extralit-frontend/CHANGELOG.md similarity index 100% rename from argilla-frontend/CHANGELOG.md rename to extralit-frontend/CHANGELOG.md diff --git a/argilla-frontend/LICENSE b/extralit-frontend/LICENSE similarity index 100% rename from argilla-frontend/LICENSE rename to extralit-frontend/LICENSE diff --git a/argilla-frontend/README.md b/extralit-frontend/README.md similarity index 100% rename from argilla-frontend/README.md rename to extralit-frontend/README.md diff --git a/argilla-frontend/__mocks__/styleMock.js b/extralit-frontend/__mocks__/styleMock.js similarity index 100% rename from argilla-frontend/__mocks__/styleMock.js rename to extralit-frontend/__mocks__/styleMock.js diff --git a/argilla-frontend/__mocks__/tabulator-tables.js b/extralit-frontend/__mocks__/tabulator-tables.js similarity index 100% rename from argilla-frontend/__mocks__/tabulator-tables.js rename to extralit-frontend/__mocks__/tabulator-tables.js diff --git a/argilla-frontend/assets/css/fonts.css b/extralit-frontend/assets/css/fonts.css similarity index 100% rename from argilla-frontend/assets/css/fonts.css rename to extralit-frontend/assets/css/fonts.css diff --git a/argilla-frontend/assets/css/themes.css b/extralit-frontend/assets/css/themes.css similarity index 100% rename from argilla-frontend/assets/css/themes.css rename to extralit-frontend/assets/css/themes.css diff --git a/argilla-frontend/assets/icon-template.js.tmp b/extralit-frontend/assets/icon-template.js.tmp similarity index 100% rename from argilla-frontend/assets/icon-template.js.tmp rename to extralit-frontend/assets/icon-template.js.tmp diff --git a/argilla-frontend/assets/icons/arrow-down.js b/extralit-frontend/assets/icons/arrow-down.js similarity index 100% rename from argilla-frontend/assets/icons/arrow-down.js rename to extralit-frontend/assets/icons/arrow-down.js diff --git a/argilla-frontend/assets/icons/arrow-up.js b/extralit-frontend/assets/icons/arrow-up.js similarity index 100% rename from argilla-frontend/assets/icons/arrow-up.js rename to extralit-frontend/assets/icons/arrow-up.js diff --git a/argilla-frontend/assets/icons/assign.js b/extralit-frontend/assets/icons/assign.js similarity index 100% rename from argilla-frontend/assets/icons/assign.js rename to extralit-frontend/assets/icons/assign.js diff --git a/argilla-frontend/assets/icons/bulk-mode.js b/extralit-frontend/assets/icons/bulk-mode.js similarity index 100% rename from argilla-frontend/assets/icons/bulk-mode.js rename to extralit-frontend/assets/icons/bulk-mode.js diff --git a/argilla-frontend/assets/icons/change-height.js b/extralit-frontend/assets/icons/change-height.js similarity index 100% rename from argilla-frontend/assets/icons/change-height.js rename to extralit-frontend/assets/icons/change-height.js diff --git a/argilla-frontend/assets/icons/check.js b/extralit-frontend/assets/icons/check.js similarity index 100% rename from argilla-frontend/assets/icons/check.js rename to extralit-frontend/assets/icons/check.js diff --git a/argilla-frontend/assets/icons/chevron-down.js b/extralit-frontend/assets/icons/chevron-down.js similarity index 100% rename from argilla-frontend/assets/icons/chevron-down.js rename to extralit-frontend/assets/icons/chevron-down.js diff --git a/argilla-frontend/assets/icons/chevron-left.js b/extralit-frontend/assets/icons/chevron-left.js similarity index 100% rename from argilla-frontend/assets/icons/chevron-left.js rename to extralit-frontend/assets/icons/chevron-left.js diff --git a/argilla-frontend/assets/icons/chevron-right.js b/extralit-frontend/assets/icons/chevron-right.js similarity index 100% rename from argilla-frontend/assets/icons/chevron-right.js rename to extralit-frontend/assets/icons/chevron-right.js diff --git a/argilla-frontend/assets/icons/chevron-up.js b/extralit-frontend/assets/icons/chevron-up.js similarity index 100% rename from argilla-frontend/assets/icons/chevron-up.js rename to extralit-frontend/assets/icons/chevron-up.js diff --git a/argilla-frontend/assets/icons/clear.js b/extralit-frontend/assets/icons/clear.js similarity index 100% rename from argilla-frontend/assets/icons/clear.js rename to extralit-frontend/assets/icons/clear.js diff --git a/argilla-frontend/assets/icons/close.js b/extralit-frontend/assets/icons/close.js similarity index 100% rename from argilla-frontend/assets/icons/close.js rename to extralit-frontend/assets/icons/close.js diff --git a/argilla-frontend/assets/icons/code.js b/extralit-frontend/assets/icons/code.js similarity index 100% rename from argilla-frontend/assets/icons/code.js rename to extralit-frontend/assets/icons/code.js diff --git a/argilla-frontend/assets/icons/copy.js b/extralit-frontend/assets/icons/copy.js similarity index 100% rename from argilla-frontend/assets/icons/copy.js rename to extralit-frontend/assets/icons/copy.js diff --git a/argilla-frontend/assets/icons/danger.js b/extralit-frontend/assets/icons/danger.js similarity index 100% rename from argilla-frontend/assets/icons/danger.js rename to extralit-frontend/assets/icons/danger.js diff --git a/argilla-frontend/assets/icons/dark-theme.js b/extralit-frontend/assets/icons/dark-theme.js similarity index 100% rename from argilla-frontend/assets/icons/dark-theme.js rename to extralit-frontend/assets/icons/dark-theme.js diff --git a/argilla-frontend/assets/icons/discard.js b/extralit-frontend/assets/icons/discard.js similarity index 100% rename from argilla-frontend/assets/icons/discard.js rename to extralit-frontend/assets/icons/discard.js diff --git a/argilla-frontend/assets/icons/document.js b/extralit-frontend/assets/icons/document.js similarity index 100% rename from argilla-frontend/assets/icons/document.js rename to extralit-frontend/assets/icons/document.js diff --git a/argilla-frontend/assets/icons/draggable.js b/extralit-frontend/assets/icons/draggable.js similarity index 100% rename from argilla-frontend/assets/icons/draggable.js rename to extralit-frontend/assets/icons/draggable.js diff --git a/argilla-frontend/assets/icons/expand-arrows.js b/extralit-frontend/assets/icons/expand-arrows.js similarity index 100% rename from argilla-frontend/assets/icons/expand-arrows.js rename to extralit-frontend/assets/icons/expand-arrows.js diff --git a/argilla-frontend/assets/icons/exploration.js b/extralit-frontend/assets/icons/exploration.js similarity index 100% rename from argilla-frontend/assets/icons/exploration.js rename to extralit-frontend/assets/icons/exploration.js diff --git a/argilla-frontend/assets/icons/export.js b/extralit-frontend/assets/icons/export.js similarity index 100% rename from argilla-frontend/assets/icons/export.js rename to extralit-frontend/assets/icons/export.js diff --git a/argilla-frontend/assets/icons/external-link.js b/extralit-frontend/assets/icons/external-link.js similarity index 100% rename from argilla-frontend/assets/icons/external-link.js rename to extralit-frontend/assets/icons/external-link.js diff --git a/argilla-frontend/assets/icons/external.js b/extralit-frontend/assets/icons/external.js similarity index 100% rename from argilla-frontend/assets/icons/external.js rename to extralit-frontend/assets/icons/external.js diff --git a/argilla-frontend/assets/icons/filter.js b/extralit-frontend/assets/icons/filter.js similarity index 100% rename from argilla-frontend/assets/icons/filter.js rename to extralit-frontend/assets/icons/filter.js diff --git a/argilla-frontend/assets/icons/focus-mode.js b/extralit-frontend/assets/icons/focus-mode.js similarity index 100% rename from argilla-frontend/assets/icons/focus-mode.js rename to extralit-frontend/assets/icons/focus-mode.js diff --git a/argilla-frontend/assets/icons/hand-labeling.js b/extralit-frontend/assets/icons/hand-labeling.js similarity index 100% rename from argilla-frontend/assets/icons/hand-labeling.js rename to extralit-frontend/assets/icons/hand-labeling.js diff --git a/argilla-frontend/assets/icons/high-contrast-theme.js b/extralit-frontend/assets/icons/high-contrast-theme.js similarity index 100% rename from argilla-frontend/assets/icons/high-contrast-theme.js rename to extralit-frontend/assets/icons/high-contrast-theme.js diff --git a/argilla-frontend/assets/icons/import.js b/extralit-frontend/assets/icons/import.js similarity index 100% rename from argilla-frontend/assets/icons/import.js rename to extralit-frontend/assets/icons/import.js diff --git a/argilla-frontend/assets/icons/index.js b/extralit-frontend/assets/icons/index.js similarity index 100% rename from argilla-frontend/assets/icons/index.js rename to extralit-frontend/assets/icons/index.js diff --git a/argilla-frontend/assets/icons/info.js b/extralit-frontend/assets/icons/info.js similarity index 100% rename from argilla-frontend/assets/icons/info.js rename to extralit-frontend/assets/icons/info.js diff --git a/argilla-frontend/assets/icons/kebab.js b/extralit-frontend/assets/icons/kebab.js similarity index 100% rename from argilla-frontend/assets/icons/kebab.js rename to extralit-frontend/assets/icons/kebab.js diff --git a/argilla-frontend/assets/icons/light-theme.js b/extralit-frontend/assets/icons/light-theme.js similarity index 100% rename from argilla-frontend/assets/icons/light-theme.js rename to extralit-frontend/assets/icons/light-theme.js diff --git a/argilla-frontend/assets/icons/link.js b/extralit-frontend/assets/icons/link.js similarity index 100% rename from argilla-frontend/assets/icons/link.js rename to extralit-frontend/assets/icons/link.js diff --git a/argilla-frontend/assets/icons/log-out.js b/extralit-frontend/assets/icons/log-out.js similarity index 100% rename from argilla-frontend/assets/icons/log-out.js rename to extralit-frontend/assets/icons/log-out.js diff --git a/argilla-frontend/assets/icons/matching.js b/extralit-frontend/assets/icons/matching.js similarity index 100% rename from argilla-frontend/assets/icons/matching.js rename to extralit-frontend/assets/icons/matching.js diff --git a/argilla-frontend/assets/icons/math-plus.js b/extralit-frontend/assets/icons/math-plus.js similarity index 100% rename from argilla-frontend/assets/icons/math-plus.js rename to extralit-frontend/assets/icons/math-plus.js diff --git a/argilla-frontend/assets/icons/meatballs.js b/extralit-frontend/assets/icons/meatballs.js similarity index 100% rename from argilla-frontend/assets/icons/meatballs.js rename to extralit-frontend/assets/icons/meatballs.js diff --git a/argilla-frontend/assets/icons/minimize-arrows.js b/extralit-frontend/assets/icons/minimize-arrows.js similarity index 100% rename from argilla-frontend/assets/icons/minimize-arrows.js rename to extralit-frontend/assets/icons/minimize-arrows.js diff --git a/argilla-frontend/assets/icons/no-matching.js b/extralit-frontend/assets/icons/no-matching.js similarity index 100% rename from argilla-frontend/assets/icons/no-matching.js rename to extralit-frontend/assets/icons/no-matching.js diff --git a/argilla-frontend/assets/icons/pen.js b/extralit-frontend/assets/icons/pen.js similarity index 100% rename from argilla-frontend/assets/icons/pen.js rename to extralit-frontend/assets/icons/pen.js diff --git a/argilla-frontend/assets/icons/plus.js b/extralit-frontend/assets/icons/plus.js similarity index 100% rename from argilla-frontend/assets/icons/plus.js rename to extralit-frontend/assets/icons/plus.js diff --git a/argilla-frontend/assets/icons/progress.js b/extralit-frontend/assets/icons/progress.js similarity index 100% rename from argilla-frontend/assets/icons/progress.js rename to extralit-frontend/assets/icons/progress.js diff --git a/argilla-frontend/assets/icons/question-answering.js b/extralit-frontend/assets/icons/question-answering.js similarity index 100% rename from argilla-frontend/assets/icons/question-answering.js rename to extralit-frontend/assets/icons/question-answering.js diff --git a/argilla-frontend/assets/icons/records.js b/extralit-frontend/assets/icons/records.js similarity index 100% rename from argilla-frontend/assets/icons/records.js rename to extralit-frontend/assets/icons/records.js diff --git a/argilla-frontend/assets/icons/refresh.js b/extralit-frontend/assets/icons/refresh.js similarity index 100% rename from argilla-frontend/assets/icons/refresh.js rename to extralit-frontend/assets/icons/refresh.js diff --git a/argilla-frontend/assets/icons/reset.js b/extralit-frontend/assets/icons/reset.js similarity index 100% rename from argilla-frontend/assets/icons/reset.js rename to extralit-frontend/assets/icons/reset.js diff --git a/argilla-frontend/assets/icons/row-last.js b/extralit-frontend/assets/icons/row-last.js similarity index 100% rename from argilla-frontend/assets/icons/row-last.js rename to extralit-frontend/assets/icons/row-last.js diff --git a/argilla-frontend/assets/icons/rows.js b/extralit-frontend/assets/icons/rows.js similarity index 100% rename from argilla-frontend/assets/icons/rows.js rename to extralit-frontend/assets/icons/rows.js diff --git a/argilla-frontend/assets/icons/search.js b/extralit-frontend/assets/icons/search.js similarity index 100% rename from argilla-frontend/assets/icons/search.js rename to extralit-frontend/assets/icons/search.js diff --git a/argilla-frontend/assets/icons/settings.js b/extralit-frontend/assets/icons/settings.js similarity index 100% rename from argilla-frontend/assets/icons/settings.js rename to extralit-frontend/assets/icons/settings.js diff --git a/argilla-frontend/assets/icons/shortcuts.js b/extralit-frontend/assets/icons/shortcuts.js similarity index 100% rename from argilla-frontend/assets/icons/shortcuts.js rename to extralit-frontend/assets/icons/shortcuts.js diff --git a/argilla-frontend/assets/icons/similarity.js b/extralit-frontend/assets/icons/similarity.js similarity index 100% rename from argilla-frontend/assets/icons/similarity.js rename to extralit-frontend/assets/icons/similarity.js diff --git a/argilla-frontend/assets/icons/smile-sad.js b/extralit-frontend/assets/icons/smile-sad.js similarity index 100% rename from argilla-frontend/assets/icons/smile-sad.js rename to extralit-frontend/assets/icons/smile-sad.js diff --git a/argilla-frontend/assets/icons/sort.js b/extralit-frontend/assets/icons/sort.js similarity index 100% rename from argilla-frontend/assets/icons/sort.js rename to extralit-frontend/assets/icons/sort.js diff --git a/argilla-frontend/assets/icons/stats.js b/extralit-frontend/assets/icons/stats.js similarity index 100% rename from argilla-frontend/assets/icons/stats.js rename to extralit-frontend/assets/icons/stats.js diff --git a/argilla-frontend/assets/icons/suggestion.js b/extralit-frontend/assets/icons/suggestion.js similarity index 100% rename from argilla-frontend/assets/icons/suggestion.js rename to extralit-frontend/assets/icons/suggestion.js diff --git a/argilla-frontend/assets/icons/support.js b/extralit-frontend/assets/icons/support.js similarity index 100% rename from argilla-frontend/assets/icons/support.js rename to extralit-frontend/assets/icons/support.js diff --git a/argilla-frontend/assets/icons/system-theme.js b/extralit-frontend/assets/icons/system-theme.js similarity index 100% rename from argilla-frontend/assets/icons/system-theme.js rename to extralit-frontend/assets/icons/system-theme.js diff --git a/argilla-frontend/assets/icons/text-classification.js b/extralit-frontend/assets/icons/text-classification.js similarity index 100% rename from argilla-frontend/assets/icons/text-classification.js rename to extralit-frontend/assets/icons/text-classification.js diff --git a/argilla-frontend/assets/icons/text-to-image.js b/extralit-frontend/assets/icons/text-to-image.js similarity index 100% rename from argilla-frontend/assets/icons/text-to-image.js rename to extralit-frontend/assets/icons/text-to-image.js diff --git a/argilla-frontend/assets/icons/time.js b/extralit-frontend/assets/icons/time.js similarity index 100% rename from argilla-frontend/assets/icons/time.js rename to extralit-frontend/assets/icons/time.js diff --git a/argilla-frontend/assets/icons/trash-empty.js b/extralit-frontend/assets/icons/trash-empty.js similarity index 100% rename from argilla-frontend/assets/icons/trash-empty.js rename to extralit-frontend/assets/icons/trash-empty.js diff --git a/argilla-frontend/assets/icons/unavailable.js b/extralit-frontend/assets/icons/unavailable.js similarity index 100% rename from argilla-frontend/assets/icons/unavailable.js rename to extralit-frontend/assets/icons/unavailable.js diff --git a/argilla-frontend/assets/icons/update.js b/extralit-frontend/assets/icons/update.js similarity index 100% rename from argilla-frontend/assets/icons/update.js rename to extralit-frontend/assets/icons/update.js diff --git a/argilla-frontend/assets/icons/validate.js b/extralit-frontend/assets/icons/validate.js similarity index 100% rename from argilla-frontend/assets/icons/validate.js rename to extralit-frontend/assets/icons/validate.js diff --git a/argilla-frontend/assets/icons/weak-labeling.js b/extralit-frontend/assets/icons/weak-labeling.js similarity index 100% rename from argilla-frontend/assets/icons/weak-labeling.js rename to extralit-frontend/assets/icons/weak-labeling.js diff --git a/argilla-frontend/assets/scss/abstract.scss b/extralit-frontend/assets/scss/abstract.scss similarity index 100% rename from argilla-frontend/assets/scss/abstract.scss rename to extralit-frontend/assets/scss/abstract.scss diff --git a/argilla-frontend/assets/scss/abstract/functions/_functions.scss b/extralit-frontend/assets/scss/abstract/functions/_functions.scss similarity index 100% rename from argilla-frontend/assets/scss/abstract/functions/_functions.scss rename to extralit-frontend/assets/scss/abstract/functions/_functions.scss diff --git a/argilla-frontend/assets/scss/abstract/mixins/_grid-mixins.scss b/extralit-frontend/assets/scss/abstract/mixins/_grid-mixins.scss similarity index 100% rename from argilla-frontend/assets/scss/abstract/mixins/_grid-mixins.scss rename to extralit-frontend/assets/scss/abstract/mixins/_grid-mixins.scss diff --git a/argilla-frontend/assets/scss/abstract/mixins/_media-queries.scss b/extralit-frontend/assets/scss/abstract/mixins/_media-queries.scss similarity index 100% rename from argilla-frontend/assets/scss/abstract/mixins/_media-queries.scss rename to extralit-frontend/assets/scss/abstract/mixins/_media-queries.scss diff --git a/argilla-frontend/assets/scss/abstract/mixins/_mixins.scss b/extralit-frontend/assets/scss/abstract/mixins/_mixins.scss similarity index 100% rename from argilla-frontend/assets/scss/abstract/mixins/_mixins.scss rename to extralit-frontend/assets/scss/abstract/mixins/_mixins.scss diff --git a/argilla-frontend/assets/scss/abstract/placeholders/_placeholders.scss b/extralit-frontend/assets/scss/abstract/placeholders/_placeholders.scss similarity index 100% rename from argilla-frontend/assets/scss/abstract/placeholders/_placeholders.scss rename to extralit-frontend/assets/scss/abstract/placeholders/_placeholders.scss diff --git a/argilla-frontend/assets/scss/abstract/placeholders/_tooltip.scss b/extralit-frontend/assets/scss/abstract/placeholders/_tooltip.scss similarity index 100% rename from argilla-frontend/assets/scss/abstract/placeholders/_tooltip.scss rename to extralit-frontend/assets/scss/abstract/placeholders/_tooltip.scss diff --git a/argilla-frontend/assets/scss/abstract/variables/_variables.scss b/extralit-frontend/assets/scss/abstract/variables/_variables.scss similarity index 100% rename from argilla-frontend/assets/scss/abstract/variables/_variables.scss rename to extralit-frontend/assets/scss/abstract/variables/_variables.scss diff --git a/argilla-frontend/assets/scss/base/base.scss b/extralit-frontend/assets/scss/base/base.scss similarity index 100% rename from argilla-frontend/assets/scss/base/base.scss rename to extralit-frontend/assets/scss/base/base.scss diff --git a/argilla-frontend/assets/styles.scss b/extralit-frontend/assets/styles.scss similarity index 100% rename from argilla-frontend/assets/styles.scss rename to extralit-frontend/assets/styles.scss diff --git a/argilla-frontend/babel.config.js b/extralit-frontend/babel.config.js similarity index 100% rename from argilla-frontend/babel.config.js rename to extralit-frontend/babel.config.js diff --git a/argilla-frontend/components/base/base-action-tooltip/BaseActionTooltip.vue b/extralit-frontend/components/base/base-action-tooltip/BaseActionTooltip.vue similarity index 100% rename from argilla-frontend/components/base/base-action-tooltip/BaseActionTooltip.vue rename to extralit-frontend/components/base/base-action-tooltip/BaseActionTooltip.vue diff --git a/argilla-frontend/components/base/base-badge/BaseBadge.vue b/extralit-frontend/components/base/base-badge/BaseBadge.vue similarity index 100% rename from argilla-frontend/components/base/base-badge/BaseBadge.vue rename to extralit-frontend/components/base/base-badge/BaseBadge.vue diff --git a/argilla-frontend/components/base/base-badge/BaseBadgeSkeleton.vue b/extralit-frontend/components/base/base-badge/BaseBadgeSkeleton.vue similarity index 100% rename from argilla-frontend/components/base/base-badge/BaseBadgeSkeleton.vue rename to extralit-frontend/components/base/base-badge/BaseBadgeSkeleton.vue diff --git a/argilla-frontend/components/base/base-badge/BaseIconWithBadge.vue b/extralit-frontend/components/base/base-badge/BaseIconWithBadge.vue similarity index 100% rename from argilla-frontend/components/base/base-badge/BaseIconWithBadge.vue rename to extralit-frontend/components/base/base-badge/BaseIconWithBadge.vue diff --git a/argilla-frontend/components/base/base-banner/BaseBanner.vue b/extralit-frontend/components/base/base-banner/BaseBanner.vue similarity index 100% rename from argilla-frontend/components/base/base-banner/BaseBanner.vue rename to extralit-frontend/components/base/base-banner/BaseBanner.vue diff --git a/argilla-frontend/components/base/base-brand-icon/BrandIcon.vue b/extralit-frontend/components/base/base-brand-icon/BrandIcon.vue similarity index 100% rename from argilla-frontend/components/base/base-brand-icon/BrandIcon.vue rename to extralit-frontend/components/base/base-brand-icon/BrandIcon.vue diff --git a/argilla-frontend/components/base/base-brand-icon/BrandLogo.vue b/extralit-frontend/components/base/base-brand-icon/BrandLogo.vue similarity index 100% rename from argilla-frontend/components/base/base-brand-icon/BrandLogo.vue rename to extralit-frontend/components/base/base-brand-icon/BrandLogo.vue diff --git a/argilla-frontend/components/base/base-breadcrumbs/BaseBreadcrumbs.vue b/extralit-frontend/components/base/base-breadcrumbs/BaseBreadcrumbs.vue similarity index 100% rename from argilla-frontend/components/base/base-breadcrumbs/BaseBreadcrumbs.vue rename to extralit-frontend/components/base/base-breadcrumbs/BaseBreadcrumbs.vue diff --git a/argilla-frontend/components/base/base-button/BaseButton.vue b/extralit-frontend/components/base/base-button/BaseButton.vue similarity index 100% rename from argilla-frontend/components/base/base-button/BaseButton.vue rename to extralit-frontend/components/base/base-button/BaseButton.vue diff --git a/argilla-frontend/components/base/base-card/BaseCard.spec.js b/extralit-frontend/components/base/base-card/BaseCard.spec.js similarity index 100% rename from argilla-frontend/components/base/base-card/BaseCard.spec.js rename to extralit-frontend/components/base/base-card/BaseCard.spec.js diff --git a/argilla-frontend/components/base/base-card/BaseCard.vue b/extralit-frontend/components/base/base-card/BaseCard.vue similarity index 100% rename from argilla-frontend/components/base/base-card/BaseCard.vue rename to extralit-frontend/components/base/base-card/BaseCard.vue diff --git a/argilla-frontend/components/base/base-card/BaseCardWithTabs.vue b/extralit-frontend/components/base/base-card/BaseCardWithTabs.vue similarity index 100% rename from argilla-frontend/components/base/base-card/BaseCardWithTabs.vue rename to extralit-frontend/components/base/base-card/BaseCardWithTabs.vue diff --git a/argilla-frontend/components/base/base-checkbox/BaseCheckbox.vue b/extralit-frontend/components/base/base-checkbox/BaseCheckbox.vue similarity index 100% rename from argilla-frontend/components/base/base-checkbox/BaseCheckbox.vue rename to extralit-frontend/components/base/base-checkbox/BaseCheckbox.vue diff --git a/argilla-frontend/components/base/base-code/BaseCode.vue b/extralit-frontend/components/base/base-code/BaseCode.vue similarity index 100% rename from argilla-frontend/components/base/base-code/BaseCode.vue rename to extralit-frontend/components/base/base-code/BaseCode.vue diff --git a/argilla-frontend/components/base/base-collpasable-panel/BaseCollapsablePanel.vue b/extralit-frontend/components/base/base-collpasable-panel/BaseCollapsablePanel.vue similarity index 100% rename from argilla-frontend/components/base/base-collpasable-panel/BaseCollapsablePanel.vue rename to extralit-frontend/components/base/base-collpasable-panel/BaseCollapsablePanel.vue diff --git a/argilla-frontend/components/base/base-date/BaseDate.vue b/extralit-frontend/components/base/base-date/BaseDate.vue similarity index 100% rename from argilla-frontend/components/base/base-date/BaseDate.vue rename to extralit-frontend/components/base/base-date/BaseDate.vue diff --git a/argilla-frontend/components/base/base-date/__snapshots__/base-date.test.ts.snap b/extralit-frontend/components/base/base-date/__snapshots__/base-date.test.ts.snap similarity index 100% rename from argilla-frontend/components/base/base-date/__snapshots__/base-date.test.ts.snap rename to extralit-frontend/components/base/base-date/__snapshots__/base-date.test.ts.snap diff --git a/argilla-frontend/components/base/base-date/base-date.test.ts b/extralit-frontend/components/base/base-date/base-date.test.ts similarity index 100% rename from argilla-frontend/components/base/base-date/base-date.test.ts rename to extralit-frontend/components/base/base-date/base-date.test.ts diff --git a/argilla-frontend/components/base/base-documentation-viewer/DocumentationViewer.vue b/extralit-frontend/components/base/base-documentation-viewer/DocumentationViewer.vue similarity index 100% rename from argilla-frontend/components/base/base-documentation-viewer/DocumentationViewer.vue rename to extralit-frontend/components/base/base-documentation-viewer/DocumentationViewer.vue diff --git a/argilla-frontend/components/base/base-dropdown/BaseDropdown.spec.js b/extralit-frontend/components/base/base-dropdown/BaseDropdown.spec.js similarity index 100% rename from argilla-frontend/components/base/base-dropdown/BaseDropdown.spec.js rename to extralit-frontend/components/base/base-dropdown/BaseDropdown.spec.js diff --git a/argilla-frontend/components/base/base-dropdown/BaseDropdown.vue b/extralit-frontend/components/base/base-dropdown/BaseDropdown.vue similarity index 100% rename from argilla-frontend/components/base/base-dropdown/BaseDropdown.vue rename to extralit-frontend/components/base/base-dropdown/BaseDropdown.vue diff --git a/argilla-frontend/components/base/base-feedback/BaseFeedback.spec.js b/extralit-frontend/components/base/base-feedback/BaseFeedback.spec.js similarity index 100% rename from argilla-frontend/components/base/base-feedback/BaseFeedback.spec.js rename to extralit-frontend/components/base/base-feedback/BaseFeedback.spec.js diff --git a/argilla-frontend/components/base/base-feedback/BaseFeedback.vue b/extralit-frontend/components/base/base-feedback/BaseFeedback.vue similarity index 100% rename from argilla-frontend/components/base/base-feedback/BaseFeedback.vue rename to extralit-frontend/components/base/base-feedback/BaseFeedback.vue diff --git a/argilla-frontend/components/base/base-feedback/base-feedback-error/BaseFeedbackError.component.vue b/extralit-frontend/components/base/base-feedback/base-feedback-error/BaseFeedbackError.component.vue similarity index 100% rename from argilla-frontend/components/base/base-feedback/base-feedback-error/BaseFeedbackError.component.vue rename to extralit-frontend/components/base/base-feedback/base-feedback-error/BaseFeedbackError.component.vue diff --git a/argilla-frontend/components/base/base-feedback/base-feedback-error/BaseFeedbackError.spec.js b/extralit-frontend/components/base/base-feedback/base-feedback-error/BaseFeedbackError.spec.js similarity index 100% rename from argilla-frontend/components/base/base-feedback/base-feedback-error/BaseFeedbackError.spec.js rename to extralit-frontend/components/base/base-feedback/base-feedback-error/BaseFeedbackError.spec.js diff --git a/argilla-frontend/components/base/base-flow-modal/BaseFlowModal.spec.js b/extralit-frontend/components/base/base-flow-modal/BaseFlowModal.spec.js similarity index 100% rename from argilla-frontend/components/base/base-flow-modal/BaseFlowModal.spec.js rename to extralit-frontend/components/base/base-flow-modal/BaseFlowModal.spec.js diff --git a/argilla-frontend/components/base/base-flow-modal/BaseFlowModal.vue b/extralit-frontend/components/base/base-flow-modal/BaseFlowModal.vue similarity index 100% rename from argilla-frontend/components/base/base-flow-modal/BaseFlowModal.vue rename to extralit-frontend/components/base/base-flow-modal/BaseFlowModal.vue diff --git a/argilla-frontend/components/base/base-icon/BaseIcon.vue b/extralit-frontend/components/base/base-icon/BaseIcon.vue similarity index 100% rename from argilla-frontend/components/base/base-icon/BaseIcon.vue rename to extralit-frontend/components/base/base-icon/BaseIcon.vue diff --git a/argilla-frontend/components/base/base-input/BaseInput.vue b/extralit-frontend/components/base/base-input/BaseInput.vue similarity index 100% rename from argilla-frontend/components/base/base-input/BaseInput.vue rename to extralit-frontend/components/base/base-input/BaseInput.vue diff --git a/argilla-frontend/components/base/base-input/BaseInputContainer.vue b/extralit-frontend/components/base/base-input/BaseInputContainer.vue similarity index 100% rename from argilla-frontend/components/base/base-input/BaseInputContainer.vue rename to extralit-frontend/components/base/base-input/BaseInputContainer.vue diff --git a/argilla-frontend/components/base/base-input/common.js b/extralit-frontend/components/base/base-input/common.js similarity index 100% rename from argilla-frontend/components/base/base-input/common.js rename to extralit-frontend/components/base/base-input/common.js diff --git a/argilla-frontend/components/base/base-input/utils/getClosestVueParent.js b/extralit-frontend/components/base/base-input/utils/getClosestVueParent.js similarity index 100% rename from argilla-frontend/components/base/base-input/utils/getClosestVueParent.js rename to extralit-frontend/components/base/base-input/utils/getClosestVueParent.js diff --git a/argilla-frontend/components/base/base-loading/BaseLoading.vue b/extralit-frontend/components/base/base-loading/BaseLoading.vue similarity index 100% rename from argilla-frontend/components/base/base-loading/BaseLoading.vue rename to extralit-frontend/components/base/base-loading/BaseLoading.vue diff --git a/argilla-frontend/components/base/base-modal/BaseModal.vue b/extralit-frontend/components/base/base-modal/BaseModal.vue similarity index 100% rename from argilla-frontend/components/base/base-modal/BaseModal.vue rename to extralit-frontend/components/base/base-modal/BaseModal.vue diff --git a/argilla-frontend/components/base/base-pdf-viewer/PDFViewer.vue b/extralit-frontend/components/base/base-pdf-viewer/PDFViewer.vue similarity index 100% rename from argilla-frontend/components/base/base-pdf-viewer/PDFViewer.vue rename to extralit-frontend/components/base/base-pdf-viewer/PDFViewer.vue diff --git a/argilla-frontend/components/base/base-progress/BaseCircleProgress.vue b/extralit-frontend/components/base/base-progress/BaseCircleProgress.vue similarity index 100% rename from argilla-frontend/components/base/base-progress/BaseCircleProgress.vue rename to extralit-frontend/components/base/base-progress/BaseCircleProgress.vue diff --git a/argilla-frontend/components/base/base-progress/BaseLinearProgress.vue b/extralit-frontend/components/base/base-progress/BaseLinearProgress.vue similarity index 100% rename from argilla-frontend/components/base/base-progress/BaseLinearProgress.vue rename to extralit-frontend/components/base/base-progress/BaseLinearProgress.vue diff --git a/argilla-frontend/components/base/base-progress/BaseLinearProgressSkeleton.vue b/extralit-frontend/components/base/base-progress/BaseLinearProgressSkeleton.vue similarity index 100% rename from argilla-frontend/components/base/base-progress/BaseLinearProgressSkeleton.vue rename to extralit-frontend/components/base/base-progress/BaseLinearProgressSkeleton.vue diff --git a/argilla-frontend/components/base/base-radio-button/BaseRadioButton.spec.js b/extralit-frontend/components/base/base-radio-button/BaseRadioButton.spec.js similarity index 100% rename from argilla-frontend/components/base/base-radio-button/BaseRadioButton.spec.js rename to extralit-frontend/components/base/base-radio-button/BaseRadioButton.spec.js diff --git a/argilla-frontend/components/base/base-radio-button/BaseRadioButton.vue b/extralit-frontend/components/base/base-radio-button/BaseRadioButton.vue similarity index 100% rename from argilla-frontend/components/base/base-radio-button/BaseRadioButton.vue rename to extralit-frontend/components/base/base-radio-button/BaseRadioButton.vue diff --git a/argilla-frontend/components/base/base-range/BaseRangeMultipleSlider.vue b/extralit-frontend/components/base/base-range/BaseRangeMultipleSlider.vue similarity index 100% rename from argilla-frontend/components/base/base-range/BaseRangeMultipleSlider.vue rename to extralit-frontend/components/base/base-range/BaseRangeMultipleSlider.vue diff --git a/argilla-frontend/components/base/base-range/BaseRangeSlider.vue b/extralit-frontend/components/base/base-range/BaseRangeSlider.vue similarity index 100% rename from argilla-frontend/components/base/base-range/BaseRangeSlider.vue rename to extralit-frontend/components/base/base-range/BaseRangeSlider.vue diff --git a/argilla-frontend/components/base/base-render-html/RenderHTML.vue b/extralit-frontend/components/base/base-render-html/RenderHTML.vue similarity index 100% rename from argilla-frontend/components/base/base-render-html/RenderHTML.vue rename to extralit-frontend/components/base/base-render-html/RenderHTML.vue diff --git a/argilla-frontend/components/base/base-render-html/renderHTML.test.js b/extralit-frontend/components/base/base-render-html/renderHTML.test.js similarity index 100% rename from argilla-frontend/components/base/base-render-html/renderHTML.test.js rename to extralit-frontend/components/base/base-render-html/renderHTML.test.js diff --git a/argilla-frontend/components/base/base-render-markdown/MarkdownRenderer.spec.js b/extralit-frontend/components/base/base-render-markdown/MarkdownRenderer.spec.js similarity index 100% rename from argilla-frontend/components/base/base-render-markdown/MarkdownRenderer.spec.js rename to extralit-frontend/components/base/base-render-markdown/MarkdownRenderer.spec.js diff --git a/argilla-frontend/components/base/base-render-markdown/MarkdownRenderer.vue b/extralit-frontend/components/base/base-render-markdown/MarkdownRenderer.vue similarity index 100% rename from argilla-frontend/components/base/base-render-markdown/MarkdownRenderer.vue rename to extralit-frontend/components/base/base-render-markdown/MarkdownRenderer.vue diff --git a/argilla-frontend/components/base/base-render-table/RenderTable.vue b/extralit-frontend/components/base/base-render-table/RenderTable.vue similarity index 100% rename from argilla-frontend/components/base/base-render-table/RenderTable.vue rename to extralit-frontend/components/base/base-render-table/RenderTable.vue diff --git a/argilla-frontend/components/base/base-render-table/renderTable.test.ts b/extralit-frontend/components/base/base-render-table/renderTable.test.ts similarity index 100% rename from argilla-frontend/components/base/base-render-table/renderTable.test.ts rename to extralit-frontend/components/base/base-render-table/renderTable.test.ts diff --git a/argilla-frontend/components/base/base-render-table/tableUtils.ts b/extralit-frontend/components/base/base-render-table/tableUtils.ts similarity index 100% rename from argilla-frontend/components/base/base-render-table/tableUtils.ts rename to extralit-frontend/components/base/base-render-table/tableUtils.ts diff --git a/argilla-frontend/components/base/base-render-table/useLLMExtractionViewModel.ts b/extralit-frontend/components/base/base-render-table/useLLMExtractionViewModel.ts similarity index 100% rename from argilla-frontend/components/base/base-render-table/useLLMExtractionViewModel.ts rename to extralit-frontend/components/base/base-render-table/useLLMExtractionViewModel.ts diff --git a/argilla-frontend/components/base/base-render-table/useReferenceTablesViewModel.ts b/extralit-frontend/components/base/base-render-table/useReferenceTablesViewModel.ts similarity index 100% rename from argilla-frontend/components/base/base-render-table/useReferenceTablesViewModel.ts rename to extralit-frontend/components/base/base-render-table/useReferenceTablesViewModel.ts diff --git a/argilla-frontend/components/base/base-render-table/useSchemaTableViewModel.ts b/extralit-frontend/components/base/base-render-table/useSchemaTableViewModel.ts similarity index 100% rename from argilla-frontend/components/base/base-render-table/useSchemaTableViewModel.ts rename to extralit-frontend/components/base/base-render-table/useSchemaTableViewModel.ts diff --git a/argilla-frontend/components/base/base-render-table/validatorUtils.ts b/extralit-frontend/components/base/base-render-table/validatorUtils.ts similarity index 100% rename from argilla-frontend/components/base/base-render-table/validatorUtils.ts rename to extralit-frontend/components/base/base-render-table/validatorUtils.ts diff --git a/argilla-frontend/components/base/base-resizable/HorizontalResizable.vue b/extralit-frontend/components/base/base-resizable/HorizontalResizable.vue similarity index 100% rename from argilla-frontend/components/base/base-resizable/HorizontalResizable.vue rename to extralit-frontend/components/base/base-resizable/HorizontalResizable.vue diff --git a/argilla-frontend/components/base/base-resizable/VerticalResizable.vue b/extralit-frontend/components/base/base-resizable/VerticalResizable.vue similarity index 100% rename from argilla-frontend/components/base/base-resizable/VerticalResizable.vue rename to extralit-frontend/components/base/base-resizable/VerticalResizable.vue diff --git a/argilla-frontend/components/base/base-resizable/useResizable.ts b/extralit-frontend/components/base/base-resizable/useResizable.ts similarity index 100% rename from argilla-frontend/components/base/base-resizable/useResizable.ts rename to extralit-frontend/components/base/base-resizable/useResizable.ts diff --git a/argilla-frontend/components/base/base-scroll/SynchronizeScroll.vue b/extralit-frontend/components/base/base-scroll/SynchronizeScroll.vue similarity index 100% rename from argilla-frontend/components/base/base-scroll/SynchronizeScroll.vue rename to extralit-frontend/components/base/base-scroll/SynchronizeScroll.vue diff --git a/argilla-frontend/components/base/base-search-bar/BaseSearch.vue b/extralit-frontend/components/base/base-search-bar/BaseSearch.vue similarity index 100% rename from argilla-frontend/components/base/base-search-bar/BaseSearch.vue rename to extralit-frontend/components/base/base-search-bar/BaseSearch.vue diff --git a/argilla-frontend/components/base/base-search-bar/BaseSearchBar.vue b/extralit-frontend/components/base/base-search-bar/BaseSearchBar.vue similarity index 100% rename from argilla-frontend/components/base/base-search-bar/BaseSearchBar.vue rename to extralit-frontend/components/base/base-search-bar/BaseSearchBar.vue diff --git a/argilla-frontend/components/base/base-separator/BaseSeparator.vue b/extralit-frontend/components/base/base-separator/BaseSeparator.vue similarity index 100% rename from argilla-frontend/components/base/base-separator/BaseSeparator.vue rename to extralit-frontend/components/base/base-separator/BaseSeparator.vue diff --git a/argilla-frontend/components/base/base-shapes/GeometricShapeA.vue b/extralit-frontend/components/base/base-shapes/GeometricShapeA.vue similarity index 100% rename from argilla-frontend/components/base/base-shapes/GeometricShapeA.vue rename to extralit-frontend/components/base/base-shapes/GeometricShapeA.vue diff --git a/argilla-frontend/components/base/base-simple-table/BaseSimpleTable.test.ts b/extralit-frontend/components/base/base-simple-table/BaseSimpleTable.test.ts similarity index 100% rename from argilla-frontend/components/base/base-simple-table/BaseSimpleTable.test.ts rename to extralit-frontend/components/base/base-simple-table/BaseSimpleTable.test.ts diff --git a/argilla-frontend/components/base/base-simple-table/BaseSimpleTable.vue b/extralit-frontend/components/base/base-simple-table/BaseSimpleTable.vue similarity index 100% rename from argilla-frontend/components/base/base-simple-table/BaseSimpleTable.vue rename to extralit-frontend/components/base/base-simple-table/BaseSimpleTable.vue diff --git a/argilla-frontend/components/base/base-slider/BaseSlider.spec.js b/extralit-frontend/components/base/base-slider/BaseSlider.spec.js similarity index 100% rename from argilla-frontend/components/base/base-slider/BaseSlider.spec.js rename to extralit-frontend/components/base/base-slider/BaseSlider.spec.js diff --git a/argilla-frontend/components/base/base-slider/BaseSlider.vue b/extralit-frontend/components/base/base-slider/BaseSlider.vue similarity index 100% rename from argilla-frontend/components/base/base-slider/BaseSlider.vue rename to extralit-frontend/components/base/base-slider/BaseSlider.vue diff --git a/argilla-frontend/components/base/base-slider/__snapshots__/BaseSlider.spec.js.snap b/extralit-frontend/components/base/base-slider/__snapshots__/BaseSlider.spec.js.snap similarity index 100% rename from argilla-frontend/components/base/base-slider/__snapshots__/BaseSlider.spec.js.snap rename to extralit-frontend/components/base/base-slider/__snapshots__/BaseSlider.spec.js.snap diff --git a/argilla-frontend/components/base/base-spinner/BaseSpinner.vue b/extralit-frontend/components/base/base-spinner/BaseSpinner.vue similarity index 100% rename from argilla-frontend/components/base/base-spinner/BaseSpinner.vue rename to extralit-frontend/components/base/base-spinner/BaseSpinner.vue diff --git a/argilla-frontend/components/base/base-switch/BaseSwitch.vue b/extralit-frontend/components/base/base-switch/BaseSwitch.vue similarity index 100% rename from argilla-frontend/components/base/base-switch/BaseSwitch.vue rename to extralit-frontend/components/base/base-switch/BaseSwitch.vue diff --git a/argilla-frontend/components/base/base-tabs/BaseTabs.vue b/extralit-frontend/components/base/base-tabs/BaseTabs.vue similarity index 100% rename from argilla-frontend/components/base/base-tabs/BaseTabs.vue rename to extralit-frontend/components/base/base-tabs/BaseTabs.vue diff --git a/argilla-frontend/components/base/base-tabs/BaseTabsAndContent.vue b/extralit-frontend/components/base/base-tabs/BaseTabsAndContent.vue similarity index 100% rename from argilla-frontend/components/base/base-tabs/BaseTabsAndContent.vue rename to extralit-frontend/components/base/base-tabs/BaseTabsAndContent.vue diff --git a/argilla-frontend/components/base/base-tabs/baseTabs.spec.js b/extralit-frontend/components/base/base-tabs/baseTabs.spec.js similarity index 100% rename from argilla-frontend/components/base/base-tabs/baseTabs.spec.js rename to extralit-frontend/components/base/base-tabs/baseTabs.spec.js diff --git a/argilla-frontend/components/base/base-tag/BaseTag.vue b/extralit-frontend/components/base/base-tag/BaseTag.vue similarity index 100% rename from argilla-frontend/components/base/base-tag/BaseTag.vue rename to extralit-frontend/components/base/base-tag/BaseTag.vue diff --git a/argilla-frontend/components/base/base-toast/Toast.vue b/extralit-frontend/components/base/base-toast/Toast.vue similarity index 100% rename from argilla-frontend/components/base/base-toast/Toast.vue rename to extralit-frontend/components/base/base-toast/Toast.vue diff --git a/argilla-frontend/components/base/base-toast/api.ts b/extralit-frontend/components/base/base-toast/api.ts similarity index 100% rename from argilla-frontend/components/base/base-toast/api.ts rename to extralit-frontend/components/base/base-toast/api.ts diff --git a/argilla-frontend/components/base/base-toast/bus.js b/extralit-frontend/components/base/base-toast/bus.js similarity index 100% rename from argilla-frontend/components/base/base-toast/bus.js rename to extralit-frontend/components/base/base-toast/bus.js diff --git a/argilla-frontend/components/base/base-toast/helpers.js b/extralit-frontend/components/base/base-toast/helpers.js similarity index 100% rename from argilla-frontend/components/base/base-toast/helpers.js rename to extralit-frontend/components/base/base-toast/helpers.js diff --git a/argilla-frontend/components/base/base-toast/positions.js b/extralit-frontend/components/base/base-toast/positions.js similarity index 100% rename from argilla-frontend/components/base/base-toast/positions.js rename to extralit-frontend/components/base/base-toast/positions.js diff --git a/argilla-frontend/components/base/base-toast/timer.js b/extralit-frontend/components/base/base-toast/timer.js similarity index 100% rename from argilla-frontend/components/base/base-toast/timer.js rename to extralit-frontend/components/base/base-toast/timer.js diff --git a/argilla-frontend/components/base/base-tooltip/BaseFixedTooltip.vue b/extralit-frontend/components/base/base-tooltip/BaseFixedTooltip.vue similarity index 100% rename from argilla-frontend/components/base/base-tooltip/BaseFixedTooltip.vue rename to extralit-frontend/components/base/base-tooltip/BaseFixedTooltip.vue diff --git a/argilla-frontend/components/base/base-tooltip/BaseTooltip.spec.js b/extralit-frontend/components/base/base-tooltip/BaseTooltip.spec.js similarity index 100% rename from argilla-frontend/components/base/base-tooltip/BaseTooltip.spec.js rename to extralit-frontend/components/base/base-tooltip/BaseTooltip.spec.js diff --git a/argilla-frontend/components/base/base-tooltip/BaseTooltip.vue b/extralit-frontend/components/base/base-tooltip/BaseTooltip.vue similarity index 100% rename from argilla-frontend/components/base/base-tooltip/BaseTooltip.vue rename to extralit-frontend/components/base/base-tooltip/BaseTooltip.vue diff --git a/argilla-frontend/components/base/base-topbar-brand/BaseTopbarBrand.vue b/extralit-frontend/components/base/base-topbar-brand/BaseTopbarBrand.vue similarity index 100% rename from argilla-frontend/components/base/base-topbar-brand/BaseTopbarBrand.vue rename to extralit-frontend/components/base/base-topbar-brand/BaseTopbarBrand.vue diff --git a/argilla-frontend/components/features/annotation/container/RecordFeedbackTaskAndQuestionnaire.vue b/extralit-frontend/components/features/annotation/container/RecordFeedbackTaskAndQuestionnaire.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/RecordFeedbackTaskAndQuestionnaire.vue rename to extralit-frontend/components/features/annotation/container/RecordFeedbackTaskAndQuestionnaire.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/Record.vue b/extralit-frontend/components/features/annotation/container/fields/Record.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/Record.vue rename to extralit-frontend/components/features/annotation/container/fields/Record.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/RecordFields.vue b/extralit-frontend/components/features/annotation/container/fields/RecordFields.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/RecordFields.vue rename to extralit-frontend/components/features/annotation/container/fields/RecordFields.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/RecordFieldsHeader.vue b/extralit-frontend/components/features/annotation/container/fields/RecordFieldsHeader.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/RecordFieldsHeader.vue rename to extralit-frontend/components/features/annotation/container/fields/RecordFieldsHeader.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/RecordMenu.vue b/extralit-frontend/components/features/annotation/container/fields/RecordMenu.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/RecordMenu.vue rename to extralit-frontend/components/features/annotation/container/fields/RecordMenu.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/RecordMetadataInfo.vue b/extralit-frontend/components/features/annotation/container/fields/RecordMetadataInfo.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/RecordMetadataInfo.vue rename to extralit-frontend/components/features/annotation/container/fields/RecordMetadataInfo.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/RecordStatus.vue b/extralit-frontend/components/features/annotation/container/fields/RecordStatus.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/RecordStatus.vue rename to extralit-frontend/components/features/annotation/container/fields/RecordStatus.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/SimilarityScorePercentage.vue b/extralit-frontend/components/features/annotation/container/fields/SimilarityScorePercentage.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/SimilarityScorePercentage.vue rename to extralit-frontend/components/features/annotation/container/fields/SimilarityScorePercentage.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/chat-field/ChatField.vue b/extralit-frontend/components/features/annotation/container/fields/chat-field/ChatField.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/chat-field/ChatField.vue rename to extralit-frontend/components/features/annotation/container/fields/chat-field/ChatField.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/chat-field/useChatFieldViewModel.ts b/extralit-frontend/components/features/annotation/container/fields/chat-field/useChatFieldViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/chat-field/useChatFieldViewModel.ts rename to extralit-frontend/components/features/annotation/container/fields/chat-field/useChatFieldViewModel.ts diff --git a/argilla-frontend/components/features/annotation/container/fields/custom-field/CustomField.vue b/extralit-frontend/components/features/annotation/container/fields/custom-field/CustomField.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/custom-field/CustomField.vue rename to extralit-frontend/components/features/annotation/container/fields/custom-field/CustomField.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/image-field/ImageField.vue b/extralit-frontend/components/features/annotation/container/fields/image-field/ImageField.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/image-field/ImageField.vue rename to extralit-frontend/components/features/annotation/container/fields/image-field/ImageField.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/sandbox/Sandbox.vue b/extralit-frontend/components/features/annotation/container/fields/sandbox/Sandbox.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/sandbox/Sandbox.vue rename to extralit-frontend/components/features/annotation/container/fields/sandbox/Sandbox.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/span-annotation/SpanAnnotationTextField.vue b/extralit-frontend/components/features/annotation/container/fields/span-annotation/SpanAnnotationTextField.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/span-annotation/SpanAnnotationTextField.vue rename to extralit-frontend/components/features/annotation/container/fields/span-annotation/SpanAnnotationTextField.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/span-annotation/components/EntityBadge.vue b/extralit-frontend/components/features/annotation/container/fields/span-annotation/components/EntityBadge.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/span-annotation/components/EntityBadge.vue rename to extralit-frontend/components/features/annotation/container/fields/span-annotation/components/EntityBadge.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/span-annotation/components/EntityComponent.vue b/extralit-frontend/components/features/annotation/container/fields/span-annotation/components/EntityComponent.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/span-annotation/components/EntityComponent.vue rename to extralit-frontend/components/features/annotation/container/fields/span-annotation/components/EntityComponent.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/span-annotation/components/EntityDropdown.vue b/extralit-frontend/components/features/annotation/container/fields/span-annotation/components/EntityDropdown.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/span-annotation/components/EntityDropdown.vue rename to extralit-frontend/components/features/annotation/container/fields/span-annotation/components/EntityDropdown.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/span-annotation/components/EntityDropdownOverlapping.vue b/extralit-frontend/components/features/annotation/container/fields/span-annotation/components/EntityDropdownOverlapping.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/span-annotation/components/EntityDropdownOverlapping.vue rename to extralit-frontend/components/features/annotation/container/fields/span-annotation/components/EntityDropdownOverlapping.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/span-annotation/components/highlighting.ts b/extralit-frontend/components/features/annotation/container/fields/span-annotation/components/highlighting.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/span-annotation/components/highlighting.ts rename to extralit-frontend/components/features/annotation/container/fields/span-annotation/components/highlighting.ts diff --git a/argilla-frontend/components/features/annotation/container/fields/span-annotation/components/span-selection.test.ts b/extralit-frontend/components/features/annotation/container/fields/span-annotation/components/span-selection.test.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/span-annotation/components/span-selection.test.ts rename to extralit-frontend/components/features/annotation/container/fields/span-annotation/components/span-selection.test.ts diff --git a/argilla-frontend/components/features/annotation/container/fields/span-annotation/components/span-selection.ts b/extralit-frontend/components/features/annotation/container/fields/span-annotation/components/span-selection.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/span-annotation/components/span-selection.ts rename to extralit-frontend/components/features/annotation/container/fields/span-annotation/components/span-selection.ts diff --git a/argilla-frontend/components/features/annotation/container/fields/span-annotation/components/spanAnnotationCursor.vue b/extralit-frontend/components/features/annotation/container/fields/span-annotation/components/spanAnnotationCursor.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/span-annotation/components/spanAnnotationCursor.vue rename to extralit-frontend/components/features/annotation/container/fields/span-annotation/components/spanAnnotationCursor.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/span-annotation/useSpanAnnotationTextFieldViewModel.ts b/extralit-frontend/components/features/annotation/container/fields/span-annotation/useSpanAnnotationTextFieldViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/span-annotation/useSpanAnnotationTextFieldViewModel.ts rename to extralit-frontend/components/features/annotation/container/fields/span-annotation/useSpanAnnotationTextFieldViewModel.ts diff --git a/argilla-frontend/components/features/annotation/container/fields/table-field/TableField.vue b/extralit-frontend/components/features/annotation/container/fields/table-field/TableField.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/table-field/TableField.vue rename to extralit-frontend/components/features/annotation/container/fields/table-field/TableField.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/text-field/TextField.vue b/extralit-frontend/components/features/annotation/container/fields/text-field/TextField.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/text-field/TextField.vue rename to extralit-frontend/components/features/annotation/container/fields/text-field/TextField.vue diff --git a/argilla-frontend/components/features/annotation/container/fields/text-field/useTextFieldViewModel.ts b/extralit-frontend/components/features/annotation/container/fields/text-field/useTextFieldViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/text-field/useTextFieldViewModel.ts rename to extralit-frontend/components/features/annotation/container/fields/text-field/useTextFieldViewModel.ts diff --git a/argilla-frontend/components/features/annotation/container/fields/useSearchTextHighlight.ts b/extralit-frontend/components/features/annotation/container/fields/useSearchTextHighlight.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/fields/useSearchTextHighlight.ts rename to extralit-frontend/components/features/annotation/container/fields/useSearchTextHighlight.ts diff --git a/argilla-frontend/components/features/annotation/container/mode/BulkAnnotation.vue b/extralit-frontend/components/features/annotation/container/mode/BulkAnnotation.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/mode/BulkAnnotation.vue rename to extralit-frontend/components/features/annotation/container/mode/BulkAnnotation.vue diff --git a/argilla-frontend/components/features/annotation/container/mode/FocusAnnotation.vue b/extralit-frontend/components/features/annotation/container/mode/FocusAnnotation.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/mode/FocusAnnotation.vue rename to extralit-frontend/components/features/annotation/container/mode/FocusAnnotation.vue diff --git a/argilla-frontend/components/features/annotation/container/mode/useBulkAnnotationViewModel.ts b/extralit-frontend/components/features/annotation/container/mode/useBulkAnnotationViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/mode/useBulkAnnotationViewModel.ts rename to extralit-frontend/components/features/annotation/container/mode/useBulkAnnotationViewModel.ts diff --git a/argilla-frontend/components/features/annotation/container/mode/useDocumentViewModel.ts b/extralit-frontend/components/features/annotation/container/mode/useDocumentViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/mode/useDocumentViewModel.ts rename to extralit-frontend/components/features/annotation/container/mode/useDocumentViewModel.ts diff --git a/argilla-frontend/components/features/annotation/container/mode/useFocusAnnotationViewModel.ts b/extralit-frontend/components/features/annotation/container/mode/useFocusAnnotationViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/mode/useFocusAnnotationViewModel.ts rename to extralit-frontend/components/features/annotation/container/mode/useFocusAnnotationViewModel.ts diff --git a/argilla-frontend/components/features/annotation/container/questions/QuestionsForm.vue b/extralit-frontend/components/features/annotation/container/questions/QuestionsForm.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/QuestionsForm.vue rename to extralit-frontend/components/features/annotation/container/questions/QuestionsForm.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/Questions.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/Questions.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/Questions.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/Questions.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/multi-label/MultiLabel.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/multi-label/MultiLabel.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/multi-label/MultiLabel.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/multi-label/MultiLabel.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/ranking/Ranking.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/ranking/Ranking.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/ranking/Ranking.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/ranking/Ranking.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/ranking/drag-and-drop-selection/DndSelection.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/ranking/drag-and-drop-selection/DndSelection.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/ranking/drag-and-drop-selection/DndSelection.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/ranking/drag-and-drop-selection/DndSelection.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/ranking/drag-and-drop-selection/dndSelection.component.spec.js b/extralit-frontend/components/features/annotation/container/questions/form/ranking/drag-and-drop-selection/dndSelection.component.spec.js similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/ranking/drag-and-drop-selection/dndSelection.component.spec.js rename to extralit-frontend/components/features/annotation/container/questions/form/ranking/drag-and-drop-selection/dndSelection.component.spec.js diff --git a/argilla-frontend/components/features/annotation/container/questions/form/ranking/ranking-adapter.js b/extralit-frontend/components/features/annotation/container/questions/form/ranking/ranking-adapter.js similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/ranking/ranking-adapter.js rename to extralit-frontend/components/features/annotation/container/questions/form/ranking/ranking-adapter.js diff --git a/argilla-frontend/components/features/annotation/container/questions/form/ranking/ranking-adapter.test.js b/extralit-frontend/components/features/annotation/container/questions/form/ranking/ranking-adapter.test.js similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/ranking/ranking-adapter.test.js rename to extralit-frontend/components/features/annotation/container/questions/form/ranking/ranking-adapter.test.js diff --git a/argilla-frontend/components/features/annotation/container/questions/form/ranking/ranking-fakes.js b/extralit-frontend/components/features/annotation/container/questions/form/ranking/ranking-fakes.js similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/ranking/ranking-fakes.js rename to extralit-frontend/components/features/annotation/container/questions/form/ranking/ranking-fakes.js diff --git a/argilla-frontend/components/features/annotation/container/questions/form/rating/Rating.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/rating/Rating.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/rating/Rating.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/rating/Rating.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/rating/RatingMonoSelection.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/rating/RatingMonoSelection.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/rating/RatingMonoSelection.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/rating/RatingMonoSelection.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/rating/RatingShortcuts.vue b/extralit-frontend/components/features/annotation/container/questions/form/rating/RatingShortcuts.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/rating/RatingShortcuts.vue rename to extralit-frontend/components/features/annotation/container/questions/form/rating/RatingShortcuts.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/rating/ratingMonoSelection.component.spec.js b/extralit-frontend/components/features/annotation/container/questions/form/rating/ratingMonoSelection.component.spec.js similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/rating/ratingMonoSelection.component.spec.js rename to extralit-frontend/components/features/annotation/container/questions/form/rating/ratingMonoSelection.component.spec.js diff --git a/argilla-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/LabelSelection.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/LabelSelection.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/LabelSelection.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/LabelSelection.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/labelSelection.component.spec.js b/extralit-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/labelSelection.component.spec.js similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/labelSelection.component.spec.js rename to extralit-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/labelSelection.component.spec.js diff --git a/argilla-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/useLabelSelectionViewModel.ts b/extralit-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/useLabelSelectionViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/useLabelSelectionViewModel.ts rename to extralit-frontend/components/features/annotation/container/questions/form/shared-components/label-selection/useLabelSelectionViewModel.ts diff --git a/argilla-frontend/components/features/annotation/container/questions/form/shared-components/question-header/QuestionHeader.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/shared-components/question-header/QuestionHeader.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/shared-components/question-header/QuestionHeader.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/shared-components/question-header/QuestionHeader.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/shared-components/search-label/SearchLabel.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/shared-components/search-label/SearchLabel.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/shared-components/search-label/SearchLabel.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/shared-components/search-label/SearchLabel.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/shared-components/search-label/searchLabel.component.spec.js b/extralit-frontend/components/features/annotation/container/questions/form/shared-components/search-label/searchLabel.component.spec.js similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/shared-components/search-label/searchLabel.component.spec.js rename to extralit-frontend/components/features/annotation/container/questions/form/shared-components/search-label/searchLabel.component.spec.js diff --git a/argilla-frontend/components/features/annotation/container/questions/form/single-label/SingleLabel.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/single-label/SingleLabel.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/single-label/SingleLabel.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/single-label/SingleLabel.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/span/EntityLabelBadge.vue b/extralit-frontend/components/features/annotation/container/questions/form/span/EntityLabelBadge.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/span/EntityLabelBadge.vue rename to extralit-frontend/components/features/annotation/container/questions/form/span/EntityLabelBadge.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/span/EntityLabelSelection.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/span/EntityLabelSelection.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/span/EntityLabelSelection.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/span/EntityLabelSelection.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/span/SpanComponent.vue b/extralit-frontend/components/features/annotation/container/questions/form/span/SpanComponent.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/span/SpanComponent.vue rename to extralit-frontend/components/features/annotation/container/questions/form/span/SpanComponent.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/table/TableComponent.vue b/extralit-frontend/components/features/annotation/container/questions/form/table/TableComponent.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/table/TableComponent.vue rename to extralit-frontend/components/features/annotation/container/questions/form/table/TableComponent.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/text-area/ContentEditableFeedbackTask.vue b/extralit-frontend/components/features/annotation/container/questions/form/text-area/ContentEditableFeedbackTask.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/text-area/ContentEditableFeedbackTask.vue rename to extralit-frontend/components/features/annotation/container/questions/form/text-area/ContentEditableFeedbackTask.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/text-area/TextArea.component.vue b/extralit-frontend/components/features/annotation/container/questions/form/text-area/TextArea.component.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/text-area/TextArea.component.vue rename to extralit-frontend/components/features/annotation/container/questions/form/text-area/TextArea.component.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/text-area/TextAreaContents.vue b/extralit-frontend/components/features/annotation/container/questions/form/text-area/TextAreaContents.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/text-area/TextAreaContents.vue rename to extralit-frontend/components/features/annotation/container/questions/form/text-area/TextAreaContents.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/text-area/TextAreaSuggestion.vue b/extralit-frontend/components/features/annotation/container/questions/form/text-area/TextAreaSuggestion.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/text-area/TextAreaSuggestion.vue rename to extralit-frontend/components/features/annotation/container/questions/form/text-area/TextAreaSuggestion.vue diff --git a/argilla-frontend/components/features/annotation/container/questions/form/useQuestionsViewModel.ts b/extralit-frontend/components/features/annotation/container/questions/form/useQuestionsViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/questions/form/useQuestionsViewModel.ts rename to extralit-frontend/components/features/annotation/container/questions/form/useQuestionsViewModel.ts diff --git a/argilla-frontend/components/features/annotation/container/similarity/SimilarityConfigDropdown.vue b/extralit-frontend/components/features/annotation/container/similarity/SimilarityConfigDropdown.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/similarity/SimilarityConfigDropdown.vue rename to extralit-frontend/components/features/annotation/container/similarity/SimilarityConfigDropdown.vue diff --git a/argilla-frontend/components/features/annotation/container/similarity/SimilarityFilter.vue b/extralit-frontend/components/features/annotation/container/similarity/SimilarityFilter.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/similarity/SimilarityFilter.vue rename to extralit-frontend/components/features/annotation/container/similarity/SimilarityFilter.vue diff --git a/argilla-frontend/components/features/annotation/container/similarity/SimilarityRecordReference.vue b/extralit-frontend/components/features/annotation/container/similarity/SimilarityRecordReference.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/similarity/SimilarityRecordReference.vue rename to extralit-frontend/components/features/annotation/container/similarity/SimilarityRecordReference.vue diff --git a/argilla-frontend/components/features/annotation/container/similarity/SimilarityReference.vue b/extralit-frontend/components/features/annotation/container/similarity/SimilarityReference.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/similarity/SimilarityReference.vue rename to extralit-frontend/components/features/annotation/container/similarity/SimilarityReference.vue diff --git a/argilla-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterLimit.vue b/extralit-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterLimit.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterLimit.vue rename to extralit-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterLimit.vue diff --git a/argilla-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterOrder.vue b/extralit-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterOrder.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterOrder.vue rename to extralit-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterOrder.vue diff --git a/argilla-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterVector.vue b/extralit-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterVector.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterVector.vue rename to extralit-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterVector.vue diff --git a/argilla-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterVectorRadioButtons.vue b/extralit-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterVectorRadioButtons.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterVectorRadioButtons.vue rename to extralit-frontend/components/features/annotation/container/similarity/filters/SimilarityFilterVectorRadioButtons.vue diff --git a/argilla-frontend/components/features/annotation/container/useRecordFeedbackTaskViewModel.ts b/extralit-frontend/components/features/annotation/container/useRecordFeedbackTaskViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/useRecordFeedbackTaskViewModel.ts rename to extralit-frontend/components/features/annotation/container/useRecordFeedbackTaskViewModel.ts diff --git a/argilla-frontend/components/features/annotation/container/useRecordsMessages.test.ts b/extralit-frontend/components/features/annotation/container/useRecordsMessages.test.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/useRecordsMessages.test.ts rename to extralit-frontend/components/features/annotation/container/useRecordsMessages.test.ts diff --git a/argilla-frontend/components/features/annotation/container/useRecordsMessages.ts b/extralit-frontend/components/features/annotation/container/useRecordsMessages.ts similarity index 100% rename from argilla-frontend/components/features/annotation/container/useRecordsMessages.ts rename to extralit-frontend/components/features/annotation/container/useRecordsMessages.ts diff --git a/argilla-frontend/components/features/annotation/container/view-config/RecordsViewConfig.vue b/extralit-frontend/components/features/annotation/container/view-config/RecordsViewConfig.vue similarity index 100% rename from argilla-frontend/components/features/annotation/container/view-config/RecordsViewConfig.vue rename to extralit-frontend/components/features/annotation/container/view-config/RecordsViewConfig.vue diff --git a/argilla-frontend/components/features/annotation/guidelines/AnnotationGuidelines.vue b/extralit-frontend/components/features/annotation/guidelines/AnnotationGuidelines.vue similarity index 100% rename from argilla-frontend/components/features/annotation/guidelines/AnnotationGuidelines.vue rename to extralit-frontend/components/features/annotation/guidelines/AnnotationGuidelines.vue diff --git a/argilla-frontend/components/features/annotation/guidelines/useAnnotationGuidelinesViewModel.ts b/extralit-frontend/components/features/annotation/guidelines/useAnnotationGuidelinesViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/guidelines/useAnnotationGuidelinesViewModel.ts rename to extralit-frontend/components/features/annotation/guidelines/useAnnotationGuidelinesViewModel.ts diff --git a/argilla-frontend/components/features/annotation/header/DatasetFilters.vue b/extralit-frontend/components/features/annotation/header/DatasetFilters.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/DatasetFilters.vue rename to extralit-frontend/components/features/annotation/header/DatasetFilters.vue diff --git a/argilla-frontend/components/features/annotation/header/RadioButtonsSelect.base.vue b/extralit-frontend/components/features/annotation/header/RadioButtonsSelect.base.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/RadioButtonsSelect.base.vue rename to extralit-frontend/components/features/annotation/header/RadioButtonsSelect.base.vue diff --git a/argilla-frontend/components/features/annotation/header/StatusFilter.vue b/extralit-frontend/components/features/annotation/header/StatusFilter.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/StatusFilter.vue rename to extralit-frontend/components/features/annotation/header/StatusFilter.vue diff --git a/argilla-frontend/components/features/annotation/header/ToggleAnnotationType.vue b/extralit-frontend/components/features/annotation/header/ToggleAnnotationType.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/ToggleAnnotationType.vue rename to extralit-frontend/components/features/annotation/header/ToggleAnnotationType.vue diff --git a/argilla-frontend/components/features/annotation/header/filters/CategoriesSelector.vue b/extralit-frontend/components/features/annotation/header/filters/CategoriesSelector.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/filters/CategoriesSelector.vue rename to extralit-frontend/components/features/annotation/header/filters/CategoriesSelector.vue diff --git a/argilla-frontend/components/features/annotation/header/filters/FilterBadge.vue b/extralit-frontend/components/features/annotation/header/filters/FilterBadge.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/filters/FilterBadge.vue rename to extralit-frontend/components/features/annotation/header/filters/FilterBadge.vue diff --git a/argilla-frontend/components/features/annotation/header/filters/FilterButton.vue b/extralit-frontend/components/features/annotation/header/filters/FilterButton.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/filters/FilterButton.vue rename to extralit-frontend/components/features/annotation/header/filters/FilterButton.vue diff --git a/argilla-frontend/components/features/annotation/header/filters/FilterButtonWithBadges.vue b/extralit-frontend/components/features/annotation/header/filters/FilterButtonWithBadges.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/filters/FilterButtonWithBadges.vue rename to extralit-frontend/components/features/annotation/header/filters/FilterButtonWithBadges.vue diff --git a/argilla-frontend/components/features/annotation/header/filters/FilterTooltip.vue b/extralit-frontend/components/features/annotation/header/filters/FilterTooltip.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/filters/FilterTooltip.vue rename to extralit-frontend/components/features/annotation/header/filters/FilterTooltip.vue diff --git a/argilla-frontend/components/features/annotation/header/filters/LabelsSelector.vue b/extralit-frontend/components/features/annotation/header/filters/LabelsSelector.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/filters/LabelsSelector.vue rename to extralit-frontend/components/features/annotation/header/filters/LabelsSelector.vue diff --git a/argilla-frontend/components/features/annotation/header/filters/LabelsSelectorSearch.vue b/extralit-frontend/components/features/annotation/header/filters/LabelsSelectorSearch.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/filters/LabelsSelectorSearch.vue rename to extralit-frontend/components/features/annotation/header/filters/LabelsSelectorSearch.vue diff --git a/argilla-frontend/components/features/annotation/header/filters/OptionsSelector.vue b/extralit-frontend/components/features/annotation/header/filters/OptionsSelector.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/filters/OptionsSelector.vue rename to extralit-frontend/components/features/annotation/header/filters/OptionsSelector.vue diff --git a/argilla-frontend/components/features/annotation/header/filters/RangeSelector.vue b/extralit-frontend/components/features/annotation/header/filters/RangeSelector.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/filters/RangeSelector.vue rename to extralit-frontend/components/features/annotation/header/filters/RangeSelector.vue diff --git a/argilla-frontend/components/features/annotation/header/header-bar/DatasetSettingsIconFeedbackTask.vue b/extralit-frontend/components/features/annotation/header/header-bar/DatasetSettingsIconFeedbackTask.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/header-bar/DatasetSettingsIconFeedbackTask.vue rename to extralit-frontend/components/features/annotation/header/header-bar/DatasetSettingsIconFeedbackTask.vue diff --git a/argilla-frontend/components/features/annotation/header/header-bar/ExportToHub.vue b/extralit-frontend/components/features/annotation/header/header-bar/ExportToHub.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/header-bar/ExportToHub.vue rename to extralit-frontend/components/features/annotation/header/header-bar/ExportToHub.vue diff --git a/argilla-frontend/components/features/annotation/header/header-bar/HeaderFeedbackTask.vue b/extralit-frontend/components/features/annotation/header/header-bar/HeaderFeedbackTask.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/header-bar/HeaderFeedbackTask.vue rename to extralit-frontend/components/features/annotation/header/header-bar/HeaderFeedbackTask.vue diff --git a/argilla-frontend/components/features/annotation/header/header-bar/ImportData.vue b/extralit-frontend/components/features/annotation/header/header-bar/ImportData.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/header-bar/ImportData.vue rename to extralit-frontend/components/features/annotation/header/header-bar/ImportData.vue diff --git a/argilla-frontend/components/features/annotation/header/header-bar/headerFeedbackTask.spec.js b/extralit-frontend/components/features/annotation/header/header-bar/headerFeedbackTask.spec.js similarity index 100% rename from argilla-frontend/components/features/annotation/header/header-bar/headerFeedbackTask.spec.js rename to extralit-frontend/components/features/annotation/header/header-bar/headerFeedbackTask.spec.js diff --git a/argilla-frontend/components/features/annotation/header/header-bar/useExportToHubViewModel.ts b/extralit-frontend/components/features/annotation/header/header-bar/useExportToHubViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/header/header-bar/useExportToHubViewModel.ts rename to extralit-frontend/components/features/annotation/header/header-bar/useExportToHubViewModel.ts diff --git a/argilla-frontend/components/features/annotation/header/load-line/LoadLine.vue b/extralit-frontend/components/features/annotation/header/load-line/LoadLine.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/load-line/LoadLine.vue rename to extralit-frontend/components/features/annotation/header/load-line/LoadLine.vue diff --git a/argilla-frontend/components/features/annotation/header/metadata-filter/MetadataFilter.vue b/extralit-frontend/components/features/annotation/header/metadata-filter/MetadataFilter.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/metadata-filter/MetadataFilter.vue rename to extralit-frontend/components/features/annotation/header/metadata-filter/MetadataFilter.vue diff --git a/argilla-frontend/components/features/annotation/header/metadata-filter/useMetadataFilterViewModel.ts b/extralit-frontend/components/features/annotation/header/metadata-filter/useMetadataFilterViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/header/metadata-filter/useMetadataFilterViewModel.ts rename to extralit-frontend/components/features/annotation/header/metadata-filter/useMetadataFilterViewModel.ts diff --git a/argilla-frontend/components/features/annotation/header/responses-filter/ResponsesFilter.vue b/extralit-frontend/components/features/annotation/header/responses-filter/ResponsesFilter.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/responses-filter/ResponsesFilter.vue rename to extralit-frontend/components/features/annotation/header/responses-filter/ResponsesFilter.vue diff --git a/argilla-frontend/components/features/annotation/header/responses-filter/useResponseFilterViewModel.ts b/extralit-frontend/components/features/annotation/header/responses-filter/useResponseFilterViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/header/responses-filter/useResponseFilterViewModel.ts rename to extralit-frontend/components/features/annotation/header/responses-filter/useResponseFilterViewModel.ts diff --git a/argilla-frontend/components/features/annotation/header/search-bar-filter/SearchBarFilter.vue b/extralit-frontend/components/features/annotation/header/search-bar-filter/SearchBarFilter.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/search-bar-filter/SearchBarFilter.vue rename to extralit-frontend/components/features/annotation/header/search-bar-filter/SearchBarFilter.vue diff --git a/argilla-frontend/components/features/annotation/header/sort-filter/Sort.vue b/extralit-frontend/components/features/annotation/header/sort-filter/Sort.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/sort-filter/Sort.vue rename to extralit-frontend/components/features/annotation/header/sort-filter/Sort.vue diff --git a/argilla-frontend/components/features/annotation/header/sort-filter/SortButton.vue b/extralit-frontend/components/features/annotation/header/sort-filter/SortButton.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/sort-filter/SortButton.vue rename to extralit-frontend/components/features/annotation/header/sort-filter/SortButton.vue diff --git a/argilla-frontend/components/features/annotation/header/sort-filter/SortCategoriesList.vue b/extralit-frontend/components/features/annotation/header/sort-filter/SortCategoriesList.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/sort-filter/SortCategoriesList.vue rename to extralit-frontend/components/features/annotation/header/sort-filter/SortCategoriesList.vue diff --git a/argilla-frontend/components/features/annotation/header/sort-filter/SortSelector.vue b/extralit-frontend/components/features/annotation/header/sort-filter/SortSelector.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/sort-filter/SortSelector.vue rename to extralit-frontend/components/features/annotation/header/sort-filter/SortSelector.vue diff --git a/argilla-frontend/components/features/annotation/header/sort-filter/SortSelectorItem.vue b/extralit-frontend/components/features/annotation/header/sort-filter/SortSelectorItem.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/sort-filter/SortSelectorItem.vue rename to extralit-frontend/components/features/annotation/header/sort-filter/SortSelectorItem.vue diff --git a/argilla-frontend/components/features/annotation/header/sort-filter/useSortRecords.ts b/extralit-frontend/components/features/annotation/header/sort-filter/useSortRecords.ts similarity index 100% rename from argilla-frontend/components/features/annotation/header/sort-filter/useSortRecords.ts rename to extralit-frontend/components/features/annotation/header/sort-filter/useSortRecords.ts diff --git a/argilla-frontend/components/features/annotation/header/suggestion-filter/SuggestionFilter.vue b/extralit-frontend/components/features/annotation/header/suggestion-filter/SuggestionFilter.vue similarity index 100% rename from argilla-frontend/components/features/annotation/header/suggestion-filter/SuggestionFilter.vue rename to extralit-frontend/components/features/annotation/header/suggestion-filter/SuggestionFilter.vue diff --git a/argilla-frontend/components/features/annotation/header/suggestion-filter/useSuggestionFilterViewModel.ts b/extralit-frontend/components/features/annotation/header/suggestion-filter/useSuggestionFilterViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/header/suggestion-filter/useSuggestionFilterViewModel.ts rename to extralit-frontend/components/features/annotation/header/suggestion-filter/useSuggestionFilterViewModel.ts diff --git a/argilla-frontend/components/features/annotation/header/useDatasetsFiltersViewModel.ts b/extralit-frontend/components/features/annotation/header/useDatasetsFiltersViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/header/useDatasetsFiltersViewModel.ts rename to extralit-frontend/components/features/annotation/header/useDatasetsFiltersViewModel.ts diff --git a/argilla-frontend/components/features/annotation/pagination/PageSizeSelector.vue b/extralit-frontend/components/features/annotation/pagination/PageSizeSelector.vue similarity index 100% rename from argilla-frontend/components/features/annotation/pagination/PageSizeSelector.vue rename to extralit-frontend/components/features/annotation/pagination/PageSizeSelector.vue diff --git a/argilla-frontend/components/features/annotation/pagination/Pagination.vue b/extralit-frontend/components/features/annotation/pagination/Pagination.vue similarity index 100% rename from argilla-frontend/components/features/annotation/pagination/Pagination.vue rename to extralit-frontend/components/features/annotation/pagination/Pagination.vue diff --git a/argilla-frontend/components/features/annotation/pagination/PaginationFeedbackTask.vue b/extralit-frontend/components/features/annotation/pagination/PaginationFeedbackTask.vue similarity index 100% rename from argilla-frontend/components/features/annotation/pagination/PaginationFeedbackTask.vue rename to extralit-frontend/components/features/annotation/pagination/PaginationFeedbackTask.vue diff --git a/argilla-frontend/components/features/annotation/pagination/usePaginationFeedbackTaskViewModel.ts b/extralit-frontend/components/features/annotation/pagination/usePaginationFeedbackTaskViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/pagination/usePaginationFeedbackTaskViewModel.ts rename to extralit-frontend/components/features/annotation/pagination/usePaginationFeedbackTaskViewModel.ts diff --git a/argilla-frontend/components/features/annotation/progress/AnnotationProgress.vue b/extralit-frontend/components/features/annotation/progress/AnnotationProgress.vue similarity index 100% rename from argilla-frontend/components/features/annotation/progress/AnnotationProgress.vue rename to extralit-frontend/components/features/annotation/progress/AnnotationProgress.vue diff --git a/argilla-frontend/components/features/annotation/progress/AnnotationProgressDetailed.vue b/extralit-frontend/components/features/annotation/progress/AnnotationProgressDetailed.vue similarity index 100% rename from argilla-frontend/components/features/annotation/progress/AnnotationProgressDetailed.vue rename to extralit-frontend/components/features/annotation/progress/AnnotationProgressDetailed.vue diff --git a/argilla-frontend/components/features/annotation/progress/TeamProgress.vue b/extralit-frontend/components/features/annotation/progress/TeamProgress.vue similarity index 100% rename from argilla-frontend/components/features/annotation/progress/TeamProgress.vue rename to extralit-frontend/components/features/annotation/progress/TeamProgress.vue diff --git a/argilla-frontend/components/features/annotation/progress/share/Share.vue b/extralit-frontend/components/features/annotation/progress/share/Share.vue similarity index 100% rename from argilla-frontend/components/features/annotation/progress/share/Share.vue rename to extralit-frontend/components/features/annotation/progress/share/Share.vue diff --git a/argilla-frontend/components/features/annotation/progress/share/useShareViewModel.ts b/extralit-frontend/components/features/annotation/progress/share/useShareViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/progress/share/useShareViewModel.ts rename to extralit-frontend/components/features/annotation/progress/share/useShareViewModel.ts diff --git a/argilla-frontend/components/features/annotation/progress/status-counter/StatusCounter.vue b/extralit-frontend/components/features/annotation/progress/status-counter/StatusCounter.vue similarity index 100% rename from argilla-frontend/components/features/annotation/progress/status-counter/StatusCounter.vue rename to extralit-frontend/components/features/annotation/progress/status-counter/StatusCounter.vue diff --git a/argilla-frontend/components/features/annotation/progress/status-counter/StatusCounterSkeleton.vue b/extralit-frontend/components/features/annotation/progress/status-counter/StatusCounterSkeleton.vue similarity index 100% rename from argilla-frontend/components/features/annotation/progress/status-counter/StatusCounterSkeleton.vue rename to extralit-frontend/components/features/annotation/progress/status-counter/StatusCounterSkeleton.vue diff --git a/argilla-frontend/components/features/annotation/progress/useAnnotationProgressViewModel.ts b/extralit-frontend/components/features/annotation/progress/useAnnotationProgressViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/progress/useAnnotationProgressViewModel.ts rename to extralit-frontend/components/features/annotation/progress/useAnnotationProgressViewModel.ts diff --git a/argilla-frontend/components/features/annotation/progress/useTeamProgressViewModel.ts b/extralit-frontend/components/features/annotation/progress/useTeamProgressViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/progress/useTeamProgressViewModel.ts rename to extralit-frontend/components/features/annotation/progress/useTeamProgressViewModel.ts diff --git a/argilla-frontend/components/features/annotation/settings/DatasetDeleteFeedbackTask.vue b/extralit-frontend/components/features/annotation/settings/DatasetDeleteFeedbackTask.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/DatasetDeleteFeedbackTask.vue rename to extralit-frontend/components/features/annotation/settings/DatasetDeleteFeedbackTask.vue diff --git a/argilla-frontend/components/features/annotation/settings/SettingsDangerZone.vue b/extralit-frontend/components/features/annotation/settings/SettingsDangerZone.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/SettingsDangerZone.vue rename to extralit-frontend/components/features/annotation/settings/SettingsDangerZone.vue diff --git a/argilla-frontend/components/features/annotation/settings/SettingsFields.vue b/extralit-frontend/components/features/annotation/settings/SettingsFields.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/SettingsFields.vue rename to extralit-frontend/components/features/annotation/settings/SettingsFields.vue diff --git a/argilla-frontend/components/features/annotation/settings/SettingsInfo.vue b/extralit-frontend/components/features/annotation/settings/SettingsInfo.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/SettingsInfo.vue rename to extralit-frontend/components/features/annotation/settings/SettingsInfo.vue diff --git a/argilla-frontend/components/features/annotation/settings/SettingsInfoReadOnly.vue b/extralit-frontend/components/features/annotation/settings/SettingsInfoReadOnly.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/SettingsInfoReadOnly.vue rename to extralit-frontend/components/features/annotation/settings/SettingsInfoReadOnly.vue diff --git a/argilla-frontend/components/features/annotation/settings/SettingsMetadata.vue b/extralit-frontend/components/features/annotation/settings/SettingsMetadata.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/SettingsMetadata.vue rename to extralit-frontend/components/features/annotation/settings/SettingsMetadata.vue diff --git a/argilla-frontend/components/features/annotation/settings/SettingsQuestions.vue b/extralit-frontend/components/features/annotation/settings/SettingsQuestions.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/SettingsQuestions.vue rename to extralit-frontend/components/features/annotation/settings/SettingsQuestions.vue diff --git a/argilla-frontend/components/features/annotation/settings/SettingsVectors.vue b/extralit-frontend/components/features/annotation/settings/SettingsVectors.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/SettingsVectors.vue rename to extralit-frontend/components/features/annotation/settings/SettingsVectors.vue diff --git a/argilla-frontend/components/features/annotation/settings/TopDatasetSettingsFeedbackTask.vue b/extralit-frontend/components/features/annotation/settings/TopDatasetSettingsFeedbackTask.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/TopDatasetSettingsFeedbackTask.vue rename to extralit-frontend/components/features/annotation/settings/TopDatasetSettingsFeedbackTask.vue diff --git a/argilla-frontend/components/features/annotation/settings/Validation.vue b/extralit-frontend/components/features/annotation/settings/Validation.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/Validation.vue rename to extralit-frontend/components/features/annotation/settings/Validation.vue diff --git a/argilla-frontend/components/features/annotation/settings/dataset-description/DatasetDescription.vue b/extralit-frontend/components/features/annotation/settings/dataset-description/DatasetDescription.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/dataset-description/DatasetDescription.vue rename to extralit-frontend/components/features/annotation/settings/dataset-description/DatasetDescription.vue diff --git a/argilla-frontend/components/features/annotation/settings/dataset-description/DatasetDescriptionReadOnly.spec.js b/extralit-frontend/components/features/annotation/settings/dataset-description/DatasetDescriptionReadOnly.spec.js similarity index 100% rename from argilla-frontend/components/features/annotation/settings/dataset-description/DatasetDescriptionReadOnly.spec.js rename to extralit-frontend/components/features/annotation/settings/dataset-description/DatasetDescriptionReadOnly.spec.js diff --git a/argilla-frontend/components/features/annotation/settings/dataset-description/DatasetDescriptionReadOnly.vue b/extralit-frontend/components/features/annotation/settings/dataset-description/DatasetDescriptionReadOnly.vue similarity index 100% rename from argilla-frontend/components/features/annotation/settings/dataset-description/DatasetDescriptionReadOnly.vue rename to extralit-frontend/components/features/annotation/settings/dataset-description/DatasetDescriptionReadOnly.vue diff --git a/argilla-frontend/components/features/annotation/settings/useDeleteDatasetViewModel.ts b/extralit-frontend/components/features/annotation/settings/useDeleteDatasetViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/settings/useDeleteDatasetViewModel.ts rename to extralit-frontend/components/features/annotation/settings/useDeleteDatasetViewModel.ts diff --git a/argilla-frontend/components/features/annotation/settings/useSettingInfoViewModel.ts b/extralit-frontend/components/features/annotation/settings/useSettingInfoViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/settings/useSettingInfoViewModel.ts rename to extralit-frontend/components/features/annotation/settings/useSettingInfoViewModel.ts diff --git a/argilla-frontend/components/features/annotation/settings/useSettingsFieldsViewModel.ts b/extralit-frontend/components/features/annotation/settings/useSettingsFieldsViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/settings/useSettingsFieldsViewModel.ts rename to extralit-frontend/components/features/annotation/settings/useSettingsFieldsViewModel.ts diff --git a/argilla-frontend/components/features/annotation/settings/useSettingsMetadataViewModel.ts b/extralit-frontend/components/features/annotation/settings/useSettingsMetadataViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/settings/useSettingsMetadataViewModel.ts rename to extralit-frontend/components/features/annotation/settings/useSettingsMetadataViewModel.ts diff --git a/argilla-frontend/components/features/annotation/settings/useSettingsQuestionsViewModel.ts b/extralit-frontend/components/features/annotation/settings/useSettingsQuestionsViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/settings/useSettingsQuestionsViewModel.ts rename to extralit-frontend/components/features/annotation/settings/useSettingsQuestionsViewModel.ts diff --git a/argilla-frontend/components/features/annotation/settings/useSettingsVectorsViewModel.ts b/extralit-frontend/components/features/annotation/settings/useSettingsVectorsViewModel.ts similarity index 100% rename from argilla-frontend/components/features/annotation/settings/useSettingsVectorsViewModel.ts rename to extralit-frontend/components/features/annotation/settings/useSettingsVectorsViewModel.ts diff --git a/argilla-frontend/components/features/annotation/shortcuts/AnnotationHelpShortcut.vue b/extralit-frontend/components/features/annotation/shortcuts/AnnotationHelpShortcut.vue similarity index 100% rename from argilla-frontend/components/features/annotation/shortcuts/AnnotationHelpShortcut.vue rename to extralit-frontend/components/features/annotation/shortcuts/AnnotationHelpShortcut.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/DatasetConfiguration.spec.js b/extralit-frontend/components/features/dataset-creation/configuration/DatasetConfiguration.spec.js similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/DatasetConfiguration.spec.js rename to extralit-frontend/components/features/dataset-creation/configuration/DatasetConfiguration.spec.js diff --git a/argilla-frontend/components/features/dataset-creation/configuration/DatasetConfiguration.vue b/extralit-frontend/components/features/dataset-creation/configuration/DatasetConfiguration.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/DatasetConfiguration.vue rename to extralit-frontend/components/features/dataset-creation/configuration/DatasetConfiguration.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/DatasetConfigurationDialog.vue b/extralit-frontend/components/features/dataset-creation/configuration/DatasetConfigurationDialog.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/DatasetConfigurationDialog.vue rename to extralit-frontend/components/features/dataset-creation/configuration/DatasetConfigurationDialog.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/DatasetConfigurationForm.vue b/extralit-frontend/components/features/dataset-creation/configuration/DatasetConfigurationForm.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/DatasetConfigurationForm.vue rename to extralit-frontend/components/features/dataset-creation/configuration/DatasetConfigurationForm.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/DatasetConfigurationMetadataSelector.vue b/extralit-frontend/components/features/dataset-creation/configuration/DatasetConfigurationMetadataSelector.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/DatasetConfigurationMetadataSelector.vue rename to extralit-frontend/components/features/dataset-creation/configuration/DatasetConfigurationMetadataSelector.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/fields/DatasetConfigurationField.vue b/extralit-frontend/components/features/dataset-creation/configuration/fields/DatasetConfigurationField.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/fields/DatasetConfigurationField.vue rename to extralit-frontend/components/features/dataset-creation/configuration/fields/DatasetConfigurationField.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationAddQuestion.vue b/extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationAddQuestion.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationAddQuestion.vue rename to extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationAddQuestion.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationColumnSelector.vue b/extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationColumnSelector.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationColumnSelector.vue rename to extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationColumnSelector.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationFieldSelector.vue b/extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationFieldSelector.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationFieldSelector.vue rename to extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationFieldSelector.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationInput.vue b/extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationInput.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationInput.vue rename to extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationInput.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationLabels.vue b/extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationLabels.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationLabels.vue rename to extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationLabels.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationQuestion.vue b/extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationQuestion.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationQuestion.vue rename to extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationQuestion.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationRanking.vue b/extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationRanking.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationRanking.vue rename to extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationRanking.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationRating.vue b/extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationRating.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationRating.vue rename to extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationRating.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationSpan.vue b/extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationSpan.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationSpan.vue rename to extralit-frontend/components/features/dataset-creation/configuration/questions/DatasetConfigurationSpan.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationCard.vue b/extralit-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationCard.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationCard.vue rename to extralit-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationCard.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationChipsSelector.vue b/extralit-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationChipsSelector.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationChipsSelector.vue rename to extralit-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationChipsSelector.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationSelector.vue b/extralit-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationSelector.vue similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationSelector.vue rename to extralit-frontend/components/features/dataset-creation/configuration/shared/DatasetConfigurationSelector.vue diff --git a/argilla-frontend/components/features/dataset-creation/configuration/useDatasetConfiguration.ts b/extralit-frontend/components/features/dataset-creation/configuration/useDatasetConfiguration.ts similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/useDatasetConfiguration.ts rename to extralit-frontend/components/features/dataset-creation/configuration/useDatasetConfiguration.ts diff --git a/argilla-frontend/components/features/dataset-creation/configuration/useDatasetConfigurationForm.ts b/extralit-frontend/components/features/dataset-creation/configuration/useDatasetConfigurationForm.ts similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/useDatasetConfigurationForm.ts rename to extralit-frontend/components/features/dataset-creation/configuration/useDatasetConfigurationForm.ts diff --git a/argilla-frontend/components/features/dataset-creation/configuration/useDatasetConfigurationNameAndWorkspace.ts b/extralit-frontend/components/features/dataset-creation/configuration/useDatasetConfigurationNameAndWorkspace.ts similarity index 100% rename from argilla-frontend/components/features/dataset-creation/configuration/useDatasetConfigurationNameAndWorkspace.ts rename to extralit-frontend/components/features/dataset-creation/configuration/useDatasetConfigurationNameAndWorkspace.ts diff --git a/argilla-frontend/components/features/documents/DocumentsList.vue b/extralit-frontend/components/features/documents/DocumentsList.vue similarity index 100% rename from argilla-frontend/components/features/documents/DocumentsList.vue rename to extralit-frontend/components/features/documents/DocumentsList.vue diff --git a/argilla-frontend/components/features/documents/useDocumentsListViewModel.ts b/extralit-frontend/components/features/documents/useDocumentsListViewModel.ts similarity index 100% rename from argilla-frontend/components/features/documents/useDocumentsListViewModel.ts rename to extralit-frontend/components/features/documents/useDocumentsListViewModel.ts diff --git a/argilla-frontend/components/features/global/AppHeader.vue b/extralit-frontend/components/features/global/AppHeader.vue similarity index 100% rename from argilla-frontend/components/features/global/AppHeader.vue rename to extralit-frontend/components/features/global/AppHeader.vue diff --git a/argilla-frontend/components/features/global/persistent-storage/PersistentStorageBanner.vue b/extralit-frontend/components/features/global/persistent-storage/PersistentStorageBanner.vue similarity index 100% rename from argilla-frontend/components/features/global/persistent-storage/PersistentStorageBanner.vue rename to extralit-frontend/components/features/global/persistent-storage/PersistentStorageBanner.vue diff --git a/argilla-frontend/components/features/global/persistent-storage/usePersistentStorageViewModel.ts b/extralit-frontend/components/features/global/persistent-storage/usePersistentStorageViewModel.ts similarity index 100% rename from argilla-frontend/components/features/global/persistent-storage/usePersistentStorageViewModel.ts rename to extralit-frontend/components/features/global/persistent-storage/usePersistentStorageViewModel.ts diff --git a/argilla-frontend/components/features/global/user/UserAvatarTooltip.vue b/extralit-frontend/components/features/global/user/UserAvatarTooltip.vue similarity index 100% rename from argilla-frontend/components/features/global/user/UserAvatarTooltip.vue rename to extralit-frontend/components/features/global/user/UserAvatarTooltip.vue diff --git a/argilla-frontend/components/features/global/user/userAvatarTooltipViewModel.ts b/extralit-frontend/components/features/global/user/userAvatarTooltipViewModel.ts similarity index 100% rename from argilla-frontend/components/features/global/user/userAvatarTooltipViewModel.ts rename to extralit-frontend/components/features/global/user/userAvatarTooltipViewModel.ts diff --git a/argilla-frontend/components/features/home/dataset-fields/DatasetFields.vue b/extralit-frontend/components/features/home/dataset-fields/DatasetFields.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-fields/DatasetFields.vue rename to extralit-frontend/components/features/home/dataset-fields/DatasetFields.vue diff --git a/argilla-frontend/components/features/home/dataset-fields/useDatasetFields.ts b/extralit-frontend/components/features/home/dataset-fields/useDatasetFields.ts similarity index 100% rename from argilla-frontend/components/features/home/dataset-fields/useDatasetFields.ts rename to extralit-frontend/components/features/home/dataset-fields/useDatasetFields.ts diff --git a/argilla-frontend/components/features/home/dataset-list/DatasetCard.vue b/extralit-frontend/components/features/home/dataset-list/DatasetCard.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-list/DatasetCard.vue rename to extralit-frontend/components/features/home/dataset-list/DatasetCard.vue diff --git a/argilla-frontend/components/features/home/dataset-list/DatasetList.vue b/extralit-frontend/components/features/home/dataset-list/DatasetList.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-list/DatasetList.vue rename to extralit-frontend/components/features/home/dataset-list/DatasetList.vue diff --git a/argilla-frontend/components/features/home/dataset-list/DatasetListCards.vue b/extralit-frontend/components/features/home/dataset-list/DatasetListCards.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-list/DatasetListCards.vue rename to extralit-frontend/components/features/home/dataset-list/DatasetListCards.vue diff --git a/argilla-frontend/components/features/home/dataset-list/sort-filter/DatasetsSort.vue b/extralit-frontend/components/features/home/dataset-list/sort-filter/DatasetsSort.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-list/sort-filter/DatasetsSort.vue rename to extralit-frontend/components/features/home/dataset-list/sort-filter/DatasetsSort.vue diff --git a/argilla-frontend/components/features/home/dataset-list/sort-filter/DatasetsSortButton.vue b/extralit-frontend/components/features/home/dataset-list/sort-filter/DatasetsSortButton.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-list/sort-filter/DatasetsSortButton.vue rename to extralit-frontend/components/features/home/dataset-list/sort-filter/DatasetsSortButton.vue diff --git a/argilla-frontend/components/features/home/dataset-list/sort-filter/DatasetsSortSelectorItem.vue b/extralit-frontend/components/features/home/dataset-list/sort-filter/DatasetsSortSelectorItem.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-list/sort-filter/DatasetsSortSelectorItem.vue rename to extralit-frontend/components/features/home/dataset-list/sort-filter/DatasetsSortSelectorItem.vue diff --git a/argilla-frontend/components/features/home/dataset-list/useDatasetCardViewModel.ts b/extralit-frontend/components/features/home/dataset-list/useDatasetCardViewModel.ts similarity index 100% rename from argilla-frontend/components/features/home/dataset-list/useDatasetCardViewModel.ts rename to extralit-frontend/components/features/home/dataset-list/useDatasetCardViewModel.ts diff --git a/argilla-frontend/components/features/home/dataset-list/workspaces-filter/WorkspaceSelector.vue b/extralit-frontend/components/features/home/dataset-list/workspaces-filter/WorkspaceSelector.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-list/workspaces-filter/WorkspaceSelector.vue rename to extralit-frontend/components/features/home/dataset-list/workspaces-filter/WorkspaceSelector.vue diff --git a/argilla-frontend/components/features/home/dataset-list/workspaces-filter/WorkspacesFilter.vue b/extralit-frontend/components/features/home/dataset-list/workspaces-filter/WorkspacesFilter.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-list/workspaces-filter/WorkspacesFilter.vue rename to extralit-frontend/components/features/home/dataset-list/workspaces-filter/WorkspacesFilter.vue diff --git a/argilla-frontend/components/features/home/dataset-list/workspaces-filter/WorkspacesFilterButton.vue b/extralit-frontend/components/features/home/dataset-list/workspaces-filter/WorkspacesFilterButton.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-list/workspaces-filter/WorkspacesFilterButton.vue rename to extralit-frontend/components/features/home/dataset-list/workspaces-filter/WorkspacesFilterButton.vue diff --git a/argilla-frontend/components/features/home/dataset-progress/DatasetProgress.vue b/extralit-frontend/components/features/home/dataset-progress/DatasetProgress.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-progress/DatasetProgress.vue rename to extralit-frontend/components/features/home/dataset-progress/DatasetProgress.vue diff --git a/argilla-frontend/components/features/home/dataset-questions/DatasetQuestions.vue b/extralit-frontend/components/features/home/dataset-questions/DatasetQuestions.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-questions/DatasetQuestions.vue rename to extralit-frontend/components/features/home/dataset-questions/DatasetQuestions.vue diff --git a/argilla-frontend/components/features/home/dataset-questions/useDatasetQuestions.ts b/extralit-frontend/components/features/home/dataset-questions/useDatasetQuestions.ts similarity index 100% rename from argilla-frontend/components/features/home/dataset-questions/useDatasetQuestions.ts rename to extralit-frontend/components/features/home/dataset-questions/useDatasetQuestions.ts diff --git a/argilla-frontend/components/features/home/dataset-total/DatasetTotal.vue b/extralit-frontend/components/features/home/dataset-total/DatasetTotal.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-total/DatasetTotal.vue rename to extralit-frontend/components/features/home/dataset-total/DatasetTotal.vue diff --git a/argilla-frontend/components/features/home/dataset-users/DatasetUsers.vue b/extralit-frontend/components/features/home/dataset-users/DatasetUsers.vue similarity index 100% rename from argilla-frontend/components/features/home/dataset-users/DatasetUsers.vue rename to extralit-frontend/components/features/home/dataset-users/DatasetUsers.vue diff --git a/argilla-frontend/components/features/home/datasets-empty/DatasetsEmpty.vue b/extralit-frontend/components/features/home/datasets-empty/DatasetsEmpty.vue similarity index 100% rename from argilla-frontend/components/features/home/datasets-empty/DatasetsEmpty.vue rename to extralit-frontend/components/features/home/datasets-empty/DatasetsEmpty.vue diff --git a/argilla-frontend/components/features/home/datasets-empty/DatasetsEmptyCard.vue b/extralit-frontend/components/features/home/datasets-empty/DatasetsEmptyCard.vue similarity index 100% rename from argilla-frontend/components/features/home/datasets-empty/DatasetsEmptyCard.vue rename to extralit-frontend/components/features/home/datasets-empty/DatasetsEmptyCard.vue diff --git a/argilla-frontend/components/features/home/datasets-empty/useDatasetsEmpty.ts b/extralit-frontend/components/features/home/datasets-empty/useDatasetsEmpty.ts similarity index 100% rename from argilla-frontend/components/features/home/datasets-empty/useDatasetsEmpty.ts rename to extralit-frontend/components/features/home/datasets-empty/useDatasetsEmpty.ts diff --git a/argilla-frontend/components/features/home/shared/DatasetBadge.vue b/extralit-frontend/components/features/home/shared/DatasetBadge.vue similarity index 100% rename from argilla-frontend/components/features/home/shared/DatasetBadge.vue rename to extralit-frontend/components/features/home/shared/DatasetBadge.vue diff --git a/argilla-frontend/components/features/home/shared/UserBadge.vue b/extralit-frontend/components/features/home/shared/UserBadge.vue similarity index 100% rename from argilla-frontend/components/features/home/shared/UserBadge.vue rename to extralit-frontend/components/features/home/shared/UserBadge.vue diff --git a/argilla-frontend/components/features/home/sidebar/ExampleDatasetCard.vue b/extralit-frontend/components/features/home/sidebar/ExampleDatasetCard.vue similarity index 100% rename from argilla-frontend/components/features/home/sidebar/ExampleDatasetCard.vue rename to extralit-frontend/components/features/home/sidebar/ExampleDatasetCard.vue diff --git a/argilla-frontend/components/features/home/sidebar/ImportDocuments.vue b/extralit-frontend/components/features/home/sidebar/ImportDocuments.vue similarity index 100% rename from argilla-frontend/components/features/home/sidebar/ImportDocuments.vue rename to extralit-frontend/components/features/home/sidebar/ImportDocuments.vue diff --git a/argilla-frontend/components/features/home/sidebar/ImportFromHub.vue b/extralit-frontend/components/features/home/sidebar/ImportFromHub.vue similarity index 100% rename from argilla-frontend/components/features/home/sidebar/ImportFromHub.vue rename to extralit-frontend/components/features/home/sidebar/ImportFromHub.vue diff --git a/argilla-frontend/components/features/home/sidebar/ImportFromPython.vue b/extralit-frontend/components/features/home/sidebar/ImportFromPython.vue similarity index 100% rename from argilla-frontend/components/features/home/sidebar/ImportFromPython.vue rename to extralit-frontend/components/features/home/sidebar/ImportFromPython.vue diff --git a/argilla-frontend/components/features/home/sidebar/LinkCard.vue b/extralit-frontend/components/features/home/sidebar/LinkCard.vue similarity index 100% rename from argilla-frontend/components/features/home/sidebar/LinkCard.vue rename to extralit-frontend/components/features/home/sidebar/LinkCard.vue diff --git a/argilla-frontend/components/features/home/sidebar/useImportFromPython.ts b/extralit-frontend/components/features/home/sidebar/useImportFromPython.ts similarity index 100% rename from argilla-frontend/components/features/home/sidebar/useImportFromPython.ts rename to extralit-frontend/components/features/home/sidebar/useImportFromPython.ts diff --git a/argilla-frontend/components/features/import/ImportAnalysisTable.spec.js b/extralit-frontend/components/features/import/ImportAnalysisTable.spec.js similarity index 100% rename from argilla-frontend/components/features/import/ImportAnalysisTable.spec.js rename to extralit-frontend/components/features/import/ImportAnalysisTable.spec.js diff --git a/argilla-frontend/components/features/import/ImportAnalysisTable.vue b/extralit-frontend/components/features/import/ImportAnalysisTable.vue similarity index 100% rename from argilla-frontend/components/features/import/ImportAnalysisTable.vue rename to extralit-frontend/components/features/import/ImportAnalysisTable.vue diff --git a/argilla-frontend/components/features/import/ImportBatchProgress.vue b/extralit-frontend/components/features/import/ImportBatchProgress.vue similarity index 100% rename from argilla-frontend/components/features/import/ImportBatchProgress.vue rename to extralit-frontend/components/features/import/ImportBatchProgress.vue diff --git a/argilla-frontend/components/features/import/ImportFileUpload.vue b/extralit-frontend/components/features/import/ImportFileUpload.vue similarity index 100% rename from argilla-frontend/components/features/import/ImportFileUpload.vue rename to extralit-frontend/components/features/import/ImportFileUpload.vue diff --git a/argilla-frontend/components/features/import/ImportHistoryDataPreview.spec.js b/extralit-frontend/components/features/import/ImportHistoryDataPreview.spec.js similarity index 100% rename from argilla-frontend/components/features/import/ImportHistoryDataPreview.spec.js rename to extralit-frontend/components/features/import/ImportHistoryDataPreview.spec.js diff --git a/argilla-frontend/components/features/import/ImportHistoryDataPreview.vue b/extralit-frontend/components/features/import/ImportHistoryDataPreview.vue similarity index 100% rename from argilla-frontend/components/features/import/ImportHistoryDataPreview.vue rename to extralit-frontend/components/features/import/ImportHistoryDataPreview.vue diff --git a/argilla-frontend/components/features/import/ImportHistoryDetailsModal.vue b/extralit-frontend/components/features/import/ImportHistoryDetailsModal.vue similarity index 100% rename from argilla-frontend/components/features/import/ImportHistoryDetailsModal.vue rename to extralit-frontend/components/features/import/ImportHistoryDetailsModal.vue diff --git a/argilla-frontend/components/features/import/ImportHistoryList.vue b/extralit-frontend/components/features/import/ImportHistoryList.vue similarity index 100% rename from argilla-frontend/components/features/import/ImportHistoryList.vue rename to extralit-frontend/components/features/import/ImportHistoryList.vue diff --git a/argilla-frontend/components/features/import/ImportModal.spec.js b/extralit-frontend/components/features/import/ImportModal.spec.js similarity index 100% rename from argilla-frontend/components/features/import/ImportModal.spec.js rename to extralit-frontend/components/features/import/ImportModal.spec.js diff --git a/argilla-frontend/components/features/import/ImportModal.vue b/extralit-frontend/components/features/import/ImportModal.vue similarity index 100% rename from argilla-frontend/components/features/import/ImportModal.vue rename to extralit-frontend/components/features/import/ImportModal.vue diff --git a/argilla-frontend/components/features/import/ImportSummary.vue b/extralit-frontend/components/features/import/ImportSummary.vue similarity index 100% rename from argilla-frontend/components/features/import/ImportSummary.vue rename to extralit-frontend/components/features/import/ImportSummary.vue diff --git a/argilla-frontend/components/features/import/RecentImportCard.spec.js b/extralit-frontend/components/features/import/RecentImportCard.spec.js similarity index 100% rename from argilla-frontend/components/features/import/RecentImportCard.spec.js rename to extralit-frontend/components/features/import/RecentImportCard.spec.js diff --git a/argilla-frontend/components/features/import/RecentImportCard.vue b/extralit-frontend/components/features/import/RecentImportCard.vue similarity index 100% rename from argilla-frontend/components/features/import/RecentImportCard.vue rename to extralit-frontend/components/features/import/RecentImportCard.vue diff --git a/argilla-frontend/components/features/import/RecentImports.spec.js b/extralit-frontend/components/features/import/RecentImports.spec.js similarity index 100% rename from argilla-frontend/components/features/import/RecentImports.spec.js rename to extralit-frontend/components/features/import/RecentImports.spec.js diff --git a/argilla-frontend/components/features/import/RecentImports.vue b/extralit-frontend/components/features/import/RecentImports.vue similarity index 100% rename from argilla-frontend/components/features/import/RecentImports.vue rename to extralit-frontend/components/features/import/RecentImports.vue diff --git a/argilla-frontend/components/features/import/types.ts b/extralit-frontend/components/features/import/types.ts similarity index 100% rename from argilla-frontend/components/features/import/types.ts rename to extralit-frontend/components/features/import/types.ts diff --git a/argilla-frontend/components/features/import/useImportAnalysisViewModel.ts b/extralit-frontend/components/features/import/useImportAnalysisViewModel.ts similarity index 100% rename from argilla-frontend/components/features/import/useImportAnalysisViewModel.ts rename to extralit-frontend/components/features/import/useImportAnalysisViewModel.ts diff --git a/argilla-frontend/components/features/import/useImportBatchProgressViewModel.ts b/extralit-frontend/components/features/import/useImportBatchProgressViewModel.ts similarity index 100% rename from argilla-frontend/components/features/import/useImportBatchProgressViewModel.ts rename to extralit-frontend/components/features/import/useImportBatchProgressViewModel.ts diff --git a/argilla-frontend/components/features/import/useImportHistoryListViewModel.ts b/extralit-frontend/components/features/import/useImportHistoryListViewModel.ts similarity index 100% rename from argilla-frontend/components/features/import/useImportHistoryListViewModel.ts rename to extralit-frontend/components/features/import/useImportHistoryListViewModel.ts diff --git a/argilla-frontend/components/features/import/useRecentImportsViewModel.spec.js b/extralit-frontend/components/features/import/useRecentImportsViewModel.spec.js similarity index 100% rename from argilla-frontend/components/features/import/useRecentImportsViewModel.spec.js rename to extralit-frontend/components/features/import/useRecentImportsViewModel.spec.js diff --git a/argilla-frontend/components/features/import/useRecentImportsViewModel.ts b/extralit-frontend/components/features/import/useRecentImportsViewModel.ts similarity index 100% rename from argilla-frontend/components/features/import/useRecentImportsViewModel.ts rename to extralit-frontend/components/features/import/useRecentImportsViewModel.ts diff --git a/argilla-frontend/components/features/login/OAuthLogin.vue b/extralit-frontend/components/features/login/OAuthLogin.vue similarity index 100% rename from argilla-frontend/components/features/login/OAuthLogin.vue rename to extralit-frontend/components/features/login/OAuthLogin.vue diff --git a/argilla-frontend/components/features/login/components/DecorationShape.vue b/extralit-frontend/components/features/login/components/DecorationShape.vue similarity index 100% rename from argilla-frontend/components/features/login/components/DecorationShape.vue rename to extralit-frontend/components/features/login/components/DecorationShape.vue diff --git a/argilla-frontend/components/features/login/components/HFLogo.vue b/extralit-frontend/components/features/login/components/HFLogo.vue similarity index 100% rename from argilla-frontend/components/features/login/components/HFLogo.vue rename to extralit-frontend/components/features/login/components/HFLogo.vue diff --git a/argilla-frontend/components/features/login/components/HuggingFaceButton.vue b/extralit-frontend/components/features/login/components/HuggingFaceButton.vue similarity index 100% rename from argilla-frontend/components/features/login/components/HuggingFaceButton.vue rename to extralit-frontend/components/features/login/components/HuggingFaceButton.vue diff --git a/argilla-frontend/components/features/login/components/KeycloakLogo.vue b/extralit-frontend/components/features/login/components/KeycloakLogo.vue similarity index 100% rename from argilla-frontend/components/features/login/components/KeycloakLogo.vue rename to extralit-frontend/components/features/login/components/KeycloakLogo.vue diff --git a/argilla-frontend/components/features/login/components/LoginImageBg.vue b/extralit-frontend/components/features/login/components/LoginImageBg.vue similarity index 100% rename from argilla-frontend/components/features/login/components/LoginImageBg.vue rename to extralit-frontend/components/features/login/components/LoginImageBg.vue diff --git a/argilla-frontend/components/features/login/components/LoginInput.vue b/extralit-frontend/components/features/login/components/LoginInput.vue similarity index 100% rename from argilla-frontend/components/features/login/components/LoginInput.vue rename to extralit-frontend/components/features/login/components/LoginInput.vue diff --git a/argilla-frontend/components/features/login/components/OAuthLoginButton.vue b/extralit-frontend/components/features/login/components/OAuthLoginButton.vue similarity index 100% rename from argilla-frontend/components/features/login/components/OAuthLoginButton.vue rename to extralit-frontend/components/features/login/components/OAuthLoginButton.vue diff --git a/argilla-frontend/components/features/login/useOAuthLoginViewModel.ts b/extralit-frontend/components/features/login/useOAuthLoginViewModel.ts similarity index 100% rename from argilla-frontend/components/features/login/useOAuthLoginViewModel.ts rename to extralit-frontend/components/features/login/useOAuthLoginViewModel.ts diff --git a/argilla-frontend/components/features/user-settings/UserSettingsContent.vue b/extralit-frontend/components/features/user-settings/UserSettingsContent.vue similarity index 100% rename from argilla-frontend/components/features/user-settings/UserSettingsContent.vue rename to extralit-frontend/components/features/user-settings/UserSettingsContent.vue diff --git a/argilla-frontend/components/features/user-settings/UserSettingsHeader.vue b/extralit-frontend/components/features/user-settings/UserSettingsHeader.vue similarity index 100% rename from argilla-frontend/components/features/user-settings/UserSettingsHeader.vue rename to extralit-frontend/components/features/user-settings/UserSettingsHeader.vue diff --git a/argilla-frontend/components/features/user-settings/UserSettingsLanguage.vue b/extralit-frontend/components/features/user-settings/UserSettingsLanguage.vue similarity index 100% rename from argilla-frontend/components/features/user-settings/UserSettingsLanguage.vue rename to extralit-frontend/components/features/user-settings/UserSettingsLanguage.vue diff --git a/argilla-frontend/components/features/user-settings/UserSettingsTheme.vue b/extralit-frontend/components/features/user-settings/UserSettingsTheme.vue similarity index 100% rename from argilla-frontend/components/features/user-settings/UserSettingsTheme.vue rename to extralit-frontend/components/features/user-settings/UserSettingsTheme.vue diff --git a/argilla-frontend/components/features/user-settings/useUserInfoViewModel.ts b/extralit-frontend/components/features/user-settings/useUserInfoViewModel.ts similarity index 100% rename from argilla-frontend/components/features/user-settings/useUserInfoViewModel.ts rename to extralit-frontend/components/features/user-settings/useUserInfoViewModel.ts diff --git a/argilla-frontend/components/features/user-settings/useUserSettingsLanguageViewModel.ts b/extralit-frontend/components/features/user-settings/useUserSettingsLanguageViewModel.ts similarity index 100% rename from argilla-frontend/components/features/user-settings/useUserSettingsLanguageViewModel.ts rename to extralit-frontend/components/features/user-settings/useUserSettingsLanguageViewModel.ts diff --git a/argilla-frontend/components/features/user-settings/user-token/UserToken.component.vue b/extralit-frontend/components/features/user-settings/user-token/UserToken.component.vue similarity index 100% rename from argilla-frontend/components/features/user-settings/user-token/UserToken.component.vue rename to extralit-frontend/components/features/user-settings/user-token/UserToken.component.vue diff --git a/argilla-frontend/dev.frontend.Dockerfile b/extralit-frontend/dev.frontend.Dockerfile similarity index 63% rename from argilla-frontend/dev.frontend.Dockerfile rename to extralit-frontend/dev.frontend.Dockerfile index f393eb5d5..c8abdc330 100644 --- a/argilla-frontend/dev.frontend.Dockerfile +++ b/extralit-frontend/dev.frontend.Dockerfile @@ -7,17 +7,17 @@ USER root RUN apt-get update && \ apt-get install -y nodejs npm -USER argilla +USER extralit WORKDIR /home/extralit/frontend -COPY --chown=argilla:argilla dist ./dist -COPY --chown=argilla:argilla .nuxt ./.nuxt -COPY --chown=argilla:argilla package.json ./package.json -COPY --chown=argilla:argilla package-lock.json ./package-lock.json -COPY --chown=argilla:argilla nuxt.config.ts ./nuxt.config.ts +COPY --chown=extralit:extralit dist ./dist +COPY --chown=extralit:extralit .nuxt ./.nuxt +COPY --chown=extralit:extralit package.json ./package.json +COPY --chown=extralit:extralit package-lock.json ./package-lock.json +COPY --chown=extralit:extralit nuxt.config.ts ./nuxt.config.ts -# NOTE: Right now this Docker image is using dev.argilla.io as server. +# NOTE: Right now this Docker image is using dev.extralit.io as server. # If we want to use a built-in server in the future to check all functionality we can modify the following Procfile # content adding ElasticSearch and extralit-server processes. RUN npm install && \ diff --git a/argilla-frontend/docs/conventions.md b/extralit-frontend/docs/conventions.md similarity index 100% rename from argilla-frontend/docs/conventions.md rename to extralit-frontend/docs/conventions.md diff --git a/argilla-frontend/docs/shortcuts.md b/extralit-frontend/docs/shortcuts.md similarity index 100% rename from argilla-frontend/docs/shortcuts.md rename to extralit-frontend/docs/shortcuts.md diff --git a/argilla-frontend/docs/snippets/start_page.md b/extralit-frontend/docs/snippets/start_page.md similarity index 100% rename from argilla-frontend/docs/snippets/start_page.md rename to extralit-frontend/docs/snippets/start_page.md diff --git a/argilla-frontend/docs/structure.md b/extralit-frontend/docs/structure.md similarity index 100% rename from argilla-frontend/docs/structure.md rename to extralit-frontend/docs/structure.md diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-can-drag-and-drop-ranking-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-can-drag-and-drop-ranking-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-can-drag-and-drop-ranking-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-can-drag-and-drop-ranking-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-can-drag-and-drop-ranking-question-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-can-drag-and-drop-ranking-question-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-can-drag-and-drop-ranking-question-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-can-drag-and-drop-ranking-question-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-and-discard-the-record-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-and-discard-the-record-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-and-discard-the-record-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-clear-all-questions-and-discard-the-record-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-filter-by-workspaces-from-annotation-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-filter-by-workspaces-from-annotation-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-filter-by-workspaces-from-annotation-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-filter-by-workspaces-from-annotation-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-go-to-annotation-mode-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-go-to-annotation-mode-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-go-to-annotation-mode-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-go-to-annotation-mode-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-label-with-just-one-character-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-label-with-just-one-character-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-label-with-just-one-character-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-label-with-just-one-character-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/chromium/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-can-drag-and-drop-ranking-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-can-drag-and-drop-ranking-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-can-drag-and-drop-ranking-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-can-drag-and-drop-ranking-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-can-drag-and-drop-ranking-question-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-can-drag-and-drop-ranking-question-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-can-drag-and-drop-ranking-question-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-can-drag-and-drop-ranking-question-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-and-discard-the-record-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-and-discard-the-record-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-and-discard-the-record-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-clear-all-questions-and-discard-the-record-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-filter-by-workspaces-from-annotation-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-filter-by-workspaces-from-annotation-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-filter-by-workspaces-from-annotation-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-filter-by-workspaces-from-annotation-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-go-to-annotation-mode-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-go-to-annotation-mode-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-go-to-annotation-mode-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-go-to-annotation-mode-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-label-with-just-one-character-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-label-with-just-one-character-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-label-with-just-one-character-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-label-with-just-one-character-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/firefox/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-can-drag-and-drop-ranking-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-can-drag-and-drop-ranking-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-can-drag-and-drop-ranking-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-can-drag-and-drop-ranking-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-can-drag-and-drop-ranking-question-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-can-drag-and-drop-ranking-question-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-can-drag-and-drop-ranking-question-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-can-drag-and-drop-ranking-question-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-and-discard-the-record-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-and-discard-the-record-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-and-discard-the-record-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-clear-all-questions-and-discard-the-record-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-disable-submit-when-user-complete-partially-ranking-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-disable-submit-when-user-no-complete-required-answer-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-filter-by-workspaces-from-annotation-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-filter-by-workspaces-from-annotation-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-filter-by-workspaces-from-annotation-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-filter-by-workspaces-from-annotation-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-first-question-when-click-on-form-where-there-is-no-in-question-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-question-clicked-when-u-4de20-outside-of-form-and-click-in-a-question-again-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-focus-on-question-clicked-when-u-a46f5-outside-of-form-and-click-in-a-question-again-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-go-to-annotation-mode-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-go-to-annotation-mode-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-go-to-annotation-mode-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-go-to-annotation-mode-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-hide-spark-icon-when-user-change-suggested-answer-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-label-with-just-one-character-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-label-with-just-one-character-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-label-with-just-one-character-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-label-with-just-one-character-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotate-page-show-spark-icon-when-user-change-suggested-answer-and-go-back-to-default-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-0a6c3-r-can-filter-the-metadata-terms-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-14f6a--can-filter-automatically-by-range-with-mouse-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-3ff5a-ver-can-be-less-than-prefilled-by-the-backend-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-5d4b7-ver-can-be-less-than-prefilled-by-the-backend-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-63f0c-r-can-filter-the-metadata-terms-with-keyboard-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-6f710-r-can-filter-the-metadata-terms-with-keyboard-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-77d00-y-when-the-user-just-click-over-term-metadata-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-836b6-y-when-the-user-just-click-over-term-metadata-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-868fc-ver-can-be-less-than-prefilled-by-the-backend-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-934cd-y-when-the-user-just-click-over-term-metadata-5.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-9fe33-y-when-the-user-just-click-over-term-metadata-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-ad134--can-filter-automatically-by-range-with-mouse-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-b9b55-y-when-the-user-just-click-over-term-metadata-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-ba5cb--can-filter-automatically-by-range-with-mouse-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-c3faa-r-can-filter-the-metadata-terms-with-keyboard-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilte-d8360-ver-can-be-less-than-prefilled-by-the-backend-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataFilters-See-the-metadata-filters-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-See-the-metadata-sorting-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-Metadata-filters-MetadataSorting-The-user-can-sort-by-metadata-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-08eb6-bmit-When-focus-is-on-a-singleLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-0f44c-scard-When-focus-is-on-a-multiLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-13071-ponent-but-is-editing-the-user-can-not-submit-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1431a-lear-When-focus-is-on-a-singleLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1b809-ubmit-When-focus-is-on-a-multiLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-1ee20-Clear-When-focus-is-on-a-multiLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-2cbc0--component-and-the-user-applied-the-read-mode-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-320c7--component-and-the-user-applied-the-read-mode-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-3c034--component-and-the-user-applied-the-read-mode-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-43418-onent-but-is-editing-the-user-can-not-discard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-4aa77-onent-but-is-editing-the-user-can-not-discard-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-5b8ad-scard-When-focus-is-on-a-multiLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-6b242-card-When-focus-is-on-a-singleLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-7a797-mponent-but-is-editing-the-user-can-not-clear-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-8f4d5-s-Discard-When-focus-is-on-a-rating-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-b6656-Clear-When-focus-is-on-a-multiLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-c104a-bmit-When-focus-is-on-a-singleLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-d9ef3-s-Discard-When-focus-is-on-a-rating-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-de127-ponent-but-is-editing-the-user-can-not-submit-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-dec0d-lear-When-focus-is-on-a-singleLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-dfd4e-mponent-but-is-editing-the-user-can-not-clear-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-e5bc0--component-and-the-user-applied-the-read-mode-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-ef6c1--component-and-the-user-applied-the-read-mode-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-ef9d8-card-When-focus-is-on-a-singleLabel-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-fc490-ubmit-When-focus-is-on-a-multiLabel-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-For-fe8eb--component-and-the-user-applied-the-read-mode-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Clear-When-focus-is-on-a-rating-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Form-actions-Submit-When-focus-is-on-a-rating-Component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-11a17-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-2bd79--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-3a463--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-569be-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-61776-go-to-next-record-by-pressing-Ctrl-ArrowRight-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-6dabc--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-72c00--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-832d5-go-to-next-record-by-pressing-Ctrl-ArrowRight-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-8761e--go-to-prev-record-by-pressing-Ctrl-ArrowLeft-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-Pag-ce446-go-to-next-record-by-pressing-Ctrl-ArrowRight-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-whe-1893b-in-form-press-Tab-to-focus-on-first-question-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Global-shortcuts-whe-19f7d-in-form-press-Tab-to-focus-on-first-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-expand-collapsable-when-the-user-try-to-find-other-label-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-multilabel-component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-next-question-with-shift-and-arrow-down-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-go-to-previous-question-with-shift-and-arrow-up-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Multi-component-the-user-move-as-a-loop-inside-multilabel-component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-go-5a5e5-he-user-is-in-ranking-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-go-to-ranking-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-a2cd2-component-with-some-ranked-and-other-unranked-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-a92bc-component-with-some-ranked-and-other-unranked-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-b96e6-component-with-some-ranked-and-other-unranked-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-mo-cf5f0-component-with-some-ranked-and-other-unranked-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-move-as-a-loop-in-ranking-component-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-order-ranking-question-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-reorder-ranking-question-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-reset-order-ranking-question-options-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-clear-form-answers-after-unrank-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-go-to-ranking-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-1-by-pressing-1-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-10-by-pressing-10-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-11-by-pressing-11-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-move-to-slot-12-by-pressing-12-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Ranking-component-with-12-slots-unrank-a-question-by-pressing-Backspace-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-8cd01-hift-Tab-and-press-Space-to-select-this-value-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-db53e-with-Tab-and-press-Space-to-select-this-value-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-e2af0-with-Tab-and-press-Space-to-select-this-value-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-cho-e6da1-hift-Tab-and-press-Space-to-select-this-value-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-go-to-rating-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-press-Space-to-unselect-the-value-previously-selected-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-whe-2054c-th-keyboard-automatically-go-to-next-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-whe-e74ab--the-option-go-automatically-to-next-question-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-wit-18232-question-if-the-user-press-twice-the-same-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-wit-43a7b-ser-can-not-rating-if-press-any-non-digit-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-go-to-rating-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-a-question-too-fast-key-press-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-1-by-pressing-1-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-10-by-pressing-10-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-value-5-by-pressing-5-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-rating-with-non-existing-number-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-invalid-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Rating-component-with-10-options-user-can-not-rating-with-value-zero-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Shortcuts-panel-open-shortcut-panel-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-aft-e053b-ther-option-and-select-one-pressing-Space-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-aft-e3f58-next-question-when-user-click-in-other-option-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-expand-collapsable-label-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-go-to-next-question-with-shift-and-arrow-down-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-go-to-previous-question-with-shift-and-arrow-up-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-the-user-move-as-a-loop-with-tab-key-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-03825-ically-to-search-bar-and-can-update-this-text-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-20661-arch-query-and-discard-with-shift-backspace-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-24c26-er-search-query-and-submit-with-shift-enter-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-51087-er-search-query-and-submit-with-shift-enter-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-77510-er-search-query-and-submit-with-shift-enter-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-8d621-arch-query-and-discard-with-shift-backspace-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-923f8-ically-to-search-bar-and-can-update-this-text-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-aabfc-arch-query-and-discard-with-shift-backspace-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-b4551-arch-query-and-discard-with-shift-backspace-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-c155e-ically-to-search-bar-and-can-update-this-text-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-c92f6-er-search-query-and-submit-with-shift-enter-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Single-component-use-ffdd9-o-automatically-to-search-bar-and-filter-data-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-go-to-previous-question-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-go-to-text-component-with-keyboard-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-in-ed-6a7cf-e-any-key-without-execute-any-global-shortcut-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-the-user-want-to-edit-again-focus-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-Text-component-the-user-want-to-loose-focus-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/Annotation-page-shortcuts-for-mac-Shortcuts-panel-open-shortcut-panel-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/discarded-record-when-the-user-modifies-a-discarded-record-after-2-seconds-should-be-pending-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-0fd78-and-user-try-to-go-to-next-record-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-19e46--user-try-to-refresh-from-sidebar-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-1ac5d--user-try-to-refresh-from-sidebar-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-45fa8-d-user-try-to-go-to-settings-page-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-51289-and-user-try-to-go-to-next-record-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-74023-d-user-try-to-go-to-settings-page-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-98083-and-user-try-to-go-to-next-record-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-b74d5-d-user-try-to-go-to-settings-page-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-df110--user-try-to-refresh-from-sidebar-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-form-have-been-modified-without-submit-and-user-try-to-go-to-home-page-NO-alert-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-user-submit-and-then-goes-back-to-previous-record-show-updated-answers-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/pending-record-when-the-user-modifies-something-after-3-seconds-we-can-see-the-saved-label-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-0cb1d-ed-a-submitted-record-and-go-to-settings-page-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-1b883-ed-a-submitted-record-and-go-to-settings-page-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-2c680-ified-a-submitted-record-and-refresh-the-page-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-3440e-ified-a-submitted-record-and-refresh-the-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-8ac5c-ified-a-submitted-record-and-refresh-the-page-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toas-95641-ed-a-submitted-record-and-go-to-settings-page-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-not-see-the-toaster-if-he-modified-a-submitted-record-and-go-to-home-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--0c764-fied-a-submitted-record-and-go-to-next-record-6.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--6d74c-fied-a-submitted-record-and-go-to-next-record-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--acf4b-fied-a-submitted-record-and-go-to-next-record-5.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--d2f53-fied-a-submitted-record-and-go-to-next-record-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--e4d21-fied-a-submitted-record-and-go-to-next-record-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-the-user-can-see-the-toaster--fec7c-fied-a-submitted-record-and-go-to-next-record-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-filter-b-ed48d-eviously-the-submitted-record-see-the-toaster-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-filter-b-fdddb-eviously-the-submitted-record-see-the-toaster-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-80401-in-a-changed-submitted-record-see-the-toaster-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-d6719-in-a-changed-submitted-record-see-the-toaster-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-the-user-try-to-search-s-ee8e3-in-a-changed-submitted-record-see-the-toaster-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-58b77-e-record-the-record-have-the-initial-answers-2.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-7cfbe-e-record-the-record-have-the-initial-answers-3.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-85c20-e-record-the-record-have-the-initial-answers-1.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-91e50-e-record-the-record-have-the-initial-answers-4.png diff --git a/argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png b/extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png rename to extralit-frontend/e2e/annotation-mode-page/__screenshots__/webkit/submitted-record-when-user-ignore-current-modi-9d326-e-record-the-record-have-the-initial-answers-5.png diff --git a/argilla-frontend/e2e/annotation-mode-page/annotation-mode.page.spec.ts b/extralit-frontend/e2e/annotation-mode-page/annotation-mode.page.spec.ts similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/annotation-mode.page.spec.ts rename to extralit-frontend/e2e/annotation-mode-page/annotation-mode.page.spec.ts diff --git a/argilla-frontend/e2e/annotation-mode-page/autosave-annotation-mode.page.spec.ts b/extralit-frontend/e2e/annotation-mode-page/autosave-annotation-mode.page.spec.ts similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/autosave-annotation-mode.page.spec.ts rename to extralit-frontend/e2e/annotation-mode-page/autosave-annotation-mode.page.spec.ts diff --git a/argilla-frontend/e2e/annotation-mode-page/goToAnnotationPage.ts b/extralit-frontend/e2e/annotation-mode-page/goToAnnotationPage.ts similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/goToAnnotationPage.ts rename to extralit-frontend/e2e/annotation-mode-page/goToAnnotationPage.ts diff --git a/argilla-frontend/e2e/annotation-mode-page/mac-annotation-mode.page.spec.ts b/extralit-frontend/e2e/annotation-mode-page/mac-annotation-mode.page.spec.ts similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/mac-annotation-mode.page.spec.ts rename to extralit-frontend/e2e/annotation-mode-page/mac-annotation-mode.page.spec.ts diff --git a/argilla-frontend/e2e/annotation-mode-page/metadata-filters-and-sorting-annotation-mode.page.spec.ts b/extralit-frontend/e2e/annotation-mode-page/metadata-filters-and-sorting-annotation-mode.page.spec.ts similarity index 100% rename from argilla-frontend/e2e/annotation-mode-page/metadata-filters-and-sorting-annotation-mode.page.spec.ts rename to extralit-frontend/e2e/annotation-mode-page/metadata-filters-and-sorting-annotation-mode.page.spec.ts diff --git a/argilla-frontend/e2e/common/dataset-api-mock.ts b/extralit-frontend/e2e/common/dataset-api-mock.ts similarity index 100% rename from argilla-frontend/e2e/common/dataset-api-mock.ts rename to extralit-frontend/e2e/common/dataset-api-mock.ts diff --git a/argilla-frontend/e2e/common/field-api-mock.ts b/extralit-frontend/e2e/common/field-api-mock.ts similarity index 100% rename from argilla-frontend/e2e/common/field-api-mock.ts rename to extralit-frontend/e2e/common/field-api-mock.ts diff --git a/argilla-frontend/e2e/common/import-api-mock.ts b/extralit-frontend/e2e/common/import-api-mock.ts similarity index 100% rename from argilla-frontend/e2e/common/import-api-mock.ts rename to extralit-frontend/e2e/common/import-api-mock.ts diff --git a/argilla-frontend/e2e/common/index.ts b/extralit-frontend/e2e/common/index.ts similarity index 100% rename from argilla-frontend/e2e/common/index.ts rename to extralit-frontend/e2e/common/index.ts diff --git a/argilla-frontend/e2e/common/login-and-wait-for.ts b/extralit-frontend/e2e/common/login-and-wait-for.ts similarity index 100% rename from argilla-frontend/e2e/common/login-and-wait-for.ts rename to extralit-frontend/e2e/common/login-and-wait-for.ts diff --git a/argilla-frontend/e2e/common/metadata-api-mock.ts b/extralit-frontend/e2e/common/metadata-api-mock.ts similarity index 100% rename from argilla-frontend/e2e/common/metadata-api-mock.ts rename to extralit-frontend/e2e/common/metadata-api-mock.ts diff --git a/argilla-frontend/e2e/common/question-api-mock.ts b/extralit-frontend/e2e/common/question-api-mock.ts similarity index 100% rename from argilla-frontend/e2e/common/question-api-mock.ts rename to extralit-frontend/e2e/common/question-api-mock.ts diff --git a/argilla-frontend/e2e/common/record-api-mock.ts b/extralit-frontend/e2e/common/record-api-mock.ts similarity index 100% rename from argilla-frontend/e2e/common/record-api-mock.ts rename to extralit-frontend/e2e/common/record-api-mock.ts diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-fields-tab-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-fields-tab-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-fields-tab-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-fields-tab-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-information-tab-update-guidelines-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/chromium/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-fields-tab-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-fields-tab-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-fields-tab-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-fields-tab-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-information-tab-update-guidelines-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/firefox/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-annotator-role-just-see-the-information-tab-with-basic-info-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-but-cancel-deletion-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-correctly-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-danger-zone-tab-delete-dataset-with-error-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-fields-tab-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-fields-tab-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-fields-tab-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-fields-tab-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Preview-tab-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-cancel-updated-guidelines-from-Write-tab-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-3.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-3.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-3.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-information-tab-update-guidelines-3.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-labe-175cf-the-description-is-bigger-than-500-characters-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-labe-7a772--when-the-title-is-bigger-than-200-characters-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-description-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-title-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-change-question-visible-options-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Single-label-show-required-error-when-the-title-is-empty-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-description-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-title-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-1.png diff --git a/argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png b/extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png rename to extralit-frontend/e2e/dataset-setting-page/__screenshots__/webkit/Dataset-setting-page-questions-tab-Text-component-change-question-use-markdown-2.png diff --git a/argilla-frontend/e2e/dataset-setting-page/dataset-setting-page.spec.ts b/extralit-frontend/e2e/dataset-setting-page/dataset-setting-page.spec.ts similarity index 100% rename from argilla-frontend/e2e/dataset-setting-page/dataset-setting-page.spec.ts rename to extralit-frontend/e2e/dataset-setting-page/dataset-setting-page.spec.ts diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-1.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-2.png b/extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-2.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-2.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-2.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-3.png b/extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-3.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-3.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-filter-by-workspaces-3.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-show-datasets-table-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-show-datasets-table-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-show-datasets-table-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-datasets-show-datasets-table-1.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/chromium/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-1.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-2.png b/extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-2.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-2.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-2.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-3.png b/extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-3.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-3.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-filter-by-workspaces-3.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-show-datasets-table-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-show-datasets-table-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-show-datasets-table-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-datasets-show-datasets-table-1.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/firefox/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-1.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-2.png b/extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-2.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-2.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-2.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-3.png b/extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-3.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-3.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-filter-by-workspaces-3.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-show-datasets-table-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-show-datasets-table-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-show-datasets-table-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-datasets-show-datasets-table-1.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-no-datasets-show-documentation-starter-first-tab-1.png diff --git a/argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png b/extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png similarity index 100% rename from argilla-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png rename to extralit-frontend/e2e/datasets-page/__screenshots__/webkit/Datasets-page-with-no-datasets-show-documentation-starter-second-tab-1.png diff --git a/argilla-frontend/e2e/datasets-page/datasets-page.spec.ts b/extralit-frontend/e2e/datasets-page/datasets-page.spec.ts similarity index 100% rename from argilla-frontend/e2e/datasets-page/datasets-page.spec.ts rename to extralit-frontend/e2e/datasets-page/datasets-page.spec.ts diff --git a/argilla-frontend/e2e/import-configuration-workflow/import-configuration-workflow.spec.ts b/extralit-frontend/e2e/import-configuration-workflow/import-configuration-workflow.spec.ts similarity index 100% rename from argilla-frontend/e2e/import-configuration-workflow/import-configuration-workflow.spec.ts rename to extralit-frontend/e2e/import-configuration-workflow/import-configuration-workflow.spec.ts diff --git a/argilla-frontend/e2e/login-page/__screenshots__/chromium/Login-page-has-title-1.png b/extralit-frontend/e2e/login-page/__screenshots__/chromium/Login-page-has-title-1.png similarity index 100% rename from argilla-frontend/e2e/login-page/__screenshots__/chromium/Login-page-has-title-1.png rename to extralit-frontend/e2e/login-page/__screenshots__/chromium/Login-page-has-title-1.png diff --git a/argilla-frontend/e2e/login-page/__screenshots__/firefox/Login-page-has-title-1.png b/extralit-frontend/e2e/login-page/__screenshots__/firefox/Login-page-has-title-1.png similarity index 100% rename from argilla-frontend/e2e/login-page/__screenshots__/firefox/Login-page-has-title-1.png rename to extralit-frontend/e2e/login-page/__screenshots__/firefox/Login-page-has-title-1.png diff --git a/argilla-frontend/e2e/login-page/__screenshots__/webkit/Login-page-has-title-1.png b/extralit-frontend/e2e/login-page/__screenshots__/webkit/Login-page-has-title-1.png similarity index 100% rename from argilla-frontend/e2e/login-page/__screenshots__/webkit/Login-page-has-title-1.png rename to extralit-frontend/e2e/login-page/__screenshots__/webkit/Login-page-has-title-1.png diff --git a/argilla-frontend/e2e/login-page/login-page.spec.ts b/extralit-frontend/e2e/login-page/login-page.spec.ts similarity index 100% rename from argilla-frontend/e2e/login-page/login-page.spec.ts rename to extralit-frontend/e2e/login-page/login-page.spec.ts diff --git a/argilla-frontend/e2e/user-setting-page/__screenshots__/chromium/User-setting-page-see-user-setting-page-correctly-1.png b/extralit-frontend/e2e/user-setting-page/__screenshots__/chromium/User-setting-page-see-user-setting-page-correctly-1.png similarity index 100% rename from argilla-frontend/e2e/user-setting-page/__screenshots__/chromium/User-setting-page-see-user-setting-page-correctly-1.png rename to extralit-frontend/e2e/user-setting-page/__screenshots__/chromium/User-setting-page-see-user-setting-page-correctly-1.png diff --git a/argilla-frontend/e2e/user-setting-page/__screenshots__/firefox/User-setting-page-see-user-setting-page-correctly-1.png b/extralit-frontend/e2e/user-setting-page/__screenshots__/firefox/User-setting-page-see-user-setting-page-correctly-1.png similarity index 100% rename from argilla-frontend/e2e/user-setting-page/__screenshots__/firefox/User-setting-page-see-user-setting-page-correctly-1.png rename to extralit-frontend/e2e/user-setting-page/__screenshots__/firefox/User-setting-page-see-user-setting-page-correctly-1.png diff --git a/argilla-frontend/e2e/user-setting-page/__screenshots__/webkit/User-setting-page-see-user-setting-page-correctly-1.png b/extralit-frontend/e2e/user-setting-page/__screenshots__/webkit/User-setting-page-see-user-setting-page-correctly-1.png similarity index 100% rename from argilla-frontend/e2e/user-setting-page/__screenshots__/webkit/User-setting-page-see-user-setting-page-correctly-1.png rename to extralit-frontend/e2e/user-setting-page/__screenshots__/webkit/User-setting-page-see-user-setting-page-correctly-1.png diff --git a/argilla-frontend/e2e/user-setting-page/user-setting-page.spec.ts b/extralit-frontend/e2e/user-setting-page/user-setting-page.spec.ts similarity index 100% rename from argilla-frontend/e2e/user-setting-page/user-setting-page.spec.ts rename to extralit-frontend/e2e/user-setting-page/user-setting-page.spec.ts diff --git a/argilla-frontend/extension/icon.png b/extralit-frontend/extension/icon.png similarity index 100% rename from argilla-frontend/extension/icon.png rename to extralit-frontend/extension/icon.png diff --git a/argilla-frontend/extension/manifest.json b/extralit-frontend/extension/manifest.json similarity index 100% rename from argilla-frontend/extension/manifest.json rename to extralit-frontend/extension/manifest.json diff --git a/argilla-frontend/extension/popup.html b/extralit-frontend/extension/popup.html similarity index 100% rename from argilla-frontend/extension/popup.html rename to extralit-frontend/extension/popup.html diff --git a/argilla-frontend/extension/popup.js b/extralit-frontend/extension/popup.js similarity index 100% rename from argilla-frontend/extension/popup.js rename to extralit-frontend/extension/popup.js diff --git a/argilla-frontend/jest.config.js b/extralit-frontend/jest.config.js similarity index 100% rename from argilla-frontend/jest.config.js rename to extralit-frontend/jest.config.js diff --git a/argilla-frontend/jest.setup.ts b/extralit-frontend/jest.setup.ts similarity index 100% rename from argilla-frontend/jest.setup.ts rename to extralit-frontend/jest.setup.ts diff --git a/argilla-frontend/layouts/AnnotationPage.vue b/extralit-frontend/layouts/AnnotationPage.vue similarity index 100% rename from argilla-frontend/layouts/AnnotationPage.vue rename to extralit-frontend/layouts/AnnotationPage.vue diff --git a/argilla-frontend/layouts/AuthenticationLayout.vue b/extralit-frontend/layouts/AuthenticationLayout.vue similarity index 100% rename from argilla-frontend/layouts/AuthenticationLayout.vue rename to extralit-frontend/layouts/AuthenticationLayout.vue diff --git a/argilla-frontend/layouts/Home.vue b/extralit-frontend/layouts/Home.vue similarity index 100% rename from argilla-frontend/layouts/Home.vue rename to extralit-frontend/layouts/Home.vue diff --git a/argilla-frontend/layouts/InternalPage.vue b/extralit-frontend/layouts/InternalPage.vue similarity index 100% rename from argilla-frontend/layouts/InternalPage.vue rename to extralit-frontend/layouts/InternalPage.vue diff --git a/argilla-frontend/layouts/app.vue b/extralit-frontend/layouts/app.vue similarity index 100% rename from argilla-frontend/layouts/app.vue rename to extralit-frontend/layouts/app.vue diff --git a/argilla-frontend/layouts/error.vue b/extralit-frontend/layouts/error.vue similarity index 100% rename from argilla-frontend/layouts/error.vue rename to extralit-frontend/layouts/error.vue diff --git a/argilla-frontend/middleware/README.md b/extralit-frontend/middleware/README.md similarity index 100% rename from argilla-frontend/middleware/README.md rename to extralit-frontend/middleware/README.md diff --git a/argilla-frontend/middleware/me.ts b/extralit-frontend/middleware/me.ts similarity index 100% rename from argilla-frontend/middleware/me.ts rename to extralit-frontend/middleware/me.ts diff --git a/argilla-frontend/middleware/route-guard.ts b/extralit-frontend/middleware/route-guard.ts similarity index 100% rename from argilla-frontend/middleware/route-guard.ts rename to extralit-frontend/middleware/route-guard.ts diff --git a/argilla-frontend/nuxt.config.ts b/extralit-frontend/nuxt.config.ts similarity index 100% rename from argilla-frontend/nuxt.config.ts rename to extralit-frontend/nuxt.config.ts diff --git a/argilla-frontend/package-lock.json b/extralit-frontend/package-lock.json similarity index 100% rename from argilla-frontend/package-lock.json rename to extralit-frontend/package-lock.json diff --git a/argilla-frontend/package.json b/extralit-frontend/package.json similarity index 100% rename from argilla-frontend/package.json rename to extralit-frontend/package.json diff --git a/argilla-frontend/pages/README.md b/extralit-frontend/pages/README.md similarity index 100% rename from argilla-frontend/pages/README.md rename to extralit-frontend/pages/README.md diff --git a/argilla-frontend/pages/dataset/_id/annotation-mode/index.component.spec.js b/extralit-frontend/pages/dataset/_id/annotation-mode/index.component.spec.js similarity index 100% rename from argilla-frontend/pages/dataset/_id/annotation-mode/index.component.spec.js rename to extralit-frontend/pages/dataset/_id/annotation-mode/index.component.spec.js diff --git a/argilla-frontend/pages/dataset/_id/annotation-mode/index.vue b/extralit-frontend/pages/dataset/_id/annotation-mode/index.vue similarity index 100% rename from argilla-frontend/pages/dataset/_id/annotation-mode/index.vue rename to extralit-frontend/pages/dataset/_id/annotation-mode/index.vue diff --git a/argilla-frontend/pages/dataset/_id/annotation-mode/useAnnotationModeViewModel.ts b/extralit-frontend/pages/dataset/_id/annotation-mode/useAnnotationModeViewModel.ts similarity index 100% rename from argilla-frontend/pages/dataset/_id/annotation-mode/useAnnotationModeViewModel.ts rename to extralit-frontend/pages/dataset/_id/annotation-mode/useAnnotationModeViewModel.ts diff --git a/argilla-frontend/pages/dataset/_id/settings.vue b/extralit-frontend/pages/dataset/_id/settings.vue similarity index 100% rename from argilla-frontend/pages/dataset/_id/settings.vue rename to extralit-frontend/pages/dataset/_id/settings.vue diff --git a/argilla-frontend/pages/dataset/_id/useDatasetSettingViewModel.ts b/extralit-frontend/pages/dataset/_id/useDatasetSettingViewModel.ts similarity index 100% rename from argilla-frontend/pages/dataset/_id/useDatasetSettingViewModel.ts rename to extralit-frontend/pages/dataset/_id/useDatasetSettingViewModel.ts diff --git a/argilla-frontend/pages/dataset/_id/useDatasetViewModel.ts b/extralit-frontend/pages/dataset/_id/useDatasetViewModel.ts similarity index 100% rename from argilla-frontend/pages/dataset/_id/useDatasetViewModel.ts rename to extralit-frontend/pages/dataset/_id/useDatasetViewModel.ts diff --git a/argilla-frontend/pages/index.vue b/extralit-frontend/pages/index.vue similarity index 100% rename from argilla-frontend/pages/index.vue rename to extralit-frontend/pages/index.vue diff --git a/argilla-frontend/pages/new/_id.vue b/extralit-frontend/pages/new/_id.vue similarity index 100% rename from argilla-frontend/pages/new/_id.vue rename to extralit-frontend/pages/new/_id.vue diff --git a/argilla-frontend/pages/new/hf/_repoId.vue b/extralit-frontend/pages/new/hf/_repoId.vue similarity index 100% rename from argilla-frontend/pages/new/hf/_repoId.vue rename to extralit-frontend/pages/new/hf/_repoId.vue diff --git a/argilla-frontend/pages/new/import/_id.vue b/extralit-frontend/pages/new/import/_id.vue similarity index 100% rename from argilla-frontend/pages/new/import/_id.vue rename to extralit-frontend/pages/new/import/_id.vue diff --git a/argilla-frontend/pages/new/import/useImportConfigurationViewModel.spec.js b/extralit-frontend/pages/new/import/useImportConfigurationViewModel.spec.js similarity index 100% rename from argilla-frontend/pages/new/import/useImportConfigurationViewModel.spec.js rename to extralit-frontend/pages/new/import/useImportConfigurationViewModel.spec.js diff --git a/argilla-frontend/pages/new/import/useImportConfigurationViewModel.ts b/extralit-frontend/pages/new/import/useImportConfigurationViewModel.ts similarity index 100% rename from argilla-frontend/pages/new/import/useImportConfigurationViewModel.ts rename to extralit-frontend/pages/new/import/useImportConfigurationViewModel.ts diff --git a/argilla-frontend/pages/oauth/_provider/callback.vue b/extralit-frontend/pages/oauth/_provider/callback.vue similarity index 100% rename from argilla-frontend/pages/oauth/_provider/callback.vue rename to extralit-frontend/pages/oauth/_provider/callback.vue diff --git a/argilla-frontend/pages/oauth/_provider/useOAuthViewModel.ts b/extralit-frontend/pages/oauth/_provider/useOAuthViewModel.ts similarity index 100% rename from argilla-frontend/pages/oauth/_provider/useOAuthViewModel.ts rename to extralit-frontend/pages/oauth/_provider/useOAuthViewModel.ts diff --git a/argilla-frontend/pages/sign-in.test.js b/extralit-frontend/pages/sign-in.test.js similarity index 100% rename from argilla-frontend/pages/sign-in.test.js rename to extralit-frontend/pages/sign-in.test.js diff --git a/argilla-frontend/pages/sign-in.vue b/extralit-frontend/pages/sign-in.vue similarity index 100% rename from argilla-frontend/pages/sign-in.vue rename to extralit-frontend/pages/sign-in.vue diff --git a/argilla-frontend/pages/useHomeViewModel.ts b/extralit-frontend/pages/useHomeViewModel.ts similarity index 100% rename from argilla-frontend/pages/useHomeViewModel.ts rename to extralit-frontend/pages/useHomeViewModel.ts diff --git a/argilla-frontend/pages/useNewDatasetViewModel.ts b/extralit-frontend/pages/useNewDatasetViewModel.ts similarity index 100% rename from argilla-frontend/pages/useNewDatasetViewModel.ts rename to extralit-frontend/pages/useNewDatasetViewModel.ts diff --git a/argilla-frontend/pages/useSignInViewModel.ts b/extralit-frontend/pages/useSignInViewModel.ts similarity index 100% rename from argilla-frontend/pages/useSignInViewModel.ts rename to extralit-frontend/pages/useSignInViewModel.ts diff --git a/argilla-frontend/pages/useWelcomeHFViewModel.ts b/extralit-frontend/pages/useWelcomeHFViewModel.ts similarity index 100% rename from argilla-frontend/pages/useWelcomeHFViewModel.ts rename to extralit-frontend/pages/useWelcomeHFViewModel.ts diff --git a/argilla-frontend/pages/user-settings.vue b/extralit-frontend/pages/user-settings.vue similarity index 100% rename from argilla-frontend/pages/user-settings.vue rename to extralit-frontend/pages/user-settings.vue diff --git a/argilla-frontend/pages/welcome-hf-sign-in.vue b/extralit-frontend/pages/welcome-hf-sign-in.vue similarity index 100% rename from argilla-frontend/pages/welcome-hf-sign-in.vue rename to extralit-frontend/pages/welcome-hf-sign-in.vue diff --git a/argilla-frontend/playwright.config.ts b/extralit-frontend/playwright.config.ts similarity index 100% rename from argilla-frontend/playwright.config.ts rename to extralit-frontend/playwright.config.ts diff --git a/argilla-frontend/plugins/axios/axios-cache.ts b/extralit-frontend/plugins/axios/axios-cache.ts similarity index 100% rename from argilla-frontend/plugins/axios/axios-cache.ts rename to extralit-frontend/plugins/axios/axios-cache.ts diff --git a/argilla-frontend/plugins/axios/axios-global-handler.ts b/extralit-frontend/plugins/axios/axios-global-handler.ts similarity index 100% rename from argilla-frontend/plugins/axios/axios-global-handler.ts rename to extralit-frontend/plugins/axios/axios-global-handler.ts diff --git a/argilla-frontend/plugins/di/di.ts b/extralit-frontend/plugins/di/di.ts similarity index 100% rename from argilla-frontend/plugins/di/di.ts rename to extralit-frontend/plugins/di/di.ts diff --git a/argilla-frontend/plugins/directives/badge.directive.ts b/extralit-frontend/plugins/directives/badge.directive.ts similarity index 100% rename from argilla-frontend/plugins/directives/badge.directive.ts rename to extralit-frontend/plugins/directives/badge.directive.ts diff --git a/argilla-frontend/plugins/directives/circle.directive.ts b/extralit-frontend/plugins/directives/circle.directive.ts similarity index 100% rename from argilla-frontend/plugins/directives/circle.directive.ts rename to extralit-frontend/plugins/directives/circle.directive.ts diff --git a/argilla-frontend/plugins/directives/click-outside.directive.ts b/extralit-frontend/plugins/directives/click-outside.directive.ts similarity index 100% rename from argilla-frontend/plugins/directives/click-outside.directive.ts rename to extralit-frontend/plugins/directives/click-outside.directive.ts diff --git a/argilla-frontend/plugins/directives/copy-code.directive.js b/extralit-frontend/plugins/directives/copy-code.directive.js similarity index 100% rename from argilla-frontend/plugins/directives/copy-code.directive.js rename to extralit-frontend/plugins/directives/copy-code.directive.js diff --git a/argilla-frontend/plugins/directives/required-field.directive.ts b/extralit-frontend/plugins/directives/required-field.directive.ts similarity index 100% rename from argilla-frontend/plugins/directives/required-field.directive.ts rename to extralit-frontend/plugins/directives/required-field.directive.ts diff --git a/argilla-frontend/plugins/directives/svg-icon.element.ts b/extralit-frontend/plugins/directives/svg-icon.element.ts similarity index 100% rename from argilla-frontend/plugins/directives/svg-icon.element.ts rename to extralit-frontend/plugins/directives/svg-icon.element.ts diff --git a/argilla-frontend/plugins/directives/tooltip.directive.ts b/extralit-frontend/plugins/directives/tooltip.directive.ts similarity index 100% rename from argilla-frontend/plugins/directives/tooltip.directive.ts rename to extralit-frontend/plugins/directives/tooltip.directive.ts diff --git a/argilla-frontend/plugins/extensions/color-generator.ts b/extralit-frontend/plugins/extensions/color-generator.ts similarity index 100% rename from argilla-frontend/plugins/extensions/color-generator.ts rename to extralit-frontend/plugins/extensions/color-generator.ts diff --git a/argilla-frontend/plugins/extensions/color-schema.ts b/extralit-frontend/plugins/extensions/color-schema.ts similarity index 100% rename from argilla-frontend/plugins/extensions/color-schema.ts rename to extralit-frontend/plugins/extensions/color-schema.ts diff --git a/argilla-frontend/plugins/extensions/copy-to-clipboard.ts b/extralit-frontend/plugins/extensions/copy-to-clipboard.ts similarity index 100% rename from argilla-frontend/plugins/extensions/copy-to-clipboard.ts rename to extralit-frontend/plugins/extensions/copy-to-clipboard.ts diff --git a/argilla-frontend/plugins/extensions/format-number.ts b/extralit-frontend/plugins/extensions/format-number.ts similarity index 100% rename from argilla-frontend/plugins/extensions/format-number.ts rename to extralit-frontend/plugins/extensions/format-number.ts diff --git a/argilla-frontend/plugins/extensions/notification.ts b/extralit-frontend/plugins/extensions/notification.ts similarity index 100% rename from argilla-frontend/plugins/extensions/notification.ts rename to extralit-frontend/plugins/extensions/notification.ts diff --git a/argilla-frontend/plugins/extensions/platform.ts b/extralit-frontend/plugins/extensions/platform.ts similarity index 100% rename from argilla-frontend/plugins/extensions/platform.ts rename to extralit-frontend/plugins/extensions/platform.ts diff --git a/argilla-frontend/plugins/extensions/vue-draggable.ts b/extralit-frontend/plugins/extensions/vue-draggable.ts similarity index 100% rename from argilla-frontend/plugins/extensions/vue-draggable.ts rename to extralit-frontend/plugins/extensions/vue-draggable.ts diff --git a/argilla-frontend/plugins/index.ts b/extralit-frontend/plugins/index.ts similarity index 100% rename from argilla-frontend/plugins/index.ts rename to extralit-frontend/plugins/index.ts diff --git a/argilla-frontend/plugins/language/language-detector.ts b/extralit-frontend/plugins/language/language-detector.ts similarity index 100% rename from argilla-frontend/plugins/language/language-detector.ts rename to extralit-frontend/plugins/language/language-detector.ts diff --git a/argilla-frontend/plugins/language/language-direction.ts b/extralit-frontend/plugins/language/language-direction.ts similarity index 100% rename from argilla-frontend/plugins/language/language-direction.ts rename to extralit-frontend/plugins/language/language-direction.ts diff --git a/argilla-frontend/plugins/logo/logo.ts b/extralit-frontend/plugins/logo/logo.ts similarity index 100% rename from argilla-frontend/plugins/logo/logo.ts rename to extralit-frontend/plugins/logo/logo.ts diff --git a/argilla-frontend/static/README.md b/extralit-frontend/static/README.md similarity index 100% rename from argilla-frontend/static/README.md rename to extralit-frontend/static/README.md diff --git a/argilla-frontend/static/apple-touch-icon.png b/extralit-frontend/static/apple-touch-icon.png similarity index 100% rename from argilla-frontend/static/apple-touch-icon.png rename to extralit-frontend/static/apple-touch-icon.png diff --git a/argilla-frontend/static/favicon-16x16.png b/extralit-frontend/static/favicon-16x16.png similarity index 100% rename from argilla-frontend/static/favicon-16x16.png rename to extralit-frontend/static/favicon-16x16.png diff --git a/argilla-frontend/static/favicon-32x32.png b/extralit-frontend/static/favicon-32x32.png similarity index 100% rename from argilla-frontend/static/favicon-32x32.png rename to extralit-frontend/static/favicon-32x32.png diff --git a/argilla-frontend/static/favicon.ico b/extralit-frontend/static/favicon.ico similarity index 100% rename from argilla-frontend/static/favicon.ico rename to extralit-frontend/static/favicon.ico diff --git a/argilla-frontend/static/fonts/raptorv2premium-bold-webfont.woff b/extralit-frontend/static/fonts/raptorv2premium-bold-webfont.woff similarity index 100% rename from argilla-frontend/static/fonts/raptorv2premium-bold-webfont.woff rename to extralit-frontend/static/fonts/raptorv2premium-bold-webfont.woff diff --git a/argilla-frontend/static/fonts/raptorv2premium-bold-webfont.woff2 b/extralit-frontend/static/fonts/raptorv2premium-bold-webfont.woff2 similarity index 100% rename from argilla-frontend/static/fonts/raptorv2premium-bold-webfont.woff2 rename to extralit-frontend/static/fonts/raptorv2premium-bold-webfont.woff2 diff --git a/argilla-frontend/static/icons/arrow-down.svg b/extralit-frontend/static/icons/arrow-down.svg similarity index 100% rename from argilla-frontend/static/icons/arrow-down.svg rename to extralit-frontend/static/icons/arrow-down.svg diff --git a/argilla-frontend/static/icons/arrow-up.svg b/extralit-frontend/static/icons/arrow-up.svg similarity index 100% rename from argilla-frontend/static/icons/arrow-up.svg rename to extralit-frontend/static/icons/arrow-up.svg diff --git a/argilla-frontend/static/icons/assign.svg b/extralit-frontend/static/icons/assign.svg similarity index 100% rename from argilla-frontend/static/icons/assign.svg rename to extralit-frontend/static/icons/assign.svg diff --git a/argilla-frontend/static/icons/bulk-mode.svg b/extralit-frontend/static/icons/bulk-mode.svg similarity index 100% rename from argilla-frontend/static/icons/bulk-mode.svg rename to extralit-frontend/static/icons/bulk-mode.svg diff --git a/argilla-frontend/static/icons/change-height.svg b/extralit-frontend/static/icons/change-height.svg similarity index 100% rename from argilla-frontend/static/icons/change-height.svg rename to extralit-frontend/static/icons/change-height.svg diff --git a/argilla-frontend/static/icons/check.svg b/extralit-frontend/static/icons/check.svg similarity index 100% rename from argilla-frontend/static/icons/check.svg rename to extralit-frontend/static/icons/check.svg diff --git a/argilla-frontend/static/icons/chevron-down.svg b/extralit-frontend/static/icons/chevron-down.svg similarity index 100% rename from argilla-frontend/static/icons/chevron-down.svg rename to extralit-frontend/static/icons/chevron-down.svg diff --git a/argilla-frontend/static/icons/chevron-left.svg b/extralit-frontend/static/icons/chevron-left.svg similarity index 100% rename from argilla-frontend/static/icons/chevron-left.svg rename to extralit-frontend/static/icons/chevron-left.svg diff --git a/argilla-frontend/static/icons/chevron-right.svg b/extralit-frontend/static/icons/chevron-right.svg similarity index 100% rename from argilla-frontend/static/icons/chevron-right.svg rename to extralit-frontend/static/icons/chevron-right.svg diff --git a/argilla-frontend/static/icons/chevron-up.svg b/extralit-frontend/static/icons/chevron-up.svg similarity index 100% rename from argilla-frontend/static/icons/chevron-up.svg rename to extralit-frontend/static/icons/chevron-up.svg diff --git a/argilla-frontend/static/icons/clear.svg b/extralit-frontend/static/icons/clear.svg similarity index 100% rename from argilla-frontend/static/icons/clear.svg rename to extralit-frontend/static/icons/clear.svg diff --git a/argilla-frontend/static/icons/close.svg b/extralit-frontend/static/icons/close.svg similarity index 100% rename from argilla-frontend/static/icons/close.svg rename to extralit-frontend/static/icons/close.svg diff --git a/argilla-frontend/static/icons/code.svg b/extralit-frontend/static/icons/code.svg similarity index 100% rename from argilla-frontend/static/icons/code.svg rename to extralit-frontend/static/icons/code.svg diff --git a/argilla-frontend/static/icons/copy.svg b/extralit-frontend/static/icons/copy.svg similarity index 100% rename from argilla-frontend/static/icons/copy.svg rename to extralit-frontend/static/icons/copy.svg diff --git a/argilla-frontend/static/icons/danger.svg b/extralit-frontend/static/icons/danger.svg similarity index 100% rename from argilla-frontend/static/icons/danger.svg rename to extralit-frontend/static/icons/danger.svg diff --git a/argilla-frontend/static/icons/dark-theme.svg b/extralit-frontend/static/icons/dark-theme.svg similarity index 100% rename from argilla-frontend/static/icons/dark-theme.svg rename to extralit-frontend/static/icons/dark-theme.svg diff --git a/argilla-frontend/static/icons/discard.svg b/extralit-frontend/static/icons/discard.svg similarity index 100% rename from argilla-frontend/static/icons/discard.svg rename to extralit-frontend/static/icons/discard.svg diff --git a/argilla-frontend/static/icons/draggable.svg b/extralit-frontend/static/icons/draggable.svg similarity index 100% rename from argilla-frontend/static/icons/draggable.svg rename to extralit-frontend/static/icons/draggable.svg diff --git a/argilla-frontend/static/icons/expand-arrows.svg b/extralit-frontend/static/icons/expand-arrows.svg similarity index 100% rename from argilla-frontend/static/icons/expand-arrows.svg rename to extralit-frontend/static/icons/expand-arrows.svg diff --git a/argilla-frontend/static/icons/exploration.svg b/extralit-frontend/static/icons/exploration.svg similarity index 100% rename from argilla-frontend/static/icons/exploration.svg rename to extralit-frontend/static/icons/exploration.svg diff --git a/argilla-frontend/static/icons/export.svg b/extralit-frontend/static/icons/export.svg similarity index 100% rename from argilla-frontend/static/icons/export.svg rename to extralit-frontend/static/icons/export.svg diff --git a/argilla-frontend/static/icons/external-link.svg b/extralit-frontend/static/icons/external-link.svg similarity index 100% rename from argilla-frontend/static/icons/external-link.svg rename to extralit-frontend/static/icons/external-link.svg diff --git a/argilla-frontend/static/icons/external.svg b/extralit-frontend/static/icons/external.svg similarity index 100% rename from argilla-frontend/static/icons/external.svg rename to extralit-frontend/static/icons/external.svg diff --git a/argilla-frontend/static/icons/filter.svg b/extralit-frontend/static/icons/filter.svg similarity index 100% rename from argilla-frontend/static/icons/filter.svg rename to extralit-frontend/static/icons/filter.svg diff --git a/argilla-frontend/static/icons/focus-mode.svg b/extralit-frontend/static/icons/focus-mode.svg similarity index 100% rename from argilla-frontend/static/icons/focus-mode.svg rename to extralit-frontend/static/icons/focus-mode.svg diff --git a/argilla-frontend/static/icons/hand-labeling.svg b/extralit-frontend/static/icons/hand-labeling.svg similarity index 100% rename from argilla-frontend/static/icons/hand-labeling.svg rename to extralit-frontend/static/icons/hand-labeling.svg diff --git a/argilla-frontend/static/icons/high-contrast-theme.svg b/extralit-frontend/static/icons/high-contrast-theme.svg similarity index 100% rename from argilla-frontend/static/icons/high-contrast-theme.svg rename to extralit-frontend/static/icons/high-contrast-theme.svg diff --git a/argilla-frontend/static/icons/import.svg b/extralit-frontend/static/icons/import.svg similarity index 100% rename from argilla-frontend/static/icons/import.svg rename to extralit-frontend/static/icons/import.svg diff --git a/argilla-frontend/static/icons/info.svg b/extralit-frontend/static/icons/info.svg similarity index 100% rename from argilla-frontend/static/icons/info.svg rename to extralit-frontend/static/icons/info.svg diff --git a/argilla-frontend/static/icons/kebab.svg b/extralit-frontend/static/icons/kebab.svg similarity index 100% rename from argilla-frontend/static/icons/kebab.svg rename to extralit-frontend/static/icons/kebab.svg diff --git a/argilla-frontend/static/icons/light-theme.svg b/extralit-frontend/static/icons/light-theme.svg similarity index 100% rename from argilla-frontend/static/icons/light-theme.svg rename to extralit-frontend/static/icons/light-theme.svg diff --git a/argilla-frontend/static/icons/link.svg b/extralit-frontend/static/icons/link.svg similarity index 100% rename from argilla-frontend/static/icons/link.svg rename to extralit-frontend/static/icons/link.svg diff --git a/argilla-frontend/static/icons/log-out.svg b/extralit-frontend/static/icons/log-out.svg similarity index 100% rename from argilla-frontend/static/icons/log-out.svg rename to extralit-frontend/static/icons/log-out.svg diff --git a/argilla-frontend/static/icons/matching.svg b/extralit-frontend/static/icons/matching.svg similarity index 100% rename from argilla-frontend/static/icons/matching.svg rename to extralit-frontend/static/icons/matching.svg diff --git a/argilla-frontend/static/icons/math-plus.svg b/extralit-frontend/static/icons/math-plus.svg similarity index 100% rename from argilla-frontend/static/icons/math-plus.svg rename to extralit-frontend/static/icons/math-plus.svg diff --git a/argilla-frontend/static/icons/meatballs.svg b/extralit-frontend/static/icons/meatballs.svg similarity index 100% rename from argilla-frontend/static/icons/meatballs.svg rename to extralit-frontend/static/icons/meatballs.svg diff --git a/argilla-frontend/static/icons/minimize-arrows.svg b/extralit-frontend/static/icons/minimize-arrows.svg similarity index 100% rename from argilla-frontend/static/icons/minimize-arrows.svg rename to extralit-frontend/static/icons/minimize-arrows.svg diff --git a/argilla-frontend/static/icons/no-matching.svg b/extralit-frontend/static/icons/no-matching.svg similarity index 100% rename from argilla-frontend/static/icons/no-matching.svg rename to extralit-frontend/static/icons/no-matching.svg diff --git a/argilla-frontend/static/icons/pen.svg b/extralit-frontend/static/icons/pen.svg similarity index 100% rename from argilla-frontend/static/icons/pen.svg rename to extralit-frontend/static/icons/pen.svg diff --git a/argilla-frontend/static/icons/plus.svg b/extralit-frontend/static/icons/plus.svg similarity index 100% rename from argilla-frontend/static/icons/plus.svg rename to extralit-frontend/static/icons/plus.svg diff --git a/argilla-frontend/static/icons/progress.svg b/extralit-frontend/static/icons/progress.svg similarity index 100% rename from argilla-frontend/static/icons/progress.svg rename to extralit-frontend/static/icons/progress.svg diff --git a/argilla-frontend/static/icons/question-answering.svg b/extralit-frontend/static/icons/question-answering.svg similarity index 100% rename from argilla-frontend/static/icons/question-answering.svg rename to extralit-frontend/static/icons/question-answering.svg diff --git a/argilla-frontend/static/icons/records.svg b/extralit-frontend/static/icons/records.svg similarity index 100% rename from argilla-frontend/static/icons/records.svg rename to extralit-frontend/static/icons/records.svg diff --git a/argilla-frontend/static/icons/refresh.svg b/extralit-frontend/static/icons/refresh.svg similarity index 100% rename from argilla-frontend/static/icons/refresh.svg rename to extralit-frontend/static/icons/refresh.svg diff --git a/argilla-frontend/static/icons/reset.svg b/extralit-frontend/static/icons/reset.svg similarity index 100% rename from argilla-frontend/static/icons/reset.svg rename to extralit-frontend/static/icons/reset.svg diff --git a/argilla-frontend/static/icons/row-last.svg b/extralit-frontend/static/icons/row-last.svg similarity index 100% rename from argilla-frontend/static/icons/row-last.svg rename to extralit-frontend/static/icons/row-last.svg diff --git a/argilla-frontend/static/icons/rows.svg b/extralit-frontend/static/icons/rows.svg similarity index 100% rename from argilla-frontend/static/icons/rows.svg rename to extralit-frontend/static/icons/rows.svg diff --git a/argilla-frontend/static/icons/search.svg b/extralit-frontend/static/icons/search.svg similarity index 100% rename from argilla-frontend/static/icons/search.svg rename to extralit-frontend/static/icons/search.svg diff --git a/argilla-frontend/static/icons/settings.svg b/extralit-frontend/static/icons/settings.svg similarity index 100% rename from argilla-frontend/static/icons/settings.svg rename to extralit-frontend/static/icons/settings.svg diff --git a/argilla-frontend/static/icons/shortcuts.svg b/extralit-frontend/static/icons/shortcuts.svg similarity index 100% rename from argilla-frontend/static/icons/shortcuts.svg rename to extralit-frontend/static/icons/shortcuts.svg diff --git a/argilla-frontend/static/icons/similarity.svg b/extralit-frontend/static/icons/similarity.svg similarity index 100% rename from argilla-frontend/static/icons/similarity.svg rename to extralit-frontend/static/icons/similarity.svg diff --git a/argilla-frontend/static/icons/smile-sad.svg b/extralit-frontend/static/icons/smile-sad.svg similarity index 100% rename from argilla-frontend/static/icons/smile-sad.svg rename to extralit-frontend/static/icons/smile-sad.svg diff --git a/argilla-frontend/static/icons/sort.svg b/extralit-frontend/static/icons/sort.svg similarity index 100% rename from argilla-frontend/static/icons/sort.svg rename to extralit-frontend/static/icons/sort.svg diff --git a/argilla-frontend/static/icons/stats.svg b/extralit-frontend/static/icons/stats.svg similarity index 100% rename from argilla-frontend/static/icons/stats.svg rename to extralit-frontend/static/icons/stats.svg diff --git a/argilla-frontend/static/icons/suggestion.svg b/extralit-frontend/static/icons/suggestion.svg similarity index 100% rename from argilla-frontend/static/icons/suggestion.svg rename to extralit-frontend/static/icons/suggestion.svg diff --git a/argilla-frontend/static/icons/support.svg b/extralit-frontend/static/icons/support.svg similarity index 100% rename from argilla-frontend/static/icons/support.svg rename to extralit-frontend/static/icons/support.svg diff --git a/argilla-frontend/static/icons/system-theme.svg b/extralit-frontend/static/icons/system-theme.svg similarity index 100% rename from argilla-frontend/static/icons/system-theme.svg rename to extralit-frontend/static/icons/system-theme.svg diff --git a/argilla-frontend/static/icons/text-classification.svg b/extralit-frontend/static/icons/text-classification.svg similarity index 100% rename from argilla-frontend/static/icons/text-classification.svg rename to extralit-frontend/static/icons/text-classification.svg diff --git a/argilla-frontend/static/icons/text-to-image.svg b/extralit-frontend/static/icons/text-to-image.svg similarity index 100% rename from argilla-frontend/static/icons/text-to-image.svg rename to extralit-frontend/static/icons/text-to-image.svg diff --git a/argilla-frontend/static/icons/time.svg b/extralit-frontend/static/icons/time.svg similarity index 100% rename from argilla-frontend/static/icons/time.svg rename to extralit-frontend/static/icons/time.svg diff --git a/argilla-frontend/static/icons/trash-empty.svg b/extralit-frontend/static/icons/trash-empty.svg similarity index 100% rename from argilla-frontend/static/icons/trash-empty.svg rename to extralit-frontend/static/icons/trash-empty.svg diff --git a/argilla-frontend/static/icons/unavailable.svg b/extralit-frontend/static/icons/unavailable.svg similarity index 100% rename from argilla-frontend/static/icons/unavailable.svg rename to extralit-frontend/static/icons/unavailable.svg diff --git a/argilla-frontend/static/icons/update.svg b/extralit-frontend/static/icons/update.svg similarity index 100% rename from argilla-frontend/static/icons/update.svg rename to extralit-frontend/static/icons/update.svg diff --git a/argilla-frontend/static/icons/validate.svg b/extralit-frontend/static/icons/validate.svg similarity index 100% rename from argilla-frontend/static/icons/validate.svg rename to extralit-frontend/static/icons/validate.svg diff --git a/argilla-frontend/static/icons/weak-labeling.svg b/extralit-frontend/static/icons/weak-labeling.svg similarity index 100% rename from argilla-frontend/static/icons/weak-labeling.svg rename to extralit-frontend/static/icons/weak-labeling.svg diff --git a/argilla-frontend/static/images/help-info/explain.png b/extralit-frontend/static/images/help-info/explain.png similarity index 100% rename from argilla-frontend/static/images/help-info/explain.png rename to extralit-frontend/static/images/help-info/explain.png diff --git a/argilla-frontend/static/images/help-info/similarity.png b/extralit-frontend/static/images/help-info/similarity.png similarity index 100% rename from argilla-frontend/static/images/help-info/similarity.png rename to extralit-frontend/static/images/help-info/similarity.png diff --git a/argilla-frontend/static/images/img-placeholder.svg b/extralit-frontend/static/images/img-placeholder.svg similarity index 100% rename from argilla-frontend/static/images/img-placeholder.svg rename to extralit-frontend/static/images/img-placeholder.svg diff --git a/argilla-frontend/static/images/logo-white.svg b/extralit-frontend/static/images/logo-white.svg similarity index 100% rename from argilla-frontend/static/images/logo-white.svg rename to extralit-frontend/static/images/logo-white.svg diff --git a/argilla-frontend/static/images/logo.svg b/extralit-frontend/static/images/logo.svg similarity index 100% rename from argilla-frontend/static/images/logo.svg rename to extralit-frontend/static/images/logo.svg diff --git a/argilla-frontend/static/images/welcome-hf-sign-in-ss.jpg b/extralit-frontend/static/images/welcome-hf-sign-in-ss.jpg similarity index 100% rename from argilla-frontend/static/images/welcome-hf-sign-in-ss.jpg rename to extralit-frontend/static/images/welcome-hf-sign-in-ss.jpg diff --git a/argilla-frontend/static/js/handlebars.min.js b/extralit-frontend/static/js/handlebars.min.js similarity index 100% rename from argilla-frontend/static/js/handlebars.min.js rename to extralit-frontend/static/js/handlebars.min.js diff --git a/argilla-frontend/static/site.webmanifest b/extralit-frontend/static/site.webmanifest similarity index 100% rename from argilla-frontend/static/site.webmanifest rename to extralit-frontend/static/site.webmanifest diff --git a/argilla-frontend/translation/de.js b/extralit-frontend/translation/de.js similarity index 100% rename from argilla-frontend/translation/de.js rename to extralit-frontend/translation/de.js diff --git a/argilla-frontend/translation/en.js b/extralit-frontend/translation/en.js similarity index 100% rename from argilla-frontend/translation/en.js rename to extralit-frontend/translation/en.js diff --git a/argilla-frontend/translation/es.js b/extralit-frontend/translation/es.js similarity index 100% rename from argilla-frontend/translation/es.js rename to extralit-frontend/translation/es.js diff --git a/argilla-frontend/translation/ja.js b/extralit-frontend/translation/ja.js similarity index 100% rename from argilla-frontend/translation/ja.js rename to extralit-frontend/translation/ja.js diff --git a/argilla-frontend/tsconfig.json b/extralit-frontend/tsconfig.json similarity index 100% rename from argilla-frontend/tsconfig.json rename to extralit-frontend/tsconfig.json diff --git a/argilla-frontend/v1/di/__mocks__/useResolveMock.ts b/extralit-frontend/v1/di/__mocks__/useResolveMock.ts similarity index 100% rename from argilla-frontend/v1/di/__mocks__/useResolveMock.ts rename to extralit-frontend/v1/di/__mocks__/useResolveMock.ts diff --git a/argilla-frontend/v1/di/di.ts b/extralit-frontend/v1/di/di.ts similarity index 100% rename from argilla-frontend/v1/di/di.ts rename to extralit-frontend/v1/di/di.ts diff --git a/argilla-frontend/v1/di/index.ts b/extralit-frontend/v1/di/index.ts similarity index 100% rename from argilla-frontend/v1/di/index.ts rename to extralit-frontend/v1/di/index.ts diff --git a/argilla-frontend/v1/domain/entities/IAnswer.ts b/extralit-frontend/v1/domain/entities/IAnswer.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/IAnswer.ts rename to extralit-frontend/v1/domain/entities/IAnswer.ts diff --git a/argilla-frontend/v1/domain/entities/__mocks__/criteria/mock.ts b/extralit-frontend/v1/domain/entities/__mocks__/criteria/mock.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/__mocks__/criteria/mock.ts rename to extralit-frontend/v1/domain/entities/__mocks__/criteria/mock.ts diff --git a/argilla-frontend/v1/domain/entities/__mocks__/dataset/mocks.ts b/extralit-frontend/v1/domain/entities/__mocks__/dataset/mocks.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/__mocks__/dataset/mocks.ts rename to extralit-frontend/v1/domain/entities/__mocks__/dataset/mocks.ts diff --git a/argilla-frontend/v1/domain/entities/__mocks__/field/mocks.ts b/extralit-frontend/v1/domain/entities/__mocks__/field/mocks.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/__mocks__/field/mocks.ts rename to extralit-frontend/v1/domain/entities/__mocks__/field/mocks.ts diff --git a/argilla-frontend/v1/domain/entities/__mocks__/metadata/mock.ts b/extralit-frontend/v1/domain/entities/__mocks__/metadata/mock.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/__mocks__/metadata/mock.ts rename to extralit-frontend/v1/domain/entities/__mocks__/metadata/mock.ts diff --git a/argilla-frontend/v1/domain/entities/__mocks__/question/mock.ts b/extralit-frontend/v1/domain/entities/__mocks__/question/mock.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/__mocks__/question/mock.ts rename to extralit-frontend/v1/domain/entities/__mocks__/question/mock.ts diff --git a/argilla-frontend/v1/domain/entities/__mocks__/vector/mocks.ts b/extralit-frontend/v1/domain/entities/__mocks__/vector/mocks.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/__mocks__/vector/mocks.ts rename to extralit-frontend/v1/domain/entities/__mocks__/vector/mocks.ts diff --git a/argilla-frontend/v1/domain/entities/color/Color.test.ts b/extralit-frontend/v1/domain/entities/color/Color.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/color/Color.test.ts rename to extralit-frontend/v1/domain/entities/color/Color.test.ts diff --git a/argilla-frontend/v1/domain/entities/color/Color.ts b/extralit-frontend/v1/domain/entities/color/Color.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/color/Color.ts rename to extralit-frontend/v1/domain/entities/color/Color.ts diff --git a/argilla-frontend/v1/domain/entities/common/Criteria.ts b/extralit-frontend/v1/domain/entities/common/Criteria.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/common/Criteria.ts rename to extralit-frontend/v1/domain/entities/common/Criteria.ts diff --git a/argilla-frontend/v1/domain/entities/common/Filter.ts b/extralit-frontend/v1/domain/entities/common/Filter.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/common/Filter.ts rename to extralit-frontend/v1/domain/entities/common/Filter.ts diff --git a/argilla-frontend/v1/domain/entities/common/Params.ts b/extralit-frontend/v1/domain/entities/common/Params.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/common/Params.ts rename to extralit-frontend/v1/domain/entities/common/Params.ts diff --git a/argilla-frontend/v1/domain/entities/dataset/Dataset.test.ts b/extralit-frontend/v1/domain/entities/dataset/Dataset.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/dataset/Dataset.test.ts rename to extralit-frontend/v1/domain/entities/dataset/Dataset.test.ts diff --git a/argilla-frontend/v1/domain/entities/dataset/Dataset.ts b/extralit-frontend/v1/domain/entities/dataset/Dataset.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/dataset/Dataset.ts rename to extralit-frontend/v1/domain/entities/dataset/Dataset.ts diff --git a/argilla-frontend/v1/domain/entities/dataset/DatasetExport.ts b/extralit-frontend/v1/domain/entities/dataset/DatasetExport.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/dataset/DatasetExport.ts rename to extralit-frontend/v1/domain/entities/dataset/DatasetExport.ts diff --git a/argilla-frontend/v1/domain/entities/dataset/DatasetSetting.ts b/extralit-frontend/v1/domain/entities/dataset/DatasetSetting.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/dataset/DatasetSetting.ts rename to extralit-frontend/v1/domain/entities/dataset/DatasetSetting.ts diff --git a/argilla-frontend/v1/domain/entities/dataset/Metrics.test.ts b/extralit-frontend/v1/domain/entities/dataset/Metrics.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/dataset/Metrics.test.ts rename to extralit-frontend/v1/domain/entities/dataset/Metrics.test.ts diff --git a/argilla-frontend/v1/domain/entities/dataset/Metrics.ts b/extralit-frontend/v1/domain/entities/dataset/Metrics.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/dataset/Metrics.ts rename to extralit-frontend/v1/domain/entities/dataset/Metrics.ts diff --git a/argilla-frontend/v1/domain/entities/dataset/Progress.ts b/extralit-frontend/v1/domain/entities/dataset/Progress.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/dataset/Progress.ts rename to extralit-frontend/v1/domain/entities/dataset/Progress.ts diff --git a/argilla-frontend/v1/domain/entities/distribution/TaskDistribution.test.ts b/extralit-frontend/v1/domain/entities/distribution/TaskDistribution.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/distribution/TaskDistribution.test.ts rename to extralit-frontend/v1/domain/entities/distribution/TaskDistribution.test.ts diff --git a/argilla-frontend/v1/domain/entities/distribution/TaskDistribution.ts b/extralit-frontend/v1/domain/entities/distribution/TaskDistribution.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/distribution/TaskDistribution.ts rename to extralit-frontend/v1/domain/entities/distribution/TaskDistribution.ts diff --git a/argilla-frontend/v1/domain/entities/document/Document.ts b/extralit-frontend/v1/domain/entities/document/Document.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/document/Document.ts rename to extralit-frontend/v1/domain/entities/document/Document.ts diff --git a/argilla-frontend/v1/domain/entities/environment/Environment.ts b/extralit-frontend/v1/domain/entities/environment/Environment.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/environment/Environment.ts rename to extralit-frontend/v1/domain/entities/environment/Environment.ts diff --git a/argilla-frontend/v1/domain/entities/error/Guard.ts b/extralit-frontend/v1/domain/entities/error/Guard.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/error/Guard.ts rename to extralit-frontend/v1/domain/entities/error/Guard.ts diff --git a/argilla-frontend/v1/domain/entities/error/index.ts b/extralit-frontend/v1/domain/entities/error/index.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/error/index.ts rename to extralit-frontend/v1/domain/entities/error/index.ts diff --git a/argilla-frontend/v1/domain/entities/field/Field.test.ts b/extralit-frontend/v1/domain/entities/field/Field.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/field/Field.test.ts rename to extralit-frontend/v1/domain/entities/field/Field.test.ts diff --git a/argilla-frontend/v1/domain/entities/field/Field.ts b/extralit-frontend/v1/domain/entities/field/Field.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/field/Field.ts rename to extralit-frontend/v1/domain/entities/field/Field.ts diff --git a/argilla-frontend/v1/domain/entities/field/FieldType.ts b/extralit-frontend/v1/domain/entities/field/FieldType.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/field/FieldType.ts rename to extralit-frontend/v1/domain/entities/field/FieldType.ts diff --git a/argilla-frontend/v1/domain/entities/hub/DatasetCreation.test.ts b/extralit-frontend/v1/domain/entities/hub/DatasetCreation.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/hub/DatasetCreation.test.ts rename to extralit-frontend/v1/domain/entities/hub/DatasetCreation.test.ts diff --git a/argilla-frontend/v1/domain/entities/hub/DatasetCreation.ts b/extralit-frontend/v1/domain/entities/hub/DatasetCreation.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/hub/DatasetCreation.ts rename to extralit-frontend/v1/domain/entities/hub/DatasetCreation.ts diff --git a/argilla-frontend/v1/domain/entities/hub/DatasetCreationBuilder.ts b/extralit-frontend/v1/domain/entities/hub/DatasetCreationBuilder.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/hub/DatasetCreationBuilder.ts rename to extralit-frontend/v1/domain/entities/hub/DatasetCreationBuilder.ts diff --git a/argilla-frontend/v1/domain/entities/hub/FieldCreation.ts b/extralit-frontend/v1/domain/entities/hub/FieldCreation.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/hub/FieldCreation.ts rename to extralit-frontend/v1/domain/entities/hub/FieldCreation.ts diff --git a/argilla-frontend/v1/domain/entities/hub/MetadataCreation.ts b/extralit-frontend/v1/domain/entities/hub/MetadataCreation.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/hub/MetadataCreation.ts rename to extralit-frontend/v1/domain/entities/hub/MetadataCreation.ts diff --git a/argilla-frontend/v1/domain/entities/hub/QuestionCreation.ts b/extralit-frontend/v1/domain/entities/hub/QuestionCreation.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/hub/QuestionCreation.ts rename to extralit-frontend/v1/domain/entities/hub/QuestionCreation.ts diff --git a/argilla-frontend/v1/domain/entities/hub/Subset.ts b/extralit-frontend/v1/domain/entities/hub/Subset.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/hub/Subset.ts rename to extralit-frontend/v1/domain/entities/hub/Subset.ts diff --git a/argilla-frontend/v1/domain/entities/import/ImportAnalysis.ts b/extralit-frontend/v1/domain/entities/import/ImportAnalysis.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/import/ImportAnalysis.ts rename to extralit-frontend/v1/domain/entities/import/ImportAnalysis.ts diff --git a/argilla-frontend/v1/domain/entities/import/ImportHistoryDatasetBuilder.ts b/extralit-frontend/v1/domain/entities/import/ImportHistoryDatasetBuilder.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/import/ImportHistoryDatasetBuilder.ts rename to extralit-frontend/v1/domain/entities/import/ImportHistoryDatasetBuilder.ts diff --git a/argilla-frontend/v1/domain/entities/import/ImportHistoryDetails.ts b/extralit-frontend/v1/domain/entities/import/ImportHistoryDetails.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/import/ImportHistoryDetails.ts rename to extralit-frontend/v1/domain/entities/import/ImportHistoryDetails.ts diff --git a/argilla-frontend/v1/domain/entities/metadata/Metadata.test.ts b/extralit-frontend/v1/domain/entities/metadata/Metadata.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/metadata/Metadata.test.ts rename to extralit-frontend/v1/domain/entities/metadata/Metadata.test.ts diff --git a/argilla-frontend/v1/domain/entities/metadata/Metadata.ts b/extralit-frontend/v1/domain/entities/metadata/Metadata.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/metadata/Metadata.ts rename to extralit-frontend/v1/domain/entities/metadata/Metadata.ts diff --git a/argilla-frontend/v1/domain/entities/metadata/MetadataCriteria.test.ts b/extralit-frontend/v1/domain/entities/metadata/MetadataCriteria.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/metadata/MetadataCriteria.test.ts rename to extralit-frontend/v1/domain/entities/metadata/MetadataCriteria.test.ts diff --git a/argilla-frontend/v1/domain/entities/metadata/MetadataCriteria.ts b/extralit-frontend/v1/domain/entities/metadata/MetadataCriteria.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/metadata/MetadataCriteria.ts rename to extralit-frontend/v1/domain/entities/metadata/MetadataCriteria.ts diff --git a/argilla-frontend/v1/domain/entities/metadata/MetadataFilter.test.ts b/extralit-frontend/v1/domain/entities/metadata/MetadataFilter.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/metadata/MetadataFilter.test.ts rename to extralit-frontend/v1/domain/entities/metadata/MetadataFilter.test.ts diff --git a/argilla-frontend/v1/domain/entities/metadata/MetadataFilter.ts b/extralit-frontend/v1/domain/entities/metadata/MetadataFilter.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/metadata/MetadataFilter.ts rename to extralit-frontend/v1/domain/entities/metadata/MetadataFilter.ts diff --git a/argilla-frontend/v1/domain/entities/metadata/MetadataRecord.ts b/extralit-frontend/v1/domain/entities/metadata/MetadataRecord.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/metadata/MetadataRecord.ts rename to extralit-frontend/v1/domain/entities/metadata/MetadataRecord.ts diff --git a/argilla-frontend/v1/domain/entities/metadata/MetadataType.ts b/extralit-frontend/v1/domain/entities/metadata/MetadataType.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/metadata/MetadataType.ts rename to extralit-frontend/v1/domain/entities/metadata/MetadataType.ts diff --git a/argilla-frontend/v1/domain/entities/oauth/OAuthProvider.ts b/extralit-frontend/v1/domain/entities/oauth/OAuthProvider.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/oauth/OAuthProvider.ts rename to extralit-frontend/v1/domain/entities/oauth/OAuthProvider.ts diff --git a/argilla-frontend/v1/domain/entities/page/PageCriteria.test.ts b/extralit-frontend/v1/domain/entities/page/PageCriteria.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/page/PageCriteria.test.ts rename to extralit-frontend/v1/domain/entities/page/PageCriteria.test.ts diff --git a/argilla-frontend/v1/domain/entities/page/PageCriteria.ts b/extralit-frontend/v1/domain/entities/page/PageCriteria.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/page/PageCriteria.ts rename to extralit-frontend/v1/domain/entities/page/PageCriteria.ts diff --git a/argilla-frontend/v1/domain/entities/question/Question.test.ts b/extralit-frontend/v1/domain/entities/question/Question.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/question/Question.test.ts rename to extralit-frontend/v1/domain/entities/question/Question.test.ts diff --git a/argilla-frontend/v1/domain/entities/question/Question.ts b/extralit-frontend/v1/domain/entities/question/Question.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/question/Question.ts rename to extralit-frontend/v1/domain/entities/question/Question.ts diff --git a/argilla-frontend/v1/domain/entities/question/QuestionAnswer.ts b/extralit-frontend/v1/domain/entities/question/QuestionAnswer.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/question/QuestionAnswer.ts rename to extralit-frontend/v1/domain/entities/question/QuestionAnswer.ts diff --git a/argilla-frontend/v1/domain/entities/question/QuestionSetting.test.ts b/extralit-frontend/v1/domain/entities/question/QuestionSetting.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/question/QuestionSetting.test.ts rename to extralit-frontend/v1/domain/entities/question/QuestionSetting.test.ts diff --git a/argilla-frontend/v1/domain/entities/question/QuestionSetting.ts b/extralit-frontend/v1/domain/entities/question/QuestionSetting.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/question/QuestionSetting.ts rename to extralit-frontend/v1/domain/entities/question/QuestionSetting.ts diff --git a/argilla-frontend/v1/domain/entities/question/QuestionType.test.ts b/extralit-frontend/v1/domain/entities/question/QuestionType.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/question/QuestionType.test.ts rename to extralit-frontend/v1/domain/entities/question/QuestionType.test.ts diff --git a/argilla-frontend/v1/domain/entities/question/QuestionType.ts b/extralit-frontend/v1/domain/entities/question/QuestionType.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/question/QuestionType.ts rename to extralit-frontend/v1/domain/entities/question/QuestionType.ts diff --git a/argilla-frontend/v1/domain/entities/question/Suggestion.test.ts b/extralit-frontend/v1/domain/entities/question/Suggestion.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/question/Suggestion.test.ts rename to extralit-frontend/v1/domain/entities/question/Suggestion.test.ts diff --git a/argilla-frontend/v1/domain/entities/question/Suggestion.ts b/extralit-frontend/v1/domain/entities/question/Suggestion.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/question/Suggestion.ts rename to extralit-frontend/v1/domain/entities/question/Suggestion.ts diff --git a/argilla-frontend/v1/domain/entities/question/answer/SpanAnswer.test.ts b/extralit-frontend/v1/domain/entities/question/answer/SpanAnswer.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/question/answer/SpanAnswer.test.ts rename to extralit-frontend/v1/domain/entities/question/answer/SpanAnswer.test.ts diff --git a/argilla-frontend/v1/domain/entities/record/Record.ts b/extralit-frontend/v1/domain/entities/record/Record.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/record/Record.ts rename to extralit-frontend/v1/domain/entities/record/Record.ts diff --git a/argilla-frontend/v1/domain/entities/record/RecordAnswer.ts b/extralit-frontend/v1/domain/entities/record/RecordAnswer.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/record/RecordAnswer.ts rename to extralit-frontend/v1/domain/entities/record/RecordAnswer.ts diff --git a/argilla-frontend/v1/domain/entities/record/RecordCriteria.test.ts b/extralit-frontend/v1/domain/entities/record/RecordCriteria.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/record/RecordCriteria.test.ts rename to extralit-frontend/v1/domain/entities/record/RecordCriteria.test.ts diff --git a/argilla-frontend/v1/domain/entities/record/RecordCriteria.ts b/extralit-frontend/v1/domain/entities/record/RecordCriteria.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/record/RecordCriteria.ts rename to extralit-frontend/v1/domain/entities/record/RecordCriteria.ts diff --git a/argilla-frontend/v1/domain/entities/record/RecordStatus.ts b/extralit-frontend/v1/domain/entities/record/RecordStatus.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/record/RecordStatus.ts rename to extralit-frontend/v1/domain/entities/record/RecordStatus.ts diff --git a/argilla-frontend/v1/domain/entities/record/Records.test.ts b/extralit-frontend/v1/domain/entities/record/Records.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/record/Records.test.ts rename to extralit-frontend/v1/domain/entities/record/Records.test.ts diff --git a/argilla-frontend/v1/domain/entities/record/Records.ts b/extralit-frontend/v1/domain/entities/record/Records.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/record/Records.ts rename to extralit-frontend/v1/domain/entities/record/Records.ts diff --git a/argilla-frontend/v1/domain/entities/response/ResponseCriteria.test.ts b/extralit-frontend/v1/domain/entities/response/ResponseCriteria.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/response/ResponseCriteria.test.ts rename to extralit-frontend/v1/domain/entities/response/ResponseCriteria.test.ts diff --git a/argilla-frontend/v1/domain/entities/response/ResponseCriteria.ts b/extralit-frontend/v1/domain/entities/response/ResponseCriteria.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/response/ResponseCriteria.ts rename to extralit-frontend/v1/domain/entities/response/ResponseCriteria.ts diff --git a/argilla-frontend/v1/domain/entities/response/ResponseFilter.ts b/extralit-frontend/v1/domain/entities/response/ResponseFilter.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/response/ResponseFilter.ts rename to extralit-frontend/v1/domain/entities/response/ResponseFilter.ts diff --git a/argilla-frontend/v1/domain/entities/search/SearchTextCriteria.test.ts b/extralit-frontend/v1/domain/entities/search/SearchTextCriteria.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/search/SearchTextCriteria.test.ts rename to extralit-frontend/v1/domain/entities/search/SearchTextCriteria.test.ts diff --git a/argilla-frontend/v1/domain/entities/search/SearchTextCriteria.ts b/extralit-frontend/v1/domain/entities/search/SearchTextCriteria.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/search/SearchTextCriteria.ts rename to extralit-frontend/v1/domain/entities/search/SearchTextCriteria.ts diff --git a/argilla-frontend/v1/domain/entities/similarity/Score.test.ts b/extralit-frontend/v1/domain/entities/similarity/Score.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/similarity/Score.test.ts rename to extralit-frontend/v1/domain/entities/similarity/Score.test.ts diff --git a/argilla-frontend/v1/domain/entities/similarity/Score.ts b/extralit-frontend/v1/domain/entities/similarity/Score.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/similarity/Score.ts rename to extralit-frontend/v1/domain/entities/similarity/Score.ts diff --git a/argilla-frontend/v1/domain/entities/similarity/SimilarityCriteria.test.ts b/extralit-frontend/v1/domain/entities/similarity/SimilarityCriteria.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/similarity/SimilarityCriteria.test.ts rename to extralit-frontend/v1/domain/entities/similarity/SimilarityCriteria.test.ts diff --git a/argilla-frontend/v1/domain/entities/similarity/SimilarityCriteria.ts b/extralit-frontend/v1/domain/entities/similarity/SimilarityCriteria.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/similarity/SimilarityCriteria.ts rename to extralit-frontend/v1/domain/entities/similarity/SimilarityCriteria.ts diff --git a/argilla-frontend/v1/domain/entities/sort/SortCriteria.test.ts b/extralit-frontend/v1/domain/entities/sort/SortCriteria.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/sort/SortCriteria.test.ts rename to extralit-frontend/v1/domain/entities/sort/SortCriteria.test.ts diff --git a/argilla-frontend/v1/domain/entities/sort/SortCriteria.ts b/extralit-frontend/v1/domain/entities/sort/SortCriteria.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/sort/SortCriteria.ts rename to extralit-frontend/v1/domain/entities/sort/SortCriteria.ts diff --git a/argilla-frontend/v1/domain/entities/sort/SortList.test.ts b/extralit-frontend/v1/domain/entities/sort/SortList.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/sort/SortList.test.ts rename to extralit-frontend/v1/domain/entities/sort/SortList.test.ts diff --git a/argilla-frontend/v1/domain/entities/sort/SortList.ts b/extralit-frontend/v1/domain/entities/sort/SortList.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/sort/SortList.ts rename to extralit-frontend/v1/domain/entities/sort/SortList.ts diff --git a/argilla-frontend/v1/domain/entities/suggestion/Agent.ts b/extralit-frontend/v1/domain/entities/suggestion/Agent.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/suggestion/Agent.ts rename to extralit-frontend/v1/domain/entities/suggestion/Agent.ts diff --git a/argilla-frontend/v1/domain/entities/suggestion/SuggestionCriteria.test.ts b/extralit-frontend/v1/domain/entities/suggestion/SuggestionCriteria.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/suggestion/SuggestionCriteria.test.ts rename to extralit-frontend/v1/domain/entities/suggestion/SuggestionCriteria.test.ts diff --git a/argilla-frontend/v1/domain/entities/suggestion/SuggestionCriteria.ts b/extralit-frontend/v1/domain/entities/suggestion/SuggestionCriteria.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/suggestion/SuggestionCriteria.ts rename to extralit-frontend/v1/domain/entities/suggestion/SuggestionCriteria.ts diff --git a/argilla-frontend/v1/domain/entities/suggestion/SuggestionFilter.ts b/extralit-frontend/v1/domain/entities/suggestion/SuggestionFilter.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/suggestion/SuggestionFilter.ts rename to extralit-frontend/v1/domain/entities/suggestion/SuggestionFilter.ts diff --git a/argilla-frontend/v1/domain/entities/table/Extraction.ts b/extralit-frontend/v1/domain/entities/table/Extraction.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/table/Extraction.ts rename to extralit-frontend/v1/domain/entities/table/Extraction.ts diff --git a/argilla-frontend/v1/domain/entities/table/Schema.ts b/extralit-frontend/v1/domain/entities/table/Schema.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/table/Schema.ts rename to extralit-frontend/v1/domain/entities/table/Schema.ts diff --git a/argilla-frontend/v1/domain/entities/table/TableData.ts b/extralit-frontend/v1/domain/entities/table/TableData.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/table/TableData.ts rename to extralit-frontend/v1/domain/entities/table/TableData.ts diff --git a/argilla-frontend/v1/domain/entities/table/Validation.ts b/extralit-frontend/v1/domain/entities/table/Validation.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/table/Validation.ts rename to extralit-frontend/v1/domain/entities/table/Validation.ts diff --git a/argilla-frontend/v1/domain/entities/user/User.ts b/extralit-frontend/v1/domain/entities/user/User.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/user/User.ts rename to extralit-frontend/v1/domain/entities/user/User.ts diff --git a/argilla-frontend/v1/domain/entities/vector/DatasetVector.ts b/extralit-frontend/v1/domain/entities/vector/DatasetVector.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/vector/DatasetVector.ts rename to extralit-frontend/v1/domain/entities/vector/DatasetVector.ts diff --git a/argilla-frontend/v1/domain/entities/vector/Vector.test.ts b/extralit-frontend/v1/domain/entities/vector/Vector.test.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/vector/Vector.test.ts rename to extralit-frontend/v1/domain/entities/vector/Vector.test.ts diff --git a/argilla-frontend/v1/domain/entities/vector/Vector.ts b/extralit-frontend/v1/domain/entities/vector/Vector.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/vector/Vector.ts rename to extralit-frontend/v1/domain/entities/vector/Vector.ts diff --git a/argilla-frontend/v1/domain/entities/workspace/Workspace.ts b/extralit-frontend/v1/domain/entities/workspace/Workspace.ts similarity index 100% rename from argilla-frontend/v1/domain/entities/workspace/Workspace.ts rename to extralit-frontend/v1/domain/entities/workspace/Workspace.ts diff --git a/argilla-frontend/v1/domain/events/RecordResponseUpdatedEvent.ts b/extralit-frontend/v1/domain/events/RecordResponseUpdatedEvent.ts similarity index 100% rename from argilla-frontend/v1/domain/events/RecordResponseUpdatedEvent.ts rename to extralit-frontend/v1/domain/events/RecordResponseUpdatedEvent.ts diff --git a/argilla-frontend/v1/domain/services/IAuthRepository.ts b/extralit-frontend/v1/domain/services/IAuthRepository.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IAuthRepository.ts rename to extralit-frontend/v1/domain/services/IAuthRepository.ts diff --git a/argilla-frontend/v1/domain/services/IAuthService.ts b/extralit-frontend/v1/domain/services/IAuthService.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IAuthService.ts rename to extralit-frontend/v1/domain/services/IAuthService.ts diff --git a/argilla-frontend/v1/domain/services/IDatasetRepository.ts b/extralit-frontend/v1/domain/services/IDatasetRepository.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IDatasetRepository.ts rename to extralit-frontend/v1/domain/services/IDatasetRepository.ts diff --git a/argilla-frontend/v1/domain/services/IDatasetSettingStorage.ts b/extralit-frontend/v1/domain/services/IDatasetSettingStorage.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IDatasetSettingStorage.ts rename to extralit-frontend/v1/domain/services/IDatasetSettingStorage.ts diff --git a/argilla-frontend/v1/domain/services/IDatasetStorage.ts b/extralit-frontend/v1/domain/services/IDatasetStorage.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IDatasetStorage.ts rename to extralit-frontend/v1/domain/services/IDatasetStorage.ts diff --git a/argilla-frontend/v1/domain/services/IDatasetsStorage.ts b/extralit-frontend/v1/domain/services/IDatasetsStorage.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IDatasetsStorage.ts rename to extralit-frontend/v1/domain/services/IDatasetsStorage.ts diff --git a/argilla-frontend/v1/domain/services/IDocumentStorage.ts b/extralit-frontend/v1/domain/services/IDocumentStorage.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IDocumentStorage.ts rename to extralit-frontend/v1/domain/services/IDocumentStorage.ts diff --git a/argilla-frontend/v1/domain/services/IEnvironmentRepository.ts b/extralit-frontend/v1/domain/services/IEnvironmentRepository.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IEnvironmentRepository.ts rename to extralit-frontend/v1/domain/services/IEnvironmentRepository.ts diff --git a/argilla-frontend/v1/domain/services/IFieldRepository.ts b/extralit-frontend/v1/domain/services/IFieldRepository.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IFieldRepository.ts rename to extralit-frontend/v1/domain/services/IFieldRepository.ts diff --git a/argilla-frontend/v1/domain/services/ILocalStorageService.ts b/extralit-frontend/v1/domain/services/ILocalStorageService.ts similarity index 100% rename from argilla-frontend/v1/domain/services/ILocalStorageService.ts rename to extralit-frontend/v1/domain/services/ILocalStorageService.ts diff --git a/argilla-frontend/v1/domain/services/IMetricsStorage.ts b/extralit-frontend/v1/domain/services/IMetricsStorage.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IMetricsStorage.ts rename to extralit-frontend/v1/domain/services/IMetricsStorage.ts diff --git a/argilla-frontend/v1/domain/services/IOAuthRepository.ts b/extralit-frontend/v1/domain/services/IOAuthRepository.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IOAuthRepository.ts rename to extralit-frontend/v1/domain/services/IOAuthRepository.ts diff --git a/argilla-frontend/v1/domain/services/IQuestionRepository.ts b/extralit-frontend/v1/domain/services/IQuestionRepository.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IQuestionRepository.ts rename to extralit-frontend/v1/domain/services/IQuestionRepository.ts diff --git a/argilla-frontend/v1/domain/services/IRecordStorage.ts b/extralit-frontend/v1/domain/services/IRecordStorage.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IRecordStorage.ts rename to extralit-frontend/v1/domain/services/IRecordStorage.ts diff --git a/argilla-frontend/v1/domain/services/ITeamProgressStorage.ts b/extralit-frontend/v1/domain/services/ITeamProgressStorage.ts similarity index 100% rename from argilla-frontend/v1/domain/services/ITeamProgressStorage.ts rename to extralit-frontend/v1/domain/services/ITeamProgressStorage.ts diff --git a/argilla-frontend/v1/domain/services/IUserRepository.ts b/extralit-frontend/v1/domain/services/IUserRepository.ts similarity index 100% rename from argilla-frontend/v1/domain/services/IUserRepository.ts rename to extralit-frontend/v1/domain/services/IUserRepository.ts diff --git a/argilla-frontend/v1/domain/services/RoleService.ts b/extralit-frontend/v1/domain/services/RoleService.ts similarity index 100% rename from argilla-frontend/v1/domain/services/RoleService.ts rename to extralit-frontend/v1/domain/services/RoleService.ts diff --git a/argilla-frontend/v1/domain/services/RouterService.ts b/extralit-frontend/v1/domain/services/RouterService.ts similarity index 100% rename from argilla-frontend/v1/domain/services/RouterService.ts rename to extralit-frontend/v1/domain/services/RouterService.ts diff --git a/argilla-frontend/v1/domain/usecases/auth-login-use-case.ts b/extralit-frontend/v1/domain/usecases/auth-login-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/auth-login-use-case.ts rename to extralit-frontend/v1/domain/usecases/auth-login-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/bulk-annotation-use-case.ts b/extralit-frontend/v1/domain/usecases/bulk-annotation-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/bulk-annotation-use-case.ts rename to extralit-frontend/v1/domain/usecases/bulk-annotation-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/bulk-upload-documents-use-case.ts b/extralit-frontend/v1/domain/usecases/bulk-upload-documents-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/bulk-upload-documents-use-case.ts rename to extralit-frontend/v1/domain/usecases/bulk-upload-documents-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/create-dataset-use-case.ts b/extralit-frontend/v1/domain/usecases/create-dataset-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/create-dataset-use-case.ts rename to extralit-frontend/v1/domain/usecases/create-dataset-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/create-import-history-use-case.ts b/extralit-frontend/v1/domain/usecases/create-import-history-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/create-import-history-use-case.ts rename to extralit-frontend/v1/domain/usecases/create-import-history-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/dataset-setting/get-dataset-settings-use-case.ts b/extralit-frontend/v1/domain/usecases/dataset-setting/get-dataset-settings-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/dataset-setting/get-dataset-settings-use-case.ts rename to extralit-frontend/v1/domain/usecases/dataset-setting/get-dataset-settings-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/dataset-setting/update-dataset-setting-use-case.ts b/extralit-frontend/v1/domain/usecases/dataset-setting/update-dataset-setting-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/dataset-setting/update-dataset-setting-use-case.ts rename to extralit-frontend/v1/domain/usecases/dataset-setting/update-dataset-setting-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/dataset-setting/update-field-setting-use-case.ts b/extralit-frontend/v1/domain/usecases/dataset-setting/update-field-setting-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/dataset-setting/update-field-setting-use-case.ts rename to extralit-frontend/v1/domain/usecases/dataset-setting/update-field-setting-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/dataset-setting/update-metadata-setting-use-case.ts b/extralit-frontend/v1/domain/usecases/dataset-setting/update-metadata-setting-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/dataset-setting/update-metadata-setting-use-case.ts rename to extralit-frontend/v1/domain/usecases/dataset-setting/update-metadata-setting-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/dataset-setting/update-question-setting-use-case.ts b/extralit-frontend/v1/domain/usecases/dataset-setting/update-question-setting-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/dataset-setting/update-question-setting-use-case.ts rename to extralit-frontend/v1/domain/usecases/dataset-setting/update-question-setting-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/dataset-setting/update-vector-setting-use-case.ts b/extralit-frontend/v1/domain/usecases/dataset-setting/update-vector-setting-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/dataset-setting/update-vector-setting-use-case.ts rename to extralit-frontend/v1/domain/usecases/dataset-setting/update-vector-setting-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/delete-dataset-use-case.ts b/extralit-frontend/v1/domain/usecases/delete-dataset-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/delete-dataset-use-case.ts rename to extralit-frontend/v1/domain/usecases/delete-dataset-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/discard-record-use-case.ts b/extralit-frontend/v1/domain/usecases/discard-record-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/discard-record-use-case.ts rename to extralit-frontend/v1/domain/usecases/discard-record-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/export-dataset-to-hub-use-case.ts b/extralit-frontend/v1/domain/usecases/export-dataset-to-hub-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/export-dataset-to-hub-use-case.ts rename to extralit-frontend/v1/domain/usecases/export-dataset-to-hub-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-dataset-by-id-use-case.ts b/extralit-frontend/v1/domain/usecases/get-dataset-by-id-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-dataset-by-id-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-dataset-by-id-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-dataset-fields-grouped-use-case.test.ts b/extralit-frontend/v1/domain/usecases/get-dataset-fields-grouped-use-case.test.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-dataset-fields-grouped-use-case.test.ts rename to extralit-frontend/v1/domain/usecases/get-dataset-fields-grouped-use-case.test.ts diff --git a/argilla-frontend/v1/domain/usecases/get-dataset-fields-grouped-use-case.ts b/extralit-frontend/v1/domain/usecases/get-dataset-fields-grouped-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-dataset-fields-grouped-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-dataset-fields-grouped-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-dataset-progress-use-case.ts b/extralit-frontend/v1/domain/usecases/get-dataset-progress-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-dataset-progress-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-dataset-progress-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-dataset-questions-filter-use-case.ts b/extralit-frontend/v1/domain/usecases/get-dataset-questions-filter-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-dataset-questions-filter-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-dataset-questions-filter-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-dataset-questions-grouped-use-case.test.ts b/extralit-frontend/v1/domain/usecases/get-dataset-questions-grouped-use-case.test.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-dataset-questions-grouped-use-case.test.ts rename to extralit-frontend/v1/domain/usecases/get-dataset-questions-grouped-use-case.test.ts diff --git a/argilla-frontend/v1/domain/usecases/get-dataset-questions-grouped-use-case.ts b/extralit-frontend/v1/domain/usecases/get-dataset-questions-grouped-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-dataset-questions-grouped-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-dataset-questions-grouped-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-dataset-suggestions-agents-use-case.ts b/extralit-frontend/v1/domain/usecases/get-dataset-suggestions-agents-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-dataset-suggestions-agents-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-dataset-suggestions-agents-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-dataset-vectors-use-case.ts b/extralit-frontend/v1/domain/usecases/get-dataset-vectors-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-dataset-vectors-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-dataset-vectors-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-datasets-use-case.ts b/extralit-frontend/v1/domain/usecases/get-datasets-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-datasets-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-datasets-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-document-by-id-use-case.ts b/extralit-frontend/v1/domain/usecases/get-document-by-id-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-document-by-id-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-document-by-id-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-documents-by-workspace-use-case.ts b/extralit-frontend/v1/domain/usecases/get-documents-by-workspace-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-documents-by-workspace-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-documents-by-workspace-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-environment-use-case.ts b/extralit-frontend/v1/domain/usecases/get-environment-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-environment-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-environment-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-extraction-completion-use-case.ts b/extralit-frontend/v1/domain/usecases/get-extraction-completion-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-extraction-completion-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-extraction-completion-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-extraction-schema-use-case.ts b/extralit-frontend/v1/domain/usecases/get-extraction-schema-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-extraction-schema-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-extraction-schema-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-fields-use-case.ts b/extralit-frontend/v1/domain/usecases/get-fields-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-fields-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-fields-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-first-record-from-hub.ts b/extralit-frontend/v1/domain/usecases/get-first-record-from-hub.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-first-record-from-hub.ts rename to extralit-frontend/v1/domain/usecases/get-first-record-from-hub.ts diff --git a/argilla-frontend/v1/domain/usecases/get-hf-dataset-creation-use-case.ts b/extralit-frontend/v1/domain/usecases/get-hf-dataset-creation-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-hf-dataset-creation-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-hf-dataset-creation-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-import-analysis-use-case.ts b/extralit-frontend/v1/domain/usecases/get-import-analysis-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-import-analysis-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-import-analysis-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-import-history-details-use-case.ts b/extralit-frontend/v1/domain/usecases/get-import-history-details-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-import-history-details-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-import-history-details-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-import-history-use-case.ts b/extralit-frontend/v1/domain/usecases/get-import-history-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-import-history-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-import-history-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-job-status-use-case.ts b/extralit-frontend/v1/domain/usecases/get-job-status-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-job-status-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-job-status-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-metadata-use-case.ts b/extralit-frontend/v1/domain/usecases/get-metadata-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-metadata-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-metadata-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-records-by-criteria-use-case.ts b/extralit-frontend/v1/domain/usecases/get-records-by-criteria-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-records-by-criteria-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-records-by-criteria-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-user-metrics-use-case.ts b/extralit-frontend/v1/domain/usecases/get-user-metrics-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-user-metrics-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-user-metrics-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/get-workspaces-use-case.ts b/extralit-frontend/v1/domain/usecases/get-workspaces-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/get-workspaces-use-case.ts rename to extralit-frontend/v1/domain/usecases/get-workspaces-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/load-records-to-annotate-use-case.ts b/extralit-frontend/v1/domain/usecases/load-records-to-annotate-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/load-records-to-annotate-use-case.ts rename to extralit-frontend/v1/domain/usecases/load-records-to-annotate-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/load-user-use-case.ts b/extralit-frontend/v1/domain/usecases/load-user-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/load-user-use-case.ts rename to extralit-frontend/v1/domain/usecases/load-user-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/oauth-login-use-case.ts b/extralit-frontend/v1/domain/usecases/oauth-login-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/oauth-login-use-case.ts rename to extralit-frontend/v1/domain/usecases/oauth-login-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/oauth-login-usecase.test.ts b/extralit-frontend/v1/domain/usecases/oauth-login-usecase.test.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/oauth-login-usecase.test.ts rename to extralit-frontend/v1/domain/usecases/oauth-login-usecase.test.ts diff --git a/argilla-frontend/v1/domain/usecases/save-draft-use-case.ts b/extralit-frontend/v1/domain/usecases/save-draft-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/save-draft-use-case.ts rename to extralit-frontend/v1/domain/usecases/save-draft-use-case.ts diff --git a/argilla-frontend/v1/domain/usecases/submit-record-use-case.ts b/extralit-frontend/v1/domain/usecases/submit-record-use-case.ts similarity index 100% rename from argilla-frontend/v1/domain/usecases/submit-record-use-case.ts rename to extralit-frontend/v1/domain/usecases/submit-record-use-case.ts diff --git a/argilla-frontend/v1/infrastructure/events/UpdateMetricsEventHandler.ts b/extralit-frontend/v1/infrastructure/events/UpdateMetricsEventHandler.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/events/UpdateMetricsEventHandler.ts rename to extralit-frontend/v1/infrastructure/events/UpdateMetricsEventHandler.ts diff --git a/argilla-frontend/v1/infrastructure/events/UpdateTeamProgressEventHandler.ts b/extralit-frontend/v1/infrastructure/events/UpdateTeamProgressEventHandler.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/events/UpdateTeamProgressEventHandler.ts rename to extralit-frontend/v1/infrastructure/events/UpdateTeamProgressEventHandler.ts diff --git a/argilla-frontend/v1/infrastructure/events/index.ts b/extralit-frontend/v1/infrastructure/events/index.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/events/index.ts rename to extralit-frontend/v1/infrastructure/events/index.ts diff --git a/argilla-frontend/v1/infrastructure/events/useEvents.ts b/extralit-frontend/v1/infrastructure/events/useEvents.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/events/useEvents.ts rename to extralit-frontend/v1/infrastructure/events/useEvents.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/AgentRepository.ts b/extralit-frontend/v1/infrastructure/repositories/AgentRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/AgentRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/AgentRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/AuthRepository.ts b/extralit-frontend/v1/infrastructure/repositories/AuthRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/AuthRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/AuthRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/AxiosCache.ts b/extralit-frontend/v1/infrastructure/repositories/AxiosCache.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/AxiosCache.ts rename to extralit-frontend/v1/infrastructure/repositories/AxiosCache.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/AxiosErrorHandler.ts b/extralit-frontend/v1/infrastructure/repositories/AxiosErrorHandler.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/AxiosErrorHandler.ts rename to extralit-frontend/v1/infrastructure/repositories/AxiosErrorHandler.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/DatasetRepository.ts b/extralit-frontend/v1/infrastructure/repositories/DatasetRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/DatasetRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/DatasetRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/DocumentRepository.ts b/extralit-frontend/v1/infrastructure/repositories/DocumentRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/DocumentRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/DocumentRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/EnvironmentRepository.ts b/extralit-frontend/v1/infrastructure/repositories/EnvironmentRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/EnvironmentRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/EnvironmentRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/FieldRepository.ts b/extralit-frontend/v1/infrastructure/repositories/FieldRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/FieldRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/FieldRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/HubRepository.ts b/extralit-frontend/v1/infrastructure/repositories/HubRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/HubRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/HubRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/JobRepository.ts b/extralit-frontend/v1/infrastructure/repositories/JobRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/JobRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/JobRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/MetadataMetricsRepository.ts b/extralit-frontend/v1/infrastructure/repositories/MetadataMetricsRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/MetadataMetricsRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/MetadataMetricsRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/MetadataRepository.ts b/extralit-frontend/v1/infrastructure/repositories/MetadataRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/MetadataRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/MetadataRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/MetricsRepository.ts b/extralit-frontend/v1/infrastructure/repositories/MetricsRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/MetricsRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/MetricsRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/OAuthRepository.ts b/extralit-frontend/v1/infrastructure/repositories/OAuthRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/OAuthRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/OAuthRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/QuestionRepository.ts b/extralit-frontend/v1/infrastructure/repositories/QuestionRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/QuestionRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/QuestionRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/RecordRepository.ts b/extralit-frontend/v1/infrastructure/repositories/RecordRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/RecordRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/RecordRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/UserRepository.ts b/extralit-frontend/v1/infrastructure/repositories/UserRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/UserRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/UserRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/VectorRepository.ts b/extralit-frontend/v1/infrastructure/repositories/VectorRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/VectorRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/VectorRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/WorkspaceRepository.ts b/extralit-frontend/v1/infrastructure/repositories/WorkspaceRepository.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/WorkspaceRepository.ts rename to extralit-frontend/v1/infrastructure/repositories/WorkspaceRepository.ts diff --git a/argilla-frontend/v1/infrastructure/repositories/index.ts b/extralit-frontend/v1/infrastructure/repositories/index.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/repositories/index.ts rename to extralit-frontend/v1/infrastructure/repositories/index.ts diff --git a/argilla-frontend/v1/infrastructure/services/index.ts b/extralit-frontend/v1/infrastructure/services/index.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/index.ts rename to extralit-frontend/v1/infrastructure/services/index.ts diff --git a/argilla-frontend/v1/infrastructure/services/useAxiosExtension.ts b/extralit-frontend/v1/infrastructure/services/useAxiosExtension.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useAxiosExtension.ts rename to extralit-frontend/v1/infrastructure/services/useAxiosExtension.ts diff --git a/argilla-frontend/v1/infrastructure/services/useBeforeUnload.ts b/extralit-frontend/v1/infrastructure/services/useBeforeUnload.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useBeforeUnload.ts rename to extralit-frontend/v1/infrastructure/services/useBeforeUnload.ts diff --git a/argilla-frontend/v1/infrastructure/services/useClipboard.ts b/extralit-frontend/v1/infrastructure/services/useClipboard.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useClipboard.ts rename to extralit-frontend/v1/infrastructure/services/useClipboard.ts diff --git a/argilla-frontend/v1/infrastructure/services/useColorSchema.ts b/extralit-frontend/v1/infrastructure/services/useColorSchema.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useColorSchema.ts rename to extralit-frontend/v1/infrastructure/services/useColorSchema.ts diff --git a/argilla-frontend/v1/infrastructure/services/useDebounce.ts b/extralit-frontend/v1/infrastructure/services/useDebounce.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useDebounce.ts rename to extralit-frontend/v1/infrastructure/services/useDebounce.ts diff --git a/argilla-frontend/v1/infrastructure/services/useFeatureToggle.ts b/extralit-frontend/v1/infrastructure/services/useFeatureToggle.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useFeatureToggle.ts rename to extralit-frontend/v1/infrastructure/services/useFeatureToggle.ts diff --git a/argilla-frontend/v1/infrastructure/services/useFocusTab.ts b/extralit-frontend/v1/infrastructure/services/useFocusTab.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useFocusTab.ts rename to extralit-frontend/v1/infrastructure/services/useFocusTab.ts diff --git a/argilla-frontend/v1/infrastructure/services/useLanguageDetector.test.ts b/extralit-frontend/v1/infrastructure/services/useLanguageDetector.test.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useLanguageDetector.test.ts rename to extralit-frontend/v1/infrastructure/services/useLanguageDetector.test.ts diff --git a/argilla-frontend/v1/infrastructure/services/useLanguageDetector.ts b/extralit-frontend/v1/infrastructure/services/useLanguageDetector.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useLanguageDetector.ts rename to extralit-frontend/v1/infrastructure/services/useLanguageDetector.ts diff --git a/argilla-frontend/v1/infrastructure/services/useLanguageDirection.test.ts b/extralit-frontend/v1/infrastructure/services/useLanguageDirection.test.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useLanguageDirection.test.ts rename to extralit-frontend/v1/infrastructure/services/useLanguageDirection.test.ts diff --git a/argilla-frontend/v1/infrastructure/services/useLanguageDirection.ts b/extralit-frontend/v1/infrastructure/services/useLanguageDirection.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useLanguageDirection.ts rename to extralit-frontend/v1/infrastructure/services/useLanguageDirection.ts diff --git a/argilla-frontend/v1/infrastructure/services/useLocalStorage.ts b/extralit-frontend/v1/infrastructure/services/useLocalStorage.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useLocalStorage.ts rename to extralit-frontend/v1/infrastructure/services/useLocalStorage.ts diff --git a/argilla-frontend/v1/infrastructure/services/useNotifications.ts b/extralit-frontend/v1/infrastructure/services/useNotifications.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useNotifications.ts rename to extralit-frontend/v1/infrastructure/services/useNotifications.ts diff --git a/argilla-frontend/v1/infrastructure/services/usePlatform.ts b/extralit-frontend/v1/infrastructure/services/usePlatform.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/usePlatform.ts rename to extralit-frontend/v1/infrastructure/services/usePlatform.ts diff --git a/argilla-frontend/v1/infrastructure/services/useQueue.test.ts b/extralit-frontend/v1/infrastructure/services/useQueue.test.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useQueue.test.ts rename to extralit-frontend/v1/infrastructure/services/useQueue.test.ts diff --git a/argilla-frontend/v1/infrastructure/services/useQueue.ts b/extralit-frontend/v1/infrastructure/services/useQueue.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useQueue.ts rename to extralit-frontend/v1/infrastructure/services/useQueue.ts diff --git a/argilla-frontend/v1/infrastructure/services/useRole.ts b/extralit-frontend/v1/infrastructure/services/useRole.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useRole.ts rename to extralit-frontend/v1/infrastructure/services/useRole.ts diff --git a/argilla-frontend/v1/infrastructure/services/useRoutes.ts b/extralit-frontend/v1/infrastructure/services/useRoutes.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useRoutes.ts rename to extralit-frontend/v1/infrastructure/services/useRoutes.ts diff --git a/argilla-frontend/v1/infrastructure/services/useRunningEnvironment.test.ts b/extralit-frontend/v1/infrastructure/services/useRunningEnvironment.test.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useRunningEnvironment.test.ts rename to extralit-frontend/v1/infrastructure/services/useRunningEnvironment.test.ts diff --git a/argilla-frontend/v1/infrastructure/services/useRunningEnvironment.ts b/extralit-frontend/v1/infrastructure/services/useRunningEnvironment.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useRunningEnvironment.ts rename to extralit-frontend/v1/infrastructure/services/useRunningEnvironment.ts diff --git a/argilla-frontend/v1/infrastructure/services/useTranslate.ts b/extralit-frontend/v1/infrastructure/services/useTranslate.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useTranslate.ts rename to extralit-frontend/v1/infrastructure/services/useTranslate.ts diff --git a/argilla-frontend/v1/infrastructure/services/useUser.ts b/extralit-frontend/v1/infrastructure/services/useUser.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useUser.ts rename to extralit-frontend/v1/infrastructure/services/useUser.ts diff --git a/argilla-frontend/v1/infrastructure/services/useWait.ts b/extralit-frontend/v1/infrastructure/services/useWait.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/services/useWait.ts rename to extralit-frontend/v1/infrastructure/services/useWait.ts diff --git a/argilla-frontend/v1/infrastructure/storage/DatasetSettingStorage.ts b/extralit-frontend/v1/infrastructure/storage/DatasetSettingStorage.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/storage/DatasetSettingStorage.ts rename to extralit-frontend/v1/infrastructure/storage/DatasetSettingStorage.ts diff --git a/argilla-frontend/v1/infrastructure/storage/DatasetStorage.ts b/extralit-frontend/v1/infrastructure/storage/DatasetStorage.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/storage/DatasetStorage.ts rename to extralit-frontend/v1/infrastructure/storage/DatasetStorage.ts diff --git a/argilla-frontend/v1/infrastructure/storage/DatasetsStorage.ts b/extralit-frontend/v1/infrastructure/storage/DatasetsStorage.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/storage/DatasetsStorage.ts rename to extralit-frontend/v1/infrastructure/storage/DatasetsStorage.ts diff --git a/argilla-frontend/v1/infrastructure/storage/DocumentStorage.ts b/extralit-frontend/v1/infrastructure/storage/DocumentStorage.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/storage/DocumentStorage.ts rename to extralit-frontend/v1/infrastructure/storage/DocumentStorage.ts diff --git a/argilla-frontend/v1/infrastructure/storage/MetricsStorage.ts b/extralit-frontend/v1/infrastructure/storage/MetricsStorage.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/storage/MetricsStorage.ts rename to extralit-frontend/v1/infrastructure/storage/MetricsStorage.ts diff --git a/argilla-frontend/v1/infrastructure/storage/RecordsStorage.ts b/extralit-frontend/v1/infrastructure/storage/RecordsStorage.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/storage/RecordsStorage.ts rename to extralit-frontend/v1/infrastructure/storage/RecordsStorage.ts diff --git a/argilla-frontend/v1/infrastructure/storage/TeamProgressStorage.ts b/extralit-frontend/v1/infrastructure/storage/TeamProgressStorage.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/storage/TeamProgressStorage.ts rename to extralit-frontend/v1/infrastructure/storage/TeamProgressStorage.ts diff --git a/argilla-frontend/v1/infrastructure/types/api.ts b/extralit-frontend/v1/infrastructure/types/api.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/types/api.ts rename to extralit-frontend/v1/infrastructure/types/api.ts diff --git a/argilla-frontend/v1/infrastructure/types/dataset.ts b/extralit-frontend/v1/infrastructure/types/dataset.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/types/dataset.ts rename to extralit-frontend/v1/infrastructure/types/dataset.ts diff --git a/argilla-frontend/v1/infrastructure/types/environment.ts b/extralit-frontend/v1/infrastructure/types/environment.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/types/environment.ts rename to extralit-frontend/v1/infrastructure/types/environment.ts diff --git a/argilla-frontend/v1/infrastructure/types/field.ts b/extralit-frontend/v1/infrastructure/types/field.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/types/field.ts rename to extralit-frontend/v1/infrastructure/types/field.ts diff --git a/argilla-frontend/v1/infrastructure/types/index.ts b/extralit-frontend/v1/infrastructure/types/index.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/types/index.ts rename to extralit-frontend/v1/infrastructure/types/index.ts diff --git a/argilla-frontend/v1/infrastructure/types/metadata.ts b/extralit-frontend/v1/infrastructure/types/metadata.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/types/metadata.ts rename to extralit-frontend/v1/infrastructure/types/metadata.ts diff --git a/argilla-frontend/v1/infrastructure/types/question.ts b/extralit-frontend/v1/infrastructure/types/question.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/types/question.ts rename to extralit-frontend/v1/infrastructure/types/question.ts diff --git a/argilla-frontend/v1/infrastructure/types/record.ts b/extralit-frontend/v1/infrastructure/types/record.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/types/record.ts rename to extralit-frontend/v1/infrastructure/types/record.ts diff --git a/argilla-frontend/v1/infrastructure/types/vector.ts b/extralit-frontend/v1/infrastructure/types/vector.ts similarity index 100% rename from argilla-frontend/v1/infrastructure/types/vector.ts rename to extralit-frontend/v1/infrastructure/types/vector.ts diff --git a/argilla-frontend/v1/store/create.ts b/extralit-frontend/v1/store/create.ts similarity index 100% rename from argilla-frontend/v1/store/create.ts rename to extralit-frontend/v1/store/create.ts diff --git a/argilla-frontend/v1/store/non-reactive.ts b/extralit-frontend/v1/store/non-reactive.ts similarity index 100% rename from argilla-frontend/v1/store/non-reactive.ts rename to extralit-frontend/v1/store/non-reactive.ts diff --git a/argilla-frontend/vue-shim.d.ts b/extralit-frontend/vue-shim.d.ts similarity index 100% rename from argilla-frontend/vue-shim.d.ts rename to extralit-frontend/vue-shim.d.ts diff --git a/extralit/docs/admin_guide/k8s_deployment.md b/extralit/docs/admin_guide/k8s_deployment.md index 22d9230b9..608710817 100644 --- a/extralit/docs/admin_guide/k8s_deployment.md +++ b/extralit/docs/admin_guide/k8s_deployment.md @@ -119,7 +119,7 @@ extralit_server database users migrate Set up and run frontend: ```bash - cd argilla-frontend + cd extralit-frontend npm install API_BASE_URL=http://path.to.server npm run dev ``` diff --git a/extralit/docs/admin_guide/upgrading.md b/extralit/docs/admin_guide/upgrading.md index 451bc4d3d..1bbc4014f 100644 --- a/extralit/docs/admin_guide/upgrading.md +++ b/extralit/docs/admin_guide/upgrading.md @@ -20,17 +20,17 @@ This guide covers the update process for Extralit across different deployment op 2. Rebuild the package, which contains the Argilla server and web interface - First, build the `argilla-frontend` code + First, build the `extralit-frontend` code ```bash - npm install --prefix argilla-frontend - npm run build --prefix argilla-frontend + npm install --prefix extralit-frontend + npm run build --prefix extralit-frontend ``` - Finally, build the wheel containing the built argilla-frontend/dist + Finally, build the wheel containing the built extralit-frontend/dist ```bash - cp -r argilla-frontend/dist extralit-server/src/extralit_server/static + cp -r extralit-frontend/dist extralit-server/src/extralit_server/static rm -rf extralit-server/dist && python -m build -s extralit-server/ ``` diff --git a/extralit/docs/community/adding_language.md b/extralit/docs/community/adding_language.md index 7c634dd82..16f1aa48e 100644 --- a/extralit/docs/community/adding_language.md +++ b/extralit/docs/community/adding_language.md @@ -2,7 +2,7 @@ If you want to add a new language to Argilla you need to go to two places: -1. Add a new translation specification in the folder: `argilla-frontend/translation` E.g. for Korean with Code `ko` add a `ko.js` file by coping the `en.js` file. The text values need to be translated: +1. Add a new translation specification in the folder: `extralit-frontend/translation` E.g. for Korean with Code `ko` add a `ko.js` file by coping the `en.js` file. The text values need to be translated: ```javascript export default { multi_label_selection: "다중 라벨", @@ -12,7 +12,7 @@ export default { text: "텍스트", ... ``` -2. Then update the i18n Nuxt: `argilla-frontend/nuxt.config.ts` +2. Then update the i18n Nuxt: `extralit-frontend/nuxt.config.ts` ```javascript i18n: { @@ -32,9 +32,9 @@ export default { ### How to test it 1. Start a local instance of Argilla, easiest by just using the docker recipe [here](../getting_started/how-to-deploy-argilla-with-docker.md). It will give you a backend API for the frontend. -2. Compile a new version of the frontend. Check [this guide](https://github.com/extralit/extralit/tree/develop/argilla-frontend). This is basically: +2. Compile a new version of the frontend. Check [this guide](https://github.com/extralit/extralit/tree/develop/extralit-frontend). This is basically: - `git clone https://github.com/extralit/extralit` - - `cd argilla-frontend` + - `cd extralit-frontend` - Install the dependencies: `npm i` - Build the new frontend with the updates: `npm run build` - Serve the UI via `npm run start`. You can reach it under localhost:3000 by default. diff --git a/extralit/docs/community/developer.md b/extralit/docs/community/developer.md index b17e03cd1..5fc396ad8 100644 --- a/extralit/docs/community/developer.md +++ b/extralit/docs/community/developer.md @@ -48,7 +48,7 @@ The Extralit repository has a monorepo structure, which means that all the compo - [`extralit/docs/`](https://github.com/extralit/extralit/tree/develop/extralit/docs): The documentation project - [`extralit/src/extralit/`](https://github.com/extralit/extralit/tree/develop/argilla): The argilla SDK project - [`extralit-server/src/extralit_server/`](https://github.com/extralit/extralit/tree/develop/extralit-server): The FastAPI server project for annotation -- [`argilla-frontend/`](https://github.com/extralit/extralit/tree/develop/argilla-frontend): The Vue.js UI project +- [`extralit-frontend/`](https://github.com/extralit/extralit/tree/develop/extralit-frontend): The Vue.js UI project - [`examples`](https://github.com/extralit/extralit/tree/develop/examples): Example resources for deployments, scripts and notebooks !!! note "How to contribute?" diff --git a/extralit/docs/getting_started/development_setup.md b/extralit/docs/getting_started/development_setup.md index 80f50bd04..3ed4965f7 100644 --- a/extralit/docs/getting_started/development_setup.md +++ b/extralit/docs/getting_started/development_setup.md @@ -94,7 +94,7 @@ Then, select from three different development environments through devcontainers If ```bash # Navigate to the frontend directory - cd argilla-frontend + cd extralit-frontend # Install dependencies npm install @@ -113,7 +113,7 @@ Then, select from three different development environments through devcontainers ``` - **Frontend Development**: For frontend live-reloading: ```bash - cd argilla/argilla-frontend + cd argilla/extralit-frontend npm install npm run dev ``` @@ -165,7 +165,7 @@ pdm install ### 3. Build the Frontend ```bash -cd argilla-frontend +cd extralit-frontend npm install npm run build @@ -387,7 +387,7 @@ If you encounter issues with the frontend build: ```bash # Clean and rebuild -cd argilla-frontend +cd extralit-frontend rm -rf node_modules npm install npm run build From 3215ce330522466ab73a88291f29108ca478abaf Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 15:23:17 -0700 Subject: [PATCH 20/23] Refactor: Update references from Argilla to Extralit in configuration files and codebase - Removed references to `argilla` in `.dockerignore`, `.pre-commit-config.yaml`, and `docker-compose.yaml`, replacing them with `extralit`. - Updated environment variables and paths in various configuration files to reflect the new naming convention. - Adjusted documentation and comments to ensure consistency with the Extralit branding. - Renamed functions and variables in the CLI and webhooks to align with the new structure. --- .../docker-compose/docker-compose.yml | 2 +- .dockerignore | 1 - .../ISSUE_TEMPLATE/bug-python-deployment.yml | 2 +- .github/ISSUE_TEMPLATE/bug-ui-ux.yml | 2 +- .github/copilot-instructions.md | 14 +- .github/dependabot.yml | 2 +- .github/workflows/README.md | 2 +- .../extralit-server.build-docker-images.yml | 25 - .github/workflows/extralit-server.yml | 4 +- .kiro/specs/papers-library-importer/tasks.md | 4 +- .kiro/steering/structure.md | 4 +- .pre-commit-config.yaml | 6 +- docker-compose.yaml | 2 +- .../docker/nginx/docker-compose.yaml | 2 +- .../docker/traefik/docker-compose.yaml | 14 +- .../document_extraction/setup_workspace.ipynb | 1156 ++++++++--------- extralit-server/src/extralit_server/_app.py | 16 +- .../extralit_server/api/handlers/v1/info.py | 24 +- .../src/extralit_server/api/routes.py | 4 +- .../api/schemas/v1/settings.py | 2 +- .../cli/database/users/create_default.py | 22 +- .../src/extralit_server/cli/rich.py | 6 +- .../src/extralit_server/contexts/hub.py | 12 +- .../src/extralit_server/contexts/info.py | 22 +- .../src/extralit_server/contexts/settings.py | 10 +- .../extralit_server/errors/error_handler.py | 30 +- .../src/extralit_server/logging.py | 23 +- .../authentication/oauth2/_backends.py | 22 +- .../src/extralit_server/settings.py | 4 +- .../src/extralit_server/telemetry/_client.py | 6 +- .../src/extralit_server/webhooks/v1/ping.py | 2 +- .../handlers/v1/webhooks/test_ping_webhook.py | 2 +- .../tests/unit/commons/test_telemetry.py | 2 +- .../oauth2/backends/test_keycloack_backend.py | 34 +- extralit-server/tests/unit/test_logging.py | 25 +- .../webhooks/v1/test_notify_ping_event.py | 2 +- extralit/src/extralit/_helpers/_deploy.py | 4 +- extralit/src/extralit/cli/app.py | 4 +- extralit/src/extralit/cli/callback.py | 4 +- .../src/extralit/cli/datasets/__main__.py | 28 +- extralit/src/extralit/cli/documents/add.py | 10 +- extralit/src/extralit/cli/documents/delete.py | 18 +- .../src/extralit/cli/documents/import_bib.py | 18 +- .../extralit/cli/documents/import_history.py | 16 +- extralit/src/extralit/cli/documents/list.py | 10 +- .../src/extralit/cli/extraction/__main__.py | 20 +- extralit/src/extralit/cli/files/delete.py | 10 +- extralit/src/extralit/cli/files/download.py | 10 +- extralit/src/extralit/cli/files/list.py | 10 +- extralit/src/extralit/cli/files/upload.py | 10 +- extralit/src/extralit/cli/info/__main__.py | 4 +- extralit/src/extralit/cli/login/__main__.py | 16 +- extralit/src/extralit/cli/logout/__main__.py | 6 +- extralit/src/extralit/cli/rich.py | 2 +- extralit/src/extralit/cli/schemas/__main__.py | 24 +- extralit/src/extralit/cli/schemas/download.py | 14 +- extralit/src/extralit/cli/schemas/upload.py | 14 +- .../src/extralit/cli/training/__main__.py | 29 +- extralit/src/extralit/cli/users/__main__.py | 22 +- extralit/src/extralit/cli/whoami/__main__.py | 10 +- .../src/extralit/cli/workspaces/__main__.py | 30 +- extralit/src/extralit/settings/_field.py | 22 +- extralit/src/extralit/webhooks/_helpers.py | 10 +- .../unit/helpers/test_spaces_deployment.py | 26 +- 64 files changed, 939 insertions(+), 974 deletions(-) diff --git a/.devcontainer/docker-compose/docker-compose.yml b/.devcontainer/docker-compose/docker-compose.yml index 7ae4e848e..937b5a8ba 100644 --- a/.devcontainer/docker-compose/docker-compose.yml +++ b/.devcontainer/docker-compose/docker-compose.yml @@ -97,5 +97,5 @@ services: network_mode: host networks: - argilla: + extralit: driver: bridge \ No newline at end of file diff --git a/.dockerignore b/.dockerignore index 961759ed9..f590cef34 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,7 +4,6 @@ # Scripts !docker/scripts/start_extralit_server.sh !docker/scripts/wait-for-it.sh -!docker/scripts/start_quickstart_argilla.sh !docker/scripts/load_data.py # Package dependencies diff --git a/.github/ISSUE_TEMPLATE/bug-python-deployment.yml b/.github/ISSUE_TEMPLATE/bug-python-deployment.yml index 100c0beed..940f138f6 100644 --- a/.github/ISSUE_TEMPLATE/bug-python-deployment.yml +++ b/.github/ISSUE_TEMPLATE/bug-python-deployment.yml @@ -66,7 +66,7 @@ body: attributes: label: Docker Image (optional) description: Which Docker image are you using? - placeholder: e.g. argilla:v1.0.0 + placeholder: e.g. extralit:v1.0.0 - type: dropdown id: python-version diff --git a/.github/ISSUE_TEMPLATE/bug-ui-ux.yml b/.github/ISSUE_TEMPLATE/bug-ui-ux.yml index 74ca009bd..efe3b17c7 100644 --- a/.github/ISSUE_TEMPLATE/bug-ui-ux.yml +++ b/.github/ISSUE_TEMPLATE/bug-ui-ux.yml @@ -94,7 +94,7 @@ body: attributes: label: Docker Image (optional) description: Which Docker image are you using? - placeholder: e.g. argilla:v1.0.0 + placeholder: e.g. extralit:v1.0.0 - type: textarea id: additional diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index dd2baf7f3..c0e396aca 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -22,8 +22,8 @@ When contributing to Extralit, consider these guidelines: Extralit is organized as a monorepo with several main components: - **extralit/**: Python SDK and core extraction functionality -- **extralit-server/** (formerly argilla-server): Backend server implementation -- **extralit-frontend/** (formerly argilla-frontend): Frontend web application +- **extralit-server/**: Backend server implementation +- **extralit-frontend/**: Frontend web application - **examples/**: Sample implementations and deployment configurations ## Core Components @@ -233,7 +233,7 @@ Extralit uses a normalized database approach for storing and presenting extracte - References connect to the publication record and other extraction records 3. **Dataset Configuration** (`extralit/src/extralit/pipeline/export/dataset.py`) - - Defines structure of Argilla datasets to store normalized records + - Defines structure of Extralit datasets to store normalized records - `create_papers_dataset()` configures datasets for document-level records - `create_extraction_dataset()` configures datasets for schema-level records @@ -295,9 +295,9 @@ This section describes how extracted data from documents is structured, stored, - Holds multiple pandas DataFrames keyed by schema name - Contains `SchemaStructure` (`extralit/src/extralit/extraction/models/schema.py`) that defines organization of schemas -### 2. Data Normalization into Argilla Records +### 2. Data Normalization into Extralit Records -Data from `PaperExtraction` is normalized into multiple `ex.Record` objects in Argilla datasets, separating document metadata from specific extractions: +Data from `PaperExtraction` is normalized into multiple `ex.Record` objects in Extralit datasets, separating document metadata from specific extractions: - **Document-Level Record**: (`extralit/src/extralit/pipeline/export/record.py:create_publication_records()`) - Single "publication" record per document @@ -313,12 +313,12 @@ Data from `PaperExtraction` is normalized into multiple `ex.Record` objects in A The frontend presents normalized data as a unified view for annotation: -- **Table Display**: (`argilla-frontend/components/base/base-render-table/useSchemaTableViewModel.ts`) +- **Table Display**: (`extralit-frontend/components/base/base-render-table/useSchemaTableViewModel.ts`) - Manages display and validation of individual tables - Identifies primary keys and reference columns - Configures table grouping based on references -- **Reference Resolution**: (`argilla-frontend/components/base/base-render-table/useReferenceTablesViewModel.ts`) +- **Reference Resolution**: (`extralit-frontend/components/base/base-render-table/useReferenceTablesViewModel.ts`) - Identifies reference columns (`_ref` or `_ID` suffix) - Dynamically fetches related records from other tables - Joins data to create a unified table view for the annotator diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c03549639..1020b3fe4 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -10,6 +10,6 @@ updates: schedule: interval: "weekly" # - package-ecosystem: "npm" # See documentation for possible values -# directory: "/argilla-frontend" # Location of package manifests +# directory: "/extralit-frontend" # Location of package manifests # schedule: # interval: "weekly" diff --git a/.github/workflows/README.md b/.github/workflows/README.md index 82a3ecba5..1970f2191 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -40,7 +40,7 @@ The workflows use multiple caching strategies to improve build performance: 1. **PDM cache**: Through the `setup-pdm` action 2. **UV cache**: Through the `actions/cache` action - - Key format: `{os}-uv-{python-version}-{pdm_hash}` for argilla + - Key format: `{os}-uv-{python-version}-{pdm_hash}` for extralit - Key format: `{os}-uv-server-{pdm_hash}` for extralit-server - Paths cached: `~/.cache/uv`, `~/.cache/pip` diff --git a/.github/workflows/extralit-server.build-docker-images.yml b/.github/workflows/extralit-server.build-docker-images.yml index d9ca8afe0..cd64a3d28 100644 --- a/.github/workflows/extralit-server.build-docker-images.yml +++ b/.github/workflows/extralit-server.build-docker-images.yml @@ -110,31 +110,6 @@ jobs: labels: ${{ steps.meta.outputs.labels }} push: true - # - name: Build and push `argilla-hf-spaces` image - # uses: docker/build-push-action@v5 - # with: - # context: extralit-server/docker/argilla-hf-spaces - # platforms: ${{ env.PLATFORMS }} - # tags: ${{ env.HF_SPACES_DOCKER_IMAGE }}:${{ env.IMAGE_TAG }} - # labels: ${{ steps.meta.outputs.labels }} - # build-args: | - # extralit_server_IMAGE=${{ env.SERVER_DOCKER_IMAGE }} - # EXTRALIT_VERSION=${{ env.IMAGE_TAG }} - # push: true - - # - name: Push latest `argilla-hf-spaces` image - # if: ${{ env.PUBLISH_LATEST == 'true' }} - # uses: docker/build-push-action@v5 - # with: - # context: extralit-server/docker/argilla-hf-spaces - # platforms: ${{ env.PLATFORMS }} - # tags: ${{ env.HF_SPACES_DOCKER_IMAGE }}:latest - # labels: ${{ steps.meta.outputs.labels }} - # build-args: | - # extralit_server_IMAGE=${{ env.SERVER_DOCKER_IMAGE }} - # EXTRALIT_VERSION=${{ env.IMAGE_TAG }} - # push: true - - name: Trigger HF-Space build uses: peter-evans/repository-dispatch@v3 with: diff --git a/.github/workflows/extralit-server.yml b/.github/workflows/extralit-server.yml index 3413050cc..cb2cc0384 100644 --- a/.github/workflows/extralit-server.yml +++ b/.github/workflows/extralit-server.yml @@ -146,7 +146,7 @@ jobs: node-version: 20 - name: Install frontend dependencies - working-directory: argilla-frontend + working-directory: extralit-frontend env: BASE_URL: "@@baseUrl@@" DIST_FOLDER: ./dist @@ -156,7 +156,7 @@ jobs: # End of frontend build section - name: Build package run: | - cp -r ../argilla-frontend/dist src/extralit_server/static + cp -r ../extralit-frontend/dist src/extralit_server/static pdm build - name: Upload artifact diff --git a/.kiro/specs/papers-library-importer/tasks.md b/.kiro/specs/papers-library-importer/tasks.md index 0062fc13a..1c6f5690d 100644 --- a/.kiro/specs/papers-library-importer/tasks.md +++ b/.kiro/specs/papers-library-importer/tasks.md @@ -25,7 +25,7 @@ - _Requirements: 2.1, 2.2_ - [x] 2.3 Create CLI import analysis testing function - - Add import() function to extralit/src/argilla/cli/documents/add.py + - Add import() function to extralit/src/extralit/cli/documents/add.py - Parse BibTeX file and match PDF files from folder using Python bibtexparser - Perform filename matching to create the analysis_request - Send ImportAnalysisRequest to extralit-server for testing import analysis functionality @@ -46,7 +46,7 @@ - Reuse existing document upload logic from POST /documents endpoint for each file - Implement job creation and queuing for reference-based document uploads (one job per reference) - Add retry logic and error handling for failed uploads with per-file error tracking - - Update CLI function `import` in `extralit/src/argilla/cli/documents/add.py` to test bulk upload + - Update CLI function `import` in `extralit/src/extralit/cli/documents/add.py` to test bulk upload - _Requirements: 3.1, 3.3, 3.4, 3.7_ - [x] 3.3 Implement ImportHistory database model diff --git a/.kiro/steering/structure.md b/.kiro/steering/structure.md index a9ae6899e..724a8d1b8 100644 --- a/.kiro/steering/structure.md +++ b/.kiro/steering/structure.md @@ -157,7 +157,7 @@ extralit-frontend/ ``` extralit/ ├── src/ -│ ├── argilla/ # Main SDK package +│ ├── extralit/ # Main SDK package │ │ ├── cli/ # CLI commands │ │ └── client/ # API client │ └── extralit/ # Extralit-specific extensions @@ -187,7 +187,7 @@ examples/ ## Development Workflow 1. **Backend changes**: Work in `extralit-server/src/extralit_server/` 2. **Frontend changes**: Work in `extralit-frontend/components/` or `extralit-frontend/pages/` -3. **SDK changes**: Work in `extralit/src/argilla/` or `extralit/src/extralit/` +3. **SDK changes**: Work in `extralit/src/extralit/` 4. **Tests**: Each package has its own `tests/` directory 5. **Documentation**: Use `extralit/docs/` for SDK docs diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2409fd576..fab76ac7f 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -126,7 +126,7 @@ ci: autoupdate_schedule: weekly skip: - helmlint # Disabling helmlint on CI by now because helm dependency is not available - - frontend-eslint # Requires npm dependencies to be installed in argilla-frontend - - frontend-prettier # Requires npm dependencies to be installed in argilla-frontend - - frontend-lint # Requires npm dependencies to be installed in argilla-frontend + - frontend-eslint # Requires npm dependencies to be installed in extralit-frontend + - frontend-prettier # Requires npm dependencies to be installed in extralit-frontend + - frontend-lint # Requires npm dependencies to be installed in extralit-frontend submodules: false diff --git a/docker-compose.yaml b/docker-compose.yaml index 76b0b0b11..b98d72b68 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -91,7 +91,7 @@ services: soft: -1 hard: -1 networks: - - argilla + - extralit ports: - "9200:9200" - "9300:9300" diff --git a/examples/deployments/docker/nginx/docker-compose.yaml b/examples/deployments/docker/nginx/docker-compose.yaml index f859ec54f..60aadab38 100644 --- a/examples/deployments/docker/nginx/docker-compose.yaml +++ b/examples/deployments/docker/nginx/docker-compose.yaml @@ -9,7 +9,7 @@ services: volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - argilla: + extralit: image: extralitdev/extralit-hf-space:latest environment: HF_HUB_DISABLE_TELEMETRY: 1 diff --git a/examples/deployments/docker/traefik/docker-compose.yaml b/examples/deployments/docker/traefik/docker-compose.yaml index e59b39686..a128fe630 100644 --- a/examples/deployments/docker/traefik/docker-compose.yaml +++ b/examples/deployments/docker/traefik/docker-compose.yaml @@ -16,7 +16,7 @@ services: volumes: - "/var/run/docker.sock:/var/run/docker.sock:ro" - argilla: + extralit: image: extralitdev/extralit-hf-space:latest environment: HF_HUB_DISABLE_TELEMETRY: 1 @@ -26,9 +26,9 @@ services: API_KEY: extralit.apikey labels: - "traefik.enable=true" - - "traefik.http.routers.argilla.rule=PathPrefix(`/extralit/`)" - - "traefik.http.routers.argilla.entrypoints=web" - - "traefik.http.services.argilla.loadbalancer.server.port=6900" - - "traefik.http.middlewares.argilla-stripprefix.stripprefix.prefixes=/extralit" - - "traefik.http.middlewares.argilla-stripprefix.stripprefix.forceSlash=false" - - "traefik.http.routers.argilla.middlewares=argilla-stripprefix" + - "traefik.http.routers.extralit.rule=PathPrefix(`/extralit/`)" + - "traefik.http.routers.extralit.entrypoints=web" + - "traefik.http.services.extralit.loadbalancer.server.port=6900" + - "traefik.http.middlewares.extralit-stripprefix.stripprefix.prefixes=/extralit" + - "traefik.http.middlewares.extralit-stripprefix.stripprefix.forceSlash=false" + - "traefik.http.routers.extralit.middlewares=extralit-stripprefix" diff --git a/examples/document_extraction/setup_workspace.ipynb b/examples/document_extraction/setup_workspace.ipynb index fe7159e40..537b83aa5 100644 --- a/examples/document_extraction/setup_workspace.ipynb +++ b/examples/document_extraction/setup_workspace.ipynb @@ -1,580 +1,580 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "f9d7358b", - "metadata": {}, - "source": [ - "# Setting Up Workspaces in Argilla\n", - "\n", - "In this tutorial, we will learn how to set up and manage workspaces in Argilla using the default credentials on a fresh installation. It will walk you through the following steps:\n", - "\n", - "1. Connecting to Argilla with default credentials 🔑\n", - "2. Creating your first workspace 🏗️\n", - "3. Listing available workspaces 📋\n", - "4. Adding PDF documents to the workspace 📄\n", - "5. Creating and uploading a schema 📊\n", - "6. Running PDF preprocessing 🔍\n", - "7. Running LLM extractions 🤖\n", - "\n", - "![Argilla Workspace Management](https://raw.githubusercontent.com/argilla-io/argilla/main/docs/assets/argilla_workspace_management.png)\n", - "\n", - "## Introduction\n", - "\n", - "A **workspace** is a space inside your Argilla instance where authorized users can collaborate on datasets. Workspaces are accessible through both the Python SDK and the UI. When you first install Argilla, you'll need to create workspaces to organize your data and user access.\n", - "\n", - "For more details on workspace management, refer to the [Argilla documentation](https://docs.extralit.ai/latest/admin_guide/workspace/).\n", - "\n", - "Let's get started!\n" - ] - }, - { - "cell_type": "markdown", - "id": "5601c172", - "metadata": {}, - "source": [ - "## 1. Connecting to Argilla\n", - "\n", - "First, we need to import the Argilla library and connect to our instance using the default credentials." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "ce009aae", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] - }, - { - "ename": "ConnectError", - "evalue": "[Errno 61] Connection refused", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:67\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 67\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:256\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_close_connections(closing)\n\u001b[0;32m--> 256\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 258\u001b[0m \u001b[38;5;66;03m# Return the response. Note that in this case we still have to manage\u001b[39;00m\n\u001b[1;32m 259\u001b[0m \u001b[38;5;66;03m# the point at which the response is closed.\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:236\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 235\u001b[0m \u001b[38;5;66;03m# Send the request on the assigned connection.\u001b[39;00m\n\u001b[0;32m--> 236\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 237\u001b[0m \u001b[43m \u001b[49m\u001b[43mpool_request\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\n\u001b[1;32m 238\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 239\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ConnectionNotAvailable:\n\u001b[1;32m 240\u001b[0m \u001b[38;5;66;03m# In some cases a connection may initially be available to\u001b[39;00m\n\u001b[1;32m 241\u001b[0m \u001b[38;5;66;03m# handle a request, but then become unavailable.\u001b[39;00m\n\u001b[1;32m 242\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 243\u001b[0m \u001b[38;5;66;03m# In this case we clear the connection and try again.\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:101\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connect_failed \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 101\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 103\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection\u001b[38;5;241m.\u001b[39mhandle_request(request)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:78\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 78\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_connect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 80\u001b[0m ssl_object \u001b[38;5;241m=\u001b[39m stream\u001b[38;5;241m.\u001b[39mget_extra_info(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mssl_object\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:124\u001b[0m, in \u001b[0;36mHTTPConnection._connect\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m Trace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mconnect_tcp\u001b[39m\u001b[38;5;124m\"\u001b[39m, logger, request, kwargs) \u001b[38;5;28;01mas\u001b[39;00m trace:\n\u001b[0;32m--> 124\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_network_backend\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect_tcp\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 125\u001b[0m trace\u001b[38;5;241m.\u001b[39mreturn_value \u001b[38;5;241m=\u001b[39m stream\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_backends/sync.py:215\u001b[0m, in \u001b[0;36mSyncBackend.connect_tcp\u001b[0;34m(self, host, port, timeout, local_address, socket_options)\u001b[0m\n\u001b[1;32m 214\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(\u001b[38;5;241m*\u001b[39moption) \u001b[38;5;66;03m# pragma: no cover\u001b[39;00m\n\u001b[0;32m--> 215\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(socket\u001b[38;5;241m.\u001b[39mIPPROTO_TCP, socket\u001b[38;5;241m.\u001b[39mTCP_NODELAY, \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 216\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m SyncStream(sock)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_exceptions.py:14\u001b[0m, in \u001b[0;36mmap_exceptions\u001b[0;34m(map)\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(exc, from_exc):\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m to_exc(exc) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", - "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpathlib\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Path\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Connect to Argilla using default credentials\u001b[39;00m\n\u001b[0;32m---> 11\u001b[0m client \u001b[38;5;241m=\u001b[39m \u001b[43mrg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mArgilla\u001b[49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mhttp://localhost:6900/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mextralit.apikey\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSuccessfully connected to Argilla at \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclient\u001b[38;5;241m.\u001b[39mapi_url\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/client.py:73\u001b[0m, in \u001b[0;36mArgilla.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 53\u001b[0m api_url: Optional[\u001b[38;5;28mstr\u001b[39m] \u001b[38;5;241m=\u001b[39m DEFAULT_HTTP_CONFIG\u001b[38;5;241m.\u001b[39mapi_url,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mhttp_client_args,\n\u001b[1;32m 58\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 59\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Inits the `Argilla` client.\u001b[39;00m\n\u001b[1;32m 60\u001b[0m \n\u001b[1;32m 61\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;124;03m before raising an exception. Defaults to `5`.\u001b[39;00m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 73\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_url\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_key\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mhttp_client_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_default(\u001b[38;5;28mself\u001b[39m)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:146\u001b[0m, in \u001b[0;36mAPIClient.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mapi \u001b[38;5;241m=\u001b[39m ArgillaAPI(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhttp_client)\n\u001b[1;32m 145\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 146\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_connection\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m UnauthorizedError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ArgillaCredentialsError() \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:160\u001b[0m, in \u001b[0;36mAPIClient._validate_connection\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_validate_connection\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 160\u001b[0m user \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43musers\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_me\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 161\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLogged in as \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39musername\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m with the role \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39mrole\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 162\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog(message\u001b[38;5;241m=\u001b[39mmessage, level\u001b[38;5;241m=\u001b[39mlogging\u001b[38;5;241m.\u001b[39mINFO)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_exceptions/_api.py:91\u001b[0m, in \u001b[0;36mapi_error_handler.._handler_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_handler_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 91\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m HTTPStatusError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 93\u001b[0m _error_switch(status_code\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mstatus_code, error_detail\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mtext)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_users.py:90\u001b[0m, in \u001b[0;36mUsersAPI.get_me\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[38;5;129m@api_error_handler\u001b[39m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget_me\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m UserModel:\n\u001b[0;32m---> 90\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhttp_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/api/v1/me\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 91\u001b[0m response\u001b[38;5;241m.\u001b[39mraise_for_status()\n\u001b[1;32m 92\u001b[0m response_json \u001b[38;5;241m=\u001b[39m response\u001b[38;5;241m.\u001b[39mjson()\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1055\u001b[0m, in \u001b[0;36mClient.get\u001b[0;34m(self, url, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 1038\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget\u001b[39m(\n\u001b[1;32m 1039\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 1040\u001b[0m url: URLTypes,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1048\u001b[0m extensions: typing\u001b[38;5;241m.\u001b[39mOptional[RequestExtensions] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 1049\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Response:\n\u001b[1;32m 1050\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1051\u001b[0m \u001b[38;5;124;03m Send a `GET` request.\u001b[39;00m\n\u001b[1;32m 1052\u001b[0m \n\u001b[1;32m 1053\u001b[0m \u001b[38;5;124;03m **Parameters**: See `httpx.request`.\u001b[39;00m\n\u001b[1;32m 1054\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1055\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1056\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mGET\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1057\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1058\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1059\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1060\u001b[0m \u001b[43m \u001b[49m\u001b[43mcookies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcookies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1061\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1062\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1063\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1064\u001b[0m \u001b[43m \u001b[49m\u001b[43mextensions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextensions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1065\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:828\u001b[0m, in \u001b[0;36mClient.request\u001b[0;34m(self, method, url, content, data, files, json, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 813\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(message, \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m)\n\u001b[1;32m 815\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuild_request(\n\u001b[1;32m 816\u001b[0m method\u001b[38;5;241m=\u001b[39mmethod,\n\u001b[1;32m 817\u001b[0m url\u001b[38;5;241m=\u001b[39murl,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 826\u001b[0m extensions\u001b[38;5;241m=\u001b[39mextensions,\n\u001b[1;32m 827\u001b[0m )\n\u001b[0;32m--> 828\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:915\u001b[0m, in \u001b[0;36mClient.send\u001b[0;34m(self, request, stream, auth, follow_redirects)\u001b[0m\n\u001b[1;32m 907\u001b[0m follow_redirects \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 908\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfollow_redirects\n\u001b[1;32m 909\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(follow_redirects, UseClientDefault)\n\u001b[1;32m 910\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m follow_redirects\n\u001b[1;32m 911\u001b[0m )\n\u001b[1;32m 913\u001b[0m auth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_build_request_auth(request, auth)\n\u001b[0;32m--> 915\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_auth\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 916\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 917\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 918\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 919\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 920\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 921\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 922\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m stream:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:943\u001b[0m, in \u001b[0;36mClient._send_handling_auth\u001b[0;34m(self, request, auth, follow_redirects, history)\u001b[0m\n\u001b[1;32m 940\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mnext\u001b[39m(auth_flow)\n\u001b[1;32m 942\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 943\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_redirects\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhistory\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 948\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 949\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:980\u001b[0m, in \u001b[0;36mClient._send_handling_redirects\u001b[0;34m(self, request, follow_redirects, history)\u001b[0m\n\u001b[1;32m 977\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrequest\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[1;32m 978\u001b[0m hook(request)\n\u001b[0;32m--> 980\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_single_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 982\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresponse\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1016\u001b[0m, in \u001b[0;36mClient._send_single_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 1011\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 1012\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAttempted to send an async request with a sync Client instance.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1013\u001b[0m )\n\u001b[1;32m 1015\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m request_context(request\u001b[38;5;241m=\u001b[39mrequest):\n\u001b[0;32m-> 1016\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mtransport\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1018\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(response\u001b[38;5;241m.\u001b[39mstream, SyncByteStream)\n\u001b[1;32m 1020\u001b[0m response\u001b[38;5;241m.\u001b[39mrequest \u001b[38;5;241m=\u001b[39m request\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 218\u001b[0m req \u001b[38;5;241m=\u001b[39m httpcore\u001b[38;5;241m.\u001b[39mRequest(\n\u001b[1;32m 219\u001b[0m method\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mmethod,\n\u001b[1;32m 220\u001b[0m url\u001b[38;5;241m=\u001b[39mhttpcore\u001b[38;5;241m.\u001b[39mURL(\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 228\u001b[0m extensions\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 229\u001b[0m )\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_pool\u001b[38;5;241m.\u001b[39mhandle_request(req)\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n\u001b[1;32m 235\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m Response(\n\u001b[1;32m 236\u001b[0m status_code\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mstatus,\n\u001b[1;32m 237\u001b[0m headers\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mheaders,\n\u001b[1;32m 238\u001b[0m stream\u001b[38;5;241m=\u001b[39mResponseStream(resp\u001b[38;5;241m.\u001b[39mstream),\n\u001b[1;32m 239\u001b[0m extensions\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 240\u001b[0m )\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 135\u001b[0m value \u001b[38;5;241m=\u001b[39m typ()\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m value\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:84\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n\u001b[1;32m 83\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(exc)\n\u001b[0;32m---> 84\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m mapped_exc(message) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n", - "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused" - ] - } - ], - "source": [ - "import argilla as rg\n", - "import extralit as ex\n", - "import pandas as pd\n", - "import pandera as pa\n", - "from pandera.typing import Index, Series\n", - "import os\n", - "import tempfile\n", - "from pathlib import Path\n", - "\n", - "# Connect to Argilla using default credentials\n", - "client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')\n", - "\n", - "print(f\"Successfully connected to Argilla at {client.api_url}\")" - ] - }, - { - "cell_type": "markdown", - "id": "fcdd3afe", - "metadata": {}, - "source": [ - "## 2. Creating Your First Workspace\n", - "\n", - "After connecting to Argilla, let's create our first workspace. We'll define a new `Workspace` object and call the `create()` method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "64b5f09b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Workspace 'test-workspace' created successfully with ID: df91e2b9-c712-4474-af82-891478f23d40\n" - ] - } - ], - "source": [ - "# Define a new workspace\n", - "workspace_name = \"test_workspace\"\n", - "new_workspace = ex.Workspace(name=workspace_name, client=client)\n", - "\n", - "# Create the workspace\n", - "created_workspace = new_workspace.create()\n", - "\n", - "print(f\"Workspace '{workspace_name}' created successfully with ID: {created_workspace.id}\")" - ] - }, - { - "cell_type": "markdown", - "id": "c937e5c7", - "metadata": {}, - "source": [ - "## 3. Listing Available Workspaces\n", - "\n", - "Now, let's check all the workspaces available in our Argilla instance." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "d4df67d6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total number of workspaces: 1\n", - "\n" - ] - }, - { - "data": { - "text/html": [ - "

Workspaces

nameidupdated_at
test-workspacedf91e2b9-c712-4474-af82-891478f23d402025-04-16T01:27:58.174591
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# List all workspaces\n", - "workspaces = client.workspaces\n", - "\n", - "# Display workspace information\n", - "print(f\"Total number of workspaces: {len(workspaces)}\\n\")\n", - "\n", - "# In a notebook, this will display a table with workspace information\n", - "workspaces" - ] - }, - { - "cell_type": "markdown", - "id": "8ca5b2b8", - "metadata": {}, - "source": [ - "## 4. Adding PDF Documents to the Workspace\n", - "\n", - "Let's add two PDF documents to our workspace. For this tutorial, we'll create temporary PDF files. In a real-world scenario, you'd use actual scientific papers." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "59084a6d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Created reference CSV at /tmp/references.csv\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
referencefile_pathtitleauthorsyear
0smith2023first/tmp/sample1.pdfStudy on Sample DataSmith, J.2023
1johnson2022analysis/tmp/sample2.pdfAnalysis of Experimental ResultsJohnson, A.2022
\n", - "
" - ], - "text/plain": [ - " reference file_path title \\\n", - "0 smith2023first /tmp/sample1.pdf Study on Sample Data \n", - "1 johnson2022analysis /tmp/sample2.pdf Analysis of Experimental Results \n", - "\n", - " authors year \n", - "0 Smith, J. 2023 \n", - "1 Johnson, A. 2022 " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# In a real-world scenario, you would use actual PDFs. Here we'll create temp files\n", - "# Define the paths for our temporary PDF files\n", - "temp_dir = tempfile.gettempdir()\n", - "pdf_file1 = Path(temp_dir) / \"sample1.pdf\"\n", - "pdf_file2 = Path(temp_dir) / \"sample2.pdf\"\n", - "\n", - "# Create empty PDF files - in reality, these would be your actual PDFs\n", - "with open(pdf_file1, \"wb\") as f:\n", - " f.write(b\"%PDF-1.5\\n%Example Document 1\")\n", - " \n", - "with open(pdf_file2, \"wb\") as f:\n", - " f.write(b\"%PDF-1.5\\n%Example Document 2\")\n", - "\n", - "# Create a reference dataframe with metadata for the PDFs\n", - "references_df = pd.DataFrame({\n", - " \"reference\": [\"smith2023first\", \"johnson2022analysis\"],\n", - " \"file_path\": [str(pdf_file1), str(pdf_file2)],\n", - " \"title\": [\"Study on Sample Data\", \"Analysis of Experimental Results\"],\n", - " \"authors\": [\"Smith, J.\", \"Johnson, A.\"],\n", - " \"year\": [2023, 2022]\n", - "})\n", - "\n", - "# Save the dataframe to a temporary CSV file\n", - "references_csv = Path(temp_dir) / \"references.csv\"\n", - "references_df.to_csv(references_csv, index=False)\n", - "\n", - "print(f\"Created reference CSV at {references_csv}\")\n", - "references_df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "abc8562f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Workspace(id=UUID('df91e2b9-c712-4474-af82-891478f23d40') inserted_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) updated_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) name='test-workspace')" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_workspace" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a147c6c2", - "metadata": {}, - "outputs": [], - "source": [ - "# Import the documents into the workspace\n", - "# For demonstration purposes, we'll use the extralit client directly\n", - "# Initialize the extralit client with the same credentials\n", - "extralit_client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')\n", - "\n", - "# Import the documents\n", - "result = extralit_client.import_documents(\n", - " workspace=workspace_name,\n", - " papers=str(references_csv),\n", - " metadatas=[\"title\", \"authors\", \"year\"]\n", - ")\n", - "\n", - "print(f\"Imported {len(result)} documents into workspace '{workspace_name}'\")" - ] - }, - { - "cell_type": "markdown", - "id": "98a2025d", - "metadata": {}, - "source": [ - "## 5. Creating and Uploading a Schema\n", - "\n", - "Now, let's create a simple schema to define the structure of the data we want to extract from our documents." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f15f4b2f", - "metadata": {}, - "outputs": [], - "source": [ - "# Define a simple schema using Pandera\n", - "class Publication(pa.DataFrameModel):\n", - " \"\"\"\n", - " General information about the publication, extracted once per paper.\n", - " \"\"\"\n", - " reference: Index[str] = pa.Field(unique=True, check_name=True)\n", - " title: Series[str] = pa.Field()\n", - " authors: Series[str] = pa.Field()\n", - " publication_year: Series[int] = pa.Field(ge=1900, le=2100)\n", - " doi: Series[str] = pa.Field(nullable=True)\n", - " \n", - " class Config:\n", - " singleton = {'enabled': True} # Indicates this is a document-level schema\n", - "\n", - "# Define a second schema for experimental data\n", - "class ExperimentalData(pa.DataFrameModel):\n", - " \"\"\"\n", - " Experimental data extracted from the paper, may appear multiple times.\n", - " \"\"\"\n", - " experiment_id: Series[str] = pa.Field()\n", - " sample_size: Series[int] = pa.Field(gt=0)\n", - " study_type: Series[str] = pa.Field()\n", - " result_value: Series[float] = pa.Field()\n", - " significance: Series[float] = pa.Field(le=1.0, ge=0.0)\n", - "\n", - "# Create a schema structure object\n", - "from extralit.extraction.models.schema import SchemaStructure\n", - "\n", - "# Save schemas to a temporary JSON file\n", - "schema_file = Path(temp_dir) / \"schemas.json\"\n", - "schema_structure = SchemaStructure(schemas={\"Publication\": Publication, \"ExperimentalData\": ExperimentalData})\n", - "schema_structure.to_json(schema_file)\n", - "\n", - "print(f\"Created schema file at {schema_file}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dc61a1ab", - "metadata": {}, - "outputs": [], - "source": [ - "# Upload the schema to the workspace\n", - "result = extralit_client.upload_schemas(\n", - " workspace=workspace_name,\n", - " schemas=str(schema_file)\n", - ")\n", - "\n", - "print(f\"Uploaded schemas to workspace '{workspace_name}'\")" - ] - }, - { - "cell_type": "markdown", - "id": "7a92c20d", - "metadata": {}, - "source": [ - "## 6. Running PDF Preprocessing\n", - "\n", - "Next, let's run the PDF preprocessing step to extract text and table content from our documents." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "768e7176", - "metadata": {}, - "outputs": [], - "source": [ - "# Run PDF preprocessing\n", - "from extralit.preprocessing.pdf import process_pdfs\n", - "\n", - "# Get the references from our dataframe\n", - "references = references_df[\"reference\"].tolist()\n", - "\n", - "# Run the preprocessing step\n", - "preprocessing_result = process_pdfs(\n", - " workspace=workspace_name,\n", - " references=references,\n", - " text_ocr=[\"default\"], # Using the default text OCR model\n", - " table_ocr=[\"default\"], # Using the default table OCR model\n", - " output_dataset=\"PDF_Preprocessing_Results\"\n", - ")\n", - "\n", - "print(f\"Preprocessing completed for {len(preprocessing_result)} documents\")" - ] - }, - { - "cell_type": "markdown", - "id": "44aa776d", - "metadata": {}, - "source": [ - "## 7. Running LLM Extractions\n", - "\n", - "Finally, let's run the LLM extraction step to extract structured data according to our schema." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "19221abe", - "metadata": {}, - "outputs": [], - "source": [ - "# Run LLM extractions\n", - "from extralit.extraction.llm import extract_data\n", - "\n", - "# Run the extraction step\n", - "extraction_result = extract_data(\n", - " workspace=workspace_name,\n", - " references=references,\n", - " output_dataset=\"Data_Extraction_Results\"\n", - ")\n", - "\n", - "print(f\"LLM extractions completed for {len(extraction_result)} documents\")" - ] - }, - { - "cell_type": "markdown", - "id": "c1b6ec61", - "metadata": {}, - "source": [ - "## 8. Checking Extraction Results\n", - "\n", - "Let's check the results of our extractions by listing the datasets created and viewing the extracted data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4dbb695d", - "metadata": {}, - "outputs": [], - "source": [ - "# List datasets in the workspace\n", - "datasets = extralit_client.list_datasets(workspace=workspace_name)\n", - "print(f\"Datasets in workspace '{workspace_name}':\\n\")\n", - "for dataset in datasets:\n", - " print(f\"- {dataset.name} ({dataset.id})\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6eee019d", - "metadata": {}, - "outputs": [], - "source": [ - "# Export the extracted data\n", - "extracted_data = extralit_client.export_data(\n", - " workspace=workspace_name,\n", - " output=\"temp_output.csv\" # This will save the data to a CSV file\n", - ")\n", - "\n", - "# Display the extracted data\n", - "if isinstance(extracted_data, dict):\n", - " for schema_name, data_df in extracted_data.items():\n", - " print(f\"\\nExtracted data for schema '{schema_name}':\\n\")\n", - " display(data_df)\n", - "else:\n", - " print(\"\\nExtracted data:\")\n", - " display(extracted_data)" - ] - }, - { - "cell_type": "markdown", - "id": "7a30a5ea", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "Congratulations! You've successfully tested the primary functionalities of Extralit with default credentials on a fresh install. You have:\n", - "\n", - "1. Connected to Argilla with default credentials\n", - "2. Created a workspace\n", - "3. Added PDF documents\n", - "4. Created and uploaded a schema\n", - "5. Run PDF preprocessing\n", - "6. Run LLM extractions\n", - "7. Checked the extraction results\n", - "\n", - "This workflow demonstrates the basic process of using Extralit for data extraction from scientific papers. In a real-world scenario, you would upload actual scientific papers and create more complex schemas tailored to your specific data extraction needs.\n", - "\n", - "For more detailed information, refer to the [Extralit documentation](https://docs.extralit.ai/latest/)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.9.19" - } + "cells": [ + { + "cell_type": "markdown", + "id": "f9d7358b", + "metadata": {}, + "source": [ + "# Setting Up Workspaces in Argilla\n", + "\n", + "In this tutorial, we will learn how to set up and manage workspaces in Argilla using the default credentials on a fresh installation. It will walk you through the following steps:\n", + "\n", + "1. Connecting to Argilla with default credentials 🔑\n", + "2. Creating your first workspace 🏗️\n", + "3. Listing available workspaces 📋\n", + "4. Adding PDF documents to the workspace 📄\n", + "5. Creating and uploading a schema 📊\n", + "6. Running PDF preprocessing 🔍\n", + "7. Running LLM extractions 🤖\n", + "\n", + "![Argilla Workspace Management](https://raw.githubusercontent.com/argilla-io/argilla/main/docs/assets/argilla_workspace_management.png)\n", + "\n", + "## Introduction\n", + "\n", + "A **workspace** is a space inside your Argilla instance where authorized users can collaborate on datasets. Workspaces are accessible through both the Python SDK and the UI. When you first install Argilla, you'll need to create workspaces to organize your data and user access.\n", + "\n", + "For more details on workspace management, refer to the [Argilla documentation](https://docs.extralit.ai/latest/admin_guide/workspace/).\n", + "\n", + "Let's get started!\n" + ] + }, + { + "cell_type": "markdown", + "id": "5601c172", + "metadata": {}, + "source": [ + "## 1. Connecting to Argilla\n", + "\n", + "First, we need to import the Argilla library and connect to our instance using the default credentials." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "ce009aae", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] }, - "nbformat": 4, - "nbformat_minor": 5 -} \ No newline at end of file + { + "ename": "ConnectError", + "evalue": "[Errno 61] Connection refused", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:67\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 67\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:256\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_close_connections(closing)\n\u001b[0;32m--> 256\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 258\u001b[0m \u001b[38;5;66;03m# Return the response. Note that in this case we still have to manage\u001b[39;00m\n\u001b[1;32m 259\u001b[0m \u001b[38;5;66;03m# the point at which the response is closed.\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:236\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 235\u001b[0m \u001b[38;5;66;03m# Send the request on the assigned connection.\u001b[39;00m\n\u001b[0;32m--> 236\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 237\u001b[0m \u001b[43m \u001b[49m\u001b[43mpool_request\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\n\u001b[1;32m 238\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 239\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ConnectionNotAvailable:\n\u001b[1;32m 240\u001b[0m \u001b[38;5;66;03m# In some cases a connection may initially be available to\u001b[39;00m\n\u001b[1;32m 241\u001b[0m \u001b[38;5;66;03m# handle a request, but then become unavailable.\u001b[39;00m\n\u001b[1;32m 242\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 243\u001b[0m \u001b[38;5;66;03m# In this case we clear the connection and try again.\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:101\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connect_failed \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 101\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 103\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection\u001b[38;5;241m.\u001b[39mhandle_request(request)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:78\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 78\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_connect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 80\u001b[0m ssl_object \u001b[38;5;241m=\u001b[39m stream\u001b[38;5;241m.\u001b[39mget_extra_info(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mssl_object\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:124\u001b[0m, in \u001b[0;36mHTTPConnection._connect\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m Trace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mconnect_tcp\u001b[39m\u001b[38;5;124m\"\u001b[39m, logger, request, kwargs) \u001b[38;5;28;01mas\u001b[39;00m trace:\n\u001b[0;32m--> 124\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_network_backend\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect_tcp\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 125\u001b[0m trace\u001b[38;5;241m.\u001b[39mreturn_value \u001b[38;5;241m=\u001b[39m stream\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_backends/sync.py:215\u001b[0m, in \u001b[0;36mSyncBackend.connect_tcp\u001b[0;34m(self, host, port, timeout, local_address, socket_options)\u001b[0m\n\u001b[1;32m 214\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(\u001b[38;5;241m*\u001b[39moption) \u001b[38;5;66;03m# pragma: no cover\u001b[39;00m\n\u001b[0;32m--> 215\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(socket\u001b[38;5;241m.\u001b[39mIPPROTO_TCP, socket\u001b[38;5;241m.\u001b[39mTCP_NODELAY, \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 216\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m SyncStream(sock)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_exceptions.py:14\u001b[0m, in \u001b[0;36mmap_exceptions\u001b[0;34m(map)\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(exc, from_exc):\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m to_exc(exc) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", + "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpathlib\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Path\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Connect to Argilla using default credentials\u001b[39;00m\n\u001b[0;32m---> 11\u001b[0m client \u001b[38;5;241m=\u001b[39m \u001b[43mrg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mArgilla\u001b[49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mhttp://localhost:6900/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mextralit.apikey\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSuccessfully connected to Argilla at \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclient\u001b[38;5;241m.\u001b[39mapi_url\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/client.py:73\u001b[0m, in \u001b[0;36mArgilla.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 53\u001b[0m api_url: Optional[\u001b[38;5;28mstr\u001b[39m] \u001b[38;5;241m=\u001b[39m DEFAULT_HTTP_CONFIG\u001b[38;5;241m.\u001b[39mapi_url,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mhttp_client_args,\n\u001b[1;32m 58\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 59\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Inits the `Argilla` client.\u001b[39;00m\n\u001b[1;32m 60\u001b[0m \n\u001b[1;32m 61\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;124;03m before raising an exception. Defaults to `5`.\u001b[39;00m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 73\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_url\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_key\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mhttp_client_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_default(\u001b[38;5;28mself\u001b[39m)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:146\u001b[0m, in \u001b[0;36mAPIClient.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mapi \u001b[38;5;241m=\u001b[39m ArgillaAPI(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhttp_client)\n\u001b[1;32m 145\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 146\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_connection\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m UnauthorizedError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ArgillaCredentialsError() \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:160\u001b[0m, in \u001b[0;36mAPIClient._validate_connection\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_validate_connection\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 160\u001b[0m user \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43musers\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_me\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 161\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLogged in as \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39musername\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m with the role \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39mrole\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 162\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog(message\u001b[38;5;241m=\u001b[39mmessage, level\u001b[38;5;241m=\u001b[39mlogging\u001b[38;5;241m.\u001b[39mINFO)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_exceptions/_api.py:91\u001b[0m, in \u001b[0;36mapi_error_handler.._handler_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_handler_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 91\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m HTTPStatusError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 93\u001b[0m _error_switch(status_code\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mstatus_code, error_detail\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mtext)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_users.py:90\u001b[0m, in \u001b[0;36mUsersAPI.get_me\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[38;5;129m@api_error_handler\u001b[39m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget_me\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m UserModel:\n\u001b[0;32m---> 90\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhttp_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/api/v1/me\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 91\u001b[0m response\u001b[38;5;241m.\u001b[39mraise_for_status()\n\u001b[1;32m 92\u001b[0m response_json \u001b[38;5;241m=\u001b[39m response\u001b[38;5;241m.\u001b[39mjson()\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1055\u001b[0m, in \u001b[0;36mClient.get\u001b[0;34m(self, url, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 1038\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget\u001b[39m(\n\u001b[1;32m 1039\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 1040\u001b[0m url: URLTypes,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1048\u001b[0m extensions: typing\u001b[38;5;241m.\u001b[39mOptional[RequestExtensions] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 1049\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Response:\n\u001b[1;32m 1050\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1051\u001b[0m \u001b[38;5;124;03m Send a `GET` request.\u001b[39;00m\n\u001b[1;32m 1052\u001b[0m \n\u001b[1;32m 1053\u001b[0m \u001b[38;5;124;03m **Parameters**: See `httpx.request`.\u001b[39;00m\n\u001b[1;32m 1054\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1055\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1056\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mGET\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1057\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1058\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1059\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1060\u001b[0m \u001b[43m \u001b[49m\u001b[43mcookies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcookies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1061\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1062\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1063\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1064\u001b[0m \u001b[43m \u001b[49m\u001b[43mextensions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextensions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1065\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:828\u001b[0m, in \u001b[0;36mClient.request\u001b[0;34m(self, method, url, content, data, files, json, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 813\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(message, \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m)\n\u001b[1;32m 815\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuild_request(\n\u001b[1;32m 816\u001b[0m method\u001b[38;5;241m=\u001b[39mmethod,\n\u001b[1;32m 817\u001b[0m url\u001b[38;5;241m=\u001b[39murl,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 826\u001b[0m extensions\u001b[38;5;241m=\u001b[39mextensions,\n\u001b[1;32m 827\u001b[0m )\n\u001b[0;32m--> 828\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:915\u001b[0m, in \u001b[0;36mClient.send\u001b[0;34m(self, request, stream, auth, follow_redirects)\u001b[0m\n\u001b[1;32m 907\u001b[0m follow_redirects \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 908\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfollow_redirects\n\u001b[1;32m 909\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(follow_redirects, UseClientDefault)\n\u001b[1;32m 910\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m follow_redirects\n\u001b[1;32m 911\u001b[0m )\n\u001b[1;32m 913\u001b[0m auth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_build_request_auth(request, auth)\n\u001b[0;32m--> 915\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_auth\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 916\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 917\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 918\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 919\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 920\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 921\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 922\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m stream:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:943\u001b[0m, in \u001b[0;36mClient._send_handling_auth\u001b[0;34m(self, request, auth, follow_redirects, history)\u001b[0m\n\u001b[1;32m 940\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mnext\u001b[39m(auth_flow)\n\u001b[1;32m 942\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 943\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_redirects\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhistory\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 948\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 949\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:980\u001b[0m, in \u001b[0;36mClient._send_handling_redirects\u001b[0;34m(self, request, follow_redirects, history)\u001b[0m\n\u001b[1;32m 977\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrequest\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[1;32m 978\u001b[0m hook(request)\n\u001b[0;32m--> 980\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_single_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 982\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresponse\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1016\u001b[0m, in \u001b[0;36mClient._send_single_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 1011\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 1012\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAttempted to send an async request with a sync Client instance.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1013\u001b[0m )\n\u001b[1;32m 1015\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m request_context(request\u001b[38;5;241m=\u001b[39mrequest):\n\u001b[0;32m-> 1016\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mtransport\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1018\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(response\u001b[38;5;241m.\u001b[39mstream, SyncByteStream)\n\u001b[1;32m 1020\u001b[0m response\u001b[38;5;241m.\u001b[39mrequest \u001b[38;5;241m=\u001b[39m request\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 218\u001b[0m req \u001b[38;5;241m=\u001b[39m httpcore\u001b[38;5;241m.\u001b[39mRequest(\n\u001b[1;32m 219\u001b[0m method\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mmethod,\n\u001b[1;32m 220\u001b[0m url\u001b[38;5;241m=\u001b[39mhttpcore\u001b[38;5;241m.\u001b[39mURL(\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 228\u001b[0m extensions\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 229\u001b[0m )\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_pool\u001b[38;5;241m.\u001b[39mhandle_request(req)\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n\u001b[1;32m 235\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m Response(\n\u001b[1;32m 236\u001b[0m status_code\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mstatus,\n\u001b[1;32m 237\u001b[0m headers\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mheaders,\n\u001b[1;32m 238\u001b[0m stream\u001b[38;5;241m=\u001b[39mResponseStream(resp\u001b[38;5;241m.\u001b[39mstream),\n\u001b[1;32m 239\u001b[0m extensions\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 240\u001b[0m )\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 135\u001b[0m value \u001b[38;5;241m=\u001b[39m typ()\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m value\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:84\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n\u001b[1;32m 83\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(exc)\n\u001b[0;32m---> 84\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m mapped_exc(message) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n", + "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused" + ] + } + ], + "source": [ + "import argilla as rg\n", + "import extralit as ex\n", + "import pandas as pd\n", + "import pandera as pa\n", + "from pandera.typing import Index, Series\n", + "import os\n", + "import tempfile\n", + "from pathlib import Path\n", + "\n", + "# Connect to Argilla using default credentials\n", + "client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')\n", + "\n", + "print(f\"Successfully connected to Argilla at {client.api_url}\")" + ] + }, + { + "cell_type": "markdown", + "id": "fcdd3afe", + "metadata": {}, + "source": [ + "## 2. Creating Your First Workspace\n", + "\n", + "After connecting to Argilla, let's create our first workspace. We'll define a new `Workspace` object and call the `create()` method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "64b5f09b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Workspace 'test-workspace' created successfully with ID: df91e2b9-c712-4474-af82-891478f23d40\n" + ] + } + ], + "source": [ + "# Define a new workspace\n", + "workspace_name = \"test_workspace\"\n", + "new_workspace = ex.Workspace(name=workspace_name, client=client)\n", + "\n", + "# Create the workspace\n", + "created_workspace = new_workspace.create()\n", + "\n", + "print(f\"Workspace '{workspace_name}' created successfully with ID: {created_workspace.id}\")" + ] + }, + { + "cell_type": "markdown", + "id": "c937e5c7", + "metadata": {}, + "source": [ + "## 3. Listing Available Workspaces\n", + "\n", + "Now, let's check all the workspaces available in our Argilla instance." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d4df67d6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total number of workspaces: 1\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "

Workspaces

nameidupdated_at
test-workspacedf91e2b9-c712-4474-af82-891478f23d402025-04-16T01:27:58.174591
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# List all workspaces\n", + "workspaces = client.workspaces\n", + "\n", + "# Display workspace information\n", + "print(f\"Total number of workspaces: {len(workspaces)}\\n\")\n", + "\n", + "# In a notebook, this will display a table with workspace information\n", + "workspaces" + ] + }, + { + "cell_type": "markdown", + "id": "8ca5b2b8", + "metadata": {}, + "source": [ + "## 4. Adding PDF Documents to the Workspace\n", + "\n", + "Let's add two PDF documents to our workspace. For this tutorial, we'll create temporary PDF files. In a real-world scenario, you'd use actual scientific papers." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "59084a6d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created reference CSV at /tmp/references.csv\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
referencefile_pathtitleauthorsyear
0smith2023first/tmp/sample1.pdfStudy on Sample DataSmith, J.2023
1johnson2022analysis/tmp/sample2.pdfAnalysis of Experimental ResultsJohnson, A.2022
\n", + "
" + ], + "text/plain": [ + " reference file_path title \\\n", + "0 smith2023first /tmp/sample1.pdf Study on Sample Data \n", + "1 johnson2022analysis /tmp/sample2.pdf Analysis of Experimental Results \n", + "\n", + " authors year \n", + "0 Smith, J. 2023 \n", + "1 Johnson, A. 2022 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# In a real-world scenario, you would use actual PDFs. Here we'll create temp files\n", + "# Define the paths for our temporary PDF files\n", + "temp_dir = tempfile.gettempdir()\n", + "pdf_file1 = Path(temp_dir) / \"sample1.pdf\"\n", + "pdf_file2 = Path(temp_dir) / \"sample2.pdf\"\n", + "\n", + "# Create empty PDF files - in reality, these would be your actual PDFs\n", + "with open(pdf_file1, \"wb\") as f:\n", + " f.write(b\"%PDF-1.5\\n%Example Document 1\")\n", + " \n", + "with open(pdf_file2, \"wb\") as f:\n", + " f.write(b\"%PDF-1.5\\n%Example Document 2\")\n", + "\n", + "# Create a reference dataframe with metadata for the PDFs\n", + "references_df = pd.DataFrame({\n", + " \"reference\": [\"smith2023first\", \"johnson2022analysis\"],\n", + " \"file_path\": [str(pdf_file1), str(pdf_file2)],\n", + " \"title\": [\"Study on Sample Data\", \"Analysis of Experimental Results\"],\n", + " \"authors\": [\"Smith, J.\", \"Johnson, A.\"],\n", + " \"year\": [2023, 2022]\n", + "})\n", + "\n", + "# Save the dataframe to a temporary CSV file\n", + "references_csv = Path(temp_dir) / \"references.csv\"\n", + "references_df.to_csv(references_csv, index=False)\n", + "\n", + "print(f\"Created reference CSV at {references_csv}\")\n", + "references_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "abc8562f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Workspace(id=UUID('df91e2b9-c712-4474-af82-891478f23d40') inserted_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) updated_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) name='test-workspace')" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_workspace" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a147c6c2", + "metadata": {}, + "outputs": [], + "source": [ + "# Import the documents into the workspace\n", + "# For demonstration purposes, we'll use the extralit client directly\n", + "# Initialize the extralit client with the same credentials\n", + "extralit_client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')\n", + "\n", + "# Import the documents\n", + "result = extralit_client.import_documents(\n", + " workspace=workspace_name,\n", + " papers=str(references_csv),\n", + " metadatas=[\"title\", \"authors\", \"year\"]\n", + ")\n", + "\n", + "print(f\"Imported {len(result)} documents into workspace '{workspace_name}'\")" + ] + }, + { + "cell_type": "markdown", + "id": "98a2025d", + "metadata": {}, + "source": [ + "## 5. Creating and Uploading a Schema\n", + "\n", + "Now, let's create a simple schema to define the structure of the data we want to extract from our documents." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f15f4b2f", + "metadata": {}, + "outputs": [], + "source": [ + "# Define a simple schema using Pandera\n", + "class Publication(pa.DataFrameModel):\n", + " \"\"\"\n", + " General information about the publication, extracted once per paper.\n", + " \"\"\"\n", + " reference: Index[str] = pa.Field(unique=True, check_name=True)\n", + " title: Series[str] = pa.Field()\n", + " authors: Series[str] = pa.Field()\n", + " publication_year: Series[int] = pa.Field(ge=1900, le=2100)\n", + " doi: Series[str] = pa.Field(nullable=True)\n", + " \n", + " class Config:\n", + " singleton = {'enabled': True} # Indicates this is a document-level schema\n", + "\n", + "# Define a second schema for experimental data\n", + "class ExperimentalData(pa.DataFrameModel):\n", + " \"\"\"\n", + " Experimental data extracted from the paper, may appear multiple times.\n", + " \"\"\"\n", + " experiment_id: Series[str] = pa.Field()\n", + " sample_size: Series[int] = pa.Field(gt=0)\n", + " study_type: Series[str] = pa.Field()\n", + " result_value: Series[float] = pa.Field()\n", + " significance: Series[float] = pa.Field(le=1.0, ge=0.0)\n", + "\n", + "# Create a schema structure object\n", + "from extralit.extraction.models.schema import SchemaStructure\n", + "\n", + "# Save schemas to a temporary JSON file\n", + "schema_file = Path(temp_dir) / \"schemas.json\"\n", + "schema_structure = SchemaStructure(schemas={\"Publication\": Publication, \"ExperimentalData\": ExperimentalData})\n", + "schema_structure.to_json(schema_file)\n", + "\n", + "print(f\"Created schema file at {schema_file}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dc61a1ab", + "metadata": {}, + "outputs": [], + "source": [ + "# Upload the schema to the workspace\n", + "result = extralit_client.upload_schemas(\n", + " workspace=workspace_name,\n", + " schemas=str(schema_file)\n", + ")\n", + "\n", + "print(f\"Uploaded schemas to workspace '{workspace_name}'\")" + ] + }, + { + "cell_type": "markdown", + "id": "7a92c20d", + "metadata": {}, + "source": [ + "## 6. Running PDF Preprocessing\n", + "\n", + "Next, let's run the PDF preprocessing step to extract text and table content from our documents." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "768e7176", + "metadata": {}, + "outputs": [], + "source": [ + "# Run PDF preprocessing\n", + "from extralit.preprocessing.pdf import process_pdfs\n", + "\n", + "# Get the references from our dataframe\n", + "references = references_df[\"reference\"].tolist()\n", + "\n", + "# Run the preprocessing step\n", + "preprocessing_result = process_pdfs(\n", + " workspace=workspace_name,\n", + " references=references,\n", + " text_ocr=[\"default\"], # Using the default text OCR model\n", + " table_ocr=[\"default\"], # Using the default table OCR model\n", + " output_dataset=\"PDF_Preprocessing_Results\"\n", + ")\n", + "\n", + "print(f\"Preprocessing completed for {len(preprocessing_result)} documents\")" + ] + }, + { + "cell_type": "markdown", + "id": "44aa776d", + "metadata": {}, + "source": [ + "## 7. Running LLM Extractions\n", + "\n", + "Finally, let's run the LLM extraction step to extract structured data according to our schema." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19221abe", + "metadata": {}, + "outputs": [], + "source": [ + "# Run LLM extractions\n", + "from extralit.extraction.llm import extract_data\n", + "\n", + "# Run the extraction step\n", + "extraction_result = extract_data(\n", + " workspace=workspace_name,\n", + " references=references,\n", + " output_dataset=\"Data_Extraction_Results\"\n", + ")\n", + "\n", + "print(f\"LLM extractions completed for {len(extraction_result)} documents\")" + ] + }, + { + "cell_type": "markdown", + "id": "c1b6ec61", + "metadata": {}, + "source": [ + "## 8. Checking Extraction Results\n", + "\n", + "Let's check the results of our extractions by listing the datasets created and viewing the extracted data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4dbb695d", + "metadata": {}, + "outputs": [], + "source": [ + "# List datasets in the workspace\n", + "datasets = extralit_client.list_datasets(workspace=workspace_name)\n", + "print(f\"Datasets in workspace '{workspace_name}':\\n\")\n", + "for dataset in datasets:\n", + " print(f\"- {dataset.name} ({dataset.id})\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6eee019d", + "metadata": {}, + "outputs": [], + "source": [ + "# Export the extracted data\n", + "extracted_data = extralit_client.export_data(\n", + " workspace=workspace_name,\n", + " output=\"temp_output.csv\" # This will save the data to a CSV file\n", + ")\n", + "\n", + "# Display the extracted data\n", + "if isinstance(extracted_data, dict):\n", + " for schema_name, data_df in extracted_data.items():\n", + " print(f\"\\nExtracted data for schema '{schema_name}':\\n\")\n", + " display(data_df)\n", + "else:\n", + " print(\"\\nExtracted data:\")\n", + " display(extracted_data)" + ] + }, + { + "cell_type": "markdown", + "id": "7a30a5ea", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Congratulations! You've successfully tested the primary functionalities of Extralit with default credentials on a fresh install. You have:\n", + "\n", + "1. Connected to Argilla with default credentials\n", + "2. Created a workspace\n", + "3. Added PDF documents\n", + "4. Created and uploaded a schema\n", + "5. Run PDF preprocessing\n", + "6. Run LLM extractions\n", + "7. Checked the extraction results\n", + "\n", + "This workflow demonstrates the basic process of using Extralit for data extraction from scientific papers. In a real-world scenario, you would upload actual scientific papers and create more complex schemas tailored to your specific data extraction needs.\n", + "\n", + "For more detailed information, refer to the [Extralit documentation](https://docs.extralit.ai/latest/)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.13" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/extralit-server/src/extralit_server/_app.py b/extralit-server/src/extralit_server/_app.py index 768e68c29..808261060 100644 --- a/extralit-server/src/extralit_server/_app.py +++ b/extralit-server/src/extralit_server/_app.py @@ -36,7 +36,7 @@ from starlette.responses import RedirectResponse, HTMLResponse from extralit_server import helpers -from extralit_server._version import __version__ as argilla_version +from extralit_server._version import __version__ as extralit_version from extralit_server.api.routes import api_v1 from extralit_server.constants import DEFAULT_API_KEY, DEFAULT_PASSWORD, DEFAULT_USERNAME from extralit_server.contexts import accounts @@ -49,7 +49,7 @@ from extralit_server.jobs.queues import REDIS_CONNECTION from extralit_server.telemetry import get_telemetry_client -_LOGGER = logging.getLogger("argilla") +_LOGGER = logging.getLogger("extralit") @contextlib.asynccontextmanager @@ -148,7 +148,7 @@ async def share_your_progress_page( def create_server_app() -> FastAPI: - """Configure the argilla server""" + """Configure the extralit server""" app = FastAPI( title="Extralit", @@ -156,7 +156,7 @@ def create_server_app() -> FastAPI: docs_url=None, redoc_url=None, redirect_slashes=False, - version=str(argilla_version), + version=str(extralit_version), lifespan=app_lifespan, ) @@ -249,7 +249,7 @@ def _create_statics_folder(path_from): This function will replace the variable by the real runtime value found in settings.base_url - This allow us to deploy the argilla server under a custom base url, even when webapp does not + This allow us to deploy the extralit server under a custom base url, even when webapp does not support it. """ @@ -320,7 +320,7 @@ def _user_has_default_credentials(user: User): if default_user and _user_has_default_credentials(default_user): _LOGGER.warning( f"User {DEFAULT_USERNAME!r} with default credentials has been found in the database. " - "If you are using argilla in a production environment this can be a serious security problem. " + "If you are using extralit in a production environment this can be a serious security problem. " f"We recommend that you create a new admin user and then delete the default {DEFAULT_USERNAME!r} one." ) @@ -355,7 +355,7 @@ async def ping_search_engine(): f"Your {settings.search_engine} is not available or not responding.\n" f"Please make sure your {settings.search_engine} instance is launched and correctly running and\n" "you have the necessary access permissions. Once you have verified this, restart " - "the argilla server.\n" + "the extralit server.\n" ) await ping_search_engine() @@ -371,7 +371,7 @@ def ping_redis(): f"Your redis instance at {settings.redis_url} is not available or not responding.\n" "Please make sure your redis instance is launched and correctly running and\n" "you have the necessary access permissions. Once you have verified this, restart " - "the argilla server.\n" + "the extralit server.\n" ) ping_redis() diff --git a/extralit-server/src/extralit_server/api/handlers/v1/info.py b/extralit-server/src/extralit_server/api/handlers/v1/info.py index 504f0e0c9..bc77c3d5c 100644 --- a/extralit-server/src/extralit_server/api/handlers/v1/info.py +++ b/extralit-server/src/extralit_server/api/handlers/v1/info.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from fastapi import APIRouter, Depends @@ -23,13 +23,13 @@ @router.get("/version", response_model=Version) async def get_version(): - return Version(version=info.argilla_version()) + return Version(version=info.extralit_version()) @router.get("/status", response_model=Status) async def get_status(search_engine: SearchEngine = Depends(get_search_engine)): return Status( - version=info.argilla_version(), + version=info.extralit_version(), search_engine=await search_engine.info(), memory=info.memory_status(), ) diff --git a/extralit-server/src/extralit_server/api/routes.py b/extralit-server/src/extralit_server/api/routes.py index 471cc7c63..428ede4ee 100644 --- a/extralit-server/src/extralit_server/api/routes.py +++ b/extralit-server/src/extralit_server/api/routes.py @@ -19,7 +19,7 @@ from fastapi import FastAPI -from extralit_server._version import __version__ as argilla_version +from extralit_server._version import __version__ as extralit_version from extralit_server.api.errors.v1.exception_handlers import add_exception_handlers as add_exception_handlers_v1 from extralit_server.api.handlers.v1 import authentication as authentication_v1 from extralit_server.api.handlers.v1 import ( @@ -83,7 +83,7 @@ def create_api_v1(): api_v1 = FastAPI( title="Argilla v1", description="Argilla Server API v1", - version=str(argilla_version), + version=str(extralit_version), responses={error.HTTP_STATUS: error.api_documentation() for error in __ALL__}, ) # Now, we can control the error responses for the API v1. diff --git a/extralit-server/src/extralit_server/api/schemas/v1/settings.py b/extralit-server/src/extralit_server/api/schemas/v1/settings.py index d8fe73413..a6a73249f 100644 --- a/extralit-server/src/extralit_server/api/schemas/v1/settings.py +++ b/extralit-server/src/extralit_server/api/schemas/v1/settings.py @@ -35,5 +35,5 @@ class ExtralitSettings(BaseModel): class Settings(BaseModel): - argilla: ExtralitSettings + extralit: ExtralitSettings huggingface: Optional[HuggingfaceSettings] = None diff --git a/extralit-server/src/extralit_server/cli/database/users/create_default.py b/extralit-server/src/extralit_server/cli/database/users/create_default.py index 478787fc1..3a50296fb 100644 --- a/extralit-server/src/extralit_server/cli/database/users/create_default.py +++ b/extralit-server/src/extralit_server/cli/database/users/create_default.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import asyncio import typer @@ -24,7 +24,7 @@ async def _create_default(api_key: str, password: str, quiet: bool): - """Creates a user with default credentials on database suitable to start experimenting with argilla.""" + """Creates a user with default credentials on database suitable to start experimenting with extralit.""" async with AsyncSessionLocal() as session: if await accounts.get_user_by_username(session, DEFAULT_USERNAME): if not quiet: diff --git a/extralit-server/src/extralit_server/cli/rich.py b/extralit-server/src/extralit_server/cli/rich.py index 9f208059a..ab3df8361 100644 --- a/extralit-server/src/extralit_server/cli/rich.py +++ b/extralit-server/src/extralit_server/cli/rich.py @@ -21,11 +21,11 @@ _EXTRALIT_BORDER_STYLE = "red" -def get_argilla_themed_table(title: str, **kwargs: Any) -> Table: +def get_themed_table(title: str, **kwargs: Any) -> Table: return Table(title=title, border_style=_EXTRALIT_BORDER_STYLE, **kwargs) -def get_argilla_themed_panel(renderable: RenderableType, title: str, success: bool = True, **kwargs: Any) -> Panel: +def get_themed_panel(renderable: RenderableType, title: str, success: bool = True, **kwargs: Any) -> Panel: if success: title = f"[green]{title}" @@ -33,4 +33,4 @@ def get_argilla_themed_panel(renderable: RenderableType, title: str, success: bo def echo_in_panel(renderable: RenderableType, title: str, success: bool = True, **kwargs: Any) -> None: - Console().print(get_argilla_themed_panel(renderable, title, success, **kwargs)) + Console().print(get_themed_panel(renderable, title, success, **kwargs)) diff --git a/extralit-server/src/extralit_server/contexts/hub.py b/extralit-server/src/extralit_server/contexts/hub.py index 95d7f4848..e1e44637a 100644 --- a/extralit-server/src/extralit_server/contexts/hub.py +++ b/extralit-server/src/extralit_server/contexts/hub.py @@ -412,12 +412,12 @@ def _push_extra_files_to_hub(self, repo_id: str, token: str) -> None: hf_api = HfApi(token=token) with TemporaryDirectory() as temporary_directory: - argilla_directory = os.path.join(temporary_directory, ".extralit") - os.makedirs(argilla_directory) + extralit_directory = os.path.join(temporary_directory, ".extralit") + os.makedirs(extralit_directory) - self._create_version_file(argilla_directory) - self._create_dataset_file(argilla_directory) - self._create_settings_file(argilla_directory) + self._create_version_file(extralit_directory) + self._create_dataset_file(extralit_directory) + self._create_settings_file(extralit_directory) self._create_readme_file(temporary_directory, repo_id) hf_api.upload_folder( @@ -428,7 +428,7 @@ def _push_extra_files_to_hub(self, repo_id: str, token: str) -> None: def _create_version_file(self, directory: str) -> None: with open(os.path.join(directory, "version.json"), "w") as file: - file.write(json.dumps({"argilla": info.argilla_version()}, indent=2)) + file.write(json.dumps({"argilla": info.extralit_version()}, indent=2)) def _create_dataset_file(self, directory: str) -> None: with open(os.path.join(directory, "dataset.json"), "w") as file: diff --git a/extralit-server/src/extralit_server/contexts/info.py b/extralit-server/src/extralit_server/contexts/info.py index 2b50b5842..de7a6d319 100644 --- a/extralit-server/src/extralit_server/contexts/info.py +++ b/extralit-server/src/extralit_server/contexts/info.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os @@ -19,7 +19,7 @@ from extralit_server._version import __version__ -def argilla_version() -> str: +def extralit_version() -> str: return __version__ diff --git a/extralit-server/src/extralit_server/contexts/settings.py b/extralit-server/src/extralit_server/contexts/settings.py index 5fb16ed00..7f74eed59 100644 --- a/extralit-server/src/extralit_server/contexts/settings.py +++ b/extralit-server/src/extralit_server/contexts/settings.py @@ -21,20 +21,20 @@ def get_settings() -> Settings: return Settings( - argilla=_get_argilla_settings(), + extralit=_get_extralit_settings(), huggingface=_get_huggingface_settings(), ) -def _get_argilla_settings() -> ExtralitSettings: - argilla_settings = ExtralitSettings(share_your_progress_enabled=settings.enable_share_your_progress) +def _get_extralit_settings() -> ExtralitSettings: + extralit_settings = ExtralitSettings(share_your_progress_enabled=settings.enable_share_your_progress) if _get_huggingface_settings(): - argilla_settings.show_huggingface_space_persistent_storage_warning = ( + extralit_settings.show_huggingface_space_persistent_storage_warning = ( settings.show_huggingface_space_persistent_storage_warning ) - return argilla_settings + return extralit_settings def _get_huggingface_settings() -> Union[HuggingfaceSettings, None]: diff --git a/extralit-server/src/extralit_server/errors/error_handler.py b/extralit-server/src/extralit_server/errors/error_handler.py index dae3f6e7d..3234b7b3e 100644 --- a/extralit-server/src/extralit_server/errors/error_handler.py +++ b/extralit-server/src/extralit_server/errors/error_handler.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import logging from typing import Any, Dict @@ -74,10 +74,10 @@ class APIErrorHandler: @classmethod async def common_exception_handler(cls, request: Request, error: Exception): """Wraps errors as custom generic error""" - argilla_error = cls._exception_to_argilla_error(error) - set_request_error(request, argilla_error) + extralit_error = cls._exception_to_extralit_error(error) + set_request_error(request, extralit_error) - return await http_exception_handler(request, ServerHTTPException(argilla_error)) + return await http_exception_handler(request, ServerHTTPException(extralit_error)) @classmethod def configure_app(cls, app: FastAPI): @@ -100,7 +100,7 @@ def configure_app(cls, app: FastAPI): app.add_exception_handler(exception_type, APIErrorHandler.common_exception_handler) @classmethod - def _exception_to_argilla_error(cls, error: Exception) -> ServerError: + def _exception_to_extralit_error(cls, error: Exception) -> ServerError: if isinstance(error, ServerError): return error @@ -115,4 +115,4 @@ def _exception_to_argilla_error(cls, error: Exception) -> ServerError: return GenericServerError(error=error) -_LOGGER = logging.getLogger("argilla") +_LOGGER = logging.getLogger("extralit") diff --git a/extralit-server/src/extralit_server/logging.py b/extralit-server/src/extralit_server/logging.py index 4984b970c..edb12d865 100644 --- a/extralit-server/src/extralit_server/logging.py +++ b/extralit-server/src/extralit_server/logging.py @@ -1,17 +1,16 @@ -# coding=utf-8 -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. """ This module centralizes all configuration and logging management @@ -63,7 +62,7 @@ def logger(self) -> logging.Logger: def configure_logging(): - """Normalizes logging configuration for argilla and its dependencies""" + """Normalizes logging configuration for extralit and its dependencies""" handler = ArgillaHandler() # See the note here: https://docs.python.org/3/library/logging.html#logging.Logger.propagate diff --git a/extralit-server/src/extralit_server/security/authentication/oauth2/_backends.py b/extralit-server/src/extralit_server/security/authentication/oauth2/_backends.py index 750e676c8..3706ce016 100644 --- a/extralit-server/src/extralit_server/security/authentication/oauth2/_backends.py +++ b/extralit-server/src/extralit_server/security/authentication/oauth2/_backends.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os from typing import Type, Dict, Any, Optional, List @@ -92,7 +92,7 @@ def _extract_available_workspaces(self, response: Dict[str, Any]) -> List[str]: workspaces = [] for role in roles: - if role.startswith("argilla_workspace:"): + if role.startswith("extralit_workspace:"): workspace = role.split(":")[1] workspaces.append(workspace) diff --git a/extralit-server/src/extralit_server/settings.py b/extralit-server/src/extralit_server/settings.py index 7442c0def..5baa562ef 100644 --- a/extralit-server/src/extralit_server/settings.py +++ b/extralit-server/src/extralit_server/settings.py @@ -79,7 +79,7 @@ class Settings(BaseSettings): home_path: Optional[str] = Field( None, validate_default=True, - description="The home path where argilla related files will be stored", + description="The home path where extralit related files will be stored", ) base_url: Optional[str] = Field( None, @@ -90,7 +90,7 @@ class Settings(BaseSettings): database_url: Optional[str] = Field( None, validate_default=True, - description="The database url that argilla will use as data store", + description="The database url that extralit will use as data store", ) # https://docs.sqlalchemy.org/en/20/core/engines.html#sqlalchemy.create_engine.params.pool_size database_postgresql_pool_size: Optional[int] = Field( diff --git a/extralit-server/src/extralit_server/telemetry/_client.py b/extralit-server/src/extralit_server/telemetry/_client.py index b983e0aaa..30ff07a1e 100644 --- a/extralit-server/src/extralit_server/telemetry/_client.py +++ b/extralit-server/src/extralit_server/telemetry/_client.py @@ -58,7 +58,7 @@ def __post_init__(self): def track_data(self, topic: str, data: Optional[dict] = None): library_name = "extralit-server" - topic = f"argilla/server/{topic}" + topic = f"extralit/server/{topic}" user_agent = {**(data or {}), **self._system_info} send_telemetry(topic=topic, library_name=library_name, library_version=__version__, user_agent=user_agent) @@ -96,8 +96,8 @@ async def track_api_request(self, request: Request, response: Response) -> None: data["user.role"] = user.role if response.status_code >= 400: - if argilla_error := get_request_error(request=request): - data["response.error_code"] = argilla_error.code # noqa + if extralit_error := get_request_error(request=request): + data["response.error_code"] = extralit_error.code # noqa self.track_data(topic="endpoints", data=data) diff --git a/extralit-server/src/extralit_server/webhooks/v1/ping.py b/extralit-server/src/extralit_server/webhooks/v1/ping.py index ab14facfe..74abb4c1f 100644 --- a/extralit-server/src/extralit_server/webhooks/v1/ping.py +++ b/extralit-server/src/extralit_server/webhooks/v1/ping.py @@ -28,6 +28,6 @@ def notify_ping_event(webhook: Webhook) -> httpx.Response: timestamp=datetime.utcnow(), data={ "agent": "extralit-server", - "version": info.argilla_version(), + "version": info.extralit_version(), }, ) diff --git a/extralit-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py b/extralit-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py index ee17f394f..54dfeaf3e 100644 --- a/extralit-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py +++ b/extralit-server/tests/unit/api/handlers/v1/webhooks/test_ping_webhook.py @@ -52,7 +52,7 @@ async def test_ping_webhook(self, async_client: AsyncClient, owner_auth_header: "timestamp": timestamp, "data": { "agent": "extralit-server", - "version": info.argilla_version(), + "version": info.extralit_version(), }, } diff --git a/extralit-server/tests/unit/commons/test_telemetry.py b/extralit-server/tests/unit/commons/test_telemetry.py index dc952b511..21ecd995e 100644 --- a/extralit-server/tests/unit/commons/test_telemetry.py +++ b/extralit-server/tests/unit/commons/test_telemetry.py @@ -62,7 +62,7 @@ def test_track_data(self, mocker: MockerFixture): telemetry.track_data("test_topic", {"test": "test"}) mock.assert_called_once_with( - topic="argilla/server/test_topic", + topic="extralit/server/test_topic", library_name="extralit-server", library_version=version, user_agent={"test": "test", **telemetry._system_info}, diff --git a/extralit-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py b/extralit-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py index a9e649394..cb608382f 100644 --- a/extralit-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py +++ b/extralit-server/tests/unit/security/authentication/oauth2/backends/test_keycloack_backend.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from extralit_server.security.authentication.oauth2._backends import KeycloakOpenId, Strategy @@ -49,40 +49,40 @@ def test_get_user_details_without_argilla_role(self): assert "role" not in user_details - def test_get_user_details_with_argilla_workspaces(self): + def test_get_user_details_with_extralit_workspaces(self): backend = KeycloakOpenId(strategy=Strategy()) user_details = backend.get_user_details( { - "realm_access": {"roles": ["role1", "role2", "argilla_workspace:ws1"]}, + "realm_access": {"roles": ["role1", "role2", "extralit_workspace:ws1"]}, } ) assert user_details["available_workspaces"] == ["ws1"] - def test_get_user_details_with_wrong_argilla_workspace_definition(self): + def test_get_user_details_with_wrong_extralit_workspace_definition(self): backend = KeycloakOpenId(strategy=Strategy()) user_details = backend.get_user_details( { - "realm_access": {"roles": ["role1", "role2", "argilla_workspace=ws1"]}, + "realm_access": {"roles": ["role1", "role2", "extralit_workspace=ws1"]}, } ) assert "available_workspaces" not in user_details - def test_get_user_details_with_multiple_argilla_workspaces(self): + def test_get_user_details_with_multiple_extralit_workspaces(self): backend = KeycloakOpenId(strategy=Strategy()) user_details = backend.get_user_details( { - "realm_access": {"roles": ["role1", "role2", "argilla_workspace:ws1", "argilla_workspace:ws2"]}, + "realm_access": {"roles": ["role1", "role2", "extralit_workspace:ws1", "extralit_workspace:ws2"]}, } ) assert user_details["available_workspaces"] == ["ws1", "ws2"] - def test_get_user_details_with_missing_argilla_workspaces(self): + def test_get_user_details_with_missing_extralit_workspaces(self): backend = KeycloakOpenId(strategy=Strategy()) user_details = backend.get_user_details( diff --git a/extralit-server/tests/unit/test_logging.py b/extralit-server/tests/unit/test_logging.py index 6c7d9b50a..79bbe97eb 100644 --- a/extralit-server/tests/unit/test_logging.py +++ b/extralit-server/tests/unit/test_logging.py @@ -1,17 +1,16 @@ -# coding=utf-8 -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import logging import pytest @@ -31,8 +30,6 @@ def f(self): class LoggingForTestChild(LoggingForTest): """class child""" - pass - def test_logging_mixin_without_breaking_constructors(): test = LoggingForTest() @@ -66,4 +63,4 @@ def test_configure_logging_call(): # Ensure that the root logger uses the ArgillaHandler (RichHandler if rich is installed), # whereas the other loggers do not have handlers assert isinstance(logging.getLogger().handlers[0], ArgillaHandler) - assert len(logging.getLogger("argilla").handlers) == 0 + assert len(logging.getLogger("extralit").handlers) == 0 diff --git a/extralit-server/tests/unit/webhooks/v1/test_notify_ping_event.py b/extralit-server/tests/unit/webhooks/v1/test_notify_ping_event.py index cd8cb006e..25779585a 100644 --- a/extralit-server/tests/unit/webhooks/v1/test_notify_ping_event.py +++ b/extralit-server/tests/unit/webhooks/v1/test_notify_ping_event.py @@ -46,6 +46,6 @@ async def test_notify_ping_event(self, respx_mock): "timestamp": timestamp, "data": { "agent": "extralit-server", - "version": info.argilla_version(), + "version": info.extralit_version(), }, } diff --git a/extralit/src/extralit/_helpers/_deploy.py b/extralit/src/extralit/_helpers/_deploy.py index 2ea4214fe..11c11d864 100644 --- a/extralit/src/extralit/_helpers/_deploy.py +++ b/extralit/src/extralit/_helpers/_deploy.py @@ -48,7 +48,7 @@ def deploy_on_spaces( Args: api_key (str): The Argilla API key to be defined for the owner user and creator of the Space. - repo_name (Optional[str]): The ID of the repository where Argilla will be deployed. Defaults to "argilla". + repo_name (Optional[str]): The ID of the repository where Argilla will be deployed. Defaults to "extralit". org_name (Optional[str]): The name of the organization where Argilla will be deployed. Defaults to None. hf_token (Optional[Union[str, None]]): The Hugging Face authentication token. Defaults to None. space_storage (Optional[Union[str, SpaceStorage]]): The persistent storage size for the space. Defaults to None without persistent storage. @@ -75,7 +75,7 @@ def deploy_on_spaces( # Define the api_key for the space secrets = [ {"key": "API_KEY", "value": api_key, "description": "The API key of the owner user."}, - {"key": "WORKSPACE", "value": "argilla", "description": "The workspace of the space."}, + {"key": "WORKSPACE", "value": "extralit", "description": "The workspace of the space."}, ] # check API key length diff --git a/extralit/src/extralit/cli/app.py b/extralit/src/extralit/cli/app.py index 199366526..3169cfc32 100644 --- a/extralit/src/extralit/cli/app.py +++ b/extralit/src/extralit/cli/app.py @@ -40,10 +40,10 @@ @app.error_handler(PermissionError) def handler_permission_error(e: PermissionError) -> None: import sys - from extralit.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_themed_panel from rich.console import Console - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Logged in user doesn't have enough permissions to execute this command", title="Not enough permissions", title_align="left", diff --git a/extralit/src/extralit/cli/callback.py b/extralit/src/extralit/cli/callback.py index 5df722762..7b7f76940 100644 --- a/extralit/src/extralit/cli/callback.py +++ b/extralit/src/extralit/cli/callback.py @@ -21,10 +21,10 @@ def echo_in_panel(text, title=None, title_align="center", success=True): """Echoes a message in a rich panel with Argilla theme.""" - from extralit.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_themed_panel from rich.console import Console - panel = get_argilla_themed_panel( + panel = get_themed_panel( renderable=text, title=title, title_align=title_align, diff --git a/extralit/src/extralit/cli/datasets/__main__.py b/extralit/src/extralit/cli/datasets/__main__.py index 64def1367..6e660aff3 100644 --- a/extralit/src/extralit/cli/datasets/__main__.py +++ b/extralit/src/extralit/cli/datasets/__main__.py @@ -17,7 +17,7 @@ import typer from extralit.cli.callback import init_callback -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel from extralit.cli.rich import print_rich_table from rich.console import Console @@ -41,7 +41,7 @@ def list_datasets( print_rich_table(resources=datasets, title="Datasets") except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to list datasets", title="Unexpected error", title_align="left", @@ -66,14 +66,14 @@ def delete_dataset( dataset = client.datasets(name=name, workspace=workspace) dataset.delete() - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Dataset with name={dataset.name} and workspace={dataset.workspace.name} deleted successfully", title="Dataset deleted", title_align="left", ) Console().print(panel) except RuntimeError as re: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to delete the dataset", title="Unexpected error", title_align="left", @@ -84,7 +84,7 @@ def delete_dataset( Console().print(panel) raise typer.Exit(code=1) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when fetching the dataset", title="Unexpected error", title_align="left", @@ -112,7 +112,7 @@ def push_to_huggingface( try: dataset = client.datasets(name=name, workspace=workspace) except ValueError as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( str(e), title="Dataset not found", title_align="left", @@ -123,7 +123,7 @@ def push_to_huggingface( Console().print(panel) raise typer.Exit(1) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when fetching the dataset", title="Unexpected error", title_align="left", @@ -148,14 +148,14 @@ def push_to_huggingface( name=dataset.name, repo_id=repo_id, private=private, token=token, workspace=dataset.workspace ) - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Dataset successfully pushed to the HuggingFace Hub at https://huggingface.co/{repo_id}", title="Dataset pushed", title_align="left", ) Console().print(panel) except ValueError as ve: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "The dataset has no records to push to the HuggingFace Hub. Make sure to add records before" " pushing it.", title="No records to push", title_align="left", @@ -166,7 +166,7 @@ def push_to_huggingface( Console().print(panel) raise typer.Exit(1) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to push the dataset to the HuggingFace Hub", title="Unexpected error", title_align="left", @@ -220,14 +220,14 @@ def create_dataset( dataset = Dataset(name=name, workspace=workspace, settings=settings, client=client) dataset.create() - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Dataset with name='{name}' successfully created in workspace='{workspace}'.", title="Dataset created", title_align="left", ) Console().print(panel) except ValueError as ve: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Dataset creation failed", title="Dataset creation failed", title_align="left", @@ -238,7 +238,7 @@ def create_dataset( Console().print(panel) raise typer.Exit(code=1) except RuntimeError as re: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to create the dataset", title="Unexpected error", title_align="left", @@ -249,7 +249,7 @@ def create_dataset( Console().print(panel) raise typer.Exit(code=1) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to create the dataset", title="Unexpected error", title_align="left", diff --git a/extralit/src/extralit/cli/documents/add.py b/extralit/src/extralit/cli/documents/add.py index 1641e9f23..9948fe7fe 100644 --- a/extralit/src/extralit/cli/documents/add.py +++ b/extralit/src/extralit/cli/documents/add.py @@ -39,7 +39,7 @@ from rich.progress import Progress, SpinnerColumn, TextColumn from extralit.client import Extralit -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel from extralit.documents import Document @@ -59,7 +59,7 @@ def add_document( # Check that at least one of file_path, url, pmid, or doi is provided if not any([file_path, url, pmid, doi]): - panel = get_argilla_themed_panel( + panel = get_themed_panel( "At least one of --file, --url, --pmid, or --doi must be provided.", title="Missing document information", title_align="left", @@ -75,7 +75,7 @@ def add_document( # Get the workspace workspace_obj = client.workspaces(name=workspace) if not workspace_obj: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace '{workspace}' not found.", title="Workspace not found", title_align="left", @@ -135,7 +135,7 @@ def add_document( progress.update(task, completed=True, description=f"Document added to workspace '{workspace}'") # Print a success message - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Document added to workspace '{workspace}' with ID '{document_id}'.", title="Document added successfully", title_align="left", @@ -144,7 +144,7 @@ def add_document( console.print(panel) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Error adding document: {str(e)}", title="Error", title_align="left", diff --git a/extralit/src/extralit/cli/documents/delete.py b/extralit/src/extralit/cli/documents/delete.py index 9dde68b88..742bfb344 100644 --- a/extralit/src/extralit/cli/documents/delete.py +++ b/extralit/src/extralit/cli/documents/delete.py @@ -21,7 +21,7 @@ from rich.console import Console from extralit.client import Extralit -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel def delete_document( @@ -40,7 +40,7 @@ def delete_document( # Get the workspace workspace_obj = client.workspaces(name=workspace) if not workspace_obj: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace '{workspace}' not found.", title="Workspace not found", title_align="left", @@ -53,7 +53,7 @@ def delete_document( if all: if not documents: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"No documents found in workspace '{workspace}'.", title="No documents", title_align="left", @@ -67,7 +67,7 @@ def delete_document( f"Are you sure you want to delete ALL ({len(documents)}) documents from workspace '{workspace}'?" ) if not confirm: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Bulk document deletion cancelled.", title="Cancelled", title_align="left", @@ -92,7 +92,7 @@ def delete_document( msg += f"\nFailed to delete {len(failed)} document(s):" msg += "\n" + "\n".join(f" - {name}: {err}" for name, err in failed) - panel = get_argilla_themed_panel( + panel = get_themed_panel( msg, title="Bulk document deletion", title_align="left", @@ -111,7 +111,7 @@ def delete_document( document = next((doc for doc in documents if doc.id == document_id), None) if not document: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Document with {'reference ' + reference if reference else 'ID ' + str(document_id)} not found in workspace '{workspace}'.", title="Document not found", title_align="left", @@ -125,7 +125,7 @@ def delete_document( f"Are you sure you want to delete document '{document.file_name}' from workspace '{workspace}'?" ) if not confirm: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Document deletion cancelled.", title="Cancelled", title_align="left", @@ -136,7 +136,7 @@ def delete_document( document.delete() - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Document '{document.file_name}' deleted successfully from workspace '{workspace}'.", title="Document deleted", title_align="left", @@ -145,7 +145,7 @@ def delete_document( console.print(panel) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Error deleting document: {str(e)}", title="Error", title_align="left", diff --git a/extralit/src/extralit/cli/documents/import_bib.py b/extralit/src/extralit/cli/documents/import_bib.py index 08fb78d5c..3f597e791 100644 --- a/extralit/src/extralit/cli/documents/import_bib.py +++ b/extralit/src/extralit/cli/documents/import_bib.py @@ -45,7 +45,7 @@ from extralit.workspaces._resource import Workspace from extralit.client import Extralit -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel def _clean_bibtex_field(value: str) -> str: @@ -305,7 +305,7 @@ def _execute_document_bulk_import( if not documents_to_import: progress.update(task, completed=True, description="No documents to import") - panel = get_argilla_themed_panel( + panel = get_themed_panel( "No documents to add or update.", title="Import Complete", title_align="left", @@ -415,7 +415,7 @@ def _execute_document_bulk_import( # Calculate total files across all references total_files = sum(len(doc.get("associated_files", [])) for doc in bulk_documents) - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Import submitted successfully. {len(job_ids)} references queued for processing with {total_files} total files.", title="Import Execution Complete", title_align="left", @@ -432,7 +432,7 @@ def _execute_document_bulk_import( _handle_cli_exception(console, e) else: progress.update(task, completed=True, description="No files to upload") - panel = get_argilla_themed_panel( + panel = get_themed_panel( "No files found to upload.", title="Import Complete", title_align="left", @@ -542,7 +542,7 @@ def do_store(progress=None, task=None): def _handle_cli_exception(console: Console, e: Exception, debug: bool = False) -> None: """Handle CLI exceptions with consistent error formatting.""" - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Error: {str(e)}", title="Error", title_align="left", @@ -558,7 +558,7 @@ def _validate_workspace_and_folder(client: Extralit, workspace: str, pdf_folder: """Validate workspace exists and PDF folder is accessible.""" workspace_obj = client.workspaces(name=workspace) if not workspace_obj: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace '{workspace}' not found.", title="Workspace not found", title_align="left", @@ -568,7 +568,7 @@ def _validate_workspace_and_folder(client: Extralit, workspace: str, pdf_folder: raise typer.Exit(code=1) if not pdf_folder.exists() or not pdf_folder.is_dir(): - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"PDF folder '{pdf_folder}' does not exist or is not a directory.", title="Invalid PDF Folder", title_align="left", @@ -644,7 +644,7 @@ def import_bib( # Phase 5: Handle dry-run mode if dry_run: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Import analysis completed. Use --dry-run=false to execute the import.", title="Import Analysis Complete", title_align="left", @@ -656,7 +656,7 @@ def import_bib( # Phase 6: Get user confirmation (mirrors frontend confirmation dialog) proceed = _get_user_confirmation_for_import(console, analysis_result) if not proceed: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Bulk upload cancelled by user.", title="Cancelled", title_align="left", diff --git a/extralit/src/extralit/cli/documents/import_history.py b/extralit/src/extralit/cli/documents/import_history.py index 9d66dbbed..911ad28e6 100644 --- a/extralit/src/extralit/cli/documents/import_history.py +++ b/extralit/src/extralit/cli/documents/import_history.py @@ -36,7 +36,7 @@ from rich.table import Table from extralit.client import Extralit -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel def list_import_histories( @@ -63,7 +63,7 @@ def list_import_histories( client = Extralit.from_credentials() workspace_obj = client.workspaces(name=workspace) if not workspace_obj: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace '{workspace}' not found.", title="Workspace not found", title_align="left", @@ -84,7 +84,7 @@ def list_import_histories( _list_import_histories_internal(client, workspace_obj, workspace, console, debug) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Error managing import histories: {str(e)}", title="Error", title_align="left", @@ -122,7 +122,7 @@ def _list_import_histories_internal( # Display results if not histories: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"No import histories found for workspace '{workspace}'.", title="No Import Histories", title_align="left", @@ -156,7 +156,7 @@ def _list_import_histories_internal( console.print(table) - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Found {len(histories)} import history records. Use 'history --export' to download data.", title="Import Histories Listed", title_align="left", @@ -184,7 +184,7 @@ def _export_import_history_internal( if response.status_code == 404: progress.update(task, completed=True, description="Import history not found") - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Import history with ID '{history_id}' not found.", title="Import History Not Found", title_align="left", @@ -211,7 +211,7 @@ def _export_import_history_internal( metadata_csv_path = output_dir / f"{base_filename}_metadata.csv" _export_metadata_to_csv(history["metadata"], metadata_csv_path, console) - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Export completed:\n• Data: {data_csv_path}\n• Metadata: {metadata_csv_path}", title="Export Successful", title_align="left", @@ -236,7 +236,7 @@ def _show_import_history_internal( if response.status_code == 404: progress.update(task, completed=True, description="Import history not found") - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Import history with ID '{history_id}' not found.", title="Import History Not Found", title_align="left", diff --git a/extralit/src/extralit/cli/documents/list.py b/extralit/src/extralit/cli/documents/list.py index 28f72b2bc..edb757252 100644 --- a/extralit/src/extralit/cli/documents/list.py +++ b/extralit/src/extralit/cli/documents/list.py @@ -18,7 +18,7 @@ from rich.console import Console from extralit.client import Extralit -from extralit.cli.rich import get_argilla_themed_panel, print_rich_table +from extralit.cli.rich import get_themed_panel, print_rich_table def list_documents( @@ -32,7 +32,7 @@ def list_documents( workspace_obj = client.workspaces(name=workspace) if not workspace_obj: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace '{workspace}' not found.", title="Workspace not found", title_align="left", @@ -44,7 +44,7 @@ def list_documents( documents = workspace_obj.documents if not documents: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"No documents found in workspace '{workspace}'.", title="No documents found", title_align="left", @@ -55,7 +55,7 @@ def list_documents( print_rich_table(documents, title=f"Documents in workspace '{workspace}'") - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Found {len(documents)} documents in workspace '{workspace}'.", title="Documents listed successfully", title_align="left", @@ -64,7 +64,7 @@ def list_documents( console.print(panel) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Error listing documents: {str(e)}", title="Error", title_align="left", diff --git a/extralit/src/extralit/cli/extraction/__main__.py b/extralit/src/extralit/cli/extraction/__main__.py index 9d5f40921..fa1cf5b87 100644 --- a/extralit/src/extralit/cli/extraction/__main__.py +++ b/extralit/src/extralit/cli/extraction/__main__.py @@ -18,7 +18,7 @@ import typer from extralit.cli.callback import init_callback -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel from rich.console import Console from rich.spinner import Spinner from rich.live import Live @@ -62,7 +62,7 @@ def callback( try: workspace_data = client.workspaces(workspace) except ValueError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace with name={workspace} does not exist.", title="Workspace not found", title_align="left", @@ -79,14 +79,14 @@ def callback( load_dotenv(env_file) - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Loaded environment variables from {env_file}", title="Environment Loaded", title_align="left", ) Console().print(panel) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Failed to load environment variables from {env_file}: {str(e)}", title="Environment Load Failed", title_align="left", @@ -102,7 +102,7 @@ def callback( } except ValueError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace with name={workspace} does not exist.", title="Workspace not found", title_align="left", @@ -112,7 +112,7 @@ def callback( raise typer.Exit(code=1) except Exception: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to initialize extraction.", title="Unexpected error", title_align="left", @@ -145,7 +145,7 @@ def export( workspace = ctx.obj["workspace"] # Display export information - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Starting export of extraction data for workspace '{workspace['name']}'", title="Export Started", title_align="left", @@ -163,7 +163,7 @@ def export( client.export_extraction_data(workspace=workspace["name"], output_path=output_path) # Show completion message - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Extraction data successfully exported to {output_path}\n" f"• Workspace: {workspace['name']}\n", title="Export Complete", title_align="left", @@ -171,7 +171,7 @@ def export( Console().print(panel) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"An unexpected error occurred during data export: {str(e)}", title="Export Failed", title_align="left", @@ -233,7 +233,7 @@ def check_status( Console().print(table) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"An unexpected error occurred when checking extraction status: {str(e)}", title="Status Check Failed", title_align="left", diff --git a/extralit/src/extralit/cli/files/delete.py b/extralit/src/extralit/cli/files/delete.py index a6582589d..349be324b 100644 --- a/extralit/src/extralit/cli/files/delete.py +++ b/extralit/src/extralit/cli/files/delete.py @@ -18,7 +18,7 @@ from rich.console import Console from extralit.client import Extralit -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel def delete_file( @@ -37,7 +37,7 @@ def delete_file( # Get the workspace workspace_obj = client.workspaces(name=workspace) if not workspace_obj: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace '{workspace}' not found.", title="Workspace not found", title_align="left", @@ -52,7 +52,7 @@ def delete_file( f"Are you sure you want to delete file '{remote_path}' from workspace '{workspace}'?" ) if not confirm: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "File deletion cancelled.", title="Cancelled", title_align="left", @@ -65,7 +65,7 @@ def delete_file( workspace_obj.delete_file(remote_path, version_id=version_id) # Print a success message - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"File '{remote_path}' deleted from workspace '{workspace}'.", title="File deleted successfully", title_align="left", @@ -74,7 +74,7 @@ def delete_file( console.print(panel) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Error deleting file: {str(e)}", title="Error", title_align="left", diff --git a/extralit/src/extralit/cli/files/download.py b/extralit/src/extralit/cli/files/download.py index 148b165a4..16b00a24b 100644 --- a/extralit/src/extralit/cli/files/download.py +++ b/extralit/src/extralit/cli/files/download.py @@ -21,7 +21,7 @@ from rich.progress import Progress, SpinnerColumn, TextColumn from extralit.client import Extralit -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel def download_file( @@ -43,7 +43,7 @@ def download_file( # Get the workspace workspace_obj = client.workspaces(name=workspace) if not workspace_obj: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace '{workspace}' not found.", title="Workspace not found", title_align="left", @@ -58,7 +58,7 @@ def download_file( # Check if the output file already exists if output_path.exists() and not overwrite: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Output file '{output_path}' already exists. Use --overwrite to overwrite.", title="File already exists", title_align="left", @@ -85,7 +85,7 @@ def download_file( progress.update(task, completed=True, description=f"Downloaded {remote_path} from {workspace}") # Print a success message - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"File '{remote_path}' downloaded from workspace '{workspace}' to '{output_path}'.", title="File downloaded successfully", title_align="left", @@ -94,7 +94,7 @@ def download_file( console.print(panel) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Error downloading file: {str(e)}", title="Error", title_align="left", diff --git a/extralit/src/extralit/cli/files/list.py b/extralit/src/extralit/cli/files/list.py index 9f947348d..dabc5b5a4 100644 --- a/extralit/src/extralit/cli/files/list.py +++ b/extralit/src/extralit/cli/files/list.py @@ -15,7 +15,7 @@ import typer from extralit.client import Extralit -from extralit.cli.rich import get_argilla_themed_panel, print_rich_table +from extralit.cli.rich import get_themed_panel, print_rich_table def list_files( @@ -34,7 +34,7 @@ def list_files( workspace_obj = client.workspaces(name=workspace) if not workspace_obj: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace '{workspace}' not found.", title="Workspace not found", title_align="left", @@ -48,7 +48,7 @@ def list_files( files.objects = [obj for obj in files.objects if obj.etag is not None] if not files.objects: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"No files found in workspace '{workspace}' at path '{path}'.", title="No files found", title_align="left", @@ -59,7 +59,7 @@ def list_files( print_rich_table(files.objects) - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Found {len(files.objects)} files in workspace '{workspace}'.", title="Files listed successfully", title_align="left", @@ -68,7 +68,7 @@ def list_files( console.print(panel) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Error listing files: {str(e)}", title="Error", title_align="left", diff --git a/extralit/src/extralit/cli/files/upload.py b/extralit/src/extralit/cli/files/upload.py index fe63022ca..f186176bc 100644 --- a/extralit/src/extralit/cli/files/upload.py +++ b/extralit/src/extralit/cli/files/upload.py @@ -20,7 +20,7 @@ from rich.progress import Progress, SpinnerColumn, TextColumn from extralit.client import Extralit -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel def upload_file( @@ -38,7 +38,7 @@ def upload_file( workspace_obj = client.workspaces(name=workspace) if not workspace_obj: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace '{workspace}' not found.", title="Workspace not found", title_align="left", @@ -55,7 +55,7 @@ def upload_file( files = workspace_obj.list_files(remote_path) for file_obj in files.objects: if file_obj.object_name == remote_path: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"File '{remote_path}' already exists in workspace '{workspace}'. Use --overwrite to overwrite.", title="File already exists", title_align="left", @@ -77,7 +77,7 @@ def upload_file( progress.update(task, completed=True, description=f"Uploaded {file_path.name} to {workspace}/{remote_path}") - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"File '{file_path.name}' uploaded to workspace '{workspace}' as '{remote_path}'.", title="File uploaded successfully", title_align="left", @@ -86,7 +86,7 @@ def upload_file( console.print(panel) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Error uploading file: {str(e)}", title="Error", title_align="left", diff --git a/extralit/src/extralit/cli/info/__main__.py b/extralit/src/extralit/cli/info/__main__.py index e7cd5fb9e..8c47593fd 100644 --- a/extralit/src/extralit/cli/info/__main__.py +++ b/extralit/src/extralit/cli/info/__main__.py @@ -15,7 +15,7 @@ import typer from extralit.cli.callback import init_callback -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel from rich.console import Console from rich.markdown import Markdown @@ -32,7 +32,7 @@ def info() -> None: client = init_callback() - panel = get_argilla_themed_panel( + panel = get_themed_panel( Markdown(f"Connected to {client.api_url}\n" f"- **Client version:** {version}\n"), title="Extralit Info", title_align="left", diff --git a/extralit/src/extralit/cli/login/__main__.py b/extralit/src/extralit/cli/login/__main__.py index 72cde9c9f..eae34f87c 100644 --- a/extralit/src/extralit/cli/login/__main__.py +++ b/extralit/src/extralit/cli/login/__main__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -48,7 +48,7 @@ def login( """Login to an Extralit Server by providing API URL and API key credentials.""" import json - from extralit.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_themed_panel from rich.console import Console try: @@ -59,7 +59,7 @@ def login( login_impl(api_url=api_url, api_key=api_key, workspace=workspace, extra_headers=headers) except json.JSONDecodeError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "The provided extra headers are not a valid JSON string.", title="Extra headers error", title_align="left", @@ -68,7 +68,7 @@ def login( Console().print(panel) raise typer.Exit(code=1) except ValueError as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Could not login to the '{api_url}' Extralit server. Please check the provided credentials and try again.", title="Login error", title_align="left", @@ -77,13 +77,11 @@ def login( Console().print(panel) raise typer.Exit(code=1) from e - panel = get_argilla_themed_panel( - f"Logged in successfully to '{api_url}' Extralit server!", - title="Logged in", - title_align="left" + panel = get_themed_panel( + f"Logged in successfully to '{api_url}' Extralit server!", title="Logged in", title_align="left" ) Console().print(panel) if __name__ == "__main__": - app() \ No newline at end of file + app() diff --git a/extralit/src/extralit/cli/logout/__main__.py b/extralit/src/extralit/cli/logout/__main__.py index 8e4a703b0..22f793260 100644 --- a/extralit/src/extralit/cli/logout/__main__.py +++ b/extralit/src/extralit/cli/logout/__main__.py @@ -34,14 +34,14 @@ def remove_credentials(): def logout(force: bool = typer.Option(False, help="Force the logout even if the server cannot be reached")) -> None: """Logout from an Extralit Server by removing stored credentials.""" from extralit.cli.callback import init_callback - from extralit.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_themed_panel from rich.console import Console if not force: try: init_callback() except Exception: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Could not connect to the Extralit Server. Use --force to logout anyway.", title="Connection error", title_align="left", @@ -54,7 +54,7 @@ def logout(force: bool = typer.Option(False, help="Force the logout even if the remove_credentials() # Show success message - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Logged out successfully from Extralit server!", title="Logout", title_align="left", diff --git a/extralit/src/extralit/cli/rich.py b/extralit/src/extralit/cli/rich.py index 8b64fb135..fe97cdc93 100644 --- a/extralit/src/extralit/cli/rich.py +++ b/extralit/src/extralit/cli/rich.py @@ -33,7 +33,7 @@ pass -def get_argilla_themed_panel( +def get_themed_panel( renderable: RenderableType, title: Optional[Union[str, Text]] = None, title_align: str = "center", diff --git a/extralit/src/extralit/cli/schemas/__main__.py b/extralit/src/extralit/cli/schemas/__main__.py index 6409af7e3..1d792ba21 100644 --- a/extralit/src/extralit/cli/schemas/__main__.py +++ b/extralit/src/extralit/cli/schemas/__main__.py @@ -18,7 +18,7 @@ import typer from extralit.cli.callback import init_callback -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel from rich.console import Console if TYPE_CHECKING: @@ -33,7 +33,7 @@ def get_workspace_client(workspace_name: str): workspace_data = client.workspaces(workspace_name) return client, workspace_data except ValueError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace with name={workspace_name} does not exist.", title="Workspace not found", title_align="left", @@ -42,7 +42,7 @@ def get_workspace_client(workspace_name: str): Console().print(panel) raise typer.Exit(code=1) except Exception: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to get the workspace.", title="Unexpected error", title_align="left", @@ -111,7 +111,7 @@ def list_schemas( ), ) -> None: """List available schemas with optional filtering.""" - from extralit.cli.rich import get_argilla_themed_panel, print_rich_table, console_table_to_pandas_df + from extralit.cli.rich import get_themed_panel, print_rich_table, console_table_to_pandas_df from rich.console import Console client, workspace_data = get_workspace_client(workspace) @@ -123,7 +123,7 @@ def list_schemas( console = Console() if not workspace_data: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace '{workspace}' not found.", title="Workspace not found", title_align="left", @@ -138,7 +138,7 @@ def list_schemas( if not workspace_schemas.schemas: message = f"No schemas found in workspace '{workspace_data.name}'" - panel = get_argilla_themed_panel( + panel = get_themed_panel( message, title="No schemas found", title_align="left", @@ -150,7 +150,7 @@ def list_schemas( if not filtered_schemas: message = f"No schemas found in workspace '{workspace_data.name}'" - panel = get_argilla_themed_panel( + panel = get_themed_panel( message, title="No schemas found", title_align="left", @@ -171,7 +171,7 @@ def list_schemas( print_rich_table(filtered_schemas, title=table_title) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when listing schemas", title="List Failed", title_align="left", @@ -196,7 +196,7 @@ def delete_schema( try: schema = client.get_schema(workspace=workspace_data.name, schema_id=schema_id) except ValueError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Schema with ID '{schema_id}' not found in workspace '{workspace_data.name}'", title="Schema not found", title_align="left", @@ -206,7 +206,7 @@ def delete_schema( raise typer.Exit(code=1) if not typer.confirm(f"Are you sure you want to delete schema '{schema.name}' ({schema_id})?"): - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Schema deletion cancelled", title="Operation Cancelled", title_align="left", @@ -216,7 +216,7 @@ def delete_schema( client.delete_schema(workspace=workspace_data.name, schema_id=schema_id) - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Schema '{schema.name}' (ID: {schema_id}) successfully deleted from workspace '{workspace_data.name}'", title="Schema Deleted", title_align="left", @@ -224,7 +224,7 @@ def delete_schema( Console().print(panel) except Exception: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when deleting the schema.", title="Delete Failed", title_align="left", diff --git a/extralit/src/extralit/cli/schemas/download.py b/extralit/src/extralit/cli/schemas/download.py index 6365ee5e0..ffeeb01a0 100644 --- a/extralit/src/extralit/cli/schemas/download.py +++ b/extralit/src/extralit/cli/schemas/download.py @@ -21,7 +21,7 @@ from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn -from extralit.cli.rich import get_argilla_themed_panel, print_rich_table +from extralit.cli.rich import get_themed_panel, print_rich_table def download_schemas( @@ -61,7 +61,7 @@ def download_schemas( workspace = ctx.obj.get("workspace") if not client or not workspace: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Client or workspace not found in context. Make sure to specify the workspace with --workspace.", title="Missing Context", title_align="left", @@ -87,7 +87,7 @@ def download_schemas( progress.update(task, completed=True, description=f"Fetched schemas from workspace '{workspace.name}'") if not schema_structure.schemas: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"No schemas found in workspace '{workspace.name}'.", title="No schemas found", title_align="left", @@ -107,7 +107,7 @@ def download_schemas( schemas = [schema for schema in schemas if schema.name not in exclude] if not schemas: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"No schemas found in workspace '{workspace.name}' after applying filters.", title="No schemas found", title_align="left", @@ -160,7 +160,7 @@ def download_schemas( console.print(f" - [red]{name}[/red]: {reason}") if not downloaded_schemas: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"No schemas were downloaded from workspace '{workspace.name}'.", title="No schemas downloaded", title_align="left", @@ -170,7 +170,7 @@ def download_schemas( return # Show success message - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Successfully downloaded {len(downloaded_schemas)} schema(s) from workspace '{workspace.name}' to '{output_dir}'.", title="Schemas downloaded", title_align="left", @@ -184,7 +184,7 @@ def download_schemas( ) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Error downloading schemas: {str(e)}", title="Error", title_align="left", diff --git a/extralit/src/extralit/cli/schemas/upload.py b/extralit/src/extralit/cli/schemas/upload.py index 5993aeadd..4bda59fbb 100644 --- a/extralit/src/extralit/cli/schemas/upload.py +++ b/extralit/src/extralit/cli/schemas/upload.py @@ -38,7 +38,7 @@ def upload_schemas( help="List of schema names to exclude from the update.", ), ) -> None: - from extralit.cli.rich import get_argilla_themed_panel, print_rich_table + from extralit.cli.rich import get_themed_panel, print_rich_table from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn @@ -50,7 +50,7 @@ def upload_schemas( workspace = ctx.obj.get("workspace") if not client or not workspace: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Client or workspace not found in context. Make sure to specify the workspace with --workspace.", title="Missing Context", title_align="left", @@ -63,7 +63,7 @@ def upload_schemas( schema_files = glob.glob(os.path.join(path, "*.json")) if not schema_files: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"No schema files found in directory '{path}'.", title="No schemas found", title_align="left", @@ -77,7 +77,7 @@ def upload_schemas( schema_files = [f for f in schema_files if os.path.splitext(os.path.basename(f))[0] not in exclude] if not schema_files: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"All schema files in directory '{path}' were excluded.", title="No schemas to upload", title_align="left", @@ -153,7 +153,7 @@ def upload_schemas( console.print(f" - [red]{name}[/red]: {reason}") if not uploaded_schemas: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"No schemas were uploaded to workspace '{workspace.name}'.", title="No schemas uploaded", title_align="left", @@ -163,7 +163,7 @@ def upload_schemas( return # Show success message - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Successfully uploaded {len(uploaded_schemas)} schema(s) to workspace '{workspace.name}'.", title="Schemas uploaded", title_align="left", @@ -176,7 +176,7 @@ def upload_schemas( ) except Exception as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Unable to update schemas in workspace: {str(e)}", title="Unexpected error", title_align="left", diff --git a/extralit/src/extralit/cli/training/__main__.py b/extralit/src/extralit/cli/training/__main__.py index f4068e8ce..0e39ba2a9 100644 --- a/extralit/src/extralit/cli/training/__main__.py +++ b/extralit/src/extralit/cli/training/__main__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,12 +17,13 @@ import typer from extralit.cli.callback import init_callback -from extralit.cli.rich import get_argilla_themed_panel +from extralit.cli.rich import get_themed_panel from rich.console import Console class Framework(str, Enum): """ML frameworks supported for training.""" + SPACY = "spacy" TRANSFORMERS = "transformers" SETFIT = "setfit" @@ -37,9 +38,7 @@ def framework_callback(value: str): try: return Framework(value.lower()) except ValueError: - raise typer.BadParameter( - f"Invalid framework {value}. Choose from {', '.join([f.value for f in Framework])}" - ) + raise typer.BadParameter(f"Invalid framework {value}. Choose from {', '.join([f.value for f in Framework])}") # using callback to ensure it is used as sole command @@ -47,9 +46,7 @@ def framework_callback(value: str): def train( name: str = typer.Option(default=None, help="The name of the dataset to be used for training."), framework: Framework = typer.Option( - default=None, - callback=framework_callback, - help="The framework to be used for training." + default=None, callback=framework_callback, help="The framework to be used for training." ), workspace: str = typer.Option(default=None, help="The workspace to be used for training."), limit: int = typer.Option(default=None, help="The number of record to be used."), @@ -69,7 +66,7 @@ def train( try: config_kwargs = json.loads(update_config_kwargs) except json.JSONDecodeError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "Invalid JSON format for update_config_kwargs.", title="Invalid configuration", title_align="left", @@ -82,7 +79,7 @@ def train( client = init_callback() # Display training configuration - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Starting model training with:\n" f"- Dataset: {name or 'Not specified'} (workspace: {workspace or 'default'})\n" f"- Framework: {framework.value if framework else 'Not specified'}\n" @@ -117,12 +114,12 @@ def train( seed=seed, device=device, output_dir=output_dir, - config_kwargs=config_kwargs + config_kwargs=config_kwargs, ) # Display training results metrics_str = "\n".join([f"- {k}: {v}" for k, v in result.get("metrics", {}).items()]) - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Model trained successfully and saved to {result['model_path']}\n" f"Metrics:\n{metrics_str if metrics_str else '- No metrics available'}", title="Training Complete", @@ -131,7 +128,7 @@ def train( Console().print(panel) except ValueError as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( str(e), title="Invalid parameters", title_align="left", @@ -140,8 +137,8 @@ def train( Console().print(panel) raise typer.Exit(code=1) - except Exception as e: - panel = get_argilla_themed_panel( + except Exception: + panel = get_themed_panel( "An unexpected error occurred during training.", title="Training Failed", title_align="left", @@ -152,4 +149,4 @@ def train( if __name__ == "__main__": - app() \ No newline at end of file + app() diff --git a/extralit/src/extralit/cli/users/__main__.py b/extralit/src/extralit/cli/users/__main__.py index bdfc1e73d..4f5cfe8c6 100644 --- a/extralit/src/extralit/cli/users/__main__.py +++ b/extralit/src/extralit/cli/users/__main__.py @@ -45,7 +45,7 @@ def create_user( ), ) -> None: """Creates a new user in the system.""" - from extralit.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_themed_panel from extralit.users._resource import User from rich.console import Console @@ -69,7 +69,7 @@ def create_user( title="User created", ) except KeyError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"User with name={username} already exists.", title="User already exists", title_align="left", @@ -78,13 +78,13 @@ def create_user( Console().print(panel) raise typer.Exit(code=1) except ValueError as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Provided parameters are not valid:\n\n{e}", title="Invalid parameters", title_align="left", success=False ) Console().print(panel) raise typer.Exit(code=1) except RuntimeError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to create the user.", title="Unexpected error", title_align="left", @@ -104,7 +104,7 @@ def list_users( """List all users in the system with optional filtering.""" from rich.console import Console - from extralit.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_themed_panel try: client = init_callback() @@ -114,7 +114,7 @@ def list_users( workspace_obj = client.workspaces(name=workspace) if workspace_obj is None: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace with name={workspace} doesn't exist.", title="Workspace not found", title_align="left", @@ -139,7 +139,7 @@ def list_users( title="Users", ) except RuntimeError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to list users.", title="Unexpected error", title_align="left", @@ -154,7 +154,7 @@ def delete_user( username: str = typer.Option(..., help="Username of the user to be deleted"), ) -> None: """Delete a user from the system.""" - from extralit.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_themed_panel from rich.console import Console try: @@ -163,18 +163,18 @@ def delete_user( user = client.users(username=username) user.delete() - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"User with username={username} has been removed.", title="User removed", title_align="left" ) Console().print(panel) except ValueError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"User with username={username} doesn't exist.", title="User not found", title_align="left", success=False ) Console().print(panel) raise typer.Exit(code=1) except RuntimeError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to remove the user.", title="Unexpected error", title_align="left", diff --git a/extralit/src/extralit/cli/whoami/__main__.py b/extralit/src/extralit/cli/whoami/__main__.py index 313829747..d8cfb612b 100644 --- a/extralit/src/extralit/cli/whoami/__main__.py +++ b/extralit/src/extralit/cli/whoami/__main__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -39,14 +39,14 @@ def get_current_user(): @app.callback(help="Show information about the current user") def whoami() -> None: """Display information about the current user.""" - from extralit.cli.rich import get_argilla_themed_panel + from extralit.cli.rich import get_themed_panel from rich.console import Console try: # Get current user (this will initialize the client) user = get_current_user() - panel = get_argilla_themed_panel( + panel = get_themed_panel( Markdown( f"- **Username**: {user.username}\n" f"- **Role**: {user.role}\n" @@ -58,7 +58,7 @@ def whoami() -> None: ) Console().print(panel) except ValueError as e: - panel = get_argilla_themed_panel( + panel = get_themed_panel( str(e), title="Not logged in", title_align="left", @@ -69,4 +69,4 @@ def whoami() -> None: if __name__ == "__main__": - app() \ No newline at end of file + app() diff --git a/extralit/src/extralit/cli/workspaces/__main__.py b/extralit/src/extralit/cli/workspaces/__main__.py index ea6c99af2..007bba273 100644 --- a/extralit/src/extralit/cli/workspaces/__main__.py +++ b/extralit/src/extralit/cli/workspaces/__main__.py @@ -18,7 +18,7 @@ import typer from extralit.cli.callback import init_callback -from extralit.cli.rich import get_argilla_themed_panel, print_rich_table +from extralit.cli.rich import get_themed_panel, print_rich_table from extralit._models._user import Role from rich.console import Console @@ -48,7 +48,7 @@ def callback( workspace = client.workspaces(name) ctx.obj = workspace except ValueError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace with name={name} does not exist.", title="Workspace not found", title_align="left", @@ -57,7 +57,7 @@ def callback( Console().print(panel) raise typer.Exit(code=1) except RuntimeError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to get the workspace from the Extralit server", title="Unexpected error", title_align="left", @@ -91,12 +91,12 @@ def create_workspace( client.workspaces.add(workspace) # Display success message - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace with the name={name} successfully created.", title="Workspace created", title_align="left" ) Console().print(panel) except ValueError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"Workspace with name={name} already exists.", title="Workspace already exists", title_align="left", @@ -105,7 +105,7 @@ def create_workspace( Console().print(panel) raise typer.Exit(code=1) except RuntimeError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to create the workspace.", title="Unexpected error", title_align="left", @@ -124,7 +124,7 @@ def list_workspaces() -> None: print_rich_table(workspaces) except RuntimeError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to list workspaces.", title="Unexpected error", title_align="left", @@ -149,7 +149,7 @@ def add_user( user = client.users(username) if user.role == Role.owner: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"User with name={username} is an owner. Users with owner role don't need specific permissions per" " workspace, as those are super-users with privileges over everything under Extralit.", title="User is owner", @@ -172,14 +172,14 @@ def add_user( workspace_obj.add_user(user=user_obj, role=WorkspaceUserRole(role)) # Display success message - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"User with username={username} has been added to workspace={workspace['name']}", title="User added", title_align="left", ) Console().print(panel) except ValueError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"User with username={username} doesn't exist.", title="User not found", title_align="left", @@ -188,7 +188,7 @@ def add_user( Console().print(panel) raise typer.Exit(code=1) except RuntimeError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to add user to the workspace.", title="Unexpected error", title_align="left", @@ -212,7 +212,7 @@ def delete_user( user = client.users(username) if user.role == Role.owner: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"User with name={username} is an owner. Users with owner role don't need specific permissions per" " workspace, as those are super-users with privileges over everything under Extralit.", title="User is owner", @@ -232,14 +232,14 @@ def delete_user( workspace_obj.remove_user(user=user_obj) - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"User with username={username} has been removed from workspace={workspace['name']}", title="User removed", title_align="left", ) Console().print(panel) except ValueError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( f"User with username={username} doesn't exist.", title="User not found", title_align="left", @@ -248,7 +248,7 @@ def delete_user( Console().print(panel) raise typer.Exit(code=1) except RuntimeError: - panel = get_argilla_themed_panel( + panel = get_themed_panel( "An unexpected error occurred when trying to remove user from the workspace.", title="Unexpected error", title_align="left", diff --git a/extralit/src/extralit/settings/_field.py b/extralit/src/extralit/settings/_field.py index 86a341d19..abaa0682d 100644 --- a/extralit/src/extralit/settings/_field.py +++ b/extralit/src/extralit/settings/_field.py @@ -98,7 +98,7 @@ def _with_client(self, client: "Extralit") -> "Self": class TextField(FieldBase): - """Text field for use in Argilla `Dataset` `Settings`""" + """Text field for use in Extralit `Dataset` `Settings`""" def __init__( self, @@ -110,7 +110,7 @@ def __init__( description: Optional[str] = None, client: Optional[Extralit] = None, ) -> None: - """Text field for use in Argilla `Dataset` `Settings` + """Text field for use in Extralit `Dataset` `Settings` Parameters: name (str): The name of the field title (Optional[str], optional): The title of the field. Defaults to None. @@ -147,7 +147,7 @@ def use_table(self, value: bool) -> None: class ImageField(FieldBase): - """Image field for use in Argilla `Dataset` `Settings`""" + """Image field for use in Extralit `Dataset` `Settings`""" def __init__( self, @@ -158,7 +158,7 @@ def __init__( _client: Optional[Extralit] = None, ) -> None: """ - Text field for use in Argilla `Dataset` `Settings` + Text field for use in Extralit `Dataset` `Settings` Parameters: name (str): The name of the field @@ -178,7 +178,7 @@ def __init__( class ChatField(FieldBase): - """Chat field for use in Argilla `Dataset` `Settings`""" + """Chat field for use in Extralit `Dataset` `Settings`""" def __init__( self, @@ -190,7 +190,7 @@ def __init__( _client: Optional[Extralit] = None, ) -> None: """ - Chat field for use in Argilla `Dataset` `Settings` + Chat field for use in Extralit `Dataset` `Settings` Parameters: name (str): The name of the field @@ -219,7 +219,7 @@ def use_markdown(self, value: bool) -> None: class CustomField(FieldBase): - """Custom field for use in Argilla `Dataset` `Settings`""" + """Custom field for use in Extralit `Dataset` `Settings`""" def __init__( self, @@ -232,8 +232,8 @@ def __init__( _client: Optional[Extralit] = None, ) -> None: """ - Custom field for use in Argilla `Dataset` `Settings` for working with custom HTML and CSS templates. - By default argilla will use a brackets syntax engine for the templates, which converts + Custom field for use in Extralit `Dataset` `Settings` for working with custom HTML and CSS templates. + By default extralit will use a brackets syntax engine for the templates, which converts `{{ field.key }}` to the values of record's field's object. Parameters: @@ -291,7 +291,7 @@ def _load_template(cls, template: str) -> str: class TableField(FieldBase): - """Table field for use in Argilla `Dataset` `Settings`""" + """Table field for use in Extralit `Dataset` `Settings`""" def __init__( self, @@ -302,7 +302,7 @@ def __init__( _client: Optional["Extralit"] = None, ) -> None: """ - Table field for use in Argilla `Dataset` `Settings` + Table field for use in Extralit `Dataset` `Settings` Parameters: name (str): The name of the field diff --git a/extralit/src/extralit/webhooks/_helpers.py b/extralit/src/extralit/webhooks/_helpers.py index 581b40b09..b58ce9712 100644 --- a/extralit/src/extralit/webhooks/_helpers.py +++ b/extralit/src/extralit/webhooks/_helpers.py @@ -91,10 +91,10 @@ def wrapper(func: Callable) -> Callable: webhook_url = _webhook_url_for_func(func) webhook = None - for argilla_webhook in client.webhooks: - if argilla_webhook.url == webhook_url and argilla_webhook.events == events: - warnings.warn(f"Found existing webhook with for URL {argilla_webhook.url}: {argilla_webhook}") - webhook = argilla_webhook + for extralit_webhook in client.webhooks: + if extralit_webhook.url == webhook_url and extralit_webhook.events == events: + warnings.warn(f"Found existing webhook with for URL {extralit_webhook.url}: {extralit_webhook}") + webhook = extralit_webhook webhook.description = description or webhook.description webhook.enabled = True webhook.update() @@ -108,7 +108,7 @@ def wrapper(func: Callable) -> Callable: ).create() request_handler = WebhookHandler(webhook).handle(func, raw_event) - server.post(f"/{func.__name__}", tags=["Argilla Webhooks"])(request_handler) + server.post(f"/{func.__name__}", tags=["Extralit Webhooks"])(request_handler) return request_handler diff --git a/extralit/tests/unit/helpers/test_spaces_deployment.py b/extralit/tests/unit/helpers/test_spaces_deployment.py index 600f0d831..1fdcbbbee 100644 --- a/extralit/tests/unit/helpers/test_spaces_deployment.py +++ b/extralit/tests/unit/helpers/test_spaces_deployment.py @@ -22,13 +22,13 @@ class TestSpacesDeploymentMixin: @pytest.fixture - def argilla_client_class(self): + def extralit_client_class(self): return Extralit @patch("extralit._helpers._deploy.HfApi") @patch("extralit._helpers._deploy.get_token") @patch("extralit.client.Extralit.__init__", return_value=None) - def test_deploy_on_spaces(self, mock_argilla_init, mock_get_token, mock_hf_api, argilla_client_class): + def test_deploy_on_spaces(self, mock_argilla_init, mock_get_token, mock_hf_api, extralit_client_class): mock_get_token.return_value = "fake_token" mock_api = Mock() mock_hf_api.return_value = mock_api @@ -36,7 +36,7 @@ def test_deploy_on_spaces(self, mock_argilla_init, mock_get_token, mock_hf_api, mock_api.repo_exists.return_value = False mock_api.get_space_runtime.return_value = Mock(stage=SpaceStage.RUNNING) - result = argilla_client_class.deploy_on_spaces(api_key="12345678") + result = extralit_client_class.deploy_on_spaces(api_key="12345678") assert isinstance(result, Extralit) mock_api.duplicate_space.assert_called_once() @@ -52,9 +52,9 @@ def test_deploy_on_spaces(self, mock_argilla_init, mock_get_token, mock_hf_api, @patch("extralit._helpers._deploy.get_token") @patch("extralit._helpers._deploy.login") - def test_acquire_hf_token(self, mock_login, mock_get_token, argilla_client_class): + def test_acquire_hf_token(self, mock_login, mock_get_token, extralit_client_class): mock_get_token.side_effect = [None, "fake_token"] - token = argilla_client_class._acquire_hf_token(None) + token = extralit_client_class._acquire_hf_token(None) assert token == "fake_token" mock_login.assert_called_once() @@ -68,12 +68,12 @@ def test_acquire_hf_token(self, mock_login, mock_get_token, argilla_client_class ("INVALID", pytest.raises(ValueError)), ], ) - def test_is_space_stopped(self, stage, expected, argilla_client_class): + def test_is_space_stopped(self, stage, expected, extralit_client_class): if isinstance(expected, bool): - assert argilla_client_class._is_space_stopped(stage) == expected + assert extralit_client_class._is_space_stopped(stage) == expected else: with expected: - argilla_client_class._is_space_stopped(stage) + extralit_client_class._is_space_stopped(stage) @pytest.mark.parametrize( "stage,expected", @@ -86,12 +86,12 @@ def test_is_space_stopped(self, stage, expected, argilla_client_class): ("INVALID", pytest.raises(ValueError)), ], ) - def test_is_building(self, stage, expected, argilla_client_class): + def test_is_building(self, stage, expected, extralit_client_class): if isinstance(expected, bool): - assert argilla_client_class._is_building(stage) == expected + assert extralit_client_class._is_building(stage) == expected else: with expected: - argilla_client_class._is_building(stage) + extralit_client_class._is_building(stage) @pytest.mark.parametrize( "component,expected", @@ -102,5 +102,5 @@ def test_is_building(self, stage, expected, argilla_client_class): ("-test-repo-", "test-repo"), ], ) - def test_sanitize_url_component(self, component, expected, argilla_client_class): - assert argilla_client_class._sanitize_url_component(component) == expected + def test_sanitize_url_component(self, component, expected, extralit_client_class): + assert extralit_client_class._sanitize_url_component(component) == expected From 1817ec180a18fb904bb09dc5df992133bfb07866 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 15:25:27 -0700 Subject: [PATCH 21/23] Refactor: Update references from Argilla to Extralit in configuration files and codebase - Removed references to `argilla` in `.dockerignore`, `.pre-commit-config.yaml`, and `docker-compose.yaml`, replacing them with `extralit`. - Updated environment variables and paths in various configuration files to reflect the new naming convention. - Adjusted documentation and comments to ensure consistency with the Extralit branding. - Renamed functions and variables in the CLI and webhooks to align with the new structure. --- .../annotation-mode.page.spec.ts | 2 +- .../e2e/common/dataset-api-mock.ts | 8 +++--- .../src/extralit_server/contexts/hub.py | 4 +-- .../handlers/v1/settings/test_get_settings.py | 8 +++--- .../unit/cli/database/users/test_migrate.py | 6 ++-- extralit-server/tests/unit/conftest.py | 4 +-- extralit/docs/admin_guide/query.md | 18 ++++++------ .../docs/admin_guide/webhooks_internals.md | 28 +++++++++---------- .../reference/argilla-server/sso_keycloak.md | 2 +- .../docs/tutorials/token_classification.ipynb | 2 +- extralit/src/extralit/datasets/_io/_hub.py | 2 +- 11 files changed, 42 insertions(+), 42 deletions(-) diff --git a/extralit-frontend/e2e/annotation-mode-page/annotation-mode.page.spec.ts b/extralit-frontend/e2e/annotation-mode-page/annotation-mode.page.spec.ts index 5eb2830f4..4dfee1053 100644 --- a/extralit-frontend/e2e/annotation-mode-page/annotation-mode.page.spec.ts +++ b/extralit-frontend/e2e/annotation-mode-page/annotation-mode.page.spec.ts @@ -54,7 +54,7 @@ test.describe("Annotate page", () => { test("filter by workspaces from annotation page", async ({ page }) => { await goToAnnotationPage(page); - await page.getByRole("link", { name: "argilla" }).click(); + await page.getByRole("link", { name: "extralit" }).click(); await expect(page).toHaveScreenshot(); }); diff --git a/extralit-frontend/e2e/common/dataset-api-mock.ts b/extralit-frontend/e2e/common/dataset-api-mock.ts index 7d03b783d..8adc97b43 100644 --- a/extralit-frontend/e2e/common/dataset-api-mock.ts +++ b/extralit-frontend/e2e/common/dataset-api-mock.ts @@ -19,11 +19,11 @@ const oldDatasets = [ metadata: {}, name: "span_marker_conll_8_epochs_corr_annot", task: "TokenClassification", - workspace: "argilla", + workspace: "extralit", id: "argilla.span_marker_conll_8_epochs_corr_annot", - owner: "argilla", + owner: "extralit", created_at: fakeDateMonthAgo(3), - created_by: "argilla", + created_by: "extralit", last_updated: fakeDateMonthAgo(3), }, { @@ -94,7 +94,7 @@ export const newDatasetsMocked = [ export const workspacesMocked = [ { id: "4e70e21a-7533-41e9-8a25-11d6ee3091be", - name: "argilla", + name: "extralit", inserted_at: fakeDateMonthAgo(1), updated_at: fakeDateMonthAgo(1), }, diff --git a/extralit-server/src/extralit_server/contexts/hub.py b/extralit-server/src/extralit_server/contexts/hub.py index e1e44637a..8f8ceb981 100644 --- a/extralit-server/src/extralit_server/contexts/hub.py +++ b/extralit-server/src/extralit_server/contexts/hub.py @@ -428,7 +428,7 @@ def _push_extra_files_to_hub(self, repo_id: str, token: str) -> None: def _create_version_file(self, directory: str) -> None: with open(os.path.join(directory, "version.json"), "w") as file: - file.write(json.dumps({"argilla": info.extralit_version()}, indent=2)) + file.write(json.dumps({"extralit": info.extralit_version()}, indent=2)) def _create_dataset_file(self, directory: str) -> None: with open(os.path.join(directory, "dataset.json"), "w") as file: @@ -458,7 +458,7 @@ def _create_readme_file(self, directory: str, repo_id: str) -> None: card = DatasetCard.from_template( card_data=DatasetCardData( # size_categories=size_categories_parser(dataset_size), - tags=["rlfh", "argilla", "human-feedback"], + tags=["rlfh", "extralit", "human-feedback"], ), template_path=HUB_DATASET_CARD_TEMPLATE_PATH, repo_id=repo_id, diff --git a/extralit-server/tests/unit/api/handlers/v1/settings/test_get_settings.py b/extralit-server/tests/unit/api/handlers/v1/settings/test_get_settings.py index d91d1e8e7..dbfbd9dc3 100644 --- a/extralit-server/tests/unit/api/handlers/v1/settings/test_get_settings.py +++ b/extralit-server/tests/unit/api/handlers/v1/settings/test_get_settings.py @@ -33,7 +33,7 @@ async def test_get_settings_for_argilla_settings_running_on_huggingface(self, as response = await async_client.get(self.url()) assert response.status_code == 200 - assert response.json()["argilla"]["show_huggingface_space_persistent_storage_warning"] is True + assert response.json()["extralit"]["show_huggingface_space_persistent_storage_warning"] is True async def test_get_settings_for_argilla_settings_running_on_huggingface_with_disabled_storage_warning( self, async_client: AsyncClient @@ -45,13 +45,13 @@ async def test_get_settings_for_argilla_settings_running_on_huggingface_with_dis response = await async_client.get(self.url()) assert response.status_code == 200 - assert response.json()["argilla"]["show_huggingface_space_persistent_storage_warning"] is False + assert response.json()["extralit"]["show_huggingface_space_persistent_storage_warning"] is False async def test_get_settings_for_argilla_settings_not_running_on_huggingface(self, async_client: AsyncClient): response = await async_client.get(self.url()) assert response.status_code == 200 - assert "show_huggingface_space_persistent_storage_warning" not in response.json()["argilla"] + assert "show_huggingface_space_persistent_storage_warning" not in response.json()["extralit"] async def test_get_settings_for_huggingface_settings_running_on_huggingface(self, async_client: AsyncClient): huggingface_os_environ = { @@ -92,6 +92,6 @@ async def test_get_settings_with_share_your_progress_enabled(self, async_client: response = await async_client.get(self.url()) assert response.status_code == 200 - assert response.json()["argilla"]["share_your_progress_enabled"] is True + assert response.json()["extralit"]["share_your_progress_enabled"] is True finally: settings.enable_share_your_progress = False diff --git a/extralit-server/tests/unit/cli/database/users/test_migrate.py b/extralit-server/tests/unit/cli/database/users/test_migrate.py index a1bff6c32..0526b9f42 100644 --- a/extralit-server/tests/unit/cli/database/users/test_migrate.py +++ b/extralit-server/tests/unit/cli/database/users/test_migrate.py @@ -49,7 +49,7 @@ def test_migrate(monkeypatch, sync_db: "Session", cli_runner: CliRunner, cli: Ty assert user.role == UserRole.annotator assert user.api_key == "78a10b53-8db7-4ab5-9e9e-fbd4b7e76551" assert user.password_hash == "$2y$05$aqNyXcXRXddNj5toZwT0HugHqKZypvqlBAkZviAGGbsAC8oTj/P5K" - assert [ws.name for ws in user.workspaces] == ["tanya", "argilla", "team"] + assert [ws.name for ws in user.workspaces] == ["tanya", "extralit", "team"] user = sync_db.query(User).filter_by(username="daisy").first() assert user.first_name == "Daisy Gonzalez" @@ -57,7 +57,7 @@ def test_migrate(monkeypatch, sync_db: "Session", cli_runner: CliRunner, cli: Ty assert user.role == UserRole.annotator assert user.api_key == "a8168929-8668-494c-b7a5-98cd35740d9b" assert user.password_hash == "$2y$05$l83IhUs4ZDaxsgZ/P12FO.RFTi2wKQ2AxMK2vYtLx//yKramuCcZG" - assert set([ws.name for ws in user.workspaces]) == {"daisy", "argilla", "team", "latam"} + assert set([ws.name for ws in user.workspaces]) == {"daisy", "extralit", "team", "latam"} user = sync_db.query(User).filter_by(username="macleod").first() assert user.first_name == "" @@ -93,7 +93,7 @@ def test_migrate_with_one_user_file(monkeypatch, sync_db: "Session", cli_runner: assert user.role == UserRole.annotator assert user.api_key == "a14427ea-9197-11ec-b909-0242ac120002" assert user.password_hash == "$2y$05$xtl7iy3bpqchUwiQMjEHe.tY7OaIjDrg43W3TB4EHQ7izvdjvGtPS" - assert [ws.name for ws in user.workspaces] == ["john", "argilla", "team"] + assert [ws.name for ws in user.workspaces] == ["john", "extralit", "team"] def test_migrate_with_nonexistent_file(monkeypatch, sync_db: "Session", cli_runner: CliRunner, cli: Typer): diff --git a/extralit-server/tests/unit/conftest.py b/extralit-server/tests/unit/conftest.py index 26f42b745..837db809a 100644 --- a/extralit-server/tests/unit/conftest.py +++ b/extralit-server/tests/unit/conftest.py @@ -133,10 +133,10 @@ def test_telemetry(mocker: "MockerFixture") -> "TelemetryClient": async def argilla_user() -> Generator[User, None, None]: user = await UserFactory.create( first_name="Argilla", - username="argilla", + username="extralit", role=UserRole.admin, # Force to use an admin user password_hash="$2y$05$eaw.j2Kaw8s8vpscVIZMfuqSIX3OLmxA21WjtWicDdn0losQ91Hw.", api_key=DEFAULT_API_KEY, - workspaces=[Workspace(name="argilla")], + workspaces=[Workspace(name="extralit")], ) yield user diff --git a/extralit/docs/admin_guide/query.md b/extralit/docs/admin_guide/query.md index c5f47b21a..f449ea4e1 100644 --- a/extralit/docs/admin_guide/query.md +++ b/extralit/docs/admin_guide/query.md @@ -77,15 +77,15 @@ To search for records with terms, you can use the `Dataset.records` attribute wi If you need more complex searches, you can use [Elasticsearch's simple query string syntax](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-simple-query-string-query.html#simple-query-string-syntax). Here is a summary of the different available operators: -| operator | description | example | -| -------------- | ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- | -| `+` or `space` | **AND**: search both terms | `argilla + distilabel` or `argilla distilabel`
return records that include the terms "argilla" and "distilabel" | -| ` | ` | **OR**: search either term | `argilla | distilabel`
returns records that include the term "argilla" or "distilabel" | -| `-` | **Negation**: exclude a term | `argilla -distilabel`
returns records that contain the term "argilla" and don't have the term "distilabel" | -| `*` | **Prefix**: search a prefix | `arg*`
returns records with any words starting with "arg-" | -| `"` | **Phrase**: search a phrase | `"argilla and distilabel"`
returns records that contain the phrase "argilla and distilabel" | -| `(` and `)` | **Precedence**: group terms | `(argilla | distilabel) rules`
returns records that contain either "argilla" or "distilabel" and "rules" | -| `~N` | **Edit distance**: search a term or phrase with an edit distance | `argilla~1`
returns records that contain the term "argilla" with an edit distance of 1, e.g. "argila" | +| operator | description | example | +| -------------- | ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------- | +| `+` or `space` | **AND**: search both terms | `argilla + distilabel` or `argilla distilabel`
return records that include the terms "extralit" and "distilabel" | +| ` | ` | **OR**: search either term | `argilla | distilabel`
returns records that include the term "extralit" or "distilabel" | +| `-` | **Negation**: exclude a term | `argilla -distilabel`
returns records that contain the term "extralit" and don't have the term "distilabel" | +| `*` | **Prefix**: search a prefix | `arg*`
returns records with any words starting with "arg-" | +| `"` | **Phrase**: search a phrase | `"argilla and distilabel"`
returns records that contain the phrase "argilla and distilabel" | +| `(` and `)` | **Precedence**: group terms | `(argilla | distilabel) rules`
returns records that contain either "extralit" or "distilabel" and "rules" | +| `~N` | **Edit distance**: search a term or phrase with an edit distance | `argilla~1`
returns records that contain the term "extralit" with an edit distance of 1, e.g. "argila" | !!! tip To use one of these characters literally, escape it with a preceding backslash `\`, e.g. `"1 \+ 2"` would match records where the phrase "1 + 2" is found. diff --git a/extralit/docs/admin_guide/webhooks_internals.md b/extralit/docs/admin_guide/webhooks_internals.md index 180d9a0e2..953053210 100644 --- a/extralit/docs/admin_guide/webhooks_internals.md +++ b/extralit/docs/admin_guide/webhooks_internals.md @@ -64,7 +64,7 @@ In this section we will show payload examples for all the events emitted by Argi }, "workspace": { "id": "350bc020-2cd2-4a67-8b23-37a15c4d8139", - "name": "argilla", + "name": "extralit", "inserted_at": "2024-09-05T11:39:20.377192", "updated_at": "2024-09-05T11:39:20.377192" }, @@ -98,7 +98,7 @@ In this section we will show payload examples for all the events emitted by Argi }, "workspace": { "id": "350bc020-2cd2-4a67-8b23-37a15c4d8139", - "name": "argilla", + "name": "extralit", "inserted_at": "2024-09-05T11:39:20.377192", "updated_at": "2024-09-05T11:39:20.377192" }, @@ -145,7 +145,7 @@ In this section we will show payload examples for all the events emitted by Argi }, "workspace": { "id": "350bc020-2cd2-4a67-8b23-37a15c4d8139", - "name": "argilla", + "name": "extralit", "inserted_at": "2024-09-05T11:39:20.377192", "updated_at": "2024-09-05T11:39:20.377192" }, @@ -314,7 +314,7 @@ In this section we will show payload examples for all the events emitted by Argi }, "workspace": { "id": "350bc020-2cd2-4a67-8b23-37a15c4d8139", - "name": "argilla", + "name": "extralit", "inserted_at": "2024-09-05T11:39:20.377192", "updated_at": "2024-09-05T11:39:20.377192" }, @@ -500,7 +500,7 @@ In this section we will show payload examples for all the events emitted by Argi }, "workspace": { "id": "350bc020-2cd2-4a67-8b23-37a15c4d8139", - "name": "argilla", + "name": "extralit", "inserted_at": "2024-09-05T11:39:20.377192", "updated_at": "2024-09-05T11:39:20.377192" }, @@ -687,7 +687,7 @@ In this section we will show payload examples for all the events emitted by Argi }, "workspace": { "id": "350bc020-2cd2-4a67-8b23-37a15c4d8139", - "name": "argilla", + "name": "extralit", "inserted_at": "2024-09-05T11:39:20.377192", "updated_at": "2024-09-05T11:39:20.377192" }, @@ -874,7 +874,7 @@ In this section we will show payload examples for all the events emitted by Argi }, "workspace": { "id": "350bc020-2cd2-4a67-8b23-37a15c4d8139", - "name": "argilla", + "name": "extralit", "inserted_at": "2024-09-05T11:39:20.377192", "updated_at": "2024-09-05T11:39:20.377192" }, @@ -1061,7 +1061,7 @@ In this section we will show payload examples for all the events emitted by Argi }, "workspace": { "id": "350bc020-2cd2-4a67-8b23-37a15c4d8139", - "name": "argilla", + "name": "extralit", "inserted_at": "2024-09-05T11:39:20.377192", "updated_at": "2024-09-05T11:39:20.377192" }, @@ -1258,7 +1258,7 @@ In this section we will show payload examples for all the events emitted by Argi }, "workspace": { "id": "350bc020-2cd2-4a67-8b23-37a15c4d8139", - "name": "argilla", + "name": "extralit", "inserted_at": "2024-09-05T11:39:20.377192", "updated_at": "2024-09-05T11:39:20.377192" }, @@ -1412,7 +1412,7 @@ In this section we will show payload examples for all the events emitted by Argi "id": "df114042-958d-42c6-9f03-ab49bd451c6c", "first_name": "", "last_name": null, - "username": "argilla", + "username": "extralit", "role": "owner", "inserted_at": "2024-09-05T11:39:20.376463", "updated_at": "2024-09-05T11:39:20.376463" @@ -1465,7 +1465,7 @@ In this section we will show payload examples for all the events emitted by Argi }, "workspace": { "id": "350bc020-2cd2-4a67-8b23-37a15c4d8139", - "name": "argilla", + "name": "extralit", "inserted_at": "2024-09-05T11:39:20.377192", "updated_at": "2024-09-05T11:39:20.377192" }, @@ -1619,7 +1619,7 @@ In this section we will show payload examples for all the events emitted by Argi "id": "df114042-958d-42c6-9f03-ab49bd451c6c", "first_name": "", "last_name": null, - "username": "argilla", + "username": "extralit", "role": "owner", "inserted_at": "2024-09-05T11:39:20.376463", "updated_at": "2024-09-05T11:39:20.376463" @@ -1672,7 +1672,7 @@ In this section we will show payload examples for all the events emitted by Argi }, "workspace": { "id": "350bc020-2cd2-4a67-8b23-37a15c4d8139", - "name": "argilla", + "name": "extralit", "inserted_at": "2024-09-05T11:39:20.377192", "updated_at": "2024-09-05T11:39:20.377192" }, @@ -1826,7 +1826,7 @@ In this section we will show payload examples for all the events emitted by Argi "id": "df114042-958d-42c6-9f03-ab49bd451c6c", "first_name": "", "last_name": null, - "username": "argilla", + "username": "extralit", "role": "owner", "inserted_at": "2024-09-05T11:39:20.376463", "updated_at": "2024-09-05T11:39:20.376463" diff --git a/extralit/docs/reference/argilla-server/sso_keycloak.md b/extralit/docs/reference/argilla-server/sso_keycloak.md index c21d28a21..ec99af421 100644 --- a/extralit/docs/reference/argilla-server/sso_keycloak.md +++ b/extralit/docs/reference/argilla-server/sso_keycloak.md @@ -22,7 +22,7 @@ from keycloak import KeycloakOpenIDConnection from keycloak import KeycloakOpenID EXTRALIT_CLIENT_ID = "argilla-client" -EXTRALIT_REALM = "argilla" +EXTRALIT_REALM = "extralit" keycloak_connection = KeycloakOpenIDConnection( server_url="http://localhost:8080/", diff --git a/extralit/docs/tutorials/token_classification.ipynb b/extralit/docs/tutorials/token_classification.ipynb index 70cc8a6da..649c4c5a4 100644 --- a/extralit/docs/tutorials/token_classification.ipynb +++ b/extralit/docs/tutorials/token_classification.ipynb @@ -725,7 +725,7 @@ ], "metadata": { "kernelspec": { - "display_name": "argilla", + "display_name": "extralit", "language": "python", "name": "python3" }, diff --git a/extralit/src/extralit/datasets/_io/_hub.py b/extralit/src/extralit/datasets/_io/_hub.py index d4c134d0b..282b81b46 100644 --- a/extralit/src/extralit/datasets/_io/_hub.py +++ b/extralit/src/extralit/datasets/_io/_hub.py @@ -91,7 +91,7 @@ def to_hub( card = ArgillaDatasetCard.from_template( card_data=DatasetCardData( size_categories=size_categories_parser(dataset_size), - tags=["rlfh", "argilla", "human-feedback"], + tags=["rlfh", "extralit", "human-feedback"], ), repo_id=repo_id, argilla_fields=self.settings.fields, From 6edb704a58050891528a03f1c802dcf81ad49ec6 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 15:47:55 -0700 Subject: [PATCH 22/23] renamed "/argilla/" to "/extralit/" --- .../docker-image-tag-from-ref/action.yml | 2 +- .../actions/generate-credentials/action.yml | 2 +- .../actions/slack-post-credentials/action.yml | 4 +- README.md | 2 +- examples/custom_field/custom_field.ipynb | 10 +- examples/custom_field/table_field.ipynb | 2 +- examples/deployments/README.md | 4 +- .../deployments/k8s/extralit-chart/README.md | 12 +- .../k8s/extralit-chart/templates/NOTES.txt | 14 +- .../k8s/extralit-chart/templates/_helpers.tpl | 4 +- .../document_extraction/LLM_extractions.ipynb | 8 +- .../PDF_preprocessing.ipynb | 18 +- .../document_extraction/setup_workspace.ipynb | 1156 ++++++++--------- examples/webhooks/basic-webhooks/main.py | 2 +- .../webhooks/basic-webhooks/requirements.txt | 2 +- .../base-topbar-brand/BaseTopbarBrand.vue | 2 +- .../home/sidebar/useImportFromPython.ts | 2 +- extralit-frontend/docs/snippets/start_page.md | 10 +- extralit-frontend/docs/structure.md | 2 +- extralit-frontend/translation/ja.js | 6 +- .../v1/domain/entities/dataset/Dataset.ts | 2 +- extralit-server/README.md | 2 +- .../docker/extralit-hf-spaces/Dockerfile | 2 +- .../docker/extralit-hf-spaces/README.md | 10 +- extralit-server/docker/server/Dockerfile | 2 +- extralit-server/docker/server/README.md | 8 +- extralit-server/pyproject.toml | 1 - extralit-server/src/extralit_server/_app.py | 2 +- .../src/extralit_server/api/routes.py | 4 +- .../api/schemas/v1/datasets.py | 2 +- .../src/extralit_server/cli/__main__.py | 24 +- .../extralit_server/cli/database/__main__.py | 22 +- .../cli/database/users/__main__.py | 28 +- .../cli/database/users/create.py | 22 +- .../cli/search_engine/__main__.py | 24 +- .../src/extralit_server/cli/start.py | 6 +- .../contexts/hub_templates/README.md.jinja2 | 18 +- .../errors/future/base_errors.py | 30 +- .../src/extralit_server/jobs/import_jobs.py | 2 +- .../src/extralit_server/logging.py | 6 +- .../src/extralit_server/settings.py | 4 +- extralit-server/tests/unit/conftest.py | 2 +- extralit-server/tests/unit/test_logging.py | 10 +- extralit/README.md | 4 +- extralit/docs/admin_guide/annotate.md | 34 +- extralit/docs/admin_guide/custom_fields.md | 14 +- extralit/docs/admin_guide/dataset.md | 50 +- extralit/docs/admin_guide/distribution.md | 14 +- extralit/docs/admin_guide/import_export.md | 50 +- extralit/docs/admin_guide/index.md | 16 +- .../migrate_from_legacy_datasets.md | 70 +- extralit/docs/admin_guide/query.md | 22 +- extralit/docs/admin_guide/record.md | 58 +- extralit/docs/admin_guide/upgrading.md | 2 +- .../use_markdown_to_format_rich_content.md | 8 +- extralit/docs/admin_guide/user.md | 60 +- extralit/docs/admin_guide/webhooks.md | 30 +- .../docs/admin_guide/webhooks_internals.md | 10 +- extralit/docs/admin_guide/workspace.md | 32 +- extralit/docs/community/adding_language.md | 12 +- extralit/docs/community/contributor.md | 2 +- extralit/docs/community/developer.md | 8 +- extralit/docs/community/index.md | 2 +- .../integrations/llamaindex_rag_github.ipynb | 46 +- extralit/docs/community/release_guide.md | 2 +- .../docs/getting_started/development_setup.md | 6 +- ...how-to-configure-argilla-on-huggingface.md | 32 +- .../how-to-deploy-argilla-with-docker.md | 8 +- extralit/docs/getting_started/installation.md | 4 +- extralit/docs/getting_started/quickstart.md | 60 +- extralit/docs/glossary.md | 8 +- extralit/docs/index.md | 8 +- .../reference/argilla-server/configuration.md | 28 +- .../argilla-server/oauth2_configuration.md | 22 +- .../reference/argilla-server/sso_keycloak.md | 6 +- .../reference/argilla-server/telemetry.md | 4 +- extralit/docs/reference/argilla/client.md | 16 +- .../argilla/datasets/dataset_records.md | 30 +- .../reference/argilla/datasets/datasets.md | 4 +- extralit/docs/reference/argilla/markdown.md | 2 +- .../reference/argilla/records/metadata.md | 2 +- .../docs/reference/argilla/records/records.md | 8 +- .../reference/argilla/records/responses.md | 2 +- .../reference/argilla/records/suggestions.md | 2 +- .../docs/reference/argilla/records/vectors.md | 2 +- extralit/docs/reference/argilla/search.md | 2 +- .../docs/reference/argilla/settings/fields.md | 2 +- .../reference/argilla/settings/questions.md | 2 +- .../reference/argilla/settings/settings.md | 8 +- .../reference/argilla/settings/vectors.md | 2 +- extralit/docs/reference/argilla/users.md | 2 +- extralit/docs/reference/argilla/webhooks.md | 2 +- extralit/docs/reference/argilla/workspaces.md | 2 +- extralit/docs/scripts/gen_popular_issues.py | 2 +- extralit/docs/scripts/gen_ref_pages.py | 2 +- .../docs/tutorials/image_classification.ipynb | 20 +- .../docs/tutorials/image_preference.ipynb | 24 +- extralit/docs/tutorials/index.md | 4 +- .../docs/tutorials/text_classification.ipynb | 18 +- .../docs/tutorials/token_classification.ipynb | 24 +- extralit/docs/user_guide/overview.md | 4 +- extralit/mkdocs.yml | 6 +- extralit/src/extralit/_api/__init__.py | 2 +- extralit/src/extralit/_api/_base.py | 2 +- extralit/src/extralit/_api/_client.py | 8 +- extralit/src/extralit/_api/_datasets.py | 2 +- extralit/src/extralit/_api/_fields.py | 2 +- extralit/src/extralit/_api/_http/__init__.py | 2 +- extralit/src/extralit/_api/_http/_helpers.py | 2 +- extralit/src/extralit/_api/_metadata.py | 2 +- extralit/src/extralit/_api/_records.py | 2 +- extralit/src/extralit/_api/_token.py | 2 +- extralit/src/extralit/_api/_users.py | 2 +- extralit/src/extralit/_api/_vectors.py | 2 +- extralit/src/extralit/_api/_webhooks.py | 2 +- extralit/src/extralit/_exceptions/__init__.py | 2 +- extralit/src/extralit/_exceptions/_api.py | 2 +- .../extralit/_exceptions/_serialization.py | 2 +- extralit/src/extralit/_helpers/__init__.py | 2 +- .../src/extralit/_helpers/_dataclasses.py | 2 +- extralit/src/extralit/_helpers/_deploy.py | 12 +- extralit/src/extralit/_helpers/_iterator.py | 2 +- extralit/src/extralit/_helpers/_media.py | 2 +- .../src/extralit/_helpers/_resource_repr.py | 6 +- extralit/src/extralit/_helpers/_uuid.py | 2 +- extralit/src/extralit/_models/_base.py | 2 +- extralit/src/extralit/_models/_dataset.py | 2 +- .../src/extralit/_models/_dataset_progress.py | 2 +- extralit/src/extralit/_models/_documents.py | 2 +- .../src/extralit/_models/_record/__init__.py | 2 +- .../src/extralit/_models/_record/_metadata.py | 2 +- .../src/extralit/_models/_record/_record.py | 4 +- .../src/extralit/_models/_record/_response.py | 4 +- .../extralit/_models/_record/_suggestion.py | 2 +- .../src/extralit/_models/_record/_vector.py | 2 +- extralit/src/extralit/_models/_resource.py | 2 +- extralit/src/extralit/_models/_search.py | 2 +- .../extralit/_models/_settings/__init__.py | 2 +- .../src/extralit/_models/_settings/_fields.py | 2 +- .../extralit/_models/_settings/_metadata.py | 4 +- .../_models/_settings/_task_distribution.py | 2 +- .../extralit/_models/_settings/_vectors.py | 2 +- extralit/src/extralit/_models/_user.py | 2 +- extralit/src/extralit/_models/_webhook.py | 2 +- extralit/src/extralit/_models/_workspace.py | 2 +- extralit/src/extralit/_resource.py | 6 +- extralit/src/extralit/cli/__init__.py | 4 +- extralit/src/extralit/cli/callback.py | 4 +- .../src/extralit/cli/extraction/export.py | 8 +- extralit/src/extralit/cli/info/__init__.py | 2 +- extralit/src/extralit/cli/login/__init__.py | 4 +- extralit/src/extralit/cli/logout/__init__.py | 4 +- extralit/src/extralit/cli/rich.py | 4 +- extralit/src/extralit/cli/schemas/__init__.py | 2 +- .../src/extralit/cli/training/__init__.py | 4 +- extralit/src/extralit/cli/users/__init__.py | 4 +- extralit/src/extralit/cli/whoami/__init__.py | 4 +- .../src/extralit/cli/workspaces/__init__.py | 4 +- extralit/src/extralit/client/core.py | 22 +- extralit/src/extralit/client/login.py | 2 +- extralit/src/extralit/client/resources.py | 8 +- extralit/src/extralit/datasets/__init__.py | 2 +- .../src/extralit/datasets/_io/__init__.py | 2 +- extralit/src/extralit/datasets/_io/_disk.py | 2 +- extralit/src/extralit/datasets/_io/_hub.py | 8 +- .../extralit/datasets/_io/card/__init__.py | 6 +- .../datasets/_io/card/_dataset_card.py | 4 +- .../src/extralit/datasets/_io/card/_parser.py | 2 +- .../datasets/_io/card/argilla_template.md | 20 +- extralit/src/extralit/datasets/_resource.py | 6 +- extralit/src/extralit/documents/_resource.py | 14 +- extralit/src/extralit/markdown/__init__.py | 2 +- extralit/src/extralit/markdown/chat.py | 2 +- extralit/src/extralit/markdown/media.py | 2 +- extralit/src/extralit/records/__init__.py | 2 +- .../src/extralit/records/_dataset_records.py | 8 +- extralit/src/extralit/records/_io/__init__.py | 2 +- .../src/extralit/records/_io/_datasets.py | 4 +- extralit/src/extralit/records/_io/_generic.py | 2 +- extralit/src/extralit/records/_io/_json.py | 2 +- .../src/extralit/records/_mapping/__init__.py | 2 +- .../src/extralit/records/_mapping/_mapper.py | 8 +- .../src/extralit/records/_mapping/_routes.py | 2 +- extralit/src/extralit/records/_resource.py | 4 +- extralit/src/extralit/records/_search.py | 8 +- extralit/src/extralit/responses.py | 4 +- extralit/src/extralit/settings/__init__.py | 2 +- extralit/src/extralit/settings/_common.py | 2 +- .../src/extralit/settings/_io/__init__.py | 2 +- extralit/src/extralit/settings/_io/_hub.py | 2 +- extralit/src/extralit/settings/_resource.py | 10 +- .../extralit/settings/_task_distribution.py | 2 +- extralit/src/extralit/settings/_templates.py | 2 +- extralit/src/extralit/settings/_vector.py | 4 +- extralit/src/extralit/suggestions.py | 4 +- extralit/src/extralit/users/__init__.py | 2 +- extralit/src/extralit/users/_resource.py | 12 +- extralit/src/extralit/vectors.py | 8 +- extralit/src/extralit/webhooks/__init__.py | 2 +- extralit/src/extralit/webhooks/_event.py | 2 +- extralit/src/extralit/webhooks/_handler.py | 2 +- extralit/src/extralit/webhooks/_helpers.py | 2 +- extralit/src/extralit/webhooks/_resource.py | 4 +- extralit/src/extralit/workspaces/__init__.py | 2 +- extralit/src/extralit/workspaces/_resource.py | 4 +- .../unit/api/test_workspace_documents_api.py | 2 +- .../unit/helpers/test_spaces_deployment.py | 2 +- .../unit/models/test_workspace_models.py | 2 +- extralit/tests/unit/test_interface.py | 2 +- extralit/tests/unit/test_markdown.py | 2 +- extralit/tests/unit/test_media.py | 2 +- extralit/tests/unit/test_record_fields.py | 2 +- extralit/tests/unit/test_record_responses.py | 2 +- .../tests/unit/test_record_suggestions.py | 2 +- .../unit/test_resources/test_responses.py | 2 +- .../tests/unit/test_search/test_filters.py | 2 +- .../test_settings/test_settings_templates.py | 4 +- 217 files changed, 1417 insertions(+), 1420 deletions(-) diff --git a/.github/actions/docker-image-tag-from-ref/action.yml b/.github/actions/docker-image-tag-from-ref/action.yml index 1a86bad7f..5a7b9065b 100644 --- a/.github/actions/docker-image-tag-from-ref/action.yml +++ b/.github/actions/docker-image-tag-from-ref/action.yml @@ -1,6 +1,6 @@ name: Get Docker image tag from GITHUB_REF description: Gets a valid Docker image tag from the GITHUB_REF environment variable -author: Argilla +author: Extralit outputs: docker-image-tag: description: A valid Docker image tag created from GITHUB_REF environment variable diff --git a/.github/actions/generate-credentials/action.yml b/.github/actions/generate-credentials/action.yml index 4fa17ecd6..d44ec6f41 100644 --- a/.github/actions/generate-credentials/action.yml +++ b/.github/actions/generate-credentials/action.yml @@ -1,6 +1,6 @@ name: Generate credentials description: Generate credentials for the default users of the PR environment -author: Argilla +author: Extralit outputs: owner: description: The password and API Key for the 'owner' user diff --git a/.github/actions/slack-post-credentials/action.yml b/.github/actions/slack-post-credentials/action.yml index d77794092..08169bffe 100644 --- a/.github/actions/slack-post-credentials/action.yml +++ b/.github/actions/slack-post-credentials/action.yml @@ -1,6 +1,6 @@ -name: Argilla Environment Post Credentials +name: Extralit Environment Post Credentials description: Post the user credentials for the PR environment in Slack channel -author: Argilla +author: Extralit inputs: slack-channel-name: description: The name of the Slack channel where the credentials will be posted. diff --git a/README.md b/README.md index 150ed1ba1..380c48d5a 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ See [https://docs.extralit.ai/latest/getting_started/quickstart/](https://docs.e Extralit is built on top of Argilla, extending its capabilities with enhanced data extraction, validation, and human-in-the-loop workflows, with these 5 core components: - **Python SDK**: A Python SDK which is installable with `pip install extralit` to interact with the web server and provides an API to manage the data extraction workflows. -- **FastAPI Server**: The backbone of Argilla, handling users, storage, and API interactions. It manages application data using a relational database (PostgreSQL by default). +- **FastAPI Server**: The backbone of Extralit, handling users, storage, and API interactions. It manages application data using a relational database (PostgreSQL by default). - **Web UI**: A web application to visualize and annotate your data, users and teams. It is built with *Vue.js* and *Nuxt.js* and is directly deployed alongside the FastAPI Server within our Docker image. - **Vector Database**: A vector database to store the records data and perform scalable vector similarity searches and basic document searches. We currently support *ElasticSearch* and *AWS OpenSearch* and they can be deployed as separate Docker images. diff --git a/examples/custom_field/custom_field.ipynb b/examples/custom_field/custom_field.ipynb index a54eefe50..54efe4d3d 100644 --- a/examples/custom_field/custom_field.ipynb +++ b/examples/custom_field/custom_field.ipynb @@ -12,12 +12,12 @@ "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[4], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdatetime\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m datetime\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mrg\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdatasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m load_dataset\n\u001b[1;32m 6\u001b[0m client \u001b[38;5;241m=\u001b[39m rg\u001b[38;5;241m.\u001b[39mArgilla()\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/__init__.py:15\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Argilla, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# See the License for the specific language governing permissions and\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m# limitations under the License.\u001b[39;00m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_version\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m __version__ \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclient\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdatasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mworkspaces\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n", + "Cell \u001b[0;32mIn[4], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdatetime\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m datetime\n\u001b[0;32m----> 3\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m \u001b[38;5;21;01mrg\u001b[39;00m\n\u001b[1;32m 4\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mdatasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m load_dataset\n\u001b[1;32m 6\u001b[0m client \u001b[38;5;241m=\u001b[39m rg\u001b[38;5;241m.\u001b[39mExtralit()\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/__init__.py:15\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Extralit, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# See the License for the specific language governing permissions and\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m# limitations under the License.\u001b[39;00m\n\u001b[1;32m 14\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_version\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m __version__ \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mclient\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdatasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mworkspaces\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa\u001b[39;00m\n", "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/client.py:22\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtyping\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m TYPE_CHECKING, List, Optional, Union, overload\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01muuid\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UUID\n\u001b[0;32m---> 22\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m _api\n\u001b[1;32m 23\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_base\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ResourceAPI\n\u001b[1;32m 24\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_client\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m DEFAULT_HTTP_CONFIG\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/__init__.py:15\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Argilla, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# See the License for the specific language governing permissions and\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m# limitations under the License.\u001b[39;00m\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_datasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_http\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_workspaces\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/__init__.py:15\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Extralit, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[38;5;66;03m# See the License for the specific language governing permissions and\u001b[39;00m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;66;03m# limitations under the License.\u001b[39;00m\n\u001b[0;32m---> 15\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_datasets\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_http\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_workspaces\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;241m*\u001b[39m \u001b[38;5;66;03m# noqa 403\u001b[39;00m\n", "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_datasets.py:21\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_base\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ResourceAPI\n\u001b[1;32m 20\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_exceptions\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_api\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m api_error_handler\n\u001b[0;32m---> 21\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m DatasetModel\n\u001b[1;32m 23\u001b[0m __all__ \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mDatasetsAPI\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 25\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_dataset_progress\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UserProgressModel, DatasetProgressModel\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_models/__init__.py:17\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Argilla, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m# We skip the flake8 check because we are importing all the models and the import order is important\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# flake8: noqa\u001b[39;00m\n\u001b[0;32m---> 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_resource\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ResourceModel\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_workspace\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m WorkspaceModel\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_user\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UserModel, Role\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_models/__init__.py:17\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;66;03m# Copyright 2024-present, Extralit, Inc.\u001b[39;00m\n\u001b[1;32m 2\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 3\u001b[0m \u001b[38;5;66;03m# Licensed under the Apache License, Version 2.0 (the \"License\");\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;66;03m# We skip the flake8 check because we are importing all the models and the import order is important\u001b[39;00m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;66;03m# flake8: noqa\u001b[39;00m\n\u001b[0;32m---> 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_resource\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m ResourceModel\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_workspace\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m WorkspaceModel\n\u001b[1;32m 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01margilla\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_models\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01m_user\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UserModel, Role\n", "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_models/_resource.py:19\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mtyping\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Optional\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01muuid\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m UUID\n\u001b[0;32m---> 19\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpydantic\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m BaseModel, field_serializer\n\u001b[1;32m 22\u001b[0m \u001b[38;5;28;01mclass\u001b[39;00m \u001b[38;5;21;01mResourceModel\u001b[39;00m(BaseModel):\n\u001b[1;32m 23\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Base model for all resources (DatasetModel, WorkspaceModel, UserModel, etc.)\"\"\"\u001b[39;00m\n", "\u001b[0;31mImportError\u001b[0m: cannot import name 'field_serializer' from 'pydantic' (/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/pydantic/__init__.cpython-39-darwin.so)" ] @@ -26,7 +26,7 @@ "source": [ "from datetime import datetime\n", "\n", - "import argilla as rg\n", + "import extralit as ex\n", "from datasets import load_dataset\n", "\n", "client = ex.Extralit()" diff --git a/examples/custom_field/table_field.ipynb b/examples/custom_field/table_field.ipynb index b94c1fbc0..5644f404b 100644 --- a/examples/custom_field/table_field.ipynb +++ b/examples/custom_field/table_field.ipynb @@ -23,7 +23,7 @@ "from datetime import datetime\n", "import json\n", "\n", - "import argilla as rg\n", + "import extralit as ex\n", "from datasets import load_dataset\n", "\n", "client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')" diff --git a/examples/deployments/README.md b/examples/deployments/README.md index f61e9fff3..020798ef2 100644 --- a/examples/deployments/README.md +++ b/examples/deployments/README.md @@ -1,6 +1,6 @@ -## Argilla server deployment examples +## Extralit server deployment examples -This directory contains configuration files for deploying Argilla server in different environments. +This directory contains configuration files for deploying Extralit server in different environments. - [Docker](docker): Docker deployment example files - [Kubernetes](k8s): Kubernetes deployment example files. \ No newline at end of file diff --git a/examples/deployments/k8s/extralit-chart/README.md b/examples/deployments/k8s/extralit-chart/README.md index 2af644e02..19939637a 100644 --- a/examples/deployments/k8s/extralit-chart/README.md +++ b/examples/deployments/k8s/extralit-chart/README.md @@ -1,6 +1,6 @@ -# Argilla Helm Chart +# Extralit Helm Chart -This Helm chart deploys Argilla Server on Kubernetes. +This Helm chart deploys Extralit Server on Kubernetes. ## Prerequisites @@ -29,7 +29,7 @@ For more detailed installation instructions, please refer to the [official Helm ## Adding the Helm Repository -To add the Argilla Helm repository to your Helm installation, run the following command: +To add the Extralit Helm repository to your Helm installation, run the following command: ```bash helm repo add stable https://charts.helm.sh/stable @@ -81,13 +81,13 @@ kubectl get pods -w ``` All the pods should be in the `Running` state. -## Accessing Argilla +## Accessing Extralit -In a different terminal window, run the following command to access Argilla: +In a different terminal window, run the following command to access Extralit: ```bash kubectl port-forward svc/my-extralit-server 6900 ``` -Argilla will be accessible at http://localhost:6900. +Extralit will be accessible at http://localhost:6900. ## Execute integration tests diff --git a/examples/deployments/k8s/extralit-chart/templates/NOTES.txt b/examples/deployments/k8s/extralit-chart/templates/NOTES.txt index e5460bb98..08ec5d504 100644 --- a/examples/deployments/k8s/extralit-chart/templates/NOTES.txt +++ b/examples/deployments/k8s/extralit-chart/templates/NOTES.txt @@ -8,21 +8,21 @@ To learn more about the release, try: $ helm get all {{ .Release.Name }} -Argilla: +Extralit: {{- if .Values.extralit.ingress.enabled }} - You can access the Argilla server at: http://{{ .Values.extralit.ingress.host }} + You can access the Extralit server at: http://{{ .Values.extralit.ingress.host }} {{- else }} - To access the Argilla server, run these commands: + To access the Extralit server, run these commands: $ export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "extralit.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") $ kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 6900:6900 -Then access the Argilla server at http://localhost:6900 +Then access the Extralit server at http://localhost:6900 {{- end }} {{- if .Values.extralit.persistence.enabled }} - Persistence is enabled for Argilla. - Your Argilla data will be stored in a Persistent Volume Claim named: {{ .Release.Name }}-extralit-pvc - To find the actual storage location of your Argilla data, run the following command: + Persistence is enabled for Extralit. + Your Extralit data will be stored in a Persistent Volume Claim named: {{ .Release.Name }}-extralit-pvc + To find the actual storage location of your Extralit data, run the following command: $ kubectl get pvc {{ .Release.Name }}-extralit-pvc -o jsonpath="{.spec.volumeName}" $ kubectl get pv -o jsonpath="{.spec.hostPath.path}" {{- end }} diff --git a/examples/deployments/k8s/extralit-chart/templates/_helpers.tpl b/examples/deployments/k8s/extralit-chart/templates/_helpers.tpl index 421733573..4c9ac1a46 100644 --- a/examples/deployments/k8s/extralit-chart/templates/_helpers.tpl +++ b/examples/deployments/k8s/extralit-chart/templates/_helpers.tpl @@ -56,7 +56,7 @@ Create chart name and version as used by the chart label. {{- end }} {{/* -Argilla Worker labels +Extralit Worker labels */}} {{- define "worker.labels" -}} helm.sh/chart: {{ include "extralit.chart" . }} @@ -68,7 +68,7 @@ app.kubernetes.io/managed-by: {{ .Release.Service }} {{- end }} {{/* -Argilla Worker Selector labels +Extralit Worker Selector labels */}} {{- define "worker.selectorLabels" -}} app.kubernetes.io/component: worker diff --git a/examples/document_extraction/LLM_extractions.ipynb b/examples/document_extraction/LLM_extractions.ipynb index 7e0f55e7e..fe1bbd227 100644 --- a/examples/document_extraction/LLM_extractions.ipynb +++ b/examples/document_extraction/LLM_extractions.ipynb @@ -58,7 +58,7 @@ "\n", "import pandas as pd\n", "# import plotly.express as px\n", - "import argilla as rg\n", + "import extralit as ex\n", "\n", "import extralit\n", "from extralit.pipeline.ingest.paper import get_paper_extractions\n", @@ -923,7 +923,7 @@ "These steps are to easily make versioned updates to *existing* schemas or to add new schemas:\n", "1. Update the schema specs in the `pandera.DataFrameSchema` classes located in the `schemas/*.py` files, then import the classes to load the changes.\n", "2. Apply the changes to the server using `.to_s3`, which uploads these schema .json files to a MinIO file object storage server. If a schema already exists, then it would create a new version of the schema file, while keeping the old versions intact.\n", - " - Make sures that the `workspace` argument matches the Argilla workspace name for your project.\n", + " - Make sures that the `workspace` argument matches the Extralit workspace name for your project.\n", " - You may browse and manipulate all uploaded files in the MinIO Console, if connected to the K8s cluster\n", "3. The extraction tables in the Extralit web UI will automatically fetch the latest version of the schemas that were uploaded, or allow you to update to a new schema version if the table was built with an older version." ] @@ -18876,12 +18876,12 @@ "data": { "text/html": [ "
[06/20/24 16:29:19] INFO     INFO:argilla.client.feedback.dataset.local.mixins:✓ Dataset succesfully  mixins.py:306\n",
-                            "                             pushed to Argilla                                                                     \n",
+                            "                             pushed to Extralit                                                                     \n",
                             "
\n" ], "text/plain": [ "\u001b[2;36m[06/20/24 16:29:19]\u001b[0m\u001b[2;36m \u001b[0m\u001b[34mINFO \u001b[0m INFO:argilla.client.feedback.dataset.local.mixins:✓ Dataset succesfully \u001b]8;id=762461;file:///Users/jonnytr/Projects/argilla-data-extraction/argilla/src/argilla/client/feedback/dataset/local/mixins.py\u001b\\\u001b[2mmixins.py\u001b[0m\u001b]8;;\u001b\\\u001b[2m:\u001b[0m\u001b]8;id=533519;file:///Users/jonnytr/Projects/argilla-data-extraction/argilla/src/argilla/client/feedback/dataset/local/mixins.py#306\u001b\\\u001b[2m306\u001b[0m\u001b]8;;\u001b\\\n", - "\u001b[2;36m \u001b[0m pushed to Argilla \u001b[2m \u001b[0m\n" + "\u001b[2;36m \u001b[0m pushed to Extralit \u001b[2m \u001b[0m\n" ] }, "metadata": {}, diff --git a/examples/document_extraction/PDF_preprocessing.ipynb b/examples/document_extraction/PDF_preprocessing.ipynb index 25b85618e..7420b41c3 100644 --- a/examples/document_extraction/PDF_preprocessing.ipynb +++ b/examples/document_extraction/PDF_preprocessing.ipynb @@ -43,11 +43,11 @@ "import pandas as pd\n", "import numpy as np\n", "\n", - "import argilla as rg\n", - "from argilla.client.feedback.schemas.enums import ResponseStatusFilter\n", - "from argilla.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor\n", - "from argilla.client.feedback.utils import create_token_highlights, audio_to_html, image_to_html, video_to_html\n", - "from argilla.client.feedback.utils import assign_records, assign_workspaces\n", + "import extralit as ex\n", + "from extralit.client.feedback.schemas.enums import ResponseStatusFilter\n", + "from extralit.client.feedback.integrations.textdescriptives import TextDescriptivesExtractor\n", + "from extralit.client.feedback.utils import create_token_highlights, audio_to_html, image_to_html, video_to_html\n", + "from extralit.client.feedback.utils import assign_records, assign_workspaces\n", "\n", "from pdf2image import convert_from_path\n", "\n", @@ -222,7 +222,7 @@ }, "outputs": [], "source": [ - "# Upload PDFs if not already exist in the Argilla database\n", + "# Upload PDFs if not already exist in the Extralit database\n", "# for ref, paper in tqdm(papers.iterrows()):\n", "# doc = remote_dataset.add_document(ex.Document.from_file(\n", "# paper.file_path, reference=ref, pmid=paper.pmid, doi=paper.doi, id=paper.get('id')))" @@ -271,7 +271,7 @@ "id": "76af3e87-93ee-42ef-a2c8-1caee119b151", "metadata": {}, "source": [ - "# Push to Argilla" + "# Push to Extralit" ] }, { @@ -1873,11 +1873,11 @@ { "data": { "text/html": [ - "
Pushing records to Argilla... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━  90% 0:00:04\n",
+                            "
Pushing records to Extralit... ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸━━━━  90% 0:00:04\n",
                             "
\n" ], "text/plain": [ - "Pushing records to Argilla... \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;2;249;38;114m╸\u001b[0m\u001b[38;5;237m━━━━\u001b[0m \u001b[35m 90%\u001b[0m \u001b[36m0:00:04\u001b[0m\n" + "Pushing records to Extralit... \u001b[38;2;249;38;114m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[38;2;249;38;114m╸\u001b[0m\u001b[38;5;237m━━━━\u001b[0m \u001b[35m 90%\u001b[0m \u001b[36m0:00:04\u001b[0m\n" ] }, "metadata": {}, diff --git a/examples/document_extraction/setup_workspace.ipynb b/examples/document_extraction/setup_workspace.ipynb index 537b83aa5..c59dd9376 100644 --- a/examples/document_extraction/setup_workspace.ipynb +++ b/examples/document_extraction/setup_workspace.ipynb @@ -1,580 +1,580 @@ { - "cells": [ - { - "cell_type": "markdown", - "id": "f9d7358b", - "metadata": {}, - "source": [ - "# Setting Up Workspaces in Argilla\n", - "\n", - "In this tutorial, we will learn how to set up and manage workspaces in Argilla using the default credentials on a fresh installation. It will walk you through the following steps:\n", - "\n", - "1. Connecting to Argilla with default credentials 🔑\n", - "2. Creating your first workspace 🏗️\n", - "3. Listing available workspaces 📋\n", - "4. Adding PDF documents to the workspace 📄\n", - "5. Creating and uploading a schema 📊\n", - "6. Running PDF preprocessing 🔍\n", - "7. Running LLM extractions 🤖\n", - "\n", - "![Argilla Workspace Management](https://raw.githubusercontent.com/argilla-io/argilla/main/docs/assets/argilla_workspace_management.png)\n", - "\n", - "## Introduction\n", - "\n", - "A **workspace** is a space inside your Argilla instance where authorized users can collaborate on datasets. Workspaces are accessible through both the Python SDK and the UI. When you first install Argilla, you'll need to create workspaces to organize your data and user access.\n", - "\n", - "For more details on workspace management, refer to the [Argilla documentation](https://docs.extralit.ai/latest/admin_guide/workspace/).\n", - "\n", - "Let's get started!\n" - ] - }, - { - "cell_type": "markdown", - "id": "5601c172", - "metadata": {}, - "source": [ - "## 1. Connecting to Argilla\n", - "\n", - "First, we need to import the Argilla library and connect to our instance using the default credentials." - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "ce009aae", - "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] + "cells": [ + { + "cell_type": "markdown", + "id": "f9d7358b", + "metadata": {}, + "source": [ + "# Setting Up Workspaces in Extralit\n", + "\n", + "In this tutorial, we will learn how to set up and manage workspaces in Extralit using the default credentials on a fresh installation. It will walk you through the following steps:\n", + "\n", + "1. Connecting to Extralit with default credentials 🔑\n", + "2. Creating your first workspace 🏗️\n", + "3. Listing available workspaces 📋\n", + "4. Adding PDF documents to the workspace 📄\n", + "5. Creating and uploading a schema 📊\n", + "6. Running PDF preprocessing 🔍\n", + "7. Running LLM extractions 🤖\n", + "\n", + "![Extralit Workspace Management](https://raw.githubusercontent.com/argilla-io/argilla/main/docs/assets/argilla_workspace_management.png)\n", + "\n", + "## Introduction\n", + "\n", + "A **workspace** is a space inside your Extralit instance where authorized users can collaborate on datasets. Workspaces are accessible through both the Python SDK and the UI. When you first install Extralit, you'll need to create workspaces to organize your data and user access.\n", + "\n", + "For more details on workspace management, refer to the [Extralit documentation](https://docs.extralit.ai/latest/admin_guide/workspace/).\n", + "\n", + "Let's get started!\n" + ] + }, + { + "cell_type": "markdown", + "id": "5601c172", + "metadata": {}, + "source": [ + "## 1. Connecting to Extralit\n", + "\n", + "First, we need to import the Extralit library and connect to our instance using the default credentials." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "ce009aae", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/jonny/micromamba/envs/extralit/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", + " from .autonotebook import tqdm as notebook_tqdm\n" + ] + }, + { + "ename": "ConnectError", + "evalue": "[Errno 61] Connection refused", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:67\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 67\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:256\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_close_connections(closing)\n\u001b[0;32m--> 256\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 258\u001b[0m \u001b[38;5;66;03m# Return the response. Note that in this case we still have to manage\u001b[39;00m\n\u001b[1;32m 259\u001b[0m \u001b[38;5;66;03m# the point at which the response is closed.\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:236\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 235\u001b[0m \u001b[38;5;66;03m# Send the request on the assigned connection.\u001b[39;00m\n\u001b[0;32m--> 236\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 237\u001b[0m \u001b[43m \u001b[49m\u001b[43mpool_request\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\n\u001b[1;32m 238\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 239\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ConnectionNotAvailable:\n\u001b[1;32m 240\u001b[0m \u001b[38;5;66;03m# In some cases a connection may initially be available to\u001b[39;00m\n\u001b[1;32m 241\u001b[0m \u001b[38;5;66;03m# handle a request, but then become unavailable.\u001b[39;00m\n\u001b[1;32m 242\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 243\u001b[0m \u001b[38;5;66;03m# In this case we clear the connection and try again.\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:101\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connect_failed \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 101\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 103\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection\u001b[38;5;241m.\u001b[39mhandle_request(request)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:78\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 78\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_connect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 80\u001b[0m ssl_object \u001b[38;5;241m=\u001b[39m stream\u001b[38;5;241m.\u001b[39mget_extra_info(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mssl_object\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:124\u001b[0m, in \u001b[0;36mHTTPConnection._connect\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m Trace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mconnect_tcp\u001b[39m\u001b[38;5;124m\"\u001b[39m, logger, request, kwargs) \u001b[38;5;28;01mas\u001b[39;00m trace:\n\u001b[0;32m--> 124\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_network_backend\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect_tcp\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 125\u001b[0m trace\u001b[38;5;241m.\u001b[39mreturn_value \u001b[38;5;241m=\u001b[39m stream\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_backends/sync.py:215\u001b[0m, in \u001b[0;36mSyncBackend.connect_tcp\u001b[0;34m(self, host, port, timeout, local_address, socket_options)\u001b[0m\n\u001b[1;32m 214\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(\u001b[38;5;241m*\u001b[39moption) \u001b[38;5;66;03m# pragma: no cover\u001b[39;00m\n\u001b[0;32m--> 215\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(socket\u001b[38;5;241m.\u001b[39mIPPROTO_TCP, socket\u001b[38;5;241m.\u001b[39mTCP_NODELAY, \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 216\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m SyncStream(sock)\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_exceptions.py:14\u001b[0m, in \u001b[0;36mmap_exceptions\u001b[0;34m(map)\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(exc, from_exc):\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m to_exc(exc) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", + "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpathlib\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Path\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Connect to Extralit using default credentials\u001b[39;00m\n\u001b[0;32m---> 11\u001b[0m client \u001b[38;5;241m=\u001b[39m \u001b[43mrg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mExtralit\u001b[49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mhttp://localhost:6900/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mextralit.apikey\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSuccessfully connected to Extralit at \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclient\u001b[38;5;241m.\u001b[39mapi_url\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/client.py:73\u001b[0m, in \u001b[0;36mExtralit.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 53\u001b[0m api_url: Optional[\u001b[38;5;28mstr\u001b[39m] \u001b[38;5;241m=\u001b[39m DEFAULT_HTTP_CONFIG\u001b[38;5;241m.\u001b[39mapi_url,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mhttp_client_args,\n\u001b[1;32m 58\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 59\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Inits the `Extralit` client.\u001b[39;00m\n\u001b[1;32m 60\u001b[0m \n\u001b[1;32m 61\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;124;03m before raising an exception. Defaults to `5`.\u001b[39;00m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 73\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_url\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_key\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mhttp_client_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_default(\u001b[38;5;28mself\u001b[39m)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:146\u001b[0m, in \u001b[0;36mAPIClient.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mapi \u001b[38;5;241m=\u001b[39m ExtralitAPI(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhttp_client)\n\u001b[1;32m 145\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 146\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_connection\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m UnauthorizedError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ExtralitCredentialsError() \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:160\u001b[0m, in \u001b[0;36mAPIClient._validate_connection\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_validate_connection\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 160\u001b[0m user \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43musers\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_me\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 161\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLogged in as \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39musername\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m with the role \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39mrole\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 162\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog(message\u001b[38;5;241m=\u001b[39mmessage, level\u001b[38;5;241m=\u001b[39mlogging\u001b[38;5;241m.\u001b[39mINFO)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_exceptions/_api.py:91\u001b[0m, in \u001b[0;36mapi_error_handler.._handler_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_handler_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 91\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m HTTPStatusError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 93\u001b[0m _error_switch(status_code\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mstatus_code, error_detail\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mtext)\n", + "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_users.py:90\u001b[0m, in \u001b[0;36mUsersAPI.get_me\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[38;5;129m@api_error_handler\u001b[39m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget_me\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m UserModel:\n\u001b[0;32m---> 90\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhttp_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/api/v1/me\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 91\u001b[0m response\u001b[38;5;241m.\u001b[39mraise_for_status()\n\u001b[1;32m 92\u001b[0m response_json \u001b[38;5;241m=\u001b[39m response\u001b[38;5;241m.\u001b[39mjson()\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1055\u001b[0m, in \u001b[0;36mClient.get\u001b[0;34m(self, url, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 1038\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget\u001b[39m(\n\u001b[1;32m 1039\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 1040\u001b[0m url: URLTypes,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1048\u001b[0m extensions: typing\u001b[38;5;241m.\u001b[39mOptional[RequestExtensions] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 1049\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Response:\n\u001b[1;32m 1050\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1051\u001b[0m \u001b[38;5;124;03m Send a `GET` request.\u001b[39;00m\n\u001b[1;32m 1052\u001b[0m \n\u001b[1;32m 1053\u001b[0m \u001b[38;5;124;03m **Parameters**: See `httpx.request`.\u001b[39;00m\n\u001b[1;32m 1054\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1055\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1056\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mGET\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1057\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1058\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1059\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1060\u001b[0m \u001b[43m \u001b[49m\u001b[43mcookies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcookies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1061\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1062\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1063\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1064\u001b[0m \u001b[43m \u001b[49m\u001b[43mextensions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextensions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1065\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:828\u001b[0m, in \u001b[0;36mClient.request\u001b[0;34m(self, method, url, content, data, files, json, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 813\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(message, \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m)\n\u001b[1;32m 815\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuild_request(\n\u001b[1;32m 816\u001b[0m method\u001b[38;5;241m=\u001b[39mmethod,\n\u001b[1;32m 817\u001b[0m url\u001b[38;5;241m=\u001b[39murl,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 826\u001b[0m extensions\u001b[38;5;241m=\u001b[39mextensions,\n\u001b[1;32m 827\u001b[0m )\n\u001b[0;32m--> 828\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:915\u001b[0m, in \u001b[0;36mClient.send\u001b[0;34m(self, request, stream, auth, follow_redirects)\u001b[0m\n\u001b[1;32m 907\u001b[0m follow_redirects \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 908\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfollow_redirects\n\u001b[1;32m 909\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(follow_redirects, UseClientDefault)\n\u001b[1;32m 910\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m follow_redirects\n\u001b[1;32m 911\u001b[0m )\n\u001b[1;32m 913\u001b[0m auth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_build_request_auth(request, auth)\n\u001b[0;32m--> 915\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_auth\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 916\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 917\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 918\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 919\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 920\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 921\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 922\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m stream:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:943\u001b[0m, in \u001b[0;36mClient._send_handling_auth\u001b[0;34m(self, request, auth, follow_redirects, history)\u001b[0m\n\u001b[1;32m 940\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mnext\u001b[39m(auth_flow)\n\u001b[1;32m 942\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 943\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_redirects\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhistory\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 948\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 949\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:980\u001b[0m, in \u001b[0;36mClient._send_handling_redirects\u001b[0;34m(self, request, follow_redirects, history)\u001b[0m\n\u001b[1;32m 977\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrequest\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[1;32m 978\u001b[0m hook(request)\n\u001b[0;32m--> 980\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_single_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 982\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresponse\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1016\u001b[0m, in \u001b[0;36mClient._send_single_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 1011\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 1012\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAttempted to send an async request with a sync Client instance.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1013\u001b[0m )\n\u001b[1;32m 1015\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m request_context(request\u001b[38;5;241m=\u001b[39mrequest):\n\u001b[0;32m-> 1016\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mtransport\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1018\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(response\u001b[38;5;241m.\u001b[39mstream, SyncByteStream)\n\u001b[1;32m 1020\u001b[0m response\u001b[38;5;241m.\u001b[39mrequest \u001b[38;5;241m=\u001b[39m request\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 218\u001b[0m req \u001b[38;5;241m=\u001b[39m httpcore\u001b[38;5;241m.\u001b[39mRequest(\n\u001b[1;32m 219\u001b[0m method\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mmethod,\n\u001b[1;32m 220\u001b[0m url\u001b[38;5;241m=\u001b[39mhttpcore\u001b[38;5;241m.\u001b[39mURL(\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 228\u001b[0m extensions\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 229\u001b[0m )\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_pool\u001b[38;5;241m.\u001b[39mhandle_request(req)\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n\u001b[1;32m 235\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m Response(\n\u001b[1;32m 236\u001b[0m status_code\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mstatus,\n\u001b[1;32m 237\u001b[0m headers\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mheaders,\n\u001b[1;32m 238\u001b[0m stream\u001b[38;5;241m=\u001b[39mResponseStream(resp\u001b[38;5;241m.\u001b[39mstream),\n\u001b[1;32m 239\u001b[0m extensions\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 240\u001b[0m )\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 135\u001b[0m value \u001b[38;5;241m=\u001b[39m typ()\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m value\n", + "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:84\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n\u001b[1;32m 83\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(exc)\n\u001b[0;32m---> 84\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m mapped_exc(message) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n", + "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused" + ] + } + ], + "source": [ + "import extralit as ex\n", + "import extralit as ex\n", + "import pandas as pd\n", + "import pandera as pa\n", + "from pandera.typing import Index, Series\n", + "import os\n", + "import tempfile\n", + "from pathlib import Path\n", + "\n", + "# Connect to Extralit using default credentials\n", + "client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')\n", + "\n", + "print(f\"Successfully connected to Extralit at {client.api_url}\")" + ] + }, + { + "cell_type": "markdown", + "id": "fcdd3afe", + "metadata": {}, + "source": [ + "## 2. Creating Your First Workspace\n", + "\n", + "After connecting to Extralit, let's create our first workspace. We'll define a new `Workspace` object and call the `create()` method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "64b5f09b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Workspace 'test-workspace' created successfully with ID: df91e2b9-c712-4474-af82-891478f23d40\n" + ] + } + ], + "source": [ + "# Define a new workspace\n", + "workspace_name = \"test_workspace\"\n", + "new_workspace = ex.Workspace(name=workspace_name, client=client)\n", + "\n", + "# Create the workspace\n", + "created_workspace = new_workspace.create()\n", + "\n", + "print(f\"Workspace '{workspace_name}' created successfully with ID: {created_workspace.id}\")" + ] + }, + { + "cell_type": "markdown", + "id": "c937e5c7", + "metadata": {}, + "source": [ + "## 3. Listing Available Workspaces\n", + "\n", + "Now, let's check all the workspaces available in our Extralit instance." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d4df67d6", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total number of workspaces: 1\n", + "\n" + ] + }, + { + "data": { + "text/html": [ + "

Workspaces

nameidupdated_at
test-workspacedf91e2b9-c712-4474-af82-891478f23d402025-04-16T01:27:58.174591
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# List all workspaces\n", + "workspaces = client.workspaces\n", + "\n", + "# Display workspace information\n", + "print(f\"Total number of workspaces: {len(workspaces)}\\n\")\n", + "\n", + "# In a notebook, this will display a table with workspace information\n", + "workspaces" + ] + }, + { + "cell_type": "markdown", + "id": "8ca5b2b8", + "metadata": {}, + "source": [ + "## 4. Adding PDF Documents to the Workspace\n", + "\n", + "Let's add two PDF documents to our workspace. For this tutorial, we'll create temporary PDF files. In a real-world scenario, you'd use actual scientific papers." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "59084a6d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Created reference CSV at /tmp/references.csv\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
referencefile_pathtitleauthorsyear
0smith2023first/tmp/sample1.pdfStudy on Sample DataSmith, J.2023
1johnson2022analysis/tmp/sample2.pdfAnalysis of Experimental ResultsJohnson, A.2022
\n", + "
" + ], + "text/plain": [ + " reference file_path title \\\n", + "0 smith2023first /tmp/sample1.pdf Study on Sample Data \n", + "1 johnson2022analysis /tmp/sample2.pdf Analysis of Experimental Results \n", + "\n", + " authors year \n", + "0 Smith, J. 2023 \n", + "1 Johnson, A. 2022 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# In a real-world scenario, you would use actual PDFs. Here we'll create temp files\n", + "# Define the paths for our temporary PDF files\n", + "temp_dir = tempfile.gettempdir()\n", + "pdf_file1 = Path(temp_dir) / \"sample1.pdf\"\n", + "pdf_file2 = Path(temp_dir) / \"sample2.pdf\"\n", + "\n", + "# Create empty PDF files - in reality, these would be your actual PDFs\n", + "with open(pdf_file1, \"wb\") as f:\n", + " f.write(b\"%PDF-1.5\\n%Example Document 1\")\n", + " \n", + "with open(pdf_file2, \"wb\") as f:\n", + " f.write(b\"%PDF-1.5\\n%Example Document 2\")\n", + "\n", + "# Create a reference dataframe with metadata for the PDFs\n", + "references_df = pd.DataFrame({\n", + " \"reference\": [\"smith2023first\", \"johnson2022analysis\"],\n", + " \"file_path\": [str(pdf_file1), str(pdf_file2)],\n", + " \"title\": [\"Study on Sample Data\", \"Analysis of Experimental Results\"],\n", + " \"authors\": [\"Smith, J.\", \"Johnson, A.\"],\n", + " \"year\": [2023, 2022]\n", + "})\n", + "\n", + "# Save the dataframe to a temporary CSV file\n", + "references_csv = Path(temp_dir) / \"references.csv\"\n", + "references_df.to_csv(references_csv, index=False)\n", + "\n", + "print(f\"Created reference CSV at {references_csv}\")\n", + "references_df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "abc8562f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Workspace(id=UUID('df91e2b9-c712-4474-af82-891478f23d40') inserted_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) updated_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) name='test-workspace')" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "new_workspace" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a147c6c2", + "metadata": {}, + "outputs": [], + "source": [ + "# Import the documents into the workspace\n", + "# For demonstration purposes, we'll use the extralit client directly\n", + "# Initialize the extralit client with the same credentials\n", + "extralit_client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')\n", + "\n", + "# Import the documents\n", + "result = extralit_client.import_documents(\n", + " workspace=workspace_name,\n", + " papers=str(references_csv),\n", + " metadatas=[\"title\", \"authors\", \"year\"]\n", + ")\n", + "\n", + "print(f\"Imported {len(result)} documents into workspace '{workspace_name}'\")" + ] + }, + { + "cell_type": "markdown", + "id": "98a2025d", + "metadata": {}, + "source": [ + "## 5. Creating and Uploading a Schema\n", + "\n", + "Now, let's create a simple schema to define the structure of the data we want to extract from our documents." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f15f4b2f", + "metadata": {}, + "outputs": [], + "source": [ + "# Define a simple schema using Pandera\n", + "class Publication(pa.DataFrameModel):\n", + " \"\"\"\n", + " General information about the publication, extracted once per paper.\n", + " \"\"\"\n", + " reference: Index[str] = pa.Field(unique=True, check_name=True)\n", + " title: Series[str] = pa.Field()\n", + " authors: Series[str] = pa.Field()\n", + " publication_year: Series[int] = pa.Field(ge=1900, le=2100)\n", + " doi: Series[str] = pa.Field(nullable=True)\n", + " \n", + " class Config:\n", + " singleton = {'enabled': True} # Indicates this is a document-level schema\n", + "\n", + "# Define a second schema for experimental data\n", + "class ExperimentalData(pa.DataFrameModel):\n", + " \"\"\"\n", + " Experimental data extracted from the paper, may appear multiple times.\n", + " \"\"\"\n", + " experiment_id: Series[str] = pa.Field()\n", + " sample_size: Series[int] = pa.Field(gt=0)\n", + " study_type: Series[str] = pa.Field()\n", + " result_value: Series[float] = pa.Field()\n", + " significance: Series[float] = pa.Field(le=1.0, ge=0.0)\n", + "\n", + "# Create a schema structure object\n", + "from extralit.extraction.models.schema import SchemaStructure\n", + "\n", + "# Save schemas to a temporary JSON file\n", + "schema_file = Path(temp_dir) / \"schemas.json\"\n", + "schema_structure = SchemaStructure(schemas={\"Publication\": Publication, \"ExperimentalData\": ExperimentalData})\n", + "schema_structure.to_json(schema_file)\n", + "\n", + "print(f\"Created schema file at {schema_file}\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dc61a1ab", + "metadata": {}, + "outputs": [], + "source": [ + "# Upload the schema to the workspace\n", + "result = extralit_client.upload_schemas(\n", + " workspace=workspace_name,\n", + " schemas=str(schema_file)\n", + ")\n", + "\n", + "print(f\"Uploaded schemas to workspace '{workspace_name}'\")" + ] + }, + { + "cell_type": "markdown", + "id": "7a92c20d", + "metadata": {}, + "source": [ + "## 6. Running PDF Preprocessing\n", + "\n", + "Next, let's run the PDF preprocessing step to extract text and table content from our documents." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "768e7176", + "metadata": {}, + "outputs": [], + "source": [ + "# Run PDF preprocessing\n", + "from extralit.preprocessing.pdf import process_pdfs\n", + "\n", + "# Get the references from our dataframe\n", + "references = references_df[\"reference\"].tolist()\n", + "\n", + "# Run the preprocessing step\n", + "preprocessing_result = process_pdfs(\n", + " workspace=workspace_name,\n", + " references=references,\n", + " text_ocr=[\"default\"], # Using the default text OCR model\n", + " table_ocr=[\"default\"], # Using the default table OCR model\n", + " output_dataset=\"PDF_Preprocessing_Results\"\n", + ")\n", + "\n", + "print(f\"Preprocessing completed for {len(preprocessing_result)} documents\")" + ] + }, + { + "cell_type": "markdown", + "id": "44aa776d", + "metadata": {}, + "source": [ + "## 7. Running LLM Extractions\n", + "\n", + "Finally, let's run the LLM extraction step to extract structured data according to our schema." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19221abe", + "metadata": {}, + "outputs": [], + "source": [ + "# Run LLM extractions\n", + "from extralit.extraction.llm import extract_data\n", + "\n", + "# Run the extraction step\n", + "extraction_result = extract_data(\n", + " workspace=workspace_name,\n", + " references=references,\n", + " output_dataset=\"Data_Extraction_Results\"\n", + ")\n", + "\n", + "print(f\"LLM extractions completed for {len(extraction_result)} documents\")" + ] + }, + { + "cell_type": "markdown", + "id": "c1b6ec61", + "metadata": {}, + "source": [ + "## 8. Checking Extraction Results\n", + "\n", + "Let's check the results of our extractions by listing the datasets created and viewing the extracted data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4dbb695d", + "metadata": {}, + "outputs": [], + "source": [ + "# List datasets in the workspace\n", + "datasets = extralit_client.list_datasets(workspace=workspace_name)\n", + "print(f\"Datasets in workspace '{workspace_name}':\\n\")\n", + "for dataset in datasets:\n", + " print(f\"- {dataset.name} ({dataset.id})\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6eee019d", + "metadata": {}, + "outputs": [], + "source": [ + "# Export the extracted data\n", + "extracted_data = extralit_client.export_data(\n", + " workspace=workspace_name,\n", + " output=\"temp_output.csv\" # This will save the data to a CSV file\n", + ")\n", + "\n", + "# Display the extracted data\n", + "if isinstance(extracted_data, dict):\n", + " for schema_name, data_df in extracted_data.items():\n", + " print(f\"\\nExtracted data for schema '{schema_name}':\\n\")\n", + " display(data_df)\n", + "else:\n", + " print(\"\\nExtracted data:\")\n", + " display(extracted_data)" + ] + }, + { + "cell_type": "markdown", + "id": "7a30a5ea", + "metadata": {}, + "source": [ + "## Conclusion\n", + "\n", + "Congratulations! You've successfully tested the primary functionalities of Extralit with default credentials on a fresh install. You have:\n", + "\n", + "1. Connected to Extralit with default credentials\n", + "2. Created a workspace\n", + "3. Added PDF documents\n", + "4. Created and uploaded a schema\n", + "5. Run PDF preprocessing\n", + "6. Run LLM extractions\n", + "7. Checked the extraction results\n", + "\n", + "This workflow demonstrates the basic process of using Extralit for data extraction from scientific papers. In a real-world scenario, you would upload actual scientific papers and create more complex schemas tailored to your specific data extraction needs.\n", + "\n", + "For more detailed information, refer to the [Extralit documentation](https://docs.extralit.ai/latest/)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.13" + } }, - { - "ename": "ConnectError", - "evalue": "[Errno 61] Connection refused", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:67\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 67\u001b[0m \u001b[38;5;28;01myield\u001b[39;00m\n\u001b[1;32m 68\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_pool\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mreq\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:256\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 255\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_close_connections(closing)\n\u001b[0;32m--> 256\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 258\u001b[0m \u001b[38;5;66;03m# Return the response. Note that in this case we still have to manage\u001b[39;00m\n\u001b[1;32m 259\u001b[0m \u001b[38;5;66;03m# the point at which the response is closed.\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection_pool.py:236\u001b[0m, in \u001b[0;36mConnectionPool.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 234\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 235\u001b[0m \u001b[38;5;66;03m# Send the request on the assigned connection.\u001b[39;00m\n\u001b[0;32m--> 236\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mconnection\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 237\u001b[0m \u001b[43m \u001b[49m\u001b[43mpool_request\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\n\u001b[1;32m 238\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 239\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m ConnectionNotAvailable:\n\u001b[1;32m 240\u001b[0m \u001b[38;5;66;03m# In some cases a connection may initially be available to\u001b[39;00m\n\u001b[1;32m 241\u001b[0m \u001b[38;5;66;03m# handle a request, but then become unavailable.\u001b[39;00m\n\u001b[1;32m 242\u001b[0m \u001b[38;5;66;03m#\u001b[39;00m\n\u001b[1;32m 243\u001b[0m \u001b[38;5;66;03m# In this case we clear the connection and try again.\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:101\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 100\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connect_failed \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mTrue\u001b[39;00m\n\u001b[0;32m--> 101\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m exc\n\u001b[1;32m 103\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection\u001b[38;5;241m.\u001b[39mhandle_request(request)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:78\u001b[0m, in \u001b[0;36mHTTPConnection.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 77\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_connection \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m---> 78\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_connect\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 80\u001b[0m ssl_object \u001b[38;5;241m=\u001b[39m stream\u001b[38;5;241m.\u001b[39mget_extra_info(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mssl_object\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_sync/connection.py:124\u001b[0m, in \u001b[0;36mHTTPConnection._connect\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 123\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m Trace(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mconnect_tcp\u001b[39m\u001b[38;5;124m\"\u001b[39m, logger, request, kwargs) \u001b[38;5;28;01mas\u001b[39;00m trace:\n\u001b[0;32m--> 124\u001b[0m stream \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_network_backend\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mconnect_tcp\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 125\u001b[0m trace\u001b[38;5;241m.\u001b[39mreturn_value \u001b[38;5;241m=\u001b[39m stream\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_backends/sync.py:215\u001b[0m, in \u001b[0;36mSyncBackend.connect_tcp\u001b[0;34m(self, host, port, timeout, local_address, socket_options)\u001b[0m\n\u001b[1;32m 214\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(\u001b[38;5;241m*\u001b[39moption) \u001b[38;5;66;03m# pragma: no cover\u001b[39;00m\n\u001b[0;32m--> 215\u001b[0m sock\u001b[38;5;241m.\u001b[39msetsockopt(socket\u001b[38;5;241m.\u001b[39mIPPROTO_TCP, socket\u001b[38;5;241m.\u001b[39mTCP_NODELAY, \u001b[38;5;241m1\u001b[39m)\n\u001b[1;32m 216\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m SyncStream(sock)\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpcore/_exceptions.py:14\u001b[0m, in \u001b[0;36mmap_exceptions\u001b[0;34m(map)\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(exc, from_exc):\n\u001b[0;32m---> 14\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m to_exc(exc) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n\u001b[1;32m 15\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n", - "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mConnectError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[1], line 11\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mpathlib\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m Path\n\u001b[1;32m 10\u001b[0m \u001b[38;5;66;03m# Connect to Argilla using default credentials\u001b[39;00m\n\u001b[0;32m---> 11\u001b[0m client \u001b[38;5;241m=\u001b[39m \u001b[43mrg\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mArgilla\u001b[49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mhttp://localhost:6900/\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mextralit.apikey\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 13\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mSuccessfully connected to Argilla at \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mclient\u001b[38;5;241m.\u001b[39mapi_url\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/client.py:73\u001b[0m, in \u001b[0;36mArgilla.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 51\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m__init__\u001b[39m(\n\u001b[1;32m 52\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 53\u001b[0m api_url: Optional[\u001b[38;5;28mstr\u001b[39m] \u001b[38;5;241m=\u001b[39m DEFAULT_HTTP_CONFIG\u001b[38;5;241m.\u001b[39mapi_url,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 57\u001b[0m \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mhttp_client_args,\n\u001b[1;32m 58\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 59\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Inits the `Argilla` client.\u001b[39;00m\n\u001b[1;32m 60\u001b[0m \n\u001b[1;32m 61\u001b[0m \u001b[38;5;124;03m Args:\u001b[39;00m\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[38;5;124;03m before raising an exception. Defaults to `5`.\u001b[39;00m\n\u001b[1;32m 72\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m---> 73\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mapi_url\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_url\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mapi_key\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mapi_key\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretries\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mretries\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mhttp_client_args\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 75\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_set_default(\u001b[38;5;28mself\u001b[39m)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:146\u001b[0m, in \u001b[0;36mAPIClient.__init__\u001b[0;34m(self, api_url, api_key, timeout, retries, **http_client_args)\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mapi \u001b[38;5;241m=\u001b[39m ArgillaAPI(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhttp_client)\n\u001b[1;32m 145\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 146\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_validate_connection\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 147\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m UnauthorizedError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 148\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m ArgillaCredentialsError() \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01me\u001b[39;00m\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_client.py:160\u001b[0m, in \u001b[0;36mAPIClient._validate_connection\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 159\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_validate_connection\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[0;32m--> 160\u001b[0m user \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mapi\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43musers\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_me\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 161\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mLogged in as \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39musername\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m with the role \u001b[39m\u001b[38;5;132;01m{\u001b[39;00muser\u001b[38;5;241m.\u001b[39mrole\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 162\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mlog(message\u001b[38;5;241m=\u001b[39mmessage, level\u001b[38;5;241m=\u001b[39mlogging\u001b[38;5;241m.\u001b[39mINFO)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_exceptions/_api.py:91\u001b[0m, in \u001b[0;36mapi_error_handler.._handler_wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21m_handler_wrapper\u001b[39m(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs):\n\u001b[1;32m 90\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m---> 91\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 92\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m HTTPStatusError \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[1;32m 93\u001b[0m _error_switch(status_code\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mstatus_code, error_detail\u001b[38;5;241m=\u001b[39me\u001b[38;5;241m.\u001b[39mresponse\u001b[38;5;241m.\u001b[39mtext)\n", - "File \u001b[0;32m~/Projects/extralit/argilla/src/argilla/_api/_users.py:90\u001b[0m, in \u001b[0;36mUsersAPI.get_me\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[38;5;129m@api_error_handler\u001b[39m\n\u001b[1;32m 89\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget_me\u001b[39m(\u001b[38;5;28mself\u001b[39m) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m UserModel:\n\u001b[0;32m---> 90\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhttp_client\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m/api/v1/me\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 91\u001b[0m response\u001b[38;5;241m.\u001b[39mraise_for_status()\n\u001b[1;32m 92\u001b[0m response_json \u001b[38;5;241m=\u001b[39m response\u001b[38;5;241m.\u001b[39mjson()\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1055\u001b[0m, in \u001b[0;36mClient.get\u001b[0;34m(self, url, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 1038\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mget\u001b[39m(\n\u001b[1;32m 1039\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[1;32m 1040\u001b[0m url: URLTypes,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 1048\u001b[0m extensions: typing\u001b[38;5;241m.\u001b[39mOptional[RequestExtensions] \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m,\n\u001b[1;32m 1049\u001b[0m ) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Response:\n\u001b[1;32m 1050\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"\u001b[39;00m\n\u001b[1;32m 1051\u001b[0m \u001b[38;5;124;03m Send a `GET` request.\u001b[39;00m\n\u001b[1;32m 1052\u001b[0m \n\u001b[1;32m 1053\u001b[0m \u001b[38;5;124;03m **Parameters**: See `httpx.request`.\u001b[39;00m\n\u001b[1;32m 1054\u001b[0m \u001b[38;5;124;03m \"\"\"\u001b[39;00m\n\u001b[0;32m-> 1055\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrequest\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1056\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mGET\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1057\u001b[0m \u001b[43m \u001b[49m\u001b[43murl\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1058\u001b[0m \u001b[43m \u001b[49m\u001b[43mparams\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mparams\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1059\u001b[0m \u001b[43m \u001b[49m\u001b[43mheaders\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mheaders\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1060\u001b[0m \u001b[43m \u001b[49m\u001b[43mcookies\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mcookies\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1061\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1062\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1063\u001b[0m \u001b[43m \u001b[49m\u001b[43mtimeout\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtimeout\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1064\u001b[0m \u001b[43m \u001b[49m\u001b[43mextensions\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mextensions\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1065\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:828\u001b[0m, in \u001b[0;36mClient.request\u001b[0;34m(self, method, url, content, data, files, json, params, headers, cookies, auth, follow_redirects, timeout, extensions)\u001b[0m\n\u001b[1;32m 813\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(message, \u001b[38;5;167;01mDeprecationWarning\u001b[39;00m)\n\u001b[1;32m 815\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mbuild_request(\n\u001b[1;32m 816\u001b[0m method\u001b[38;5;241m=\u001b[39mmethod,\n\u001b[1;32m 817\u001b[0m url\u001b[38;5;241m=\u001b[39murl,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 826\u001b[0m extensions\u001b[38;5;241m=\u001b[39mextensions,\n\u001b[1;32m 827\u001b[0m )\n\u001b[0;32m--> 828\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43msend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:915\u001b[0m, in \u001b[0;36mClient.send\u001b[0;34m(self, request, stream, auth, follow_redirects)\u001b[0m\n\u001b[1;32m 907\u001b[0m follow_redirects \u001b[38;5;241m=\u001b[39m (\n\u001b[1;32m 908\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfollow_redirects\n\u001b[1;32m 909\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(follow_redirects, UseClientDefault)\n\u001b[1;32m 910\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m follow_redirects\n\u001b[1;32m 911\u001b[0m )\n\u001b[1;32m 913\u001b[0m auth \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_build_request_auth(request, auth)\n\u001b[0;32m--> 915\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_auth\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 916\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 917\u001b[0m \u001b[43m \u001b[49m\u001b[43mauth\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mauth\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 918\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 919\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 920\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 921\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 922\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m stream:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:943\u001b[0m, in \u001b[0;36mClient._send_handling_auth\u001b[0;34m(self, request, auth, follow_redirects, history)\u001b[0m\n\u001b[1;32m 940\u001b[0m request \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mnext\u001b[39m(auth_flow)\n\u001b[1;32m 942\u001b[0m \u001b[38;5;28;01mwhile\u001b[39;00m \u001b[38;5;28;01mTrue\u001b[39;00m:\n\u001b[0;32m--> 943\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_handling_redirects\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 944\u001b[0m \u001b[43m \u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 945\u001b[0m \u001b[43m \u001b[49m\u001b[43mfollow_redirects\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfollow_redirects\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 946\u001b[0m \u001b[43m \u001b[49m\u001b[43mhistory\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mhistory\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 947\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 948\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 949\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:980\u001b[0m, in \u001b[0;36mClient._send_handling_redirects\u001b[0;34m(self, request, follow_redirects, history)\u001b[0m\n\u001b[1;32m 977\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrequest\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n\u001b[1;32m 978\u001b[0m hook(request)\n\u001b[0;32m--> 980\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_send_single_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 981\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 982\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m hook \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_event_hooks[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mresponse\u001b[39m\u001b[38;5;124m\"\u001b[39m]:\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_client.py:1016\u001b[0m, in \u001b[0;36mClient._send_single_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 1011\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mRuntimeError\u001b[39;00m(\n\u001b[1;32m 1012\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mAttempted to send an async request with a sync Client instance.\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[1;32m 1013\u001b[0m )\n\u001b[1;32m 1015\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m request_context(request\u001b[38;5;241m=\u001b[39mrequest):\n\u001b[0;32m-> 1016\u001b[0m response \u001b[38;5;241m=\u001b[39m \u001b[43mtransport\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mhandle_request\u001b[49m\u001b[43m(\u001b[49m\u001b[43mrequest\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1018\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(response\u001b[38;5;241m.\u001b[39mstream, SyncByteStream)\n\u001b[1;32m 1020\u001b[0m response\u001b[38;5;241m.\u001b[39mrequest \u001b[38;5;241m=\u001b[39m request\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:231\u001b[0m, in \u001b[0;36mHTTPTransport.handle_request\u001b[0;34m(self, request)\u001b[0m\n\u001b[1;32m 218\u001b[0m req \u001b[38;5;241m=\u001b[39m httpcore\u001b[38;5;241m.\u001b[39mRequest(\n\u001b[1;32m 219\u001b[0m method\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mmethod,\n\u001b[1;32m 220\u001b[0m url\u001b[38;5;241m=\u001b[39mhttpcore\u001b[38;5;241m.\u001b[39mURL(\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 228\u001b[0m extensions\u001b[38;5;241m=\u001b[39mrequest\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 229\u001b[0m )\n\u001b[1;32m 230\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m map_httpcore_exceptions():\n\u001b[0;32m--> 231\u001b[0m resp \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_pool\u001b[38;5;241m.\u001b[39mhandle_request(req)\n\u001b[1;32m 233\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(resp\u001b[38;5;241m.\u001b[39mstream, typing\u001b[38;5;241m.\u001b[39mIterable)\n\u001b[1;32m 235\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m Response(\n\u001b[1;32m 236\u001b[0m status_code\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mstatus,\n\u001b[1;32m 237\u001b[0m headers\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mheaders,\n\u001b[1;32m 238\u001b[0m stream\u001b[38;5;241m=\u001b[39mResponseStream(resp\u001b[38;5;241m.\u001b[39mstream),\n\u001b[1;32m 239\u001b[0m extensions\u001b[38;5;241m=\u001b[39mresp\u001b[38;5;241m.\u001b[39mextensions,\n\u001b[1;32m 240\u001b[0m )\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/contextlib.py:137\u001b[0m, in \u001b[0;36m_GeneratorContextManager.__exit__\u001b[0;34m(self, typ, value, traceback)\u001b[0m\n\u001b[1;32m 135\u001b[0m value \u001b[38;5;241m=\u001b[39m typ()\n\u001b[1;32m 136\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m--> 137\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mgen\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mthrow\u001b[49m\u001b[43m(\u001b[49m\u001b[43mtyp\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mvalue\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mtraceback\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 138\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mStopIteration\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[1;32m 139\u001b[0m \u001b[38;5;66;03m# Suppress StopIteration *unless* it's the same exception that\u001b[39;00m\n\u001b[1;32m 140\u001b[0m \u001b[38;5;66;03m# was passed to throw(). This prevents a StopIteration\u001b[39;00m\n\u001b[1;32m 141\u001b[0m \u001b[38;5;66;03m# raised inside the \"with\" statement from being suppressed.\u001b[39;00m\n\u001b[1;32m 142\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m exc \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m value\n", - "File \u001b[0;32m~/micromamba/envs/extralit/lib/python3.9/site-packages/httpx/_transports/default.py:84\u001b[0m, in \u001b[0;36mmap_httpcore_exceptions\u001b[0;34m()\u001b[0m\n\u001b[1;32m 81\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m\n\u001b[1;32m 83\u001b[0m message \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mstr\u001b[39m(exc)\n\u001b[0;32m---> 84\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m mapped_exc(message) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21;01mexc\u001b[39;00m\n", - "\u001b[0;31mConnectError\u001b[0m: [Errno 61] Connection refused" - ] - } - ], - "source": [ - "import argilla as rg\n", - "import extralit as ex\n", - "import pandas as pd\n", - "import pandera as pa\n", - "from pandera.typing import Index, Series\n", - "import os\n", - "import tempfile\n", - "from pathlib import Path\n", - "\n", - "# Connect to Argilla using default credentials\n", - "client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')\n", - "\n", - "print(f\"Successfully connected to Argilla at {client.api_url}\")" - ] - }, - { - "cell_type": "markdown", - "id": "fcdd3afe", - "metadata": {}, - "source": [ - "## 2. Creating Your First Workspace\n", - "\n", - "After connecting to Argilla, let's create our first workspace. We'll define a new `Workspace` object and call the `create()` method." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "64b5f09b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Workspace 'test-workspace' created successfully with ID: df91e2b9-c712-4474-af82-891478f23d40\n" - ] - } - ], - "source": [ - "# Define a new workspace\n", - "workspace_name = \"test_workspace\"\n", - "new_workspace = ex.Workspace(name=workspace_name, client=client)\n", - "\n", - "# Create the workspace\n", - "created_workspace = new_workspace.create()\n", - "\n", - "print(f\"Workspace '{workspace_name}' created successfully with ID: {created_workspace.id}\")" - ] - }, - { - "cell_type": "markdown", - "id": "c937e5c7", - "metadata": {}, - "source": [ - "## 3. Listing Available Workspaces\n", - "\n", - "Now, let's check all the workspaces available in our Argilla instance." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "d4df67d6", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Total number of workspaces: 1\n", - "\n" - ] - }, - { - "data": { - "text/html": [ - "

Workspaces

nameidupdated_at
test-workspacedf91e2b9-c712-4474-af82-891478f23d402025-04-16T01:27:58.174591
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# List all workspaces\n", - "workspaces = client.workspaces\n", - "\n", - "# Display workspace information\n", - "print(f\"Total number of workspaces: {len(workspaces)}\\n\")\n", - "\n", - "# In a notebook, this will display a table with workspace information\n", - "workspaces" - ] - }, - { - "cell_type": "markdown", - "id": "8ca5b2b8", - "metadata": {}, - "source": [ - "## 4. Adding PDF Documents to the Workspace\n", - "\n", - "Let's add two PDF documents to our workspace. For this tutorial, we'll create temporary PDF files. In a real-world scenario, you'd use actual scientific papers." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "59084a6d", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Created reference CSV at /tmp/references.csv\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
referencefile_pathtitleauthorsyear
0smith2023first/tmp/sample1.pdfStudy on Sample DataSmith, J.2023
1johnson2022analysis/tmp/sample2.pdfAnalysis of Experimental ResultsJohnson, A.2022
\n", - "
" - ], - "text/plain": [ - " reference file_path title \\\n", - "0 smith2023first /tmp/sample1.pdf Study on Sample Data \n", - "1 johnson2022analysis /tmp/sample2.pdf Analysis of Experimental Results \n", - "\n", - " authors year \n", - "0 Smith, J. 2023 \n", - "1 Johnson, A. 2022 " - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# In a real-world scenario, you would use actual PDFs. Here we'll create temp files\n", - "# Define the paths for our temporary PDF files\n", - "temp_dir = tempfile.gettempdir()\n", - "pdf_file1 = Path(temp_dir) / \"sample1.pdf\"\n", - "pdf_file2 = Path(temp_dir) / \"sample2.pdf\"\n", - "\n", - "# Create empty PDF files - in reality, these would be your actual PDFs\n", - "with open(pdf_file1, \"wb\") as f:\n", - " f.write(b\"%PDF-1.5\\n%Example Document 1\")\n", - " \n", - "with open(pdf_file2, \"wb\") as f:\n", - " f.write(b\"%PDF-1.5\\n%Example Document 2\")\n", - "\n", - "# Create a reference dataframe with metadata for the PDFs\n", - "references_df = pd.DataFrame({\n", - " \"reference\": [\"smith2023first\", \"johnson2022analysis\"],\n", - " \"file_path\": [str(pdf_file1), str(pdf_file2)],\n", - " \"title\": [\"Study on Sample Data\", \"Analysis of Experimental Results\"],\n", - " \"authors\": [\"Smith, J.\", \"Johnson, A.\"],\n", - " \"year\": [2023, 2022]\n", - "})\n", - "\n", - "# Save the dataframe to a temporary CSV file\n", - "references_csv = Path(temp_dir) / \"references.csv\"\n", - "references_df.to_csv(references_csv, index=False)\n", - "\n", - "print(f\"Created reference CSV at {references_csv}\")\n", - "references_df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "abc8562f", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "Workspace(id=UUID('df91e2b9-c712-4474-af82-891478f23d40') inserted_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) updated_at=datetime.datetime(2025, 4, 16, 1, 27, 58, 174591) name='test-workspace')" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "new_workspace" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a147c6c2", - "metadata": {}, - "outputs": [], - "source": [ - "# Import the documents into the workspace\n", - "# For demonstration purposes, we'll use the extralit client directly\n", - "# Initialize the extralit client with the same credentials\n", - "extralit_client = ex.Extralit(api_url=\"http://localhost:6900/\", api_key='extralit.apikey')\n", - "\n", - "# Import the documents\n", - "result = extralit_client.import_documents(\n", - " workspace=workspace_name,\n", - " papers=str(references_csv),\n", - " metadatas=[\"title\", \"authors\", \"year\"]\n", - ")\n", - "\n", - "print(f\"Imported {len(result)} documents into workspace '{workspace_name}'\")" - ] - }, - { - "cell_type": "markdown", - "id": "98a2025d", - "metadata": {}, - "source": [ - "## 5. Creating and Uploading a Schema\n", - "\n", - "Now, let's create a simple schema to define the structure of the data we want to extract from our documents." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f15f4b2f", - "metadata": {}, - "outputs": [], - "source": [ - "# Define a simple schema using Pandera\n", - "class Publication(pa.DataFrameModel):\n", - " \"\"\"\n", - " General information about the publication, extracted once per paper.\n", - " \"\"\"\n", - " reference: Index[str] = pa.Field(unique=True, check_name=True)\n", - " title: Series[str] = pa.Field()\n", - " authors: Series[str] = pa.Field()\n", - " publication_year: Series[int] = pa.Field(ge=1900, le=2100)\n", - " doi: Series[str] = pa.Field(nullable=True)\n", - " \n", - " class Config:\n", - " singleton = {'enabled': True} # Indicates this is a document-level schema\n", - "\n", - "# Define a second schema for experimental data\n", - "class ExperimentalData(pa.DataFrameModel):\n", - " \"\"\"\n", - " Experimental data extracted from the paper, may appear multiple times.\n", - " \"\"\"\n", - " experiment_id: Series[str] = pa.Field()\n", - " sample_size: Series[int] = pa.Field(gt=0)\n", - " study_type: Series[str] = pa.Field()\n", - " result_value: Series[float] = pa.Field()\n", - " significance: Series[float] = pa.Field(le=1.0, ge=0.0)\n", - "\n", - "# Create a schema structure object\n", - "from extralit.extraction.models.schema import SchemaStructure\n", - "\n", - "# Save schemas to a temporary JSON file\n", - "schema_file = Path(temp_dir) / \"schemas.json\"\n", - "schema_structure = SchemaStructure(schemas={\"Publication\": Publication, \"ExperimentalData\": ExperimentalData})\n", - "schema_structure.to_json(schema_file)\n", - "\n", - "print(f\"Created schema file at {schema_file}\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "dc61a1ab", - "metadata": {}, - "outputs": [], - "source": [ - "# Upload the schema to the workspace\n", - "result = extralit_client.upload_schemas(\n", - " workspace=workspace_name,\n", - " schemas=str(schema_file)\n", - ")\n", - "\n", - "print(f\"Uploaded schemas to workspace '{workspace_name}'\")" - ] - }, - { - "cell_type": "markdown", - "id": "7a92c20d", - "metadata": {}, - "source": [ - "## 6. Running PDF Preprocessing\n", - "\n", - "Next, let's run the PDF preprocessing step to extract text and table content from our documents." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "768e7176", - "metadata": {}, - "outputs": [], - "source": [ - "# Run PDF preprocessing\n", - "from extralit.preprocessing.pdf import process_pdfs\n", - "\n", - "# Get the references from our dataframe\n", - "references = references_df[\"reference\"].tolist()\n", - "\n", - "# Run the preprocessing step\n", - "preprocessing_result = process_pdfs(\n", - " workspace=workspace_name,\n", - " references=references,\n", - " text_ocr=[\"default\"], # Using the default text OCR model\n", - " table_ocr=[\"default\"], # Using the default table OCR model\n", - " output_dataset=\"PDF_Preprocessing_Results\"\n", - ")\n", - "\n", - "print(f\"Preprocessing completed for {len(preprocessing_result)} documents\")" - ] - }, - { - "cell_type": "markdown", - "id": "44aa776d", - "metadata": {}, - "source": [ - "## 7. Running LLM Extractions\n", - "\n", - "Finally, let's run the LLM extraction step to extract structured data according to our schema." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "19221abe", - "metadata": {}, - "outputs": [], - "source": [ - "# Run LLM extractions\n", - "from extralit.extraction.llm import extract_data\n", - "\n", - "# Run the extraction step\n", - "extraction_result = extract_data(\n", - " workspace=workspace_name,\n", - " references=references,\n", - " output_dataset=\"Data_Extraction_Results\"\n", - ")\n", - "\n", - "print(f\"LLM extractions completed for {len(extraction_result)} documents\")" - ] - }, - { - "cell_type": "markdown", - "id": "c1b6ec61", - "metadata": {}, - "source": [ - "## 8. Checking Extraction Results\n", - "\n", - "Let's check the results of our extractions by listing the datasets created and viewing the extracted data." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "4dbb695d", - "metadata": {}, - "outputs": [], - "source": [ - "# List datasets in the workspace\n", - "datasets = extralit_client.list_datasets(workspace=workspace_name)\n", - "print(f\"Datasets in workspace '{workspace_name}':\\n\")\n", - "for dataset in datasets:\n", - " print(f\"- {dataset.name} ({dataset.id})\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6eee019d", - "metadata": {}, - "outputs": [], - "source": [ - "# Export the extracted data\n", - "extracted_data = extralit_client.export_data(\n", - " workspace=workspace_name,\n", - " output=\"temp_output.csv\" # This will save the data to a CSV file\n", - ")\n", - "\n", - "# Display the extracted data\n", - "if isinstance(extracted_data, dict):\n", - " for schema_name, data_df in extracted_data.items():\n", - " print(f\"\\nExtracted data for schema '{schema_name}':\\n\")\n", - " display(data_df)\n", - "else:\n", - " print(\"\\nExtracted data:\")\n", - " display(extracted_data)" - ] - }, - { - "cell_type": "markdown", - "id": "7a30a5ea", - "metadata": {}, - "source": [ - "## Conclusion\n", - "\n", - "Congratulations! You've successfully tested the primary functionalities of Extralit with default credentials on a fresh install. You have:\n", - "\n", - "1. Connected to Argilla with default credentials\n", - "2. Created a workspace\n", - "3. Added PDF documents\n", - "4. Created and uploaded a schema\n", - "5. Run PDF preprocessing\n", - "6. Run LLM extractions\n", - "7. Checked the extraction results\n", - "\n", - "This workflow demonstrates the basic process of using Extralit for data extraction from scientific papers. In a real-world scenario, you would upload actual scientific papers and create more complex schemas tailored to your specific data extraction needs.\n", - "\n", - "For more detailed information, refer to the [Extralit documentation](https://docs.extralit.ai/latest/)." - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.11.13" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} + "nbformat": 4, + "nbformat_minor": 5 +} \ No newline at end of file diff --git a/examples/webhooks/basic-webhooks/main.py b/examples/webhooks/basic-webhooks/main.py index 91586039f..c9198f3da 100644 --- a/examples/webhooks/basic-webhooks/main.py +++ b/examples/webhooks/basic-webhooks/main.py @@ -7,7 +7,7 @@ API_KEY = os.environ.get("EXTRALIT_API_KEY", "extralit.apikey") API_URL = os.environ.get("EXTRALIT_API_URL", "http://localhost:6900") -# Initialize Argilla client +# Initialize Extralit client client = ex.Extralit(api_key=API_KEY, api_url=API_URL) # Show the existing webhooks in the argilla server diff --git a/examples/webhooks/basic-webhooks/requirements.txt b/examples/webhooks/basic-webhooks/requirements.txt index ac2c3ae04..3d04a10a3 100644 --- a/examples/webhooks/basic-webhooks/requirements.txt +++ b/examples/webhooks/basic-webhooks/requirements.txt @@ -1,3 +1,3 @@ fastapi uvicorn[standard] -argilla ~= 2.5.0 +extralit~=0.6.0 diff --git a/extralit-frontend/components/base/base-topbar-brand/BaseTopbarBrand.vue b/extralit-frontend/components/base/base-topbar-brand/BaseTopbarBrand.vue index b90508358..da77e04b2 100644 --- a/extralit-frontend/components/base/base-topbar-brand/BaseTopbarBrand.vue +++ b/extralit-frontend/components/base/base-topbar-brand/BaseTopbarBrand.vue @@ -17,7 +17,7 @@ diff --git a/extralit-frontend/components/features/home/sidebar/useImportFromPython.ts b/extralit-frontend/components/features/home/sidebar/useImportFromPython.ts index 04deeed0d..178435c41 100644 --- a/extralit-frontend/components/features/home/sidebar/useImportFromPython.ts +++ b/extralit-frontend/components/features/home/sidebar/useImportFromPython.ts @@ -12,7 +12,7 @@ export const useImportFromPython = () => { # pip install extralit # to run this code snippet -import argilla as rg +import extralit as ex client = ex.Extralit( api_url="${window.location.origin}", diff --git a/extralit-frontend/docs/snippets/start_page.md b/extralit-frontend/docs/snippets/start_page.md index f53f4c6c2..0d75ad6c0 100644 --- a/extralit-frontend/docs/snippets/start_page.md +++ b/extralit-frontend/docs/snippets/start_page.md @@ -2,9 +2,9 @@ # Welcome to -## Argilla is a collaboration tool for building high-quality AI datasets +## Extralit is a collaboration tool for building high-quality AI datasets -If you need support join the [Argilla Discord community](http://hf.co/join/discord) +If you need support join the [Extralit Discord community](http://hf.co/join/discord) @@ -14,18 +14,18 @@ Get started by publishing your first dataset. ### 1. Install the SDK with pip -To work with Argilla datasets, you need to use the Argilla SDK. You can install the SDK with pip as follows: +To work with Extralit datasets, you need to use the Extralit SDK. You can install the SDK with pip as follows: ```sh pip install extralit ``` -### 2. Connect to your Argilla server +### 2. Connect to your Extralit server [hf_] If you're using a private space, check the [HF docs](https://docs.extralit.ai/latest/getting_started/how-to-configure-argilla-on-huggingface/#how-to-use-private-spaces). ```python -import argilla as rg +import extralit as ex client = ex.Extralit( [local_]api_url="[LOCAL_HOST]", diff --git a/extralit-frontend/docs/structure.md b/extralit-frontend/docs/structure.md index 2b1258fd4..eb6f2d523 100644 --- a/extralit-frontend/docs/structure.md +++ b/extralit-frontend/docs/structure.md @@ -23,7 +23,7 @@ ├── pages -> Nuxt global pages ├── plugins -> Nuxt plugins ├── static -> Static resources -├── translations -> Argilla translation resources +├── translations -> Extralit translation resources ├── v1 -> New architecture │ ├── di -> Dependency injection configuration │ ├── domain -> Domain layer with entities and use cases diff --git a/extralit-frontend/translation/ja.js b/extralit-frontend/translation/ja.js index 86eaabbd9..ab87ac0d6 100644 --- a/extralit-frontend/translation/ja.js +++ b/extralit-frontend/translation/ja.js @@ -273,11 +273,11 @@ export default { "プライベートスペースを使用している場合はドキュメントを参照してください。", exampleDatasetsTitle: "どこから始めればいいかわかりませんか?", exampleDatasetsText: "これらの例のデータセットを探索してみましょう", - guidesTitle: "Argillaは初めてですか?", + guidesTitle: "Extralitは初めてですか?", guidesText: "以下のガイドを参照してください", pasteRepoIdPlaceholder: "リポジトリIDを貼り付け <例> stanfordnlp/imdb", demoLink: - "こちらのデモにログインしてArgillaを試してみましょう", + "こちらのデモにログインしてExtralitを試してみましょう", name: "データセット名", updatedAt: "更新日", createdAt: "作成日", @@ -299,7 +299,7 @@ export default { atLeastOneQuestion: "少なくとも1つの質問が必要です", atLeastOneRequired: "少なくとも1つ回答必須の質問が必要です", hasInvalidQuestions: "無効な質問があります", - createDataset: "Argillaにデータセットを作成", + createDataset: "Extralitにデータセットを作成", datasetName: "データセット名", name: "名前", assignWorkspace: "割り当てるワークスペース", diff --git a/extralit-frontend/v1/domain/entities/dataset/Dataset.ts b/extralit-frontend/v1/domain/entities/dataset/Dataset.ts index 6eca740de..9f82b8338 100644 --- a/extralit-frontend/v1/domain/entities/dataset/Dataset.ts +++ b/extralit-frontend/v1/domain/entities/dataset/Dataset.ts @@ -151,7 +151,7 @@ export class Dataset { const snippet = ` \`\`\`python - import argilla as rg + import extralit as ex from datasets import load_dataset client = ex.Extralit( diff --git a/extralit-server/README.md b/extralit-server/README.md index 6eec3e169..3df632ceb 100644 --- a/extralit-server/README.md +++ b/extralit-server/README.md @@ -1,5 +1,5 @@

- Extralit + Extralit
Extralit Server
diff --git a/extralit-server/docker/extralit-hf-spaces/Dockerfile b/extralit-server/docker/extralit-hf-spaces/Dockerfile index a6f0e0c0f..765922eb9 100644 --- a/extralit-server/docker/extralit-hf-spaces/Dockerfile +++ b/extralit-server/docker/extralit-hf-spaces/Dockerfile @@ -6,7 +6,7 @@ ARG extralit_server_IMAGE=extralitdev/extralit-server FROM ${extralit_server_IMAGE}:${EXTRALIT_VERSION} AS base USER root -# Copy Argilla distribution files +# Copy Extralit distribution files COPY scripts/start.sh /home/extralit COPY Procfile /home/extralit COPY requirements.txt /packages/requirements.txt diff --git a/extralit-server/docker/extralit-hf-spaces/README.md b/extralit-server/docker/extralit-hf-spaces/README.md index 1c92c5f50..9c0f6bc61 100644 --- a/extralit-server/docker/extralit-hf-spaces/README.md +++ b/extralit-server/docker/extralit-hf-spaces/README.md @@ -1,16 +1,16 @@

- Argilla + Extralit
- Argilla + Extralit

-> This Docker image corresponds to the **Argilla Hugging Face Spaces deployment** and **can only be used to deploy Argilla inside the Hugging Face Hub**. For other type of deployments check the Argilla docs. +> This Docker image corresponds to the **Extralit Hugging Face Spaces deployment** and **can only be used to deploy Extralit inside the Hugging Face Hub**. For other type of deployments check the Extralit docs. -Argilla is a **collaboration tool for AI engineers and domain experts** that require **high-quality outputs, data ownership, and overall efficiency**. +Extralit is a **collaboration tool for AI engineers and domain experts** that require **high-quality outputs, data ownership, and overall efficiency**. -## Why use Argilla? +## Why use Extralit? Whether you are working on monitoring and improving complex **generative tasks** involving LLM pipelines with RAG, or you are working on a **predictive task** for things like AB-testing of span- and text-classification models. Our versatile platform helps you ensure **your data work pays off**. diff --git a/extralit-server/docker/server/Dockerfile b/extralit-server/docker/server/Dockerfile index 114c6a836..4edb5bdd6 100644 --- a/extralit-server/docker/server/Dockerfile +++ b/extralit-server/docker/server/Dockerfile @@ -24,7 +24,7 @@ FROM python:3.13-slim ENV USERNAME="" ENV PASSWORD="" ENV API_KEY="" -## Argilla home path +## Extralit home path ENV EXTRALIT_HOME_PATH=/var/lib/extralit ## Uvicorn defaults ENV UVICORN_PORT=6900 diff --git a/extralit-server/docker/server/README.md b/extralit-server/docker/server/README.md index c01bbb9af..8ab683197 100644 --- a/extralit-server/docker/server/README.md +++ b/extralit-server/docker/server/README.md @@ -1,14 +1,14 @@

- Argilla + Extralit
- Argilla + Extralit

-Argilla is a **collaboration tool for AI engineers and domain experts** that require **high-quality outputs, data ownership, and overall efficiency**. +Extralit is a **collaboration tool for AI engineers and domain experts** that require **high-quality outputs, data ownership, and overall efficiency**. -## Why use Argilla? +## Why use Extralit? Whether you are working on monitoring and improving complex **generative tasks** involving LLM pipelines with RAG, or you are working on a **predictive task** for things like AB-testing of span- and text-classification models. Our versatile platform helps you ensure **your data work pays off**. diff --git a/extralit-server/pyproject.toml b/extralit-server/pyproject.toml index e84927bd0..2981e3cbc 100644 --- a/extralit-server/pyproject.toml +++ b/extralit-server/pyproject.toml @@ -188,4 +188,3 @@ test = { cmd = "pytest --verbosity=1 --disable-warnings", env_file = ".env.test" test-cov = { cmd = "pytest tests --cov=extralit_server --cov-report=term --cov-report=xml --verbosity=0 --disable-warnings", env_file = ".env.test" } docker-build-extralit-server = { shell = "pdm build && cp -R dist docker/server && docker build -t extralit/extralit-server:local docker/server" } -docker-build-argilla-hf-spaces = { shell = "pdm run docker-build-extralit-server && docker build --build-arg EXTRALIT_VERSION=local -t extralit/extralit-hf-space:local docker/argilla-hf-spaces" } diff --git a/extralit-server/src/extralit_server/_app.py b/extralit-server/src/extralit_server/_app.py index 808261060..81701686a 100644 --- a/extralit-server/src/extralit_server/_app.py +++ b/extralit-server/src/extralit_server/_app.py @@ -109,7 +109,7 @@ def create_share_html(dataset_name: str, dataset_id: str, share_image: str, url: - + diff --git a/extralit-server/src/extralit_server/api/routes.py b/extralit-server/src/extralit_server/api/routes.py index 428ede4ee..1d6c374eb 100644 --- a/extralit-server/src/extralit_server/api/routes.py +++ b/extralit-server/src/extralit_server/api/routes.py @@ -81,8 +81,8 @@ def create_api_v1(): api_v1 = FastAPI( - title="Argilla v1", - description="Argilla Server API v1", + title="Extralit v1", + description="Extralit Server API v1", version=str(extralit_version), responses={error.HTTP_STATUS: error.api_documentation() for error in __ALL__}, ) diff --git a/extralit-server/src/extralit_server/api/schemas/v1/datasets.py b/extralit-server/src/extralit_server/api/schemas/v1/datasets.py index d98acb5e0..19d9d9bb1 100644 --- a/extralit-server/src/extralit_server/api/schemas/v1/datasets.py +++ b/extralit-server/src/extralit_server/api/schemas/v1/datasets.py @@ -172,7 +172,7 @@ class DatasetUpdate(UpdateSchema): class HubDatasetMappingItem(BaseModel): source: str = Field(..., description="The name of the column in the Hub Dataset") - target: str = Field(..., description="The name of the target resource in the Argilla Dataset") + target: str = Field(..., description="The name of the target resource in the Extralit Dataset") class HubDatasetMapping(BaseModel): diff --git a/extralit-server/src/extralit_server/cli/__main__.py b/extralit-server/src/extralit_server/cli/__main__.py index 76eeabeb2..3c98db185 100644 --- a/extralit-server/src/extralit_server/cli/__main__.py +++ b/extralit-server/src/extralit_server/cli/__main__.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import typer @@ -19,13 +19,13 @@ from .start import start from .worker import worker -app = typer.Typer(help="Commands for Argilla server management", no_args_is_help=True) +app = typer.Typer(help="Commands for Extralit server management", no_args_is_help=True) app.add_typer(database_app, name="database") app.add_typer(search_engine_app, name="search-engine") app.command(name="worker", help="Starts rq workers")(worker) -app.command(name="start", help="Starts the Argilla server")(start) +app.command(name="start", help="Starts the Extralit server")(start) if __name__ == "__main__": diff --git a/extralit-server/src/extralit_server/cli/database/__main__.py b/extralit-server/src/extralit_server/cli/database/__main__.py index 9b6ed9dda..adc542e91 100644 --- a/extralit-server/src/extralit_server/cli/database/__main__.py +++ b/extralit-server/src/extralit_server/cli/database/__main__.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import typer @@ -18,7 +18,7 @@ from .revisions import revisions from .users import app as users_app -app = typer.Typer(help="Commands for Argilla server database management", no_args_is_help=True) +app = typer.Typer(help="Commands for Extralit server database management", no_args_is_help=True) app.add_typer(users_app, name="users") app.command(name="migrate", help="Run database migrations.")(migrate_db) diff --git a/extralit-server/src/extralit_server/cli/database/users/__main__.py b/extralit-server/src/extralit_server/cli/database/users/__main__.py index 3a5afedd0..ea80cfdde 100644 --- a/extralit-server/src/extralit_server/cli/database/users/__main__.py +++ b/extralit-server/src/extralit_server/cli/database/users/__main__.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typer import Typer from .create import create @@ -20,9 +20,11 @@ app = Typer(help="Commands for user management using the database connection", no_args_is_help=True) -app.command(name="create_default", help="Creates default users and workspaces in the Argilla database.")(create_default) -app.command(name="create", help="Creates a user and add it to the Argilla database.", no_args_is_help=True)(create) -app.command(name="update", help="Updates the user's role into the Argilla database.", no_args_is_help=True)(update) +app.command(name="create_default", help="Creates default users and workspaces in the Extralit database.")( + create_default +) +app.command(name="create", help="Creates a user and add it to the Extralit database.", no_args_is_help=True)(create) +app.command(name="update", help="Updates the user's role into the Extralit database.", no_args_is_help=True)(update) app.command(name="migrate")(migrate) diff --git a/extralit-server/src/extralit_server/cli/database/users/create.py b/extralit-server/src/extralit_server/cli/database/users/create.py index 90348dd13..92e030bd4 100644 --- a/extralit-server/src/extralit_server/cli/database/users/create.py +++ b/extralit-server/src/extralit_server/cli/database/users/create.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import asyncio from typing import List, Optional @@ -63,7 +63,7 @@ async def _create( api_key: Optional[str] = None, workspace: List[str] = None, ): - """Creates a new user in the Argilla database with provided parameters""" + """Creates a new user in the Extralit database with provided parameters""" if workspace is None: workspace = [] diff --git a/extralit-server/src/extralit_server/cli/search_engine/__main__.py b/extralit-server/src/extralit_server/cli/search_engine/__main__.py index f6170bb89..c350f58a6 100644 --- a/extralit-server/src/extralit_server/cli/search_engine/__main__.py +++ b/extralit-server/src/extralit_server/cli/search_engine/__main__.py @@ -1,24 +1,24 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. from typer import Typer from .reindex import reindex, list -app = Typer(help="Commands for Argilla server search engine management", no_args_is_help=True) +app = Typer(help="Commands for Extralit server search engine management", no_args_is_help=True) app.command(name="list", help="List existing indexes in Elasticsearch.")(list) -app.command(name="reindex", help="Reindex all Argilla entities into search engine.")(reindex) +app.command(name="reindex", help="Reindex all Extralit entities into search engine.")(reindex) if __name__ == "__main__": app() diff --git a/extralit-server/src/extralit_server/cli/start.py b/extralit-server/src/extralit_server/cli/start.py index b88ce6e18..ebe7a10e3 100644 --- a/extralit-server/src/extralit_server/cli/start.py +++ b/extralit-server/src/extralit_server/cli/start.py @@ -16,9 +16,9 @@ def start( - host: str = typer.Option("0.0.0.0", help="The host where the Argilla server will be binded"), - port: int = typer.Option(6900, help="The port where the Argilla server will be binded"), - access_log: bool = typer.Option(True, help="Whether to enable or disable the Argilla server access log"), + host: str = typer.Option("0.0.0.0", help="The host where the Extralit server will be binded"), + port: int = typer.Option(6900, help="The port where the Extralit server will be binded"), + access_log: bool = typer.Option(True, help="Whether to enable or disable the Extralit server access log"), ) -> None: import uvicorn diff --git a/extralit-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 b/extralit-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 index e3c1aa043..7d5a39c37 100644 --- a/extralit-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 +++ b/extralit-server/src/extralit_server/contexts/hub_templates/README.md.jinja2 @@ -22,20 +22,20 @@ - **Point of Contact:** {{ point_of_contact }} {% endif %} -This dataset has been created with [Argilla](https://github.com/argilla-io/argilla). As shown in the sections below, this dataset can be loaded into your Argilla server as explained in [Load with Argilla](#load-with-argilla), or used directly with the `datasets` library in [Load with `datasets`](#load-with-datasets). +This dataset has been created with [Extralit](https://github.com/argilla-io/argilla). As shown in the sections below, this dataset can be loaded into your Extralit server as explained in [Load with Extralit](#load-with-argilla), or used directly with the `datasets` library in [Load with `datasets`](#load-with-datasets). -## Using this dataset with Argilla +## Using this dataset with Extralit -To load with Argilla, you'll just need to install Argilla as `pip install extralit --upgrade` and then use the following code: +To load with Extralit, you'll just need to install Extralit as `pip install extralit --upgrade` and then use the following code: ```python -import argilla as rg +import extralit as ex ds = ex.Dataset.from_hub("{{ repo_id }}", settings="auto") ``` -This will load the settings and records from the dataset repository and push them to you Argilla server for exploration and annotation. +This will load the settings and records from the dataset repository and push them to you Extralit server for exploration and annotation. ## Using this dataset with `datasets` @@ -47,17 +47,17 @@ from datasets import load_dataset ds = load_dataset("{{ repo_id }}") ``` -This will only load the records of the dataset, but not the Argilla settings. +This will only load the records of the dataset, but not the Extralit settings. ## Dataset Structure This dataset repo contains: * Dataset records in a format compatible with HuggingFace `datasets`. These records will be loaded automatically when using `ex.Dataset.from_hub` and can be loaded independently using the `datasets` library via `load_dataset`. -* The [annotation guidelines](#annotation-guidelines) that have been used for building and curating the dataset, if they've been defined in Argilla. -* A dataset configuration folder conforming to the Argilla dataset format in `.argilla`. +* The [annotation guidelines](#annotation-guidelines) that have been used for building and curating the dataset, if they've been defined in Extralit. +* A dataset configuration folder conforming to the Extralit dataset format in `.argilla`. -The dataset is created in Argilla with: **fields**, **questions**, **suggestions**, **metadata**, **vectors**, and **guidelines**. +The dataset is created in Extralit with: **fields**, **questions**, **suggestions**, **metadata**, **vectors**, and **guidelines**. ### Fields diff --git a/extralit-server/src/extralit_server/errors/future/base_errors.py b/extralit-server/src/extralit_server/errors/future/base_errors.py index 02b88ab36..301b15dc3 100644 --- a/extralit-server/src/extralit_server/errors/future/base_errors.py +++ b/extralit-server/src/extralit_server/errors/future/base_errors.py @@ -1,16 +1,16 @@ -# Copyright 2021-present, the Recognai S.L. team. +# Copyright 2024-present, Extralit Labs, Inc. # -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at # -# http://www.apache.org/licenses/LICENSE-2.0 +# http://www.apache.org/licenses/LICENSE-2.0 # -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. __all__ = [ "NotFoundError", @@ -29,7 +29,7 @@ class NotFoundError(Exception): - """Custom Argilla not found error. Use it for situations where an Argilla domain entity has not be found on the system.""" + """Custom Extralit not found error. Use it for situations where an Extralit domain entity has not be found on the system.""" def __init__(self, message, code=NOT_FOUND_ERROR): self.message = message @@ -37,7 +37,7 @@ def __init__(self, message, code=NOT_FOUND_ERROR): class NotUniqueError(Exception): - """Custom Argilla not unique error. Use it for situations where an Argilla domain entity already exists violating a constraint.""" + """Custom Extralit not unique error. Use it for situations where an Extralit domain entity already exists violating a constraint.""" def __init__(self, message, code=NOT_UNIQUE_ERROR): self.message = message @@ -45,7 +45,7 @@ def __init__(self, message, code=NOT_UNIQUE_ERROR): class UnprocessableEntityError(Exception): - """Custom Argilla unprocessable entity error. Use it for situations where an Argilla domain entity can not be processed.""" + """Custom Extralit unprocessable entity error. Use it for situations where an Extralit domain entity can not be processed.""" def __init__(self, message, code=UNPROCESSABLE_ENTITY_ERROR_CODE): self.message = message @@ -63,6 +63,4 @@ def __init__(self, message: str): class AuthenticationError(Exception): - """Custom Argilla unauthorized error. Use it for situations where an request is not authorized to perform an action.""" - - pass + """Custom Extralit unauthorized error. Use it for situations where an request is not authorized to perform an action.""" diff --git a/extralit-server/src/extralit_server/jobs/import_jobs.py b/extralit-server/src/extralit_server/jobs/import_jobs.py index 4da037d3e..75361621a 100644 --- a/extralit-server/src/extralit_server/jobs/import_jobs.py +++ b/extralit-server/src/extralit_server/jobs/import_jobs.py @@ -23,7 +23,7 @@ """ """ -Import jobs for processing data from various sources into Argilla datasets. +Import jobs for processing data from various sources into Extralit datasets. This module provides background jobs for importing data from ImportHistory records, reusing the same mapping and processing infrastructure as HuggingFace Hub imports. diff --git a/extralit-server/src/extralit_server/logging.py b/extralit-server/src/extralit_server/logging.py index edb12d865..18fa03e99 100644 --- a/extralit-server/src/extralit_server/logging.py +++ b/extralit-server/src/extralit_server/logging.py @@ -23,9 +23,9 @@ from typing import Type try: - from rich.logging import RichHandler as ArgillaHandler + from rich.logging import RichHandler as ExtralitHandler except ModuleNotFoundError: - ArgillaHandler = StreamHandler + ExtralitHandler = StreamHandler def full_qualified_class_name(_class: Type) -> str: @@ -63,7 +63,7 @@ def logger(self) -> logging.Logger: def configure_logging(): """Normalizes logging configuration for extralit and its dependencies""" - handler = ArgillaHandler() + handler = ExtralitHandler() # See the note here: https://docs.python.org/3/library/logging.html#logging.Logger.propagate # We only attach our handler to the root logger and let propagation take care of the rest diff --git a/extralit-server/src/extralit_server/settings.py b/extralit-server/src/extralit_server/settings.py index 5baa562ef..07ade12dc 100644 --- a/extralit-server/src/extralit_server/settings.py +++ b/extralit-server/src/extralit_server/settings.py @@ -205,7 +205,7 @@ def set_database_url(cls, database_url: str, info: ValidationInfo) -> str: regex = re.compile(r"sqlite(?!\+aiosqlite)") if regex.match(database_url): warnings.warn( - "From version 1.14.0, Argilla will use `aiosqlite` as default SQLite driver. The protocol in the" + "From version 1.14.0, Extralit will use `aiosqlite` as default SQLite driver. The protocol in the" " provided database URL has been automatically replaced from `sqlite` to `sqlite+aiosqlite`." " Please, update your database URL to use `sqlite+aiosqlite` protocol." ) @@ -215,7 +215,7 @@ def set_database_url(cls, database_url: str, info: ValidationInfo) -> str: parsed_url = urlparse(database_url) if parsed_url.scheme.__contains__("postgres"): # warnings.warn( - # "From version 1.14.0, Argilla will use `asyncpg` as default PostgreSQL driver. The protocol in the" + # "From version 1.14.0, Extralit will use `asyncpg` as default PostgreSQL driver. The protocol in the" # " provided database URL has been automatically replaced from `postgresql` to `postgresql+asyncpg`." # " Please, update your database URL to use `postgresql+asyncpg` protocol." # ) diff --git a/extralit-server/tests/unit/conftest.py b/extralit-server/tests/unit/conftest.py index 837db809a..842488e29 100644 --- a/extralit-server/tests/unit/conftest.py +++ b/extralit-server/tests/unit/conftest.py @@ -132,7 +132,7 @@ def test_telemetry(mocker: "MockerFixture") -> "TelemetryClient": @pytest_asyncio.fixture(scope="function") async def argilla_user() -> Generator[User, None, None]: user = await UserFactory.create( - first_name="Argilla", + first_name="Extralit", username="extralit", role=UserRole.admin, # Force to use an admin user password_hash="$2y$05$eaw.j2Kaw8s8vpscVIZMfuqSIX3OLmxA21WjtWicDdn0losQ91Hw.", diff --git a/extralit-server/tests/unit/test_logging.py b/extralit-server/tests/unit/test_logging.py index 79bbe97eb..61c59dfa4 100644 --- a/extralit-server/tests/unit/test_logging.py +++ b/extralit-server/tests/unit/test_logging.py @@ -14,7 +14,7 @@ import logging import pytest -from extralit_server.logging import ArgillaHandler, LoggingMixin +from extralit_server.logging import ExtralitHandler, LoggingMixin class LoggingForTest(LoggingMixin): @@ -48,8 +48,8 @@ def test_logging_mixin_without_breaking_constructors(): def test_logging_handler(mocker): - mocker.patch.object(ArgillaHandler, "emit", autospec=True) - handler = ArgillaHandler() + mocker.patch.object(ExtralitHandler, "emit", autospec=True) + handler = ExtralitHandler() logger = logging.getLogger(__name__) logger.handlers = [handler] @@ -60,7 +60,7 @@ def test_logging_handler(mocker): @pytest.mark.skip(reason="Failing temporally") def test_configure_logging_call(): - # Ensure that the root logger uses the ArgillaHandler (RichHandler if rich is installed), + # Ensure that the root logger uses the ExtralitHandler (RichHandler if rich is installed), # whereas the other loggers do not have handlers - assert isinstance(logging.getLogger().handlers[0], ArgillaHandler) + assert isinstance(logging.getLogger().handlers[0], ExtralitHandler) assert len(logging.getLogger("extralit").handlers) == 0 diff --git a/extralit/README.md b/extralit/README.md index 35df3143c..c91e3f3ec 100644 --- a/extralit/README.md +++ b/extralit/README.md @@ -1,5 +1,5 @@

- Extralit + Extralit
Extralit
@@ -73,7 +73,7 @@ pip install extralit Initialize the client: ```python -import argilla as rg +import extralit as ex client = ex.Extralit( api_url="https://your-deployment-url", diff --git a/extralit/docs/admin_guide/annotate.md b/extralit/docs/admin_guide/annotate.md index 1d41f341f..596b23e12 100644 --- a/extralit/docs/admin_guide/annotate.md +++ b/extralit/docs/admin_guide/annotate.md @@ -6,7 +6,7 @@ description: In this section, we will provide a step-by-step guide to show how t !!! note "" To experience the UI features firsthand, you can take a look at the [Demo ↗](https://demo.argilla.io/sign-in?auth=ZGVtbzoxMjM0NTY3OA==). -Argilla UI offers many functions to help you manage your annotation workflow, aiming to provide the most flexible approach to fit the wide variety of use cases handled by the community. +Extralit UI offers many functions to help you manage your annotation workflow, aiming to provide the most flexible approach to fit the wide variety of use cases handled by the community. ## Annotation interface overview @@ -39,7 +39,7 @@ The UI is responsive with two columns for larger devices and one column for smal ### Shortcuts -The Argilla UI includes a range of shortcuts. For the main actions (submit, discard, save as draft and selecting labels) the keys are showed in the corresponding button. +The Extralit UI includes a range of shortcuts. For the main actions (submit, discard, save as draft and selecting labels) the keys are showed in the corresponding button. To learn how to move from one question to another or between records using the keyboard, take a look at the table below. @@ -47,21 +47,21 @@ Shortcuts provide a smoother annotation experience, especially with datasets usi ??? "Available shortcuts" - | Action | Keys | - | --- | --- | - | Activate form | ⇥ Tab | - | Move between questions | ↓ Down arrow or ↑ Up arrow | - | Select and unselect label | 1, 2, 3 | - | Move between labels or ranking options | ⇥ Tab or ⇧ Shift ⇥ Tab | - | Select rating and rank | 1, 2, 3 | - | Fit span to character selection | Hold ⇧ Shift | - | Activate text area | ⇧ Shift ↵ Enter | - | Exit text area | Esc | - | Discard | ⌫ Backspace | - | Save draft (Mac os) | ⌘ Cmd S | - | Save draft (Other) | Ctrl S | - | Submit | ↵ Enter | - | Move between pages | → Right arrow or ← Left arrow | + | Action | Keys | + | -------------------------------------- | ----------------------------- | + | Activate form | ⇥ Tab | + | Move between questions | ↓ Down arrow or ↑ Up arrow | + | Select and unselect label | 1, 2, 3 | + | Move between labels or ranking options | ⇥ Tab or ⇧ Shift ⇥ Tab | + | Select rating and rank | 1, 2, 3 | + | Fit span to character selection | Hold ⇧ Shift | + | Activate text area | ⇧ Shift ↵ Enter | + | Exit text area | Esc | + | Discard | ⌫ Backspace | + | Save draft (Mac os) | ⌘ Cmd S | + | Save draft (Other) | Ctrl S | + | Submit | ↵ Enter | + | Move between pages | → Right arrow or ← Left arrow | ### View by status diff --git a/extralit/docs/admin_guide/custom_fields.md b/extralit/docs/admin_guide/custom_fields.md index d7a9ff7d3..adfb57c8c 100644 --- a/extralit/docs/admin_guide/custom_fields.md +++ b/extralit/docs/admin_guide/custom_fields.md @@ -1,10 +1,10 @@ --- -description: Learn how to create custom fields using HTML, CSS, and JavaScript templates in Argilla. +description: Learn how to create custom fields using HTML, CSS, and JavaScript templates in Extralit. --- # Custom fields with layout templates -This guide demonstrates how to create custom fields in Argilla using HTML, CSS, and JavaScript templates. +This guide demonstrates how to create custom fields in Extralit using HTML, CSS, and JavaScript templates. !!! info "Main Class" @@ -19,11 +19,11 @@ This guide demonstrates how to create custom fields in Argilla using HTML, CSS, ) ``` - > Check the [CustomField - Python Reference](../reference/argilla/settings/fields.md#src.argilla.settings._field.CustomField) to see the attributes, arguments, and methods of the `CustomField` class in detail. + > Check the [CustomField - Python Reference](../reference/extralit/settings/fields.md#src.argilla.settings._field.CustomField) to see the attributes, arguments, and methods of the `CustomField` class in detail. ## Understanding the Record Object -The `record` object is the main JavaScript object that contains all the information about the Argilla `record` object in the UI, like `fields`, `metadata`, etc. Your template can use this object to display record information within the custom field. You can for example access the fields of the record by navigating to `record.fields.` and this generally works the same for `metadata`, `responses`, etc. +The `record` object is the main JavaScript object that contains all the information about the Extralit `record` object in the UI, like `fields`, `metadata`, etc. Your template can use this object to display record information within the custom field. You can for example access the fields of the record by navigating to `record.fields.` and this generally works the same for `metadata`, `responses`, etc. ## Using Handlebars in your template @@ -66,7 +66,7 @@ html_template = """ We can now pass these templates to the `CustomField` class. ```python -import argilla as rg +import extralit as ex custom_field = ex.CustomField( name="image", @@ -152,7 +152,7 @@ The result will be the following: ??? "JSON viewer" - The value of a custom field is a dictionary in Python and a JavaScript object in the browser. You can render this object as a JSON string using the `json` helper. This is implemented in Argilla's frontend for convenience. If you want to learn more about handlebars helpers, you can check the [handlebars documentation](https://handlebarsjs.com/guide/builtin-helpers.html). + The value of a custom field is a dictionary in Python and a JavaScript object in the browser. You can render this object as a JSON string using the `json` helper. This is implemented in Extralit's frontend for convenience. If you want to learn more about handlebars helpers, you can check the [handlebars documentation](https://handlebarsjs.com/guide/builtin-helpers.html). ```python template = "{{ json record.fields.user_profile }}" @@ -220,7 +220,7 @@ script = """ We can now pass these templates to the `CustomField` class, ensuring that the `advanced_mode` is set to `True`. ```python -import argilla as rg +import extralit as ex custom_field = ex.CustomField( name="image", diff --git a/extralit/docs/admin_guide/dataset.md b/extralit/docs/admin_guide/dataset.md index a9752e4ab..8cc1adea2 100644 --- a/extralit/docs/admin_guide/dataset.md +++ b/extralit/docs/admin_guide/dataset.md @@ -4,7 +4,7 @@ description: In this section, we will provide a step-by-step guide to show how t # Dataset management -This guide provides an overview of datasets, explaining the basics of how to set them up and manage them in Argilla. +This guide provides an overview of datasets, explaining the basics of how to set them up and manage them in Extralit. A **dataset** is a collection of records that you can configure for labelers to provide feedback using the UI. Depending on the specific requirements of your task, you may need various types of feedback. You can customize the dataset to include different kinds of questions, so the first step will be to define the aim of your project and the kind of data and feedback you will need. With this information, you can start configuring a dataset by defining fields, questions, metadata, vectors, and guidelines through settings. @@ -25,7 +25,7 @@ A **dataset** is a collection of records that you can configure for labelers to client=client ) ``` - > Check the [Dataset - Python Reference](../reference/argilla/datasets/datasets.md) to see the attributes, arguments, and methods of the `Dataset` class in detail. + > Check the [Dataset - Python Reference](../reference/extralit/datasets/datasets.md) to see the attributes, arguments, and methods of the `Dataset` class in detail. === "`ex.Settings`" @@ -46,17 +46,17 @@ A **dataset** is a collection of records that you can configure for labelers to ) ``` - > Check the [Settings - Python Reference](../reference/argilla/settings/settings.md) to see the attributes, arguments, and methods of the `Settings` class in detail. + > Check the [Settings - Python Reference](../reference/extralit/settings/settings.md) to see the attributes, arguments, and methods of the `Settings` class in detail. ## Create a dataset To create a dataset, you can define it in the `Dataset` class and then call the `create` method that will send the dataset to the server so that it can be visualized in the UI. If the dataset does not appear in the UI, you may need to click the refresh button to update the view. For further configuration of the dataset, you can refer to the [settings section](#define-dataset-settings). !!! info - If you have deployed Argilla with Hugging Face Spaces and HF Sign in, you can use `argilla` as a workspace name. Otherwise, you might need to create a workspace following [this guide](workspace.md#create-a-new-workspace). + If you have deployed Extralit with Hugging Face Spaces and HF Sign in, you can use `argilla` as a workspace name. Otherwise, you might need to create a workspace following [this guide](workspace.md#create-a-new-workspace). ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -93,7 +93,7 @@ dataset.create() To create multiple datasets with the same settings, define the settings once and pass it to each dataset. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -119,7 +119,7 @@ dataset2.create() To create a new dataset from an existing dataset, get the settings from the existing dataset and pass them to the new dataset. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -141,16 +141,16 @@ new_dataset.create() ## Define dataset settings !!! tip - Instead of defining your own custom settings, you can use some of our pre-built templates for text classification, ranking and rating. Learn more [here](../reference/argilla/settings/settings.md#creating-settings-using-built-in-templates). + Instead of defining your own custom settings, you can use some of our pre-built templates for text classification, ranking and rating. Learn more [here](../reference/extralit/settings/settings.md#creating-settings-using-built-in-templates). ### Fields -The fields in a dataset consist of one or more data items requiring annotation. Currently, Argilla supports plain text and markdown through the `TextField`, images through the `ImageField`, chat formatted data through the `ChatField` and full custom templates through our `CustomField`. +The fields in a dataset consist of one or more data items requiring annotation. Currently, Extralit supports plain text and markdown through the `TextField`, images through the `ImageField`, chat formatted data through the `ChatField` and full custom templates through our `CustomField`. !!! note The order of the fields in the UI follows the order in which these are added to the fields attribute in the Python SDK. -> Check the [Field - Python Reference](../reference/argilla/settings/fields.md) to see the field classes in detail. +> Check the [Field - Python Reference](../reference/extralit/settings/fields.md) to see the field classes in detail. === "Text" @@ -213,7 +213,7 @@ The fields in a dataset consist of one or more data items requiring annotation. To collect feedback for your dataset, you need to formulate questions that annotators will be asked to answer. -> Check the [Questions - Python Reference](../reference/argilla/settings/questions.md) to see the question classes in detail. +> Check the [Questions - Python Reference](../reference/extralit/settings/questions.md) to see the question classes in detail. === "Label" A `LabelQuestion` asks annotators to choose a unique label from a list of options. This type is useful for text classification tasks. In the UI, they will have a rounded shape. @@ -330,7 +330,7 @@ To collect feedback for your dataset, you need to formulate questions that annot Metadata properties allow you to configure the use of metadata information for the filtering and sorting features available in the UI and Python SDK. -> Check the [Metadata - Python Reference](../reference/argilla/settings/metadata_property.md) to see the metadata classes in detail. +> Check the [Metadata - Python Reference](../reference/extralit/settings/metadata_property.md) to see the metadata classes in detail. === "Terms" A `TermsMetadataProperty` allows to add a list of strings as metadata options. @@ -378,7 +378,7 @@ Metadata properties allow you to configure the use of metadata information for t To use the similarity search in the UI and the Python SDK, you will need to configure vectors using the `VectorField` class. -> Check the [Vector - Python Reference](../reference/argilla/settings/vectors.md) to see the `VectorField` class in detail. +> Check the [Vector - Python Reference](../reference/extralit/settings/vectors.md) to see the `VectorField` class in detail. ```python ex.VectorField( @@ -410,9 +410,9 @@ It is good practice to use at least the dataset guidelines if not both methods. ### Distribution -When working as a team, you may want to distribute the annotation task to ensure efficiency and quality. You can use the `TaskDistribution` settings to configure the number of minimum submitted responses expected for each record. Argilla will use this setting to automatically handle records in your team members' pending queues. +When working as a team, you may want to distribute the annotation task to ensure efficiency and quality. You can use the `TaskDistribution` settings to configure the number of minimum submitted responses expected for each record. Extralit will use this setting to automatically handle records in your team members' pending queues. -> Check the [Task Distribution - Python Reference](../reference/argilla/settings/task_distribution.md) to see the `TaskDistribution` class in detail. +> Check the [Task Distribution - Python Reference](../reference/extralit/settings/task_distribution.md) to see the `TaskDistribution` class in detail. ```python ex.TaskDistribution( @@ -428,7 +428,7 @@ ex.TaskDistribution( You can list all the datasets available in a workspace using the `datasets` attribute of the `Workspace` class. You can also use `len(workspace.datasets)` to get the number of datasets in a workspace. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -443,7 +443,7 @@ for dataset in datasets: When you list datasets, dataset settings are not preloaded, since this can introduce extra requests to the server. If you want to work with settings when listing datasets, you need to load them: ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -457,14 +457,14 @@ for dataset in client.datasets: ## Retrieve a dataset -You can retrieve a dataset by calling the `datasets` method on the `Argilla` class and passing the `name` or `id` of the dataset as an argument. If the dataset does not exist, a warning message will be raised and `None` will be returned. +You can retrieve a dataset by calling the `datasets` method on the `Extralit` class and passing the `name` or `id` of the dataset as an argument. If the dataset does not exist, a warning message will be raised and `None` will be returned. === "By name" By default, this method attempts to retrieve the dataset from the first workspace. If the dataset is in a different workspace, you must specify either the workspace or workspace name as an argument. ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -478,7 +478,7 @@ You can retrieve a dataset by calling the `datasets` method on the `Argilla` cla === "By id" ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -490,7 +490,7 @@ You can retrieve a dataset by calling the `datasets` method on the `Argilla` cla You can check if a dataset exists. The `client.datasets` method will return `None` if the dataset was not found. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -562,7 +562,7 @@ Once a dataset is published, there are limited things you can update. Here is a To modify these attributes, you can simply set the new value of the attributes you wish to change and call the `update` method on the `Dataset` object. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -579,7 +579,7 @@ You can also **add and delete metadata properties and vector fields** using the === "Add" ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -598,7 +598,7 @@ You can also **add and delete metadata properties and vector fields** using the === "Delete" ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -615,7 +615,7 @@ You can also **add and delete metadata properties and vector fields** using the You can delete an existing dataset by calling the `delete` method on the `Dataset` class. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") diff --git a/extralit/docs/admin_guide/distribution.md b/extralit/docs/admin_guide/distribution.md index 2be817ada..392d4d33b 100644 --- a/extralit/docs/admin_guide/distribution.md +++ b/extralit/docs/admin_guide/distribution.md @@ -4,9 +4,9 @@ description: In this section, we will provide a step-by-step guide to show how t # Distribute the annotation task among the team -This guide explains how you can use Argilla’s **automatic task distribution** to efficiently divide the task of annotating a dataset among multiple team members. +This guide explains how you can use Extralit’s **automatic task distribution** to efficiently divide the task of annotating a dataset among multiple team members. -Owners and admins can define the minimum number of submitted responses expected for each record. Argilla will use this setting to handle automatically the records that will be shown in the pending queues of all users with access to the dataset. +Owners and admins can define the minimum number of submitted responses expected for each record. Extralit will use this setting to handle automatically the records that will be shown in the pending queues of all users with access to the dataset. When a record has met the minimum number of submissions, the status of the record will change to `completed`, and the record will be removed from the `Pending` queue of all team members so they can focus on providing responses where they are most needed. The dataset’s annotation task will be fully completed once all records have the `completed` status. @@ -24,11 +24,11 @@ When a record has met the minimum number of submissions, the status of the recor min_submitted = 2 ) ``` - > Check the [Task Distribution - Python Reference](../reference/argilla/settings/task_distribution.md) to see the attributes, arguments, and methods of the `TaskDistribution` class in detail. + > Check the [Task Distribution - Python Reference](../reference/extralit/settings/task_distribution.md) to see the attributes, arguments, and methods of the `TaskDistribution` class in detail. ## Configure task distribution settings -By default, Argilla will set the required minimum submitted responses to 1. This means that whenever a record has at least 1 response with the status `submitted` the status of the record will be `completed` and removed from the `Pending` queue of other team members. +By default, Extralit will set the required minimum submitted responses to 1. This means that whenever a record has at least 1 response with the status `submitted` the status of the record will be `completed` and removed from the `Pending` queue of other team members. !!! tip Leave the default value of minimum submissions (1) if you are working on your own or when you don't require more than one submitted response per record. @@ -68,7 +68,7 @@ If you wish to change the minimum submitted responses required in a dataset, you Admins and owners can change this value from the dataset settings page in the UI or from the SDK: ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -86,7 +86,7 @@ This method will return the number of records that have the status `completed`, total number of records in the dataset. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -107,7 +107,7 @@ This will return the number of records that have the status `completed`, `pendin as well as the number of completed submissions per user. You can visit the [Annotation Progress](../admin_guide/annotate.md#annotation-progress) section for more information. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") diff --git a/extralit/docs/admin_guide/import_export.md b/extralit/docs/admin_guide/import_export.md index c260850f3..6c90f79de 100644 --- a/extralit/docs/admin_guide/import_export.md +++ b/extralit/docs/admin_guide/import_export.md @@ -6,12 +6,12 @@ description: In this section, we will provide a step-by-step guide to show how t This guide provides an overview of how to import and export your dataset or its records to Python, your local disk, or the Hugging Face Hub. -In Argilla, you can import/export two main components of a dataset: +In Extralit, you can import/export two main components of a dataset: -- The dataset's complete configuration is defined in `ex.Settings`. This is useful if you want to share your feedback task or restore it later in Argilla. -- The records stored in the dataset, including `Metadata`, `Vectors`, `Suggestions`, and `Responses`. This is useful if you want to use your dataset's records outside of Argilla. +- The dataset's complete configuration is defined in `ex.Settings`. This is useful if you want to share your feedback task or restore it later in Extralit. +- The records stored in the dataset, including `Metadata`, `Vectors`, `Suggestions`, and `Responses`. This is useful if you want to use your dataset's records outside of Extralit. -Check the [Dataset - Python Reference](../reference/argilla/datasets/datasets.md) to see the attributes, arguments, and methods of the export `Dataset` class in detail. +Check the [Dataset - Python Reference](../reference/extralit/datasets/datasets.md) to see the attributes, arguments, and methods of the export `Dataset` class in detail. !!! info "Main Classes" === "`ex.Dataset.to_hub`" @@ -73,23 +73,23 @@ Check the [Dataset - Python Reference](../reference/argilla/datasets/datasets.md ex.Dataset.records.to_list() ``` - > Check the [Dataset - Python Reference](../reference/argilla/datasets/datasets.md) to see the attributes, arguments, and methods of the export `Dataset` class in detail. + > Check the [Dataset - Python Reference](../reference/extralit/datasets/datasets.md) to see the attributes, arguments, and methods of the export `Dataset` class in detail. - > Check the [Record - Python Reference](../reference/argilla/records/records.md) to see the attributes, arguments, and methods of the `Record` class in detail. + > Check the [Record - Python Reference](../reference/extralit/records/records.md) to see the attributes, arguments, and methods of the `Record` class in detail. ## Importing and exporting datasets -First, we will go through exporting a complete dataset from Argilla. This includes the dataset's settings and records. All of these methods use the `ex.Dataset.from_*` and `ex.Dataset.to_*` methods. +First, we will go through exporting a complete dataset from Extralit. This includes the dataset's settings and records. All of these methods use the `ex.Dataset.from_*` and `ex.Dataset.to_*` methods. ### Hugging Face Hub #### Export to Hub -You can push a dataset from Argilla to the Hugging Face Hub. This is useful if you want to share your dataset with the community or version control it. You can push the dataset to the Hugging Face Hub using the `ex.Dataset.to_hub` method. +You can push a dataset from Extralit to the Hugging Face Hub. This is useful if you want to share your dataset with the community or version control it. You can push the dataset to the Hugging Face Hub using the `ex.Dataset.to_hub` method. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -107,24 +107,24 @@ dataset.to_hub(repo_id="/") #### Import from Hub -You can pull a dataset from the Hugging Face Hub to Argilla. This is useful if you want to restore a dataset and its configuration. You can pull the dataset from the Hugging Face Hub using the `ex.Dataset.from_hub` method. +You can pull a dataset from the Hugging Face Hub to Extralit. This is useful if you want to restore a dataset and its configuration. You can pull the dataset from the Hugging Face Hub using the `ex.Dataset.from_hub` method. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") ex.Dataset.from_hub(repo_id="/") ``` -By default, the `Dataset.from_hub` method will return the URL of the dataset configuration page. This page will let you preview the dataset's configuration and records before creating it in Argilla. +By default, the `Dataset.from_hub` method will return the URL of the dataset configuration page. This page will let you preview the dataset's configuration and records before creating it in Extralit. You can infer the settings of the dataset automatically by configuring the `settings` parameter to `"auto"`. This will infer the dataset's settings based on the dataset's features in `datasets.Features`. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -154,10 +154,10 @@ The `ex.Dataset.from_hub` method loads the configuration and records from the da #### Import settings from Hub -When importing datasets from the hub, Argilla will load settings from the hub in three ways: +When importing datasets from the hub, Extralit will load settings from the hub in three ways: -1. If the dataset was pushed to hub by Argilla, then the settings will be loaded from the hub via the configuration file. -2. If the dataset was loaded by another source, then Argilla will define the settings based on the dataset's features in `datasets.Features`. For example, creating a `TextField` for a text feature or a `LabelQuestion` for a label class. +1. If the dataset was pushed to hub by Extralit, then the settings will be loaded from the hub via the configuration file. +2. If the dataset was loaded by another source, then Extralit will define the settings based on the dataset's features in `datasets.Features`. For example, creating a `TextField` for a text feature or a `LabelQuestion` for a label class. 3. You can pass a custom `ex.Settings` object to the `ex.Dataset.from_hub` method via the `settings` parameter. This will override the settings loaded from the hub. ```python @@ -175,10 +175,10 @@ dataset = ex.Dataset.from_hub(repo_id="/", settings=settings #### Export to Disk -You can save a dataset from Argilla to your local disk. This is useful if you want to back up your dataset. You can use the `ex.Dataset.to_disk` method. We recommend you to use an empty directory. +You can save a dataset from Extralit to your local disk. This is useful if you want to back up your dataset. You can use the `ex.Dataset.to_disk` method. We recommend you to use an empty directory. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -195,10 +195,10 @@ dataset.to_disk(path="", with_records=False) #### Import from Disk -You can load a dataset from your local disk to Argilla. This is useful if you want to restore a dataset's configuration. You can use the `ex.Dataset.from_disk` method. +You can load a dataset from your local disk to Extralit. This is useful if you want to restore a dataset's configuration. You can use the `ex.Dataset.from_disk` method. ```python -import argilla as rg +import extralit as ex dataset = ex.Dataset.from_disk(path="") ``` @@ -212,7 +212,7 @@ dataset = ex.Dataset.from_disk(path="") ## Importing and exporting records -The records alone can be exported from a dataset in Argilla. This is useful if you want to process the records in Python, export them to a different platform, or use them in model training. All of these methods use the `ex.Dataset.records` attribute. +The records alone can be exported from a dataset in Extralit. This is useful if you want to process the records in Python, export them to a different platform, or use them in model training. All of these methods use the `ex.Dataset.records` attribute. ### Export records @@ -226,7 +226,7 @@ The records can be exported as a dictionary, a list of dictionaries, or a `Datas Records can be exported from `Dataset.records` as a dictionary. The `to_dict` method can be used to export records as a dictionary. You can specify the orientation of the dictionary output. You can also decide if to flatten or not the dictionary. ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset") @@ -249,7 +249,7 @@ The records can be exported as a dictionary, a list of dictionaries, or a `Datas Records can be exported from `Dataset.records` as a list of dictionaries. The `to_list` method can be used to export records as a list of dictionaries. You can decide if to flatten it or not. ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -272,7 +272,7 @@ The records can be exported as a dictionary, a list of dictionaries, or a `Datas Records can be exported from `Dataset.records` to the `datasets` package. The `to_dataset` method can be used to export records to the `datasets` package. You can specify the name of the dataset and the split to export the records. ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") dataset = client.datasets(name="my_dataset") @@ -283,4 +283,4 @@ The records can be exported as a dictionary, a list of dictionaries, or a `Datas ### Import records -To import records to a dataset, use the `ex.Datasets.records.log` method. There is a guide on how to do this in [How-to guides - Record](./record.md), or you can check the [Record - Python Reference](../reference/argilla/records/records.md). \ No newline at end of file +To import records to a dataset, use the `ex.Datasets.records.log` method. There is a guide on how to do this in [How-to guides - Record](./record.md), or you can check the [Record - Python Reference](../reference/extralit/records/records.md). \ No newline at end of file diff --git a/extralit/docs/admin_guide/index.md b/extralit/docs/admin_guide/index.md index e4c8406a7..d52d22a41 100644 --- a/extralit/docs/admin_guide/index.md +++ b/extralit/docs/admin_guide/index.md @@ -54,7 +54,7 @@ hide: toc --- - Learn what they are and how to manage (create, read and delete) `Users` in Argilla. + Learn what they are and how to manage (create, read and delete) `Users` in Extralit. [:octicons-arrow-right-24: How-to guide](user.md) @@ -62,7 +62,7 @@ hide: toc --- - Learn what they are and how to manage (create, read and delete) `Workspaces` in Argilla. + Learn what they are and how to manage (create, read and delete) `Workspaces` in Extralit. [:octicons-arrow-right-24: How-to guide](workspace.md) @@ -86,7 +86,7 @@ hide: toc --- - Learn how to use Argilla's automatic `TaskDistribution` to annotate as a team efficiently. + Learn how to use Extralit's automatic `TaskDistribution` to annotate as a team efficiently. [:octicons-arrow-right-24: How-to guide](distribution.md) @@ -94,7 +94,7 @@ hide: toc --- - Learn how to use the Argilla UI to navigate `Datasets` and submit `Responses`. + Learn how to use the Extralit UI to navigate `Datasets` and submit `Responses`. [:octicons-arrow-right-24: How-to guide](annotate.md) @@ -133,7 +133,7 @@ hide: toc --- - Learn how to use Argilla webhooks to receive notifications about events in your Argilla Server. + Learn how to use Extralit webhooks to receive notifications about events in your Extralit Server. [:octicons-arrow-right-24: How-to guide](webhooks.md) @@ -141,7 +141,7 @@ hide: toc --- - Learn how Argilla webhooks are implented under the hood and the structure of the different events. + Learn how Extralit webhooks are implented under the hood and the structure of the different events. [:octicons-arrow-right-24: How-to guide](webhooks_internals.md) @@ -154,11 +154,11 @@ hide: toc [:octicons-arrow-right-24: How-to guide](use_markdown_to_format_rich_content.md) -- __Migrate to Argilla V2__ +- __Migrate to Extralit V2__ --- - Learn how to migrate `Users`, `Workspaces` and `Datasets` from Argilla V1 to V2. + Learn how to migrate `Users`, `Workspaces` and `Datasets` from Extralit V1 to V2. [:octicons-arrow-right-24: How-to guide](migrate_from_legacy_datasets.md) diff --git a/extralit/docs/admin_guide/migrate_from_legacy_datasets.md b/extralit/docs/admin_guide/migrate_from_legacy_datasets.md index d750898a6..656e67162 100644 --- a/extralit/docs/admin_guide/migrate_from_legacy_datasets.md +++ b/extralit/docs/admin_guide/migrate_from_legacy_datasets.md @@ -1,10 +1,10 @@ -# Migrate users, workspaces and datasets to Argilla 2.x +# Migrate users, workspaces and datasets to Extralit 2.x -This guide will help you migrate task to Argilla V2. These do not include the `FeedbackDataset` which is just an interim naming convention for the latest extensible dataset. Task-specific datasets are datasets that are used for a specific task, such as text classification, token classification, etc. If you would like to learn about the backstory of SDK this migration, please refer to the [SDK migration blog post](https://argilla.io/blog/introducing-argilla-new-sdk/). Additionally, we will provide guidance on how to maintain your `User`'s and `Workspace`'s within the new Argilla V2 format. +This guide will help you migrate task to Extralit V2. These do not include the `FeedbackDataset` which is just an interim naming convention for the latest extensible dataset. Task-specific datasets are datasets that are used for a specific task, such as text classification, token classification, etc. If you would like to learn about the backstory of SDK this migration, please refer to the [SDK migration blog post](https://argilla.io/blog/introducing-argilla-new-sdk/). Additionally, we will provide guidance on how to maintain your `User`'s and `Workspace`'s within the new Extralit V2 format. -## API Differences Between Argilla v1 and v2 +## API Differences Between Extralit v1 and v2 -Argilla v2 introduces several important changes to the API that affect how you migrate and interact with users, workspaces, datasets, schemas, and more. Below is a summary of the key differences: +Extralit v2 introduces several important changes to the API that affect how you migrate and interact with users, workspaces, datasets, schemas, and more. Below is a summary of the key differences: ### Authentication - **v1:** Used a simple API key for authentication, passed in the `X-API-Key` header. @@ -41,21 +41,21 @@ Argilla v2 introduces several important changes to the API that affect how you m !!! note Legacy datasets include: `DatasetForTextClassification`, `DatasetForTokenClassification`, and `DatasetForText2Text`. - `FeedbackDataset`'s do not need to be migrated as they are already in the Argilla V2 format. Anyway, since the 2.x version includes changes to the search index structure, you should reindex the datasets by enabling the docker environment variable REINDEX_DATASET (This step is automatically executed if you're running Argilla in an HF Space). See the [server configuration docs](../reference/extralit-server/configuration.md#docker-images-only) section for more details. + `FeedbackDataset`'s do not need to be migrated as they are already in the Extralit V2 format. Anyway, since the 2.x version includes changes to the search index structure, you should reindex the datasets by enabling the docker environment variable REINDEX_DATASET (This step is automatically executed if you're running Extralit in an HF Space). See the [server configuration docs](../reference/extralit-server/configuration.md#docker-images-only) section for more details. To follow this guide, you will need to have the following prerequisites: - An argilla 1.* server instance running with legacy datasets. -- An argilla >=1.29 server instance running. If you don't have one, you can create one by following this [Argilla guide](../getting_started/quickstart.md). +- An argilla >=1.29 server instance running. If you don't have one, you can create one by following this [Extralit guide](../getting_started/quickstart.md). - The `argilla` sdk package installed in your environment. !!! warning This guide will recreate all `User`'s' and `Workspace`'s' on a new server. Hence, they will be created with new passwords and IDs. If you want to keep the same passwords and IDs, you can can copy the datasets to a temporary v2 instance, then upgrade your current instance to v2.0 and copy the datasets back to your original instance after. -If your current legacy datasets are on a server with Argilla release after 1.29, you could chose to recreate your legacy datasets as new datasets on the same server. You could then upgrade the server to Argilla 2.0 and carry on working their. Your legacy datasets will not be visible on the new server, but they will remain in storage layers if you need to access them. +If your current legacy datasets are on a server with Extralit release after 1.29, you could chose to recreate your legacy datasets as new datasets on the same server. You could then upgrade the server to Extralit 2.0 and carry on working their. Your legacy datasets will not be visible on the new server, but they will remain in storage layers if you need to access them. -For migrating the guides you will need to install the new `extralit` package. This includes a new `v1` module that allows you to connect to the Argilla V1 server. +For migrating the guides you will need to install the new `extralit` package. This includes a new `v1` module that allows you to connect to the Extralit V1 server. ```bash pip install "extralit>=0.3.0" @@ -65,23 +65,23 @@ pip install "extralit>=0.3.0" The guide will take you through two steps: -1. **Retrieve the old users and workspaces** from the Argilla V1 server using the new `argilla` package. -2. **Recreate the users and workspaces** on the Argilla V2 server based op `name` as unique identifier. +1. **Retrieve the old users and workspaces** from the Extralit V1 server using the new `argilla` package. +2. **Recreate the users and workspaces** on the Extralit V2 server based op `name` as unique identifier. ### Step 1: Retrieve the old users and workspaces -You can use the `v1` module to connect to the Argilla V1 server. +You can use the `v1` module to connect to the Extralit V1 server. ```python import argilla.v1 as rg_v1 -# Initialize the API with an Argilla server less than 2.0 +# Initialize the API with an Extralit server less than 2.0 api_url = "" api_key = "" rg_v1.init(api_url, api_key) ``` -Next, load the dataset `User` and `Workspaces` and from the Argilla V1 server: +Next, load the dataset `User` and `Workspaces` and from the Extralit V1 server: ```python users_v1 = rg_v1.User.list() @@ -90,17 +90,17 @@ workspaces_v1 = rg_v1.Workspace.list() ### Step 2: Recreate the users and workspaces -To recreate the users and workspaces on the Argilla V2 server, you can use the `argilla` package. +To recreate the users and workspaces on the Extralit V2 server, you can use the `argilla` package. -First, instantiate the `Argilla` class to connect to the Argilla V2 server: +First, instantiate the `Extralit` class to connect to the Extralit V2 server: ```python -import argilla as rg +import extralit as ex client = ex.Extralit() ``` -Next, recreate the users and workspaces on the Argilla V2 server: +Next, recreate the users and workspaces on the Extralit V2 server: ```python for workspace in workspaces_v1: @@ -133,30 +133,30 @@ for user in users_v1: 1. You need to chose a new password for the user, to do this programmatically you can use the `uuid` package to generate a random password. Take care to keep track of the passwords you chose, since you will not be able to retrieve them later. -Now you have successfully migrated your users and workspaces to Argilla V2 and can continue with the next steps. +Now you have successfully migrated your users and workspaces to Extralit V2 and can continue with the next steps. ## Migrate datasets The guide will take you through three steps: -1. **Retrieve the legacy dataset** from the Argilla V1 server using the new `argilla` package. -2. **Define the new dataset** in the Argilla V2 format. -3. **Upload the dataset records** to the new Argilla V2 dataset format and attributes. +1. **Retrieve the legacy dataset** from the Extralit V1 server using the new `argilla` package. +2. **Define the new dataset** in the Extralit V2 format. +3. **Upload the dataset records** to the new Extralit V2 dataset format and attributes. ### Step 1: Retrieve the legacy dataset -You can use the `v1` module to connect to the Argilla V1 server. +You can use the `v1` module to connect to the Extralit V1 server. ```python import argilla.v1 as rg_v1 -# Initialize the API with an Argilla server less than 2.0 +# Initialize the API with an Extralit server less than 2.0 api_url = "" api_key = "" rg_v1.init(api_url, api_key) ``` -Next, load the dataset settings and records from the Argilla V1 server: +Next, load the dataset settings and records from the Extralit V1 server: ```python dataset_name = "news-programmatic-labeling" @@ -171,12 +171,12 @@ Your legacy dataset is now loaded into the `hf_dataset` object. ### Step 2: Define the new dataset -Define the new dataset in the Argilla V2 format. The new dataset format is defined in the `argilla` package. You can create a new dataset with the `Settings` and `Dataset` classes: +Define the new dataset in the Extralit V2 format. The new dataset format is defined in the `argilla` package. You can create a new dataset with the `Settings` and `Dataset` classes: -First, instantiate the `Argilla` class to connect to the Argilla V2 server: +First, instantiate the `Extralit` class to connect to the Extralit V2 server: ```python -import argilla as rg +import extralit as ex client = ex.Extralit() ``` @@ -273,7 +273,7 @@ Next, define the new dataset settings: 1. We should provide all relevant metadata fields available in the dataset. 2. We should provide all relevant vectors available in the dataset. -Finally, create the new dataset on the Argilla V2 server: +Finally, create the new dataset on the Extralit V2 server: ```python dataset = ex.Dataset(name=dataset_name, workspace=workspace, settings=settings) @@ -292,7 +292,7 @@ dataset.create() ### Step 3: Upload the dataset records -To upload the records to the new server, we will need to convert the records from the Argilla V1 format to the Argilla V2 format. The new `argilla` sdk package uses a generic `Record` class, but legacy datasets have specific record classes. We will need to convert the records to the generic `Record` class. +To upload the records to the new server, we will need to convert the records from the Extralit V1 format to the Extralit V2 format. The new `argilla` sdk package uses a generic `Record` class, but legacy datasets have specific record classes. We will need to convert the records to the generic `Record` class. Here are a set of example functions to convert the records for single-label and multi-label classification. You can modify these functions to suit your dataset. @@ -300,7 +300,7 @@ Here are a set of example functions to convert the records for single-label and ```python def map_to_record_for_single_label(data: dict, users_by_name: dict, current_user: ex.User) -> ex.Record: - """ This function maps a text classification record dictionary to the new Argilla record.""" + """ This function maps a text classification record dictionary to the new Extralit record.""" suggestions = [] responses = [] @@ -346,7 +346,7 @@ Here are a set of example functions to convert the records for single-label and ```python def map_to_record_for_multi_label(data: dict, users_by_name: dict, current_user: ex.User) -> ex.Record: - """ This function maps a text classification record dictionary to the new Argilla record.""" + """ This function maps a text classification record dictionary to the new Extralit record.""" suggestions = [] responses = [] @@ -392,7 +392,7 @@ Here are a set of example functions to convert the records for single-label and ```python def map_to_record_for_span(data: dict, users_by_name: dict, current_user: ex.User) -> ex.Record: - """ This function maps a token classification record dictionary to the new Argilla record.""" + """ This function maps a token classification record dictionary to the new Extralit record.""" suggestions = [] responses = [] @@ -439,7 +439,7 @@ Here are a set of example functions to convert the records for single-label and ```python def map_to_record_for_text_generation(data: dict, users_by_name: dict, current_user: ex.User) -> ex.Record: - """ This function maps a text2text record dictionary to the new Argilla record.""" + """ This function maps a text2text record dictionary to the new Extralit record.""" suggestions = [] responses = [] @@ -483,7 +483,7 @@ Here are a set of example functions to convert the records for single-label and 2. Make sure the `question_name` matches the name of the question in question settings. -The functions above depend on the `users_by_name` dictionary and the `current_user` object to assign responses to users, we need to load the existing users. You can retrieve the users from the Argilla V2 server and the current user as follows: +The functions above depend on the `users_by_name` dictionary and the `current_user` object to assign responses to users, we need to load the existing users. You can retrieve the users from the Extralit V2 server and the current user as follows: ```python users_by_name = {user.username: user for user in client.users} @@ -502,4 +502,4 @@ for data in hf_records: dataset.records.log(records) ``` -You have now successfully migrated your legacy dataset to Argilla V2. For more guides on how to use the Argilla SDK, please refer to the [How to guides](index.md). +You have now successfully migrated your legacy dataset to Extralit V2. For more guides on how to use the Extralit SDK, please refer to the [How to guides](index.md). diff --git a/extralit/docs/admin_guide/query.md b/extralit/docs/admin_guide/query.md index f449ea4e1..ccdccc4c7 100644 --- a/extralit/docs/admin_guide/query.md +++ b/extralit/docs/admin_guide/query.md @@ -4,7 +4,7 @@ description: In this section, we will provide a step-by-step guide to show how t # Query and filter records -This guide provides an overview of how to query and filter a dataset in Argilla. +This guide provides an overview of how to query and filter a dataset in Extralit. You can search for records in your dataset by **querying** or **filtering**. The query focuses on the content of the text field, while the filter is used to filter the records based on conditions. You can use them independently or combine multiple filters to create complex search queries. You can also export records from a dataset either as a single dictionary or a list of dictionaries. @@ -18,7 +18,7 @@ You can search for records in your dataset by **querying** or **filtering**. The filter=filter ) ``` - > Check the [Query - Python Reference](../reference/argilla/search.md) to see the attributes, arguments, and methods of the `Query` class in detail. + > Check the [Query - Python Reference](../reference/extralit/search.md) to see the attributes, arguments, and methods of the `Query` class in detail. === "`ex.Filter`" @@ -29,7 +29,7 @@ You can search for records in your dataset by **querying** or **filtering**. The ] ) ``` - > Check the [Filter - Python Reference](../reference/argilla/search.md) to see the attributes, arguments, and methods of the `Filter` class in detail. + > Check the [Filter - Python Reference](../reference/extralit/search.md) to see the attributes, arguments, and methods of the `Filter` class in detail. === "`ex.Similar`" @@ -39,7 +39,7 @@ You can search for records in your dataset by **querying** or **filtering**. The value=[0.1, 0.2, 0.3], ) ``` - > Check the [Similar - Python Reference](../reference/argilla/search.md) to see the attributes, arguments, and methods of the `Similar` class in detail. + > Check the [Similar - Python Reference](../reference/extralit/search.md) to see the attributes, arguments, and methods of the `Similar` class in detail. ## Query with search terms @@ -48,7 +48,7 @@ To search for records with terms, you can use the `Dataset.records` attribute wi === "Single term search" ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -62,7 +62,7 @@ To search for records with terms, you can use the `Dataset.records` attribute wi === "Multiple terms search" ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -104,7 +104,7 @@ You can use the `Filter` class to define the conditions and pass them to the `Da === "Single condition" ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -120,7 +120,7 @@ You can use the `Filter` class to define the conditions and pass them to the `Da === "Multiple conditions" ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -165,7 +165,7 @@ You can filter records based on the following fields: You can filter records based on record or response status. Record status can be `pending` or `completed`, and response status can be `draft`, `submitted`, or `discarded`. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -189,7 +189,7 @@ You can search for records that are similar to a given vector. You can use the ` ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -214,7 +214,7 @@ filtered_records = dataset.records(similar_filter).to_list(flatten=True) As mentioned, you can use a query with a search term and a filter or various filters to create complex search queries. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") diff --git a/extralit/docs/admin_guide/record.md b/extralit/docs/admin_guide/record.md index 8a604607d..bbce22240 100644 --- a/extralit/docs/admin_guide/record.md +++ b/extralit/docs/admin_guide/record.md @@ -4,9 +4,9 @@ description: In this section, we will provide a step-by-step guide to show how t # Add, update, and delete records -This guide provides an overview of records, explaining the basics of how to define and manage them in Argilla. +This guide provides an overview of records, explaining the basics of how to define and manage them in Extralit. -A **record** in Argilla is a data item that requires annotation, consisting of one or more fields. These are the pieces of information displayed to the user in the UI to facilitate the completion of the annotation task. Each record also includes questions that annotators are required to answer, with the option of adding suggestions and responses to assist them. Guidelines are also provided to help annotators effectively complete their tasks. +A **record** in Extralit is a data item that requires annotation, consisting of one or more fields. These are the pieces of information displayed to the user in the UI to facilitate the completion of the annotation task. Each record also includes questions that annotators are required to answer, with the option of adding suggestions and responses to assist them. Guidelines are also provided to help annotators effectively complete their tasks. > A record is part of a dataset, so you will need to create a dataset before adding records. Check this guide to learn how to [create a dataset](dataset.md). @@ -33,11 +33,11 @@ A **record** in Argilla is a data item that requires annotation, consisting of o ], ) ``` - > Check the [Record - Python Reference](../reference/argilla/records/records.md) to see the attributes, arguments, and methods of the `Record` class in detail. + > Check the [Record - Python Reference](../reference/extralit/records/records.md) to see the attributes, arguments, and methods of the `Record` class in detail. ## Add records -You can add records to a dataset in two different ways: either by using a dictionary or by directly initializing a `Record` object. You should ensure that fields, metadata and vectors match those configured in the dataset settings. In both cases, are added via the `Dataset.records.log` method. As soon as you add the records, these will be available in the Argilla UI. If they do not appear in the UI, you may need to click the refresh button to update the view. +You can add records to a dataset in two different ways: either by using a dictionary or by directly initializing a `Record` object. You should ensure that fields, metadata and vectors match those configured in the dataset settings. In both cases, are added via the `Dataset.records.log` method. As soon as you add the records, these will be available in the Extralit UI. If they do not appear in the UI, you may need to click the refresh button to update the view. !!! tip Take some time to inspect the data before adding it to the dataset in case this triggers changes in the `questions` or `fields`. @@ -50,7 +50,7 @@ You can add records to a dataset in two different ways: either by using a dictio You can add records to a dataset by initializing a `Record` object directly. This is ideal if you need to apply logic to the data before defining the record. If the data is already structured, you should consider adding it directly as a dictionary or Hugging Face dataset. ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -80,12 +80,12 @@ You can add records to a dataset in two different ways: either by using a dictio You can add the data directly as a dictionary like structure, where the keys correspond to the names of fields, questions, metadata or vectors in the dataset and the values are the data to be added. - If your data structure does not correspond to your Argilla dataset names, you can use a `mapping` to indicate which keys in the source data correspond to the dataset fields, metadata, vectors, suggestions, or responses. If you need to add the same data to multiple attributes, you can also use a list with the name of the attributes. + If your data structure does not correspond to your Extralit dataset names, you can use a `mapping` to indicate which keys in the source data correspond to the dataset fields, metadata, vectors, suggestions, or responses. If you need to add the same data to multiple attributes, you can also use a list with the name of the attributes. We illustrate this python dictionaries that represent your data, but we would not advise you to define dictionaries. Instead, use the `Record` object to instantiate records. ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -118,17 +118,17 @@ You can add records to a dataset in two different ways: either by using a dictio dataset.records.log(data, mapping={"query": "question", "response": "answer"}) # (2) ``` - 1. The data structure's keys must match the fields or questions in the Argilla dataset. In this case, there are fields named `question` and `answer`. - 2. The data structure has keys `query` and `response`, and the Argilla dataset has fields `question` and `answer`. You can use the `mapping` parameter to map the keys in the data structure to the fields in the Argilla dataset. + 1. The data structure's keys must match the fields or questions in the Extralit dataset. In this case, there are fields named `question` and `answer`. + 2. The data structure has keys `query` and `response`, and the Extralit dataset has fields `question` and `answer`. You can use the `mapping` parameter to map the keys in the data structure to the fields in the Extralit dataset. === "From a Hugging Face dataset" - You can also add records to a dataset using a Hugging Face dataset. This is useful when you want to use a dataset from the Hugging Face Hub and add it to your Argilla dataset. + You can also add records to a dataset using a Hugging Face dataset. This is useful when you want to use a dataset from the Hugging Face Hub and add it to your Extralit dataset. - You can add the dataset where the column names correspond to the names of fields, metadata or vectors in the Argilla dataset. + You can add the dataset where the column names correspond to the names of fields, metadata or vectors in the Extralit dataset. ```python - import argilla as rg + import extralit as ex from datasets import load_dataset client = ex.Extralit(api_url="", api_key="") @@ -139,11 +139,11 @@ You can add records to a dataset in two different ways: either by using a dictio dataset.records.log(records=hf_dataset) ``` - 1. In this case, we are using the `my_dataset` dataset from the Argilla workspace. The dataset has a `text` field and a `label` question. + 1. In this case, we are using the `my_dataset` dataset from the Extralit workspace. The dataset has a `text` field and a `label` question. - 2. In this example, the Hugging Face dataset matches the Argilla dataset schema. If that is not the case, you could use the `.map` of the `datasets` library to prepare the data before adding it to the Argilla dataset. + 2. In this example, the Hugging Face dataset matches the Extralit dataset schema. If that is not the case, you could use the `.map` of the `datasets` library to prepare the data before adding it to the Extralit dataset. - If the Hugging Face dataset's schema does not correspond to your Argilla dataset field names, you can use a `mapping` to specify the relationship. You should indicate as key the column name of the Hugging Face dataset and, as value, the field name of the Argilla dataset. + If the Hugging Face dataset's schema does not correspond to your Extralit dataset field names, you can use a `mapping` to specify the relationship. You should indicate as key the column name of the Hugging Face dataset and, as value, the field name of the Extralit dataset. ```python dataset.records.log( @@ -151,7 +151,7 @@ You can add records to a dataset in two different ways: either by using a dictio ) # (1) ``` - 3. In this case, the `text` key in the Hugging Face dataset would correspond to the `review` field in the Argilla dataset, and the `label` key in the Hugging Face dataset would correspond to the `sentiment` field in the Argilla dataset. + 3. In this case, the `text` key in the Hugging Face dataset would correspond to the `review` field in the Extralit dataset, and the `label` key in the Hugging Face dataset would correspond to the `sentiment` field in the Extralit dataset. ### Fields @@ -169,7 +169,7 @@ Fields are the main pieces of information of the record. These are shown at firs === "Image" Image fields expect a remote URL or local path to an image file in the form of a `string`, or a PIL object. - > Check the [Dataset.records - Python Reference](../reference/argilla/datasets/dataset_records.md) to see how to add records with with images in detail. + > Check the [Dataset.records - Python Reference](../reference/extralit/datasets/dataset_records.md) to see how to add records with with images in detail. ```python records = [ @@ -192,8 +192,8 @@ Fields are the main pieces of information of the record. These are shown at firs record = ex.Record( fields={ "chat": [ - {"role": "user", "content": "What is Argilla?"}, - {"role": "assistant", "content": "Argilla is a collaboration tool for AI engineers and domain experts to build high-quality datasets"}, + {"role": "user", "content": "What is Extralit?"}, + {"role": "assistant", "content": "Extralit is a collaboration tool for AI engineers and domain experts to build high-quality datasets"}, ] } ) @@ -215,7 +215,7 @@ Record metadata can include any information about the record that is not part of !!! note Remember that to use metadata within a dataset, you must define a metadata property in the [dataset settings](dataset.md). -> Check the [Metadata - Python Reference](../reference/argilla/records/metadata.md) to see the attributes, arguments, and methods for using metadata in detail. +> Check the [Metadata - Python Reference](../reference/extralit/records/metadata.md) to see the attributes, arguments, and methods for using metadata in detail. === "As `Record` objects" @@ -270,7 +270,7 @@ You can associate vectors, like text embeddings, to your records. They can be us !!! note Remember that to use vectors within a dataset, you must define them in the [dataset settings](dataset.md). -> Check the [Vector - Python Reference](../reference/argilla/records/vectors.md) to see the attributes, arguments, and methods of the `Vector` class in detail. +> Check the [Vector - Python Reference](../reference/extralit/records/vectors.md) to see the attributes, arguments, and methods of the `Vector` class in detail. === "As `Record` objects" @@ -326,10 +326,10 @@ You can associate vectors, like text embeddings, to your records. They can be us Suggestions refer to suggested responses (e.g. model predictions) that you can add to your records to make the annotation process faster. These can be added during the creation of the record or at a later stage. Only one suggestion can be provided for each question, and suggestion values must be compliant with the pre-defined questions e.g. if we have a `RatingQuestion` between 1 and 5, the suggestion should have a valid value within that range. -> Check the [Suggestions - Python Reference](../reference/argilla/records/suggestions.md) to see the attributes, arguments, and methods of the `Suggestion` class in detail. +> Check the [Suggestions - Python Reference](../reference/extralit/records/suggestions.md) to see the attributes, arguments, and methods of the `Suggestion` class in detail. !!! tip - Check the [Suggestions - Python Reference](../reference/argilla/records/suggestions.md) for different formats per `Question` type. + Check the [Suggestions - Python Reference](../reference/extralit/records/suggestions.md) for different formats per `Question` type. === "As `Record` objects" You can also add suggestions to a record in an initialized `Record` object. @@ -403,14 +403,14 @@ Suggestions refer to suggested responses (e.g. model predictions) that you can a ### Responses -If your dataset includes some annotations, you can add those to the records as you create them. Make sure that the responses adhere to the same format as Argilla's output and meet the schema requirements for the specific type of question being answered. Make sure to include the `user_id` in case you're planning to add more than one response for the same question, if not responses will apply to all the annotators. +If your dataset includes some annotations, you can add those to the records as you create them. Make sure that the responses adhere to the same format as Extralit's output and meet the schema requirements for the specific type of question being answered. Make sure to include the `user_id` in case you're planning to add more than one response for the same question, if not responses will apply to all the annotators. -> Check the [Responses - Python Reference](../reference/argilla/records/responses.md) to see the attributes, arguments, and methods of the `Response` class in detail. +> Check the [Responses - Python Reference](../reference/extralit/records/responses.md) to see the attributes, arguments, and methods of the `Response` class in detail. !!! note Keep in mind that records with responses will be displayed as "Draft" in the UI. !!! tip - Check the [Responses - Python Reference](../reference/argilla/records/responses.md) for different formats per `Question` type. + Check the [Responses - Python Reference](../reference/extralit/records/responses.md) for different formats per `Question` type. === "As `Record` objects" You can also add suggestions to a record in an initialized `Record` object. @@ -505,7 +505,7 @@ dataset.records.log(records=updated_data) The `metadata` of the `Record` object is a python dictionary. To update it, you can iterate over the records and update the metadata by key. After that, you should update the records in the dataset. !!! tip - Check the [Metadata - Python Reference](../reference/argilla/records/metadata.md) for different formats per `MetadataProperty` type. + Check the [Metadata - Python Reference](../reference/extralit/records/metadata.md) for different formats per `MetadataProperty` type. ```python updated_records = [] @@ -540,7 +540,7 @@ dataset.records.log(records=updated_data) If some value for the existing record suggestions must be updated, you can iterate over the records and update the suggestions by key. You can also add a suggestion using the `add` method. After that, you should update the records in the dataset. !!! tip - Check the [Suggestions - Python Reference](../reference/argilla/records/suggestions.md) for different formats per `Question` type. + Check the [Suggestions - Python Reference](../reference/extralit/records/suggestions.md) for different formats per `Question` type. ```python updated_records = [] @@ -567,7 +567,7 @@ dataset.records.log(records=updated_data) If some value for the existing record responses must be updated, you can iterate over the records and update the responses by key. You can also add a response using the `add` method. After that, you should update the records in the dataset. !!! tip - Check the [Responses - Python Reference](../reference/argilla/records/responses.md) for different formats per `Question` type. + Check the [Responses - Python Reference](../reference/extralit/records/responses.md) for different formats per `Question` type. ```python updated_records = [] diff --git a/extralit/docs/admin_guide/upgrading.md b/extralit/docs/admin_guide/upgrading.md index 1bbc4014f..b720de12a 100644 --- a/extralit/docs/admin_guide/upgrading.md +++ b/extralit/docs/admin_guide/upgrading.md @@ -18,7 +18,7 @@ This guide covers the update process for Extralit across different deployment op git fetch origin tag v0.2.2 && git checkout tags/v0.2.2 ``` -2. Rebuild the package, which contains the Argilla server and web interface +2. Rebuild the package, which contains the Extralit server and web interface First, build the `extralit-frontend` code diff --git a/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md b/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md index b200b2615..9c9458f4a 100644 --- a/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md +++ b/extralit/docs/admin_guide/use_markdown_to_format_rich_content.md @@ -29,20 +29,20 @@ The `TextField` and `TextQuestion` provide the option to enable Markdown and the ```python chat_to_html([{"role": "user", "content": "hello"}]) ``` - > Check the [Markdown - Python Reference](../reference/argilla/markdown.md) to see the arguments of the `ex.markdown` methods in detail. + > Check the [Markdown - Python Reference](../reference/extralit/markdown.md) to see the arguments of the `ex.markdown` methods in detail. !!! tip You can get pretty creative with HTML. For example, think about visualizing graphs and tables. You can use some interesting Python packages methods like `pandas.DataFrame.to_html` and `plotly.io.to_html`. ## Multi-modal support: images, audio, video, PDFs and more -Argilla has basic multi-modal support in different ways, each with pros and cons, but they both offer the same UI experience because they both rely on HTML. +Extralit has basic multi-modal support in different ways, each with pros and cons, but they both offer the same UI experience because they both rely on HTML. ![media](../assets/images/how_to_guides/markdown/media.png) ### Local content through DataURLs -A DataURL is a scheme that allows data to be encoded into a base64-encoded string and then embedded directly into HTML. To facilitate this, we offer some functions: `image_to_html`, `audio_to_html`, `video_to_thml`, and `pdf_to_html`. These functions accept either the file path or the file's byte data and return the corresponding HTMurl to render the media file within the Argilla user interface. Additionally, you can also set the `width` and `height` in pixel or percentage for video and image (defaults to the original dimensions) and the autoplay and loop attributes to True for audio and video (defaults to False). +A DataURL is a scheme that allows data to be encoded into a base64-encoded string and then embedded directly into HTML. To facilitate this, we offer some functions: `image_to_html`, `audio_to_html`, `video_to_thml`, and `pdf_to_html`. These functions accept either the file path or the file's byte data and return the corresponding HTMurl to render the media file within the Extralit user interface. Additionally, you can also set the `width` and `height` in pixel or percentage for video and image (defaults to the original dimensions) and the autoplay and loop attributes to True for audio and video (defaults to False). !!! warning DataURLs increase the memory usage of the original filesize. Additionally, different browsers enforce different size limitations for rendering DataURLs which might block the visualization experience per user. @@ -120,7 +120,7 @@ A DataURL is a scheme that allows data to be encoded into a base64-encoded strin Instead of uploading local files through DataURLs, we can also visualize URLs directly linking to media files such as images, audio, video, and PDFs hosted on a public or private server. In this case, you can use basic HTML to visualize content available on platforms like Google Drive or decide to configure a private media server. !!! warning - When trying to access content from a private media server you have to ensure that the Argilla server has network access to the private media server, which might be done through something like IP whitelisting. + When trying to access content from a private media server you have to ensure that the Extralit server has network access to the private media server, which might be done through something like IP whitelisting. === "Image" diff --git a/extralit/docs/admin_guide/user.md b/extralit/docs/admin_guide/user.md index a8f464e84..fa4357ca2 100644 --- a/extralit/docs/admin_guide/user.md +++ b/extralit/docs/admin_guide/user.md @@ -4,9 +4,9 @@ description: In this section, we will provide a step-by-step guide to show how t # User management -This guide provides an overview of user roles and credentials, explaining how to set up and manage users in Argilla. +This guide provides an overview of user roles and credentials, explaining how to set up and manage users in Extralit. -A **user** in Argilla is an authorized person who, depending on their role, can use the Python SDK and access the UI in a running Argilla instance. We differentiate between three types of users depending on their role, permissions and needs: `owner`, `admin` and `annotator`. +A **user** in Extralit is an authorized person who, depending on their role, can use the Python SDK and access the UI in a running Extralit instance. We differentiate between three types of users depending on their role, permissions and needs: `owner`, `admin` and `annotator`. === "Overview" | | Owner | Admin | Annotator | @@ -21,28 +21,28 @@ A **user** in Argilla is an authorized person who, depending on their role, can === "Owner" - The `owner` refers to the root user who created the Argilla instance. Using workspaces within Argilla proves highly beneficial for organizing tasks efficiently. So, the owner has full access to all workspaces and their functionalities: + The `owner` refers to the root user who created the Extralit instance. Using workspaces within Extralit proves highly beneficial for organizing tasks efficiently. So, the owner has full access to all workspaces and their functionalities: - **Workspace management**: It can create, read and delete a workspace. - **User management**: It can create a new user, assign it to a workspace, and delete it. It can also list them and search for a specific one. - **Dataset management**: It can create, configure, retrieve, update, and delete datasets. - - **Annotation**: It can annotate datasets in the Argilla UI. - - **Feedback**: It can provide feedback with the Argilla UI. + - **Annotation**: It can annotate datasets in the Extralit UI. + - **Feedback**: It can provide feedback with the Extralit UI. === "Admin" An `admin` user can only access the workspaces it has been assigned to and cannot assign other users to it. An admin user has the following permissions: - **Dataset management**: It can create, configure, retrieve, update, and delete datasets only on the assigned workspaces. - - **Annotation**: It can annotate datasets in the assigned workspaces via the Argilla UI. - - **Feedback**: It can provide feedback with the Argilla UI. + - **Annotation**: It can annotate datasets in the assigned workspaces via the Extralit UI. + - **Feedback**: It can provide feedback with the Extralit UI. === "Annotator" An `annotator` user is limited to accessing only the datasets assigned to it within the workspace. It has two specific permissions: - - **Annotation**: It can annotate the assigned datasets in the Argilla UI. - - **Feedback**: It can provide feedback with the Argilla UI. + - **Annotation**: It can annotate the assigned datasets in the Extralit UI. + - **Feedback**: It can provide feedback with the Extralit UI. ??? Question "Question: Who can manage users?" @@ -50,7 +50,7 @@ A **user** in Argilla is an authorized person who, depending on their role, can ## Initial users and credentials -Depending on [your Argilla deployment](../getting_started/quickstart.md), the initial user with the `owner` role will vary. +Depending on [your Extralit deployment](../getting_started/quickstart.md), the initial user with the `owner` role will vary. * If you deploy on the Hugging Face Hub, the initial user will correspond to the Space owner (your personal account). The API key is automatically generated and can be copied from the "Settings" section of the UI. * If you deploy with Docker, the default values for the environment variables are: USERNAME: argilla, PASSWORD: 12345678, API_KEY: extralit.apikey. @@ -69,14 +69,14 @@ For the new users, the username and password are set during the creation process client=client ) ``` - > Check the [User - Python Reference](../reference/argilla/users.md) to see the attributes, arguments, and methods of the `User` class in detail. + > Check the [User - Python Reference](../reference/extralit/users.md) to see the attributes, arguments, and methods of the `User` class in detail. ## Get current user -To ensure you're using the correct credentials for managing users, you can get the current user in Argilla using the `me` attribute of the `Argilla` class. +To ensure you're using the correct credentials for managing users, you can get the current user in Extralit using the `me` attribute of the `Extralit` class. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -85,10 +85,10 @@ current_user = client.me ## Create a user -To create a new user in Argilla, you can define it in the `User` class and then call the `create` method. This method is inherited from the `Resource` base class and operates without modifications. +To create a new user in Extralit, you can define it in the `User` class and then call the `create` method. This method is inherited from the `Resource` base class and operates without modifications. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -104,10 +104,10 @@ created_user = user_to_create.create() ## List users -You can list all the existing users in Argilla by accessing the `users` attribute on the `Argilla` class and iterating over them. You can also use `len(client.users)` to get the number of users. +You can list all the existing users in Extralit by accessing the `users` attribute on the `Extralit` class and iterating over them. You can also use `len(client.users)` to get the number of users. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -121,12 +121,12 @@ for user in users: ## Retrieve a user -You can retrieve an existing user from Argilla by accessing the `users` attribute on the `Argilla` class and passing the `username` or `id` as an argument. If the user does not exist, a warning message will be raised and `None` will be returned. +You can retrieve an existing user from Extralit by accessing the `users` attribute on the `Extralit` class and passing the `username` or `id` as an argument. If the user does not exist, a warning message will be raised and `None` will be returned. === "By username" ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -136,7 +136,7 @@ You can retrieve an existing user from Argilla by accessing the `users` attribut === "By id" ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -148,7 +148,7 @@ You can retrieve an existing user from Argilla by accessing the `users` attribut You can check if a user exists. The `client.users` method will return `None` if the user was not found. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -165,7 +165,7 @@ You can list all the users in a workspace by accessing the `users` attribute on > For further information on how to manage workspaces, check this [how-to guide](workspace.md). ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -177,12 +177,12 @@ for user in workspace.users: ## Add a user to a workspace -You can add an existing user to a workspace in Argilla by calling the `add_to_workspace` method on the `User` class. +You can add an existing user to a workspace in Extralit by calling the `add_to_workspace` method on the `User` class. > For further information on how to manage workspaces, check this [how-to guide](workspace.md). ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -194,12 +194,12 @@ added_user = user.add_to_workspace(workspace) ## Remove a user from a workspace -You can remove an existing user from a workspace in Argilla by calling the `remove_from_workspace` method on the `User` class. +You can remove an existing user from a workspace in Extralit by calling the `remove_from_workspace` method on the `User` class. > For further information on how to manage workspaces, check this [how-to guide](workspace.md). ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -211,10 +211,10 @@ removed_user = user.remove_from_workspace(workspace) ## Update a user -You can update an existing user in Argilla by calling the `update` method on the `User` class. You can update the `username`, `first_name`, `last_name`, and `role` attributes. +You can update an existing user in Extralit by calling the `update` method on the `User` class. You can update the `username`, `first_name`, `last_name`, and `role` attributes. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -230,10 +230,10 @@ updated_user = user_to_update.update() ## Delete a user -You can delete an existing user from Argilla by calling the `delete` method on the `User` class. +You can delete an existing user from Extralit by calling the `delete` method on the `User` class. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") diff --git a/extralit/docs/admin_guide/webhooks.md b/extralit/docs/admin_guide/webhooks.md index 5164e3ed0..9090b7167 100644 --- a/extralit/docs/admin_guide/webhooks.md +++ b/extralit/docs/admin_guide/webhooks.md @@ -1,19 +1,19 @@ --- -description: In this section, we will provide a step-by-step guide to create a webhook in Argilla. +description: In this section, we will provide a step-by-step guide to create a webhook in Extralit. --- -# Use Argilla webhooks +# Use Extralit webhooks -This guide provides an overview of how to create and use webhooks in Argilla. +This guide provides an overview of how to create and use webhooks in Extralit. A **webhook** allows an application to submit real-time information to other applications whenever a specific event occurs. Unlike traditional APIs, you won’t need to poll for data very frequently in order to get it in real time. This makes webhooks much more efficient for both the provider and the consumer. -## Creating a webhook listener in Argilla +## Creating a webhook listener in Extralit -The python SDK provides a simple way to create a webhook in Argilla. It allows you to focus on the use case of the webhook and not on the implementation details. You only need to create your event handler function with the `webhook_listener` decorator. +The python SDK provides a simple way to create a webhook in Extralit. It allows you to focus on the use case of the webhook and not on the implementation details. You only need to create your event handler function with the `webhook_listener` decorator. ```python -import argilla as rg +import extralit as ex from datetime import datetime from extralit import webhook_listener @@ -26,7 +26,7 @@ async def my_webhook_handler(dataset: ex.Dataset, type: str, timestamp: datetime In the example above, we have created a webhook that listens to the `dataset.created` event. > You can find the list of events in the [Events](#events) section. -The python SDK will automatically create a webhook in Argilla and listen to the specified event. When the event is triggered, +The python SDK will automatically create a webhook in Extralit and listen to the specified event. When the event is triggered, the `my_webhook_handler` function will be called with the event data. The SDK will also parse the incoming webhook event into a proper resource object (`ex.Dataset`, `ex.Record`, and `ex.Response`). The SDK will also take care of request authentication and error handling. @@ -62,14 +62,14 @@ All incoming webhook events will be sent to the specified server URL. ## Webhooks management -The Python SDK provides a simple way to manage webhooks in Argilla. You can create, list, update, and delete webhooks using the SDK. +The Python SDK provides a simple way to manage webhooks in Extralit. You can create, list, update, and delete webhooks using the SDK. ### Create a webhook -To create a new webhook in Argilla, you can define it in the `Webhook` class and then call the `create` method. +To create a new webhook in Extralit, you can define it in the `Webhook` class and then call the `create` method. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -85,10 +85,10 @@ webhook.create() ### List webhooks -You can list all the existing webhooks in Argilla by accessing the `webhooks` attribute on the Argilla class and iterating over them. +You can list all the existing webhooks in Extralit by accessing the `webhooks` attribute on the Extralit class and iterating over them. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -102,7 +102,7 @@ for webhook in client.webhooks: You can update a webhook using the `update` method. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -123,7 +123,7 @@ webhook.update() You can delete a webhook using the `delete` method. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -139,7 +139,7 @@ You can deploy your webhook in a Hugging Face Space. You can visit this [link](h ## Events -The following is a list of events that you can listen to in Argilla, grouped by resource type. +The following is a list of events that you can listen to in Extralit, grouped by resource type. ### Dataset events diff --git a/extralit/docs/admin_guide/webhooks_internals.md b/extralit/docs/admin_guide/webhooks_internals.md index 953053210..279bd06c1 100644 --- a/extralit/docs/admin_guide/webhooks_internals.md +++ b/extralit/docs/admin_guide/webhooks_internals.md @@ -1,12 +1,12 @@ # Webhooks internal -Argilla Webhooks implements [Standard Webhooks](https://www.standardwebhooks.com) to facilitate the integration of Argilla with listeners written in any language and ensure consistency and security. If you need to do a custom integration with Argilla webhooks take a look to the [specs](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md) to have a better understanding of how to implement such integration. +Extralit Webhooks implements [Standard Webhooks](https://www.standardwebhooks.com) to facilitate the integration of Extralit with listeners written in any language and ensure consistency and security. If you need to do a custom integration with Extralit webhooks take a look to the [specs](https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md) to have a better understanding of how to implement such integration. ## Events payload The payload is the core part of every webhook. It is the actual data being sent as part of the webhook, and usually consists of important information about the event and related information. -The payloads sent by Argilla webhooks will be a POST request with a JSON body with the following structure: +The payloads sent by Extralit webhooks will be a POST request with a JSON body with the following structure: ```json { @@ -19,7 +19,7 @@ The payloads sent by Argilla webhooks will be a POST request with a JSON body wi } ``` -Your listener must return any `2XX` status code value to indicate to Argilla that the webhook message has been successfully received. If a different status code is returned Argilla will retry up to 3 times. You have up to 20 seconds to give a response to an Argilla webhook request. +Your listener must return any `2XX` status code value to indicate to Extralit that the webhook message has been successfully received. If a different status code is returned Extralit will retry up to 3 times. You have up to 20 seconds to give a response to an Extralit webhook request. The payload attributes are: @@ -41,7 +41,7 @@ The payload attributes are: ## Events payload examples -In this section we will show payload examples for all the events emitted by Argilla webhooks. +In this section we will show payload examples for all the events emitted by Extralit webhooks. ### Dataset events @@ -1839,7 +1839,7 @@ In this section we will show payload examples for all the events emitted by Argi ## How to implement a listener -Argilla webhooks implements [Standard Webhooks](https://www.standardwebhooks.com) so you can use one of their libraries to implement the verification of webhooks events coming from Argilla, available in many different languages. +Extralit webhooks implements [Standard Webhooks](https://www.standardwebhooks.com) so you can use one of their libraries to implement the verification of webhooks events coming from Extralit, available in many different languages. The following example is a simple listener written in Ruby, using [sinatra](https://sinatrarb.com) and [standardwebhooks Ruby library](https://github.com/standard-webhooks/standard-webhooks/tree/main/libraries/ruby): diff --git a/extralit/docs/admin_guide/workspace.md b/extralit/docs/admin_guide/workspace.md index 9a0daef40..7d7736296 100644 --- a/extralit/docs/admin_guide/workspace.md +++ b/extralit/docs/admin_guide/workspace.md @@ -4,9 +4,9 @@ description: In this section, we will provide a step-by-step guide to show how t # Workspace management -This guide provides an overview of workspaces, explaining how to set up and manage workspaces in Argilla. +This guide provides an overview of workspaces, explaining how to set up and manage workspaces in Extralit. -A **workspace** is a *space* inside your Argilla instance where authorized users can collaborate on datasets. It is accessible through the Python SDK and the UI. +A **workspace** is a *space* inside your Extralit instance where authorized users can collaborate on datasets. It is accessible through the Python SDK and the UI. ??? Question "Question: Who can manage workspaces?" @@ -16,7 +16,7 @@ A **workspace** is a *space* inside your Argilla instance where authorized users ## Initial workspaces -Depending on [your Argilla deployment](../getting_started/quickstart.md), the initial workspace will vary. +Depending on [your Extralit deployment](../getting_started/quickstart.md), the initial workspace will vary. * If you deploy on the Hugging Face Hub, the initial workspace will be the one indicated in the `.oauth.yaml` file. By default, `argilla`. * If you deploy with Docker, you will need to create a workspace as shown [in the next section](#create-a-new-workspace). @@ -29,16 +29,16 @@ Depending on [your Argilla deployment](../getting_started/quickstart.md), the in client=client ) ``` - > Check the [Workspace - Python Reference](../reference/argilla/workspaces.md) to see the attributes, arguments, and methods of the `Workspace` class in detail. + > Check the [Workspace - Python Reference](../reference/extralit/workspaces.md) to see the attributes, arguments, and methods of the `Workspace` class in detail. ## Create a new workspace -To create a new workspace in Argilla, you can define it in the `Workspace` class and then call the `create` method. This method is inherited from the `Resource` base class and operates without modifications. +To create a new workspace in Extralit, you can define it in the `Workspace` class and then call the `create` method. This method is inherited from the `Resource` base class and operates without modifications. > When you create a new workspace, it will be empty. To create and add a new dataset, check these [guides](dataset.md). ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -51,10 +51,10 @@ created_workspace = workspace_to_create.create() ## List workspaces -You can list all the existing workspaces in Argilla by calling the `workspaces` attribute on the `Argilla` class and iterating over them. You can also use `len(client.workspaces)` to get the number of workspaces. +You can list all the existing workspaces in Extralit by calling the `workspaces` attribute on the `Extralit` class and iterating over them. You can also use `len(client.workspaces)` to get the number of workspaces. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -68,12 +68,12 @@ for workspace in workspaces: ## Retrieve a workspace -You can retrieve a workspace by accessing the `workspaces` method on the `Argilla` class and passing the `name` or `id` of the workspace as an argument. If the workspace does not exist, a warning message will be raised and `None` will be returned. +You can retrieve a workspace by accessing the `workspaces` method on the `Extralit` class and passing the `name` or `id` of the workspace as an argument. If the workspace does not exist, a warning message will be raised and `None` will be returned. === "By name" ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -83,7 +83,7 @@ You can retrieve a workspace by accessing the `workspaces` method on the `Argill === "By id" ```python - import argilla as rg + import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -95,7 +95,7 @@ You can retrieve a workspace by accessing the `workspaces` method on the `Argill You can check if a workspace exists. The `client.workspaces` method will return `None` if the workspace is not found. ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -112,7 +112,7 @@ You can list all the users in a workspace by accessing the `users` attribute on > For further information on how to manage users, check this [how-to guide](user.md). ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -129,7 +129,7 @@ You can also add a user to a workspace by calling the `add_user` method on the ` > For further information on how to manage users, check this [how-to guide](user.md). ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -145,7 +145,7 @@ You can also remove a user from a workspace by calling the `remove_user` method > For further information on how to manage users, check this [how-to guide](user.md). ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") @@ -161,7 +161,7 @@ To delete a workspace, **no dataset can be associated with it**. If the workspac > To clear a workspace and delete all their datasets, refer to this [how-to guide](dataset.md). ```python -import argilla as rg +import extralit as ex client = ex.Extralit(api_url="", api_key="") diff --git a/extralit/docs/community/adding_language.md b/extralit/docs/community/adding_language.md index 16f1aa48e..8f5044f24 100644 --- a/extralit/docs/community/adding_language.md +++ b/extralit/docs/community/adding_language.md @@ -1,6 +1,6 @@ -# Adding a new language to Argilla +# Adding a new language to Extralit -If you want to add a new language to Argilla you need to go to two places: +If you want to add a new language to Extralit you need to go to two places: 1. Add a new translation specification in the folder: `extralit-frontend/translation` E.g. for Korean with Code `ko` add a `ko.js` file by coping the `en.js` file. The text values need to be translated: ```javascript @@ -31,7 +31,7 @@ export default { ### How to test it -1. Start a local instance of Argilla, easiest by just using the docker recipe [here](../getting_started/how-to-deploy-argilla-with-docker.md). It will give you a backend API for the frontend. +1. Start a local instance of Extralit, easiest by just using the docker recipe [here](../getting_started/how-to-deploy-argilla-with-docker.md). It will give you a backend API for the frontend. 2. Compile a new version of the frontend. Check [this guide](https://github.com/extralit/extralit/tree/develop/extralit-frontend). This is basically: - `git clone https://github.com/extralit/extralit` - `cd extralit-frontend` @@ -41,7 +41,7 @@ export default { - Check the translations. 3. Deploy a small test dataset to test the translation on a dataset too: ```python -import argilla as rg +import extralit as ex client_local = ex.Extralit(api_url="http://localhost:6900/", api_key="extralit.apikey") @@ -151,8 +151,8 @@ def fix_record(): return ex.Record( fields={ "chat": [ - {"role": "user", "content": "What is Argilla?"}, - {"role": "assistant", "content": "Argilla is a collaboration tool for AI engineers and domain experts to build high-quality datasets"}, + {"role": "user", "content": "What is Extralit?"}, + {"role": "assistant", "content": "Extralit is a collaboration tool for AI engineers and domain experts to build high-quality datasets"}, ], "image": "https://images.unsplash.com/photo-1523567353-71ea31cb9f73?w=900&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTJ8fGNvcmdpfGVufDB8fDB8fHww", "text": "Which town has a greater population as of the 2010 census, Minden, Nevada or Gardnerville, Nevada?", diff --git a/extralit/docs/community/contributor.md b/extralit/docs/community/contributor.md index e8fdf12b2..99625e0dd 100644 --- a/extralit/docs/community/contributor.md +++ b/extralit/docs/community/contributor.md @@ -66,7 +66,7 @@ git clone https://github.com/[your-github-username]/extralit.git cd extralit ``` -To keep view changes between Extralit and Argilla, add Argilla as remote upstreams: +To keep view changes between Extralit and Extralit, add Extralit as remote upstreams: ```sh git remote add upstream https://github.com/argilla-io/argilla.git diff --git a/extralit/docs/community/developer.md b/extralit/docs/community/developer.md index 5fc396ad8..68fff6b92 100644 --- a/extralit/docs/community/developer.md +++ b/extralit/docs/community/developer.md @@ -54,11 +54,11 @@ The Extralit repository has a monorepo structure, which means that all the compo !!! note "How to contribute?" Before starting to develop, we recommend reading our [contribution guide](contributor.md) to understand the contribution process and the guidelines to follow. Once you have [cloned the Extralit repository](contributor.md#fork-the-extralit-repository) and [checked out to the correct branch](contributor.md#create-a-new-branch), you can start setting up your development environment. -??? example "Argilla Directory Structure" - ![Argilla Repository Structure](../assets/images/community/developer/repo-visualizer-argilla.svg) +??? example "Extralit Directory Structure" + ![Extralit Repository Structure](../assets/images/community/developer/repo-visualizer-argilla.svg) -??? example "Argilla Server Directory Structure" - ![Argilla Server Repository Structure](../assets/images/community/developer/repo-visualizer-extralit-server.svg) +??? example "Extralit Server Directory Structure" + ![Extralit Server Repository Structure](../assets/images/community/developer/repo-visualizer-extralit-server.svg) ## Development workflow diff --git a/extralit/docs/community/index.md b/extralit/docs/community/index.md index dceea9d7f..7065abf70 100644 --- a/extralit/docs/community/index.md +++ b/extralit/docs/community/index.md @@ -49,7 +49,7 @@ We are an open-source community-driven project focused on building a platform th The changelog is where you can find the latest updates and changes to the Extralit project. - [:octicons-arrow-right-24: Changelog ↗](https://github.com/extralit/extralit/blob/develop/argilla/CHANGELOG.md) + [:octicons-arrow-right-24: Changelog ↗](https://github.com/extralit/extralit/blob/develop/extralit/CHANGELOG.md) - __Roadmap__ diff --git a/extralit/docs/community/integrations/llamaindex_rag_github.ipynb b/extralit/docs/community/integrations/llamaindex_rag_github.ipynb index 37102dae0..ac355d1cb 100644 --- a/extralit/docs/community/integrations/llamaindex_rag_github.ipynb +++ b/extralit/docs/community/integrations/llamaindex_rag_github.ipynb @@ -4,16 +4,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# 🕵🏻‍♀️ Create a RAG system expert in a GitHub repository and log your predictions in Argilla\n", + "# 🕵🏻‍♀️ Create a RAG system expert in a GitHub repository and log your predictions in Extralit\n", "\n", - "In this tutorial, we'll show you how to create a RAG system that can answer questions about a specific GitHub repository. As example, we will target the [Argilla repository](https://github.com/argilla-io/argilla). This RAG system will target the docs of the repository, as that's where most of the natural language information about the repository can be found.\n", + "In this tutorial, we'll show you how to create a RAG system that can answer questions about a specific GitHub repository. As example, we will target the [Extralit repository](https://github.com/argilla-io/argilla). This RAG system will target the docs of the repository, as that's where most of the natural language information about the repository can be found.\n", "\n", "This tutorial includes the following steps:\n", "\n", - "- Setting up the Argilla callback handler for LlamaIndex.\n", + "- Setting up the Extralit callback handler for LlamaIndex.\n", "- Initializing a GitHub client\n", "- Creating an index with a specific set of files from the GitHub repository of our choice.\n", - "- Create a RAG system out of the Argilla repository, ask questions, and automatically log the answers to Argilla.\n", + "- Create a RAG system out of the Extralit repository, ask questions, and automatically log the answers to Extralit.\n", "\n", "This tutorial is based on the [Github Repository Reader](https://docs.llamaindex.ai/en/stable/examples/data_connectors/GithubRepositoryReaderDemo/) made by LlamaIndex." ] @@ -24,9 +24,9 @@ "source": [ "## Getting started\n", "\n", - "### Deploy the Argilla server¶\n", + "### Deploy the Extralit server¶\n", "\n", - "If you already have deployed Argilla, you can skip this step. Otherwise, you can quickly deploy Argilla following [this guide](https://docs.argilla.io/latest/getting_started/quickstart/)." + "If you already have deployed Extralit, you can skip this step. Otherwise, you can quickly deploy Extralit following [this guide](https://docs.argilla.io/latest/getting_started/quickstart/)." ] }, { @@ -75,7 +75,7 @@ " GithubRepositoryReader,\n", ")\n", "\n", - "from argilla_llama_index import ArgillaHandler" + "from argilla_llama_index import ExtralitHandler" ] }, { @@ -104,13 +104,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Set the Argilla's LlamaIndex handler\n", + "## Set the Extralit's LlamaIndex handler\n", "\n", - "To easily log your data into Argilla within your LlamaIndex workflow, you only need to initialize the Argilla handler and attach it to the Llama Index dispatcher for spans and events. This ensures that the predictions obtained using Llama Index are automatically logged to the Argilla instance, along with the useful metadata.\n", + "To easily log your data into Extralit within your LlamaIndex workflow, you only need to initialize the Extralit handler and attach it to the Llama Index dispatcher for spans and events. This ensures that the predictions obtained using Llama Index are automatically logged to the Extralit instance, along with the useful metadata.\n", "\n", "- `dataset_name`: The name of the dataset. If the dataset does not exist, it will be created with the specified name. Otherwise, it will be updated.\n", - "- `api_url`: The URL to connect to the Argilla instance.\n", - "- `api_key`: The API key to authenticate with the Argilla instance.\n", + "- `api_url`: The URL to connect to the Extralit instance.\n", + "- `api_key`: The API key to authenticate with the Extralit instance.\n", "- `number_of_retrievals`: The number of retrieved documents to be logged. Defaults to 0.\n", "- `workspace_name`: The name of the workspace to log the data. By default, the first available workspace.\n", "\n", @@ -123,7 +123,7 @@ "metadata": {}, "outputs": [], "source": [ - "argilla_handler = ArgillaHandler(\n", + "argilla_handler = ExtralitHandler(\n", " dataset_name=\"github_query_llama_index\",\n", " api_url=\"http://localhost:6900\",\n", " api_key=\"extralit.apikey\",\n", @@ -248,7 +248,7 @@ "metadata": {}, "outputs": [], "source": [ - "response = query_engine.query(\"How do I create a Dataset in Argilla?\")\n", + "response = query_engine.query(\"How do I create a Dataset in Extralit?\")\n", "response" ] }, @@ -256,16 +256,16 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "The generated response will be automatically logged in our Argilla instance. Check it out! From Argilla you can quickly have a look at your predictions and annotate them, so you can combine both synthetic data and human feedback.\n", + "The generated response will be automatically logged in our Extralit instance. Check it out! From Extralit you can quickly have a look at your predictions and annotate them, so you can combine both synthetic data and human feedback.\n", "\n", - "![Argilla UI](../../assets/images/community/integrations/llamaindex_rag_1.png)\n" + "![Extralit UI](../../assets/images/community/integrations/llamaindex_rag_1.png)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's ask a couple of more questions to see the overall behavior of the RAG chatbot. Remember that the answers are automatically logged into your Argilla instance." + "Let's ask a couple of more questions to see the overall behavior of the RAG chatbot. Remember that the answers are automatically logged into your Extralit instance." ] }, { @@ -281,13 +281,13 @@ "Answer: You can list all the datasets available in a workspace by utilizing the `datasets` attribute of the `Workspace` class. Additionally, you can determine the number of datasets in a workspace by using `len(workspace.datasets)`. To list the datasets, you can iterate over them and print out each dataset. Remember that dataset settings are not preloaded when listing datasets, and if you need to work with settings, you must load them explicitly for each dataset.\n", "----------------------------\n", "Question: Which are the user credentials?\n", - "Answer: The user credentials in Argilla consist of a username, password, and API key.\n", + "Answer: The user credentials in Extralit consist of a username, password, and API key.\n", "----------------------------\n", - "Question: Can I use markdown in Argilla?\n", - "Answer: Yes, you can use Markdown in Argilla.\n", + "Question: Can I use markdown in Extralit?\n", + "Answer: Yes, you can use Markdown in Extralit.\n", "----------------------------\n", - "Question: Could you explain how to annotate datasets in Argilla?\n", - "Answer: To annotate datasets in Argilla, users can manage their data annotation projects by setting up `Users`, `Workspaces`, `Datasets`, and `Records`. By deploying Argilla on the Hugging Face Hub or with `Docker`, installing the Python SDK with `pip`, and creating the first project, users can get started in just 5 minutes. The tool allows for interacting with data in a more engaging way through features like quick labeling with filters, AI feedback suggestions, and semantic search, enabling users to focus on training models and monitoring their performance effectively.\n", + "Question: Could you explain how to annotate datasets in Extralit?\n", + "Answer: To annotate datasets in Extralit, users can manage their data annotation projects by setting up `Users`, `Workspaces`, `Datasets`, and `Records`. By deploying Extralit on the Hugging Face Hub or with `Docker`, installing the Python SDK with `pip`, and creating the first project, users can get started in just 5 minutes. The tool allows for interacting with data in a more engaging way through features like quick labeling with filters, AI feedback suggestions, and semantic search, enabling users to focus on training models and monitoring their performance effectively.\n", "----------------------------\n" ] }, @@ -303,8 +303,8 @@ "questions = [\n", " \"How can I list the available datasets?\",\n", " \"Which are the user credentials?\",\n", - " \"Can I use markdown in Argilla?\",\n", - " \"Could you explain how to annotate datasets in Argilla?\",\n", + " \"Can I use markdown in Extralit?\",\n", + " \"Could you explain how to annotate datasets in Extralit?\",\n", "]\n", "\n", "answers = []\n", diff --git a/extralit/docs/community/release_guide.md b/extralit/docs/community/release_guide.md index 979ce1271..d66560df5 100644 --- a/extralit/docs/community/release_guide.md +++ b/extralit/docs/community/release_guide.md @@ -9,7 +9,7 @@ hide: This guide provides a simplified, step-by-step process for creating a new release of Extralit. Follow these steps to ensure a smooth and consistent release process. **Tips:** -- Always update the version in `src/argilla/_version.py` before tagging. +- Always update the version in `src/extralit/_version.py` before tagging. - Use clear, descriptive release notes. - Coordinate with other maintainers if needed. diff --git a/extralit/docs/getting_started/development_setup.md b/extralit/docs/getting_started/development_setup.md index 3ed4965f7..a4717c140 100644 --- a/extralit/docs/getting_started/development_setup.md +++ b/extralit/docs/getting_started/development_setup.md @@ -277,7 +277,7 @@ For a simpler setup using Docker without live development capabilities: ### 0. Building the `extralit-server` and `argilla-hf-spaces` docker images -To build and run the Argilla Server using Docker, follow these steps: +To build and run the Extralit Server using Docker, follow these steps: ```bash cd extralit-server @@ -288,13 +288,13 @@ pdm build && cp -r dist/ docker/server/ docker build -t extralit-server:latest -f docker/server/Dockerfile docker/server/ ``` -To build the Argilla HF Spaces Docker image, which includes the Argilla Server, ElasticSearch, and Redis, use the following command: +To build the Extralit HF Spaces Docker image, which includes the Extralit Server, ElasticSearch, and Redis, use the following command: ```bash docker build --build-arg extralit_server_IMAGE=extralit-server --build-arg EXTRALIT_VERSION=latest -t argilla-hf-spaces:latest -f docker/argilla-hf-spaces/Dockerfile docker/argilla-hf-spaces/ ``` -Start the Argilla Server and other dependencies using Docker: +Start the Extralit Server and other dependencies using Docker: ```bash docker run --rm -p 6900:6900 -e EXTRALIT_ENABLE_TELEMETRY=0 -e USERNAME=argilla -e PASSWORD=12345678 -e API_KEY=extralit.apikey --name argilla-hf-spaces argilla-hf-spaces:latest diff --git a/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md b/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md index e8e21e1ee..7cc4df0d8 100644 --- a/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md +++ b/extralit/docs/getting_started/how-to-configure-argilla-on-huggingface.md @@ -13,21 +13,21 @@ This section details how to configure and deploy Extralit on Hugging Face Spaces - How to configure and enable HF OAuth access - How to use Private Spaces -!!! tip "Looking to get started easily or deploy Argilla with the Python SDK?" - If you just discovered Argilla and want to get started quickly, go to the [Quickstart guide](quickstart.md). +!!! tip "Looking to get started easily or deploy Extralit with the Python SDK?" + If you just discovered Extralit and want to get started quickly, go to the [Quickstart guide](quickstart.md). ## Persistent storage In the Space creation UI, persistent storage is set to `Small PAID`, which is a paid service, charged per hour of usage. -**Spaces get restarted due to maintainance, inactivity, and every time you change your Spaces settings**. Persistent storage enables Argilla to save to disk your datasets and configurations across restarts. +**Spaces get restarted due to maintainance, inactivity, and every time you change your Spaces settings**. Persistent storage enables Extralit to save to disk your datasets and configurations across restarts. !!! warning "Ephimeral FREE persistent storage" Not setting persistent storage to `Small` means that **you will loose your data when the Space restarts**. - If you plan to **use the Argilla Space beyond testing**, it's highly recommended to **set persistent storage to `Small`**. + If you plan to **use the Extralit Space beyond testing**, it's highly recommended to **set persistent storage to `Small`**. -If you just want to quickly test or use Argilla for a few hours with the risk of loosing your datasets, choose `Ephemeral FREE`. `Ephemeral FREE` means your datasets and configuration will not be saved to disk, when the Space is restarted your datasets, workspaces, and users will be lost. +If you just want to quickly test or use Extralit for a few hours with the risk of loosing your datasets, choose `Ephemeral FREE`. `Ephemeral FREE` means your datasets and configuration will not be saved to disk, when the Space is restarted your datasets, workspaces, and users will be lost. If you want to disable the persistence storage warning, you can set the environment variable `EXTRALIT_SHOW_HUGGINGFACE_SPACE_PERSISTENT_STORAGE_WARNING=false` @@ -37,19 +37,19 @@ If you want to disable the persistence storage warning, you can set the environm - First, **make a local or remote copy of your datasets**, following the [Import and Export guide](../admin_guide/import_export.md). This is the most important step, because changing the settings of your Space leads to a restart and thus a data loss. - If you have created users (not signed in with Hugging Face login), **consider storing a copy of users** following the [manage users guide](../admin_guide/user.md). - **Once you have stored all your data safely, go to you Space Settings Tab** and select `Small`. - - **Your Space will be restarted and existing data will be lost**. From now on, all the new data you create in Argilla will be kept safely + - **Your Space will be restarted and existing data will be lost**. From now on, all the new data you create in Extralit will be kept safely - **Recover your data**, by following the above mentioned guides. ## How to configure and disable OAuth access -By default, Argilla Spaces are configured with Hugging Face OAuth, in the following way: +By default, Extralit Spaces are configured with Hugging Face OAuth, in the following way: - Any Hugging Face user that can see your Space, can use the Sign in button, join as an `annotator`, and contribute to the datasets available under the `argilla` workspace. This workspace is created during the deployment process. - These users can only explore and annotate datasets in the `argilla` workspace but can't perform any critical operation like create, delete, update, or configure datasets. By default, any other workspace you create, won't be visible to these users. To restrict access or change the default behaviour, there's two options: -**Set your Space to private**. This is especially useful if your Space is under an organization. This will **only allow members within your organization to see and join your Argilla space**. It can also be used for personal, solo projects. +**Set your Space to private**. This is especially useful if your Space is under an organization. This will **only allow members within your organization to see and join your Extralit space**. It can also be used for personal, solo projects. **Modify the `.oauth.yml` configuration file**. You can find and modify this file under the `Files` tab of your Space. The default file looks like this: @@ -75,12 +75,12 @@ allowed_workspaces: - name: community-initiative ``` -## How to deploy Argilla under a Hugging Face Organization +## How to deploy Extralit under a Hugging Face Organization -Creating an Argilla Space within an organization is useful for several scenarios: +Creating an Extralit Space within an organization is useful for several scenarios: - **You want to only enable members of your organization to join your Space**. You can achieve this by setting your Space to private. -- **You want manage the Space together with other users** (e.g., Space settings, etc.). Note that if you just want to manage your Argilla datasets, workspaces, you can achieve this by adding other Argilla `owner` roles to your Argilla Server. +- **You want manage the Space together with other users** (e.g., Space settings, etc.). Note that if you just want to manage your Extralit datasets, workspaces, you can achieve this by adding other Extralit `owner` roles to your Extralit Server. - **More generally, you want to make available your space under an organization/community umbrella**. The steps are very similar the [Quickstart guide](quickstart.md) with one important difference: @@ -88,21 +88,21 @@ The steps are very similar the [Quickstart guide](quickstart.md) with one import !!! tip "Enable Persistent Storage `SMALL`" Not setting persistent storage to `Small` means that **you will loose your data when the Space restarts**. - For Argilla Spaces with many users, it's strongly recommended to **set persistent storage to `Small`**. + For Extralit Spaces with many users, it's strongly recommended to **set persistent storage to `Small`**. ## How to use Private Spaces Setting your Space visibility to private can be useful if: - You want to work on your personal, solo project. -- You want your Argilla to be available only to members of the organization where you deploy the Argilla Space. +- You want your Extralit to be available only to members of the organization where you deploy the Extralit Space. You can set the visibility of the Space during the Space creation process or afterwards under the `Settings` Tab. To use the Python SDK with private Spaces you need to specify your `HF_TOKEN` which can be found [here](https://huggingface.co/settings/tokens), when creating the client: ```python -import argilla as rg +import extralit as ex HF_TOKEN = "..." @@ -115,12 +115,12 @@ client = ex.Extralit( ## Space Secrets overview -There's two optional secrets to set up the `USERNAME` and `PASSWORD` of the `owner` of the Argilla Space. Remember that, by default Argilla Spaces are configured with a *Sign in with Hugging Face* button, which is also used to grant an `owner` to the creator of the Space for personal spaces. +There's two optional secrets to set up the `USERNAME` and `PASSWORD` of the `owner` of the Extralit Space. Remember that, by default Extralit Spaces are configured with a *Sign in with Hugging Face* button, which is also used to grant an `owner` to the creator of the Space for personal spaces. The `USERNAME` and `PASSWORD` are only useful in a couple of scenarios: - You have [disabled Hugging Face OAuth](#how-to-configure-and-disable-oauth-access). -- You want to [set up Argilla under an organization](#how-to-deploy-argilla-under-a-hugging-face-organization) and want your Hugging Face username to be granted the `owner` role. +- You want to [set up Extralit under an organization](#how-to-deploy-argilla-under-a-hugging-face-organization) and want your Hugging Face username to be granted the `owner` role. In summary, when setting up a Space: !!! info "Creating a Space under your personal account" diff --git a/extralit/docs/getting_started/how-to-deploy-argilla-with-docker.md b/extralit/docs/getting_started/how-to-deploy-argilla-with-docker.md index 129505875..2822ac757 100644 --- a/extralit/docs/getting_started/how-to-deploy-argilla-with-docker.md +++ b/extralit/docs/getting_started/how-to-deploy-argilla-with-docker.md @@ -1,8 +1,8 @@ --- -description: Deploy Argilla with Docker +description: Deploy Extralit with Docker --- -This guide describes how to deploy the Argilla Server with `docker compose`. This is useful if you want to deploy Argilla locally, and/or have full control over the configuration the server, database, and search engine (Elasticsearch). +This guide describes how to deploy the Extralit Server with `docker compose`. This is useful if you want to deploy Extralit locally, and/or have full control over the configuration the server, database, and search engine (Elasticsearch). First, you need to install `docker` on your machine and make sure you can run `docker compose`. @@ -29,7 +29,7 @@ Run to deploy the server on `http://localhost:6900`: docker compose up -d ``` -Once is completed, go to this URL with your browser: [http://localhost:6900](http://localhost:6900) and you should see the Argilla login page. +Once is completed, go to this URL with your browser: [http://localhost:6900](http://localhost:6900) and you should see the Extralit login page. If it's not available, check the logs: @@ -37,4 +37,4 @@ If it's not available, check the logs: docker compose logs -f ``` -Most of the deployment issues are related to ElasticSearch. [Join Hugging Face Discord's server](http://hf.co/join/discord) and ask for support on the Argilla channel. +Most of the deployment issues are related to ElasticSearch. [Join Hugging Face Discord's server](http://hf.co/join/discord) and ask for support on the Extralit channel. diff --git a/extralit/docs/getting_started/installation.md b/extralit/docs/getting_started/installation.md index d26e5d55d..2add79f65 100644 --- a/extralit/docs/getting_started/installation.md +++ b/extralit/docs/getting_started/installation.md @@ -26,13 +26,13 @@ Get your ``: * If you are using HF Spaces, it should be constructed as follows: `https://[your-owner-name]-[your_space_name].hf.space` * If you are using Docker, it is the URL shown in your browser (by default `http://localhost:6900`) -Get your `` in `My Settings` in the Argilla UI (by default owner.apikey). +Get your `` in `My Settings` in the Extralit UI (by default owner.apikey). !!! note Make sure to replace `` and `` with your actual values. If you are using a private HF Space, you need to specify your `HF_TOKEN` which can be found [here](https://huggingface.co/settings/tokens). ```python -import argilla as rg +import extralit as ex client = ex.init( api_url="", diff --git a/extralit/docs/getting_started/quickstart.md b/extralit/docs/getting_started/quickstart.md index af98f45ef..e5962110f 100644 --- a/extralit/docs/getting_started/quickstart.md +++ b/extralit/docs/getting_started/quickstart.md @@ -24,7 +24,7 @@ Extralit is a free, open-source, self-hosted tool. This means you need to deploy You can use the default values following these steps: - Leave the default owner if using your personal account - - Leave `ADMIN_USERNAME` and `ADMIN_PASSWORD` secrets empty since you'll sign in with your HF user as the Argilla Space `owner`. + - Leave `ADMIN_USERNAME` and `ADMIN_PASSWORD` secrets empty since you'll sign in with your HF user as the Extralit Space `owner`. - You must fill out the following Space secrets fields: - `OAUTH2_HUGGINGFACE_CLIENT_ID` and `OAUTH2_HUGGINGFACE_CLIENT_SECRET`: The Oauth. @@ -43,14 +43,14 @@ Extralit is a free, open-source, self-hosted tool. This means you need to deploy pip install extralit ``` - Next, we can use the `Argilla.deploy_on_spaces` method, which will create a Space in [the Hugging Face Hub](https://huggingface.co/). This method will automatically do the following: + Next, we can use the `Extralit.deploy_on_spaces` method, which will create a Space in [the Hugging Face Hub](https://huggingface.co/). This method will automatically do the following: - - Deploy an Argilla Space on the Hugging Face Hub with [OAuth sign-in](#sign-in-into-the-extralit-ui) and a URL like `https://-argilla.hf.space`, which takes around 2-3 minutes. - - Create a default workspace called `argilla` with an owner called `` and an Argilla token set to `api_key`. - - Automatically return the authenticated Argilla client, which can directly be used to interact with your Argilla server. + - Deploy an Extralit Space on the Hugging Face Hub with [OAuth sign-in](#sign-in-into-the-extralit-ui) and a URL like `https://-argilla.hf.space`, which takes around 2-3 minutes. + - Create a default workspace called `argilla` with an owner called `` and an Extralit token set to `api_key`. + - Automatically return the authenticated Extralit client, which can directly be used to interact with your Extralit server. ```python - import argilla as rg + import extralit as ex authenticated_client = ex.Extralit.deploy_on_spaces(api_key="") ``` @@ -58,13 +58,13 @@ Extralit is a free, open-source, self-hosted tool. This means you need to deploy !!! warning "Persistent storage `SMALL`" Not setting persistent storage to `SMALL` means that **you will loose your data when the Space restarts**. Spaces get restarted due to maintenance, inactivity, and every time you change your Spaces settings. If you want to **use the Space just for testing** you can use `FREE` temporarily. -!!! tip "Argilla API Key" - Your Argilla API key can be found in the `My Settings` page of your Argilla Space. Take a look at the [sign in to the UI section](#sign-in-into-the-extralit-ui) to learn how to retrieve it. +!!! tip "Extralit API Key" + Your Extralit API key can be found in the `My Settings` page of your Extralit Space. Take a look at the [sign in to the UI section](#sign-in-into-the-extralit-ui) to learn how to retrieve it. !!! warning "Persistent storage `SMALL`" Not setting persistent storage to `SMALL` means that **you will loose your data when the Space restarts**. Spaces get restarted due to maintenance, inactivity, and every time you change your Spaces settings. If you want to **use the Space just for testing** you can use `FREE` temporarily. -If you want to deploy Argilla within a Hugging Face organization, setup a more stable Space, or understand the settings, [check out the HF Spaces settings guide](how-to-configure-argilla-on-huggingface.md). +If you want to deploy Extralit within a Hugging Face organization, setup a more stable Space, or understand the settings, [check out the HF Spaces settings guide](how-to-configure-argilla-on-huggingface.md). !!! docker "Deploy with Docker" If you want to **run Extralit locally on your machine or a server**, or tune the server configuration, choose this option. To use this option, [check this guide](how-to-deploy-argilla-with-docker.md). @@ -81,16 +81,16 @@ In the sign in page: 1. Click on **Sign in with Hugging Face**. -2. **Authorize the application** and you will be logged in into Argilla as an `owner`. +2. **Authorize the application** and you will be logged in into Extralit as an `owner`. !!! info "Unauthorized error" Sometimes, after authorizing you'll see an unauthorized error, and get redirected to the sign in page. Typically, clicking the Sign in button again will solve this issue. -Congrats! Your Argilla server is ready to start your first project using the Python SDK. You now have full rights to create datasets. Follow the instructions in the home page, or keep reading this guide if you want a more detailed explanation. +Congrats! Your Extralit server is ready to start your first project using the Python SDK. You now have full rights to create datasets. Follow the instructions in the home page, or keep reading this guide if you want a more detailed explanation. ## Install the Python SDK -To manage workspaces and datasets in Argilla, you need to use the Argilla Python SDK. You can install it with pip as follows: +To manage workspaces and datasets in Extralit, you need to use the Extralit Python SDK. You can install it with pip as follows: ```console pip install extralit @@ -100,22 +100,22 @@ pip install extralit The quickest way to start exploring the tool and create your first dataset is by importing an exiting one from the Hugging Face Hub. -To do this, log in to the Argilla UI and in the Home page click on "Import dataset from Hugging Face". You can choose one of the sample datasets or paste a repo id in the input. This will look something like `stanfordnlp/imdb`. +To do this, log in to the Extralit UI and in the Home page click on "Import dataset from Hugging Face". You can choose one of the sample datasets or paste a repo id in the input. This will look something like `stanfordnlp/imdb`. -Argilla will automatically interpret the columns in the dataset to map them to Fields and Questions. +Extralit will automatically interpret the columns in the dataset to map them to Fields and Questions. -**Fields** include the data that you want feedback on, like text, chats, or images. If you want to exclude any of the Fields that Argilla identified for you, simply select the "No mapping" option. +**Fields** include the data that you want feedback on, like text, chats, or images. If you want to exclude any of the Fields that Extralit identified for you, simply select the "No mapping" option. -**Questions** are the feedback you want to collect, like labels, ratings, rankings, or text. If Argilla identified questions in your dataset that you don't want, you can eliminate them. You can also add questions of your own. +**Questions** are the feedback you want to collect, like labels, ratings, rankings, or text. If Extralit identified questions in your dataset that you don't want, you can eliminate them. You can also add questions of your own. ![Screenshot of the dataset configuration page](../assets/images/getting_started/dataset_configurator.png) Note that you will be able to modify some elements of the configuration of the dataset after it has been created from the Dataset Settings page e.g., the titles of fields and questions. Check all the settings you can modify in the [Update a dataset](../admin_guide/dataset.md#update-a-dataset) section. -When you're happy with the result, you'll need to give a name to your dataset, select a workspace and choose a split, if applicable. Then, Argilla will start importing the dataset in the background. Now you're all set up to start annotating! +When you're happy with the result, you'll need to give a name to your dataset, select a workspace and choose a split, if applicable. Then, Extralit will start importing the dataset in the background. Now you're all set up to start annotating! !!! info "Importing long datasets" - Argilla will only import the first 10k rows of a dataset. If your dataset is larger, you can import the rest of the records at any point using the Python SDK. + Extralit will only import the first 10k rows of a dataset. If your dataset is larger, you can import the rest of the records at any point using the Python SDK. To do that, open your dataset and copy the code snippet provided under "Import data". Now, open a Jupyter or Google Colab notebook and install argilla: @@ -126,22 +126,22 @@ When you're happy with the result, you'll need to give a name to your dataset, s ## Install and connect the Python SDK -For getting started with Argilla and its SDK, we recommend to use Jupyter Notebook or Google Colab. You will need this to manage users, workspaces and datasets in Argilla. +For getting started with Extralit and its SDK, we recommend to use Jupyter Notebook or Google Colab. You will need this to manage users, workspaces and datasets in Extralit. -In your notebook, you can install the Argilla SDK with pip as follows: +In your notebook, you can install the Extralit SDK with pip as follows: ```python !pip install extralit ``` -To start interacting with your Argilla server, you need to instantiate a client with an API key and API URL: +To start interacting with your Extralit server, you need to instantiate a client with an API key and API URL: -- The `` is in the `My Settings` page of your Argilla Space but make sure you are logged in with the `owner` account you used to create the Space. +- The `` is in the `My Settings` page of your Extralit Space but make sure you are logged in with the `owner` account you used to create the Space. - The `` is the URL shown in your browser if it ends with `*.hf.space`. ```python -import argilla as rg +import extralit as ex client = ex.client( api_url="", @@ -150,9 +150,9 @@ client = ex.client( ``` !!! info "You can't find your API URL" - If you're using Spaces, sometimes the Argilla UI is embedded into the Hub UI so the URL of the browser won't match the API URL. In these scenarios, you have several options: + If you're using Spaces, sometimes the Extralit UI is embedded into the Hub UI so the URL of the browser won't match the API URL. In these scenarios, you have several options: - 1. In the Home page of Argilla, click on "Import from the SDK". You will find your API URL and key in the code snippet provided. + 1. In the Home page of Extralit, click on "Import from the SDK". You will find your API URL and key in the code snippet provided. 2. Click on the three points menu at the top of the Space, select "Embed this Space", and open the direct URL. 3. Use this pattern: `https://[your-owner-name]-[your_space_name].hf.space`. @@ -162,13 +162,13 @@ To check that everything is running correctly, you can call `me`. This should re client.me ``` -From here, you can manage all of your assets in Argilla, including updating the dataset we created earlier and adding advanced information, such as vectors, metadata or suggestions. To learn how to do this, check our [how to guides](../admin_guide/index.md). +From here, you can manage all of your assets in Extralit, including updating the dataset we created earlier and adding advanced information, such as vectors, metadata or suggestions. To learn how to do this, check our [how to guides](../admin_guide/index.md). ## Export your dataset to the Hub -Once you've spent some time annotating your dataset in Argilla, you can upload it back to the Hugging Face Hub to share with others or version control it. +Once you've spent some time annotating your dataset in Extralit, you can upload it back to the Hugging Face Hub to share with others or version control it. -To do that, first follow the steps in the previous section to connect to your Argilla server using the SDK. Then, you can load your dataset and export it to the hub like this: +To do that, first follow the steps in the previous section to connect to your Extralit server using the SDK. Then, you can load your dataset and export it to the hub like this: ```python dataset = client.datasets(name="my_dataset") @@ -181,6 +181,6 @@ For more info on exporting datasets to the Hub, read our guide on [exporting dat ## Next steps - To learn how to create your datasets, workspace, and manage users, check the [how-to guides](../admin_guide/index.md). -- To learn Argilla with hands-on examples, check the [Tutorials section](../tutorials/index.md). +- To learn Extralit with hands-on examples, check the [Tutorials section](../tutorials/index.md). -- To further configure your Argilla Space, check the [Hugging Face Spaces settings guide](how-to-configure-argilla-on-huggingface.md). +- To further configure your Extralit Space, check the [Hugging Face Spaces settings guide](how-to-configure-argilla-on-huggingface.md). diff --git a/extralit/docs/glossary.md b/extralit/docs/glossary.md index 8463a9042..fa6062842 100644 --- a/extralit/docs/glossary.md +++ b/extralit/docs/glossary.md @@ -10,11 +10,11 @@ *[MLOps]: Machine Learning Operations. Practices and processes to manage the lifecycle of ML models. *[K8s]: Kubernetes, an open-source platform designed to automate deploying, scaling, and operating application containers. *[API]: Application Programming Interface. -*[SDK]: Software Development Kit. +*[SDK]: Software Development Kit. *[CLI]: Command Line Interface. *[Token]: A single element of a sequence, such as a word or a symbol. *[HF]: HuggingFace - A platform for deploying and managing open-source AI applications, models and datasets in the cloud. *[CI/CD]: Continuous Integration and Continuous Deployment, practices that automate the integration of code changes and deployment to production environments. - -*[record]: In Argilla, a record is a structured data entry that contains information about a specific instance, such as a text document, an image, or any other type of data that can be annotated or analyzed. Records are the fundamental units of data in Argilla and can be associated with various metadata, labels, and annotations. -*[records]: In Argilla, a record is a structured data entry that contains information about a specific instance, such as a text document, an image, or any other type of data that can be annotated or analyzed. Records are the fundamental units of data in Argilla and can be associated with various metadata, labels, and annotations. + +*[record]: In Extralit, a record is a structured data entry that contains information about a specific instance, such as a text document, an image, or any other type of data that can be annotated or analyzed. Records are the fundamental units of data in Extralit and can be associated with various metadata, labels, and annotations. +*[records]: In Extralit, a record is a structured data entry that contains information about a specific instance, such as a text document, an image, or any other type of data that can be annotated or analyzed. Records are the fundamental units of data in Extralit and can be associated with various metadata, labels, and annotations. diff --git a/extralit/docs/index.md b/extralit/docs/index.md index 76b0d51a1..b3f9aa8d7 100644 --- a/extralit/docs/index.md +++ b/extralit/docs/index.md @@ -33,7 +33,7 @@ Or, play with the Extralit UI by signing in with your Hugging Face account on th ## Why use Extralit? -Extralit is designed to helps researchers and data scientists tackle the challenges of processing large volumes of academic papers, ensuring **high-quality data extraction for scientific analysis and meta-studies**. By combining LLMs and advanced ML models with intuitive workflows, Extralit is a powerful tool designed to transform unstructured scientific papers into structured, analyzable data. +Extralit is designed to helps researchers and data scientists tackle the challenges of processing large volumes of academic papers, ensuring **high-quality data extraction for scientific analysis and meta-studies**. By combining LLMs and advanced ML models with intuitive workflows, Extralit is a powerful tool designed to transform unstructured scientific papers into structured, analyzable data.

Accelerate scientific data extraction

@@ -48,8 +48,8 @@ Scientific papers come in a variety of formats and layouts, often with complex t

Collaborate effectively on large-scale literature reviews

-Literature review and meta-analysis projects often require team effort. Extralit builds upon Argilla's platform to facilitate **collaborative extraction**, allowing multiple researchers to work together efficiently, share insights, and maintain a consistent approach across large volumes of literature. +Literature review and meta-analysis projects often require team effort. Extralit builds upon Extralit's platform to facilitate **collaborative extraction**, allowing multiple researchers to work together efficiently, share insights, and maintain a consistent approach across large volumes of literature. -## Relationship to Argilla -Extralit builds upon [Argilla's](https://argilla.io) foundation, adding specialized features for scientific data extraction. +## Relationship to Extralit +Extralit builds upon [Extralit's](https://argilla.io) foundation, adding specialized features for scientific data extraction. diff --git a/extralit/docs/reference/argilla-server/configuration.md b/extralit/docs/reference/argilla-server/configuration.md index fa7d00992..8e99f91b0 100644 --- a/extralit/docs/reference/argilla-server/configuration.md +++ b/extralit/docs/reference/argilla-server/configuration.md @@ -1,16 +1,16 @@ # Server configuration -This section explains advanced operations and settings for running the Argilla Server and Argilla Python Client. +This section explains advanced operations and settings for running the Extralit Server and Extralit Python Client. -By default, the Argilla Server will look for your Elasticsearch (ES) endpoint at `http://localhost:9200`. You can customize this by setting the `EXTRALIT_ELASTICSEARCH` environment variable. Have a look at the list of available [environment variables](#environment-variables) to further configure the Argilla server. +By default, the Extralit Server will look for your Elasticsearch (ES) endpoint at `http://localhost:9200`. You can customize this by setting the `EXTRALIT_ELASTICSEARCH` environment variable. Have a look at the list of available [environment variables](#environment-variables) to further configure the Extralit server. -From the Argilla version `1.19.0`, you must set up the search engine manually to work with datasets. You should set the +From the Extralit version `1.19.0`, you must set up the search engine manually to work with datasets. You should set the environment variable `EXTRALIT_SEARCH_ENGINE=opensearch` or `EXTRALIT_SEARCH_ENGINE=elasticsearch` depending on the backend you're using The default value for this variable is set to `elasticsearch`. The minimal version for Elasticsearch is `8.5.0`, and for Opensearch is `2.4.0`. Please, review your backend and upgrade it if necessary. !!! warning - For vector search in OpenSearch, the filtering applied is using a `post_filter` step, since there is a bug that makes queries fail using filtering + knn from Argilla. + For vector search in OpenSearch, the filtering applied is using a `post_filter` step, since there is a bug that makes queries fail using filtering + knn from Extralit. See https://github.com/opensearch-project/k-NN/issues/1286 This may result in unexpected results when combining filtering with vector search with this engine. @@ -19,13 +19,13 @@ Please, review your backend and upgrade it if necessary. ### Using a proxy -If you run Argilla behind a proxy by adding some extra prefix to expose the service, you should set the `EXTRALIT_BASE_URL` +If you run Extralit behind a proxy by adding some extra prefix to expose the service, you should set the `EXTRALIT_BASE_URL` environment variable to properly route requests to the server application. -For example, if your proxy exposes Argilla in the URL `https://my-proxy/custom-path-for-argilla`, you should launch the -Argilla server with `EXTRALIT_BASE_URL=/custom-path-for-argilla`. +For example, if your proxy exposes Extralit in the URL `https://my-proxy/custom-path-for-argilla`, you should launch the +Extralit server with `EXTRALIT_BASE_URL=/custom-path-for-argilla`. -NGINX and Traefik have been tested and are known to work with Argilla: +NGINX and Traefik have been tested and are known to work with Extralit: - [NGINX example](https://github.com/extralit/extralit/tree/main/examples/deployments/docker/nginx) - [Traefik example](https://github.com/extralit/extralit/tree/main/examples/deployments/docker/traefik) @@ -38,9 +38,9 @@ You can set the following environment variables to further configure your server #### FastAPI -- `EXTRALIT_HOME_PATH`: The directory where Argilla will store all the files needed to run. If the path doesn't exist it will be automatically created (Default: `~/.argilla`). +- `EXTRALIT_HOME_PATH`: The directory where Extralit will store all the files needed to run. If the path doesn't exist it will be automatically created (Default: `~/.argilla`). -- `EXTRALIT_BASE_URL`: If you want to launch the Argilla server in a specific base path other than /, you should set up this environment variable. This can be useful when running Argilla behind a proxy that adds a prefix path to route the service (Default: "/"). +- `EXTRALIT_BASE_URL`: If you want to launch the Extralit server in a specific base path other than /, you should set up this environment variable. This can be useful when running Extralit behind a proxy that adds a prefix path to route the service (Default: "/"). - `EXTRALIT_CORS_ORIGINS`: List of host patterns for CORS origin access. @@ -54,14 +54,14 @@ You can set the following environment variables to further configure your server - `USERNAME`: If provided, the owner username (Default: `None`). - `PASSWORD`: If provided, the owner password (Default: `None`). -- `EXTRALIT_AUTH_SECRET_KEY`: The secret key used to sign the API token data. You can use `openssl rand -hex 32` to generate a 32 character string to use with this environment variable. By default a random value is generated, so if you are using more than one server worker (or more than one Argilla server) you will need to set the same value for all of them. +- `EXTRALIT_AUTH_SECRET_KEY`: The secret key used to sign the API token data. You can use `openssl rand -hex 32` to generate a 32 character string to use with this environment variable. By default a random value is generated, so if you are using more than one server worker (or more than one Extralit server) you will need to set the same value for all of them. - `EXTRALIT_AUTH_OAUTH_CFG`: Path to the OAuth2 configuration file (Default: `$PWD/.oauth.yml`). If `USERNAME` and `PASSWORD` are provided, the owner user will be created with these credentials on the server startup. #### Database -- `EXTRALIT_DATABASE_URL`: A URL string that contains the necessary information to connect to a database. Argilla uses SQLite by default, PostgreSQL is also officially supported (Default: `sqlite:///$EXTRALIT_HOME_PATH/extralit.db?check_same_thread=False`). +- `EXTRALIT_DATABASE_URL`: A URL string that contains the necessary information to connect to a database. Extralit uses SQLite by default, PostgreSQL is also officially supported (Default: `sqlite:///$EXTRALIT_HOME_PATH/extralit.db?check_same_thread=False`). ##### SQLite @@ -93,7 +93,7 @@ The following environment variables are useful only when PostgreSQL is used: ### Redis -Redis is used by Argilla to store information about jobs to be processed on background. The following environment variables are useful to config how Argilla connects to Redis: +Redis is used by Extralit to store information about jobs to be processed on background. The following environment variables are useful to config how Extralit connects to Redis: - `EXTRALIT_REDIS_URL`: A URL string that contains the necessary information to connect to a Redis instance (Default: `redis://localhost:6379/0`). - `EXTRALIT_REDIS_USE_CLUSTER`: If "True" tries the connection with the URL to a Redis Cluster instead of a Redis Standalone instance. @@ -114,7 +114,7 @@ Redis is used by Argilla to store information about jobs to be processed on back ### Hugging Face -- `EXTRALIT_SHOW_HUGGINGFACE_SPACE_PERSISTENT_STORAGE_WARNING`: When Argilla is running on Hugging Face Spaces you can use this environment variable to disable the warning message showed when persistent storage is disabled for the space (Default: `true`). +- `EXTRALIT_SHOW_HUGGINGFACE_SPACE_PERSISTENT_STORAGE_WARNING`: When Extralit is running on Hugging Face Spaces you can use this environment variable to disable the warning message showed when persistent storage is disabled for the space (Default: `true`). ### Docker images only diff --git a/extralit/docs/reference/argilla-server/oauth2_configuration.md b/extralit/docs/reference/argilla-server/oauth2_configuration.md index 1a93a4e41..6e5cabdc7 100644 --- a/extralit/docs/reference/argilla-server/oauth2_configuration.md +++ b/extralit/docs/reference/argilla-server/oauth2_configuration.md @@ -1,12 +1,12 @@ # OAuth2 configuration -Argilla supports OAuth2 authentication for users. This allows users to authenticate using other services like Google, +Extralit supports OAuth2 authentication for users. This allows users to authenticate using other services like Google, GitHub, or Hugging Face. Next sections will guide you through the configuration of the OAuth2 authentication. ## The OAuth2 configuration file The OAuth2 configuration file is a YAML file that contains the configuration for the OAuth2 providers that you want to -enable. The default file name is `.oauth.yml` and it should be placed in the root directory of the Argilla server. You +enable. The default file name is `.oauth.yml` and it should be placed in the root directory of the Extralit server. You can also specify a different file name using the `EXTRALIT_AUTH_OAUTH_CFG` environment variable. The file should have the following structure: @@ -52,7 +52,7 @@ you can use it to request specific permissions from the user access. ### Allowed Workspaces The `allowed_workspaces` key defines the available workspaces when users log in using the OAuth2 provider. This is -a list of `name` fields that should match the workspace name in the Argilla server. By default, the `argilla` workspace +a list of `name` fields that should match the workspace name in the Extralit server. By default, the `argilla` workspace is allowed to authenticate using the OAuth2 provider. If the workspace doesn't exist, it will be created automatically on the first server startup. @@ -60,7 +60,7 @@ If the workspace doesn't exist, it will be created automatically on the first se ### Allow HTTP Redirect The `allow_http_redirect` key is a boolean value that allows the OAuth2 provider to redirect the user to an HTTP URL. -By default, this value is set to `false`, and you should set it to `true` only if you are running the Argilla server +By default, this value is set to `false`, and you should set it to `true` only if you are running the Extralit server behind a proxy that doesn't support HTTPS or if you are running the server locally. Enabling this option is not recommended for production environments and should be used only for development purposes. @@ -74,13 +74,13 @@ secret. A common step when creating an application in the provider's developer console is to set the redirect URI. The redirect URI is the URL where the OAuth2 provider will redirect the user after the authentication process. -The redirect URI should be set to the Argilla server URL, followed by `/oauth//callback`. For example, -if the Argilla server is running on `http://localhost:8000`, the redirect URI for provider application should +The redirect URI should be set to the Extralit server URL, followed by `/oauth//callback`. For example, +if the Extralit server is running on `http://localhost:8000`, the redirect URI for provider application should be `http://localhost:8000/oauth/huggingface/callback`. ### Hugging Face OAuth2 configuration -Argilla supports Hugging Face OAuth2 authentication out of the box, and is already configured when running Argilla +Extralit supports Hugging Face OAuth2 authentication out of the box, and is already configured when running Extralit on Hugging Face Spaces (See the [Hugging Face Spaces settings](../../getting_started/how-to-configure-argilla-on-huggingface.md) for more information). But, if you want to manually configure the Hugging Face OAuth2 provider, you should define the following @@ -105,7 +105,7 @@ change the `scope` when creating the application. ### GitHub OAuth2 configuration -Argilla also supports GitHub OAuth2 authentication out of the box. To configure the GitHub OAuth2 provider, you should +Extralit also supports GitHub OAuth2 authentication out of the box. To configure the GitHub OAuth2 provider, you should define the following fields in the `.oauth.yml` file: ```yaml @@ -122,7 +122,7 @@ To get your client ID and client secret, you need to register a new [OAuth appli ### Google OAuth2 configuration -Argilla also supports Google OAuth2 authentication out of the box. To configure the Google OAuth2 provider, you +Extralit also supports Google OAuth2 authentication out of the box. To configure the Google OAuth2 provider, you should define the following fields in the `.oauth.yml` file: ```yaml @@ -140,7 +140,7 @@ To get your client ID and client secret, you need to create a new [OAuth2 client ### Adding more OAuth2 providers If you want to add more OAuth2 providers that are not supported by default, you can do so by adding a new provider -configuration to the `.oauth.yml` file. The Argilla server uses the [Social Auth backends](https://python-social-auth.readthedocs.io/en/latest/backends/index.html) component to define +configuration to the `.oauth.yml` file. The Extralit server uses the [Social Auth backends](https://python-social-auth.readthedocs.io/en/latest/backends/index.html) component to define the provider configuration. You only need to register the provider backend using the `extra_backends` key in the `.oauth.yml` file. @@ -159,5 +159,5 @@ extra_backends: ``` -All the `SOCIAL_AUTH_*` environment variables are supported by the Argilla server, so you can customize the provider +All the `SOCIAL_AUTH_*` environment variables are supported by the Extralit server, so you can customize the provider configuration using these environment variables. diff --git a/extralit/docs/reference/argilla-server/sso_keycloak.md b/extralit/docs/reference/argilla-server/sso_keycloak.md index ec99af421..73eb55470 100644 --- a/extralit/docs/reference/argilla-server/sso_keycloak.md +++ b/extralit/docs/reference/argilla-server/sso_keycloak.md @@ -9,7 +9,7 @@ docker run -p 8080:8080 -e KC_BOOTSTRAP_ADMIN_USERNAME=admin -e KC_BOOTSTRAP_ADM ``` General steps: -1. create a new realm and a new client to use with Argilla. +1. create a new realm and a new client to use with Extralit. 2. The client should expose the client audience via userinfo. 3. After that add the users you want to have access to argilla. @@ -38,7 +38,7 @@ keycloak_admin.create_realm( { "realm": EXTRALIT_REALM, "enabled": True, - "displayName": "Argilla", + "displayName": "Extralit", "userManagedAccessAllowed": True, } ) @@ -153,7 +153,7 @@ new_user = keycloak_admin.create_user( ) ``` -## Set-up Argilla Server +## Set-up Extralit Server After that you need to configure you endpoints in the `.oauth.yaml` same as this is done for the HuggingFace Oauth: diff --git a/extralit/docs/reference/argilla-server/telemetry.md b/extralit/docs/reference/argilla-server/telemetry.md index a1c515f4c..9a94f4a0c 100644 --- a/extralit/docs/reference/argilla-server/telemetry.md +++ b/extralit/docs/reference/argilla-server/telemetry.md @@ -26,7 +26,7 @@ Anonymous telemetry information enables us to continuously improve the product a ## Sensitive data -We do not collect any piece of information related to the source data you store in Argilla. We don't identify individual users. Your data does not leave your server at any time: +We do not collect any piece of information related to the source data you store in Extralit. We don't identify individual users. Your data does not leave your server at any time: * No dataset record is collected. * No dataset names or metadata are collected. @@ -40,7 +40,7 @@ The following usage and error information is reported: * Task name and number of records for bulk operations * An anonymous generated user uuid * An anonymous generated server uuid -* The Argilla version running the server +* The Extralit version running the server * The Python version, e.g. `3.8.13` * The system/OS name, such as `Linux`, `Darwin`, `Windows` * The system’s release version, e.g. `Darwin Kernel Version 21.5.0: Tue Apr 26 21:08:22 PDT 2022; root:xnu-8020` diff --git a/extralit/docs/reference/argilla/client.md b/extralit/docs/reference/argilla/client.md index 56488b156..80e2e5e62 100644 --- a/extralit/docs/reference/argilla/client.md +++ b/extralit/docs/reference/argilla/client.md @@ -3,26 +3,26 @@ hide: footer --- # `ex.Extralit` -To interact with the Argilla server from Python you can use the `Argilla` class. The `Argilla` client is used to create, get, update, and delete all Argilla resources, such as workspaces, users, datasets, and records. +To interact with the Extralit server from Python you can use the `Extralit` class. The `Extralit` client is used to create, get, update, and delete all Extralit resources, such as workspaces, users, datasets, and records. ## Usage Examples -### Deploying Argilla Server on Hugging Face Spaces +### Deploying Extralit Server on Hugging Face Spaces -To deploy Argilla on Hugging Face Spaces, use the `deploy_on_spaces` method. +To deploy Extralit on Hugging Face Spaces, use the `deploy_on_spaces` method. ```python -import argilla as rg +import extralit as ex client = ex.Extralit.deploy_on_spaces(api_key="12345678") ``` -### Connecting to an Argilla server +### Connecting to an Extralit server -To connect to an Argilla server, instantiate the `Argilla` class and pass the `api_url` of the server and the `api_key` to authenticate. +To connect to an Extralit server, instantiate the `Extralit` class and pass the `api_url` of the server and the `api_key` to authenticate. ```python -import argilla as rg +import extralit as ex client = ex.Extralit( api_url="https://argilla.example.com", @@ -32,7 +32,7 @@ client = ex.Extralit( ### Accessing Dataset, Workspace, and User objects -The `Argilla` clients provides access to the `Dataset`, `Workspace`, and `User` objects of the Argilla server. +The `Extralit` clients provides access to the `Dataset`, `Workspace`, and `User` objects of the Extralit server. ```python diff --git a/extralit/docs/reference/argilla/datasets/dataset_records.md b/extralit/docs/reference/argilla/datasets/dataset_records.md index 12da69872..2cf463200 100644 --- a/extralit/docs/reference/argilla/datasets/dataset_records.md +++ b/extralit/docs/reference/argilla/datasets/dataset_records.md @@ -64,7 +64,7 @@ To add records to a dataset, use the `log` method. Records can be added as dicti dataset.records.log(data) ``` - 1. The data structure's keys must match the fields or questions in the Argilla dataset. In this case, there are fields named `question` and `answer`. + 1. The data structure's keys must match the fields or questions in the Extralit dataset. In this case, there are fields named `question` and `answer`. === "From a data structure with a mapping" @@ -86,16 +86,16 @@ To add records to a dataset, use the `log` method. Records can be added as dicti ``` - 1. The data structure's keys must match the fields or questions in the Argilla dataset. In this case, there are fields named `question` and `answer`. - 2. The data structure has keys `query` and `response` and the Argilla dataset has `question` and `answer`. You can use the `mapping` parameter to map the keys in the data structure to the fields in the Argilla dataset. + 1. The data structure's keys must match the fields or questions in the Extralit dataset. In this case, there are fields named `question` and `answer`. + 2. The data structure has keys `query` and `response` and the Extralit dataset has `question` and `answer`. You can use the `mapping` parameter to map the keys in the data structure to the fields in the Extralit dataset. === "From a Hugging Face dataset" - You can also add records to a dataset using a Hugging Face dataset. This is useful when you want to use a dataset from the Hugging Face Hub and add it to your Argilla dataset. + You can also add records to a dataset using a Hugging Face dataset. This is useful when you want to use a dataset from the Hugging Face Hub and add it to your Extralit dataset. - You can add the dataset where the column names correspond to the names of fields, questions, metadata or vectors in the Argilla dataset. + You can add the dataset where the column names correspond to the names of fields, questions, metadata or vectors in the Extralit dataset. - If the dataset's schema does not correspond to your Argilla dataset names, you can use a `mapping` to indicate which columns in the dataset correspond to the Argilla dataset fields. + If the dataset's schema does not correspond to your Extralit dataset names, you can use a `mapping` to indicate which columns in the dataset correspond to the Extralit dataset fields. ```python from datasets import load_dataset @@ -105,15 +105,15 @@ To add records to a dataset, use the `log` method. Records can be added as dicti dataset.records.log(records=hf_dataset) ``` - 1. In this example, the Hugging Face dataset matches the Argilla dataset schema. If that is not the case, you could use the `.map` of the `datasets` library to prepare the data before adding it to the Argilla dataset. + 1. In this example, the Hugging Face dataset matches the Extralit dataset schema. If that is not the case, you could use the `.map` of the `datasets` library to prepare the data before adding it to the Extralit dataset. - Here we use the `mapping` parameter to specify the relationship between the Hugging Face dataset and the Argilla dataset. + Here we use the `mapping` parameter to specify the relationship between the Hugging Face dataset and the Extralit dataset. ```python dataset.records.log(records=hf_dataset, mapping={"txt": "text", "y": "label"}) # (1) ``` - 1. In this case, the `txt` key in the Hugging Face dataset corresponds to the `text` field in the Argilla dataset, and the `y` key in the Hugging Face dataset corresponds to the `label` field in the Argilla dataset. + 1. In this case, the `txt` key in the Hugging Face dataset corresponds to the `text` field in the Extralit dataset, and the `y` key in the Hugging Face dataset corresponds to the `label` field in the Extralit dataset. ### Updating records in a dataset @@ -181,7 +181,7 @@ Records can also be updated using the `log` method with records that contain an === "From a Hugging Face dataset" - You can also update records to an Argilla dataset using a Hugging Face dataset. To update records, the Hugging Face dataset must contain an `id` field to identify the records to be updated, or you can use a mapping to map the keys in the Hugging Face dataset to the fields in the Argilla dataset. + You can also update records to an Extralit dataset using a Hugging Face dataset. To update records, the Hugging Face dataset must contain an `id` field to identify the records to be updated, or you can use a mapping to map the keys in the Hugging Face dataset to the fields in the Extralit dataset. ```python from datasets import load_dataset @@ -191,12 +191,12 @@ Records can also be updated using the `log` method with records that contain an dataset.records.log(records=hf_dataset, mapping={"uuid": "id"}) # (2) ``` - 1. In this example, the Hugging Face dataset matches the Argilla dataset schema. - 2. The `uuid` key in the Hugging Face dataset corresponds to the `id` field in the Argilla dataset. + 1. In this example, the Hugging Face dataset matches the Extralit dataset schema. + 2. The `uuid` key in the Hugging Face dataset corresponds to the `id` field in the Extralit dataset. ### Adding and updating records with images -Argilla datasets can contain image fields. You can add images to a dataset by passing the image to the record object as either a remote URL, a local path to an image file, or a PIL object. The field names must be defined as an `ex.ImageField` in the dataset's `Settings` object to be accepted. Images will be stored in the Argilla database and returned using the data URI schema. +Extralit datasets can contain image fields. You can add images to a dataset by passing the image to the record object as either a remote URL, a local path to an image file, or a PIL object. The field names must be defined as an `ex.ImageField` in the dataset's `Settings` object to be accepted. Images will be stored in the Extralit database and returned using the data URI schema. !!! note "As PIL objects" To retrieve the images as rescaled PIL objects, you can use the `to_datasets` method when exporting the records, as shown in this [how-to guide](../../../admin_guide/import_export.md). @@ -249,7 +249,7 @@ Argilla datasets can contain image fields. You can add images to a dataset by pa dataset.records.log(records=hf_dataset) ``` - If the image field is not defined as an `Image` in the dataset's features, you can cast the dataset to the correct schema before adding it to the Argilla dataset. This is only necessary if the image field is not defined as an `Image` in the dataset's features, and is not one of the supported image types by Argilla (URL, local path, or PIL object). + If the image field is not defined as an `Image` in the dataset's features, you can cast the dataset to the correct schema before adding it to the Extralit dataset. This is only necessary if the image field is not defined as an `Image` in the dataset's features, and is not one of the supported image types by Extralit (URL, local path, or PIL object). ```python hf_dataset = load_dataset("") # (1) @@ -259,7 +259,7 @@ Argilla datasets can contain image fields. You can add images to a dataset by pa dataset.records.log(records=hf_dataset) ``` - 1. In this example, the Hugging Face dataset matches the Argilla dataset schema but the image field is not defined as an `Image` in the dataset's features. + 1. In this example, the Hugging Face dataset matches the Extralit dataset schema but the image field is not defined as an `Image` in the dataset's features. ### Iterating over records in a dataset diff --git a/extralit/docs/reference/argilla/datasets/datasets.md b/extralit/docs/reference/argilla/datasets/datasets.md index 05f0cce3f..631e76233 100644 --- a/extralit/docs/reference/argilla/datasets/datasets.md +++ b/extralit/docs/reference/argilla/datasets/datasets.md @@ -3,13 +3,13 @@ hide: footer --- # `ex.Dataset` -`Dataset` is a class that represents a collection of records. It is used to store and manage records in Argilla. +`Dataset` is a class that represents a collection of records. It is used to store and manage records in Extralit. ## Usage Examples ### Creating a Dataset -To create a new dataset you need to define its name and settings. Optional parameters are `workspace` and `client`, if you want to create the dataset in a specific workspace or on a specific Argilla instance. +To create a new dataset you need to define its name and settings. Optional parameters are `workspace` and `client`, if you want to create the dataset in a specific workspace or on a specific Extralit instance. ```python dataset = ex.Dataset( diff --git a/extralit/docs/reference/argilla/markdown.md b/extralit/docs/reference/argilla/markdown.md index 98645ba54..d189457ca 100644 --- a/extralit/docs/reference/argilla/markdown.md +++ b/extralit/docs/reference/argilla/markdown.md @@ -4,7 +4,7 @@ hide: footer # `ex.markdown` -To support the usage of Markdown within Argilla, we've created some helper functions to easy the usage of DataURL conversions and chat message visualizations. +To support the usage of Markdown within Extralit, we've created some helper functions to easy the usage of DataURL conversions and chat message visualizations. ::: src.argilla.markdown.media diff --git a/extralit/docs/reference/argilla/records/metadata.md b/extralit/docs/reference/argilla/records/metadata.md index c9a0da36d..4e993df70 100644 --- a/extralit/docs/reference/argilla/records/metadata.md +++ b/extralit/docs/reference/argilla/records/metadata.md @@ -10,7 +10,7 @@ Metadata in argilla is a dictionary that can be attached to a record. It is used To use metadata within a dataset, you must define a metadata property in the dataset settings. The metadata property is a list of metadata properties that can be attached to a record. The following example demonstrates how to add metadata to a dataset and how to access metadata from a record object: ```python -import argilla as rg +import extralit as ex dataset = Dataset( name="dataset_with_metadata", diff --git a/extralit/docs/reference/argilla/records/records.md b/extralit/docs/reference/argilla/records/records.md index 243ddc6f4..2f4acf0ac 100644 --- a/extralit/docs/reference/argilla/records/records.md +++ b/extralit/docs/reference/argilla/records/records.md @@ -3,7 +3,7 @@ hide: footer --- # `ex.Record` -The `Record` object is used to represent a single record in Argilla. It contains fields, suggestions, responses, metadata, and vectors. +The `Record` object is used to represent a single record in Extralit. It contains fields, suggestions, responses, metadata, and vectors. ## Usage Examples @@ -21,9 +21,9 @@ dataset.records.log( ) # (1) ``` -1. The Argilla dataset contains a field named `text` matching the key here. +1. The Extralit dataset contains a field named `text` matching the key here. -To create records with image fields, pass the image to the record object as either a remote url, local path to an image file, or a PIL object. The field names must be defined as an `ex.ImageField`in the dataset's `Settings` object to be accepted. Images will be stored in the Argilla database and returned as rescaled PIL objects. +To create records with image fields, pass the image to the record object as either a remote url, local path to an image file, or a PIL object. The field names must be defined as an `ex.ImageField`in the dataset's `Settings` object to be accepted. Images will be stored in the Extralit database and returned as rescaled PIL objects. ```python dataset.records.log( @@ -38,7 +38,7 @@ dataset.records.log( 1. The image can be referenced as either a remote url, a local file path, or a PIL object. !!! note - The image will be stored in the Argilla database and can impact the dataset's storage usage. Images should be less than 5mb in size and datasets should contain less than 10,000 images. + The image will be stored in the Extralit database and can impact the dataset's storage usage. Images should be less than 5mb in size and datasets should contain less than 10,000 images. ### Accessing Record Attributes diff --git a/extralit/docs/reference/argilla/records/responses.md b/extralit/docs/reference/argilla/records/responses.md index d307551df..d8643a30e 100644 --- a/extralit/docs/reference/argilla/records/responses.md +++ b/extralit/docs/reference/argilla/records/responses.md @@ -3,7 +3,7 @@ hide: footer --- # `ex.Response` -Class for interacting with Argilla Responses of records. Responses are answers to questions by a user. Therefore, a question can have multiple responses, one for each user that has answered the question. A `Response` is typically created by a user in the UI or consumed from a data source as a label, unlike a `Suggestion` which is typically created by a model prediction. +Class for interacting with Extralit Responses of records. Responses are answers to questions by a user. Therefore, a question can have multiple responses, one for each user that has answered the question. A `Response` is typically created by a user in the UI or consumed from a data source as a label, unlike a `Suggestion` which is typically created by a model prediction. ## Usage Examples diff --git a/extralit/docs/reference/argilla/records/suggestions.md b/extralit/docs/reference/argilla/records/suggestions.md index 2f8ae3995..109940a7f 100644 --- a/extralit/docs/reference/argilla/records/suggestions.md +++ b/extralit/docs/reference/argilla/records/suggestions.md @@ -3,7 +3,7 @@ hide: footer --- # `ex.Suggestion` -Class for interacting with Argilla Suggestions of records. Suggestions are typically created by a model prediction, unlike a `Response` which is typically created by a user in the UI or consumed from a data source as a label. +Class for interacting with Extralit Suggestions of records. Suggestions are typically created by a model prediction, unlike a `Response` which is typically created by a user in the UI or consumed from a data source as a label. ## Usage Examples diff --git a/extralit/docs/reference/argilla/records/vectors.md b/extralit/docs/reference/argilla/records/vectors.md index 6c505b9a6..a21897127 100644 --- a/extralit/docs/reference/argilla/records/vectors.md +++ b/extralit/docs/reference/argilla/records/vectors.md @@ -10,7 +10,7 @@ A vector is a numerical representation of a `Record` field or attribute, usually To use vectors within a dataset, you must define a vector field in the dataset settings. The vector field is a list of vector fields that can be attached to a record. The following example demonstrates how to add vectors to a dataset and how to access vectors from a record object: ```python -import argilla as rg +import extralit as ex dataset = Dataset( name="dataset_with_metadata", diff --git a/extralit/docs/reference/argilla/search.md b/extralit/docs/reference/argilla/search.md index 388b0fc53..524be3d8c 100644 --- a/extralit/docs/reference/argilla/search.md +++ b/extralit/docs/reference/argilla/search.md @@ -19,7 +19,7 @@ for record in dataset.records(query="paris"): ### Filtering records by conditions -Argilla allows you to filter records based on conditions. You can use the `Filter` class to define the conditions and pass them to the `Dataset.records` attribute to fetch records based on the conditions. Conditions include "==", ">=", "<=", or "in". Conditions can be combined with dot notation to filter records based on metadata, suggestions, or responses. +Extralit allows you to filter records based on conditions. You can use the `Filter` class to define the conditions and pass them to the `Dataset.records` attribute to fetch records based on the conditions. Conditions include "==", ">=", "<=", or "in". Conditions can be combined with dot notation to filter records based on metadata, suggestions, or responses. ```python diff --git a/extralit/docs/reference/argilla/settings/fields.md b/extralit/docs/reference/argilla/settings/fields.md index d5569e15b..882586e18 100644 --- a/extralit/docs/reference/argilla/settings/fields.md +++ b/extralit/docs/reference/argilla/settings/fields.md @@ -4,7 +4,7 @@ hide: footer # Fields -Fields in Argilla define the content of a record that will be reviewed by a user. +Fields in Extralit define the content of a record that will be reviewed by a user. ## Usage Examples diff --git a/extralit/docs/reference/argilla/settings/questions.md b/extralit/docs/reference/argilla/settings/questions.md index a8dd9657b..dcb1af8b7 100644 --- a/extralit/docs/reference/argilla/settings/questions.md +++ b/extralit/docs/reference/argilla/settings/questions.md @@ -4,7 +4,7 @@ hide: footer # Questions -Argilla uses questions to gather the feedback. The questions will be answered by users or models. +Extralit uses questions to gather the feedback. The questions will be answered by users or models. ## Usage Examples diff --git a/extralit/docs/reference/argilla/settings/settings.md b/extralit/docs/reference/argilla/settings/settings.md index f8adc6bc4..d4cbf2daf 100644 --- a/extralit/docs/reference/argilla/settings/settings.md +++ b/extralit/docs/reference/argilla/settings/settings.md @@ -3,7 +3,7 @@ hide: footer --- # `ex.Settings` -`ex.Settings` is used to define the settings of an Argilla `Dataset`. The settings can be used to configure the +`ex.Settings` is used to define the settings of an Extralit `Dataset`. The settings can be used to configure the behavior of the dataset, such as the fields, questions, guidelines, metadata, and vectors. The `Settings` class is passed to the `Dataset` class and used to create the dataset on the server. Once created, the settings of a dataset cannot be changed. @@ -15,7 +15,7 @@ cannot be changed. To create a new dataset with settings, instantiate the `Settings` class and pass it to the `Dataset` class. ```python -import argilla as rg +import extralit as ex settings = ex.Settings( guidelines="Select the sentiment of the prompt.", @@ -38,7 +38,7 @@ The settings object can be modified before create the dataset by adding, replaci the method `settings.add` and `settings.<>.remove` ```python -import argilla as rg +import extralit as ex settings = ex.Settings( guidelines="Select the sentiment of the prompt.", @@ -59,7 +59,7 @@ settings.questions.remove("response") ### Creating settings using built in templates -Argilla provides built-in templates for creating settings for common dataset types. To use a template, use the class methods of the `Settings` class. There are three built-in templates available for classification, ranking, and rating tasks. Template settings also include default guidelines and mappings. +Extralit provides built-in templates for creating settings for common dataset types. To use a template, use the class methods of the `Settings` class. There are three built-in templates available for classification, ranking, and rating tasks. Template settings also include default guidelines and mappings. #### Classification Task diff --git a/extralit/docs/reference/argilla/settings/vectors.md b/extralit/docs/reference/argilla/settings/vectors.md index 13fd06218..e378f9cee 100644 --- a/extralit/docs/reference/argilla/settings/vectors.md +++ b/extralit/docs/reference/argilla/settings/vectors.md @@ -3,7 +3,7 @@ hide: footer --- # Vectors -Vector fields in Argilla are used to define the vector form of a record that will be reviewed by a user. +Vector fields in Extralit are used to define the vector form of a record that will be reviewed by a user. ## Usage Examples diff --git a/extralit/docs/reference/argilla/users.md b/extralit/docs/reference/argilla/users.md index fbfe39d07..222bfccf5 100644 --- a/extralit/docs/reference/argilla/users.md +++ b/extralit/docs/reference/argilla/users.md @@ -3,7 +3,7 @@ hide: footer --- # `ex.User` -A user in Argilla is a profile that uses the SDK or UI. Their profile can be used to track their feedback activity and to manage their access to the Argilla server. +A user in Extralit is a profile that uses the SDK or UI. Their profile can be used to track their feedback activity and to manage their access to the Extralit server. ## Usage Examples diff --git a/extralit/docs/reference/argilla/webhooks.md b/extralit/docs/reference/argilla/webhooks.md index 8e48e1c3e..adb246bae 100644 --- a/extralit/docs/reference/argilla/webhooks.md +++ b/extralit/docs/reference/argilla/webhooks.md @@ -5,7 +5,7 @@ hide: footer # `argilla.webhooks` Webhooks are a way for web applications to notify each other when something happens. For example, you might want to be -notified when a new dataset is created in Argilla. +notified when a new dataset is created in Extralit. ## Usage Examples diff --git a/extralit/docs/reference/argilla/workspaces.md b/extralit/docs/reference/argilla/workspaces.md index 8adf692fa..66844f2e4 100644 --- a/extralit/docs/reference/argilla/workspaces.md +++ b/extralit/docs/reference/argilla/workspaces.md @@ -4,7 +4,7 @@ hide: footer # `ex.Workspace` -In Argilla, workspaces are used to organize datasets in to groups. For example, you might have a workspace for each project or team. +In Extralit, workspaces are used to organize datasets in to groups. For example, you might have a workspace for each project or team. ## Usage Examples diff --git a/extralit/docs/scripts/gen_popular_issues.py b/extralit/docs/scripts/gen_popular_issues.py index 4bf5f333c..d014339fc 100644 --- a/extralit/docs/scripts/gen_popular_issues.py +++ b/extralit/docs/scripts/gen_popular_issues.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/docs/scripts/gen_ref_pages.py b/extralit/docs/scripts/gen_ref_pages.py index 9cae49eb6..d4f26d2f5 100644 --- a/extralit/docs/scripts/gen_ref_pages.py +++ b/extralit/docs/scripts/gen_ref_pages.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/docs/tutorials/image_classification.ipynb b/extralit/docs/tutorials/image_classification.ipynb index 17cd7bb9a..135204ed3 100644 --- a/extralit/docs/tutorials/image_classification.ipynb +++ b/extralit/docs/tutorials/image_classification.ipynb @@ -28,14 +28,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Deploy the Argilla server" + "### Deploy the Extralit server" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "If you already have deployed Argilla, you can skip this step. Otherwise, you can quickly deploy Argilla following [this guide](../getting_started/quickstart.md)." + "If you already have deployed Extralit, you can skip this step. Otherwise, you can quickly deploy Extralit following [this guide](../getting_started/quickstart.md)." ] }, { @@ -49,7 +49,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To complete this tutorial, you need to install the Argilla SDK and a few third-party libraries via `pip`." + "To complete this tutorial, you need to install the Extralit SDK and a few third-party libraries via `pip`." ] }, { @@ -101,14 +101,14 @@ " TrainingArguments\n", ")\n", "\n", - "import argilla as rg" + "import extralit as ex" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "You also need to connect to the Argilla server using the `api_url` and `api_key`." + "You also need to connect to the Extralit server using the `api_url` and `api_key`." ] }, { @@ -147,7 +147,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Configure and create the Argilla dataset" + "## Configure and create the Extralit dataset" ] }, { @@ -284,7 +284,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will easily add them to the dataset using `log`, without needing a mapping since the names already match the Argilla resources. Additionally, since the images are already in PIL format and defined as `Image` in the Hugging Face dataset’s features, we can log them directly. We will also include an `id` column in each record, allowing us to easily trace back to the external data source." + "We will easily add them to the dataset using `log`, without needing a mapping since the names already match the Extralit resources. Additionally, since the images are already in PIL format and defined as `Image` in the Hugging Face dataset’s features, we can log them directly. We will also include an `id` column in each record, allowing us to easily trace back to the external data source." ] }, { @@ -431,14 +431,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Evaluate with Argilla" + "## Evaluate with Extralit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now, we can start the annotation process. Just open the dataset in the Argilla UI and start annotating the records. If the suggestions are correct, you can just click on `Submit`. Otherwise, you can select the correct label." + "Now, we can start the annotation process. Just open the dataset in the Extralit UI and start annotating the records. If the suggestions are correct, you can just click on `Submit`. Otherwise, you can select the correct label." ] }, { @@ -477,7 +477,7 @@ "So, let's start by retrieving the annotated records and exporting them as a `Dataset`, so images will be in PIL format.\n", "\n", "!!! note\n", - " Check this [how-to guide](../admin_guide/query.md) to know more about filtering and querying in Argilla. Also, you can check the Hugging Face docs on [fine-tuning an image classification model](https://huggingface.co/docs/transformers/en/tasks/image_classification)." + " Check this [how-to guide](../admin_guide/query.md) to know more about filtering and querying in Extralit. Also, you can check the Hugging Face docs on [fine-tuning an image classification model](https://huggingface.co/docs/transformers/en/tasks/image_classification)." ] }, { diff --git a/extralit/docs/tutorials/image_preference.ipynb b/extralit/docs/tutorials/image_preference.ipynb index 179b9d46f..3287eed9c 100644 --- a/extralit/docs/tutorials/image_preference.ipynb +++ b/extralit/docs/tutorials/image_preference.ipynb @@ -28,14 +28,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Deploy the Argilla server" + "### Deploy the Extralit server" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "If you already have deployed Argilla, you can skip this step. Otherwise, you can quickly deploy Argilla following [this guide](../getting_started/quickstart.md)." + "If you already have deployed Extralit, you can skip this step. Otherwise, you can quickly deploy Extralit following [this guide](../getting_started/quickstart.md)." ] }, { @@ -49,7 +49,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To complete this tutorial, you need to install the Argilla SDK and a few third-party libraries via `pip`." + "To complete this tutorial, you need to install the Extralit SDK and a few third-party libraries via `pip`." ] }, { @@ -87,7 +87,7 @@ "import os\n", "import time\n", "\n", - "import argilla as rg\n", + "import extralit as ex\n", "import requests\n", "from PIL import Image\n", "from datasets import load_dataset, Dataset\n", @@ -98,7 +98,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You also need to connect to the Argilla server using the `api_url` and `api_key`." + "You also need to connect to the Extralit server using the `api_url` and `api_key`." ] }, { @@ -137,7 +137,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Configure and create the Argilla dataset" + "## Configure and create the Extralit dataset" ] }, { @@ -440,7 +440,7 @@ "source": [ "### Add vectors\n", "\n", - "We will use the `sentence-transformers` library to create vectors for the `original_caption`. We will use the `TaylorAI/bge-micro-v2` model, which strikes a good balance between speed and performance. Note that we also need to convert the vectors to a `list` to store them in the Argilla dataset." + "We will use the `sentence-transformers` library to create vectors for the `original_caption`. We will use the `TaylorAI/bge-micro-v2` model, which strikes a good balance between speed and performance. Note that we also need to convert the vectors to a `list` to store them in the Extralit dataset." ] }, { @@ -463,9 +463,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Log to Argilla\n", + "### Log to Extralit\n", "\n", - "We will easily add them to the dataset using `log` and the mapping, where we indicate which column from our dataset needs to be mapped to which Argilla resource if the names do not correspond. We are also using the `key` column as `id` for our record so we can easily backtrack the record to the external data source." + "We will easily add them to the dataset using `log` and the mapping, where we indicate which column from our dataset needs to be mapped to which Extralit resource if the names do not correspond. We are also using the `key` column as `id` for our record so we can easily backtrack the record to the external data source." ] }, { @@ -485,21 +485,21 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Voilà! We have our Argilla dataset ready for annotation." + "Voilà! We have our Extralit dataset ready for annotation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Evaluate with Argilla" + "## Evaluate with Extralit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now, we can start the annotation process. Just open the dataset in the Argilla UI and start annotating the records." + "Now, we can start the annotation process. Just open the dataset in the Extralit UI and start annotating the records." ] }, { diff --git a/extralit/docs/tutorials/index.md b/extralit/docs/tutorials/index.md index e4b996e4a..d1b57afc3 100644 --- a/extralit/docs/tutorials/index.md +++ b/extralit/docs/tutorials/index.md @@ -1,12 +1,12 @@ --- -description: These are the tutorials for the Argilla SDK. They provide step-by-step instructions for common tasks. +description: These are the tutorials for the Extralit SDK. They provide step-by-step instructions for common tasks. hide: toc --- # Tutorials -These are the tutorials for *the Argilla SDK*. They provide step-by-step instructions for common tasks. +These are the tutorials for *the Extralit SDK*. They provide step-by-step instructions for common tasks.
diff --git a/extralit/docs/tutorials/text_classification.ipynb b/extralit/docs/tutorials/text_classification.ipynb index 4e8ac966a..cdeb068ad 100644 --- a/extralit/docs/tutorials/text_classification.ipynb +++ b/extralit/docs/tutorials/text_classification.ipynb @@ -28,14 +28,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Deploy the Argilla server" + "### Deploy the Extralit server" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "If you already have deployed Argilla, you can skip this step. Otherwise, you can quickly deploy Argilla following [this guide](../getting_started/quickstart.md)." + "If you already have deployed Extralit, you can skip this step. Otherwise, you can quickly deploy Extralit following [this guide](../getting_started/quickstart.md)." ] }, { @@ -49,7 +49,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To complete this tutorial, you need to install the Argilla SDK and a few third-party libraries via `pip`." + "To complete this tutorial, you need to install the Extralit SDK and a few third-party libraries via `pip`." ] }, { @@ -83,7 +83,7 @@ "metadata": {}, "outputs": [], "source": [ - "import argilla as rg\n", + "import extralit as ex\n", "\n", "from datasets import load_dataset, Dataset\n", "from setfit import SetFitModel, Trainer, get_templated_dataset, sample_dataset" @@ -93,7 +93,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You also need to connect to the Argilla server using the `api_url` and `api_key`." + "You also need to connect to the Extralit server using the `api_url` and `api_key`." ] }, { @@ -132,7 +132,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Configure and create the Argilla dataset" + "## Configure and create the Extralit dataset" ] }, { @@ -387,14 +387,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Evaluate with Argilla" + "## Evaluate with Extralit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now, we can start the annotation process. Just open the dataset in the Argilla UI and start annotating the records. If the suggestions are correct, you can just click on `Submit`. Otherwise, you can select the correct label." + "Now, we can start the annotation process. Just open the dataset in the Extralit UI and start annotating the records. If the suggestions are correct, you can just click on `Submit`. Otherwise, you can select the correct label." ] }, { @@ -419,7 +419,7 @@ "After the annotation, we will have a robust dataset to train the main model. In our case, we will fine-tune using SetFit. However, you can select the one that best fits your requirements. So, let's start by retrieving the annotated records.\n", "\n", "!!! note\n", - " Check this [how-to guide](../admin_guide/query.md) to know more about filtering and querying in Argilla. Also, you can check the Hugging Face docs on [fine-tuning an text classification model](https://huggingface.co/docs/transformers/en/tasks/sequence_classification)." + " Check this [how-to guide](../admin_guide/query.md) to know more about filtering and querying in Extralit. Also, you can check the Hugging Face docs on [fine-tuning an text classification model](https://huggingface.co/docs/transformers/en/tasks/sequence_classification)." ] }, { diff --git a/extralit/docs/tutorials/token_classification.ipynb b/extralit/docs/tutorials/token_classification.ipynb index 649c4c5a4..c9873c14a 100644 --- a/extralit/docs/tutorials/token_classification.ipynb +++ b/extralit/docs/tutorials/token_classification.ipynb @@ -28,14 +28,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Deploy the Argilla server" + "### Deploy the Extralit server" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "If you already have deployed Argilla, you can skip this step. Otherwise, you can quickly deploy Argilla following [this guide](../getting_started/quickstart.md)." + "If you already have deployed Extralit, you can skip this step. Otherwise, you can quickly deploy Extralit following [this guide](../getting_started/quickstart.md)." ] }, { @@ -49,7 +49,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "To complete this tutorial, you need to install the Argilla SDK and a few third-party libraries via `pip`.\n" + "To complete this tutorial, you need to install the Extralit SDK and a few third-party libraries via `pip`.\n" ] }, { @@ -85,7 +85,7 @@ "source": [ "import re\n", "\n", - "import argilla as rg\n", + "import extralit as ex\n", "\n", "import torch\n", "from datasets import load_dataset, Dataset, DatasetDict\n", @@ -98,7 +98,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "You also need to connect to the Argilla server with the `api_url` and `api_key`.\n" + "You also need to connect to the Extralit server with the `api_url` and `api_key`.\n" ] }, { @@ -137,7 +137,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Configure and create the Argilla dataset\n" + "## Configure and create the Extralit dataset\n" ] }, { @@ -242,7 +242,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will iterate over the Hugging Face dataset, adding data to the corresponding field in the `Record` object for the Argilla dataset. Then, we will easily add them to the dataset using `log`.\n" + "We will iterate over the Hugging Face dataset, adding data to the corresponding field in the `Record` object for the Extralit dataset. Then, we will easily add them to the dataset using `log`.\n" ] }, { @@ -298,7 +298,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Next, we will create a function to generate predictions using this general model, which can identify the specified labels without being pre-trained on them. The function will return a dictionary formatted with the necessary schema to add entities to our Argilla dataset. This schema includes the keys 'start’ and ‘end’ to indicate the indices where the span begins and ends, as well as ‘label’ for the entity label.\n" + "Next, we will create a function to generate predictions using this general model, which can identify the specified labels without being pre-trained on them. The function will return a dictionary formatted with the necessary schema to add entities to our Extralit dataset. This schema includes the keys 'start’ and ‘end’ to indicate the indices where the span begins and ends, as well as ‘label’ for the entity label.\n" ] }, { @@ -351,14 +351,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Evaluate with Argilla\n" + "## Evaluate with Extralit\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Now, we can start the annotation process. Just open the dataset in the Argilla UI and start annotating the records. If the suggestions are correct, you can just click on `Submit`. Otherwise, you can select the correct label.\n" + "Now, we can start the annotation process. Just open the dataset in the Extralit UI and start annotating the records. If the suggestions are correct, you can just click on `Submit`. Otherwise, you can select the correct label.\n" ] }, { @@ -383,7 +383,7 @@ "After the annotation, we will have a robust dataset to train our model for entity recognition. For our case, we will train a SpanMarker model, but you can select any model of your choice. So, let's start by retrieving the annotated records.\n", "\n", "!!! note\n", - " Check this [how-to guide](../admin_guide/query.md) to learn more about filtering and querying in Argilla. Also, you can check the Hugging Face docs on [fine-tuning an token classification model](https://huggingface.co/docs/transformers/en/tasks/token_classification).\n" + " Check this [how-to guide](../admin_guide/query.md) to learn more about filtering and querying in Extralit. Also, you can check the Hugging Face docs on [fine-tuning an token classification model](https://huggingface.co/docs/transformers/en/tasks/token_classification).\n" ] }, { @@ -661,7 +661,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "It's time to make the predictions! We will set a function that uses the `predict` method to get the suggested label. The model will infer the label based on the text. The function will return the spans in the corresponding structure for the Argilla dataset.\n" + "It's time to make the predictions! We will set a function that uses the `predict` method to get the suggested label. The model will infer the label based on the text. The function will return the spans in the corresponding structure for the Extralit dataset.\n" ] }, { diff --git a/extralit/docs/user_guide/overview.md b/extralit/docs/user_guide/overview.md index c50d542cb..3d1092f38 100644 --- a/extralit/docs/user_guide/overview.md +++ b/extralit/docs/user_guide/overview.md @@ -59,7 +59,7 @@ Use [8 - JT - LLM Extraction.ipynb](#) if the command line tool hasn't been impl ## Run the PDF Preprocessing Step -The PDF preprocessing step is a computationally intensive step that uses AI OCR algorithms to detect and correct table structures within documents. The PDF preprocessing step is run on the PDF files in the workspace, and the text OCR outputs are stored in the `preprocessing/` directory and the table outputs are automatically pushed as records to the `PDF-Preprocessing` Argilla dataset for manual correction. +The PDF preprocessing step is a computationally intensive step that uses AI OCR algorithms to detect and correct table structures within documents. The PDF preprocessing step is run on the PDF files in the workspace, and the text OCR outputs are stored in the `preprocessing/` directory and the table outputs are automatically pushed as records to the `PDF-Preprocessing` Extralit dataset for manual correction. ```bash pip install --upgrade "extralit-server[ocr,pdf]" @@ -69,7 +69,7 @@ Use [5 - JT - PDF Preprocessing.ipynb](#) if the command line tool hasn't been i ## Run the Initial LLM Extraction Step -After the manual corrections are made to the PDF preprocessing outputs, the LLM extraction step is run to extract the data fields defined in the schemas. The records are automatically pushed to the `2-Data-Extraction` Argilla dataset for manual correction. +After the manual corrections are made to the PDF preprocessing outputs, the LLM extraction step is run to extract the data fields defined in the schemas. The records are automatically pushed to the `2-Data-Extraction` Extralit dataset for manual correction. ```bash pip install --upgrade "extralit-server[llm]" diff --git a/extralit/mkdocs.yml b/extralit/mkdocs.yml index c0788e787..11b584f2b 100644 --- a/extralit/mkdocs.yml +++ b/extralit/mkdocs.yml @@ -211,7 +211,7 @@ nav: - admin_guide/webhooks.md - Webhooks internals: admin_guide/webhooks_internals.md - Use Markdown to format rich content: admin_guide/use_markdown_to_format_rich_content.md - - Migrate users, workspaces and datasets to Argilla V2: admin_guide/migrate_from_legacy_datasets.md + - Migrate users, workspaces and datasets to Extralit V2: admin_guide/migrate_from_legacy_datasets.md - Custom fields with layout templates: admin_guide/custom_fields.md - Tutorials: - tutorials/index.md @@ -220,7 +220,7 @@ nav: - Image classification: tutorials/image_classification.ipynb - Image preference: tutorials/image_preference.ipynb - API Reference: - - Argilla Python SDK: reference/extralit/ + - Extralit Python SDK: reference/extralit/ - FastAPI Server: - Server configuration: reference/extralit-server/configuration.md - OAuth2 configuration: reference/extralit-server/oauth2_configuration.md @@ -231,7 +231,7 @@ nav: - community/index.md - How to contribute?: community/contributor.md - Developer documentation: community/developer.md - - Add a new language to Argilla: community/adding_language.md + - Add a new language to Extralit: community/adding_language.md - Issue dashboard: community/popular_issues.md - Changelog: community/changelog.md - UI Demo ↗: diff --git a/extralit/src/extralit/_api/__init__.py b/extralit/src/extralit/_api/__init__.py index 5f517ed2a..5bcd00041 100644 --- a/extralit/src/extralit/_api/__init__.py +++ b/extralit/src/extralit/_api/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_api/_base.py b/extralit/src/extralit/_api/_base.py index 4994eeb4e..84dd7f3d0 100644 --- a/extralit/src/extralit/_api/_base.py +++ b/extralit/src/extralit/_api/_base.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_api/_client.py b/extralit/src/extralit/_api/_client.py index d6fab844f..e55ebf5d1 100644 --- a/extralit/src/extralit/_api/_client.py +++ b/extralit/src/extralit/_api/_client.py @@ -45,7 +45,7 @@ class ExtralitAPI: - """Argilla API access object.""" + """Extralit API access object.""" def __init__(self, http_client: httpx.Client): self.http_client = http_client @@ -107,12 +107,12 @@ def webhooks(self) -> "WebhooksAPI": class APIClient: """Initialize the SDK with the given API URL and API key. - This class is used to create an instance of the Argilla API client. + This class is used to create an instance of the Extralit API client. Args: - api_url (str, optional): The URL of the Argilla API. Defaults to the value of + api_url (str, optional): The URL of the Extralit API. Defaults to the value of the `EXTRALIT_API_URL` environment variable. - api_key (str, optional): The API key to authenticate with the Argilla API. Defaults to + api_key (str, optional): The API key to authenticate with the Extralit API. Defaults to the value of the `EXTRALIT_API_KEY` environment variable. timeout (int, optional): The timeout in seconds for the HTTP requests. Defaults to 60. **http_client_args: Additional keyword arguments to pass to the httpx.Client instance. diff --git a/extralit/src/extralit/_api/_datasets.py b/extralit/src/extralit/_api/_datasets.py index 0cc33d887..2ea75031c 100644 --- a/extralit/src/extralit/_api/_datasets.py +++ b/extralit/src/extralit/_api/_datasets.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_api/_fields.py b/extralit/src/extralit/_api/_fields.py index 236e22354..43b67ac63 100644 --- a/extralit/src/extralit/_api/_fields.py +++ b/extralit/src/extralit/_api/_fields.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_api/_http/__init__.py b/extralit/src/extralit/_api/_http/__init__.py index 5ab75a8f0..25f5d1d78 100644 --- a/extralit/src/extralit/_api/_http/__init__.py +++ b/extralit/src/extralit/_api/_http/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_api/_http/_helpers.py b/extralit/src/extralit/_api/_http/_helpers.py index c955f9e82..9191f8910 100644 --- a/extralit/src/extralit/_api/_http/_helpers.py +++ b/extralit/src/extralit/_api/_http/_helpers.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_api/_metadata.py b/extralit/src/extralit/_api/_metadata.py index 80d35470c..ffa1cda42 100644 --- a/extralit/src/extralit/_api/_metadata.py +++ b/extralit/src/extralit/_api/_metadata.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_api/_records.py b/extralit/src/extralit/_api/_records.py index 2aa26f2fd..c851ff8cd 100644 --- a/extralit/src/extralit/_api/_records.py +++ b/extralit/src/extralit/_api/_records.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_api/_token.py b/extralit/src/extralit/_api/_token.py index b06476385..6091b59ce 100644 --- a/extralit/src/extralit/_api/_token.py +++ b/extralit/src/extralit/_api/_token.py @@ -85,7 +85,7 @@ def _get_secret_from_google_colab(name: str) -> Optional[str]: # Something happen but we don't know what => recommend to open a GitHub issue warnings.warn( f"\nError while fetching {name} secret value from your vault: '{str(e)}'." - "\nYou are not authenticated with the Argilla in this notebook." + "\nYou are not authenticated with the Extralit in this notebook." "\nIf the error persists, please let us know by opening an issue on GitHub " "(https://github.com/extralit/extralit/issues/new)." ) diff --git a/extralit/src/extralit/_api/_users.py b/extralit/src/extralit/_api/_users.py index f203a19b4..c363e0c33 100644 --- a/extralit/src/extralit/_api/_users.py +++ b/extralit/src/extralit/_api/_users.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_api/_vectors.py b/extralit/src/extralit/_api/_vectors.py index dddbacd80..2df9ca3dd 100644 --- a/extralit/src/extralit/_api/_vectors.py +++ b/extralit/src/extralit/_api/_vectors.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_api/_webhooks.py b/extralit/src/extralit/_api/_webhooks.py index 7ecd676ac..4557b1be3 100644 --- a/extralit/src/extralit/_api/_webhooks.py +++ b/extralit/src/extralit/_api/_webhooks.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_exceptions/__init__.py b/extralit/src/extralit/_exceptions/__init__.py index c4aadd6e3..bd13ac5d3 100644 --- a/extralit/src/extralit/_exceptions/__init__.py +++ b/extralit/src/extralit/_exceptions/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_exceptions/_api.py b/extralit/src/extralit/_exceptions/_api.py index 2faf405ad..9ec1eaaa5 100644 --- a/extralit/src/extralit/_exceptions/_api.py +++ b/extralit/src/extralit/_exceptions/_api.py @@ -22,7 +22,7 @@ class ExtralitAPIError(ExtralitError): message = "Server error" def __init__(self, message: Optional[str] = None, status_code: int = 500): - """Base class for all Argilla API exceptions + """Base class for all Extralit API exceptions Args: message (str): The message to display when the exception is raised status_code (int): The status code of the response that caused the exception diff --git a/extralit/src/extralit/_exceptions/_serialization.py b/extralit/src/extralit/_exceptions/_serialization.py index 100cb4024..e1b3f6699 100644 --- a/extralit/src/extralit/_exceptions/_serialization.py +++ b/extralit/src/extralit/_exceptions/_serialization.py @@ -15,5 +15,5 @@ from extralit._exceptions._base import ExtralitError -class ArgillaSerializeError(ExtralitError): +class ExtralitSerializeError(ExtralitError): pass diff --git a/extralit/src/extralit/_helpers/__init__.py b/extralit/src/extralit/_helpers/__init__.py index 1d5dc6665..275b7f245 100644 --- a/extralit/src/extralit/_helpers/__init__.py +++ b/extralit/src/extralit/_helpers/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_helpers/_dataclasses.py b/extralit/src/extralit/_helpers/_dataclasses.py index d05df25fd..eed606f0e 100644 --- a/extralit/src/extralit/_helpers/_dataclasses.py +++ b/extralit/src/extralit/_helpers/_dataclasses.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_helpers/_deploy.py b/extralit/src/extralit/_helpers/_deploy.py index 11c11d864..8d15c17fc 100644 --- a/extralit/src/extralit/_helpers/_deploy.py +++ b/extralit/src/extralit/_helpers/_deploy.py @@ -44,19 +44,19 @@ def deploy_on_spaces( private: Optional[Union[bool, None]] = False, ) -> "Extralit": """ - Deploys Argilla on Hugging Face Spaces. + Deploys Extralit on Hugging Face Spaces. Args: - api_key (str): The Argilla API key to be defined for the owner user and creator of the Space. - repo_name (Optional[str]): The ID of the repository where Argilla will be deployed. Defaults to "extralit". - org_name (Optional[str]): The name of the organization where Argilla will be deployed. Defaults to None. + api_key (str): The Extralit API key to be defined for the owner user and creator of the Space. + repo_name (Optional[str]): The ID of the repository where Extralit will be deployed. Defaults to "extralit". + org_name (Optional[str]): The name of the organization where Extralit will be deployed. Defaults to None. hf_token (Optional[Union[str, None]]): The Hugging Face authentication token. Defaults to None. space_storage (Optional[Union[str, SpaceStorage]]): The persistent storage size for the space. Defaults to None without persistent storage. space_hardware (Optional[Union[str, SpaceHardware]]): The hardware configuration for the space. Defaults to "cpu-basic" with downtime after 48 hours of inactivity. private (Optional[Union[bool, None]]): Whether the space should be private. Defaults to False. Returns: - Argilla: The Argilla client. + Extralit: The Extralit client. Example: ```Python @@ -111,7 +111,7 @@ def deploy_on_spaces( api_url: str = ( f"https://{cls._sanitize_url_component(org_name)}-{cls._sanitize_url_component(repo_name)}.hf.space/" ) - cls._log_message(cls, message=f"Argilla is being deployed at: {repo_url}") + cls._log_message(cls, message=f"Extralit is being deployed at: {repo_url}") while cls._is_building(hf_api.get_space_runtime(repo_id=repo_id).stage): time.sleep(_SLEEP_TIME) cls._log_message(cls, message=f"Deployment in progress. Waiting {_SLEEP_TIME} seconds.") diff --git a/extralit/src/extralit/_helpers/_iterator.py b/extralit/src/extralit/_helpers/_iterator.py index 58422e8ea..d7782c40b 100644 --- a/extralit/src/extralit/_helpers/_iterator.py +++ b/extralit/src/extralit/_helpers/_iterator.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_helpers/_media.py b/extralit/src/extralit/_helpers/_media.py index 21153a4e6..01a7edc02 100644 --- a/extralit/src/extralit/_helpers/_media.py +++ b/extralit/src/extralit/_helpers/_media.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_helpers/_resource_repr.py b/extralit/src/extralit/_helpers/_resource_repr.py index 7c2ce8145..0166a36c5 100644 --- a/extralit/src/extralit/_helpers/_resource_repr.py +++ b/extralit/src/extralit/_helpers/_resource_repr.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -74,12 +74,12 @@ def _represent_as_html(self, resources) -> str: class NotebookHTMLReprMixin: def __repr__(self) -> str: - """Display the Argilla space in a notebook or Google Colab.""" + """Display the Extralit space in a notebook or Google Colab.""" if is_notebook() or is_google_colab(): from IPython.display import IFrame, display display(IFrame(src=self.api_url, frameborder=0, width=850, height=600)) - return f"Argilla has been deployed at: {self.api_url}" + return f"Extralit has been deployed at: {self.api_url}" else: return super().__repr__() diff --git a/extralit/src/extralit/_helpers/_uuid.py b/extralit/src/extralit/_helpers/_uuid.py index f3a0b5961..959898364 100644 --- a/extralit/src/extralit/_helpers/_uuid.py +++ b/extralit/src/extralit/_helpers/_uuid.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_base.py b/extralit/src/extralit/_models/_base.py index 5cefb6955..6721a0d7f 100644 --- a/extralit/src/extralit/_models/_base.py +++ b/extralit/src/extralit/_models/_base.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_dataset.py b/extralit/src/extralit/_models/_dataset.py index 200dbd6d4..52bac05a0 100644 --- a/extralit/src/extralit/_models/_dataset.py +++ b/extralit/src/extralit/_models/_dataset.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_dataset_progress.py b/extralit/src/extralit/_models/_dataset_progress.py index a2eae9093..993bbb223 100644 --- a/extralit/src/extralit/_models/_dataset_progress.py +++ b/extralit/src/extralit/_models/_dataset_progress.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_documents.py b/extralit/src/extralit/_models/_documents.py index 39c1f9d50..bcdd4990a 100644 --- a/extralit/src/extralit/_models/_documents.py +++ b/extralit/src/extralit/_models/_documents.py @@ -79,7 +79,7 @@ def from_file( ) def to_server_payload(self) -> Dict[str, Any]: - """Method that will be used to create the payload that will be sent to Argilla + """Method that will be used to create the payload that will be sent to Extralit to create a field in the `FeedbackDataset`. """ json = { diff --git a/extralit/src/extralit/_models/_record/__init__.py b/extralit/src/extralit/_models/_record/__init__.py index 20542d78f..ebe834147 100644 --- a/extralit/src/extralit/_models/_record/__init__.py +++ b/extralit/src/extralit/_models/_record/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_record/_metadata.py b/extralit/src/extralit/_models/_record/_metadata.py index 28318f666..af2f00fb2 100644 --- a/extralit/src/extralit/_models/_record/_metadata.py +++ b/extralit/src/extralit/_models/_record/_metadata.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_record/_record.py b/extralit/src/extralit/_models/_record/_record.py index 63e5a623e..5da687a0e 100644 --- a/extralit/src/extralit/_models/_record/_record.py +++ b/extralit/src/extralit/_models/_record/_record.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -107,7 +107,7 @@ def _validate_chat_field(cls, chat_field: List[Dict[str, str]]) -> List[ChatFiel raise ValueError("Chat field values must contain 'role' and 'content' keys.") if not all(key in ["role", "content"] for key in message.keys()): warnings.warn( - "Chat field values should only contain 'role' and 'content' keys. Other keys will be ignored by Argilla." + "Chat field values should only contain 'role' and 'content' keys. Other keys will be ignored by Extralit." ) message = {key: value for key, value in message.items() if key in ["role", "content"]} validated_chat_field_values.append(ChatFieldValue(**message)) diff --git a/extralit/src/extralit/_models/_record/_response.py b/extralit/src/extralit/_models/_record/_response.py index 7b685ca0d..2b786d3ef 100644 --- a/extralit/src/extralit/_models/_record/_response.py +++ b/extralit/src/extralit/_models/_record/_response.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -42,7 +42,7 @@ def user_id_must_have_value(cls, user_id: Optional[UUID]): if not user_id: warnings.warn( "`user_id` not provided, so it will be set to `None`. Which is not an" - " issue, unless you're planning to log the response in Argilla, as" + " issue, unless you're planning to log the response in Extralit, as" " it will be automatically set to the active `user_id`.", ) return user_id diff --git a/extralit/src/extralit/_models/_record/_suggestion.py b/extralit/src/extralit/_models/_record/_suggestion.py index 53186a5d6..e0ba48fa1 100644 --- a/extralit/src/extralit/_models/_record/_suggestion.py +++ b/extralit/src/extralit/_models/_record/_suggestion.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_record/_vector.py b/extralit/src/extralit/_models/_record/_vector.py index 4ee5e888f..e5a2c2c9f 100644 --- a/extralit/src/extralit/_models/_record/_vector.py +++ b/extralit/src/extralit/_models/_record/_vector.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_resource.py b/extralit/src/extralit/_models/_resource.py index f048b3de3..e382ba761 100644 --- a/extralit/src/extralit/_models/_resource.py +++ b/extralit/src/extralit/_models/_resource.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_search.py b/extralit/src/extralit/_models/_search.py index f0a39a310..1c75710cc 100644 --- a/extralit/src/extralit/_models/_search.py +++ b/extralit/src/extralit/_models/_search.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_settings/__init__.py b/extralit/src/extralit/_models/_settings/__init__.py index 20542d78f..ebe834147 100644 --- a/extralit/src/extralit/_models/_settings/__init__.py +++ b/extralit/src/extralit/_models/_settings/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_settings/_fields.py b/extralit/src/extralit/_models/_settings/_fields.py index 57b16d575..49ef4eb8d 100644 --- a/extralit/src/extralit/_models/_settings/_fields.py +++ b/extralit/src/extralit/_models/_settings/_fields.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_settings/_metadata.py b/extralit/src/extralit/_models/_settings/_metadata.py index f4598a9f4..3bdc08318 100644 --- a/extralit/src/extralit/_models/_settings/_metadata.py +++ b/extralit/src/extralit/_models/_settings/_metadata.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -84,7 +84,7 @@ class FloatMetadataPropertySettings(NumericMetadataPropertySettings): class MetadataFieldModel(ResourceModel): - """The schema definition of a metadata field in an Argilla dataset.""" + """The schema definition of a metadata field in an Extralit dataset.""" name: str settings: MetadataPropertySettings diff --git a/extralit/src/extralit/_models/_settings/_task_distribution.py b/extralit/src/extralit/_models/_settings/_task_distribution.py index d44f1851c..e2c56f8d6 100644 --- a/extralit/src/extralit/_models/_settings/_task_distribution.py +++ b/extralit/src/extralit/_models/_settings/_task_distribution.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_settings/_vectors.py b/extralit/src/extralit/_models/_settings/_vectors.py index f519102fb..82a6189de 100644 --- a/extralit/src/extralit/_models/_settings/_vectors.py +++ b/extralit/src/extralit/_models/_settings/_vectors.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_user.py b/extralit/src/extralit/_models/_user.py index 2e1192d84..062365262 100644 --- a/extralit/src/extralit/_models/_user.py +++ b/extralit/src/extralit/_models/_user.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_webhook.py b/extralit/src/extralit/_models/_webhook.py index e95b3261a..97edbf284 100644 --- a/extralit/src/extralit/_models/_webhook.py +++ b/extralit/src/extralit/_models/_webhook.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_models/_workspace.py b/extralit/src/extralit/_models/_workspace.py index 1efffb93f..50b1e0d77 100644 --- a/extralit/src/extralit/_models/_workspace.py +++ b/extralit/src/extralit/_models/_workspace.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/_resource.py b/extralit/src/extralit/_resource.py index 622d78190..37b39a235 100644 --- a/extralit/src/extralit/_resource.py +++ b/extralit/src/extralit/_resource.py @@ -21,7 +21,7 @@ except ImportError: from typing_extensions import Self -from extralit._exceptions import ArgillaSerializeError +from extralit._exceptions import ExtralitSerializeError from extralit._helpers import LoggingMixin if TYPE_CHECKING: @@ -124,13 +124,13 @@ def serialize(self) -> dict[str, Any]: try: return self.api_model().model_dump() except Exception as e: - raise ArgillaSerializeError(f"Failed to serialize the resource. {e.__class__.__name__}") from e + raise ExtralitSerializeError(f"Failed to serialize the resource. {e.__class__.__name__}") from e def serialize_json(self) -> str: try: return self.api_model().model_dump_json() except Exception as e: - raise ArgillaSerializeError(f"Failed to serialize the resource. {e.__class__.__name__}") from e + raise ExtralitSerializeError(f"Failed to serialize the resource. {e.__class__.__name__}") from e def _update_last_api_call(self): self._last_api_call = datetime.utcnow() diff --git a/extralit/src/extralit/cli/__init__.py b/extralit/src/extralit/cli/__init__.py index 4907bb375..ebe834147 100644 --- a/extralit/src/extralit/cli/__init__.py +++ b/extralit/src/extralit/cli/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -10,4 +10,4 @@ # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and -# limitations under the License. \ No newline at end of file +# limitations under the License. diff --git a/extralit/src/extralit/cli/callback.py b/extralit/src/extralit/cli/callback.py index 7b7f76940..c47234107 100644 --- a/extralit/src/extralit/cli/callback.py +++ b/extralit/src/extralit/cli/callback.py @@ -20,7 +20,7 @@ def echo_in_panel(text, title=None, title_align="center", success=True): - """Echoes a message in a rich panel with Argilla theme.""" + """Echoes a message in a rich panel with Extralit theme.""" from extralit.cli.rich import get_themed_panel from rich.console import Console @@ -34,7 +34,7 @@ def echo_in_panel(text, title=None, title_align="center", success=True): def init_callback() -> "Extralit": - """Initialize Argilla client if user is logged in, otherwise exit.""" + """Initialize Extralit client if user is logged in, otherwise exit.""" from extralit.client.login import ExtralitCredentials if not ExtralitCredentials.exists(): diff --git a/extralit/src/extralit/cli/extraction/export.py b/extralit/src/extralit/cli/extraction/export.py index 15882d40e..9e222a699 100644 --- a/extralit/src/extralit/cli/extraction/export.py +++ b/extralit/src/extralit/cli/extraction/export.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -from enum import Enum -from typing import Dict, Optional import typer @@ -23,14 +21,16 @@ def get_minio_client(): """Temporary stub for minio client.""" return None + def export_data( ctx: typer.Context, ) -> None: """Export data from a dataset. - + This is a stub implementation that will be replaced in Phase 3. """ from extralit.cli.rich import echo_in_panel + echo_in_panel( "This command is not fully implemented yet. It will be available in a future release.", title="Coming Soon", diff --git a/extralit/src/extralit/cli/info/__init__.py b/extralit/src/extralit/cli/info/__init__.py index 97f71bf3d..f2b955200 100644 --- a/extralit/src/extralit/cli/info/__init__.py +++ b/extralit/src/extralit/cli/info/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/cli/login/__init__.py b/extralit/src/extralit/cli/login/__init__.py index 396ae95a4..f2b955200 100644 --- a/extralit/src/extralit/cli/login/__init__.py +++ b/extralit/src/extralit/cli/login/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,4 +15,4 @@ from .__main__ import app if __name__ == "__main__": - app() \ No newline at end of file + app() diff --git a/extralit/src/extralit/cli/logout/__init__.py b/extralit/src/extralit/cli/logout/__init__.py index 396ae95a4..f2b955200 100644 --- a/extralit/src/extralit/cli/logout/__init__.py +++ b/extralit/src/extralit/cli/logout/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,4 +15,4 @@ from .__main__ import app if __name__ == "__main__": - app() \ No newline at end of file + app() diff --git a/extralit/src/extralit/cli/rich.py b/extralit/src/extralit/cli/rich.py index fe97cdc93..76e9f1d38 100644 --- a/extralit/src/extralit/cli/rich.py +++ b/extralit/src/extralit/cli/rich.py @@ -42,7 +42,7 @@ def get_themed_panel( debug: bool = False, ) -> Panel: """ - Returns a rich panel with Argilla theme. + Returns a rich panel with Extralit theme. Args: renderable: The content to display @@ -53,7 +53,7 @@ def get_themed_panel( debug: If True and exception is provided, include a minimal stack trace Returns: - A rich panel with Argilla theme + A rich panel with Extralit theme """ content = renderable diff --git a/extralit/src/extralit/cli/schemas/__init__.py b/extralit/src/extralit/cli/schemas/__init__.py index 97f71bf3d..f2b955200 100644 --- a/extralit/src/extralit/cli/schemas/__init__.py +++ b/extralit/src/extralit/cli/schemas/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/cli/training/__init__.py b/extralit/src/extralit/cli/training/__init__.py index 396ae95a4..f2b955200 100644 --- a/extralit/src/extralit/cli/training/__init__.py +++ b/extralit/src/extralit/cli/training/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,4 +15,4 @@ from .__main__ import app if __name__ == "__main__": - app() \ No newline at end of file + app() diff --git a/extralit/src/extralit/cli/users/__init__.py b/extralit/src/extralit/cli/users/__init__.py index 396ae95a4..f2b955200 100644 --- a/extralit/src/extralit/cli/users/__init__.py +++ b/extralit/src/extralit/cli/users/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,4 +15,4 @@ from .__main__ import app if __name__ == "__main__": - app() \ No newline at end of file + app() diff --git a/extralit/src/extralit/cli/whoami/__init__.py b/extralit/src/extralit/cli/whoami/__init__.py index 396ae95a4..f2b955200 100644 --- a/extralit/src/extralit/cli/whoami/__init__.py +++ b/extralit/src/extralit/cli/whoami/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,4 +15,4 @@ from .__main__ import app if __name__ == "__main__": - app() \ No newline at end of file + app() diff --git a/extralit/src/extralit/cli/workspaces/__init__.py b/extralit/src/extralit/cli/workspaces/__init__.py index 396ae95a4..f2b955200 100644 --- a/extralit/src/extralit/cli/workspaces/__init__.py +++ b/extralit/src/extralit/cli/workspaces/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,4 +15,4 @@ from .__main__ import app if __name__ == "__main__": - app() \ No newline at end of file + app() diff --git a/extralit/src/extralit/client/core.py b/extralit/src/extralit/client/core.py index ed4a19bb6..217d0a833 100644 --- a/extralit/src/extralit/client/core.py +++ b/extralit/src/extralit/client/core.py @@ -29,7 +29,7 @@ class Extralit(_api.APIClient, SpacesDeploymentMixin, NotebookHTMLReprMixin): - """Argilla API client. This is the main entry point to interact with the API. + """Extralit API client. This is the main entry point to interact with the API. Attributes: workspaces: A collection of workspaces. @@ -38,7 +38,7 @@ class Extralit(_api.APIClient, SpacesDeploymentMixin, NotebookHTMLReprMixin): me: The current user. """ - # Default instance of Argilla + # Default instance of Extralit _default_client: Optional["Extralit"] = None def __init__( @@ -49,18 +49,18 @@ def __init__( retries: int = DEFAULT_HTTP_CONFIG.retries, **http_client_args, ) -> None: - """Inits the `Argilla` client. + """Inits the `Extralit` client. Args: - api_url: the URL of the Argilla API. If not provided, then the value will try + api_url: the URL of the Extralit API. If not provided, then the value will try to be set from `EXTRALIT_API_URL` environment variable. Defaults to `"http://localhost:6900"`. - api_key: the key to be used to authenticate in the Argilla API. If not provided, + api_key: the key to be used to authenticate in the Extralit API. If not provided, then the value will try to be set from `EXTRALIT_API_KEY` environment variable. Defaults to `None`. - timeout: the maximum time in seconds to wait for a request to the Argilla API + timeout: the maximum time in seconds to wait for a request to the Extralit API to be completed before raising an exception. Defaults to `60`. - retries: the number of times to retry the HTTP connection to the Argilla API + retries: the number of times to retry the HTTP connection to the Extralit API before raising an exception. Defaults to `5`. """ super().__init__(api_url=api_url, api_key=api_key, timeout=timeout, retries=retries, **http_client_args) @@ -82,14 +82,14 @@ def from_credentials( or from the credentials file. Args: - api_url: The URL of the Argilla server. + api_url: The URL of the Extralit server. api_key: The API key for authentication. workspace: Optional default workspace. extra_headers: Optional extra headers for API requests. **kwargs: Additional keyword arguments to pass to the client. Returns: - Argilla: An initialized Argilla client. + Extralit: An initialized Extralit client. """ from extralit.client.login import ExtralitCredentials @@ -152,12 +152,12 @@ def me(self) -> "User": @classmethod def _set_default(cls, client: "Extralit") -> None: - """Set the default instance of Argilla.""" + """Set the default instance of Extralit.""" cls._default_client = client @classmethod def _get_default(cls) -> "Extralit": - """Get the default instance of Argilla. If it doesn't exist, create a new one.""" + """Get the default instance of Extralit. If it doesn't exist, create a new one.""" if cls._default_client is None: cls._default_client = Extralit() return cls._default_client diff --git a/extralit/src/extralit/client/login.py b/extralit/src/extralit/client/login.py index 788ca4eb2..3e8168677 100644 --- a/extralit/src/extralit/client/login.py +++ b/extralit/src/extralit/client/login.py @@ -69,7 +69,7 @@ def load(cls) -> "ExtralitCredentials": """Load credentials from file. Returns: - ArgillaCredentials: The loaded credentials. + ExtralitCredentials: The loaded credentials. Raises: FileNotFoundError: If credentials file doesn't exist. diff --git a/extralit/src/extralit/client/resources.py b/extralit/src/extralit/client/resources.py index 3cdd1d116..e28165157 100644 --- a/extralit/src/extralit/client/resources.py +++ b/extralit/src/extralit/client/resources.py @@ -90,7 +90,7 @@ def __len__(self) -> int: return len(self._api.list()) def add(self, user: "User") -> "User": - """Add a new user to Argilla. + """Add a new user to Extralit. Args: user: User object. @@ -187,7 +187,7 @@ def __len__(self) -> int: return len(self._api.list()) def add(self, workspace: "Workspace") -> "Workspace": - """Add a new workspace to the Argilla platform. + """Add a new workspace to the Extralit platform. Args: workspace: Workspace object. @@ -315,7 +315,7 @@ def __len__(self) -> int: def add(self, dataset: "Dataset") -> "Dataset": """ - Add a new dataset to the Argilla platform + Add a new dataset to the Extralit platform Args: dataset: Dataset object. @@ -381,7 +381,7 @@ def __len__(self) -> int: return len(self._api.list()) def add(self, webhook: "Webhook") -> "Webhook": - """Add a new webhook to the Argilla platform. + """Add a new webhook to the Extralit platform. Args: webhook: Webhook object. diff --git a/extralit/src/extralit/datasets/__init__.py b/extralit/src/extralit/datasets/__init__.py index dfa6ad9f8..2384a636e 100644 --- a/extralit/src/extralit/datasets/__init__.py +++ b/extralit/src/extralit/datasets/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/datasets/_io/__init__.py b/extralit/src/extralit/datasets/_io/__init__.py index 9171cef3b..5749994e2 100644 --- a/extralit/src/extralit/datasets/_io/__init__.py +++ b/extralit/src/extralit/datasets/_io/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/datasets/_io/_disk.py b/extralit/src/extralit/datasets/_io/_disk.py index 6d950b144..3068c5b18 100644 --- a/extralit/src/extralit/datasets/_io/_disk.py +++ b/extralit/src/extralit/datasets/_io/_disk.py @@ -77,7 +77,7 @@ def from_disk( path (str): The path to the directory containing the dataset model, settings and records. name (str, optional): The name to assign to the new dataset. Defaults to None and the dataset's source name is used, unless it already exists, in which case a unique UUID is appended. workspace (Union[Workspace, str], optional): The workspace to import the dataset to. Defaults to None and default workspace is used. - client (Argilla, optional): The client to use for the import. Defaults to None and the default client is used. + client (Extralit, optional): The client to use for the import. Defaults to None and the default client is used. with_records: whether to load the records from the Hugging Face dataset. Defaults to `True`. """ diff --git a/extralit/src/extralit/datasets/_io/_hub.py b/extralit/src/extralit/datasets/_io/_hub.py index 282b81b46..15851ae4d 100644 --- a/extralit/src/extralit/datasets/_io/_hub.py +++ b/extralit/src/extralit/datasets/_io/_hub.py @@ -66,7 +66,7 @@ def to_hub( from huggingface_hub import DatasetCardData, HfApi from extralit.datasets._io.card import ( - ArgillaDatasetCard, + ExtralitDatasetCard, size_categories_parser, ) @@ -88,7 +88,7 @@ def to_hub( sample_argilla_record = next(iter(self.records(with_suggestions=True, with_responses=True))) sample_huggingface_record = self._get_sample_hf_record(hfds) if with_records else None dataset_size = len(hfds) if with_records else 0 - card = ArgillaDatasetCard.from_template( + card = ExtralitDatasetCard.from_template( card_data=DatasetCardData( size_categories=size_categories_parser(dataset_size), tags=["rlfh", "extralit", "human-feedback"], @@ -230,7 +230,7 @@ def _log_dataset_records(hf_dataset: "HFDataset", dataset: "Dataset"): elif col.endswith("status"): response_questions[question_name]["status"] = hf_dataset[col] - # Check if all user ids are known to this Argilla client + # Check if all user ids are known to this Extralit client known_users_ids = [user.id for user in dataset._client.users] unknown_user_ids = set(user_ids.keys()) - set(known_users_ids) my_user = dataset._client.me @@ -284,7 +284,7 @@ def _log_dataset_records(hf_dataset: "HFDataset", dataset: "Dataset"): dataset.records.log(records=records) except (RecordsIngestionError, UnprocessableEntityError) as e: raise SettingsError( - message=f"Failed to load records from Hugging Face dataset. Defined settings do not match dataset schema. Hugging face dataset features: {hf_dataset.features}. Argilla dataset settings : {dataset.settings}" + message=f"Failed to load records from Hugging Face dataset. Defined settings do not match dataset schema. Hugging face dataset features: {hf_dataset.features}. Extralit dataset settings : {dataset.settings}" ) from e @staticmethod diff --git a/extralit/src/extralit/datasets/_io/card/__init__.py b/extralit/src/extralit/datasets/_io/card/__init__.py index c208821f5..3e5fa6826 100644 --- a/extralit/src/extralit/datasets/_io/card/__init__.py +++ b/extralit/src/extralit/datasets/_io/card/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,7 +12,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -from extralit.datasets._io.card._dataset_card import ArgillaDatasetCard +from extralit.datasets._io.card._dataset_card import ExtralitDatasetCard from extralit.datasets._io.card._parser import size_categories_parser -__all__ = ["ArgillaDatasetCard", "size_categories_parser"] +__all__ = ["ExtralitDatasetCard", "size_categories_parser"] diff --git a/extralit/src/extralit/datasets/_io/card/_dataset_card.py b/extralit/src/extralit/datasets/_io/card/_dataset_card.py index 4138db98a..027cd4349 100644 --- a/extralit/src/extralit/datasets/_io/card/_dataset_card.py +++ b/extralit/src/extralit/datasets/_io/card/_dataset_card.py @@ -19,8 +19,8 @@ TEMPLATE_EXTRALIT_DATASET_CARD_PATH = Path(__file__).parent / "argilla_template.md" -class ArgillaDatasetCard(DatasetCard): - """`ArgillaDatasetCard` has been created similarly to `DatasetCard` from +class ExtralitDatasetCard(DatasetCard): + """`ExtralitDatasetCard` has been created similarly to `DatasetCard` from `huggingface_hub` but with a different template. The template is located at `argilla/client/feedback/integrations/huggingface/card/argilla_template.md`. """ diff --git a/extralit/src/extralit/datasets/_io/card/_parser.py b/extralit/src/extralit/datasets/_io/card/_parser.py index 53aae5f58..e255c6d25 100644 --- a/extralit/src/extralit/datasets/_io/card/_parser.py +++ b/extralit/src/extralit/datasets/_io/card/_parser.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/datasets/_io/card/argilla_template.md b/extralit/src/extralit/datasets/_io/card/argilla_template.md index 3c88005fa..c0e0f95aa 100644 --- a/extralit/src/extralit/datasets/_io/card/argilla_template.md +++ b/extralit/src/extralit/datasets/_io/card/argilla_template.md @@ -22,20 +22,20 @@ - **Point of Contact:** {{ point_of_contact }} {% endif %} -This dataset has been created with [Argilla](https://github.com/argilla-io/argilla). As shown in the sections below, this dataset can be loaded into your Argilla server as explained in [Load with Argilla](#load-with-argilla), or used directly with the `datasets` library in [Load with `datasets`](#load-with-datasets). +This dataset has been created with [Extralit](https://github.com/argilla-io/argilla). As shown in the sections below, this dataset can be loaded into your Extralit server as explained in [Load with Extralit](#load-with-argilla), or used directly with the `datasets` library in [Load with `datasets`](#load-with-datasets). -## Using this dataset with Argilla +## Using this dataset with Extralit -To load with Argilla, you'll just need to install Argilla as `pip install extralit --upgrade` and then use the following code: +To load with Extralit, you'll just need to install Extralit as `pip install extralit --upgrade` and then use the following code: ```python -import argilla as rg +import extralit as ex ds = ex.Dataset.from_hub("{{ repo_id }}", settings="auto") ``` -This will load the settings and records from the dataset repository and push them to you Argilla server for exploration and annotation. +This will load the settings and records from the dataset repository and push them to you Extralit server for exploration and annotation. ## Using this dataset with `datasets` @@ -47,17 +47,17 @@ from datasets import load_dataset ds = load_dataset("{{ repo_id }}") ``` -This will only load the records of the dataset, but not the Argilla settings. +This will only load the records of the dataset, but not the Extralit settings. ## Dataset Structure This dataset repo contains: * Dataset records in a format compatible with HuggingFace `datasets`. These records will be loaded automatically when using `ex.Dataset.from_hub` and can be loaded independently using the `datasets` library via `load_dataset`. -* The [annotation guidelines](#annotation-guidelines) that have been used for building and curating the dataset, if they've been defined in Argilla. -* A dataset configuration folder conforming to the Argilla dataset format in `.argilla`. +* The [annotation guidelines](#annotation-guidelines) that have been used for building and curating the dataset, if they've been defined in Extralit. +* A dataset configuration folder conforming to the Extralit dataset format in `.argilla`. -The dataset is created in Argilla with: **fields**, **questions**, **suggestions**, **metadata**, **vectors**, and **guidelines**. +The dataset is created in Extralit with: **fields**, **questions**, **suggestions**, **metadata**, **vectors**, and **guidelines**. ### Fields @@ -101,7 +101,7 @@ The **vectors** contain a vector representation of the record that can be used i ### Data Instances -An example of a dataset instance in Argilla looks as follows: +An example of a dataset instance in Extralit looks as follows: ```json {{ argilla_record | tojson(indent=4) }} diff --git a/extralit/src/extralit/datasets/_resource.py b/extralit/src/extralit/datasets/_resource.py index bb00250c7..8e34dc771 100644 --- a/extralit/src/extralit/datasets/_resource.py +++ b/extralit/src/extralit/datasets/_resource.py @@ -35,7 +35,7 @@ class Dataset(Resource, HubImportExportMixin, DiskImportExportMixin): - """Class for interacting with Argilla Datasets + """Class for interacting with Extralit Datasets Attributes: name: Name of the dataset. @@ -60,13 +60,13 @@ def __init__( settings: Optional[Settings] = None, client: Optional["Extralit"] = None, ) -> None: - """Initializes a new Argilla Dataset object with the given parameters. + """Initializes a new Extralit Dataset object with the given parameters. Parameters: name (str): Name of the dataset. Replaced by random UUID if not assigned. workspace (UUID): Workspace of the dataset. Default is the first workspace found in the server. settings (Settings): Settings class to be used to configure the dataset. - client (Argilla): Instance of Argilla to connect with the server. Default is the default client. + client (Extralit): Instance of Extralit to connect with the server. Default is the default client. """ client = client or Extralit._get_default() super().__init__(client=client, api=client.api.datasets) diff --git a/extralit/src/extralit/documents/_resource.py b/extralit/src/extralit/documents/_resource.py index 58305c391..d2b985299 100644 --- a/extralit/src/extralit/documents/_resource.py +++ b/extralit/src/extralit/documents/_resource.py @@ -35,7 +35,7 @@ class Document(Resource): - """Class for interacting with Argilla documents. + """Class for interacting with Extralit documents. Attributes: workspace_id (UUID): The ID of the workspace that contains this document. @@ -72,7 +72,7 @@ def __init__( pmid (str): The PubMed ID of the document. doi (str): The DOI of the document. id (UUID): The document ID. If provided, the document will be created with this ID. - client (Argilla): The client used to interact with Argilla. + client (Extralit): The client used to interact with Extralit. Returns: Document: The initialized document object. @@ -114,7 +114,7 @@ def from_file( id: The document ID. If provided, the document will be created with this ID. pmid: The PubMed ID of the document. doi: The DOI of the document. - client: The client used to interact with Argilla. + client: The client used to interact with Extralit. Returns: Document: The created document object. @@ -165,7 +165,7 @@ def from_pmid( pmid: The PubMed ID. reference: A reference identifier for the document. workspace_id: The workspace ID to which this document belongs. - client: The client used to interact with Argilla. + client: The client used to interact with Extralit. Returns: Document: The created document object. @@ -192,7 +192,7 @@ def from_doi( doi: The DOI. reference: A reference identifier for the document. workspace_id: The workspace ID to which this document belongs. - client: The client used to interact with Argilla. + client: The client used to interact with Extralit. Returns: Document: The created document object. @@ -210,7 +210,7 @@ def from_model(cls, model: DocumentModel, client: "Extralit") -> "Document": Args: model: The document model. - client: The client used to interact with Argilla. + client: The client used to interact with Extralit. Returns: Document: The created document object. @@ -241,7 +241,7 @@ def get( Args: id: The document ID. pmid: The PubMed ID. - client: The client used to interact with Argilla. + client: The client used to interact with Extralit. Returns: Document: The document object. diff --git a/extralit/src/extralit/markdown/__init__.py b/extralit/src/extralit/markdown/__init__.py index 941af42d2..c95d6d56c 100644 --- a/extralit/src/extralit/markdown/__init__.py +++ b/extralit/src/extralit/markdown/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/markdown/chat.py b/extralit/src/extralit/markdown/chat.py index e4fb7595b..bb91d51ee 100644 --- a/extralit/src/extralit/markdown/chat.py +++ b/extralit/src/extralit/markdown/chat.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/markdown/media.py b/extralit/src/extralit/markdown/media.py index c12bc2b08..0408c3140 100644 --- a/extralit/src/extralit/markdown/media.py +++ b/extralit/src/extralit/markdown/media.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/records/__init__.py b/extralit/src/extralit/records/__init__.py index 4830f7e21..f758de578 100644 --- a/extralit/src/extralit/records/__init__.py +++ b/extralit/src/extralit/records/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/records/_dataset_records.py b/extralit/src/extralit/records/_dataset_records.py index f4c3d6e5a..4c9b3fe15 100644 --- a/extralit/src/extralit/records/_dataset_records.py +++ b/extralit/src/extralit/records/_dataset_records.py @@ -167,7 +167,7 @@ class DatasetRecords(Iterable[Record], LoggingMixin): by adding, updating, fetching, querying, deleting, and exporting records. Attributes: - client (Argilla): The Argilla client object. + client (Extralit): The Extralit client object. dataset (Dataset): The dataset object. """ @@ -181,7 +181,7 @@ def __init__( ): """Initializes a DatasetRecords object with a client and a dataset. Args: - client: An Argilla client object. + client: An Extralit client object. dataset: A Dataset object. """ self.__client = client @@ -260,8 +260,8 @@ def log( Parameters: records: A list of `Record` objects, a Hugging Face Dataset, or a list of dictionaries representing the records. If records are defined as a dictionaries or a dataset, the keys/ column names should correspond to the - fields in the Argilla dataset's fields and questions. `id` should be provided to identify the records when updating. - mapping: A dictionary that maps the keys/ column names in the records to the fields or questions in the Argilla dataset. + fields in the Extralit dataset's fields and questions. `id` should be provided to identify the records when updating. + mapping: A dictionary that maps the keys/ column names in the records to the fields or questions in the Extralit dataset. To assign an incoming key or column to multiple fields or questions, provide a list or tuple of field or question names. user_id: The user id to be associated with the records' response. If not provided, the current user id is used. batch_size: The number of records to send in each batch. The default is 256. diff --git a/extralit/src/extralit/records/_io/__init__.py b/extralit/src/extralit/records/_io/__init__.py index 444d7ba9d..206b7a71d 100644 --- a/extralit/src/extralit/records/_io/__init__.py +++ b/extralit/src/extralit/records/_io/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/records/_io/_datasets.py b/extralit/src/extralit/records/_io/_datasets.py index 348b2fda9..9de0afddb 100644 --- a/extralit/src/extralit/records/_io/_datasets.py +++ b/extralit/src/extralit/records/_io/_datasets.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -231,7 +231,7 @@ def _record_dicts_from_datasets( @staticmethod def _uncast_argilla_attributes_to_datasets(hf_dataset: "HFDataset", schema: Dict) -> "HFDataset": - """Get the names of the Argilla fields that contain image data. + """Get the names of the Extralit fields that contain image data. Parameters: hf_dataset (Dataset): The dataset to check. diff --git a/extralit/src/extralit/records/_io/_generic.py b/extralit/src/extralit/records/_io/_generic.py index e7600ce5e..1e34b5f3a 100644 --- a/extralit/src/extralit/records/_io/_generic.py +++ b/extralit/src/extralit/records/_io/_generic.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/records/_io/_json.py b/extralit/src/extralit/records/_io/_json.py index 3bcf959bf..e345aca33 100644 --- a/extralit/src/extralit/records/_io/_json.py +++ b/extralit/src/extralit/records/_io/_json.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/records/_mapping/__init__.py b/extralit/src/extralit/records/_mapping/__init__.py index 56c7eec8f..cb462f296 100644 --- a/extralit/src/extralit/records/_mapping/__init__.py +++ b/extralit/src/extralit/records/_mapping/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/records/_mapping/_mapper.py b/extralit/src/extralit/records/_mapping/_mapper.py index b3ab91c05..56ad79d43 100644 --- a/extralit/src/extralit/records/_mapping/_mapper.py +++ b/extralit/src/extralit/records/_mapping/_mapper.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -45,7 +45,7 @@ class IngestedRecordMapper: Attributes: dataset: The dataset the record will be added to. - mapping: A dictionary mapping from source data keys/ columns to Argilla fields, questions, ids, etc. + mapping: A dictionary mapping from source data keys/ columns to Extralit fields, questions, ids, etc. user_id: The user id to associate with the record responses. """ @@ -247,7 +247,7 @@ def _map_suggestions(self, data: Dict[str, Any], mapping) -> List[Suggestion]: Parameters: data: A dictionary representing the vector. - mapping: A dictionary mapping from source data keys/ columns to Argilla fields, questions, ids, etc. + mapping: A dictionary mapping from source data keys/ columns to Extralit fields, questions, ids, etc. Returns: A list of Suggestion objects. @@ -275,7 +275,7 @@ def _map_responses(self, data: Dict[str, Any], user_id: UUID, mapping) -> List[R Parameters: data: A dictionary representing the vector. - mapping: A dictionary mapping from source data keys/ columns to Argilla fields, questions, ids, etc. + mapping: A dictionary mapping from source data keys/ columns to Extralit fields, questions, ids, etc. user_id: The user id to associate with the record responses. Returns: diff --git a/extralit/src/extralit/records/_mapping/_routes.py b/extralit/src/extralit/records/_mapping/_routes.py index 03cd08092..e5be2b12d 100644 --- a/extralit/src/extralit/records/_mapping/_routes.py +++ b/extralit/src/extralit/records/_mapping/_routes.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/records/_resource.py b/extralit/src/extralit/records/_resource.py index 42f2b9ca4..5d4830ebf 100644 --- a/extralit/src/extralit/records/_resource.py +++ b/extralit/src/extralit/records/_resource.py @@ -39,7 +39,7 @@ class Record(Resource): - """The class for interacting with Argilla Records. A `Record` is a single sample + """The class for interacting with Extralit Records. A `Record` is a single sample in a dataset. Records receives feedback in the form of responses and suggestions. Records contain fields, metadata, and vectors. @@ -51,7 +51,7 @@ class Record(Resource): responses (RecordResponses): The responses of the record. suggestions (RecordSuggestions): The suggestions of the record. dataset (Dataset): The dataset to which the record belongs. - _server_id (UUID): An id for the record generated by the Argilla server. + _server_id (UUID): An id for the record generated by the Extralit server. """ _model: RecordModel diff --git a/extralit/src/extralit/records/_search.py b/extralit/src/extralit/records/_search.py index befe82b4b..cdfd1a401 100644 --- a/extralit/src/extralit/records/_search.py +++ b/extralit/src/extralit/records/_search.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -102,7 +102,7 @@ class Similar: def __init__(self, name: str, value: Union[Iterable[float], "Record"], most_similar: bool = True): """ - Create a similar object for use in Argilla search requests. + Create a similar object for use in Extralit search requests. Parameters: name: The name of the vector field @@ -129,7 +129,7 @@ class Filter: """This class is used to map user filters to the internal filter models""" def __init__(self, conditions: Union[Conditions, None] = None): - """ Create a filter object for use in Argilla search requests. + """ Create a filter object for use in Extralit search requests. Parameters: conditions (Union[List[Tuple[str, str, Any]], Tuple[str, str, Any], None], optional): \ @@ -156,7 +156,7 @@ def __init__( similar: Union[Similar, None] = None, filter: Union[Filter, Conditions, None] = None, ): - """Create a query object for use in Argilla search requests.add() + """Create a query object for use in Extralit search requests.add() Parameters: query (Union[str, None], optional): The query string that will be used to search. diff --git a/extralit/src/extralit/responses.py b/extralit/src/extralit/responses.py index b4fb26700..a81b61c04 100644 --- a/extralit/src/extralit/responses.py +++ b/extralit/src/extralit/responses.py @@ -37,7 +37,7 @@ class ResponseStatus(str, Enum): class Response: - """Class for interacting with Argilla Responses of records. Responses are answers to questions by a user. + """Class for interacting with Extralit Responses of records. Responses are answers to questions by a user. Therefore, a record question can have multiple responses, one for each user that has answered the question. A `Response` is typically created by a user in the UI or consumed from a data source as a label, unlike a `Suggestion` which is typically created by a model prediction. @@ -115,7 +115,7 @@ def serialize(self) -> dict[str, Any]: class UserResponse(Resource): """ - Class for interacting with Argilla User Responses of records. The UserResponse class is a collection + Class for interacting with Extralit User Responses of records. The UserResponse class is a collection of responses to questions for a given user. UserResponses are typically created by a user in the UI and are defined by ingesting a list of responses from a third-party data source. diff --git a/extralit/src/extralit/settings/__init__.py b/extralit/src/extralit/settings/__init__.py index 35f9bc7f9..5498f42c6 100644 --- a/extralit/src/extralit/settings/__init__.py +++ b/extralit/src/extralit/settings/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/settings/_common.py b/extralit/src/extralit/settings/_common.py index 8f0ae007c..273c5cdfc 100644 --- a/extralit/src/extralit/settings/_common.py +++ b/extralit/src/extralit/settings/_common.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/settings/_io/__init__.py b/extralit/src/extralit/settings/_io/__init__.py index 3f4e9f056..cd54c103f 100644 --- a/extralit/src/extralit/settings/_io/__init__.py +++ b/extralit/src/extralit/settings/_io/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/settings/_io/_hub.py b/extralit/src/extralit/settings/_io/_hub.py index 4df3a4c4c..3a97ebc7e 100644 --- a/extralit/src/extralit/settings/_io/_hub.py +++ b/extralit/src/extralit/settings/_io/_hub.py @@ -265,7 +265,7 @@ def _define_settings_from_features( settings = Settings(fields=fields, questions=questions, metadata=metadata) if not settings.fields: - raise SettingsError("No fields found in the dataset features. Argilla datasets require at least one field.") + raise SettingsError("No fields found in the dataset features. Extralit datasets require at least one field.") return settings diff --git a/extralit/src/extralit/settings/_resource.py b/extralit/src/extralit/settings/_resource.py index c51cf79d7..ce2d24d67 100644 --- a/extralit/src/extralit/settings/_resource.py +++ b/extralit/src/extralit/settings/_resource.py @@ -20,7 +20,7 @@ from typing import List, Optional, TYPE_CHECKING, Dict, Union, Iterator, Sequence, Literal from uuid import UUID -from extralit._exceptions import SettingsError, ExtralitAPIError, ArgillaSerializeError +from extralit._exceptions import SettingsError, ExtralitAPIError, ExtralitSerializeError from extralit._models._dataset import DatasetModel from extralit._resource import Resource from extralit.settings._field import Field, _field_from_dict, _field_from_model, FieldBase @@ -39,7 +39,7 @@ class Settings(DefaultSettingsMixin, Resource): """ - Settings class for Argilla Datasets. + Settings class for Extralit Datasets. This class is used to define the representation of a Dataset within the UI. """ @@ -68,7 +68,7 @@ def __init__( Dataset. Defaults to False. distribution (TaskDistribution): The annotation task distribution configuration. Default to DEFAULT_TASK_DISTRIBUTION - mapping (Dict[str, Union[str, Sequence[str]]]): A dictionary that maps incoming data names to Argilla dataset attributes in DatasetRecords. + mapping (Dict[str, Union[str, Sequence[str]]]): A dictionary that maps incoming data names to Extralit dataset attributes in DatasetRecords. """ super().__init__(client=_dataset._client if _dataset else None) @@ -241,7 +241,7 @@ def serialize(self): "mapping": self.mapping, } except Exception as e: - raise ArgillaSerializeError(f"Failed to serialize the settings. {e.__class__.__name__}") from e + raise ExtralitSerializeError(f"Failed to serialize the settings. {e.__class__.__name__}") from e def to_json(self, path: Union[Path, str]) -> None: """Save the settings to a file on disk @@ -277,7 +277,7 @@ def from_hub( Parameters: repo_id (str): The ID of the repository to load the settings from on the Hub. subset (Optional[str]): The subset of the repository to load the settings from. - feature_mapping (Dict[str, Literal["question", "field", "metadata"]]): A dictionary that maps incoming column names to Argilla attributes. + feature_mapping (Dict[str, Literal["question", "field", "metadata"]]): A dictionary that maps incoming column names to Extralit attributes. """ settings = build_settings_from_repo_id(repo_id=repo_id, feature_mapping=feature_mapping, subset=subset) diff --git a/extralit/src/extralit/settings/_task_distribution.py b/extralit/src/extralit/settings/_task_distribution.py index c579f6ee6..d3e4e4354 100644 --- a/extralit/src/extralit/settings/_task_distribution.py +++ b/extralit/src/extralit/settings/_task_distribution.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/settings/_templates.py b/extralit/src/extralit/settings/_templates.py index aed6b8ff2..042ebcc7a 100644 --- a/extralit/src/extralit/settings/_templates.py +++ b/extralit/src/extralit/settings/_templates.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/settings/_vector.py b/extralit/src/extralit/settings/_vector.py index 3cb78d299..74701df49 100644 --- a/extralit/src/extralit/settings/_vector.py +++ b/extralit/src/extralit/settings/_vector.py @@ -26,7 +26,7 @@ class VectorField(Resource): - """Vector field for use in Argilla `Dataset` `Settings`""" + """Vector field for use in Extralit `Dataset` `Settings`""" _model: VectorFieldModel _api: VectorsAPI @@ -39,7 +39,7 @@ def __init__( title: Optional[str] = None, _client: Optional["Extralit"] = None, ) -> None: - """Vector field for use in Argilla `Dataset` `Settings` + """Vector field for use in Extralit `Dataset` `Settings` Parameters: name (str): The name of the vector field diff --git a/extralit/src/extralit/suggestions.py b/extralit/src/extralit/suggestions.py index fbba5d7f9..1f7a11612 100644 --- a/extralit/src/extralit/suggestions.py +++ b/extralit/src/extralit/suggestions.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -25,7 +25,7 @@ class Suggestion(Resource): - """Class for interacting with Argilla Suggestions. Suggestions are typically model predictions for records. + """Class for interacting with Extralit Suggestions. Suggestions are typically model predictions for records. Suggestions are rendered in the user interfaces as 'hints' or 'suggestions' for the user to review and accept or reject. Attributes: diff --git a/extralit/src/extralit/users/__init__.py b/extralit/src/extralit/users/__init__.py index 065f4d6f3..cbb6fe8bc 100644 --- a/extralit/src/extralit/users/__init__.py +++ b/extralit/src/extralit/users/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/users/_resource.py b/extralit/src/extralit/users/_resource.py index faffd95cb..55fe02051 100644 --- a/extralit/src/extralit/users/_resource.py +++ b/extralit/src/extralit/users/_resource.py @@ -25,8 +25,8 @@ class User(Resource): - """Class for interacting with Argilla users in the Argilla server. User profiles \ - are used to manage access to the Argilla server and track responses to records. + """Class for interacting with Extralit users in the Extralit server. User profiles \ + are used to manage access to the Extralit server and track responses to records. Attributes: username (str): The username of the user. @@ -60,7 +60,7 @@ def __init__( role (str): The role of the user, either 'annotator', admin, or 'owner' password (str): The password of the user id (UUID): The ID of the user. If provided before a .create, the will be created with this ID - client (Argilla): The client used to interact with Argilla + client (Extralit): The client used to interact with Extralit Returns: User: The initialized user object @@ -83,10 +83,10 @@ def __init__( self._model = _model def create(self) -> "User": - """Creates the user in Argilla. After creating a user, it will be able to log in to the Argilla server. + """Creates the user in Extralit. After creating a user, it will be able to log in to the Extralit server. Returns: - User: The user that was created in Argilla. + User: The user that was created in Extralit. """ model_create = self.api_model() model = self._api.create(model_create) @@ -96,7 +96,7 @@ def create(self) -> "User": return self def delete(self) -> None: - """Deletes the user from Argilla. After deleting a user, it will no longer be able to log in to the Argilla server.""" + """Deletes the user from Extralit. After deleting a user, it will no longer be able to log in to the Extralit server.""" super().delete() # exists relies on the id, so we need to set it to None self._model = UserModel(username=self.username) diff --git a/extralit/src/extralit/vectors.py b/extralit/src/extralit/vectors.py index fbb1ca1ed..658ea9a7b 100644 --- a/extralit/src/extralit/vectors.py +++ b/extralit/src/extralit/vectors.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -21,8 +21,8 @@ class Vector(Resource): - """ Class for interacting with Argilla Vectors. Vectors are typically used to represent \ - embeddings or features of records. The `Vector` class is used to deliver vectors to the Argilla server. + """ Class for interacting with Extralit Vectors. Vectors are typically used to represent \ + embeddings or features of records. The `Vector` class is used to deliver vectors to the Extralit server. Attributes: name (str): The name of the vector. @@ -36,7 +36,7 @@ def __init__( name: str, values: list[float], ) -> None: - """Initializes a Vector with a name and values that can be used to search in the Argilla ui. + """Initializes a Vector with a name and values that can be used to search in the Extralit ui. Parameters: name (str): Name of the vector diff --git a/extralit/src/extralit/webhooks/__init__.py b/extralit/src/extralit/webhooks/__init__.py index 3d0fa24c5..10f42b681 100644 --- a/extralit/src/extralit/webhooks/__init__.py +++ b/extralit/src/extralit/webhooks/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/webhooks/_event.py b/extralit/src/extralit/webhooks/_event.py index f1029b1d6..13665b2c7 100644 --- a/extralit/src/extralit/webhooks/_event.py +++ b/extralit/src/extralit/webhooks/_event.py @@ -98,7 +98,7 @@ def parsed(self, client: "Extralit") -> Union[RecordEvent, DatasetEvent, UserRes Parse the webhook event. Args: - client: The Argilla client. + client: The Extralit client. Returns: Event: The parsed event. diff --git a/extralit/src/extralit/webhooks/_handler.py b/extralit/src/extralit/webhooks/_handler.py index c20222ad5..2728c4f74 100644 --- a/extralit/src/extralit/webhooks/_handler.py +++ b/extralit/src/extralit/webhooks/_handler.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/webhooks/_helpers.py b/extralit/src/extralit/webhooks/_helpers.py index b58ce9712..b8f3ee5ca 100644 --- a/extralit/src/extralit/webhooks/_helpers.py +++ b/extralit/src/extralit/webhooks/_helpers.py @@ -72,7 +72,7 @@ def webhook_listener( Parameters: events (Union[str, List[str]]): The events to listen to. description (Optional[str]): The description of the webhook. - client (Optional[Argilla]): The Argilla client to use. Defaults to the default client. + client (Optional[Extralit]): The Extralit client to use. Defaults to the default client. server (Optional[FastAPI]): The FastAPI server to use. Defaults to the default server. raw_event (bool): Whether to pass the raw event to the function. Defaults to False. diff --git a/extralit/src/extralit/webhooks/_resource.py b/extralit/src/extralit/webhooks/_resource.py index 34f212ca6..7c9437a5a 100644 --- a/extralit/src/extralit/webhooks/_resource.py +++ b/extralit/src/extralit/webhooks/_resource.py @@ -21,13 +21,13 @@ class Webhook(Resource): """ - The `Webhook` resource. It represents a webhook that can be used to receive events from the Argilla Server. + The `Webhook` resource. It represents a webhook that can be used to receive events from the Extralit Server. Args: url (str): The URL of the webhook endpoint. events (List[EventType]): The events that the webhook is subscribed to. description (Optional[str]): The description of the webhook. - _client (Argilla): The client used to interact with the Argilla Server. + _client (Extralit): The client used to interact with the Extralit Server. """ diff --git a/extralit/src/extralit/workspaces/__init__.py b/extralit/src/extralit/workspaces/__init__.py index 0ecf53ac0..d787d887b 100644 --- a/extralit/src/extralit/workspaces/__init__.py +++ b/extralit/src/extralit/workspaces/__init__.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/src/extralit/workspaces/_resource.py b/extralit/src/extralit/workspaces/_resource.py index b37fa3a6e..adc228ca9 100644 --- a/extralit/src/extralit/workspaces/_resource.py +++ b/extralit/src/extralit/workspaces/_resource.py @@ -35,7 +35,7 @@ class Workspace(Resource): - """Class for interacting with Argilla workspaces. Workspaces are used to organize datasets in the Argilla server. + """Class for interacting with Extralit workspaces. Workspaces are used to organize datasets in the Extralit server. Attributes: name (str): The name of the workspace. @@ -59,7 +59,7 @@ def __init__( Parameters: name (str): The name of the workspace id (UUID): The id of the workspace. If provided before a .create, the workspace will be created with this ID - client (Argilla): The client used to interact with Argilla + client (Extralit): The client used to interact with Extralit Returns: Workspace: The initialized workspace object diff --git a/extralit/tests/unit/api/test_workspace_documents_api.py b/extralit/tests/unit/api/test_workspace_documents_api.py index e89292627..9fc874620 100644 --- a/extralit/tests/unit/api/test_workspace_documents_api.py +++ b/extralit/tests/unit/api/test_workspace_documents_api.py @@ -121,7 +121,7 @@ class TestDocumentResourceCRUD: @pytest.fixture def mock_client(self): - """Mock Argilla client with documents API.""" + """Mock Extralit client with documents API.""" client = MagicMock() documents_api = MagicMock() client.api.documents = documents_api diff --git a/extralit/tests/unit/helpers/test_spaces_deployment.py b/extralit/tests/unit/helpers/test_spaces_deployment.py index 1fdcbbbee..07328addb 100644 --- a/extralit/tests/unit/helpers/test_spaces_deployment.py +++ b/extralit/tests/unit/helpers/test_spaces_deployment.py @@ -43,7 +43,7 @@ def test_deploy_on_spaces(self, mock_argilla_init, mock_get_token, mock_hf_api, mock_api.create_repo.assert_called_once() mock_argilla_init.assert_called_once() - # Check the arguments passed to Argilla.__init__ + # Check the arguments passed to Extralit.__init__ args, kwargs = mock_argilla_init.call_args assert kwargs["api_key"] == "12345678" assert kwargs["api_url"].startswith("https://") diff --git a/extralit/tests/unit/models/test_workspace_models.py b/extralit/tests/unit/models/test_workspace_models.py index f6c533e2e..5db6171db 100644 --- a/extralit/tests/unit/models/test_workspace_models.py +++ b/extralit/tests/unit/models/test_workspace_models.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/tests/unit/test_interface.py b/extralit/tests/unit/test_interface.py index c2162ce2e..c52d163f0 100644 --- a/extralit/tests/unit/test_interface.py +++ b/extralit/tests/unit/test_interface.py @@ -17,7 +17,7 @@ import extralit as ex -class TestArgilla: +class TestExtralit: def test_default_client(self): with mock.patch("extralit.Extralit") as mock_client: mock_client.return_value.api_url = "http://localhost:6900" diff --git a/extralit/tests/unit/test_markdown.py b/extralit/tests/unit/test_markdown.py index c2a195276..fde8dd70c 100644 --- a/extralit/tests/unit/test_markdown.py +++ b/extralit/tests/unit/test_markdown.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/tests/unit/test_media.py b/extralit/tests/unit/test_media.py index 3f10fec8a..0e7dfa481 100644 --- a/extralit/tests/unit/test_media.py +++ b/extralit/tests/unit/test_media.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/tests/unit/test_record_fields.py b/extralit/tests/unit/test_record_fields.py index 1be1b5c00..b61d91d4a 100644 --- a/extralit/tests/unit/test_record_fields.py +++ b/extralit/tests/unit/test_record_fields.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/tests/unit/test_record_responses.py b/extralit/tests/unit/test_record_responses.py index d0bc20873..5bebe5a8a 100644 --- a/extralit/tests/unit/test_record_responses.py +++ b/extralit/tests/unit/test_record_responses.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/tests/unit/test_record_suggestions.py b/extralit/tests/unit/test_record_suggestions.py index ed8351644..7ce12c485 100644 --- a/extralit/tests/unit/test_record_suggestions.py +++ b/extralit/tests/unit/test_record_suggestions.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/tests/unit/test_resources/test_responses.py b/extralit/tests/unit/test_resources/test_responses.py index 0946e6b80..99ebdb82a 100644 --- a/extralit/tests/unit/test_resources/test_responses.py +++ b/extralit/tests/unit/test_resources/test_responses.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/tests/unit/test_search/test_filters.py b/extralit/tests/unit/test_search/test_filters.py index 7bbc9b45e..aaa29dba1 100644 --- a/extralit/tests/unit/test_search/test_filters.py +++ b/extralit/tests/unit/test_search/test_filters.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. diff --git a/extralit/tests/unit/test_settings/test_settings_templates.py b/extralit/tests/unit/test_settings/test_settings_templates.py index 758e3fef8..09e068e25 100644 --- a/extralit/tests/unit/test_settings/test_settings_templates.py +++ b/extralit/tests/unit/test_settings/test_settings_templates.py @@ -1,4 +1,4 @@ -# Copyright 2024-present, Argilla, Inc. +# Copyright 2024-present, Extralit Labs, Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -12,8 +12,6 @@ # See the License for the specific language governing permissions and # limitations under the License. -import pytest -from unittest import mock from extralit.settings._templates import DefaultSettingsMixin From cbdb138a5d0fbe6d31452c20bcc448b486b002f5 Mon Sep 17 00:00:00 2001 From: JonnyTran Date: Wed, 6 Aug 2025 15:58:38 -0700 Subject: [PATCH 23/23] updated mkdocs --- .../database/users/test_user_files/users.yml | 4 ++-- .../test_user_files/users_invalid_user.yml | 2 +- .../users/test_user_files/users_one.yml | 2 +- extralit/docs/admin_guide/custom_fields.md | 2 +- extralit/docs/reference/argilla/client.md | 10 +++++----- .../argilla/datasets/dataset_records.md | 2 +- .../reference/argilla/datasets/datasets.md | 6 +++--- extralit/docs/reference/argilla/markdown.md | 4 ++-- .../docs/reference/argilla/records/records.md | 2 +- .../reference/argilla/records/responses.md | 2 +- .../reference/argilla/records/suggestions.md | 2 +- .../docs/reference/argilla/records/vectors.md | 2 +- extralit/docs/reference/argilla/search.md | 6 +++--- .../docs/reference/argilla/settings/fields.md | 8 ++++---- .../argilla/settings/metadata_property.md | 6 +++--- .../reference/argilla/settings/questions.md | 12 ++++++------ .../reference/argilla/settings/settings.md | 2 +- .../argilla/settings/task_distribution.md | 2 +- .../docs/reference/argilla/settings/vectors.md | 2 +- extralit/docs/reference/argilla/users.md | 2 +- extralit/docs/reference/argilla/webhooks.md | 18 +++++++++--------- extralit/docs/reference/argilla/workspaces.md | 2 +- 22 files changed, 50 insertions(+), 50 deletions(-) diff --git a/extralit-server/tests/unit/cli/database/users/test_user_files/users.yml b/extralit-server/tests/unit/cli/database/users/test_user_files/users.yml index 7554f8222..f3dd59ade 100644 --- a/extralit-server/tests/unit/cli/database/users/test_user_files/users.yml +++ b/extralit-server/tests/unit/cli/database/users/test_user_files/users.yml @@ -10,7 +10,7 @@ email: tanya@argilla.io api_key: 78a10b53-8db7-4ab5-9e9e-fbd4b7e76551 hashed_password: $2y$05$aqNyXcXRXddNj5toZwT0HugHqKZypvqlBAkZviAGGbsAC8oTj/P5K - workspaces: [argilla, team] + workspaces: [extralit, team] disabled: True - username: daisy @@ -18,7 +18,7 @@ email: daisy@argilla.io api_key: a8168929-8668-494c-b7a5-98cd35740d9b hashed_password: $2y$05$l83IhUs4ZDaxsgZ/P12FO.RFTi2wKQ2AxMK2vYtLx//yKramuCcZG - workspaces: [argilla, team, latam] + workspaces: [extralit, team, latam] disabled: False - username: macleod diff --git a/extralit-server/tests/unit/cli/database/users/test_user_files/users_invalid_user.yml b/extralit-server/tests/unit/cli/database/users/test_user_files/users_invalid_user.yml index 943876111..e92cf9a12 100644 --- a/extralit-server/tests/unit/cli/database/users/test_user_files/users_invalid_user.yml +++ b/extralit-server/tests/unit/cli/database/users/test_user_files/users_invalid_user.yml @@ -3,5 +3,5 @@ email: john@argilla.io api_key: a14427ea-9197-11ec-b909-0242ac120002 hashed_password: $2y$05$xtl7iy3bpqchUwiQMjEHe.tY7OaIjDrg43W3TB4EHQ7izvdjvGtPS - workspaces: [argilla, team] + workspaces: [extralit, team] disabled: False diff --git a/extralit-server/tests/unit/cli/database/users/test_user_files/users_one.yml b/extralit-server/tests/unit/cli/database/users/test_user_files/users_one.yml index dae868f46..b4efed115 100644 --- a/extralit-server/tests/unit/cli/database/users/test_user_files/users_one.yml +++ b/extralit-server/tests/unit/cli/database/users/test_user_files/users_one.yml @@ -3,5 +3,5 @@ email: john@argilla.io api_key: a14427ea-9197-11ec-b909-0242ac120002 hashed_password: $2y$05$xtl7iy3bpqchUwiQMjEHe.tY7OaIjDrg43W3TB4EHQ7izvdjvGtPS - workspaces: [argilla, team] + workspaces: [extralit, team] disabled: False diff --git a/extralit/docs/admin_guide/custom_fields.md b/extralit/docs/admin_guide/custom_fields.md index adfb57c8c..e50b15d18 100644 --- a/extralit/docs/admin_guide/custom_fields.md +++ b/extralit/docs/admin_guide/custom_fields.md @@ -19,7 +19,7 @@ This guide demonstrates how to create custom fields in Extralit using HTML, CSS, ) ``` - > Check the [CustomField - Python Reference](../reference/extralit/settings/fields.md#src.argilla.settings._field.CustomField) to see the attributes, arguments, and methods of the `CustomField` class in detail. + > Check the [CustomField - Python Reference](../reference/extralit/settings/fields.md#src.extralit.settings._field.CustomField) to see the attributes, arguments, and methods of the `CustomField` class in detail. ## Understanding the Record Object diff --git a/extralit/docs/reference/argilla/client.md b/extralit/docs/reference/argilla/client.md index 80e2e5e62..eaeda290f 100644 --- a/extralit/docs/reference/argilla/client.md +++ b/extralit/docs/reference/argilla/client.md @@ -54,9 +54,9 @@ for dataset in my_workspace.datasets: --- -::: src.argilla.client.core.Extralit -::: src.argilla.client.resources.Users -::: src.argilla.client.resources.Workspaces -::: src.argilla.client.resources.Datasets +::: src.extralit.client.core.Extralit +::: src.extralit.client.resources.Users +::: src.extralit.client.resources.Workspaces +::: src.extralit.client.resources.Datasets -::: src.argilla._helpers._deploy.SpacesDeploymentMixin +::: src.extralit._helpers._deploy.SpacesDeploymentMixin diff --git a/extralit/docs/reference/argilla/datasets/dataset_records.md b/extralit/docs/reference/argilla/datasets/dataset_records.md index 2cf463200..b43a9781a 100644 --- a/extralit/docs/reference/argilla/datasets/dataset_records.md +++ b/extralit/docs/reference/argilla/datasets/dataset_records.md @@ -284,4 +284,4 @@ Check out the [`ex.Record`](../records/records.md) class reference for more info --- -::: src.argilla.records._dataset_records.DatasetRecords +::: src.extralit.records._dataset_records.DatasetRecords diff --git a/extralit/docs/reference/argilla/datasets/datasets.md b/extralit/docs/reference/argilla/datasets/datasets.md index 631e76233..cdc8219a7 100644 --- a/extralit/docs/reference/argilla/datasets/datasets.md +++ b/extralit/docs/reference/argilla/datasets/datasets.md @@ -39,10 +39,10 @@ dataset = client.datasets("my_dataset") --- -::: src.argilla.datasets._resource.Dataset +::: src.extralit.datasets._resource.Dataset -::: src.argilla.datasets._io._disk.DiskImportExportMixin +::: src.extralit.datasets._io._disk.DiskImportExportMixin -::: src.argilla.datasets._io._hub.HubImportExportMixin +::: src.extralit.datasets._io._hub.HubImportExportMixin diff --git a/extralit/docs/reference/argilla/markdown.md b/extralit/docs/reference/argilla/markdown.md index d189457ca..bc6193ab4 100644 --- a/extralit/docs/reference/argilla/markdown.md +++ b/extralit/docs/reference/argilla/markdown.md @@ -6,6 +6,6 @@ hide: footer To support the usage of Markdown within Extralit, we've created some helper functions to easy the usage of DataURL conversions and chat message visualizations. -::: src.argilla.markdown.media +::: src.extralit.markdown.media -::: src.argilla.markdown.chat +::: src.extralit.markdown.chat diff --git a/extralit/docs/reference/argilla/records/records.md b/extralit/docs/reference/argilla/records/records.md index 2f4acf0ac..61f7488b7 100644 --- a/extralit/docs/reference/argilla/records/records.md +++ b/extralit/docs/reference/argilla/records/records.md @@ -69,4 +69,4 @@ For changes to take effect, the user must call the `update` method on the `Datas --- -::: src.argilla.records._resource.Record +::: src.extralit.records._resource.Record diff --git a/extralit/docs/reference/argilla/records/responses.md b/extralit/docs/reference/argilla/records/responses.md index d8643a30e..554b7b313 100644 --- a/extralit/docs/reference/argilla/records/responses.md +++ b/extralit/docs/reference/argilla/records/responses.md @@ -136,4 +136,4 @@ Depending on the `Question` type, responses might need to be formatted in a slig --- -::: src.argilla.responses.Response +::: src.extralit.responses.Response diff --git a/extralit/docs/reference/argilla/records/suggestions.md b/extralit/docs/reference/argilla/records/suggestions.md index 109940a7f..2e2b5cacb 100644 --- a/extralit/docs/reference/argilla/records/suggestions.md +++ b/extralit/docs/reference/argilla/records/suggestions.md @@ -152,4 +152,4 @@ Depending on the `Question` type, responses might need to be formatted in a slig --- -::: src.argilla.suggestions.Suggestion +::: src.extralit.suggestions.Suggestion diff --git a/extralit/docs/reference/argilla/records/vectors.md b/extralit/docs/reference/argilla/records/vectors.md index a21897127..9476ea7f0 100644 --- a/extralit/docs/reference/argilla/records/vectors.md +++ b/extralit/docs/reference/argilla/records/vectors.md @@ -67,4 +67,4 @@ dataset.records.log( --- -::: src.argilla.vectors.Vector +::: src.extralit.vectors.Vector diff --git a/extralit/docs/reference/argilla/search.md b/extralit/docs/reference/argilla/search.md index 524be3d8c..1b10cdf86 100644 --- a/extralit/docs/reference/argilla/search.md +++ b/extralit/docs/reference/argilla/search.md @@ -42,8 +42,8 @@ for record in dataset.records(query=query): --- -::: src.argilla.records._search.Query +::: src.extralit.records._search.Query -::: src.argilla.records._search.Filter +::: src.extralit.records._search.Filter -::: src.argilla.records._search.Similar +::: src.extralit.records._search.Similar diff --git a/extralit/docs/reference/argilla/settings/fields.md b/extralit/docs/reference/argilla/settings/fields.md index 882586e18..73f0b7230 100644 --- a/extralit/docs/reference/argilla/settings/fields.md +++ b/extralit/docs/reference/argilla/settings/fields.md @@ -40,10 +40,10 @@ data = ex.Dataset( --- -::: src.argilla.settings._field.TextField +::: src.extralit.settings._field.TextField -::: src.argilla.settings._field.ImageField +::: src.extralit.settings._field.ImageField -::: src.argilla.settings._field.ChatField +::: src.extralit.settings._field.ChatField -::: src.argilla.settings._field.CustomField +::: src.extralit.settings._field.CustomField diff --git a/extralit/docs/reference/argilla/settings/metadata_property.md b/extralit/docs/reference/argilla/settings/metadata_property.md index 7312a1cc4..a7d8a0d29 100644 --- a/extralit/docs/reference/argilla/settings/metadata_property.md +++ b/extralit/docs/reference/argilla/settings/metadata_property.md @@ -62,8 +62,8 @@ dataset = ex.Dataset( --- -::: src.argilla.settings._metadata.FloatMetadataProperty +::: src.extralit.settings._metadata.FloatMetadataProperty -::: src.argilla.settings._metadata.IntegerMetadataProperty +::: src.extralit.settings._metadata.IntegerMetadataProperty -::: src.argilla.settings._metadata.TermsMetadataProperty +::: src.extralit.settings._metadata.TermsMetadataProperty diff --git a/extralit/docs/reference/argilla/settings/questions.md b/extralit/docs/reference/argilla/settings/questions.md index dcb1af8b7..9c3f00e26 100644 --- a/extralit/docs/reference/argilla/settings/questions.md +++ b/extralit/docs/reference/argilla/settings/questions.md @@ -49,14 +49,14 @@ dataset = ex.Dataset( --- -::: src.argilla.settings._question.LabelQuestion +::: src.extralit.settings._question.LabelQuestion -::: src.argilla.settings._question.MultiLabelQuestion +::: src.extralit.settings._question.MultiLabelQuestion -::: src.argilla.settings._question.RankingQuestion +::: src.extralit.settings._question.RankingQuestion -::: src.argilla.settings._question.TextQuestion +::: src.extralit.settings._question.TextQuestion -::: src.argilla.settings._question.RatingQuestion +::: src.extralit.settings._question.RatingQuestion -::: src.argilla.settings._question.SpanQuestion +::: src.extralit.settings._question.SpanQuestion diff --git a/extralit/docs/reference/argilla/settings/settings.md b/extralit/docs/reference/argilla/settings/settings.md index d4cbf2daf..38f1b7fa9 100644 --- a/extralit/docs/reference/argilla/settings/settings.md +++ b/extralit/docs/reference/argilla/settings/settings.md @@ -137,4 +137,4 @@ settings = Settings( --- -::: src.argilla.settings._resource.Settings +::: src.extralit.settings._resource.Settings diff --git a/extralit/docs/reference/argilla/settings/task_distribution.md b/extralit/docs/reference/argilla/settings/task_distribution.md index 899d44455..76b2fcb88 100644 --- a/extralit/docs/reference/argilla/settings/task_distribution.md +++ b/extralit/docs/reference/argilla/settings/task_distribution.md @@ -34,4 +34,4 @@ dataset = ex.Dataset( --- -::: src.argilla.settings._task_distribution.OverlapTaskDistribution +::: src.extralit.settings._task_distribution.OverlapTaskDistribution diff --git a/extralit/docs/reference/argilla/settings/vectors.md b/extralit/docs/reference/argilla/settings/vectors.md index e378f9cee..5c2a0d253 100644 --- a/extralit/docs/reference/argilla/settings/vectors.md +++ b/extralit/docs/reference/argilla/settings/vectors.md @@ -28,4 +28,4 @@ settings = ex.Settings( --- -::: src.argilla.settings._vector.VectorField +::: src.extralit.settings._vector.VectorField diff --git a/extralit/docs/reference/argilla/users.md b/extralit/docs/reference/argilla/users.md index 222bfccf5..ef54916f6 100644 --- a/extralit/docs/reference/argilla/users.md +++ b/extralit/docs/reference/argilla/users.md @@ -28,4 +28,4 @@ client.me --- -::: src.argilla.users._resource.User +::: src.extralit.users._resource.User diff --git a/extralit/docs/reference/argilla/webhooks.md b/extralit/docs/reference/argilla/webhooks.md index adb246bae..9c74d156b 100644 --- a/extralit/docs/reference/argilla/webhooks.md +++ b/extralit/docs/reference/argilla/webhooks.md @@ -40,22 +40,22 @@ for webhook in client.webhooks(): --- -::: src.argilla.webhooks._resource.Webhook +::: src.extralit.webhooks._resource.Webhook -::: src.argilla.webhooks._helpers.webhook_listener +::: src.extralit.webhooks._helpers.webhook_listener -::: src.argilla.webhooks._helpers.get_webhook_server +::: src.extralit.webhooks._helpers.get_webhook_server -::: src.argilla.webhooks._helpers.set_webhook_server +::: src.extralit.webhooks._helpers.set_webhook_server -::: src.argilla.webhooks._handler.WebhookHandler +::: src.extralit.webhooks._handler.WebhookHandler -::: src.argilla.webhooks._event.WebhookEvent +::: src.extralit.webhooks._event.WebhookEvent -::: src.argilla.webhooks._event.DatasetEvent +::: src.extralit.webhooks._event.DatasetEvent -::: src.argilla.webhooks._event.RecordEvent +::: src.extralit.webhooks._event.RecordEvent -::: src.argilla.webhooks._event.UserResponseEvent +::: src.extralit.webhooks._event.UserResponseEvent diff --git a/extralit/docs/reference/argilla/workspaces.md b/extralit/docs/reference/argilla/workspaces.md index 66844f2e4..14481ce9b 100644 --- a/extralit/docs/reference/argilla/workspaces.md +++ b/extralit/docs/reference/argilla/workspaces.md @@ -197,6 +197,6 @@ except Exception as e: --- -::: src.argilla.workspaces._resource.Workspace +::: src.extralit.workspaces._resource.Workspace options: heading_level: 4